/** * Session-scoped goal state. A single active goal per session, held in memory * (mirrors Claude Code's session-level activeGoal — no cross-session persistence). */ export type GoalStatus = 'active' | 'achieved' | 'impossible' | 'budget_limited' | 'iteration_limited' | 'cleared'; export type GoalOrigin = 'derived' | 'explicit'; export interface ActiveGoal { condition: string; origin: GoalOrigin; status: GoalStatus; iterations: number; setAt: number; lastReason?: string; tokenBudget?: number; tokensUsed: number; } /** Max length of a goal condition, matching Claude Code's 4000-char cap. */ export declare const MAX_CONDITION_LENGTH = 4000; /** Keywords that clear an active goal (matches Claude Code's clear-keyword set). */ export declare const CLEAR_KEYWORDS: Set; export declare function isClearKeyword(arg: string): boolean; /** * Holds the single active goal for a session. Instantiated per-session in the * extension; not shared across sessions. */ export declare class GoalState { private goal; get(): ActiveGoal | undefined; isActive(): boolean; /** * Set (or replace) the active goal. Throws on an empty or over-long condition * so callers can surface a sanitized error to the user. */ set(condition: string, origin: GoalOrigin, options?: { tokenBudget?: number; }): ActiveGoal; clear(): ActiveGoal | undefined; /** Record a not-yet-met round: bump iterations, store the evaluator's reason. */ recordIteration(reason: string, tokensUsed: number): ActiveGoal | undefined; markAchieved(reason: string): ActiveGoal | undefined; markImpossible(reason: string): ActiveGoal | undefined; markBudgetLimited(reason?: string): ActiveGoal | undefined; markIterationLimited(reason?: string): ActiveGoal | undefined; private transition; } //# sourceMappingURL=goal-state.d.ts.map