diff --git a/src/daemon/index.ts b/src/daemon/index.ts index 9b6de7a..0810551 100644 --- a/src/daemon/index.ts +++ b/src/daemon/index.ts @@ -52,7 +52,7 @@ async function main(): Promise { // Create shared ProviderManager for consistent failure tracking across all requests const providerManager = new ProviderManager(providerRegistry, store); const { ensureProvidersBootstrapped, getRoutstr21Models, getModelProviders } = - createModelService(modelManager); + createModelService(modelManager, store); const walletClient = createCocodClient({ cocodPath: config.cocodPath }); const walletAdapter = await createWalletAdapter({ diff --git a/src/daemon/models.ts b/src/daemon/models.ts index ede63be..abb0999 100644 --- a/src/daemon/models.ts +++ b/src/daemon/models.ts @@ -1,4 +1,4 @@ -import { ModelManager } from "@routstr/sdk"; +import { ModelManager, type SdkStore } from "@routstr/sdk"; import type { ExposedModel } from "./types"; import { logger } from "../utils/logger"; @@ -16,7 +16,7 @@ export type ModelWithProviders = ExposedModel & { providers: ModelProviderInfo[]; }; -export function createModelService(modelManager: ModelManager) { +export function createModelService(modelManager: ModelManager, store: SdkStore) { let providerBootstrapPromise: Promise | null = null; const ensureProvidersBootstrapped = (): Promise => { @@ -26,6 +26,22 @@ export function createModelService(modelManager: ModelManager) { const providers = await modelManager.bootstrapProviders(false); logger.log(`Bootstrapped ${providers.length} providers`); await modelManager.fetchModels(providers); + + // Sync discovered providers into the store so `providers list` reflects + // the same set that the model manager knows about. + const { baseUrlsList, setBaseUrlsList } = store.getState(); + const existing = new Set(baseUrlsList); + const merged = [ + ...baseUrlsList, + ...providers.filter((url) => !existing.has(url)), + ]; + if (merged.length !== baseUrlsList.length) { + setBaseUrlsList(merged); + logger.log( + `Synced ${merged.length - baseUrlsList.length} new provider(s) into store`, + ); + } + logger.log("Provider bootstrap complete."); })().catch((error) => { logger.error("Provider bootstrap failed:", error);