deepseek-harness/packages/storage
2026-07-30 01:18:28 +08:00
..
storage feat(typert): add compiler-independent type pipeline 2026-07-29 23:45:42 +08:00
storage-domain docs(i18n): record proofread README pairs 2026-07-29 15:30:44 +08:00
storage-json Merge commit 'ecbf75a5e70f662b6420375140cf12eb6bac7860' into worktree/retarget-pr885-20260729 2026-07-29 21:37:43 +08:00
storage-sqlite docs(i18n): record proofread README pairs 2026-07-29 15:30:44 +08:00
README.i18n.yaml docs(i18n): record proofread README pairs 2026-07-29 15:30:44 +08:00
README.md docs: translate remaining READMEs 2026-07-26 05:06:39 +08:00
README.zh.md docs(i18n): proofread README translations 121-140 2026-07-29 15:29:38 +08:00

storage/ — non-session storage family

English | 中文

The storage family persists everything that is not a session event log: a hub where named backends and typed data forms meet. Design record: domain KV storage Agent Note.

Package Role ctx key
storage/ The hub: named backend registry + merge-extensible data-form mounts, backend facet vocabulary, shared conformance suite ctx.storage
storage-json/ JSON backend: one human-readable file per unit, atomic whole-file rewrite registers backend json
storage-sqlite/ SQLite backend: one database hosting all routed units, document-per-row registers backend sqlite
domain/ Domain data form: zod-validated records, per-domain write chain, domain/changed events, backend routing by configuration ctx.storageDomain + ctx.storage.domain

Backends own one medium each and expose data-shape facets (kv today; an append-log facet is reserved for the future session-backend migration). Each backend plugin publishes an internal lifecycle service after registration; the domain plugin injects every configured backend key before exposing its own service, so config-tree row order carries no startup semantics. Consumers never touch backends directly — they inject storageDomain and open declared domains through it.