@deepseek-ai/dsh-tool-fs 0.1.2-alpha.5 → 0.1.3-alpha.2
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 +4 -4
- package/README.zh.md +4 -4
- package/lib/index.js +18 -23
- package/lib/types/error.d.ts +11 -12
- package/package.json +27 -27
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: 6da984ff436f3515b4798ddb47e3a15466672f9e
|
|
6
|
+
README.zh.md: e4d1ef8483c2e644f2e6308e1965d87773278515
|
package/README.md
CHANGED
|
@@ -71,7 +71,7 @@ With the policy plugin mounted, `write` and `edit` obtain their guard from the `
|
|
|
71
71
|
|
|
72
72
|
### Failures and recovery
|
|
73
73
|
|
|
74
|
-
Failures are normalized as `Error: <message>` with a structured code preserved for callers. Stable messages include `file_path must be a non-empty string`, `limit must be less than or equal to <max>`, `cannot read "<path>": not found`, `cannot read "<path>": not a regular file`, and the image-route refusal `cannot read "<path>" as an image: model "<model>" does not declare image input; switch to an image-capable model to read images`.
|
|
74
|
+
Failures are normalized as `Error: <message>` with a structured code preserved for callers. Stable messages include `file_path must be a non-empty string`, `limit must be less than or equal to <max>`, `cannot read "<path>": not found`, `cannot read "<path>": not a regular file`, and the image-route refusal `cannot read "<path>" as an image: model "<model>" does not declare image input; switch to an image-capable model to read images`. `FS_NOT_OBSERVED` is normalized to `cannot modify "<path>": file has not been read — read the file, then retry`, independent of whether the policy or provider rejected the operation; `FS_STALE_VERSION` retains the provider's reason and appends `— re-read the file, then retry`. After the reread confirms absence, `edit` reports `FS_NOT_FOUND` instead of repeating a stale remedy, while `write` uses guarded creation.
|
|
75
75
|
|
|
76
76
|
-----
|
|
77
77
|
|
|
@@ -98,7 +98,7 @@ The tools are the executor; policy is an event gate. The tools inject no policy
|
|
|
98
98
|
| [`src/edit.ts`](src/edit.ts) | `edit` executor: intent waterfall, literal edit, observation |
|
|
99
99
|
| [`src/read-render.ts`](src/read-render.ts) | Cordis-free windowing and envelope formatting |
|
|
100
100
|
| [`src/sandbox.ts`](src/sandbox.ts) | Escalation API shared by `write`/`edit`: policy resolution and denial-marker mapping |
|
|
101
|
-
| [`src/error.ts`](src/error.ts) |
|
|
101
|
+
| [`src/error.ts`](src/error.ts) | Stable model-facing diagnostics for guarded-mutation failures |
|
|
102
102
|
|
|
103
103
|
### Per-tool flow
|
|
104
104
|
|
|
@@ -221,7 +221,7 @@ Append-only; newly visible content follows the reusable request prefix and does
|
|
|
221
221
|
|
|
222
222
|
#### What the model sees
|
|
223
223
|
|
|
224
|
-
Failures are normalized as `Error: <message>`. This package's stable validation and read messages are `file_path must be a non-empty string`, `limit must be less than or equal to <max>`, `old_string must be a non-empty string`, `old_string and new_string must differ`, `cannot read "<path>": not found`, `cannot read "<path>": not a regular file`, `offset <offset> is out of range for "<path>" (<total> lines)`, `cannot read "<path>": the <ext> extension does not declare a supported image format; read_image accepts PNG/JPEG/WebP/GIF files, including extension-less files in those formats`, `cannot read "<path>": the file content is not a supported image format; read_image accepts PNG/JPEG/WebP/GIF`, `cannot read "<path>": the bytes do not decode as a supported PNG/JPEG/WebP/GIF image; the file may be truncated or corrupt`, `cannot read "<path>" as an image: model "<model>" does not declare image input; switch to an image-capable model to read images`, and the mismatch repair `cannot read "<path>": the <ext> extension declares <type>, but the bytes use a different image format; rename the file to match its actual format if it is PNG/JPEG/WebP/GIF, or convert it to one of those formats` (an extension-less mismatch reports `cannot read "<path>": the file signature claims <type>, but the bytes decode as a different image format; the file may be corrupt`). A failed 16-bit conversion reports `cannot read "<path>": the 16-bit PNG could not be converted to the normalized 8-bit sRGB form; convert it to an 8-bit PNG/JPEG/WebP and retry`. Provider and policy templates are quoted in their package READMEs.
|
|
224
|
+
Failures are normalized as `Error: <message>`. This package's stable validation and read messages are `file_path must be a non-empty string`, `limit must be less than or equal to <max>`, `old_string must be a non-empty string`, `old_string and new_string must differ`, `cannot read "<path>": not found`, `cannot read "<path>": not a regular file`, `offset <offset> is out of range for "<path>" (<total> lines)`, `cannot read "<path>": the <ext> extension does not declare a supported image format; read_image accepts PNG/JPEG/WebP/GIF files, including extension-less files in those formats`, `cannot read "<path>": the file content is not a supported image format; read_image accepts PNG/JPEG/WebP/GIF`, `cannot read "<path>": the bytes do not decode as a supported PNG/JPEG/WebP/GIF image; the file may be truncated or corrupt`, `cannot read "<path>" as an image: model "<model>" does not declare image input; switch to an image-capable model to read images`, and the mismatch repair `cannot read "<path>": the <ext> extension declares <type>, but the bytes use a different image format; rename the file to match its actual format if it is PNG/JPEG/WebP/GIF, or convert it to one of those formats` (an extension-less mismatch reports `cannot read "<path>": the file signature claims <type>, but the bytes decode as a different image format; the file may be corrupt`). A failed 16-bit conversion reports `cannot read "<path>": the 16-bit PNG could not be converted to the normalized 8-bit sRGB form; convert it to an 8-bit PNG/JPEG/WebP and retry`. Provider and policy templates are quoted in their package READMEs. The model-facing error wrapper normalizes every `FS_NOT_OBSERVED` source to `cannot modify "<path>": file has not been read — read the file, then retry`; `FS_STALE_VERSION` keeps the provider's reason and adds `— re-read the file, then retry`. Both retain the structured error code and original cause. After that reread confirms absence, `edit` reports `FS_NOT_FOUND` instead of repeating a stale remedy, while `write` uses guarded creation.
|
|
225
225
|
|
|
226
226
|
#### Token effect
|
|
227
227
|
|
|
@@ -242,7 +242,7 @@ These limits define when the tool suite is a poor fit or needs special operation
|
|
|
242
242
|
- **`read` handles UTF-8 text files only** — images use the separate `read_image` tool; PDF, audio, and video remain deferred. A directory target is `FS_NOT_REGULAR_FILE`.
|
|
243
243
|
- **Extension-declared media type** — an extension selects the declared type and the attachment store's magic-byte validation stays authoritative; a correctly formatted image under a wrong extension is refused with the rename remedy rather than sniffed. Only a path with no extension is identified from its file signature.
|
|
244
244
|
- **Object paths re-enter source admission** — `read_image` on a normalized attachment object re-admits its bytes as a new source, so a deployment whose `maxImageBytes`/`maxMessageImageBytes` sit below the normalized-image byte budget can refuse an object path that `ctx.attachments.readImage` still serves; shipped defaults keep the normalized budget (4 MiB) far under the source caps (20 MiB).
|
|
245
|
-
- **
|
|
245
|
+
- **Inline image preview rides the UI composition** — the tool-result card renders the image through the browser's `tool.call.images` slot, which the attachment presentation plugin fills; a UI without that plugin shows the result's envelope text instead.
|
|
246
246
|
- **No attachment-region tool** — an agent may crop an image through another available tool when it has a filesystem path; a pasted or dragged image without a path cannot be re-read at higher resolution.
|
|
247
247
|
- **No timeout surface** — `read`/`write`/`edit` take no timeout argument and declare no timeout budget; cancellation rides `exec.signal` only ([provider rationale](../README.md)).
|
|
248
248
|
|
package/README.zh.md
CHANGED
|
@@ -71,7 +71,7 @@ kind: "package-reference"
|
|
|
71
71
|
|
|
72
72
|
### 失败与恢复
|
|
73
73
|
|
|
74
|
-
失败被规范化为 `Error: <message>`,并为调用方保留结构化错误码。稳定消息包括 `file_path must be a non-empty string`、`limit must be less than or equal to <max>`、`cannot read "<path>": not found`、`cannot read "<path>": not a regular file`,以及图像路由拒绝 `cannot read "<path>" as an image: model "<model>" does not declare image input; switch to an image-capable model to read images
|
|
74
|
+
失败被规范化为 `Error: <message>`,并为调用方保留结构化错误码。稳定消息包括 `file_path must be a non-empty string`、`limit must be less than or equal to <max>`、`cannot read "<path>": not found`、`cannot read "<path>": not a regular file`,以及图像路由拒绝 `cannot read "<path>" as an image: model "<model>" does not declare image input; switch to an image-capable model to read images`。无论拒绝来自策略还是提供方,`FS_NOT_OBSERVED` 都规范化为 `cannot modify "<path>": file has not been read — read the file, then retry`;`FS_STALE_VERSION` 保留提供方原因并追加 `— re-read the file, then retry`。该次重新读取确认缺失后,`edit` 报告 `FS_NOT_FOUND` 而不会重复陈旧恢复指令,`write` 则使用防护创建。
|
|
75
75
|
|
|
76
76
|
-----
|
|
77
77
|
|
|
@@ -98,7 +98,7 @@ kind: "package-reference"
|
|
|
98
98
|
| [`src/edit.ts`](src/edit.ts) | `edit` 执行器:意图 waterfall、字面量编辑、观察 |
|
|
99
99
|
| [`src/read-render.ts`](src/read-render.ts) | 不依赖 Cordis 的窗口构建与信封格式化 |
|
|
100
100
|
| [`src/sandbox.ts`](src/sandbox.ts) | `write`/`edit` 共享的升权 API:策略解析与拒绝标记映射 |
|
|
101
|
-
| [`src/error.ts`](src/error.ts) |
|
|
101
|
+
| [`src/error.ts`](src/error.ts) | 防护变更失败的稳定模型侧诊断 |
|
|
102
102
|
|
|
103
103
|
### 各工具流程
|
|
104
104
|
|
|
@@ -221,7 +221,7 @@ Use the edit tool for targeted changes to existing UTF-8 text files. It replaces
|
|
|
221
221
|
|
|
222
222
|
#### 模型看到的内容
|
|
223
223
|
|
|
224
|
-
失败会规范化为 `Error: <message>`。本包稳定的校验和读取消息是 `file_path must be a non-empty string`、`limit must be less than or equal to <max>`、`old_string must be a non-empty string`、`old_string and new_string must differ`、`cannot read "<path>": not found`、`cannot read "<path>": not a regular file`、`offset <offset> is out of range for "<path>" (<total> lines)`、`cannot read "<path>": the <ext> extension does not declare a supported image format; read_image accepts PNG/JPEG/WebP/GIF files, including extension-less files in those formats`、`cannot read "<path>": the file content is not a supported image format; read_image accepts PNG/JPEG/WebP/GIF`、`cannot read "<path>": the bytes do not decode as a supported PNG/JPEG/WebP/GIF image; the file may be truncated or corrupt`、`cannot read "<path>" as an image: model "<model>" does not declare image input; switch to an image-capable model to read images`,以及类型不匹配的修复消息 `cannot read "<path>": the <ext> extension declares <type>, but the bytes use a different image format; rename the file to match its actual format if it is PNG/JPEG/WebP/GIF, or convert it to one of those formats`(无扩展名路径的不匹配报告 `cannot read "<path>": the file signature claims <type>, but the bytes decode as a different image format; the file may be corrupt`)。16-bit 转换失败会报告 `cannot read "<path>": the 16-bit PNG could not be converted to the normalized 8-bit sRGB form; convert it to an 8-bit PNG/JPEG/WebP and retry`。提供方和策略模板在各自包的 README
|
|
224
|
+
失败会规范化为 `Error: <message>`。本包稳定的校验和读取消息是 `file_path must be a non-empty string`、`limit must be less than or equal to <max>`、`old_string must be a non-empty string`、`old_string and new_string must differ`、`cannot read "<path>": not found`、`cannot read "<path>": not a regular file`、`offset <offset> is out of range for "<path>" (<total> lines)`、`cannot read "<path>": the <ext> extension does not declare a supported image format; read_image accepts PNG/JPEG/WebP/GIF files, including extension-less files in those formats`、`cannot read "<path>": the file content is not a supported image format; read_image accepts PNG/JPEG/WebP/GIF`、`cannot read "<path>": the bytes do not decode as a supported PNG/JPEG/WebP/GIF image; the file may be truncated or corrupt`、`cannot read "<path>" as an image: model "<model>" does not declare image input; switch to an image-capable model to read images`,以及类型不匹配的修复消息 `cannot read "<path>": the <ext> extension declares <type>, but the bytes use a different image format; rename the file to match its actual format if it is PNG/JPEG/WebP/GIF, or convert it to one of those formats`(无扩展名路径的不匹配报告 `cannot read "<path>": the file signature claims <type>, but the bytes decode as a different image format; the file may be corrupt`)。16-bit 转换失败会报告 `cannot read "<path>": the 16-bit PNG could not be converted to the normalized 8-bit sRGB form; convert it to an 8-bit PNG/JPEG/WebP and retry`。提供方和策略模板在各自包的 README 中逐字列出。模型侧错误包装把所有 `FS_NOT_OBSERVED` 来源规范化为 `cannot modify "<path>": file has not been read — read the file, then retry`;`FS_STALE_VERSION` 保留提供方原因并追加 `— re-read the file, then retry`。两者都保留结构化错误码和原始原因。该次重新读取确认缺失后,`edit` 会报告 `FS_NOT_FOUND`,而不会重复陈旧恢复指令;`write` 则使用带防护的创建。
|
|
225
225
|
|
|
226
226
|
#### Token 影响
|
|
227
227
|
|
|
@@ -242,7 +242,7 @@ Use the edit tool for targeted changes to existing UTF-8 text files. It replaces
|
|
|
242
242
|
- **`read` 只处理 UTF-8 文本文件**:图像使用独立的 `read_image` 工具;PDF、音频和视频仍延期处理。目录目标为 `FS_NOT_REGULAR_FILE`。
|
|
243
243
|
- **媒体类型按扩展名声明**:扩展名选择声明类型,附件存储的魔数校验保持权威;扩展名错误但格式正确的图像会得到改名修复提示,而不是被嗅探接受。只有没有扩展名的路径按文件签名识别格式。
|
|
244
244
|
- **对象路径重新走源准入**:对规范化附件对象调用 `read_image` 会把其字节作为新来源重新准入,因此把 `maxImageBytes`/`maxMessageImageBytes` 配置得低于规范化图片字节预算的部署可能拒绝 `ctx.attachments.readImage` 仍可读取的对象路径;默认配置下规范化预算(4 MiB)远低于源上限(20 MiB)。
|
|
245
|
-
-
|
|
245
|
+
- **内嵌图像预览依赖 UI 组合**:工具结果卡片经由浏览器的 `tool.call.images` 槽位渲染图像,由附件呈现插件填充;未组合该插件的 UI 改为显示结果的信封文本。
|
|
246
246
|
- **没有附件区域工具**:agent 在拥有文件系统路径时可以通过其他可用工具裁剪图片;没有路径的粘贴或拖入图片无法按更高分辨率重新读取。
|
|
247
247
|
- **没有超时接口**:`read`/`write`/`edit` 不接受超时参数,也不声明超时预算;取消只通过 `exec.signal` 传递(见[提供方理由](../README.zh.md))。
|
|
248
248
|
|
package/lib/index.js
CHANGED
|
@@ -526,33 +526,27 @@ function diffsFromMeta(meta) {
|
|
|
526
526
|
//#endregion
|
|
527
527
|
//#region lib/types/error.js
|
|
528
528
|
/**
|
|
529
|
-
* Model-facing
|
|
530
|
-
*
|
|
531
|
-
*
|
|
532
|
-
* appends the remedy at the model boundary; provider messages stay
|
|
533
|
-
* machine-oriented and unchanged.
|
|
529
|
+
* Model-facing diagnostics for guarded-mutation failures. Providers and
|
|
530
|
+
* policies retain operation-specific causes, while this package owns the
|
|
531
|
+
* stable message shown to the model.
|
|
534
532
|
* @module @deepseek-ai/dsh-tool-fs/src/error
|
|
535
533
|
*/
|
|
536
|
-
/** The remedy appended to each remediable failure code's message. */
|
|
537
|
-
const REMEDIES = {
|
|
538
|
-
FS_STALE_VERSION: "re-read the file, then retry",
|
|
539
|
-
FS_NOT_OBSERVED: "read the file, then retry"
|
|
540
|
-
};
|
|
541
534
|
/**
|
|
542
|
-
*
|
|
543
|
-
*
|
|
544
|
-
*
|
|
545
|
-
*
|
|
546
|
-
*
|
|
547
|
-
*
|
|
535
|
+
* Render the stable model-facing diagnostic for a guarded-mutation failure.
|
|
536
|
+
* `FS_STALE_VERSION` keeps the provider's reason and appends its re-read
|
|
537
|
+
* remedy. `FS_NOT_OBSERVED` replaces operation-specific policy/provider text
|
|
538
|
+
* with one path-aware reason and read remedy. The original error remains the
|
|
539
|
+
* cause, and both diagnostics preserve its code for machine routing. Anything
|
|
540
|
+
* else passes through untouched.
|
|
548
541
|
* @param error - the caught value from a write/edit execution.
|
|
542
|
+
* @param displayPath - the resolved target path shown to the model.
|
|
549
543
|
* @returns a remediated `FsError` for the two guarded-mutation codes, else the original value.
|
|
550
544
|
*/
|
|
551
|
-
function remediateFsError(error) {
|
|
545
|
+
function remediateFsError(error, displayPath) {
|
|
552
546
|
if (!(error instanceof FsError)) return error;
|
|
553
|
-
|
|
554
|
-
if (
|
|
555
|
-
return
|
|
547
|
+
if (error.code === "FS_NOT_OBSERVED") return new FsError(`cannot modify "${displayPath}": file has not been read — read the file, then retry`, error.code, { cause: error });
|
|
548
|
+
if (error.code === "FS_STALE_VERSION") return new FsError(`${error.message} — re-read the file, then retry`, error.code, { cause: error });
|
|
549
|
+
return error;
|
|
556
550
|
}
|
|
557
551
|
//#endregion
|
|
558
552
|
//#region lib/types/write.js
|
|
@@ -658,7 +652,7 @@ function applyWriteTool(ctx, sandbox) {
|
|
|
658
652
|
try {
|
|
659
653
|
outcome = await ctx.fs.writeText(target, input.content, intent, exec.signal, sandboxPolicy);
|
|
660
654
|
} catch (error) {
|
|
661
|
-
throw remediateFsError(sandbox.mapError(error, sandboxPolicy));
|
|
655
|
+
throw remediateFsError(sandbox.mapError(error, sandboxPolicy), target.displayPath);
|
|
662
656
|
}
|
|
663
657
|
ctx.emit("fs/observed", target, {
|
|
664
658
|
kind: "present",
|
|
@@ -811,7 +805,7 @@ function applyEditTool(ctx, sandbox) {
|
|
|
811
805
|
replaceAll: input.replaceAll
|
|
812
806
|
}, intent, exec.signal, sandboxPolicy);
|
|
813
807
|
} catch (error) {
|
|
814
|
-
throw remediateFsError(sandbox.mapError(error, sandboxPolicy));
|
|
808
|
+
throw remediateFsError(sandbox.mapError(error, sandboxPolicy), target.displayPath);
|
|
815
809
|
}
|
|
816
810
|
ctx.emit("fs/observed", target, {
|
|
817
811
|
kind: "present",
|
|
@@ -1064,7 +1058,8 @@ function applyReadImageTool(ctx) {
|
|
|
1064
1058
|
image: IMAGE_VALUE_SCHEMA
|
|
1065
1059
|
}
|
|
1066
1060
|
},
|
|
1067
|
-
render: (_args, value) => imageReadContent(value)
|
|
1061
|
+
render: (_args, value) => imageReadContent(value),
|
|
1062
|
+
presentationMeta: (_args, value) => ({ path: value.path })
|
|
1068
1063
|
},
|
|
1069
1064
|
isConcurrencySafe: () => true,
|
|
1070
1065
|
async execute(args, exec) {
|
package/lib/types/error.d.ts
CHANGED
|
@@ -1,20 +1,19 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Model-facing
|
|
3
|
-
*
|
|
4
|
-
*
|
|
5
|
-
* appends the remedy at the model boundary; provider messages stay
|
|
6
|
-
* machine-oriented and unchanged.
|
|
2
|
+
* Model-facing diagnostics for guarded-mutation failures. Providers and
|
|
3
|
+
* policies retain operation-specific causes, while this package owns the
|
|
4
|
+
* stable message shown to the model.
|
|
7
5
|
* @module @deepseek-ai/dsh-tool-fs/src/error
|
|
8
6
|
*/
|
|
9
7
|
/**
|
|
10
|
-
*
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
8
|
+
* Render the stable model-facing diagnostic for a guarded-mutation failure.
|
|
9
|
+
* `FS_STALE_VERSION` keeps the provider's reason and appends its re-read
|
|
10
|
+
* remedy. `FS_NOT_OBSERVED` replaces operation-specific policy/provider text
|
|
11
|
+
* with one path-aware reason and read remedy. The original error remains the
|
|
12
|
+
* cause, and both diagnostics preserve its code for machine routing. Anything
|
|
13
|
+
* else passes through untouched.
|
|
16
14
|
* @param error - the caught value from a write/edit execution.
|
|
15
|
+
* @param displayPath - the resolved target path shown to the model.
|
|
17
16
|
* @returns a remediated `FsError` for the two guarded-mutation codes, else the original value.
|
|
18
17
|
*/
|
|
19
|
-
export declare function remediateFsError(error: unknown): unknown;
|
|
18
|
+
export declare function remediateFsError(error: unknown, displayPath: string): unknown;
|
|
20
19
|
//# sourceMappingURL=error.d.ts.map
|
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.1.
|
|
4
|
+
"version": "0.1.3-alpha.2",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -31,34 +31,34 @@
|
|
|
31
31
|
"@deepseek-ai/schemastery": "^3.18.2"
|
|
32
32
|
},
|
|
33
33
|
"peerDependencies": {
|
|
34
|
-
"@deepseek-ai/dsh-attachment": "^0.1.
|
|
35
|
-
"@deepseek-ai/dsh-fs": "^0.1.
|
|
36
|
-
"@deepseek-ai/dsh-llm": "^0.1.
|
|
37
|
-
"@deepseek-ai/dsh-sandbox": "^0.1.
|
|
38
|
-
"@deepseek-ai/dsh-sandbox-policy": "^0.1.
|
|
39
|
-
"@deepseek-ai/dsh-
|
|
40
|
-
"@deepseek-ai/dsh-
|
|
41
|
-
"@deepseek-ai/dsh-
|
|
42
|
-
"@deepseek-ai/
|
|
43
|
-
"@deepseek-ai/
|
|
34
|
+
"@deepseek-ai/dsh-attachment": "^0.1.3-alpha.2",
|
|
35
|
+
"@deepseek-ai/dsh-fs": "^0.1.3-alpha.2",
|
|
36
|
+
"@deepseek-ai/dsh-llm": "^0.1.3-alpha.2",
|
|
37
|
+
"@deepseek-ai/dsh-sandbox": "^0.1.3-alpha.2",
|
|
38
|
+
"@deepseek-ai/dsh-sandbox-policy": "^0.1.3-alpha.2",
|
|
39
|
+
"@deepseek-ai/dsh-system-prompt": "^0.1.3-alpha.2",
|
|
40
|
+
"@deepseek-ai/dsh-session": "^0.1.3-alpha.2",
|
|
41
|
+
"@deepseek-ai/dsh-tools": "^0.1.3-alpha.2",
|
|
42
|
+
"@deepseek-ai/dsh-user-approval": "^0.1.3-alpha.2",
|
|
43
|
+
"@deepseek-ai/cordis": "^4.0.2"
|
|
44
44
|
},
|
|
45
45
|
"devDependencies": {
|
|
46
|
-
"@deepseek-ai/dsh-agent
|
|
47
|
-
"@deepseek-ai/dsh-
|
|
48
|
-
"@deepseek-ai/dsh-
|
|
49
|
-
"@deepseek-ai/dsh-
|
|
50
|
-
"@deepseek-ai/dsh-
|
|
51
|
-
"@deepseek-ai/dsh-fs-
|
|
52
|
-
"@deepseek-ai/dsh-
|
|
53
|
-
"@deepseek-ai/dsh-
|
|
54
|
-
"@deepseek-ai/dsh-llm-deepseek": "^0.1.
|
|
55
|
-
"@deepseek-ai/dsh-sandbox": "^0.1.
|
|
56
|
-
"@deepseek-ai/dsh-sandbox-policy": "^0.1.
|
|
57
|
-
"@deepseek-ai/dsh-session": "^0.1.
|
|
58
|
-
"@deepseek-ai/dsh-system-prompt": "^0.1.
|
|
59
|
-
"@deepseek-ai/dsh-tools": "^0.1.
|
|
60
|
-
"@deepseek-ai/dsh-session-projection": "^0.1.2-alpha.5",
|
|
46
|
+
"@deepseek-ai/dsh-agent": "^0.1.3-alpha.2",
|
|
47
|
+
"@deepseek-ai/dsh-attachment": "^0.1.3-alpha.2",
|
|
48
|
+
"@deepseek-ai/dsh-agent-loop": "^0.1.3-alpha.2",
|
|
49
|
+
"@deepseek-ai/dsh-fs": "^0.1.3-alpha.2",
|
|
50
|
+
"@deepseek-ai/dsh-agent-loop-testkit": "^0.1.3-alpha.2",
|
|
51
|
+
"@deepseek-ai/dsh-fs-observation-policy": "^0.1.3-alpha.2",
|
|
52
|
+
"@deepseek-ai/dsh-fs-local": "^0.1.3-alpha.2",
|
|
53
|
+
"@deepseek-ai/dsh-llm": "^0.1.3-alpha.2",
|
|
54
|
+
"@deepseek-ai/dsh-llm-deepseek": "^0.1.3-alpha.2",
|
|
55
|
+
"@deepseek-ai/dsh-sandbox": "^0.1.3-alpha.2",
|
|
56
|
+
"@deepseek-ai/dsh-sandbox-policy": "^0.1.3-alpha.2",
|
|
57
|
+
"@deepseek-ai/dsh-session": "^0.1.3-alpha.2",
|
|
58
|
+
"@deepseek-ai/dsh-system-prompt": "^0.1.3-alpha.2",
|
|
59
|
+
"@deepseek-ai/dsh-tools": "^0.1.3-alpha.2",
|
|
61
60
|
"@deepseek-ai/cordis": "^4.0.2",
|
|
62
|
-
"@deepseek-ai/dsh-user-approval": "^0.1.
|
|
61
|
+
"@deepseek-ai/dsh-user-approval": "^0.1.3-alpha.2",
|
|
62
|
+
"@deepseek-ai/dsh-session-projection": "^0.1.3-alpha.2"
|
|
63
63
|
}
|
|
64
64
|
}
|