fix(release): accept openclaw runtime alias · openclaw/openclaw@2267ddc
steipete
·
2026-05-29
·
via Recent Commits to openclaw:main
| Original file line number | Diff line number | Diff line change |
|---|
@@ -607,6 +607,26 @@ describe("selectAgentHarness", () => {
|
607 | 607 | expect(result.sessionIdUsed).toBe("openclaw"); |
608 | 608 | }); |
609 | 609 | |
| 610 | +it("treats explicit OpenClaw runtime overrides as the built-in PI harness", async () => { |
| 611 | +registerSuccessfulCodexHarness(); |
| 612 | + |
| 613 | +const harness = selectAgentHarness({ |
| 614 | +provider: "openai", |
| 615 | +modelId: "gpt-5.4", |
| 616 | +agentHarnessRuntimeOverride: "openclaw", |
| 617 | +}); |
| 618 | + |
| 619 | +expect(harness.id).toBe("pi"); |
| 620 | + |
| 621 | +const result = await runAgentHarnessAttempt({ |
| 622 | + ...createAttemptParams(), |
| 623 | +provider: "openai", |
| 624 | +modelId: "gpt-5.4", |
| 625 | +agentHarnessRuntimeOverride: "openclaw", |
| 626 | +}); |
| 627 | +expect(result.sessionIdUsed).toBe("pi"); |
| 628 | +}); |
| 629 | + |
610 | 630 | it("allows per-agent model runtime policy overrides", () => { |
611 | 631 | const config = agentModelRuntimeConfig("anthropic/sonnet-4.6", "codex", "strict"); |
612 | 632 | |
|
| Original file line number | Diff line number | Diff line change |
|---|
@@ -670,6 +670,36 @@ describe("runWithModelFallback", () => {
|
670 | 670 | expect(run).toHaveBeenCalledTimes(1); |
671 | 671 | }); |
672 | 672 | |
| 673 | +it("does not prepare agent harness plugins for forced OpenClaw runtime candidates", async () => { |
| 674 | +const cfg = makeCfg({ |
| 675 | +models: { |
| 676 | +providers: { |
| 677 | +openai: { |
| 678 | +baseUrl: "https://api.openai.com/v1", |
| 679 | +agentRuntime: { id: "openclaw" }, |
| 680 | +models: [], |
| 681 | +}, |
| 682 | +}, |
| 683 | +}, |
| 684 | +}); |
| 685 | +const prepareAgentHarnessRuntime = vi.fn(() => { |
| 686 | +throw new Error("OpenClaw candidates should not prepare plugin harnesses"); |
| 687 | +}); |
| 688 | +const run = vi.fn().mockResolvedValueOnce("ok"); |
| 689 | + |
| 690 | +const result = await runWithModelFallback({ |
| 691 | + cfg, |
| 692 | +provider: "openai", |
| 693 | +model: "gpt-5.5", |
| 694 | + prepareAgentHarnessRuntime, |
| 695 | + run, |
| 696 | +}); |
| 697 | + |
| 698 | +expect(result.result).toBe("ok"); |
| 699 | +expect(prepareAgentHarnessRuntime).not.toHaveBeenCalled(); |
| 700 | +expect(run).toHaveBeenCalledTimes(1); |
| 701 | +}); |
| 702 | + |
673 | 703 | it("does not prepare agent harness plugins for implicit Codex candidates", async () => { |
674 | 704 | const cfg = makeCfg(); |
675 | 705 | const prepareAgentHarnessRuntime = vi.fn(() => { |
|
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。