fix(google): repair Cloud Code Assist tool-call ordering (#406)

This commit is contained in:
Jonáš Jančařík
2026-01-07 18:30:35 +01:00
committed by Peter Steinberger
parent d4198bbce4
commit 974619d285
4 changed files with 94 additions and 3 deletions

View File

@@ -1,10 +1,12 @@
import type { AssistantMessage } from "@mariozechner/pi-ai";
import type { AgentMessage } from "@mariozechner/pi-agent-core";
import { describe, expect, it } from "vitest";
import {
buildBootstrapContextFiles,
formatAssistantErrorText,
isContextOverflowError,
sanitizeGoogleTurnOrdering,
} from "./pi-embedded-helpers.js";
import {
DEFAULT_AGENTS_FILENAME,
@@ -83,3 +85,26 @@ describe("formatAssistantErrorText", () => {
expect(formatAssistantErrorText(msg)).toContain("Context overflow");
});
});
describe("sanitizeGoogleTurnOrdering", () => {
it("prepends a synthetic user turn when history starts with assistant", () => {
const input = [
{
role: "assistant",
content: [
{ type: "toolCall", id: "call_1", name: "bash", arguments: {} },
],
},
] satisfies AgentMessage[];
const out = sanitizeGoogleTurnOrdering(input);
expect(out[0]?.role).toBe("user");
expect(out[1]?.role).toBe("assistant");
});
it("is a no-op when history starts with user", () => {
const input = [{ role: "user", content: "hi" }] satisfies AgentMessage[];
const out = sanitizeGoogleTurnOrdering(input);
expect(out).toBe(input);
});
});