@deepseek-ai/dsh-e2b 0.1.1-rc.2 → 0.1.2-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 +117 -16
- package/README.zh.md +121 -20
- package/package.json +19 -8
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/e2b/e2b/README.md
|
|
5
|
-
README.md:
|
|
6
|
-
README.zh.md:
|
|
5
|
+
README.md: 837de6f3487de4aad5fc745e0fc3bb6899adfbf7
|
|
6
|
+
README.zh.md: fadab86f28033396ca129ce4abfb2249f5e9c658
|
package/README.md
CHANGED
|
@@ -1,44 +1,145 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "One shared remote Linux sandbox for E2B-backed file and command work: configuration, lifetime, and what happens at startup and shutdown."
|
|
3
|
+
kind: "package-reference"
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
# @deepseek-ai/dsh-e2b
|
|
2
7
|
|
|
3
8
|
English | [中文](README.zh.md)
|
|
4
9
|
|
|
5
|
-
|
|
10
|
+
## Summary
|
|
11
|
+
|
|
12
|
+
`dsh-e2b` provides one shared remote Linux sandbox for the E2B provider family: the agent's file operations, shell commands, and terminals all run inside this sandbox instead of on your machine. The sandbox is created when the family starts and deleted automatically when the configured lifetime expires or the app shuts down — anything it held disappears with it. You configure three things: an API key, a remote working directory, and the sandbox lifetime. Use it together with `dsh-fs-e2b` and `dsh-subprocess-e2b`; on its own it adds no user-visible features. Nothing here reaches the model, and no shipped composition enables this family by default.
|
|
13
|
+
|
|
14
|
+
## Table of Contents
|
|
15
|
+
|
|
16
|
+
- [Use this package](#use-this-package)
|
|
17
|
+
- [Understand the implementation](#understand-the-implementation)
|
|
18
|
+
- [Further Exploration](#further-exploration)
|
|
19
|
+
- [Model Experience](#model-experience)
|
|
20
|
+
- [Known Limitations and Deferred Work](#known-limitations-and-deferred-work)
|
|
21
|
+
- [Dev Note](#dev-note)
|
|
22
|
+
|
|
23
|
+
-----
|
|
24
|
+
|
|
25
|
+
<a id="use-this-package"></a>
|
|
26
|
+
## Use this package
|
|
27
|
+
|
|
28
|
+
Use this package when you want the agent's file and command work to run in a remote Linux sandbox rather than on your machine. It is the foundation of the E2B family: with the filesystem and subprocess packages mounted, all of that work shares one remote working directory and process world.
|
|
29
|
+
|
|
30
|
+
### When to choose it
|
|
31
|
+
|
|
32
|
+
Choose the E2B family when work should be isolated from the host machine — for example, when you want the agent's file edits and command runs to happen somewhere disposable. Choose the local filesystem and subprocess packages when running on the host is fine. This package is invisible to the model and adds no request cost.
|
|
33
|
+
|
|
34
|
+
### Minimal configuration
|
|
6
35
|
|
|
7
|
-
|
|
36
|
+
Three settings matter: an API key (or the `E2B_API_KEY` environment variable), an absolute remote working directory, and the sandbox lifetime. A bad key, a relative working directory, or an invalid lifetime rejects startup before any remote work happens.
|
|
8
37
|
|
|
9
38
|
```yaml
|
|
10
|
-
-
|
|
11
|
-
name: '@deepseek-ai/dsh-e2b'
|
|
39
|
+
- name: '@deepseek-ai/dsh-e2b'
|
|
12
40
|
config:
|
|
41
|
+
apiKey: <E2B API key>
|
|
13
42
|
cwd: /home/user/workspace
|
|
14
43
|
timeoutMs: 300000
|
|
15
44
|
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
- id: fs-e2b
|
|
20
|
-
name: '@deepseek-ai/dsh-fs-e2b'
|
|
45
|
+
- name: '@deepseek-ai/dsh-subprocess-e2b'
|
|
46
|
+
- name: '@deepseek-ai/dsh-fs-e2b'
|
|
21
47
|
```
|
|
22
48
|
|
|
23
|
-
|
|
49
|
+
| Field | Default | Meaning |
|
|
50
|
+
|---|---|---|
|
|
51
|
+
| `apiKey` | `E2B_API_KEY` | API key for the host SDK connection; never installed in the sandbox |
|
|
52
|
+
| `cwd` | `/home/user/workspace` | Remote working directory the family shares; absolute POSIX path |
|
|
53
|
+
| `timeoutMs` | `300,000` | Sandbox lifetime in milliseconds; the sandbox is deleted when it expires |
|
|
54
|
+
|
|
55
|
+
The generated [configuration catalog](../../../docs/config-catalog.md#deepseek-aidsh-e2b) is the exhaustive source for every accepted field and its JSDoc.
|
|
56
|
+
|
|
57
|
+
### What you get
|
|
58
|
+
|
|
59
|
+
With this package mounted, file reads and writes, shell commands, and terminals all operate inside the sandbox's working directory, so the agent sees one consistent remote world: what it writes with the file features is what its commands can read, and vice versa. The remote working directory is created if it does not exist yet.
|
|
60
|
+
|
|
61
|
+
### Starting and stopping the sandbox
|
|
62
|
+
|
|
63
|
+
Loading the plugin starts the sandbox in the background; the filesystem and subprocess features are ready once it is up. The sandbox lives for the configured lifetime (default five minutes) unless the app stops first — in both cases it is deleted, so save anything you still need before then. If the sandbox disappears while running (expired or removed elsewhere), the family treats that as a clean end rather than an error.
|
|
64
|
+
|
|
65
|
+
-----
|
|
66
|
+
|
|
67
|
+
<a id="understand-the-implementation"></a>
|
|
68
|
+
## Understand the implementation
|
|
69
|
+
|
|
70
|
+
<details>
|
|
71
|
+
<summary>Implementation internals — click to expand</summary>
|
|
72
|
+
|
|
73
|
+
This section explains the design decisions behind the owner and points at the code that realizes them; the observable behavior is fully covered in [Use this package](#use-this-package).
|
|
24
74
|
|
|
25
|
-
|
|
75
|
+
### Design philosophy
|
|
26
76
|
|
|
27
|
-
|
|
77
|
+
- **One sandbox, one handle.** All adapters await the same `getSandbox()` promise, so filesystem and process operations share one remote Linux world.
|
|
78
|
+
- **Secure by construction.** The sandbox is created with `secure: true` and `lifecycle: { onTimeout: 'kill' }`, so expiry always deletes it.
|
|
79
|
+
- **Isolated control shells.** `e2bControlEnvs()` gives every internal command shell a fresh randomized `HOME`, and `quoteE2BShellArg()` preserves opaque arguments through the SDK's unavoidable `/bin/bash -l -c` layer.
|
|
28
80
|
|
|
29
|
-
|
|
81
|
+
### Source map
|
|
30
82
|
|
|
83
|
+
| File | Role |
|
|
84
|
+
|---|---|
|
|
85
|
+
| [`src/index.ts`](src/index.ts) | Plugin entry: `E2BRuntime` service, `Config` schema, validation, sandbox open and teardown |
|
|
86
|
+
| [`src/invariant.ts`](src/invariant.ts) | Invariant companion (no runtime invariant; sandbox creation and teardown have one SDK promise and no independent event or mutable-data relationship) |
|
|
87
|
+
|
|
88
|
+
### Lifecycle
|
|
89
|
+
|
|
90
|
+
`open()` creates the sandbox, prepares `cwd` and the private runtime root, rejects a non-directory or symlink runtime root, and applies `chmod 700`. Disposal prevents new handle acquisition, awaits setup, and deletes the sandbox, accepting `SandboxNotFoundError` as quiescence. `getSandbox()` re-checks the disposed flag after awaiting readiness, so disposal racing readiness still rejects acquisition; an eager connection failure stays observed but does not reject plugin load, and `getSandbox()` surfaces it.
|
|
91
|
+
|
|
92
|
+
### Setup failure handling
|
|
93
|
+
|
|
94
|
+
Any directory-setup failure makes one deletion attempt and preserves the original error; a failed rollback is bounded by E2B's configured sandbox timeout (see the Dev Note). Provider plugins must load after this owner and dispose before it, because every adapter awaits the same handle.
|
|
95
|
+
|
|
96
|
+
</details>
|
|
97
|
+
|
|
98
|
+
-----
|
|
99
|
+
|
|
100
|
+
<a id="further-exploration"></a>
|
|
101
|
+
## Further Exploration
|
|
102
|
+
|
|
103
|
+
Read these pages when the package-level contract is not enough. They move from the family composition to the subprocess seam surface and the decision evidence behind the remote execution world.
|
|
104
|
+
|
|
105
|
+
- [E2B provider family map](../README.md) — the three packages and the opt-in composition.
|
|
106
|
+
- [Subprocess subsystem](../../../docs/subsystems/subprocess.md) — the subprocess seam contract and the generated Cordis surface, including `ctx.e2b`.
|
|
107
|
+
- [Portable execution-world decision](../../../.agents/notes/implemented/architecture/2026-07-28-portable-execution-world-consumers.md) — why consumers delegate to `ctx.fs` and `ctx.subprocess`, and what stays in the host.
|
|
108
|
+
- [Generated configuration catalog](../../../docs/config-catalog.md#deepseek-aidsh-e2b) — every accepted config field and its source declaration.
|
|
109
|
+
|
|
110
|
+
-----
|
|
111
|
+
|
|
112
|
+
<a id="model-experience"></a>
|
|
31
113
|
## Model Experience
|
|
32
114
|
|
|
33
|
-
None, as
|
|
115
|
+
None, as the shared remote-runtime owner registers no model context; provider adapters and consumers own rendered effects.
|
|
34
116
|
|
|
35
117
|
#### KV Cache effect
|
|
36
118
|
|
|
37
|
-
No direct invalidation
|
|
119
|
+
No direct invalidation: the owner contributes no request tokens and never mutates a request prefix, so provider cache reuse is unaffected.
|
|
38
120
|
|
|
39
121
|
## Known Limitations and Deferred Work
|
|
40
122
|
|
|
41
|
-
|
|
123
|
+
<a id="known-limitations-and-deferred-work"></a>
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
These limits define when the E2B family is a poor fit or needs special operational care. They are current package constraints, not a task backlog.
|
|
127
|
+
|
|
128
|
+
- **Not a whole-harness runtime** — Cordis services, agent/session state, session logs, LLM requests, skills, and SDK-side buffers stay in the host process.
|
|
42
129
|
- **Sandbox state is ephemeral** — disposal and timeout delete the sandbox; reconnect, pause/leave retention, templates, volumes, and snapshots are outside this POC.
|
|
43
130
|
- **No deployment platform is configured** — network policy, host-workspace synchronization, and sandbox discovery are outside this POC.
|
|
44
131
|
- **`cwd` is a resolution convention, not containment** — adapters and commands can address other sandbox paths; E2B network access retains the base image's policy.
|
|
132
|
+
|
|
133
|
+
<a id="dev-note"></a>
|
|
134
|
+
### Dev Note
|
|
135
|
+
|
|
136
|
+
<details>
|
|
137
|
+
<summary>Working context for maintainers — click to expand</summary>
|
|
138
|
+
|
|
139
|
+
This Dev Note is working context for maintainers: open questions and directions that are not decided. It is explicitly non-authoritative — shipped behavior, limits, and accepted rationale live in the sections above and the package code.
|
|
140
|
+
|
|
141
|
+
#### Open: sandbox setup rollback
|
|
142
|
+
|
|
143
|
+
The `open()` failure path makes a single deletion attempt and preserves the original setup failure. Retry state stays deferred unless a real double failure outlives E2B's configured sandbox timeout (TODO(e2b-setup-rollback)).
|
|
144
|
+
|
|
145
|
+
</details>
|
package/README.zh.md
CHANGED
|
@@ -1,44 +1,145 @@
|
|
|
1
|
+
---
|
|
2
|
+
description: "E2B 文件与命令工作的共享远程 Linux 沙箱:配置、生命周期,以及启动与关闭时会发生什么。"
|
|
3
|
+
kind: "package-reference"
|
|
4
|
+
---
|
|
5
|
+
|
|
1
6
|
# @deepseek-ai/dsh-e2b
|
|
2
7
|
|
|
3
8
|
[English](README.md) | 中文
|
|
4
9
|
|
|
5
|
-
|
|
10
|
+
## 概述
|
|
11
|
+
|
|
12
|
+
`dsh-e2b` 为 E2B 提供方家族提供一个共享的远程 Linux 沙箱:agent(智能体)的文件操作、shell 命令与终端都在这个沙箱内运行,而不是在你的机器上。家族启动时沙箱会自动创建,并在配置的生命周期到期或应用关闭时自动删除——其中保存的一切都会随之消失。你需要配置三件事:API 密钥、远程工作目录与沙箱生命周期。请与 `dsh-fs-e2b`、`dsh-subprocess-e2b` 一起使用;单独挂载它不会带来任何用户可见的功能。这里的一切都不会触及模型,而且任何已发布的组合都不会默认启用本家族。
|
|
13
|
+
|
|
14
|
+
## 目录
|
|
15
|
+
|
|
16
|
+
- [使用本包](#use-this-package)
|
|
17
|
+
- [理解实现](#understand-the-implementation)
|
|
18
|
+
- [进一步探索](#further-exploration)
|
|
19
|
+
- [模型体验](#model-experience)
|
|
20
|
+
- [已知限制与延期工作](#known-limitations-and-deferred-work)
|
|
21
|
+
- [开发备注](#dev-note)
|
|
22
|
+
|
|
23
|
+
-----
|
|
24
|
+
|
|
25
|
+
<a id="use-this-package"></a>
|
|
26
|
+
## 使用本包
|
|
27
|
+
|
|
28
|
+
当你希望 agent 的文件与命令工作在远程 Linux 沙箱而非你的机器上运行时,使用本包。它是 E2B 家族的基础:挂载文件系统与子进程包之后,所有这些工作都会共享同一个远程工作目录与进程环境。
|
|
29
|
+
|
|
30
|
+
### 何时选择
|
|
31
|
+
|
|
32
|
+
当工作应与宿主机器隔离时——例如你希望 agent 的文件编辑与命令运行发生在某个可丢弃的环境中——选择 E2B 家族。当在宿主上运行没有问题的时候,选择本地的文件系统与子进程包。本包对模型不可见,也不增加任何请求成本。
|
|
33
|
+
|
|
34
|
+
### 最小配置
|
|
6
35
|
|
|
7
|
-
|
|
36
|
+
三个设置很重要:API 密钥(或 `E2B_API_KEY` 环境变量)、绝对远程工作目录与沙箱生命周期。密钥错误、相对工作目录或无效生命周期都会在任何远程工作开始前拒绝启动。
|
|
8
37
|
|
|
9
38
|
```yaml
|
|
10
|
-
-
|
|
11
|
-
name: '@deepseek-ai/dsh-e2b'
|
|
39
|
+
- name: '@deepseek-ai/dsh-e2b'
|
|
12
40
|
config:
|
|
41
|
+
apiKey: <E2B API key>
|
|
13
42
|
cwd: /home/user/workspace
|
|
14
43
|
timeoutMs: 300000
|
|
15
44
|
|
|
16
|
-
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
- id: fs-e2b
|
|
20
|
-
name: '@deepseek-ai/dsh-fs-e2b'
|
|
45
|
+
- name: '@deepseek-ai/dsh-subprocess-e2b'
|
|
46
|
+
- name: '@deepseek-ai/dsh-fs-e2b'
|
|
21
47
|
```
|
|
22
48
|
|
|
23
|
-
|
|
49
|
+
| 字段 | 默认值 | 含义 |
|
|
50
|
+
|---|---|---|
|
|
51
|
+
| `apiKey` | `E2B_API_KEY` | 宿主 SDK 连接的 API 密钥;绝不会安装进沙箱 |
|
|
52
|
+
| `cwd` | `/home/user/workspace` | 家族共享的远程工作目录;必须是绝对 POSIX 路径 |
|
|
53
|
+
| `timeoutMs` | `300,000` | 沙箱生命周期(毫秒);到期后沙箱被删除 |
|
|
54
|
+
|
|
55
|
+
生成的[配置目录](../../../docs/config-catalog.zh.md#deepseek-aidsh-e2b)是每个受支持字段及其 JSDoc 的穷尽式真源。
|
|
56
|
+
|
|
57
|
+
### 你能得到什么
|
|
58
|
+
|
|
59
|
+
挂载本包后,文件读写、shell 命令与终端都会在沙箱的工作目录内运行,因此 agent 看到的是一个一致的远程世界:它用文件功能写入的内容,正是它的命令能够读取的内容,反之亦然。远程工作目录若不存在,会自动创建。
|
|
60
|
+
|
|
61
|
+
### 沙箱的启动与停止
|
|
62
|
+
|
|
63
|
+
加载插件会在后台启动沙箱;文件系统与子进程功能在其就绪后即可使用。沙箱存活时间为配置的生命周期(默认五分钟),除非应用先停止——两种情况下沙箱都会被删除,因此请在此之前保存你仍需要的内容。如果运行期间沙箱消失(到期或被别处删除),家族会将其视为干净利落的结束,而不是错误。
|
|
64
|
+
|
|
65
|
+
-----
|
|
66
|
+
|
|
67
|
+
<a id="understand-the-implementation"></a>
|
|
68
|
+
## 理解实现
|
|
69
|
+
|
|
70
|
+
<details>
|
|
71
|
+
<summary>实现细节——点击展开</summary>
|
|
72
|
+
|
|
73
|
+
本节解释所有者背后的设计决策,并指出实现它们的代码位置;可观察行为已在[使用本包](#use-this-package)中完整说明。
|
|
24
74
|
|
|
25
|
-
|
|
75
|
+
### 设计理念
|
|
26
76
|
|
|
27
|
-
|
|
77
|
+
- **一个沙箱,一个句柄。** 所有适配器都等待同一个 `getSandbox()` promise,因此文件系统与进程操作共享同一个远程 Linux 世界。
|
|
78
|
+
- **构造即安全。** 沙箱以 `secure: true` 和 `lifecycle: { onTimeout: 'kill' }` 创建,因此超时必定删除它。
|
|
79
|
+
- **隔离的控制 shell。** `e2bControlEnvs()` 为每个内部命令 shell 提供全新随机生成的 `HOME`,`quoteE2BShellArg()` 则通过 SDK 不可避免的 `/bin/bash -l -c` 层保留不透明参数。
|
|
28
80
|
|
|
29
|
-
|
|
81
|
+
### 源码地图
|
|
30
82
|
|
|
83
|
+
| 文件 | 职责 |
|
|
84
|
+
|---|---|
|
|
85
|
+
| [`src/index.ts`](src/index.ts) | 插件入口:`E2BRuntime` 服务、`Config` schema、校验、沙箱创建与拆除 |
|
|
86
|
+
| [`src/invariant.ts`](src/invariant.ts) | 不变式伴生插件(无运行时不变式;沙箱创建与拆除只有一个 SDK promise,没有可交叉核对的独立事件或可变数据关系) |
|
|
87
|
+
|
|
88
|
+
### 生命周期
|
|
89
|
+
|
|
90
|
+
`open()` 创建沙箱、准备 `cwd` 与私有运行时根目录、拒绝非目录或符号链接的运行时根目录,并执行 `chmod 700`。资源释放会阻止新的句柄获取、等待初始化完成并删除沙箱,把 `SandboxNotFoundError` 视为完全停稳。`getSandbox()` 在等待就绪后重新检查 disposed 标志,因此与就绪发生竞态的资源释放仍会拒绝获取句柄;急切连接失败会保持可观察,但不会拒绝插件加载,`getSandbox()` 会公开该失败。
|
|
91
|
+
|
|
92
|
+
### 初始化失败处理
|
|
93
|
+
|
|
94
|
+
任何目录初始化失败都会尝试删除一次并保留原始错误;回滚失败由 E2B 配置的沙箱超时约束(见开发备注)。提供方插件必须在该所有者之后加载、并在其之前 dispose(资源释放),因为每个适配器都等待同一个句柄。
|
|
95
|
+
|
|
96
|
+
</details>
|
|
97
|
+
|
|
98
|
+
-----
|
|
99
|
+
|
|
100
|
+
<a id="further-exploration"></a>
|
|
101
|
+
## 进一步探索
|
|
102
|
+
|
|
103
|
+
当包级约定不够用时阅读以下页面。它们从家族组合逐步进入子进程 seam 表面,以及远程执行世界背后的决策证据。
|
|
104
|
+
|
|
105
|
+
- [E2B 提供方家族地图](../README.zh.md)——三个包与可选组合。
|
|
106
|
+
- [子进程子系统](../../../docs/subsystems/subprocess.zh.md)——子进程 seam 约定与生成的 Cordis 表面,包括 `ctx.e2b`。
|
|
107
|
+
- [可移植执行世界决策](../../../.agents/notes/implemented/architecture/2026-07-28-portable-execution-world-consumers.zh.md)——消费方为何委托给 `ctx.fs` 与 `ctx.subprocess`,以及留在宿主中的内容。
|
|
108
|
+
- [生成配置目录](../../../docs/config-catalog.zh.md#deepseek-aidsh-e2b)——每个受支持配置字段及其源声明。
|
|
109
|
+
|
|
110
|
+
-----
|
|
111
|
+
|
|
112
|
+
<a id="model-experience"></a>
|
|
31
113
|
## 模型体验
|
|
32
114
|
|
|
33
|
-
|
|
115
|
+
无。本共享远程运行时所有者不注册任何模型上下文;提供方适配器与消费方拥有所有渲染效果。
|
|
34
116
|
|
|
35
117
|
#### KV Cache 影响
|
|
36
118
|
|
|
37
|
-
|
|
119
|
+
不会直接失效:所有者不贡献任何请求 token,也从不改变请求前缀,因此提供方缓存复用不受影响。
|
|
120
|
+
|
|
121
|
+
## 已知限制与延期工作
|
|
122
|
+
|
|
123
|
+
<a id="known-limitations-and-deferred-work"></a>
|
|
124
|
+
|
|
125
|
+
|
|
126
|
+
这些限制说明 E2B 家族何时不合适,或何时需要特别的运维注意。它们是当前包约束,不是任务积压。
|
|
127
|
+
|
|
128
|
+
- **不是完整的 harness 运行时**:Cordis 服务、agent(智能体)/会话状态、会话日志、LLM(大语言模型)请求、skill(技能)和 SDK 侧缓冲仍留在宿主进程中。
|
|
129
|
+
- **沙箱状态是短暂的**:资源释放与超时都会删除沙箱;重新连接、pause/leave 保留、模板、卷和快照均不在本 POC 范围内。
|
|
130
|
+
- **没有配置部署平台**:网络策略、宿主工作区同步与沙箱发现均不在本 POC 范围内。
|
|
131
|
+
- **`cwd` 是解析约定,而不是包含边界**:适配器与命令可以访问沙箱中的其他路径;E2B 网络访问也继续采用基础镜像的策略。
|
|
132
|
+
|
|
133
|
+
<a id="dev-note"></a>
|
|
134
|
+
### 开发备注
|
|
135
|
+
|
|
136
|
+
<details>
|
|
137
|
+
<summary>维护者的工作上下文——点击展开</summary>
|
|
138
|
+
|
|
139
|
+
本开发备注是维护者的工作上下文:开放问题与尚未决定的探索方向。它明确不具权威性——已交付的行为、限制与既定理由以上文和包代码为准。
|
|
140
|
+
|
|
141
|
+
#### 开放:沙箱初始化回滚
|
|
38
142
|
|
|
39
|
-
|
|
143
|
+
`open()` 的失败路径只会尝试删除一次,并保留原始初始化失败。除非真实的双重失败超出 E2B 配置的沙箱超时,否则重试状态保持延后(TODO(e2b-setup-rollback))。
|
|
40
144
|
|
|
41
|
-
|
|
42
|
-
- **沙箱状态是短暂的**:资源释放和超时都会删除沙箱;重新连接、pause/leave 保留、模板、卷和快照均不在本 POC 范围内。
|
|
43
|
-
- **没有配置部署平台**:网络策略、宿主工作区同步和沙箱发现均不在本 POC 范围内。
|
|
44
|
-
- **`cwd` 是解析约定,而不是包含边界**:适配器和命令可以访问沙箱中的其他路径;E2B 网络访问也继续采用基础镜像的策略。
|
|
145
|
+
</details>
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@deepseek-ai/dsh-e2b",
|
|
3
3
|
"description": "Shared E2B sandbox lifecycle for DeepSeek Harness provider adapters",
|
|
4
|
-
"version": "0.1.
|
|
4
|
+
"version": "0.1.2-alpha.2",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -32,17 +32,28 @@
|
|
|
32
32
|
],
|
|
33
33
|
"license": "MIT",
|
|
34
34
|
"peerDependencies": {
|
|
35
|
-
"@deepseek-ai/
|
|
36
|
-
"@deepseek-ai/
|
|
35
|
+
"@deepseek-ai/cordis": "^4.0.2",
|
|
36
|
+
"@deepseek-ai/dsh-invariants": "^0.1.2-alpha.2"
|
|
37
37
|
},
|
|
38
38
|
"dependencies": {
|
|
39
39
|
"e2b": "2.29.1",
|
|
40
|
-
"@deepseek-ai/schemastery": "^3.18.
|
|
40
|
+
"@deepseek-ai/schemastery": "^3.18.2"
|
|
41
41
|
},
|
|
42
42
|
"devDependencies": {
|
|
43
|
-
"@deepseek-ai/
|
|
44
|
-
"@deepseek-ai/dsh-
|
|
45
|
-
"@deepseek-ai/dsh-
|
|
46
|
-
"@deepseek-ai/
|
|
43
|
+
"@deepseek-ai/cordis": "^4.0.2",
|
|
44
|
+
"@deepseek-ai/dsh-agent": "^0.1.2-alpha.2",
|
|
45
|
+
"@deepseek-ai/dsh-app-boot": "^0.1.2-alpha.2",
|
|
46
|
+
"@deepseek-ai/dsh-bash-local": "^0.1.2-alpha.2",
|
|
47
|
+
"@deepseek-ai/dsh-fs-e2b": "^0.1.2-alpha.2",
|
|
48
|
+
"@deepseek-ai/dsh-invariants": "^0.1.2-alpha.2",
|
|
49
|
+
"@deepseek-ai/dsh-loader-smoke": "^0.1.2-alpha.2",
|
|
50
|
+
"@deepseek-ai/dsh-lsp": "^0.1.2-alpha.2",
|
|
51
|
+
"@deepseek-ai/dsh-session": "^0.1.2-alpha.2",
|
|
52
|
+
"@deepseek-ai/dsh-session-projection": "^0.1.2-alpha.2",
|
|
53
|
+
"@deepseek-ai/dsh-subprocess-e2b": "^0.1.2-alpha.2",
|
|
54
|
+
"@deepseek-ai/dsh-terminal": "^0.1.2-alpha.2",
|
|
55
|
+
"@deepseek-ai/dsh-terminal-bash": "^0.1.2-alpha.2",
|
|
56
|
+
"@deepseek-ai/dsh-lsp-stdio": "^0.1.2-alpha.2",
|
|
57
|
+
"@deepseek-ai/dsh-sandbox-policy": "^0.1.2-alpha.2"
|
|
47
58
|
}
|
|
48
59
|
}
|