diff --git a/src/features/background-agent/manager.test.ts b/src/features/background-agent/manager.test.ts index 3a219b45e..34ebe2420 100644 --- a/src/features/background-agent/manager.test.ts +++ b/src/features/background-agent/manager.test.ts @@ -6,7 +6,7 @@ import { clearAllDelegatedChildSessionBootstrap, getDelegatedChildSessionBootstrap, } from "../../shared/delegated-child-session-bootstrap" -import { promptAsyncAfterSessionIdle } from "../../shared/prompt-async-gate" +import { dispatchInternalPrompt } from "../../shared/prompt-async-gate" import { clearSessionPromptParams, getSessionPromptParams } from "../../shared/session-prompt-params-state" import { getSessionAgent, @@ -2516,7 +2516,8 @@ describe("BackgroundManager.resume promptAsync gate state", () => { abort: async () => ({}), }, } - await promptAsyncAfterSessionIdle({ + await dispatchInternalPrompt({ + mode: "async", client, sessionID: "session-reserved-resume", source: "test-existing-reservation", diff --git a/src/features/background-agent/manager.ts b/src/features/background-agent/manager.ts index 384246396..9189dcdfc 100644 --- a/src/features/background-agent/manager.ts +++ b/src/features/background-agent/manager.ts @@ -3,7 +3,7 @@ import type { PluginInput } from "@opencode-ai/plugin" import type { BackgroundTaskConfig, TmuxConfig } from "../../config/schema" import { setContinuationMarkerSource } from "../../features/run-continuation-state" import type { ModelFallbackControllerAccessor } from "../../hooks/model-fallback" -import { type PromptAsyncGateResult, promptAsyncAfterSessionIdle } from "../../hooks/shared/prompt-async-gate" +import { dispatchInternalPrompt, type PromptAsyncGateResult } from "../../hooks/shared/prompt-async-gate" import { isSessionActive as isOpenCodeSessionActive } from "../../hooks/shared/session-idle-settle" import { createInternalAgentTextPart, @@ -1290,7 +1290,8 @@ The fallback retry session is now created and can be inspected directly. applySessionPromptParams(existingTask.sessionId!, existingTask.model) } - promptAsyncAfterSessionIdle({ + dispatchInternalPrompt({ + mode: "async", client: this.client, sessionID: existingTask.sessionId, source: "background-agent-resume", diff --git a/src/features/background-agent/parent-wake-notifier.ts b/src/features/background-agent/parent-wake-notifier.ts index 62ce9469c..725dcfacb 100644 --- a/src/features/background-agent/parent-wake-notifier.ts +++ b/src/features/background-agent/parent-wake-notifier.ts @@ -1,7 +1,7 @@ import { resolveRegisteredAgentName } from "../claude-code-session-state" import { createInternalAgentTextPart, log, messagesInDirectory, normalizeSDKResponse } from "../../shared" import { isSessionActive as isOpenCodeSessionActive, settleAfterSessionIdle } from "../../hooks/shared/session-idle-settle" -import { promptAsyncAfterSessionIdle } from "../../hooks/shared/prompt-async-gate" +import { dispatchInternalPrompt } from "../../hooks/shared/prompt-async-gate" import type { PluginInput } from "@opencode-ai/plugin" type OpencodeClient = PluginInput["client"] @@ -137,7 +137,8 @@ export class ParentWakeNotifier { const notificationContent = latestWake.notifications.join("\n\n") try { - const promptResult = await promptAsyncAfterSessionIdle({ + const promptResult = await dispatchInternalPrompt({ + mode: "async", client: this.deps.client, sessionID, source: "background-agent-parent-wake", diff --git a/src/features/background-agent/session-route.ts b/src/features/background-agent/session-route.ts index 0bd7759bb..a8cc7fdbf 100644 --- a/src/features/background-agent/session-route.ts +++ b/src/features/background-agent/session-route.ts @@ -1,7 +1,7 @@ import type { PluginInput } from "@opencode-ai/plugin" import { promptWithModelSuggestionRetry } from "../../shared" -import { promptAsyncAfterSessionIdle } from "../../shared/prompt-async-gate" +import { dispatchInternalPrompt } from "../../shared/prompt-async-gate" type OpencodeClient = PluginInput["client"] @@ -35,7 +35,8 @@ export function promptAsyncInDirectory( return Promise.reject(new Error("session id is required for routed promptAsync")) } - return promptAsyncAfterSessionIdle({ + return dispatchInternalPrompt({ + mode: "async", client, sessionID, input: routedArgs,