fix(continuation): auto-continue GPT permission-seeking replies
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>
This commit is contained in:
@@ -170,6 +170,7 @@ export function createEventHandler(args: {
|
||||
await Promise.resolve(hooks.claudeCodeHooks?.event?.(input));
|
||||
await Promise.resolve(hooks.backgroundNotificationHook?.event?.(input));
|
||||
await Promise.resolve(hooks.sessionNotification?.(input));
|
||||
await Promise.resolve(hooks.gptPermissionContinuation?.handler?.(input));
|
||||
await Promise.resolve(hooks.todoContinuationEnforcer?.handler?.(input));
|
||||
await Promise.resolve(hooks.unstableAgentBabysitter?.event?.(input));
|
||||
await Promise.resolve(hooks.contextWindowMonitor?.event?.(input));
|
||||
|
||||
@@ -3,6 +3,7 @@ import type { BackgroundManager } from "../../features/background-agent"
|
||||
import type { PluginContext } from "../types"
|
||||
|
||||
import {
|
||||
createGptPermissionContinuationHook,
|
||||
createTodoContinuationEnforcer,
|
||||
createBackgroundNotificationHook,
|
||||
createStopContinuationGuardHook,
|
||||
@@ -14,6 +15,7 @@ import { safeCreateHook } from "../../shared/safe-create-hook"
|
||||
import { createUnstableAgentBabysitter } from "../unstable-agent-babysitter"
|
||||
|
||||
export type ContinuationHooks = {
|
||||
gptPermissionContinuation: ReturnType<typeof createGptPermissionContinuationHook> | null
|
||||
stopContinuationGuard: ReturnType<typeof createStopContinuationGuardHook> | null
|
||||
compactionContextInjector: ReturnType<typeof createCompactionContextInjector> | null
|
||||
compactionTodoPreserver: ReturnType<typeof createCompactionTodoPreserverHook> | null
|
||||
@@ -55,6 +57,13 @@ export function createContinuationHooks(args: {
|
||||
}))
|
||||
: null
|
||||
|
||||
const gptPermissionContinuation = isHookEnabled("gpt-permission-continuation")
|
||||
? safeHook("gpt-permission-continuation", () =>
|
||||
createGptPermissionContinuationHook(ctx, {
|
||||
isContinuationStopped: stopContinuationGuard?.isStopped,
|
||||
}))
|
||||
: null
|
||||
|
||||
const compactionContextInjector = isHookEnabled("compaction-context-injector")
|
||||
? safeHook("compaction-context-injector", () =>
|
||||
createCompactionContextInjector({ ctx, backgroundManager }))
|
||||
@@ -66,9 +75,11 @@ export function createContinuationHooks(args: {
|
||||
|
||||
const todoContinuationEnforcer = isHookEnabled("todo-continuation-enforcer")
|
||||
? safeHook("todo-continuation-enforcer", () =>
|
||||
createTodoContinuationEnforcer(ctx, {
|
||||
createTodoContinuationEnforcer(ctx, {
|
||||
backgroundManager,
|
||||
isContinuationStopped: stopContinuationGuard?.isStopped,
|
||||
shouldSkipContinuation: (sessionID: string) =>
|
||||
gptPermissionContinuation?.wasRecentlyInjected(sessionID) ?? false,
|
||||
}))
|
||||
: null
|
||||
|
||||
@@ -111,12 +122,15 @@ export function createContinuationHooks(args: {
|
||||
backgroundManager,
|
||||
isContinuationStopped: (sessionID: string) =>
|
||||
stopContinuationGuard?.isStopped(sessionID) ?? false,
|
||||
shouldSkipContinuation: (sessionID: string) =>
|
||||
gptPermissionContinuation?.wasRecentlyInjected(sessionID) ?? false,
|
||||
agentOverrides: pluginConfig.agents,
|
||||
autoCommit: pluginConfig.start_work?.auto_commit,
|
||||
}))
|
||||
: null
|
||||
|
||||
return {
|
||||
gptPermissionContinuation,
|
||||
stopContinuationGuard,
|
||||
compactionContextInjector,
|
||||
compactionTodoPreserver,
|
||||
|
||||
Reference in New Issue
Block a user