fix(prompt-gate): share message reservations

This commit is contained in:
YeonGyu-Kim
2026-05-15 11:49:44 +09:00
parent dd6271bbf4
commit 30adce9cad
9 changed files with 451 additions and 196 deletions
+23 -1
View File
@@ -3,6 +3,7 @@ import {
promptSyncWithModelSuggestionRetry,
promptWithModelSuggestionRetry,
} from "./model-suggestion-retry"
import { promptAsyncAfterSessionIdle } from "./prompt-async-gate"
type OpencodeClient = PluginInput["client"]
@@ -52,7 +53,28 @@ export function promptAsyncInDirectory(
args: PromptAsyncArgs,
directory: string,
): Promise<unknown> {
return client.session.promptAsync(routeSessionPrompt(args, directory))
const routedArgs = routeSessionPrompt(args, directory)
const sessionID = routedArgs.path?.id
if (!sessionID) {
return client.session.promptAsync(routedArgs)
}
return promptAsyncAfterSessionIdle({
client,
sessionID,
input: routedArgs,
source: "session-route",
settleMs: 0,
postDispatchHoldMs: 0,
}).then((result) => {
if (result.status === "failed") {
throw result.error
}
if (result.status !== "dispatched") {
throw new Error(`promptAsync skipped by gate: ${result.status}`)
}
return result.response
})
}
export function promptWithRetryInDirectory(