/** * [WHO]: CuriosityQueue — persistent "want to understand" list for idle exploration * [FROM]: Depends on node:fs, node:path, node:os * [TO]: Consumed by ./index.ts, ./thinker.ts * [HERE]: extensions/builtin/idle-think/curiosity.ts - self-directed exploration agenda * * The queue is a JSON file at ~/.catui/agent/memory/idle-think-curiosity.json. * Topics are added from exploration insights and picked for the next exploration. */ export type CuriosityItem = { topic: string; addedAt: string; explored: boolean; exploredAt?: string; }; export type CuriosityQueue = { items: CuriosityItem[]; }; /** * Load the curiosity queue from disk. Returns empty queue if file doesn't exist. */ export declare function loadCuriosityQueue(): CuriosityQueue; /** * Save the curiosity queue to disk. */ export declare function saveCuriosityQueue(queue: CuriosityQueue): void; /** * Pick the next unexplored topics to focus on. * Returns up to `count` topics, oldest first (FIFO). */ export declare function pickNextTopics(queue: CuriosityQueue, count?: number): CuriosityItem[]; /** * Mark topics as explored after they've been used in an exploration. */ export declare function markExplored(queue: CuriosityQueue, topics: string[]): void; /** * Add new topics extracted from an exploration insight. * Deduplicates against existing topics. */ export declare function addTopicsFromInsight(queue: CuriosityQueue, topics: string[]): void; /** * Extract "want to understand" topics from an insight text. * Looks for a "Curiosity" or "Want to explore" section in the text. * If not found, returns empty array (no topics extracted). */ export declare function extractTopicsFromInsight(insightText: string): string[];