The boulder continuation in event-handler.ts skipped injection whenever the last agent was 'sisyphus' and the boulder state had agent='atlas' set explicitly. The allowSisyphusWhenDefaultAtlas guard required boulderAgentWasNotExplicitlySet=true, but start-work-hook.ts always calls createBoulderState(..., 'atlas') which sets the agent explicitly. This created a chicken-and-egg deadlock: boulder continuation needs atlas to be the last agent, but the continuation itself is what switches to atlas. With /start-work, the first iteration was always blocked. Fix: drop the boulderAgentWasNotExplicitlySet constraint so Sisyphus is always allowed when the boulder targets atlas (whether explicit or default). Also reduce todo-continuation-enforcer CONTINUATION_COOLDOWN_MS from 30s to 5s to match atlas hook cooldown and recover interruptions faster.
23 lines
818 B
TypeScript
23 lines
818 B
TypeScript
import { createSystemDirective, SystemDirectiveTypes } from "../../shared/system-directive"
|
|
|
|
export const HOOK_NAME = "todo-continuation-enforcer"
|
|
|
|
export const DEFAULT_SKIP_AGENTS = ["prometheus", "compaction"]
|
|
|
|
export const CONTINUATION_PROMPT = `${createSystemDirective(SystemDirectiveTypes.TODO_CONTINUATION)}
|
|
|
|
Incomplete tasks remain in your todo list. Continue working on the next pending task.
|
|
|
|
- Proceed without asking for permission
|
|
- Mark each task complete when finished
|
|
- Do not stop until all tasks are done`
|
|
|
|
export const COUNTDOWN_SECONDS = 2
|
|
export const TOAST_DURATION_MS = 900
|
|
export const COUNTDOWN_GRACE_PERIOD_MS = 500
|
|
|
|
export const ABORT_WINDOW_MS = 3000
|
|
export const CONTINUATION_COOLDOWN_MS = 5_000
|
|
export const MAX_CONSECUTIVE_FAILURES = 5
|
|
export const FAILURE_RESET_WINDOW_MS = 5 * 60 * 1000
|