





















@@ -466,7 +466,7 @@ describe("applyExtraParamsToAgent", () => {
466466};
467467}
468468469-function buildAnthropicModelConfig(modelKey: string, params: Record<string, unknown>) {
469+function buildModelConfig(modelKey: string, params: Record<string, unknown>) {
470470return {
471471agents: {
472472defaults: {
@@ -817,6 +817,60 @@ describe("applyExtraParamsToAgent", () => {
817817expect(payload.parallel_tool_calls).toBe(false);
818818});
819819820+it("uses canonical model config keys for provider-prefixed model ids", () => {
821+const payload = runParallelToolCallsPayloadMutationCase({
822+applyProvider: "openrouter",
823+applyModelId: "openrouter/auto",
824+cfg: {
825+agents: {
826+defaults: {
827+models: {
828+"openrouter/auto": {
829+params: {
830+parallel_tool_calls: false,
831+},
832+},
833+},
834+},
835+},
836+},
837+model: {
838+api: "openai-completions",
839+provider: "openrouter",
840+id: "openrouter/auto",
841+} as Model<"openai-completions">,
842+});
843+844+expect(payload.parallel_tool_calls).toBe(false);
845+});
846+847+it("keeps legacy double-prefixed model config fallback for provider-prefixed model ids", () => {
848+const payload = runParallelToolCallsPayloadMutationCase({
849+applyProvider: "openrouter",
850+applyModelId: "openrouter/auto",
851+cfg: {
852+agents: {
853+defaults: {
854+models: {
855+"openrouter/openrouter/auto": {
856+params: {
857+parallel_tool_calls: false,
858+},
859+},
860+},
861+},
862+},
863+},
864+model: {
865+api: "openai-completions",
866+provider: "openrouter",
867+id: "openrouter/auto",
868+} as Model<"openai-completions">,
869+});
870+871+expect(payload.parallel_tool_calls).toBe(false);
872+});
873+820874it("strips store from proxied openai-completions payloads", () => {
821875const payload = runResponsesPayloadMutationCase({
822876applyProvider: "google",
@@ -2445,7 +2499,7 @@ describe("applyExtraParamsToAgent", () => {
2445249924462500it("adds Anthropic 1M beta header when context1m is enabled for Opus/Sonnet", () => {
24472501const { calls, agent } = createOptionsCaptureAgent();
2448-const cfg = buildAnthropicModelConfig("anthropic/claude-opus-4-6", { context1m: true });
2502+const cfg = buildModelConfig("anthropic/claude-opus-4-6", { context1m: true });
2449250324502504applyExtraParamsToAgent(agent, cfg, "anthropic", "claude-opus-4-6");
24512505@@ -2472,7 +2526,7 @@ describe("applyExtraParamsToAgent", () => {
24722526});
2473252724742528it("does not add Anthropic 1M beta header when context1m is not enabled", () => {
2475-const cfg = buildAnthropicModelConfig("anthropic/claude-opus-4-6", {
2529+const cfg = buildModelConfig("anthropic/claude-opus-4-6", {
24762530temperature: 0.2,
24772531});
24782532const headers = runAnthropicHeaderCase({
@@ -2529,7 +2583,7 @@ describe("applyExtraParamsToAgent", () => {
25292583});
2530258425312585it("merges existing anthropic-beta headers with configured betas", () => {
2532-const cfg = buildAnthropicModelConfig("anthropic/claude-sonnet-4-5", {
2586+const cfg = buildModelConfig("anthropic/claude-sonnet-4-5", {
25332587context1m: true,
25342588anthropicBeta: ["files-api-2025-04-14"],
25352589});
@@ -2549,7 +2603,7 @@ describe("applyExtraParamsToAgent", () => {
25492603});
2550260425512605it("ignores context1m for non-Opus/Sonnet Anthropic models", () => {
2552-const cfg = buildAnthropicModelConfig("anthropic/claude-haiku-3-5", { context1m: true });
2606+const cfg = buildModelConfig("anthropic/claude-haiku-3-5", { context1m: true });
25532607const headers = runAnthropicHeaderCase({
25542608 cfg,
25552609modelId: "claude-haiku-3-5",
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。