Compare commits

...

1 Commits

Author SHA1 Message Date
Alex Knight
f6548ffb41 fix(agent): normalize harness attempt results 2026-04-27 17:13:25 +10:00
3 changed files with 30 additions and 10 deletions

View File

@@ -131,6 +131,7 @@ describe("runEmbeddedPiAgent silent-error retry", () => {
provider: "ollama",
model: "glm-5.1:cloud",
runId: "run-empty-error-retry-skip-clean-stop",
allowEmptyAssistantReplyAsSilent: true,
});
expect(mockedRunEmbeddedAttempt).toHaveBeenCalledTimes(1);

View File

@@ -51,15 +51,6 @@ export function makeAttemptResult(
toolMetas,
lastAssistant: undefined,
messagesSnapshot: [],
replayMetadata:
overrides.replayMetadata ??
buildAttemptReplayMetadata({
toolMetas,
didSendViaMessagingTool,
messagingToolSentTexts,
messagingToolSentMediaUrls,
successfulCronAdds,
}),
itemLifecycle: {
startedCount: 0,
completedCount: 0,
@@ -71,6 +62,15 @@ export function makeAttemptResult(
messagingToolSentTargets: [],
cloudCodeAssistFormatError: false,
...overrides,
replayMetadata:
overrides.replayMetadata ??
buildAttemptReplayMetadata({
toolMetas,
didSendViaMessagingTool,
messagingToolSentTexts,
messagingToolSentMediaUrls,
successfulCronAdds,
}),
};
}

View File

@@ -855,7 +855,7 @@ export async function runEmbeddedPiAgent(
},
});
const attempt = await runEmbeddedAttemptWithBackend({
const rawAttempt = await runEmbeddedAttemptWithBackend({
sessionId: activeSessionId,
sessionKey: resolvedSessionKey,
sandboxSessionKey: params.sandboxSessionKey,
@@ -960,6 +960,25 @@ export async function runEmbeddedPiAgent(
bootstrapPromptWarningSignature:
bootstrapPromptWarningSignaturesSeen[bootstrapPromptWarningSignaturesSeen.length - 1],
});
const attempt = {
...rawAttempt,
assistantTexts: rawAttempt.assistantTexts ?? [],
toolMetas: rawAttempt.toolMetas ?? [],
messagesSnapshot: rawAttempt.messagesSnapshot ?? [],
messagingToolSentTexts: rawAttempt.messagingToolSentTexts ?? [],
messagingToolSentMediaUrls: rawAttempt.messagingToolSentMediaUrls ?? [],
messagingToolSentTargets: rawAttempt.messagingToolSentTargets ?? [],
itemLifecycle: rawAttempt.itemLifecycle ?? {
startedCount: 0,
completedCount: 0,
activeCount: 0,
},
// Malformed or legacy harness results must not be considered safe to replay.
replayMetadata: rawAttempt.replayMetadata ?? {
hadPotentialSideEffects: true,
replaySafe: false,
},
};
const {
aborted,