fix(google): repair Cloud Code Assist tool-call ordering (#406)
This commit is contained in:
committed by
Peter Steinberger
parent
d4198bbce4
commit
974619d285
@@ -63,6 +63,7 @@ import {
|
||||
isRateLimitAssistantError,
|
||||
isRateLimitErrorMessage,
|
||||
pickFallbackThinkingLevel,
|
||||
sanitizeGoogleTurnOrdering,
|
||||
sanitizeSessionMessagesImages,
|
||||
} from "./pi-embedded-helpers.js";
|
||||
import {
|
||||
@@ -699,10 +700,27 @@ export async function compactEmbeddedPiSession(params: {
|
||||
}));
|
||||
|
||||
try {
|
||||
const prior = await sanitizeSessionMessagesImages(
|
||||
const sanitizedImages = await sanitizeSessionMessagesImages(
|
||||
session.messages,
|
||||
"session:history",
|
||||
);
|
||||
const needsGoogleBootstrap =
|
||||
(model.api === "google-gemini-cli" ||
|
||||
model.api === "google-generative-ai") &&
|
||||
sanitizedImages[0] &&
|
||||
typeof sanitizedImages[0] === "object" &&
|
||||
"role" in sanitizedImages[0] &&
|
||||
sanitizedImages[0].role === "assistant";
|
||||
const prior =
|
||||
model.api === "google-gemini-cli" ||
|
||||
model.api === "google-generative-ai"
|
||||
? sanitizeGoogleTurnOrdering(sanitizedImages)
|
||||
: sanitizedImages;
|
||||
if (needsGoogleBootstrap) {
|
||||
log.warn(
|
||||
`google turn ordering fixup: prepended user bootstrap (sessionId=${params.sessionId})`,
|
||||
);
|
||||
}
|
||||
if (prior.length > 0) {
|
||||
session.agent.replaceMessages(prior);
|
||||
}
|
||||
@@ -1026,8 +1044,25 @@ export async function runEmbeddedPiAgent(params: {
|
||||
session.messages,
|
||||
"session:history",
|
||||
);
|
||||
if (prior.length > 0) {
|
||||
session.agent.replaceMessages(prior);
|
||||
const needsGoogleBootstrap =
|
||||
(model.api === "google-gemini-cli" ||
|
||||
model.api === "google-generative-ai") &&
|
||||
prior[0] &&
|
||||
typeof prior[0] === "object" &&
|
||||
"role" in prior[0] &&
|
||||
prior[0].role === "assistant";
|
||||
const sanitizedPrior =
|
||||
model.api === "google-gemini-cli" ||
|
||||
model.api === "google-generative-ai"
|
||||
? sanitizeGoogleTurnOrdering(prior)
|
||||
: prior;
|
||||
if (needsGoogleBootstrap) {
|
||||
log.warn(
|
||||
`google turn ordering fixup: prepended user bootstrap (sessionId=${params.sessionId})`,
|
||||
);
|
||||
}
|
||||
if (sanitizedPrior.length > 0) {
|
||||
session.agent.replaceMessages(sanitizedPrior);
|
||||
}
|
||||
} catch (err) {
|
||||
session.dispose();
|
||||
|
||||
Reference in New Issue
Block a user