@deepseek-ai/dsh-e2b 0.1.1-rc.1 → 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 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: 7ade7c3d6522d8fa6d54d7011766238451b17c9a
6
- README.zh.md: b17a14bcfb221cd8233f071d84b3d01da1c0d74e
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
- Shared lifecycle owner for one E2B sandbox. The filesystem and subprocess adapters inject `ctx.e2b`, await its single SDK handle, and therefore inhabit the same remote Linux working tree and process world. The package pins `e2b@2.29.1`; the [family map](../README.md) lists the opt-in composition.
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
- ## Configuration
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
- - id: e2b
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
- - id: subprocess-e2b
17
- name: '@deepseek-ai/dsh-subprocess-e2b'
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
- `apiKey` is optional and otherwise reads `E2B_API_KEY`; the key configures the host SDK connection and is never installed in the sandbox. `cwd` defaults to `/home/user/workspace` and must be an absolute POSIX path. `timeoutMs` defaults to five minutes and controls the sandbox lifetime; expiry deletes the sandbox.
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
- ## Lifecycle and ownership
75
+ ### Design philosophy
26
76
 
27
- Construction starts one sandbox creation. Before resolving `getSandbox()`, the service creates `cwd` and the private `cwd/.dsh-e2b` adapter-state directory, verifies that the reserved path is a real directory rather than a symlink or another file type, then sets it to mode `0700`. Each adapter-internal E2B command shell receives a fresh randomized root-level `HOME`, so the SDK's fixed login shell does not resolve profile files from the mutable user home before the control command.
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
- Disposal first prevents new handle acquisition, then awaits setup and deletes the sandbox. A `SandboxNotFoundError` means expiry or another owner already deleted it and is accepted as quiescence. Initial directory setup failure makes one deletion attempt; the configured E2B timeout bounds a second failure. Provider plugins must load after this owner and dispose before it.
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 this shared runtime owner registers no model-visible context; provider adapters and their consumers own any rendered effects.
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; this package does not contribute request tokens.
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
- - **This is not a whole-harness runtime** — Cordis services, agent/session state, session logs, LLM requests, skills, and SDK-side buffers stay in the host process.
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
- 一个 E2B 沙箱的共享生命周期所有者。文件系统与进程管理适配器注入 `ctx.e2b`,等待其唯一的 SDK 句柄,因此处于同一个远程 Linux 工作树与进程环境中。本包固定使用 `e2b@2.29.1`;可选组合见[包族索引](../README.zh.md)。
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
- - id: e2b
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
- - id: subprocess-e2b
17
- name: '@deepseek-ai/dsh-subprocess-e2b'
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
- `apiKey` 可省略;省略时读取 `E2B_API_KEY`。该密钥只配置宿主 SDK 连接,绝不会安装进沙箱。`cwd` 默认为 `/home/user/workspace`,并且必须是绝对 POSIX 路径。`timeoutMs` 默认为 5 分钟并控制沙箱生命周期;超时会删除沙箱。
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
- 构造阶段会启动一次沙箱创建。服务在 `getSandbox()` 成功返回前,会创建 `cwd` 和私有的 `cwd/.dsh-e2b` 适配器状态目录,验证该预留路径是真实目录而非符号链接或其他文件类型,再把该目录的 mode 设为 `0700`。每个适配器内部的 E2B 命令 shell 都会获得一个位于根目录下、全新随机生成的 `HOME`,因此 SDK 固定使用的登录 shell 不会在控制命令之前解析可变用户主目录中的配置文件。
77
+ - **一个沙箱,一个句柄。** 所有适配器都等待同一个 `getSandbox()` promise,因此文件系统与进程操作共享同一个远程 Linux 世界。
78
+ - **构造即安全。** 沙箱以 `secure: true` 和 `lifecycle: { onTimeout: 'kill' }` 创建,因此超时必定删除它。
79
+ - **隔离的控制 shell。** `e2bControlEnvs()` 为每个内部命令 shell 提供全新随机生成的 `HOME`,`quoteE2BShellArg()` 则通过 SDK 不可避免的 `/bin/bash -l -c` 层保留不透明参数。
28
80
 
29
- 资源释放会先阻止继续获取新句柄,再等待初始化完成,然后删除沙箱。`SandboxNotFoundError` 表示沙箱已因超时或被另一个所有者删除,因此可视为完全停稳。初始目录设置失败时会尝试删除一次;若该尝试也失败,则由已配置的 E2B 超时约束沙箱的存活时间。提供方插件必须在该所有者之后加载,并在其之前 dispose(资源释放)。
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
- 不会直接失效;本包不会贡献请求 token
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
- - **这不是完整的 harness 运行时**:Cordis 服务、agent(智能体)/会话状态、会话日志、LLM(大语言模型)请求、skill(技能)和 SDK 侧缓冲仍留在宿主进程中。
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.1-rc.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/dsh-invariants": "^0.1.1-rc.1",
36
- "@deepseek-ai/cordis": "^4.0.1"
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.1"
40
+ "@deepseek-ai/schemastery": "^3.18.2"
41
41
  },
42
42
  "devDependencies": {
43
- "@deepseek-ai/dsh-invariants": "^0.1.1-rc.1",
44
- "@deepseek-ai/dsh-loader-smoke": "^0.1.1-rc.1",
45
- "@deepseek-ai/dsh-sandbox-policy": "^0.1.1-rc.1",
46
- "@deepseek-ai/cordis": "^4.0.1"
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
  }