fix(background-agent): route session prompts by directory

This commit is contained in:
YeonGyu-Kim
2026-05-12 18:13:39 +09:00
parent 7d09d2c83c
commit 6035a551ad
7 changed files with 221 additions and 31 deletions
+1
View File
@@ -71,6 +71,7 @@ export * from "./project-discovery-dirs"
export * from "./normalize-sdk-response"
export * from "./record-type-guard"
export * from "./session-directory-resolver"
export * from "./session-route"
export * from "./prompt-tools"
export * from "./compaction-marker"
export * from "./internal-initiator-marker"
+80
View File
@@ -0,0 +1,80 @@
import type { PluginInput } from "@opencode-ai/plugin"
import {
promptSyncWithModelSuggestionRetry,
promptWithModelSuggestionRetry,
} from "./model-suggestion-retry"
type OpencodeClient = PluginInput["client"]
type PromptAsyncArgs = Parameters<OpencodeClient["session"]["promptAsync"]>[0]
type SessionMessagesArgs = Parameters<OpencodeClient["session"]["messages"]>[0]
type PromptRetryClient = Parameters<typeof promptWithModelSuggestionRetry>[0]
type PromptRetryArgs = Parameters<typeof promptWithModelSuggestionRetry>[1]
type PromptSyncRetryClient = Parameters<typeof promptSyncWithModelSuggestionRetry>[0]
type PromptSyncRetryArgs = Parameters<typeof promptSyncWithModelSuggestionRetry>[1]
export function routeSessionPrompt(args: PromptAsyncArgs, directory: string): PromptAsyncArgs {
return {
...args,
query: { directory },
}
}
export function routePromptRetry(args: PromptRetryArgs, directory: string): PromptRetryArgs {
return {
...args,
query: { directory },
}
}
export function routePromptSyncRetry(
args: PromptSyncRetryArgs,
directory: string,
): PromptSyncRetryArgs {
return {
...args,
query: { directory },
}
}
export function routeSessionMessages(
args: SessionMessagesArgs,
directory: string,
): SessionMessagesArgs {
return {
...args,
query: { directory },
}
}
export function promptAsyncInDirectory(
client: OpencodeClient,
args: PromptAsyncArgs,
directory: string,
): Promise<unknown> {
return client.session.promptAsync(routeSessionPrompt(args, directory))
}
export function promptWithRetryInDirectory(
client: PromptRetryClient,
args: PromptRetryArgs,
directory: string,
): Promise<void> {
return promptWithModelSuggestionRetry(client, routePromptRetry(args, directory))
}
export function promptSyncWithRetryInDirectory(
client: PromptSyncRetryClient,
args: PromptSyncRetryArgs,
directory: string,
): Promise<void> {
return promptSyncWithModelSuggestionRetry(client, routePromptSyncRetry(args, directory))
}
export function messagesInDirectory(
client: OpencodeClient,
args: SessionMessagesArgs,
directory: string,
): Promise<unknown> {
return client.session.messages(routeSessionMessages(args, directory))
}