@deepseek-ai/dsh-tool-fs 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 +7 -7
- package/README.zh.md +9 -9
- package/lib/index.js +3 -3
- package/lib/types/sandbox.d.ts +1 -1
- package/package.json +30 -30
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/fs/tool-fs/README.md
|
|
5
|
-
README.md:
|
|
6
|
-
README.zh.md:
|
|
5
|
+
README.md: 71dc4134feee6bf1b5d17eef5f62e587653adf6d
|
|
6
|
+
README.zh.md: dff4b838aea4c6fa50a92ce2102bfdd2a96150a5
|
package/README.md
CHANGED
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
English | [中文](README.zh.md)
|
|
4
4
|
|
|
5
|
-
The **model-facing filesystem tools** — `read`, `read_image`, `write`, `edit` — and their **executor**. This is the consumer layer of the filesystem stack: it owns tool names, JSON schemas, argument validation, prompt sections, **read windowing**, and result formatting. It reads/writes/edits through the `ctx.fs` provider contract ([`@deepseek-ai/dsh-fs`](../fs)) **directly**. The freshness/observation policy is contributed by a separate plugin ([`@deepseek-ai/dsh-fs-policy`](../fs-policy)) through the `fs/*` event gate; the tool is not method-coupled to it. Under a confining provider, the shared sandbox-policy service is required for per-session execution and the tool exposes escalation for filesystem mutations.
|
|
5
|
+
The **model-facing filesystem tools** — `read`, `read_image`, `write`, `edit` — and their **executor**. This is the consumer layer of the filesystem stack: it owns tool names, JSON schemas, argument validation, prompt sections, **read windowing**, and result formatting. It reads/writes/edits through the `ctx.fs` provider contract ([`@deepseek-ai/dsh-fs`](../fs)) **directly**. The freshness/observation policy is contributed by a separate plugin ([`@deepseek-ai/dsh-fs-observation-policy`](../fs-observation-policy)) through the `fs/*` event gate; the tool is not method-coupled to it. Under a confining provider, the shared sandbox-policy service is required for per-session execution and the tool exposes escalation for filesystem mutations.
|
|
6
6
|
|
|
7
7
|
```ts ignore-check
|
|
8
8
|
// Default deployment: a ctx.fs provider, the policy plugin, then the tools.
|
|
9
9
|
await ctx.plugin(LocalFileSystem, { cwd: process.cwd() }) // @deepseek-ai/dsh-fs-local
|
|
10
|
-
await ctx.plugin(FsPolicy) // @deepseek-ai/dsh-fs-policy (policy gate)
|
|
10
|
+
await ctx.plugin(FsPolicy) // @deepseek-ai/dsh-fs-observation-policy (policy gate)
|
|
11
11
|
await ctx.plugin(LocalAttachmentStore, { dshHome }) // optional — enables durable read_image results
|
|
12
12
|
await ctx.plugin(ToolFs) // this package — read/write/edit, plus read_image with attachments
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
`@deepseek-ai/dsh-fs-policy` is **optional**: omit it and the tools run against the bare provider (unconditional write/overwrite/edit, no observed-state). A deployment that loads these tools is expected to also load it, so the behavior is read-before-write/edit.
|
|
15
|
+
`@deepseek-ai/dsh-fs-observation-policy` is **optional**: omit it and the tools run against the bare provider (unconditional write/overwrite/edit, no observed-state). A deployment that loads these tools is expected to also load it, so the behavior is read-before-write/edit.
|
|
16
16
|
|
|
17
17
|
`read_image` registers only while a durable `ctx.attachments` service is mounted — without one the deployment cannot commit image bytes, so the tool never appears. Execution additionally requires the exact routed model to declare `image` input (resolved through `ctx.llm.resolveModelInfo` from the session's latest request header, falling back to agent options); an unknown or text-only route gets a refusal result before any filesystem I/O, so a text route's durable history stays free of image blocks.
|
|
18
18
|
|
|
@@ -49,13 +49,13 @@ The tools do **not** inject a policy service or inspect any cache. Each tool res
|
|
|
49
49
|
- **write** — `ctx.waterfall('fs/write-intent', target, exec, () => undefined)` for the optional guard, then `ctx.fs.writeText(target, content, intent)`, then `fs/observed`. (0 stat.)
|
|
50
50
|
- **edit** — `ctx.waterfall('fs/edit-intent', target, exec, () => undefined)` for the optional guard, then `ctx.fs.editText(target, edit, intent)`, then `fs/observed`. (0 stat.)
|
|
51
51
|
|
|
52
|
-
The tool passes `exec` (the tool-execution context) as the opaque `actor` on every dispatch. The default thunks return `undefined` (the unconstrained bare provider). When `@deepseek-ai/dsh-fs-policy` is loaded it occupies the single decision slot — returning `createIfAbsent`/`replaceIfVersion`/`{ version }` or throwing `FS_NOT_OBSERVED` — and records on `fs/observed`. Backend errors (`FsError`) and a thrown `FS_NOT_OBSERVED` flow through `
|
|
52
|
+
The tool passes `exec` (the tool-execution context) as the opaque `actor` on every dispatch. The default thunks return `undefined` (the unconstrained bare provider). When `@deepseek-ai/dsh-fs-observation-policy` is loaded it occupies the single decision slot — returning `createIfAbsent`/`replaceIfVersion`/`{ version }` or throwing `FS_NOT_OBSERVED` — and records on `fs/observed`. Backend errors (`FsError`) and a thrown `FS_NOT_OBSERVED` flow through `ToolRuntime.execute()` and become `isError` tool results with their `{ name, code }` attached.
|
|
53
53
|
|
|
54
54
|
When `ctx.fs.sandboxMode` reports confinement, write/edit advertise `sandbox_permissions` and `justification` and resolve approved retries through `ctx.approval`. The policy owner contributes capability-neutral standing policy; the tool results retain operation-specific denial and retry guidance.
|
|
55
55
|
|
|
56
56
|
## `fs/observed` is fire-and-forget
|
|
57
57
|
|
|
58
|
-
`fs/observed` fires AFTER the read/read_image/write/edit already succeeded, via a plain `ctx.emit`. A listener is contractually a synchronous, side-effect-only recorder (`@deepseek-ai/dsh-fs-policy`'s is a `WeakMap.set`); the tool does not guard the emit, so a listener that throws would surface as the tool's `isError` result — async or fallible observation does not belong on this event.
|
|
58
|
+
`fs/observed` fires AFTER the read/read_image/write/edit already succeeded, via a plain `ctx.emit`. A listener is contractually a synchronous, side-effect-only recorder (`@deepseek-ai/dsh-fs-observation-policy`'s is a `WeakMap.set`); the tool does not guard the emit, so a listener that throws would surface as the tool's `isError` result — async or fallible observation does not belong on this event.
|
|
59
59
|
|
|
60
60
|
`read` opts into concurrent scheduling because its only mutation is the synchronous version recorder. Recorder races fail closed when a later `write` or `edit` re-checks the version under its target lock; both mutation tools remain exclusive. See the [parallel tool-call Agent Note](../../../.agents/notes/implemented/feature/2026-07-10-parallel-tool-call-execution.md).
|
|
61
61
|
|
|
@@ -78,13 +78,13 @@ Use the read tool — not shell commands like cat — to inspect text files. Res
|
|
|
78
78
|
##### Write guidance
|
|
79
79
|
|
|
80
80
|
```markdown
|
|
81
|
-
Use the write tool to create files or completely replace file contents. Existing files are overwritten, so read an existing file first (the default fs-policy requires it) and prefer edit for targeted changes.
|
|
81
|
+
Use the write tool to create files or completely replace file contents. Existing files are overwritten, so read an existing file first (the default fs-observation-policy requires it) and prefer edit for targeted changes.
|
|
82
82
|
```
|
|
83
83
|
|
|
84
84
|
##### Edit guidance
|
|
85
85
|
|
|
86
86
|
```markdown
|
|
87
|
-
Use the edit tool for targeted changes to existing UTF-8 text files. It replaces literal old_string with new_string; by default old_string must appear exactly once. If old_string appears multiple times, provide a more specific old_string or set replace_all to true. Read the file first (the default fs-policy requires it), unless you just created or edited it in this session.
|
|
87
|
+
Use the edit tool for targeted changes to existing UTF-8 text files. It replaces literal old_string with new_string; by default old_string must appear exactly once. If old_string appears multiple times, provide a more specific old_string or set replace_all to true. Read the file first (the default fs-observation-policy requires it), unless you just created or edited it in this session.
|
|
88
88
|
```
|
|
89
89
|
|
|
90
90
|
#### Token effect
|
package/README.zh.md
CHANGED
|
@@ -2,17 +2,17 @@
|
|
|
2
2
|
|
|
3
3
|
[English](README.md) | 中文
|
|
4
4
|
|
|
5
|
-
**面向模型的文件系统工具**(`read`、`read_image`、`write`、`edit`)及其**执行器**。这是文件系统栈的消费方层:拥有工具名称、JSON Schema、参数校验、提示词段、**读取窗口逻辑**和结果格式化。它**直接**通过 `ctx.fs` 提供方约定([`@deepseek-ai/dsh-fs`](../fs))读取/写入/编辑。新鲜度/观察策略由独立插件([`@deepseek-ai/dsh-fs-policy`](../fs-policy))通过 `fs/*` 事件门禁贡献;工具不与其方法耦合。使用施加沙箱限制的提供方时,逐会话执行需要共享沙箱策略服务,工具还会为文件系统变更提供升权路径。
|
|
5
|
+
**面向模型的文件系统工具**(`read`、`read_image`、`write`、`edit`)及其**执行器**。这是文件系统栈的消费方层:拥有工具名称、JSON Schema、参数校验、提示词段、**读取窗口逻辑**和结果格式化。它**直接**通过 `ctx.fs` 提供方约定([`@deepseek-ai/dsh-fs`](../fs))读取/写入/编辑。新鲜度/观察策略由独立插件([`@deepseek-ai/dsh-fs-observation-policy`](../fs-observation-policy))通过 `fs/*` 事件门禁贡献;工具不与其方法耦合。使用施加沙箱限制的提供方时,逐会话执行需要共享沙箱策略服务,工具还会为文件系统变更提供升权路径。
|
|
6
6
|
|
|
7
7
|
```ts ignore-check
|
|
8
8
|
// Default deployment: a ctx.fs provider, the policy plugin, then the tools.
|
|
9
9
|
await ctx.plugin(LocalFileSystem, { cwd: process.cwd() }) // @deepseek-ai/dsh-fs-local
|
|
10
|
-
await ctx.plugin(FsPolicy) // @deepseek-ai/dsh-fs-policy (policy gate)
|
|
10
|
+
await ctx.plugin(FsPolicy) // @deepseek-ai/dsh-fs-observation-policy (policy gate)
|
|
11
11
|
await ctx.plugin(LocalAttachmentStore, { dshHome }) // optional — enables durable read_image results
|
|
12
12
|
await ctx.plugin(ToolFs) // this package — read/write/edit, plus read_image with attachments
|
|
13
13
|
```
|
|
14
14
|
|
|
15
|
-
`@deepseek-ai/dsh-fs-policy` 是**可选的**:省略时,工具直接使用裸提供方(无条件写入/覆盖/编辑,无已观察状态)。加载这些工具的部署也应加载该插件,从而提供写入/编辑前读取行为。
|
|
15
|
+
`@deepseek-ai/dsh-fs-observation-policy` 是**可选的**:省略时,工具直接使用裸提供方(无条件写入/覆盖/编辑,无已观察状态)。加载这些工具的部署也应加载该插件,从而提供写入/编辑前读取行为。
|
|
16
16
|
|
|
17
17
|
`read_image` 只在持久 `ctx.attachments` 服务已挂载时注册:没有它,部署无法持久提交图像字节,工具就不会出现。执行时还要求确切路由的模型声明 `image` 输入(通过 `ctx.llm.resolveModelInfo` 从会话最新请求 header 解析,缺失时回退到 agent 选项);未知或纯文本路由在任何文件系统 I/O 之前就得到拒绝结果,因此文本路由的持久历史不会出现图像块。
|
|
18
18
|
|
|
@@ -49,15 +49,15 @@ await ctx.plugin(ToolFs) // this package — re
|
|
|
49
49
|
- **write**:调用 `ctx.waterfall('fs/write-intent', target, exec, () => undefined)` 取得可选防护,然后调用 `ctx.fs.writeText(target, content, intent)`,再发出 `fs/observed`。(0 次 stat。)
|
|
50
50
|
- **edit**:调用 `ctx.waterfall('fs/edit-intent', target, exec, () => undefined)` 取得可选防护,然后调用 `ctx.fs.editText(target, edit, intent)`,再发出 `fs/observed`。(0 次 stat。)
|
|
51
51
|
|
|
52
|
-
工具在每次分派中把 `exec`(工具执行上下文)作为不透明 `actor` 传入。默认 thunk 返回 `undefined`(不受约束的裸提供方)。加载 `@deepseek-ai/dsh-fs-policy` 后,它会占用单个决策槽:返回 `createIfAbsent`/`replaceIfVersion`/`{ version }` 或抛出 `FS_NOT_OBSERVED`,并在 `fs/observed` 时记录。后端错误(`FsError`)和抛出的 `FS_NOT_OBSERVED` 会流经 `
|
|
52
|
+
工具在每次分派中把 `exec`(工具执行上下文)作为不透明 `actor` 传入。默认 thunk 返回 `undefined`(不受约束的裸提供方)。加载 `@deepseek-ai/dsh-fs-observation-policy` 后,它会占用单个决策槽:返回 `createIfAbsent`/`replaceIfVersion`/`{ version }` 或抛出 `FS_NOT_OBSERVED`,并在 `fs/observed` 时记录。后端错误(`FsError`)和抛出的 `FS_NOT_OBSERVED` 会流经 `ToolRuntime.execute()`,变成 `isError` 工具结果,并附带 `{ name, code }`。
|
|
53
53
|
|
|
54
|
-
当 `ctx.fs.sandboxMode` 表明提供方施加沙箱限制时,write/edit 会公开 `sandbox_permissions` 与 `justification`,并通过 `ctx.approval`
|
|
54
|
+
当 `ctx.fs.sandboxMode` 表明提供方施加沙箱限制时,write/edit 会公开 `sandbox_permissions` 与 `justification`,并通过 `ctx.approval` 处理获批后的重试。策略归属方会贡献与具体能力无关的常驻策略;工具结果仍保留针对具体操作的拒绝与重试引导。
|
|
55
55
|
|
|
56
56
|
## `fs/observed` 发后即忘
|
|
57
57
|
|
|
58
|
-
`fs/observed` 在 read/read_image/write/edit 已经成功之后,通过普通 `ctx.emit` 发出。监听器的约定是同步且只有副作用的记录器(`@deepseek-ai/dsh-fs-policy` 使用 `WeakMap.set`);工具不保护这次发出,因此监听器抛出会作为工具的 `isError` 结果出现。异步或可能失败的观察不属于该事件。
|
|
58
|
+
`fs/observed` 在 read/read_image/write/edit 已经成功之后,通过普通 `ctx.emit` 发出。监听器的约定是同步且只有副作用的记录器(`@deepseek-ai/dsh-fs-observation-policy` 使用 `WeakMap.set`);工具不保护这次发出,因此监听器抛出会作为工具的 `isError` 结果出现。异步或可能失败的观察不属于该事件。
|
|
59
59
|
|
|
60
|
-
`read`
|
|
60
|
+
`read` 允许并发调度,因为它唯一会改变状态的操作是同步记录版本。稍后的 `write` 或 `edit` 会在目标锁内重新检查版本,因此即使记录器发生竞态,系统也会安全地拒绝操作;两个变更工具仍保持互斥。见[并行工具调用 Agent Note](../../../.agents/notes/implemented/feature/2026-07-10-parallel-tool-call-execution.md)。
|
|
61
61
|
|
|
62
62
|
包根目录只导出 Cordis 插件约定(`name`、`inject`、`Config` 和 `apply`)。读取渲染(行窗口与输出格式化)位于 `src/read-render.ts`(不依赖 Cordis,单独进行单元测试);`src/read.ts`/`read-image.ts`/`write.ts`/`edit.ts` 是工具执行器,`src/index.ts` 负责组合。
|
|
63
63
|
|
|
@@ -78,13 +78,13 @@ Use the read tool — not shell commands like cat — to inspect text files. Res
|
|
|
78
78
|
##### Write 指导
|
|
79
79
|
|
|
80
80
|
```markdown
|
|
81
|
-
Use the write tool to create files or completely replace file contents. Existing files are overwritten, so read an existing file first (the default fs-policy requires it) and prefer edit for targeted changes.
|
|
81
|
+
Use the write tool to create files or completely replace file contents. Existing files are overwritten, so read an existing file first (the default fs-observation-policy requires it) and prefer edit for targeted changes.
|
|
82
82
|
```
|
|
83
83
|
|
|
84
84
|
##### Edit 指导
|
|
85
85
|
|
|
86
86
|
```markdown
|
|
87
|
-
Use the edit tool for targeted changes to existing UTF-8 text files. It replaces literal old_string with new_string; by default old_string must appear exactly once. If old_string appears multiple times, provide a more specific old_string or set replace_all to true. Read the file first (the default fs-policy requires it), unless you just created or edited it in this session.
|
|
87
|
+
Use the edit tool for targeted changes to existing UTF-8 text files. It replaces literal old_string with new_string; by default old_string must appear exactly once. If old_string appears multiple times, provide a more specific old_string or set replace_all to true. Read the file first (the default fs-observation-policy requires it), unless you just created or edited it in this session.
|
|
88
88
|
```
|
|
89
89
|
|
|
90
90
|
#### Token 影响
|
package/lib/index.js
CHANGED
|
@@ -599,7 +599,7 @@ function applyWriteTool(ctx, sandbox) {
|
|
|
599
599
|
ctx.systemPrompt.section({
|
|
600
600
|
name: "tool:write",
|
|
601
601
|
order: 101,
|
|
602
|
-
text: "Use the write tool to create files or completely replace file contents. Existing files are overwritten, so read an existing file first (the default fs-policy requires it) and prefer edit for targeted changes."
|
|
602
|
+
text: "Use the write tool to create files or completely replace file contents. Existing files are overwritten, so read an existing file first (the default fs-observation-policy requires it) and prefer edit for targeted changes."
|
|
603
603
|
});
|
|
604
604
|
ctx.tools.register(defineTool({
|
|
605
605
|
name: "write",
|
|
@@ -744,7 +744,7 @@ function applyEditTool(ctx, sandbox) {
|
|
|
744
744
|
ctx.systemPrompt.section({
|
|
745
745
|
name: "tool:edit",
|
|
746
746
|
order: 102,
|
|
747
|
-
text: "Use the edit tool for targeted changes to existing UTF-8 text files. It replaces literal old_string with new_string; by default old_string must appear exactly once. If old_string appears multiple times, provide a more specific old_string or set replace_all to true. Read the file first (the default fs-policy requires it), unless you just created or edited it in this session."
|
|
747
|
+
text: "Use the edit tool for targeted changes to existing UTF-8 text files. It replaces literal old_string with new_string; by default old_string must appear exactly once. If old_string appears multiple times, provide a more specific old_string or set replace_all to true. Read the file first (the default fs-observation-policy requires it), unless you just created or edited it in this session."
|
|
748
748
|
});
|
|
749
749
|
ctx.tools.register(defineTool({
|
|
750
750
|
name: "edit",
|
|
@@ -1152,7 +1152,7 @@ var FsSandboxController = class {
|
|
|
1152
1152
|
* Map a thrown provider error for the model: a `FS_SANDBOX_DENIED` becomes a
|
|
1153
1153
|
* `FsError` whose text is the shared `[sandbox: …]` denial marker plus the
|
|
1154
1154
|
* same-turn escalation hint, so a policy denial reads identically to bash's
|
|
1155
|
-
* WHILE keeping the structured `FS_SANDBOX_DENIED` code — `
|
|
1155
|
+
* WHILE keeping the structured `FS_SANDBOX_DENIED` code — `ToolRuntime`
|
|
1156
1156
|
* populates `result.error` only for `HarnessError` instances, so a plain
|
|
1157
1157
|
* `Error` would strip the code retry/observers key off. Any other error
|
|
1158
1158
|
* passes through unchanged. A `FS_SANDBOX_DENIED` only arises under a
|
package/lib/types/sandbox.d.ts
CHANGED
|
@@ -66,7 +66,7 @@ export declare class FsSandboxController {
|
|
|
66
66
|
* Map a thrown provider error for the model: a `FS_SANDBOX_DENIED` becomes a
|
|
67
67
|
* `FsError` whose text is the shared `[sandbox: …]` denial marker plus the
|
|
68
68
|
* same-turn escalation hint, so a policy denial reads identically to bash's
|
|
69
|
-
* WHILE keeping the structured `FS_SANDBOX_DENIED` code — `
|
|
69
|
+
* WHILE keeping the structured `FS_SANDBOX_DENIED` code — `ToolRuntime`
|
|
70
70
|
* populates `result.error` only for `HarnessError` instances, so a plain
|
|
71
71
|
* `Error` would strip the code retry/observers key off. Any other error
|
|
72
72
|
* passes through unchanged. A `FS_SANDBOX_DENIED` only arises under a
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepseek-ai/dsh-tool-fs",
|
|
3
3
|
"description": "Model-facing filesystem tools (read, write, edit) over the DeepSeek Harness filesystem seam (ctx.fs)",
|
|
4
|
-
"version": "0.0.1-rc.
|
|
4
|
+
"version": "0.0.1-rc.5",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "restricted"
|
|
7
7
|
},
|
|
@@ -33,38 +33,38 @@
|
|
|
33
33
|
"license": "BSD-3-Clause",
|
|
34
34
|
"dependencies": {
|
|
35
35
|
"diff": "^9.0.0",
|
|
36
|
-
"@deepseek-ai/schemastery": "^3.18.1-rc.
|
|
36
|
+
"@deepseek-ai/schemastery": "^3.18.1-rc.4"
|
|
37
37
|
},
|
|
38
38
|
"peerDependencies": {
|
|
39
|
-
"@deepseek-ai/dsh-
|
|
40
|
-
"@deepseek-ai/dsh-invariants": "^0.0.1-rc.
|
|
41
|
-
"@deepseek-ai/dsh-
|
|
42
|
-
"@deepseek-ai/dsh-
|
|
43
|
-
"@deepseek-ai/dsh-sandbox
|
|
44
|
-
"@deepseek-ai/dsh-
|
|
45
|
-
"@deepseek-ai/dsh-
|
|
46
|
-
"@deepseek-ai/dsh-tools": "^0.0.1-rc.
|
|
47
|
-
"@deepseek-ai/dsh-
|
|
48
|
-
"@deepseek-ai/
|
|
49
|
-
"@deepseek-ai/
|
|
39
|
+
"@deepseek-ai/dsh-fs": "^0.0.1-rc.5",
|
|
40
|
+
"@deepseek-ai/dsh-invariants": "^0.0.1-rc.5",
|
|
41
|
+
"@deepseek-ai/dsh-attachment": "^0.0.1-rc.5",
|
|
42
|
+
"@deepseek-ai/dsh-llm": "^0.0.1-rc.5",
|
|
43
|
+
"@deepseek-ai/dsh-sandbox": "^0.0.1-rc.5",
|
|
44
|
+
"@deepseek-ai/dsh-sandbox-policy": "^0.0.1-rc.5",
|
|
45
|
+
"@deepseek-ai/dsh-session": "^0.0.1-rc.5",
|
|
46
|
+
"@deepseek-ai/dsh-tools": "^0.0.1-rc.5",
|
|
47
|
+
"@deepseek-ai/dsh-system-prompt": "^0.0.1-rc.5",
|
|
48
|
+
"@deepseek-ai/dsh-user-approval": "^0.0.1-rc.5",
|
|
49
|
+
"@deepseek-ai/cordis": "^4.0.1-rc.4"
|
|
50
50
|
},
|
|
51
51
|
"devDependencies": {
|
|
52
|
-
"@deepseek-ai/dsh-agent": "^0.0.1-rc.
|
|
53
|
-
"@deepseek-ai/dsh-agent-loop": "^0.0.1-rc.
|
|
54
|
-
"@deepseek-ai/dsh-agent-loop-testkit": "^0.0.1-rc.
|
|
55
|
-
"@deepseek-ai/dsh-attachment": "^0.0.1-rc.
|
|
56
|
-
"@deepseek-ai/dsh-fs": "^0.0.1-rc.
|
|
57
|
-
"@deepseek-ai/dsh-fs-
|
|
58
|
-
"@deepseek-ai/dsh-
|
|
59
|
-
"@deepseek-ai/dsh-
|
|
60
|
-
"@deepseek-ai/dsh-llm-deepseek": "^0.0.1-rc.
|
|
61
|
-
"@deepseek-ai/dsh-sandbox": "^0.0.1-rc.
|
|
62
|
-
"@deepseek-ai/dsh-sandbox-policy": "^0.0.1-rc.
|
|
63
|
-
"@deepseek-ai/dsh-session": "^0.0.1-rc.
|
|
64
|
-
"@deepseek-ai/dsh-system-prompt": "^0.0.1-rc.
|
|
65
|
-
"@deepseek-ai/dsh-tools": "^0.0.1-rc.
|
|
66
|
-
"@deepseek-ai/dsh-user-approval": "^0.0.1-rc.
|
|
67
|
-
"@deepseek-ai/cordis": "^4.0.1-rc.
|
|
68
|
-
"@deepseek-ai/dsh-
|
|
52
|
+
"@deepseek-ai/dsh-agent": "^0.0.1-rc.5",
|
|
53
|
+
"@deepseek-ai/dsh-agent-loop": "^0.0.1-rc.5",
|
|
54
|
+
"@deepseek-ai/dsh-agent-loop-testkit": "^0.0.1-rc.5",
|
|
55
|
+
"@deepseek-ai/dsh-attachment": "^0.0.1-rc.5",
|
|
56
|
+
"@deepseek-ai/dsh-fs": "^0.0.1-rc.5",
|
|
57
|
+
"@deepseek-ai/dsh-fs-observation-policy": "^0.0.1-rc.5",
|
|
58
|
+
"@deepseek-ai/dsh-invariants": "^0.0.1-rc.5",
|
|
59
|
+
"@deepseek-ai/dsh-llm": "^0.0.1-rc.5",
|
|
60
|
+
"@deepseek-ai/dsh-llm-deepseek": "^0.0.1-rc.5",
|
|
61
|
+
"@deepseek-ai/dsh-sandbox": "^0.0.1-rc.5",
|
|
62
|
+
"@deepseek-ai/dsh-sandbox-policy": "^0.0.1-rc.5",
|
|
63
|
+
"@deepseek-ai/dsh-session": "^0.0.1-rc.5",
|
|
64
|
+
"@deepseek-ai/dsh-system-prompt": "^0.0.1-rc.5",
|
|
65
|
+
"@deepseek-ai/dsh-tools": "^0.0.1-rc.5",
|
|
66
|
+
"@deepseek-ai/dsh-user-approval": "^0.0.1-rc.5",
|
|
67
|
+
"@deepseek-ai/cordis": "^4.0.1-rc.4",
|
|
68
|
+
"@deepseek-ai/dsh-fs-local": "^0.0.1-rc.5"
|
|
69
69
|
}
|
|
70
70
|
}
|