@x1a0f3n9/dsh-ptc-runtime 0.1.7-rc.4 → 0.2.1-rc.3
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 +35 -35
- package/README.md +7 -6
- package/README.zh.md +7 -6
- package/lib/index.js +15 -1
- package/lib/types/index.d.ts +11 -1
- package/lib/types/types.d.ts +11 -4
- package/package.json +5 -5
package/README.i18n.yaml
CHANGED
|
@@ -5,66 +5,66 @@
|
|
|
5
5
|
/:
|
|
6
6
|
en: 8904d5f5d5251a83
|
|
7
7
|
zh: 69b48f289b0416f0
|
|
8
|
-
/
|
|
9
|
-
en:
|
|
10
|
-
zh:
|
|
11
|
-
/
|
|
12
|
-
en:
|
|
13
|
-
zh:
|
|
14
|
-
/
|
|
8
|
+
/deepseek-ai-dsh-ptc-runtime:
|
|
9
|
+
en: cced8c691b58657a
|
|
10
|
+
zh: 3da9cdf76a1a07ff
|
|
11
|
+
/deepseek-ai-dsh-ptc-runtime/summary:
|
|
12
|
+
en: b04917e62d63c7ff
|
|
13
|
+
zh: 12cb9f38cbf8ee3f
|
|
14
|
+
/deepseek-ai-dsh-ptc-runtime/table-of-contents:
|
|
15
15
|
en: d152484eb41ac6b4
|
|
16
16
|
zh: 09388d293f9be9cb
|
|
17
|
-
/
|
|
17
|
+
/deepseek-ai-dsh-ptc-runtime/use-this-package:
|
|
18
18
|
en: 7e5ebf7420c13af4
|
|
19
19
|
zh: 9ad1e056e794ca4a
|
|
20
|
-
/
|
|
21
|
-
en:
|
|
22
|
-
zh:
|
|
23
|
-
/
|
|
24
|
-
en:
|
|
25
|
-
zh:
|
|
26
|
-
/
|
|
20
|
+
/deepseek-ai-dsh-ptc-runtime/use-this-package/run-a-program:
|
|
21
|
+
en: c856760ebc15d59e
|
|
22
|
+
zh: dc093083b29794e0
|
|
23
|
+
/deepseek-ai-dsh-ptc-runtime/use-this-package/choose-a-backend:
|
|
24
|
+
en: fc0d515f0c3664f3
|
|
25
|
+
zh: 0a1b646b5cf92232
|
|
26
|
+
/deepseek-ai-dsh-ptc-runtime/use-this-package/name-your-bindings-portably:
|
|
27
27
|
en: 4e46c1672701b8df
|
|
28
28
|
zh: 0353c5855c9ff6be
|
|
29
|
-
/
|
|
29
|
+
/deepseek-ai-dsh-ptc-runtime/use-this-package/what-can-go-wrong:
|
|
30
30
|
en: 44f9fdf2c8e2cacc
|
|
31
31
|
zh: 99dd555a49075f88
|
|
32
|
-
/
|
|
32
|
+
/deepseek-ai-dsh-ptc-runtime/understand-the-implementation:
|
|
33
33
|
en: 686d570f5e669fa4
|
|
34
34
|
zh: 2075cf27c30f251a
|
|
35
|
-
/
|
|
35
|
+
/deepseek-ai-dsh-ptc-runtime/understand-the-implementation/design-concept:
|
|
36
36
|
en: 9f0055e22a1595a5
|
|
37
37
|
zh: 0aa3ceb9dd145128
|
|
38
|
-
/
|
|
38
|
+
/deepseek-ai-dsh-ptc-runtime/understand-the-implementation/service-api:
|
|
39
39
|
en: 1d7a792c9a78a517
|
|
40
40
|
zh: b49bddf18c259edc
|
|
41
|
-
/
|
|
41
|
+
/deepseek-ai-dsh-ptc-runtime/understand-the-implementation/vocabulary:
|
|
42
42
|
en: 855cb8366e3bd293
|
|
43
43
|
zh: da6d7a0ce51f97fc
|
|
44
|
-
/
|
|
44
|
+
/deepseek-ai-dsh-ptc-runtime/understand-the-implementation/portable-identifiers:
|
|
45
45
|
en: 01c82c6e73180979
|
|
46
46
|
zh: e29b066f9f82c8b4
|
|
47
|
-
/
|
|
48
|
-
en:
|
|
49
|
-
zh:
|
|
50
|
-
/
|
|
47
|
+
/deepseek-ai-dsh-ptc-runtime/understand-the-implementation/source-map:
|
|
48
|
+
en: 85b65ceb9be0c49f
|
|
49
|
+
zh: 52df7f06d4e49d6e
|
|
50
|
+
/deepseek-ai-dsh-ptc-runtime/further-exploration:
|
|
51
51
|
en: a77e68bc4f5e66d9
|
|
52
52
|
zh: 101a57bcad581668
|
|
53
|
-
/
|
|
53
|
+
/deepseek-ai-dsh-ptc-runtime/model-experience:
|
|
54
54
|
en: 5506904c50c1ee20
|
|
55
55
|
zh: f0ffa9f4f08b20cf
|
|
56
|
-
/
|
|
56
|
+
/deepseek-ai-dsh-ptc-runtime/model-experience/kv-cache-effect:
|
|
57
57
|
en: 40294c1c31b74824
|
|
58
58
|
zh: 081cebc2e2650f03
|
|
59
|
-
/
|
|
60
|
-
en:
|
|
61
|
-
zh:
|
|
62
|
-
/
|
|
59
|
+
/deepseek-ai-dsh-ptc-runtime/known-limitations-and-deferred-work:
|
|
60
|
+
en: e20364d073f78c60
|
|
61
|
+
zh: 6cac5c46ff91b3ca
|
|
62
|
+
/deepseek-ai-dsh-ptc-runtime/known-limitations-and-deferred-work/dev-note:
|
|
63
63
|
en: d56846da29ad869c
|
|
64
64
|
zh: 0397151a7e29b8ba
|
|
65
|
-
/
|
|
66
|
-
en:
|
|
67
|
-
zh:
|
|
68
|
-
/
|
|
65
|
+
/deepseek-ai-dsh-ptc-runtime/known-limitations-and-deferred-work/dev-note/retained-state:
|
|
66
|
+
en: cd86d95f288b86dc
|
|
67
|
+
zh: 2157b7a97eb62667
|
|
68
|
+
/deepseek-ai-dsh-ptc-runtime/known-limitations-and-deferred-work/dev-note/future-container-backend:
|
|
69
69
|
en: 2b94202842f0556c
|
|
70
70
|
zh: 5aa0311fa621a018
|
package/README.md
CHANGED
|
@@ -9,7 +9,7 @@ English | [中文](README.zh.md)
|
|
|
9
9
|
|
|
10
10
|
## Summary
|
|
11
11
|
|
|
12
|
-
Use `dsh-ptc-runtime` to
|
|
12
|
+
Use `dsh-ptc-runtime` to execute model programs against host-provided asynchronous functions. Requests return lossless JSON, captured logs, or structured failures; rejected promises indicate caller misuse. Providers isolate distinct state owners and declare whether source is an async function body or REPL statements. A provider may retain memory for an explicit owner until release; it never restores that memory from a Session. Language and isolation descriptors identify syntax and execution substrate, not security guarantees.
|
|
13
13
|
|
|
14
14
|
## Table of Contents
|
|
15
15
|
|
|
@@ -29,7 +29,7 @@ Choose this package when you compose a deployment that executes model-written pr
|
|
|
29
29
|
|
|
30
30
|
### Run a program
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
Call `resolve(request)` followed by `run(spec)` with a program and binding namespaces. Resolution validates cwd, timeout and sandbox choices and applies provider defaults. `programFormat` selects an async function body with top-level `await` and `return`, or REPL statements with top-level declarations, `await`, and a final expression. Lossless-JSON completion becomes `result.value`, text becomes `result.logs`, and failures become `result.error`.
|
|
33
33
|
|
|
34
34
|
```text
|
|
35
35
|
const spec = ctx.ptcRuntime.resolve({
|
|
@@ -44,6 +44,8 @@ const result = await ctx.ptcRuntime.run(spec)
|
|
|
44
44
|
|
|
45
45
|
Backends expose `language` and `isolation` as diagnostic descriptors; neither grants authority or proves confinement. [`dsh-ptc-runtime-node`](../ptc-runtime-node/README.md) executes erasable TypeScript in a fresh managed Node process under the resolved sandbox policy. The private [`dsh-experimental-ptc-runtime-python`](../../experimental/ptc-runtime-python/README.md) provider executes Python in a fresh CPython subprocess without file confinement. `sandboxMode` advertises a provider's deployment file-policy mode, or is absent when that capability is unsupported.
|
|
46
46
|
|
|
47
|
+
For the optional [Node in-memory mode](../ptc-runtime-node/README.md#persistent-repl), pass the same `stateOwner` object across runs and await `release(owner)` at the owner's end. Different object identities never share an environment; omitted owners use a temporary environment. Stateless providers ignore ownership. Calls for one retained owner must not overlap.
|
|
48
|
+
|
|
47
49
|
### Name your bindings portably
|
|
48
50
|
|
|
49
51
|
Binding-global and error-class names are language-portable: they must match `[A-Za-z_][A-Za-z0-9_]*`, avoid every portable target language's reserved words, and avoid backend-owned slots, so one namespace list is valid against every backend. A name like `$tools`, `lambda`, or `console` fails the run before it starts; the exact exclusion sets are part of the seam contract.
|
|
@@ -90,7 +92,6 @@ Binding-global and error-class names are language-portable: they must match the
|
|
|
90
92
|
|---|---|
|
|
91
93
|
| [`src/index.ts`](src/index.ts) | Plugin entry: abstract `PtcRuntime` service and the portable-identifier exclusion sets |
|
|
92
94
|
| [`src/types.ts`](src/types.ts) | Vocabulary: `PtcRunRequest`, `PtcRunSpec`, bindings, results, failures and sandbox facts |
|
|
93
|
-
| — | No runtime invariant companion is published; this package exposes no independent event sequence or mutable data relation beyond contracts enforced at its owning seam. |
|
|
94
95
|
|
|
95
96
|
</details>
|
|
96
97
|
|
|
@@ -126,7 +127,7 @@ No direct invalidation; the named consumer owns any request-prefix changes.
|
|
|
126
127
|
These limits define what the seam cannot do; they are current package constraints, not a task backlog.
|
|
127
128
|
|
|
128
129
|
- **`run()` is one-shot** — `logs` arrive only on the resolved `PtcRunResult`; the seam exposes no streaming-log or progress API for a live program's output.
|
|
129
|
-
- **
|
|
130
|
+
- **Retained memory is disposable**: providers may keep state for an explicit owner; restart, release, and provider-specific failures discard it. Programs, binding calls and results remain logged by consumers; live objects are neither serialized nor replayed.
|
|
130
131
|
- **Providers have different confinement capabilities** — the shipped Node provider enforces a resolved file policy, while the private experimental Python provider rejects an explicit policy. No container provider is supplied.
|
|
131
132
|
- **No uniform binding byte cap applies across providers** — each provider owns its transport limits; a binding can still allocate memory before its result reaches those limits.
|
|
132
133
|
|
|
@@ -138,9 +139,9 @@ These limits define what the seam cannot do; they are current package constraint
|
|
|
138
139
|
|
|
139
140
|
This Dev Note is working context for maintainers: undecided directions and open questions. It is explicitly non-authoritative — shipped behavior and limits live in the sections above and the package code.
|
|
140
141
|
|
|
141
|
-
####
|
|
142
|
+
#### Retained state
|
|
142
143
|
|
|
143
|
-
|
|
144
|
+
Retained state has no disk checkpoint or restoration protocol. Consumers must tolerate its loss and retain only model-visible programs and outcomes in the Session log.
|
|
144
145
|
|
|
145
146
|
#### Future: container backend
|
|
146
147
|
|
package/README.zh.md
CHANGED
|
@@ -9,7 +9,7 @@ kind: "package-reference"
|
|
|
9
9
|
|
|
10
10
|
## 概述
|
|
11
11
|
|
|
12
|
-
使用 `dsh-ptc-runtime
|
|
12
|
+
使用 `dsh-ptc-runtime` 执行调用宿主异步函数的模型程序。请求返回无损 JSON、捕获日志或结构化失败;Promise 拒绝表示调用方误用。提供方隔离不同状态所有者,并声明源码是异步函数体还是 REPL 语句。提供方可以为显式所有者保留内存,直到释放,但不会从 Session 恢复这些内存。语言与隔离描述符标识语法和执行基底,不提供安全保证。
|
|
13
13
|
|
|
14
14
|
## 目录
|
|
15
15
|
|
|
@@ -29,7 +29,7 @@ kind: "package-reference"
|
|
|
29
29
|
|
|
30
30
|
### 运行一个程序
|
|
31
31
|
|
|
32
|
-
|
|
32
|
+
传入程序和绑定命名空间,依次调用 `resolve(request)` 和 `run(spec)`。解析阶段验证 cwd、超时与沙盒选项,并应用提供方默认值。`programFormat` 选择支持顶层 `await`、`return` 的异步函数体,或支持顶层声明、`await` 和末尾表达式的 REPL 语句。无损 JSON 完成值进入 `result.value`,文本进入 `result.logs`,失败进入 `result.error`。
|
|
33
33
|
|
|
34
34
|
```text
|
|
35
35
|
const spec = ctx.ptcRuntime.resolve({
|
|
@@ -44,6 +44,8 @@ const result = await ctx.ptcRuntime.run(spec)
|
|
|
44
44
|
|
|
45
45
|
后端以 `language` 与 `isolation` 提供诊断描述符;两者都不授予权限或证明约束。[`dsh-ptc-runtime-node`](../ptc-runtime-node/README.zh.md) 在全新的受管 Node 进程中按已解析沙箱策略执行可擦除 TypeScript。私有的 [`dsh-experimental-ptc-runtime-python`](../../experimental/ptc-runtime-python/README.zh.md) 提供方在全新 CPython 子进程中执行 Python,不提供文件约束。`sandboxMode` 声明提供方的部署文件策略模式;不支持该能力时则缺省。
|
|
46
46
|
|
|
47
|
+
使用可选的[Node 内存保留模式](../ptc-runtime-node/README.zh.md#persistent-repl)时,跨调用传入同一个 `stateOwner` 对象,并在所有者结束时等待 `release(owner)`。不同对象不会共享环境;省略所有者时使用临时环境。无状态提供方忽略所有权。同一保留环境的调用不能重叠。
|
|
48
|
+
|
|
47
49
|
### 可移植地命名绑定
|
|
48
50
|
|
|
49
51
|
binding-global 与 error-class 名称是语言可移植的:必须匹配 `[A-Za-z_][A-Za-z0-9_]*`,避开每个可移植目标语言的保留字,并避开后端拥有的槽位,因此同一份命名空间列表对每个后端都有效。`$tools`、`lambda` 或 `console` 之类的名称会在运行开始前失败;确切的排除集是 seam 约定的一部分。
|
|
@@ -90,7 +92,6 @@ binding-global 与 error-class 名称是语言可移植的:必须匹配标识
|
|
|
90
92
|
|---|---|
|
|
91
93
|
| [`src/index.ts`](src/index.ts) | 插件入口:抽象 `PtcRuntime` 服务与可移植标识符排除集 |
|
|
92
94
|
| [`src/types.ts`](src/types.ts) | 词汇:`PtcRunRequest`、`PtcRunSpec`、绑定、结果、失败与沙箱事实 |
|
|
93
|
-
| — | 不发布运行时不变式伴生入口;本包不公开任何独立的事件序列或可变数据关系,相关约束仅由其所属 seam 的约定实施。 |
|
|
94
95
|
|
|
95
96
|
</details>
|
|
96
97
|
|
|
@@ -126,7 +127,7 @@ binding-global 与 error-class 名称是语言可移植的:必须匹配标识
|
|
|
126
127
|
这些限制说明 seam 不能做什么;它们是当前包约束,不是任务积压。
|
|
127
128
|
|
|
128
129
|
- **`run()` 是一次性的**——`logs` 只有在 `PtcRunResult` resolve 后才能获得;seam 不提供正在运行的程序所产生输出的流式日志或进度接口。
|
|
129
|
-
-
|
|
130
|
+
- **保留内存可以丢失**:提供方可以为显式所有者保留状态;重启、释放以及提供方指定的失败会清除状态。程序、绑定调用和结果仍由消费者记录;运行中的对象不会被序列化或回放。
|
|
130
131
|
- **提供方的约束能力不同**——已发布 Node 提供方强制执行已解析文件策略,私有实验性 Python 提供方拒绝显式策略。不提供容器提供方。
|
|
131
132
|
- **提供方之间没有统一的绑定字节上限**——各提供方负责自己的传输限制;绑定仍可能在结果到达这些限制前分配内存。
|
|
132
133
|
|
|
@@ -138,9 +139,9 @@ binding-global 与 error-class 名称是语言可移植的:必须匹配标识
|
|
|
138
139
|
|
|
139
140
|
本开发备注是维护者的工作上下文:尚未决定的方向与开放问题。它明确不具权威性——已交付的行为与限制以上文和包代码为准。
|
|
140
141
|
|
|
141
|
-
####
|
|
142
|
+
#### 保留状态
|
|
142
143
|
|
|
143
|
-
|
|
144
|
+
保留状态没有磁盘检查点或恢复协议。消费者必须容忍状态丢失,并在 Session 日志中记录模型可见的程序与结果。
|
|
144
145
|
|
|
145
146
|
#### 未来:容器后端
|
|
146
147
|
|
package/lib/index.js
CHANGED
|
@@ -141,10 +141,24 @@ const PORTABLE_RESERVED_WORDS = new Set([
|
|
|
141
141
|
* Registers one `ctx.ptcRuntime` implementation. Program, budget, abort, and substrate
|
|
142
142
|
* failures resolve in {@link PtcRunResult}; only Service Definition contract misuse rejects. Implementations bridge
|
|
143
143
|
* structured-cloneable bindings, materialize each declared namespace rejection
|
|
144
|
-
* class, treat programs as hostile peers, isolate
|
|
144
|
+
* class, treat programs as hostile peers, isolate distinct state owners, and
|
|
145
145
|
* terminate and await in-flight runs during disposal.
|
|
146
146
|
*/
|
|
147
147
|
var PtcRuntime = class extends Service {
|
|
148
|
+
/** Source evaluation form, independent of whether the provider retains state for an owner. */
|
|
149
|
+
get programFormat() {
|
|
150
|
+
return "function-body";
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Release an owner's retained environment and await its execution resources.
|
|
154
|
+
* Stateless providers have no retained resources to release.
|
|
155
|
+
* @param owner - The exact object supplied as the request's state owner.
|
|
156
|
+
* @returns Completion after all owned execution resources have been released.
|
|
157
|
+
* @throws When managed resource cleanup fails.
|
|
158
|
+
*/
|
|
159
|
+
release(owner) {
|
|
160
|
+
return Promise.resolve();
|
|
161
|
+
}
|
|
148
162
|
/** Provider-owned program usage guidance for consumers to present alongside the source language. */
|
|
149
163
|
get executionInstructions() {
|
|
150
164
|
return "";
|
package/lib/types/index.d.ts
CHANGED
|
@@ -63,7 +63,7 @@ declare module '@deepseek-ai/cordis' {
|
|
|
63
63
|
* Registers one `ctx.ptcRuntime` implementation. Program, budget, abort, and substrate
|
|
64
64
|
* failures resolve in {@link PtcRunResult}; only Service Definition contract misuse rejects. Implementations bridge
|
|
65
65
|
* structured-cloneable bindings, materialize each declared namespace rejection
|
|
66
|
-
* class, treat programs as hostile peers, isolate
|
|
66
|
+
* class, treat programs as hostile peers, isolate distinct state owners, and
|
|
67
67
|
* terminate and await in-flight runs during disposal.
|
|
68
68
|
*/
|
|
69
69
|
export declare abstract class PtcRuntime extends Service {
|
|
@@ -84,6 +84,16 @@ export declare abstract class PtcRuntime extends Service {
|
|
|
84
84
|
* `'process'`, `'container'`.
|
|
85
85
|
*/
|
|
86
86
|
abstract readonly isolation: string;
|
|
87
|
+
/** Source evaluation form, independent of whether the provider retains state for an owner. */
|
|
88
|
+
get programFormat(): 'function-body' | 'repl';
|
|
89
|
+
/**
|
|
90
|
+
* Release an owner's retained environment and await its execution resources.
|
|
91
|
+
* Stateless providers have no retained resources to release.
|
|
92
|
+
* @param owner - The exact object supplied as the request's state owner.
|
|
93
|
+
* @returns Completion after all owned execution resources have been released.
|
|
94
|
+
* @throws When managed resource cleanup fails.
|
|
95
|
+
*/
|
|
96
|
+
release(owner: object): Promise<void>;
|
|
87
97
|
/** Provider-owned program usage guidance for consumers to present alongside the source language. */
|
|
88
98
|
get executionInstructions(): string;
|
|
89
99
|
/** Deployment file-policy mode, or undefined for a provider without confinement support. */
|
package/lib/types/types.d.ts
CHANGED
|
@@ -69,11 +69,18 @@ export interface PtcBindingNamespace {
|
|
|
69
69
|
export interface PtcRunRequest {
|
|
70
70
|
/**
|
|
71
71
|
* The program source, in the runtime's {@link ../index.ts | language}. It
|
|
72
|
-
*
|
|
73
|
-
*
|
|
72
|
+
* follows the provider's programFormat: an async function body supports
|
|
73
|
+
* top-level `await` and `return`; a REPL supports top-level declarations,
|
|
74
|
+
* `await`, and a final expression. The completion value becomes
|
|
74
75
|
* {@link PtcRunResult.value}.
|
|
75
76
|
*/
|
|
76
77
|
program: string;
|
|
78
|
+
/**
|
|
79
|
+
* Object-identity owner for optional in-memory state. Omission requests a fresh
|
|
80
|
+
* environment. Consumers must await runtime.release(owner) when the owner ends.
|
|
81
|
+
* Stateless providers ignore this field; retained state is never durable.
|
|
82
|
+
*/
|
|
83
|
+
stateOwner?: object;
|
|
77
84
|
/** Host functions exposed to the program, one global object per namespace. */
|
|
78
85
|
bindings: PtcBindingNamespace[];
|
|
79
86
|
/** Working directory in the mounted filesystem and subprocess execution world. */
|
|
@@ -110,7 +117,7 @@ export interface PtcRunSandbox {
|
|
|
110
117
|
}
|
|
111
118
|
/**
|
|
112
119
|
* Why a run failed. The kinds are orthogonal outcomes reported independently
|
|
113
|
-
* (per docs/defensive-patterns.md): a budget expiry is not an exception, an
|
|
120
|
+
* (per docs/defensive-patterns/general.md): a budget expiry is not an exception, an
|
|
114
121
|
* abort is not a timeout, and a substrate death is neither.
|
|
115
122
|
*
|
|
116
123
|
* - `'exception'` — the program threw or failed to parse/transform.
|
|
@@ -137,7 +144,7 @@ export interface PtcRunResult {
|
|
|
137
144
|
/** Applied file policy and observed denial, when the provider enforces file policy. */
|
|
138
145
|
sandbox?: PtcRunSandbox;
|
|
139
146
|
/**
|
|
140
|
-
* The program's completion value (
|
|
147
|
+
* The program's completion value (a return or final REPL expression), when it ran to
|
|
141
148
|
* completion and the value crossed the runtime's lossless-JSON boundary.
|
|
142
149
|
* Invalid or over-limit completions fail the run instead of substituting a
|
|
143
150
|
* rendered string; a failed or value-less run leaves this absent.
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@x1a0f3n9/dsh-ptc-runtime",
|
|
3
3
|
"description": "Abstract PTC execution seam (ctx.ptcRuntime) for the DeepSeek Harness",
|
|
4
|
-
"version": "0.1
|
|
4
|
+
"version": "0.2.1-rc.3",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public"
|
|
7
7
|
},
|
|
@@ -27,11 +27,11 @@
|
|
|
27
27
|
],
|
|
28
28
|
"license": "MIT",
|
|
29
29
|
"peerDependencies": {
|
|
30
|
-
"@deepseek-ai/cordis": "~4.0.
|
|
31
|
-
"@x1a0f3n9/dsh-sandbox": "0.1
|
|
30
|
+
"@deepseek-ai/cordis": "~4.0.5",
|
|
31
|
+
"@x1a0f3n9/dsh-sandbox": "0.2.1-rc.3"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
|
-
"@deepseek-ai/cordis": "~4.0.
|
|
35
|
-
"@x1a0f3n9/dsh-sandbox": "0.1
|
|
34
|
+
"@deepseek-ai/cordis": "~4.0.5",
|
|
35
|
+
"@x1a0f3n9/dsh-sandbox": "0.2.1-rc.3"
|
|
36
36
|
}
|
|
37
37
|
}
|