


























@@ -1,9 +1,10 @@
11import type { AssistantMessage } from "@mariozechner/pi-ai";
2-import { beforeAll, beforeEach, describe, expect, it } from "vitest";
2+import { beforeAll, beforeEach, describe, expect, it, vi } from "vitest";
33import { makeAttemptResult } from "./run.overflow-compaction.fixture.js";
44import {
55loadRunOverflowCompactionHarness,
66mockedEnsureRuntimePluginsLoaded,
7+mockedResolveModelAsync,
78mockedRunEmbeddedAttempt,
89} from "./run.overflow-compaction.harness.js";
910import type { EmbeddedRunAttemptResult } from "./run/types.js";
@@ -191,4 +192,48 @@ describe("runEmbeddedPiAgent usage reporting", () => {
191192// If the bug exists, it will likely be 350
192193expect(usage?.total).toBe(200);
193194});
195+196+it("reports the resolved model provider when PI marks the assistant message as pi", async () => {
197+mockedResolveModelAsync.mockResolvedValueOnce({
198+model: {
199+id: "openai/gpt-5.4",
200+provider: "openrouter",
201+contextWindow: 200000,
202+api: "openai-completions",
203+},
204+error: null,
205+authStorage: {
206+setRuntimeApiKey: vi.fn(),
207+},
208+modelRegistry: {},
209+});
210+mockedRunEmbeddedAttempt.mockResolvedValueOnce(
211+makeAttemptResult({
212+assistantTexts: ["Response 1"],
213+lastAssistant: makeAssistantMessage({
214+provider: "pi",
215+model: "pi",
216+usage: { input: 100, output: 50, total: 150 } as unknown as AssistantMessage["usage"],
217+}),
218+attemptUsage: { input: 100, output: 50, total: 150 },
219+}),
220+);
221+222+const result = await runEmbeddedPiAgent({
223+sessionId: "test-session",
224+sessionKey: "test-key",
225+sessionFile: "/tmp/session.json",
226+workspaceDir: "/tmp/workspace",
227+prompt: "hello",
228+provider: "openrouter",
229+model: "openai/gpt-5.4",
230+timeoutMs: 30000,
231+runId: "run-provider-attribution",
232+});
233+234+expect(result.meta.agentMeta?.provider).toBe("openrouter");
235+expect(result.meta.agentMeta?.model).toBe("openai/gpt-5.4");
236+expect(result.meta.executionTrace?.winnerProvider).toBe("openrouter");
237+expect(result.meta.executionTrace?.winnerModel).toBe("openai/gpt-5.4");
238+});
194239});
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。