export interface DurableDigestCaps { userMd?: number; profile?: number; memory?: number; } /** * The durable "who this person is" block: USER.md + a COMPACT profile.json * (avatars stripped, no pretty-print indent — indent alone tripled its size) * + recent memory files. Ordered so that if a downstream clamp ever cuts the * head, the raw profile JSON loses first and the readable dossier survives. */ export declare function readDurableDigest(caps?: DurableDigestCaps): string; /** The main chat's pi transcript — the smart lane's actual conversation file. */ export declare function resolveMainTranscriptPath(): string | null; export interface ConversationTurn { role: "user" | "assistant"; text: string; } /** * Last N user/assistant turns from a pi transcript (tail-read — the file can * be many MB). Tool results and thinking blocks are skipped; only what was * actually said survives. */ export declare function readConversationTurns(opts?: { maxTurns?: number; maxCharsPerTurn?: number; transcriptPath?: string | null; }): ConversationTurn[]; /** The formatted conversation block both fast lanes inject. */ export declare function readConversationTail(opts?: { maxTurns?: number; maxCharsPerTurn?: number; transcriptPath?: string | null; }): string; /** * Recent tool calls the koi made THIS session — what it has actually DONE * (edited a file, ran a command, searched, sent a message). The plain * conversation reader strips tool blocks, so without this the fast responder * cannot answer "did you send it?" / "what did you just change?" and has to * delegate every follow-up about its own recent work. Tail-read from the same * pi transcript the smart lane replays. */ export declare function readRecentActions(opts?: { maxActions?: number; transcriptPath?: string | null; }): string;