dsh-memento 0.5.9 → 0.5.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ARCHITECTURE.md +1 -1
- package/CHANGELOG.md +11 -0
- package/README.es.md +2 -2
- package/README.hi.md +2 -2
- package/README.md +2 -2
- package/README.pt.md +2 -2
- package/README.zh.md +2 -2
- package/docs/upstream-proposal.md +101 -0
- package/package.json +10 -12
package/ARCHITECTURE.md
CHANGED
|
@@ -51,7 +51,7 @@ memory 工具(add)
|
|
|
51
51
|
→ store.insertEntry + audit 行(outcome 含 policy 来源)
|
|
52
52
|
→ 会话日志(已知事件类型)已有 approval/asked+decided 审计对
|
|
53
53
|
→ 下一会话首个 assemble:渲染冻结快照(带用量头)注入 systemPrompt 段
|
|
54
|
-
└ 同一文本也写入 audit(snapshot) 行 +
|
|
54
|
+
└ 同一文本也写入 audit(snapshot) 行 + system/message(S2 可重建)
|
|
55
55
|
```
|
|
56
56
|
|
|
57
57
|
## 关键设计决策
|
package/CHANGELOG.md
CHANGED
|
@@ -5,6 +5,17 @@ All notable changes to this project will be documented in this file.
|
|
|
5
5
|
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
|
|
6
6
|
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
|
|
7
7
|
|
|
8
|
+
## [0.5.10] - 2026-09-09
|
|
9
|
+
|
|
10
|
+
### Changed
|
|
11
|
+
|
|
12
|
+
- Align the `@deepseek-ai/dsh-*` peer ranges to `>=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0` and pin the dev/test dependencies to the published `0.1.5-alpha.1` line: adaptation to DeepSeek Harness `dsh-v0.1.5-alpha.1` (session format V3, `ctx.agent` removal, `Inbox` type-only interface); runtime behavior is unchanged for every supported host line.
|
|
13
|
+
- Record `0.1.5-alpha.1` in `dshWorkshop.compatibility.dshVersions`.
|
|
14
|
+
|
|
15
|
+
### Docs
|
|
16
|
+
|
|
17
|
+
- Refresh the five-language README compatibility baseline to `dsh-v0.1.5-alpha.1` (verified 2026-09-09).
|
|
18
|
+
|
|
8
19
|
## [0.5.9] - 2026-09-08
|
|
9
20
|
|
|
10
21
|
### Docs
|
package/README.es.md
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
|
|
26
26
|
| Surface | Status |
|
|
27
27
|
|---|---|
|
|
28
|
-
| Harness | DeepSeek Harness `dsh-v0.1.
|
|
28
|
+
| Harness | DeepSeek Harness `dsh-v0.1.5-alpha.1` (adaptado el 2026-09-09): el sobre de sesión conserva su campo ignorable solo para compatibilidad de lectura de logs almacenados - Session.append aún no puede estamparlo, por lo que el comportamiento de la puerta no cambia. Verificado el 2026-09-09 contra el checkout master dsh-v0.1.5-alpha.1 (cadena completa de puertas + humo de instalación de perfil). |
|
|
29
29
|
| Node | `^22.19.0 || >=24.0.0` |
|
|
30
30
|
| Platforms | Windows / macOS / Linux (solo host; sin código nativo, sin red) |
|
|
31
31
|
| Model | Cualquiera |
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
`dsh-memento` es una costura de capacidad, no otro almacén: un servicio tipado `ctx.memory`, un proveedor SQLite local (`node:sqlite`, WAL, `0600`, en `$DSH_HOME/dsh-memento/memory.db`) y sus consumidores — la herramienta `memory` y una instantánea congelada inyectada en el prompt del sistema.
|
|
36
36
|
|
|
37
37
|
- **La puerta no se puede eludir.** Toda ruta de escritura (`add` / `replace` / `remove` / `seed`) se fuerza a través de la cascada de aprobación dentro del servicio, no en la capa de herramientas. `writePolicy: ask | auto | off` es configuración invisible para el modelo; `replace` / `remove` / `consolidate` llevan el texto completo de las entradas que cambian en el payload de aprobación, y una escritura denegada deja igualmente una fila de auditoría `*-denied`.
|
|
38
|
-
- **Visible para el modelo ⟺ registrado.** La instantánea inyectada llega textualmente a `
|
|
38
|
+
- **Visible para el modelo ⟺ registrado.** La instantánea inyectada llega textualmente a `system/message`; cada escritura es reconstruible a partir de `approval/asked` + `approval/decided` + la propia tabla de auditoría del plugin.
|
|
39
39
|
- **Acotada y honesta.** Presupuestos estrictos de caracteres por pista y por capa (por defecto usuario 2000 / agente 4000). Un almacén lleno falla con un error estructurado (uso + límite): nunca se trunca, nunca se compacta automáticamente.
|
|
40
40
|
|
|
41
41
|
Dos pistas × dos capas × clave por agente: una pista `user` (hechos sobre el usuario) y una pista `agent` (hechos de entorno y convenciones), cada una dividida en capas `user-global` y `workspace`, aisladas por `agentPreset`. La instantánea se congela una vez por sesión en el primer ensamblado del prompt y nunca cambia a mitad de sesión.
|
package/README.hi.md
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
|
|
26
26
|
| Surface | Status |
|
|
27
27
|
|---|---|
|
|
28
|
-
| Harness | DeepSeek Harness `dsh-v0.1.
|
|
28
|
+
| Harness | DeepSeek Harness `dsh-v0.1.5-alpha.1` (2026-09-09 को अनुकूलित): सत्र लिफ़ाफ़ा अपना ignorable फ़ील्ड केवल संग्रहीत-लॉग पठन संगतता के लिए रखता है - Session.append अभी भी इसे स्टैम्प नहीं कर सकता, इसलिए गेट व्यवहार अपरिवर्तित है। dsh-v0.1.5-alpha.1 master checkout के विरुद्ध 2026-09-09 को सत्यापित (पूर्ण गेट शृंखला + प्रोफ़ाइल इंस्टॉल स्मोक)। |
|
|
29
29
|
| Node | `^22.19.0 || >=24.0.0` |
|
|
30
30
|
| Platforms | Windows / macOS / Linux (केवल host; कोई नेटिव कोड नहीं, कोई नेटवर्क नहीं) |
|
|
31
31
|
| Model | कोई भी |
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
`dsh-memento` एक क्षमता-सीम है, कोई दूसरा भंडार नहीं: एक टाइप्ड `ctx.memory` सेवा, एक स्थानीय SQLite प्रदाता (`node:sqlite`, WAL, `0600`, `$DSH_HOME/dsh-memento/memory.db` पर) और उसके उपभोक्ता — `memory` टूल और सिस्टम प्रॉम्प्ट में इंजेक्ट किया गया फ़्रोज़न स्नैपशॉट।
|
|
36
36
|
|
|
37
37
|
- **अनुमोदन द्वार को टाला नहीं जा सकता।** हर लेखन पथ (`add` / `replace` / `remove` / `seed`) सेवा के भीतर अनुमोदन वॉटरफ़ॉल से होकर गुज़रता है, टूल परत से नहीं। `writePolicy: ask | auto | off` मॉडल के लिए अदृश्य विन्यास है; `replace` / `remove` / `consolidate` अनुमोदन पेलोड में बदली जाने वाली प्रविष्टियों का पूरा पाठ ले जाते हैं, और अस्वीकृत लेखन भी एक `*-denied` ऑडिट पंक्ति छोड़ता है।
|
|
38
|
-
- **मॉडल-दृश्य ⟺ लॉग किया गया।** इंजेक्ट किया गया स्नैपशॉट `
|
|
38
|
+
- **मॉडल-दृश्य ⟺ लॉग किया गया।** इंजेक्ट किया गया स्नैपशॉट `system/message` में शब्दशः पहुँचता है; हर लेखन `approval/asked` + `approval/decided` + प्लगइन की अपनी ऑडिट तालिका से पुनर्निर्माण-योग्य है।
|
|
39
39
|
- **परिबद्ध और ईमानदार।** प्रति-ट्रैक/प्रति-परत कठोर अक्षर बजट (डिफ़ॉल्ट user 2000 / agent 4000)। भरा हुआ भंडार संरचित त्रुटि से विफल होता है (उपयोग + सीमा) — कभी काटा नहीं, कभी स्वतः संकुचित नहीं।
|
|
40
40
|
|
|
41
41
|
दो ट्रैक × दो परतें × प्रति-एजेंट कुंजी: एक `user` ट्रैक (उपयोगकर्ता के बारे में तथ्य) और एक `agent` ट्रैक (पर्यावरण तथ्य और परंपराएँ), प्रत्येक `user-global` और `workspace` परतों में बँटा, `agentPreset` के अनुसार पृथक। स्नैपशॉट पहले प्रॉम्प्ट संयोजन पर प्रति-सत्र एक बार फ़्रीज़ होता है और सत्र के बीच कभी नहीं बदलता।
|
package/README.md
CHANGED
|
@@ -26,7 +26,7 @@
|
|
|
26
26
|
|
|
27
27
|
| Surface | Status |
|
|
28
28
|
|---|---|
|
|
29
|
-
| Harness | DeepSeek Harness `dsh-v0.1.
|
|
29
|
+
| Harness | DeepSeek Harness `dsh-v0.1.5-alpha.1` (adapted 2026-09-09): the session envelope keeps its ignorable field for stored-log read compatibility only - Session.append still cannot stamp it, so audit-gate behavior is unchanged. Verified 2026-09-09 against the dsh-v0.1.5-alpha.1 master checkout (full gate chain + profile install smoke). |
|
|
30
30
|
| Node | `^22.19.0 || >=24.0.0` |
|
|
31
31
|
| Platforms | Windows / macOS / Linux (pure host; no native code, no network) |
|
|
32
32
|
| Model | Any |
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
`dsh-memento` is a capability seam, not another memory warehouse: a typed `ctx.memory` service, a local SQLite provider (`node:sqlite`, WAL, `0600`, at `$DSH_HOME/dsh-memento/memory.db`), and its consumers — the `memory` tool and a frozen snapshot injected into the system prompt.
|
|
37
37
|
|
|
38
38
|
- **The approval gate cannot be bypassed.** Every write path (`add` / `replace` / `remove` / `seed`) is forced through the approval waterfall inside the service, not in the tool layer. `writePolicy: ask | auto | off` is model-invisible configuration; `replace` / `remove` / `consolidate` carry the full text of the entries they change in the approval payload, and a denied write still lands a `*-denied` audit row.
|
|
39
|
-
- **Model-visible ⟺ logged.** The injected snapshot lands verbatim in `
|
|
39
|
+
- **Model-visible ⟺ logged.** The injected snapshot lands verbatim in `system/message`; every write is reconstructable from `approval/asked` + `approval/decided` + the plugin's own audit table.
|
|
40
40
|
- **Bounded and honest.** Hard per-track/per-layer character budgets (default user 2000 / agent 4000). A full store fails with a structured error (usage + limit) — never truncated, never auto-compacted.
|
|
41
41
|
|
|
42
42
|
Two tracks × two layers × per-agent key: a `user` track (facts about the user) and an `agent` track (environment facts and conventions), each split into `user-global` and `workspace` layers, isolated per `agentPreset`. The snapshot is frozen once per session at first prompt assembly and never changes mid-session.
|
package/README.pt.md
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
|
|
26
26
|
| Surface | Status |
|
|
27
27
|
|---|---|
|
|
28
|
-
| Harness | DeepSeek Harness `dsh-v0.1.
|
|
28
|
+
| Harness | DeepSeek Harness `dsh-v0.1.5-alpha.1` (adaptado em 2026-09-09): o envelope de sessão mantém seu campo ignorable apenas para compatibilidade de leitura de logs armazenados - o Session.append ainda não consegue estampá-lo, então o comportamento da porta não muda. Verificado em 2026-09-09 contra o checkout master dsh-v0.1.5-alpha.1 (cadeia completa de portas + smoke de instalação de perfil). |
|
|
29
29
|
| Node | `^22.19.0 || >=24.0.0` |
|
|
30
30
|
| Platforms | Windows / macOS / Linux (somente host; sem código nativo, sem rede) |
|
|
31
31
|
| Model | Qualquer |
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
O `dsh-memento` é uma costura de capacidade, não outro armazém: um serviço tipado `ctx.memory`, um provedor SQLite local (`node:sqlite`, WAL, `0600`, em `$DSH_HOME/dsh-memento/memory.db`) e seus consumidores — a ferramenta `memory` e um snapshot congelado injetado no prompt do sistema.
|
|
36
36
|
|
|
37
37
|
- **A porta não pode ser contornada.** Todo caminho de escrita (`add` / `replace` / `remove` / `seed`) passa pela cascata de aprovação dentro do serviço, não na camada de ferramentas. `writePolicy: ask | auto | off` é configuração invisível para o modelo; `replace` / `remove` / `consolidate` carregam o texto completo das entradas que alteram no payload de aprovação, e uma escrita negada ainda gera uma linha de auditoria `*-denied`.
|
|
38
|
-
- **Visível para o modelo ⟺ registrado.** O snapshot injetado chega textualmente a `
|
|
38
|
+
- **Visível para o modelo ⟺ registrado.** O snapshot injetado chega textualmente a `system/message`; toda escrita é reconstruível a partir de `approval/asked` + `approval/decided` + a própria tabela de auditoria do plugin.
|
|
39
39
|
- **Limitado e honesto.** Orçamentos rígidos de caracteres por trilha e por camada (padrão usuário 2000 / agente 4000). Um armazém cheio falha com erro estruturado (uso + limite) — nunca trunca, nunca compacta automaticamente.
|
|
40
40
|
|
|
41
41
|
Duas trilhas × duas camadas × chave por agente: uma trilha `user` (fatos sobre o usuário) e uma trilha `agent` (fatos de ambiente e convenções), cada uma dividida em camadas `user-global` e `workspace`, isoladas por `agentPreset`. O snapshot é congelado uma vez por sessão na primeira montagem do prompt e nunca muda no meio da sessão.
|
package/README.zh.md
CHANGED
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
|
|
26
26
|
| Surface | Status |
|
|
27
27
|
|---|---|
|
|
28
|
-
| Harness | DeepSeek Harness `dsh-v0.1.
|
|
28
|
+
| Harness | DeepSeek Harness `dsh-v0.1.5-alpha.1`(2026-09-09 已适配):会话信封保留 ignorable 字段但仅用于存量日志读取兼容——Session.append 仍无法盖章,门控行为不变。 2026-09-09 已对照 dsh-v0.1.5-alpha.1 master checkout 核验(全部门禁链 + profile 安装冒烟)。 |
|
|
29
29
|
| Node | `^22.19.0 || >=24.0.0` |
|
|
30
30
|
| Platforms | Windows / macOS / Linux(纯 host;无原生代码、无网络) |
|
|
31
31
|
| Model | 任意 |
|
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
`dsh-memento` 是能力接缝,不是又一个仓库:一个类型安全的 `ctx.memory` 服务、一个本地 SQLite 提供方(`node:sqlite`,WAL,`0600`,位于 `$DSH_HOME/dsh-memento/memory.db`),以及它的消费方——`memory` 工具与注入系统提示的冻结快照。
|
|
36
36
|
|
|
37
37
|
- **审批门不可绕过。** 每条写路径(`add` / `replace` / `remove` / `seed`)都被强制经过服务内部的审批 waterfall,而非工具层。`writePolicy: ask | auto | off` 是模型看不见的配置;`replace` / `remove` / `consolidate` 的审批载荷携带将被改动条目的全文,被拒的写同样落一条 `*-denied` 审计行。
|
|
38
|
-
- **模型可见 ⟺ 已记录。** 注入的快照逐字进入 `
|
|
38
|
+
- **模型可见 ⟺ 已记录。** 注入的快照逐字进入 `system/message`;每次写都能从 `approval/asked` + `approval/decided` + 插件自有审计表重建。
|
|
39
39
|
- **有界且诚实。** 每轨每层硬字符预算(默认 user 2000 / agent 4000)。写满返回结构化错误(用量 + 上限)——绝不截断、绝不自动压缩。
|
|
40
40
|
|
|
41
41
|
两条轨道 × 两个层级 × 按 agent 隔离:`user` 轨(关于用户的事实)与 `agent` 轨(环境事实与约定),各自再分为 `user-global` 与 `workspace` 层,并按 `agentPreset` 隔离。快照在会话首次组装提示时冻结一次,会话中途不再变化。
|
|
@@ -72,3 +72,104 @@ Backward compatibility: the protocol is a normalization and extension of dsh-mem
|
|
|
72
72
|
0.3.x seam — existing behavior is preserved; `tags`/`version`/adapters are additive. The
|
|
73
73
|
reference implementation stays installable as a community plugin regardless of whether or when
|
|
74
74
|
the harness adopts the protocol.
|
|
75
|
+
|
|
76
|
+
## Alignment with official ctx.storage (0.1.5-alpha.1)
|
|
77
|
+
|
|
78
|
+
> Status check 2026-09-09, read-only against `origin/master` = `5dda764e`
|
|
79
|
+
> (`0.1.5-alpha.1`). The sections above were written when the official
|
|
80
|
+
> harness had no storage subsystem. That has changed, so this proposal is
|
|
81
|
+
> realigned: instead of a new top-level `ctx.memory` seam, memory protocol
|
|
82
|
+
> v1 now mounts on the official storage hub -- its persistence rides
|
|
83
|
+
> `ctx.storage.domain`, and the json/sqlite dual backend already exists.
|
|
84
|
+
> The earlier sections stay as the protocol rationale; the rc.6-era
|
|
85
|
+
> "Differences from the current official seam" table stays as a historical
|
|
86
|
+
> snapshot, superseded by this section.
|
|
87
|
+
|
|
88
|
+
### What the official seam now provides (recorded from source)
|
|
89
|
+
|
|
90
|
+
The `packages/storage` group (host-side only; no model-facing surface)
|
|
91
|
+
ships four packages:
|
|
92
|
+
|
|
93
|
+
- `storage` (`@deepseek-ai/dsh-storage`) -- the hub `ctx.storage`: a named
|
|
94
|
+
backend table (`BackendRegistry`: `register` / `get` / `names`; errors
|
|
95
|
+
`duplicate-backend` / `backend-not-found`) plus a data-form mount table.
|
|
96
|
+
`StorageForms` is an empty declaration-merge interface; `mount(form,
|
|
97
|
+
facility)` returns an unmount disposer (error `duplicate-mount`),
|
|
98
|
+
`form(form)` resolves a mounted form (error `form-not-mounted`), and the
|
|
99
|
+
`domain` getter is the typed accessor for the domain form.
|
|
100
|
+
`storageBackendServiceKey(name)` yields the lifecycle-only key
|
|
101
|
+
`storage.backend.<name>` that domain providers inject so activation
|
|
102
|
+
cannot race backend registration.
|
|
103
|
+
- `storage-json` (`@deepseek-ai/dsh-storage-json`) -- registers backend
|
|
104
|
+
`json` (one human-readable file per unit, or per-record documents).
|
|
105
|
+
- `storage-sqlite` (`@deepseek-ai/dsh-storage-sqlite`) -- registers backend
|
|
106
|
+
`sqlite` (units as JSON documents in one database).
|
|
107
|
+
- `storage-domain` (`@deepseek-ai/dsh-storage-domain`) -- plugin name
|
|
108
|
+
`storage-domain`, `inject: ['storage']`; mounts `DomainFacility` under
|
|
109
|
+
`StorageForms['domain']` and provides `ctx.storageDomain`. `Config` =
|
|
110
|
+
`{ backend: string, routes?: Record<string, string> }` -- the default
|
|
111
|
+
backend plus per-domain overrides. `DomainFacility.open(spec)` opens a
|
|
112
|
+
declared domain over a routed backend (errors: `already-open`,
|
|
113
|
+
`backend-not-found`, `facet-unsupported`, `invalid-record` with an
|
|
114
|
+
optional `backup-and-skip` policy, and backend `version-mismatch` /
|
|
115
|
+
`malformed-medium`); `get(name)` is the untyped lookup; `closeAll()`
|
|
116
|
+
closes everything. `defineDomain` / `domainTable` / `descriptorOf`
|
|
117
|
+
declare specs with zod record schemas; open domains emit
|
|
118
|
+
`domain/changed` events.
|
|
119
|
+
|
|
120
|
+
The domain layer is deliberately generic: schema-validated, change-emitting
|
|
121
|
+
KV with no memory semantics (no budgets, no approval, no audit). The
|
|
122
|
+
workspace subsystem is its first consumer, and
|
|
123
|
+
`session-projection-cache/src/spec.ts` already declares its domain with
|
|
124
|
+
`defineDomain` -- the mounting pattern this proposal now follows.
|
|
125
|
+
|
|
126
|
+
### Realigned adoption framing
|
|
127
|
+
|
|
128
|
+
**From "new ctx.memory seam" to "memory protocol v1 on ctx.storage.domain".**
|
|
129
|
+
|
|
130
|
+
1. **Entry model -> `DomainSpec`.** Declare the memory store once with
|
|
131
|
+
`defineDomain`: tracks become tables, entries become zod-validated
|
|
132
|
+
records keyed by agent key + entry id, `version` carries the protocol
|
|
133
|
+
schema version, and `compatibleVersions` carries the migration list.
|
|
134
|
+
The domain layer's loud `invalid-record` failure (plus the optional
|
|
135
|
+
`backup-and-skip` policy) matches the protocol's "fail loud, never
|
|
136
|
+
silently truncate" stance.
|
|
137
|
+
2. **Medium -> existing backends.** No backend work: open the domain over
|
|
138
|
+
`sqlite` (point updates, WAL) or `json` (portable, human-readable)
|
|
139
|
+
through the domain plugin's `Config.backend` / `Config.routes`. The
|
|
140
|
+
json/sqlite dual backend already exists upstream.
|
|
141
|
+
3. **Service -> thin protocol layer over the domain handle.** The official
|
|
142
|
+
seam contributes the storage spine; the protocol's semantics -- the
|
|
143
|
+
write gate enforced inside the provider, model-invisible
|
|
144
|
+
`writePolicy`, per-track/per-layer budgets, the audit ledger, the
|
|
145
|
+
conformance suite -- stay in the memory layer
|
|
146
|
+
(`MemoryProtocolCore` / `MemoryService`), which owns the `Domain`
|
|
147
|
+
handle returned by `ctx.storage.domain.open(spec)` and keeps the
|
|
148
|
+
approval transport on top of it.
|
|
149
|
+
4. **Naming -> StorageForms / domain vocabulary.** When a service-shaped
|
|
150
|
+
face is wanted, promote the memory facility to a mounted data form via
|
|
151
|
+
declaration merging (`interface StorageForms { memory: MemoryFacility }`,
|
|
152
|
+
the `domain: DomainFacility` precedent), mount it in `apply` with
|
|
153
|
+
`ctx.storage.mount('memory', facility)` (disposal unmounts), and reach
|
|
154
|
+
it as `ctx.storage.memory` -- the `ctx.storage.domain` getter is the
|
|
155
|
+
precedent. Inject `storageBackendServiceKey('sqlite')` so the form
|
|
156
|
+
never activates before its backend (the storage-domain precedent). The
|
|
157
|
+
earlier `ctx.memory` / `ctx.memoryAdapters` vocabulary is superseded
|
|
158
|
+
by `ctx.storage.memory` plus the adapter registry inside the facility.
|
|
159
|
+
|
|
160
|
+
### Realigned migration path
|
|
161
|
+
|
|
162
|
+
1. Declare the memory `DomainSpec` and publish it; existing plugins see no
|
|
163
|
+
behavior change, and the conformance suite remains the acceptance gate.
|
|
164
|
+
2. Route the domain to `sqlite` by default (or `json` for portable stores)
|
|
165
|
+
via the domain plugin `Config` -- no backend code changes.
|
|
166
|
+
3. Land the memory data form (`StorageForms['memory']`) as the official
|
|
167
|
+
provider shape: the protocol core rides the `Domain` handle, keeps the
|
|
168
|
+
approval transport and audit ledger, and mounts/unmounts as an effect.
|
|
169
|
+
4. Register the `memory/*` session event types when the session event
|
|
170
|
+
vocabulary opens up (unchanged from above); conformance suite adoption
|
|
171
|
+
unchanged.
|
|
172
|
+
|
|
173
|
+
Backward compatibility: the earlier "new `ctx.memory` seam" path is a
|
|
174
|
+
subset of this framing -- the protocol still ships and rehearses as a
|
|
175
|
+
community plugin; only the official surface it targets has changed.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-memento",
|
|
3
3
|
"description": "Bounded, layered, approval-gated, auditable cross-session memory for DeepSeek Harness — a capability seam (ctx.memory service + local SQLite provider + memory tool + frozen snapshot injection), not another memory warehouse",
|
|
4
|
-
"version": "0.5.
|
|
4
|
+
"version": "0.5.10",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./index.mjs",
|
|
7
7
|
"types": "./types.d.ts",
|
|
@@ -90,9 +90,7 @@
|
|
|
90
90
|
"credentials:none"
|
|
91
91
|
],
|
|
92
92
|
"compatibility": {
|
|
93
|
-
"dshVersions": [
|
|
94
|
-
"0.1.2-rc.1"
|
|
95
|
-
]
|
|
93
|
+
"dshVersions": ["0.1.2-rc.1","0.1.5-alpha.1"]
|
|
96
94
|
},
|
|
97
95
|
"capability": {
|
|
98
96
|
"id": "memory",
|
|
@@ -109,19 +107,19 @@
|
|
|
109
107
|
},
|
|
110
108
|
"peerDependencies": {
|
|
111
109
|
"@deepseek-ai/cordis": "^4.0.2",
|
|
112
|
-
"@deepseek-ai/dsh-session": ">=0.1.2-rc.1 <0.2.0",
|
|
113
|
-
"@deepseek-ai/dsh-settings": ">=0.1.2-rc.1 <0.2.0",
|
|
114
|
-
"@deepseek-ai/dsh-tools": ">=0.1.2-rc.1 <0.2.0",
|
|
115
|
-
"@deepseek-ai/schemastery": "
|
|
110
|
+
"@deepseek-ai/dsh-session": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
|
|
111
|
+
"@deepseek-ai/dsh-settings": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
|
|
112
|
+
"@deepseek-ai/dsh-tools": ">=0.1.2-rc.1 <0.2.0 || >=0.1.5-alpha.1 <0.2.0",
|
|
113
|
+
"@deepseek-ai/schemastery": "^3.18.2"
|
|
116
114
|
},
|
|
117
115
|
"devDependencies": {
|
|
118
|
-
"@deepseek-ai/dsh-attachment": "0.1.
|
|
116
|
+
"@deepseek-ai/dsh-attachment": "0.1.5-alpha.1",
|
|
119
117
|
"@deepseek-ai/cordis": "^4.0.2",
|
|
120
118
|
"@deepseek-ai/cordis-plugin-include": "^1.0.7",
|
|
121
119
|
"@deepseek-ai/cordis-plugin-loader": "^1.0.3",
|
|
122
|
-
"@deepseek-ai/dsh-session": "0.1.
|
|
123
|
-
"@deepseek-ai/dsh-settings": "0.1.
|
|
124
|
-
"@deepseek-ai/dsh-tools": "0.1.
|
|
120
|
+
"@deepseek-ai/dsh-session": "0.1.5-alpha.1",
|
|
121
|
+
"@deepseek-ai/dsh-settings": "0.1.5-alpha.1",
|
|
122
|
+
"@deepseek-ai/dsh-tools": "0.1.5-alpha.1",
|
|
125
123
|
"@deepseek-ai/schemastery": "^3.18.2",
|
|
126
124
|
"@types/node": "^26.2.0",
|
|
127
125
|
"oxlint": "^0.18.1",
|