iFlow
iFlow stores its durable conversation as project JSONL. Hansard enforces the single structural cohort found across the 104 stable releases that contain this writer instead of treating inherited Gemini-era prompt logs as complete sessions.
Source IDs
Section titled “Source IDs”| Source | Use it for |
|---|---|
iflow |
iFlow project transcripts and compaction records. |
How the import works
Section titled “How the import works”Hansard scans exact projects/<project>/session-<uuid>.jsonl journals. A bare
inner session id is not produced by the audited writers and fails closed. The
importer validates the append-only record forest, orders records by their source
timestamps with physical order as a tie-breaker, and replays user and assistant
text, user images, exactly linked tool calls and results, and compaction
records. Content on both sides of a context compaction remains part of the
archived conversation instead of being replaced by the summary alone.
Identical tool-call parts repeated by the writer’s incremental stream snapshots
are counted once, while conflicting repeats fail closed.
Shared Gemini-era prompt logs and echoed slash commands do not define a full iFlow conversation, so the importer does not promote them into extra sessions. Unknown or malformed transcript-bearing records fail the candidate instead of being skipped. Empty semantic records, provider caveats, and slash-command echoes are counted with explicit exclusion reasons. Project attribution uses the recorded working directory; the project folder name remains only a lossy grouping hint. The exact accepted JSONL bytes and detected cohort are preserved for raw replay. Reimporting updates the same durable session when its transcript has grown.
Import and keep current
Section titled “Import and keep current”hansard import --source iflow --since allhansard index rebuildhansard config sources add iflowhansard watcher restartReview the import in the app
Section titled “Review the import in the app”After the import finishes, open Conversations and selectFilter & sort. Set Source toiFlow, choose the backfill window underTime, and use Folder when the same harness appears in several projects. Select a result to inspect its messages, tool calls and results, files, commits, model and usage fields, and source provenance in one conversation view.
For a local source that should stay current, open Settings → Indexing & Imports. Automatic follows detected local harnesses; Custom lets Sources scannedselect an explicit set. Explicit cloud and account-export sources do not turn into background network jobs here. If the expected result is absent after resetting the conversation filters, return to the terminal import in this guide and add --explain-skips where supported.
What Hansard preserves
Section titled “What Hansard preserves”- User and assistant text, user images, tool calls and results, and compaction boundaries.
- History before compaction rather than retaining only the latest context.
- Working-directory attribution and source timestamps recorded in the journal.
- Exact source bytes, detector facts, and record accounting for raw replay.
Known limitations
Section titled “Known limitations”- Interactive iFlow runs currently write empty usage values, so their token totals remain zero rather than being estimated.
- Gemini-era
logs.jsonprompt history has no assistant turns and is not imported as a second conversation. - Slash-command echoes recorded as assistant output are excluded from visible turns.
- The five audited prompt-only releases before the project journal writer do not provide a complete session transcript and are not imported as one.
Refresh an existing archive
Section titled “Refresh an existing archive”Parser suffix 2 requires a clean source reimport so existing sessions receive the strict cohort and source-snapshot metadata:
hansard import --source iflow --since allhansard index rebuild