diff --git a/src/state.ts b/src/state.ts new file mode 100644 index 0000000..8b3a2af --- /dev/null +++ b/src/state.ts @@ -0,0 +1,32 @@ +/** How a skill was first observed in the session (SPEC §6.2). */ +export type SkillSource = "slash" | "skill-block" | "read"; + +/** Compaction that triggered or skipped re-inject (SPEC §8). */ +export type CompactionSource = "auto" | "manual"; + +/** pi-auto-compact delivery mode (SPEC §6.5, §16). */ +export type AutoCompactIntegration = "auto" | "defer" | "immediate" | "off"; + +export interface TrackedSkill { + name: string; + filePath: string; + baseDir: string; + firstSeenAt: number; + lastSeenAt: number; + sources: SkillSource[]; +} + +export interface ExtensionState { + version: 1; + sessionOverride: boolean | null; + skills: TrackedSkill[]; + lastCompactionSource: CompactionSource | null; + /** Skill names awaiting re-inject on the next before_agent_start (SPEC §6.5). */ + pendingReinject: string[]; +} + +/** Runtime-only; not persisted via appendEntry (SPEC §6.1). */ +export interface RuntimeFlags { + autoCompactDetected: boolean; + autoCompactIntegration: AutoCompactIntegration; +}