fix(runtime): classify run usage status
This commit is contained in:
1 parent
d971ca7929
commit
eefb515aa2
17 files changed
+308
-26
No files matched your search
@@ -0,0 +1,84 @@
|
||||
import { describe, expect, it } from "vitest";
|
||||
import {
|
||||
classifyRunUsage,
|
||||
deriveLegacyRunUsageStatus,
|
||||
hasAttributableAssistantUsage,
|
||||
} from "../../src/main/run-usage-status";
|
||||
|
||||
describe("run usage status", () => {
|
||||
it("does not treat pi error EMPTY_USAGE as attributable cost", () => {
|
||||
expect(
|
||||
hasAttributableAssistantUsage({
|
||||
role: "assistant",
|
||||
stopReason: "error",
|
||||
usage: { input: 0, output: 0 },
|
||||
}),
|
||||
).toBe(false);
|
||||
});
|
||||
|
||||
it("accepts normal assistant usage as attributable", () => {
|
||||
expect(
|
||||
hasAttributableAssistantUsage({
|
||||
role: "assistant",
|
||||
stopReason: "stop",
|
||||
usage: { input: 12, output: 7 },
|
||||
}),
|
||||
).toBe(true);
|
||||
});
|
||||
|
||||
it("keeps non-zero terminal usage attributable", () => {
|
||||
expect(
|
||||
hasAttributableAssistantUsage({
|
||||
role: "assistant",
|
||||
stopReason: "error",
|
||||
usage: { input: 12, output: 1 },
|
||||
}),
|
||||
).toBe(true);
|
||||
});
|
||||
|
||||
it("classifies terminal usage states explicitly", () => {
|
||||
expect(
|
||||
classifyRunUsage({
|
||||
runStatus: "failed",
|
||||
errorMessage: "stream setup failed",
|
||||
sawAttributableUsage: false,
|
||||
terminalStopReason: "error",
|
||||
}),
|
||||
).toBe("error_stop");
|
||||
|
||||
expect(
|
||||
classifyRunUsage({
|
||||
runStatus: "cancelled",
|
||||
errorMessage: null,
|
||||
sawAttributableUsage: false,
|
||||
terminalStopReason: "aborted",
|
||||
}),
|
||||
).toBe("aborted_before_usage");
|
||||
|
||||
expect(
|
||||
classifyRunUsage({
|
||||
runStatus: "failed",
|
||||
errorMessage: "prepareRun failed",
|
||||
sawAttributableUsage: false,
|
||||
terminalStopReason: null,
|
||||
}),
|
||||
).toBe("pre_first_message");
|
||||
|
||||
expect(
|
||||
classifyRunUsage({
|
||||
runStatus: "succeeded",
|
||||
errorMessage: null,
|
||||
sawAttributableUsage: true,
|
||||
terminalStopReason: null,
|
||||
}),
|
||||
).toBe("ok");
|
||||
});
|
||||
|
||||
it("maps legacy finishRun inputs into explicit usage status", () => {
|
||||
expect(deriveLegacyRunUsageStatus({ runStatus: "succeeded", unattributedCost: false })).toBe("ok");
|
||||
expect(deriveLegacyRunUsageStatus({ runStatus: "interrupted", unattributedCost: true })).toBe(
|
||||
"aborted_before_usage",
|
||||
);
|
||||
expect(deriveLegacyRunUsageStatus({ runStatus: "failed", unattributedCost: true })).toBe("pre_first_message");
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user