
























@@ -157,7 +157,12 @@ vi.mock("./openrouter-model-capabilities.js", () => ({
157157import type { OpenClawConfig } from "../../config/config.js";
158158import { getModelProviderRequestTransport } from "../provider-request-config.js";
159159import { buildForwardCompatTemplate } from "./model.forward-compat.test-support.js";
160-import { buildInlineProviderModels, resolveModel, resolveModelAsync } from "./model.js";
160+import {
161+buildInlineProviderModels,
162+resolveModel,
163+resolveModelAsync,
164+resolveModelWithRegistry,
165+} from "./model.js";
161166import {
162167buildOpenAICodexForwardCompatExpectation,
163168makeModel,
@@ -1952,6 +1957,60 @@ describe("resolveModel", () => {
19521957});
19531958});
195419591960+it("passes configured workspaceDir through direct registry dynamic hooks", () => {
1961+const runProviderDynamicModel = vi.fn(
1962+(params: {
1963+workspaceDir?: string;
1964+context: { workspaceDir?: string; provider: string; modelId: string };
1965+}) =>
1966+params.workspaceDir === "/tmp/workspace" &&
1967+params.context.workspaceDir === "/tmp/workspace" &&
1968+params.context.provider === "openai-codex" &&
1969+params.context.modelId === "gpt-5.4"
1970+ ? ({
1971+ ...buildOpenAICodexForwardCompatExpectation("gpt-5.4"),
1972+name: "GPT-5.4",
1973+} as ReturnType<typeof buildOpenAICodexForwardCompatExpectation>)
1974+ : undefined,
1975+);
1976+const runtimeHooks = {
1977+ ...createRuntimeHooks(),
1978+ runProviderDynamicModel,
1979+};
1980+const cfg = {
1981+agents: {
1982+defaults: {
1983+workspace: "/tmp/workspace",
1984+},
1985+},
1986+} as OpenClawConfig;
1987+1988+const result = resolveModelWithRegistry({
1989+provider: "openai-codex",
1990+modelId: "gpt-5.4",
1991+agentDir: "/tmp/agent-state",
1992+ cfg,
1993+modelRegistry: discoverModels({ mocked: true } as never, "/tmp/agent-state"),
1994+ runtimeHooks,
1995+});
1996+1997+expect(runProviderDynamicModel).toHaveBeenCalledWith(
1998+expect.objectContaining({
1999+workspaceDir: "/tmp/workspace",
2000+context: expect.objectContaining({
2001+workspaceDir: "/tmp/workspace",
2002+agentDir: "/tmp/agent-state",
2003+modelId: "gpt-5.4",
2004+provider: "openai-codex",
2005+}),
2006+}),
2007+);
2008+expect(result).toMatchObject({
2009+provider: "openai-codex",
2010+id: "gpt-5.4",
2011+});
2012+});
2013+19552014it("resolves discovered openai-codex gpt-5.4-mini rows", () => {
19562015mockDiscoveredModel(discoverModels, {
19572016provider: "openai-codex",
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。