




















@@ -10,7 +10,6 @@ const readConfigFileSnapshotForWrite = vi.fn().mockResolvedValue({
1010writeOptions: {},
1111});
1212const setRuntimeConfigSnapshot = vi.fn();
13-const ensureOpenClawModelsJson = vi.fn().mockResolvedValue(undefined);
1413const resolveOpenClawAgentDir = vi.fn().mockReturnValue("/tmp/openclaw-agent");
1514const ensureAuthProfileStore = vi.fn().mockReturnValue({ version: 1, profiles: {} });
1615const listProfilesForProvider = vi.fn().mockReturnValue([]);
@@ -51,66 +50,6 @@ vi.mock("./models/load-config.js", () => ({
5150}),
5251}));
535254-vi.mock("./models/list.runtime.js", () => {
55-class MockModelRegistry {
56-find(provider: string, id: string) {
57-if (modelRegistryState.findError !== undefined) {
58-throw modelRegistryState.findError;
59-}
60-return (
61-modelRegistryState.models.find((model) => model.provider === provider && model.id === id) ??
62-null
63-);
64-}
65-66-getAll() {
67-if (modelRegistryState.getAllError !== undefined) {
68-throw modelRegistryState.getAllError;
69-}
70-return modelRegistryState.models;
71-}
72-73-getAvailable() {
74-if (modelRegistryState.getAvailableError !== undefined) {
75-throw modelRegistryState.getAvailableError;
76-}
77-return modelRegistryState.available;
78-}
79-80-hasConfiguredAuth(model: { provider: string; id: string }) {
81-return modelRegistryState.available.some(
82-(available) => available.provider === model.provider && available.id === model.id,
83-);
84-}
85-}
86-87-return {
88- ensureAuthProfileStore,
89- ensureOpenClawModelsJson,
90- resolveOpenClawAgentDir,
91- listProfilesForProvider,
92- resolveEnvApiKey,
93- resolveAwsSdkEnvVarName,
94- hasUsableCustomProviderApiKey,
95- hasProviderStaticCatalogForFilter,
96- loadModelCatalog,
97- loadProviderCatalogModelsForList,
98-discoverAuthStorage: () => ({}) as unknown,
99-discoverModels: () => new MockModelRegistry() as unknown,
100-resolveModelWithRegistry: ({
101- provider,
102- modelId,
103- modelRegistry,
104-}: {
105-provider: string;
106-modelId: string;
107-modelRegistry: { find: (provider: string, id: string) => unknown };
108-}) => {
109-return modelRegistry.find(provider, modelId);
110-},
111-};
112-});
113-11453vi.mock("../agents/agent-paths.js", () => ({
11554 resolveOpenClawAgentDir,
11655}));
@@ -251,7 +190,6 @@ beforeEach(() => {
251190getRuntimeConfig.mockReset();
252191getRuntimeConfig.mockReturnValue({});
253192listProfilesForProvider.mockReturnValue([]);
254-ensureOpenClawModelsJson.mockClear();
255193loadModelCatalog.mockClear();
256194loadModelCatalog.mockResolvedValue([]);
257195loadProviderCatalogModelsForList.mockReset();
@@ -565,9 +503,9 @@ describe("models list/status", () => {
565503models: { providers: { openai: { apiKey: "sk-resolved-runtime-value" } } }, // pragma: allowlist secret
566504};
567505568-await loadModelRegistry(resolvedConfig as never);
506+const loaded = await loadModelRegistry(resolvedConfig as never);
569507570-expect(ensureOpenClawModelsJson).not.toHaveBeenCalled();
508+expect(loaded.models).toEqual([OPENAI_MODEL]);
571509});
572510573511it("filters stale spark rows from models list and registry views", async () => {
@@ -647,7 +585,6 @@ describe("models list/status", () => {
647585648586await modelsListCommand({ all: true, json: true }, runtime);
649587650-expect(ensureOpenClawModelsJson).not.toHaveBeenCalled();
651588const payload = parseJsonLog(runtime);
652589expect(payload.models).toEqual([
653590expect.objectContaining({
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。