diff --git a/limit-turns.ts b/limit-turns.ts deleted file mode 100644 index e32584c..0000000 --- a/limit-turns.ts +++ /dev/null @@ -1,56 +0,0 @@ -import type { ExtensionAPI } from "@mariozechner/pi-coding-agent"; - -// ============================================================================ -// Configuration -// ============================================================================ - -const DEFAULT_MAX_TURNS = 25; - -function getMaxTurns(): number { - const env = process.env.PI_MAX_TURNS; - if (!env) return DEFAULT_MAX_TURNS; - const parsed = parseInt(env, 10); - return Number.isFinite(parsed) && parsed > 0 ? parsed : DEFAULT_MAX_TURNS; -} - -// ============================================================================ -// Pure detection logic (testable) -// ============================================================================ - -export function checkTurnLimit( - turnIndex: number, - maxTurns: number, -): { exceeded: boolean; turnIndex: number; maxTurns: number } { - return { - exceeded: turnIndex > maxTurns, - turnIndex, - maxTurns, - }; -} - -// ============================================================================ -// Extension handler -// ============================================================================ - -export default function (pi: ExtensionAPI) { - let turnCount = 0; - const maxTurns = getMaxTurns(); - - pi.on("agent_start", async (_event, ctx) => { - // Reset counter for each new user prompt - turnCount = 0; - }); - - pi.on("turn_start", async (event, ctx) => { - turnCount++; - - const { exceeded } = checkTurnLimit(event.turnIndex, maxTurns); - if (exceeded && ctx.hasUI) { - ctx.ui.notify( - `Turn limit exceeded: ${maxTurns} turns reached. Agent aborted.`, - "error", - ); - ctx.abort(); - } - }); -}