


























@@ -70,13 +70,16 @@ export async function modelsListCommand(
7070 providerFilter,
7171 useProviderCatalogFastPath,
7272});
73+const loadRegistryState = async () => {
74+const loaded = await loadListModelRegistry(cfg, { providerFilter });
75+modelRegistry = loaded.registry;
76+discoveredKeys = loaded.discoveredKeys;
77+availableKeys = loaded.availableKeys;
78+availabilityErrorMessage = loaded.availabilityErrorMessage;
79+};
7380try {
7481if (shouldLoadRegistry) {
75-const loaded = await loadListModelRegistry(cfg, { providerFilter });
76-modelRegistry = loaded.registry;
77-discoveredKeys = loaded.discoveredKeys;
78-availableKeys = loaded.availableKeys;
79-availabilityErrorMessage = loaded.availabilityErrorMessage;
82+await loadRegistryState();
8083} else if (!opts.all) {
8184const loaded = loadConfiguredListModelRegistry(cfg, entries, { providerFilter });
8285modelRegistry = loaded.registry;
@@ -88,14 +91,7 @@ export async function modelsListCommand(
8891process.exitCode = 1;
8992return;
9093}
91-if (availabilityErrorMessage !== undefined) {
92-runtime.error(
93-`Model availability lookup failed; falling back to auth heuristics for discovered models: ${availabilityErrorMessage}`,
94-);
95-}
96-97-const rows: ModelRow[] = [];
98-const rowContext = {
94+const buildRowContext = (skipRuntimeModelSuppression: boolean) => ({
9995 cfg,
10096 agentDir,
10197 authStore,
@@ -106,16 +102,35 @@ export async function modelsListCommand(
106102provider: providerFilter,
107103local: opts.local,
108104},
109-skipRuntimeModelSuppression: useProviderCatalogFastPath,
110-};
105+ skipRuntimeModelSuppression,
106+});
107+const rows: ModelRow[] = [];
111108112109if (opts.all) {
113-await appendAllModelRowSources({
110+let rowContext = buildRowContext(useProviderCatalogFastPath);
111+const initialAppend = await appendAllModelRowSources({
114112 rows,
115113context: rowContext,
116114 modelRegistry,
117115 useProviderCatalogFastPath,
118116});
117+if (initialAppend.requiresRegistryFallback) {
118+try {
119+await loadRegistryState();
120+} catch (err) {
121+runtime.error(`Model registry unavailable:\n${formatErrorWithStack(err)}`);
122+process.exitCode = 1;
123+return;
124+}
125+rows.length = 0;
126+rowContext = buildRowContext(false);
127+await appendAllModelRowSources({
128+ rows,
129+context: rowContext,
130+ modelRegistry,
131+useProviderCatalogFastPath: false,
132+});
133+}
119134} else {
120135const registry = modelRegistry;
121136if (!registry) {
@@ -127,10 +142,16 @@ export async function modelsListCommand(
127142 rows,
128143 entries,
129144modelRegistry: registry,
130-context: rowContext,
145+context: buildRowContext(false),
131146});
132147}
133148149+if (availabilityErrorMessage !== undefined) {
150+runtime.error(
151+`Model availability lookup failed; falling back to auth heuristics for discovered models: ${availabilityErrorMessage}`,
152+);
153+}
154+134155if (rows.length === 0) {
135156runtime.log("No models found.");
136157return;
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。