Merge pull request #28 from Routstr/fix/provider-sync

fix: sync bootstrapped providers into store so providers list is complete
This commit is contained in:
redshift
2026-05-07 15:28:43 +00:00
committed by GitHub
2 changed files with 19 additions and 3 deletions
+1 -1
View File
@@ -52,7 +52,7 @@ async function main(): Promise<void> {
// 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({
+18 -2
View File
@@ -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<void> | null = null;
const ensureProvidersBootstrapped = (): Promise<void> => {
@@ -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);