* refactor: search out of repo
* fix: apply cases, no resolve for index on every hit
* chore: tests
* fix: use iterator and no open
* refactor: public dir stuff in jsonl, source
* cleanup and sqlite time number
* fix: use storage for label search too, delete types
* refactor: abstract some more
* docs: example jsonl with elastic search
* docs: Christian's md
* refactor: simpler api surface
* feat: rebuild
* docs: consolidate
* fix: use trigger for sqlite, cleanup indexable, add example in doc
* chore: restore upstream responses shared
* fix: delete metadata from jsonl search hit
* fix: AsynIterable
* refactor: scanning for memory, reuse
* fix: dont export jsonlSessionDirectoryName
* cleanup: more shared stuff
* cleanup: why, jsonl?
* fix(agent): make JSONL publication crash-safe
* fix(agent): move JSONL file creation from repo to storage
* fix(agent): move JSONL forking from repo to storage
* fix(agent): move fork mutation creation into session state
Load storage for each create or open without caching it in the repository. Remove repository-wide serialization and disposal because write queues belong to returned sessions.
Store sessions under cwd-encoded directories with timestamped filenames, scan project directories for listing and explicit-id collisions, and skip global scans for generated UUIDv7 ids. Document and test the shared layout.
Define JSONL create, list, metadata, and v4 header types. Persist opaque metadata and legacy parent paths, expose filesystem mtimes and source format, filter listings by cwd, and sort them by current mtime. Add metadata and ordering coverage.
Replace the duplicate in-memory indexes and query implementations in the Memory and JSONL backends with a shared SessionState projection. It applies backend-neutral mutations and maintains sequence numbers, IDs, entries, lanes, records, open operations, facts, statistics, and the chronological log.
Memory applies mutations directly. JSONL first appends the encoded mutation, then updates SessionState; replay decodes each line and applies it through the same relational validation. Fork imports remain lane-less and final lane pointers remain explicit.