Files
deepseek-harness/packages/storage/storage-json
imccyu 2c85c484d3 build(release): reference workspace members through the workspace protocol
1504 hand-written ranges pointing at workspace members become workspace:^, so
pnpm pack substitutes each member's real version at publication: sibling
peerDependencies follow the family version instead of being pinned at ^0.0.1,
and a reference to a vendored package follows that package's own line. Without
this, publishing 0.0.2 ships peer ranges naming a version that does not exist,
and 0.0.1-rc.1 does not satisfy ^0.0.1 either.

It also retires ranges that had gone stale against the workspace: ^4.0.0-rc.6
for a 4.0.0-rc.7 checkout, ^3.17.0 for schemastery 3.18.0.

workspace:* stays where an exact published version is the point, which is how
the Landlock entry pins its platform packages.

A workspace constraint now requires the protocol, so a new package cannot
reintroduce a hand-written range. The same constraint caught packages/boot/cmdline
arriving on master without the publishable trio, which this change completes.
2026-08-11 00:17:09 +08:00
..
2026-07-26 05:06:39 +08:00

@deepseek-ai/dsh-storage-json

English | 中文

JSON backend for the storage hub: one human-readable <unit>.json file per unit under a configured root, registered as backend json. Design: domain KV storage Agent Note.

Model

  • The in-memory unit state is authoritative; every write primitive republishes the whole file via temp-write + fsync + atomic rename() replace. A unit file is always the complete current net state — legibility is this backend's reason to exist; scale is the SQLite backend's job.
  • A missing file opens as an empty unit and materializes on the first write. A foreign or unparsable file rejects with malformed-medium; a stored version differing from the descriptor rejects with version-mismatch (no migration, pre-release stance).
  • Write ordering across calls belongs to the caller (the domain layer's write chain); each single call is atomic and durable once resolved.

Config

Key Type Default Meaning
root string required — no default (a cwd fallback would scatter files) Directory holding unit files; created 0o700 on demand

Model Experience

Stored domain records

What the model sees

Nothing. This backend contributes no prompt, tool, or schema; it persists non-session domain data behind ctx.storage for host-side consumers only.

Token effect

Zero live-request tokens.

KV Cache effect

None — the backend never touches live request prefixes.

Known Limitations and Deferred Work

  • Windows durability relies on libuv's rename() (MoveFileExW with replacement) without an explicit write-through flag; the session-log backend's stricter Win32 write-through publish helper is planned to move down here when the append-log facet lands (see the Agent Note's migration section).
  • No cross-process write locking: two processes writing the same root can interleave whole-file replacements (last write wins). Single-host-process deployments are the current consumer; the multi-process story is deferred per the Agent Note's out-of-scope table.