fix(prompt): treat post-dispatch failures as accepted

This commit is contained in:
YeonGyu-Kim
2026-05-20 11:42:32 +09:00
parent f540249838
commit d3e218f912
31 changed files with 503 additions and 76 deletions
+11 -2
View File
@@ -14,6 +14,7 @@ import { suppressRunInput } from "./stdin-suppression"
import { createTimestampedStdoutController } from "./timestamp-output"
import { createCliPostHog, getPostHogDistinctId } from "../../shared/posthog"
import { dispatchInternalPrompt, isInternalPromptDispatchAccepted } from "../../shared/prompt-async-gate"
import { isAmbiguousPostDispatchPromptFailure } from "../../shared/prompt-failure-classifier"
export { resolveRunAgent }
@@ -130,10 +131,18 @@ export async function run(options: RunOptions): Promise<number> {
query: { directory },
},
})
const promptMayHaveBeenAccepted = promptResult.status === "failed"
&& isAmbiguousPostDispatchPromptFailure(promptResult)
if (promptResult.status === "failed") {
throw promptResult.error
if (promptMayHaveBeenAccepted) {
if (options.verbose) {
console.error(pc.dim("promptAsync returned an ambiguous error after dispatch; continuing to poll session"))
}
} else {
throw promptResult.error
}
}
if (!isInternalPromptDispatchAccepted(promptResult)) {
if (!promptMayHaveBeenAccepted && !isInternalPromptDispatchAccepted(promptResult)) {
throw new Error(`Session ${sessionID} is not idle; promptAsync skipped by gate: ${promptResult.status}`)
}
const exitCode = await pollForCompletion(ctx, eventState, abortController)