/** * Parses a Claude Code JSONL transcript into the FullMessage[] format used * by the indexer. * * Transcript format observations: * - Each line is a JSON object with a `type` field * - `type: "file-history-snapshot"` — internal snapshot, skip * - `type: "user"` with `isMeta: true` — local command caveat, skip * - `type: "user"` with array `content` of `tool_result` — tool output, keep * - `type: "user"` with string `content` — regular user message, keep * (but skip /command messages and login stdout noise) * - `type: "assistant"` — may appear multiple times with the same `message.id` * (streaming chunks); we keep the LAST entry per message.id * - `isApiErrorMessage: true` — skip * - Assistant `content` blocks of type "thinking" — skip (internal reasoning) * - Assistant `content` blocks of type "tool_use" — keep (tool call) * - User `content` array with `tool_result` — keep (tool output) */ import type { FullMessage } from "./types"; /** * Parses a Claude Code JSONL transcript file into FullMessage[]. * * Deduplicates streaming assistant chunks (same message.id → keep last), * and pairs tool_use calls with their tool_result responses. */ export declare function parseTranscript(transcriptPath: string): FullMessage[]; /** * Derives a session title from the transcript messages. * Uses the first meaningful user message text, truncated to 60 chars. */ export declare function deriveSessionTitle(messages: FullMessage[]): string; //# sourceMappingURL=transcript-to-messages.d.ts.map