a5cf04b325
Resume GPT sessions when the last assistant reply ends in a permission-seeking tail, while honoring stop-continuation and avoiding duplicate continuation across todo and atlas flows. Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-openagent) Co-authored-by: Sisyphus <clio-agent@sisyphuslabs.ai>
30 lines
919 B
TypeScript
30 lines
919 B
TypeScript
import type { PluginInput } from "@opencode-ai/plugin"
|
|
|
|
import { createGptPermissionContinuationHandler } from "./handler"
|
|
import { createSessionStateStore } from "./session-state"
|
|
|
|
export type GptPermissionContinuationHook = {
|
|
handler: (input: { event: { type: string; properties?: unknown } }) => Promise<void>
|
|
wasRecentlyInjected: (sessionID: string) => boolean
|
|
}
|
|
|
|
export function createGptPermissionContinuationHook(
|
|
ctx: PluginInput,
|
|
options?: {
|
|
isContinuationStopped?: (sessionID: string) => boolean
|
|
},
|
|
): GptPermissionContinuationHook {
|
|
const sessionStateStore = createSessionStateStore()
|
|
|
|
return {
|
|
handler: createGptPermissionContinuationHandler({
|
|
ctx,
|
|
sessionStateStore,
|
|
isContinuationStopped: options?.isContinuationStopped,
|
|
}),
|
|
wasRecentlyInjected(sessionID: string): boolean {
|
|
return sessionStateStore.wasRecentlyInjected(sessionID, 5_000)
|
|
},
|
|
}
|
|
}
|