fix(prompt): treat post-dispatch failures as accepted
This commit is contained in:
+11
-2
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user