/** * Soft plan-mode research reminders. * * Attached to existing tool-result payloads at milestones (15, 25, 35, …). * Informational only — never aborts the turn, never forbids more tools, * never injects as a separate user message (keeps tool-call pairs intact). * Host may toast "reminder sent" when `reminded` is true. */ /** First reminder after this many productive tool steps. */ export declare const PLAN_REMINDER_FIRST_STEP = 15; /** Subsequent reminders every N productive steps. */ export declare const PLAN_REMINDER_STEP_INTERVAL = 10; /** Short UI toast when a plan-mode research note was attached. */ export declare const PLAN_REMINDER_TOAST = "reminder sent \u00B7 plan mode"; export interface PlanReminderGate { readonly isPlanMode: boolean; readonly planApproved: boolean; /** True when a draft plan with tasks already exists (stop nags after plan.create). */ readonly hasDraftPlan: boolean; /** Productive tool-step index after recording this result (1-based). */ readonly productiveStep: number; /** Milestones already fired this turn. */ readonly alreadyRemindedAt: ReadonlySet; } /** True when this productive step is a reminder milestone (15, 25, 35, …). */ export declare function isPlanReminderMilestone(step: number): boolean; /** * Whether to append a plan-mode research note to this tool result. * Call once per completed productive step; track `alreadyRemindedAt` in the turn. */ export declare function shouldAttachPlanModeReminder(opts: PlanReminderGate): boolean; export interface PlanReminderTextOpts { readonly step: number; readonly kindHint?: "pentest" | "coding" | "general" | undefined; } /** * Calm note — not a stop order. Appended under the tool result body. * Explicitly tells the model to keep researching without hurrying. */ export declare function planModeResearchReminder(opts: PlanReminderTextOpts): string; /** Append reminder suffix when the gate passes; otherwise return content unchanged. */ export declare function maybeAppendPlanModeReminder(toolContent: string, opts: PlanReminderGate & PlanReminderTextOpts): { content: string; reminded: boolean; };