@deepseek-ai/dsh-spill 0.0.1-rc.2 → 0.0.1-rc.5
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/README.i18n.yaml +2 -2
- package/README.md +2 -2
- package/README.zh.md +5 -5
- package/lib/index.js +1 -1
- package/lib/types/index.d.ts +1 -1
- package/package.json +11 -11
package/README.i18n.yaml
CHANGED
|
@@ -2,5 +2,5 @@
|
|
|
2
2
|
# side as of the last confirmed-consistent state. Both languages carry equal authority;
|
|
3
3
|
# after editing either side, bring the other along and re-record with:
|
|
4
4
|
# pnpm run verify-translation-pairing --write packages/spill/spill/README.md
|
|
5
|
-
README.md:
|
|
6
|
-
README.zh.md:
|
|
5
|
+
README.md: 28b646d5b0bb82d2539e78a5c623b60024e1d60a
|
|
6
|
+
README.zh.md: b4caafc6eb134b76c1fb4a6f7f27fd6d818e0733
|
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@ This package is one third of the spill capability, split so each concern evolves
|
|
|
12
12
|
| `@deepseek-ai/dsh-spill-local` | Service provider: private session-scoped files on the host filesystem |
|
|
13
13
|
| `@deepseek-ai/dsh-spill-policy` | Consumer: the tool-result policy that spills oversized final results |
|
|
14
14
|
|
|
15
|
-
The split mirrors the
|
|
15
|
+
The split mirrors the shell/fs seams. A future remote or virtual backend (e.g. a `spill://…` URI, a database key, or a backend-specific retrieval tool) implements this Service Definition without touching the policy plugin.
|
|
16
16
|
|
|
17
17
|
## Service API (`ctx.spillStore`)
|
|
18
18
|
|
|
@@ -20,7 +20,7 @@ The split mirrors the bash/fs seams. A future remote or virtual backend (e.g. a
|
|
|
20
20
|
|---|---|
|
|
21
21
|
| `saveText(input)` | Persist `input.content` verbatim; resolves with a `SpillRef` (opaque locator, exact bytes written, and retrieval hint). **Rejects on a real storage failure** (permissions, ENOSPC, backend unavailable) — the caller decides how to degrade. |
|
|
22
22
|
|
|
23
|
-
Storage is grouped by the request's `owner` session as a save-time namespace; the backend chooses its own private representation and may derive names from — never trust as a path — the caller's `suggestedName`. The seam owns storage only: NO retention policy (that is [`@deepseek-ai/dsh-retention`](../../util/retention)), NO tool-result replacement (that is `@deepseek-ai/dsh-spill-policy`), NO retrieval/search API (the backend's `retrievalHint` tells the model what to do with the locator).
|
|
23
|
+
Storage is grouped by the request's `owner` session as a save-time namespace; the backend chooses its own private representation and may derive names from — never trust as a path — the caller's `suggestedName`. The seam owns storage only: NO retention policy (that is [`@deepseek-ai/dsh-output-retention`](../../util/output-retention)), NO tool-result replacement (that is `@deepseek-ai/dsh-spill-policy`), NO retrieval/search API (the backend's `retrievalHint` tells the model what to do with the locator).
|
|
24
24
|
|
|
25
25
|
## Vocabulary
|
|
26
26
|
|
package/README.zh.md
CHANGED
|
@@ -12,19 +12,19 @@
|
|
|
12
12
|
| `@deepseek-ai/dsh-spill-local` | Service provider:位于宿主文件系统中的私有会话级文件 |
|
|
13
13
|
| `@deepseek-ai/dsh-spill-policy` | Consumer:对过大最终结果执行 spill 的工具结果策略 |
|
|
14
14
|
|
|
15
|
-
这种拆分方式与
|
|
15
|
+
这种拆分方式与 shell/fs seam 相同。未来的远程或虚拟后端(例如 `spill://…` URI、数据库键或后端专用取回工具)可实现此 Service Definition,无需修改策略插件。
|
|
16
16
|
|
|
17
17
|
## 服务 API(`ctx.spillStore`)
|
|
18
18
|
|
|
19
19
|
| 成员 | 语义 |
|
|
20
20
|
|---|---|
|
|
21
|
-
| `saveText(input)` | 逐字保存 `input.content`;成功时返回 `SpillRef
|
|
21
|
+
| `saveText(input)` | 逐字保存 `input.content`;成功时返回 `SpillRef`(不透明定位信息、写入的精确字节数和取回指引)。**发生真实存储故障时,调用会以拒绝状态结束**(权限、ENOSPC、后端不可用);由调用方决定如何降级。 |
|
|
22
22
|
|
|
23
|
-
存储操作以请求的 `owner` 会话作为保存时命名空间进行分组;后端自行选择私有表示,并可以从调用方的 `suggestedName` 派生名称,但绝不能将其当作可信路径。该 seam 只负责存储:不提供保留策略(由 [`@deepseek-ai/dsh-retention`](../../util/retention) 负责),不替换工具结果(由 `@deepseek-ai/dsh-spill-policy` 负责),也不提供取回/搜索 API(后端的 `retrievalHint` 会告诉模型如何使用定位信息)。
|
|
23
|
+
存储操作以请求的 `owner` 会话作为保存时命名空间进行分组;后端自行选择私有表示,并可以从调用方的 `suggestedName` 派生名称,但绝不能将其当作可信路径。该 seam 只负责存储:不提供保留策略(由 [`@deepseek-ai/dsh-output-retention`](../../util/output-retention) 负责),不替换工具结果(由 `@deepseek-ai/dsh-spill-policy` 负责),也不提供取回/搜索 API(后端的 `retrievalHint` 会告诉模型如何使用定位信息)。
|
|
24
24
|
|
|
25
25
|
## 词汇
|
|
26
26
|
|
|
27
|
-
`SaveTextSpill`(owner、source、suggestedName、content)是请求;`SpillRef`(locator、bytes、retrievalHint)是结果。`SpillLocator` 是[带品牌类型](../../util/brand)的值,并以不透明字符串的形式呈现给模型;对 `dsh-spill-local` 而言它是本地路径,但未来的后端可以返回 URI、键或命令 token,无需修改策略/工具消费方。`SpillOwner.sessionId` 是保存时存储命名空间:fork
|
|
27
|
+
`SaveTextSpill`(owner、source、suggestedName、content)是请求;`SpillRef`(locator、bytes、retrievalHint)是结果。`SpillLocator` 是[带品牌类型](../../util/brand)的值,并以不透明字符串的形式呈现给模型;对 `dsh-spill-local` 而言它是本地路径,但未来的后端可以返回 URI、键或命令 token,无需修改策略/工具消费方。`SpillOwner.sessionId` 是保存时存储命名空间:fork 后的会话会从种子日志继承现有定位信息,无需复制或更改其归属;fork 后新产生的 spill 使用子会话 id。`SpillSource` 记录产生该 spill 的 `toolName`、`callId` 和 `label`,供后端命名和检查使用,不用于访问控制。完整约定见 `src/types.ts`。
|
|
28
28
|
|
|
29
29
|
设计原理见[工具输出 spill Agent Note](../../../.agents/notes/implemented/architecture/2026-07-08-tool-output-spill-files.md),其中说明了为什么创建操作应由运行时 spill seam 而非面向模型的 `write` 工具承担。
|
|
30
30
|
|
|
@@ -39,4 +39,4 @@
|
|
|
39
39
|
## 已知限制与暂缓事项
|
|
40
40
|
|
|
41
41
|
- **该 seam 没有取回或删除 API**:消费方只能渲染后端的定位信息与指引;生命周期和访问语义仍由后端自行决定。
|
|
42
|
-
- **存储不等于访问控制**:`SpillOwner`
|
|
42
|
+
- **存储不等于访问控制**:`SpillOwner` 会区分写入命名空间,但不会授予通过定位信息读取内容的权限;每个后端和取回消费方都必须自行强制执行访问边界。
|
package/lib/index.js
CHANGED
|
@@ -26,7 +26,7 @@ function SpillLocator(locator) {
|
|
|
26
26
|
* `@deepseek-ai/dsh-spill-local` (host filesystem) is the first.
|
|
27
27
|
*
|
|
28
28
|
* The Service Definition is deliberately minimal: `saveText` and nothing else. It owns NO
|
|
29
|
-
* retention policy (that is `@deepseek-ai/dsh-retention`), NO tool-result
|
|
29
|
+
* retention policy (that is `@deepseek-ai/dsh-output-retention`), NO tool-result
|
|
30
30
|
* replacement (that is `@deepseek-ai/dsh-spill-policy`), and NO retrieval or
|
|
31
31
|
* search API. The backend supplies the locator and retrieval hint appropriate
|
|
32
32
|
* for its storage substrate.
|
package/lib/types/index.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* `@deepseek-ai/dsh-spill-local` (host filesystem) is the first.
|
|
7
7
|
*
|
|
8
8
|
* The Service Definition is deliberately minimal: `saveText` and nothing else. It owns NO
|
|
9
|
-
* retention policy (that is `@deepseek-ai/dsh-retention`), NO tool-result
|
|
9
|
+
* retention policy (that is `@deepseek-ai/dsh-output-retention`), NO tool-result
|
|
10
10
|
* replacement (that is `@deepseek-ai/dsh-spill-policy`), and NO retrieval or
|
|
11
11
|
* search API. The backend supplies the locator and retrieval hint appropriate
|
|
12
12
|
* for its storage substrate.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepseek-ai/dsh-spill",
|
|
3
3
|
"description": "Abstract spill storage seam (ctx.spillStore) for the DeepSeek Harness — save oversized tool text and return a retrieval locator",
|
|
4
|
-
"version": "0.0.1-rc.
|
|
4
|
+
"version": "0.0.1-rc.5",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "restricted"
|
|
7
7
|
},
|
|
@@ -32,17 +32,17 @@
|
|
|
32
32
|
],
|
|
33
33
|
"license": "BSD-3-Clause",
|
|
34
34
|
"peerDependencies": {
|
|
35
|
-
"@deepseek-ai/dsh-
|
|
36
|
-
"@deepseek-ai/dsh-
|
|
37
|
-
"@deepseek-ai/dsh-
|
|
38
|
-
"@deepseek-ai/
|
|
39
|
-
"@deepseek-ai/
|
|
35
|
+
"@deepseek-ai/dsh-brand": "^0.0.1-rc.5",
|
|
36
|
+
"@deepseek-ai/dsh-llm": "^0.0.1-rc.5",
|
|
37
|
+
"@deepseek-ai/dsh-invariants": "^0.0.1-rc.5",
|
|
38
|
+
"@deepseek-ai/cordis": "^4.0.1-rc.4",
|
|
39
|
+
"@deepseek-ai/dsh-session": "^0.0.1-rc.5"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@deepseek-ai/dsh-invariants": "^0.0.1-rc.
|
|
43
|
-
"@deepseek-ai/dsh-
|
|
44
|
-
"@deepseek-ai/dsh-
|
|
45
|
-
"@deepseek-ai/dsh-session": "^0.0.1-rc.
|
|
46
|
-
"@deepseek-ai/cordis": "^4.0.1-rc.
|
|
42
|
+
"@deepseek-ai/dsh-invariants": "^0.0.1-rc.5",
|
|
43
|
+
"@deepseek-ai/dsh-brand": "^0.0.1-rc.5",
|
|
44
|
+
"@deepseek-ai/dsh-llm": "^0.0.1-rc.5",
|
|
45
|
+
"@deepseek-ai/dsh-session": "^0.0.1-rc.5",
|
|
46
|
+
"@deepseek-ai/cordis": "^4.0.1-rc.4"
|
|
47
47
|
}
|
|
48
48
|
}
|