@deepseek-ai/dsh-experimental-webworker-runtime 0.2.0-rc.2 → 0.2.1-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
@@ -15,8 +15,8 @@
15
15
  en: 4e53164159b5ce41
16
16
  zh: 89582dc0294d0776
17
17
  /deepseek-ai-dsh-experimental-webworker-runtime/use-this-package:
18
- en: 7c80a0d046f93fb1
19
- zh: a9fdcc7a9f9a8828
18
+ en: 6dd3d8495bc6ee61
19
+ zh: 71f7da310233a37b
20
20
  /deepseek-ai-dsh-experimental-webworker-runtime/model-experience:
21
21
  en: 61fce9b4c7dc96e6
22
22
  zh: dc2d931063a38327
@@ -24,8 +24,8 @@
24
24
  en: ca75c51c89c2c9b0
25
25
  zh: 64715dc7e6d02f71
26
26
  /deepseek-ai-dsh-experimental-webworker-runtime/known-limitations-and-deferred-work:
27
- en: 6fe586817a42fdad
28
- zh: c19ab678d61e82d3
27
+ en: 1bc41bcc7a7e065e
28
+ zh: 9e9558ff06c508bc
29
29
  /deepseek-ai-dsh-experimental-webworker-runtime/known-limitations-and-deferred-work/dev-note:
30
- en: f14ab6f2449c3c53
31
- zh: e3f7d3a3d772c0b7
30
+ en: e67f633dc6fe7773
31
+ zh: e88aeb617ffb74ea
package/README.md CHANGED
@@ -34,7 +34,7 @@ Three build artifacts and one source-owned process layer:
34
34
 
35
35
  Acceptance lives in `apps/web/tests/preview-boot.e2e.ts`, which serves the real built pages and drives the pre-boot chooser plus Worker activation in headless Chromium. The empty selection exercises first-run startup. The `vfs-example` overlay supplies ordinary workspace files and plaintext persistence artifacts for cold Workspace/Session discovery, tool presentation, subagent navigation, and history paging without a model request. The [packer](../webworker-packer/README.md) prepares current-generation successors from committed historical logs in Node; those source logs remain byte-identical in the overlay. The fixture generator owns the acceptance test's current projection cache. The chooser reserves WebFS as a separate user-authorized source; that provider does not read the built-in fixture.
36
36
 
37
- The [built-bundle import sweep](tests/compile/transform-corpus-check.ts) checks bare Node imports after the library build. Its Dockkit exception accepts Node’s unknown-`.css`-extension refusal for any stylesheet rather than one pinned path; another extension, error code, or message, and an unexpectedly successful exempt import, remain errors. See the [stylesheet exemption decision](../../../.agents/notes/implemented/bug-fix/2026-09-10-built-bundle-css-exemption.md).
37
+ The [built-bundle import sweep](tests/compile/transform-corpus-check.ts) checks bare Node imports after the library build. Its Dockkit exception accepts Node’s unknown-`.css`-extension refusal for any stylesheet rather than one pinned path; another extension, error code, or message, and an unexpectedly successful exempt import, remain errors.
38
38
 
39
39
  -----
40
40
 
@@ -53,6 +53,8 @@ None; this package neither assembles nor sends a provider request.
53
53
 
54
54
  - **The worker composition writes plaintext session logs** (`compression: 'none'` boot patch): it carries no Zstandard codec, so exported logs are `.jsonl`, never `.jsonl.zstd`.
55
55
  - **`node:dns/promises`, `node:vm`, `node:net`, `node:sqlite`, `node:worker_threads` are structural stubs**: every call reports its refusal on the console and throws. Rows needing native DNS, a real process, or realm isolation cannot run here.
56
+ - **`node:assert/strict` supports truthiness assertions only**: for falsy values, the callable default and `ok` throw `ERR_ASSERTION` with the supplied message or generic text, or rethrow a supplied Error unchanged. Other assertion APIs are absent.
57
+ - **Native TLS listeners require a Node Host**: the worker's `node:https.createServer` rejects activation rather than substituting plaintext. The preview's internal HTTP tunnel does not bind sockets; browser-facing HTTPS belongs to its deployment server.
56
58
  - **Desktop product telemetry is unavailable**: `got.post` reports an explicit worker-host refusal. Got and its Node HTTP dependencies are excluded from the browser image; Desktop reporting remains disabled in the preview composition.
57
59
  - **Host package commands are unavailable**: `execa` reports an explicit worker-host refusal; the preview cannot run pnpm, install plugins, or install native dependencies.
58
60
  - **PTC Node programs are unavailable**: the process shim exposes `/dsh/bin/node` as its executable identity so the provider can activate, but the Worker has neither a Node executable nor `stripTypeScriptTypes`. Program execution fails before launching a child.
@@ -74,5 +76,3 @@ None; this package neither assembles nor sends a provider request.
74
76
  None.
75
77
 
76
78
  </details>
77
-
78
- **Runtime invariant:** No companion is published. This package is pre-Cordis platform glue — the tree it boots runs the product packages' own invariants, and the assembly's contracts (image contract gate, tunnel refusals) fail loud at boot rather than drifting at run time.
package/README.zh.md CHANGED
@@ -34,7 +34,7 @@ kind: "package-library"
34
34
 
35
35
  验收在 `apps/web/tests/preview-boot.e2e.ts`:静态服务真实构建页面,在 headless Chromium 里驱动 pre-boot 选择面板与 Worker 激活。空白选择验证首次启动;`vfs-example` overlay 提供普通 workspace 文件与明文 persistence 产物,无需模型请求即可验证 Workspace/Session 冷发现、工具呈现、subagent 导航和历史分页。[打包器](../webworker-packer/README.zh.md)在 Node 中根据已提交的历史日志准备当前代后继文件;这些源日志在 overlay 中逐字节保持不变。fixture 生成器负责验收测试的当前投影缓存。选择面板为 WebFS 保留独立的用户授权来源;该 provider 不读取内置 fixture。
36
36
 
37
- [已构建 bundle 导入检查](tests/compile/transform-corpus-check.ts)在库构建后检查裸 Node 导入。Dockkit 例外接受 Node 针对任意样式表报告的未知 `.css` 扩展名错误,而不限定某一固定路径;其他扩展名、错误码或消息,以及意外成功的豁免导入,仍然报错。参见 [样式表豁免决策](../../../.agents/notes/implemented/bug-fix/2026-09-10-built-bundle-css-exemption.zh.md)。
37
+ [已构建 bundle 导入检查](tests/compile/transform-corpus-check.ts)在库构建后检查裸 Node 导入。Dockkit 例外接受 Node 针对任意样式表报告的未知 `.css` 扩展名错误,而不限定某一固定路径;其他扩展名、错误码或消息,以及意外成功的豁免导入,仍然报错。
38
38
 
39
39
  -----
40
40
 
@@ -53,6 +53,8 @@ kind: "package-library"
53
53
 
54
54
  - **worker 组合写明文会话日志**(`compression: 'none'` boot patch):不带 Zstandard 编解码器,导出日志是 `.jsonl`,不会是 `.jsonl.zstd`。
55
55
  - **`node:dns/promises`、`node:vm`、`node:net`、`node:sqlite`、`node:worker_threads` 是结构化 stub**:每次调用在 console 报告拒绝并抛出。需要原生 DNS、真进程或真 realm 隔离的行在此无法运行。
56
+ - **`node:assert/strict` 仅支持真值断言**:对于假值,可调用的默认导出和 `ok` 使用传入的消息或通用文本抛出 `ERR_ASSERTION`,或原样抛出传入的 Error。其他断言 API 未提供。
57
+ - **原生 TLS 监听器需要 Node Host**:worker 的 `node:https.createServer` 会拒绝激活,不会替换成明文。预览内部的 HTTP 隧道不绑定套接字;面向浏览器的 HTTPS 由部署服务器提供。
56
58
  - **桌面产品埋点不可用**:`got.post` 明确报告 worker host 不支持该调用。浏览器镜像不包含 Got 及其 Node HTTP 依赖;预览组合不启用桌面上报。
57
59
  - **宿主包管理命令不可用**:`execa` 明确报告 worker host 不支持该调用;预览无法运行 pnpm、安装插件或安装原生依赖。
58
60
  - **PTC Node 程序不可用**:process shim 用 `/dsh/bin/node` 表示可执行文件身份,使 provider 能够激活,但 Worker 既没有 Node 可执行文件,也没有 `stripTypeScriptTypes`。程序执行会在启动子进程前失败。
@@ -74,5 +76,3 @@ kind: "package-library"
74
76
  无。
75
77
 
76
78
  </details>
77
-
78
- **运行时不变式:** 不发布伴生入口。这是 Cordis 启动前的平台 glue;其启动的产品树运行各包自己的不变式,image 与 tunnel 约定在 boot 时失败。
package/lib/index.js CHANGED
@@ -721,6 +721,8 @@ const MODULE_PROXIES = {
721
721
  "node:buffer": "./node/builtin_modules/implemented/buffer.ts",
722
722
  "node:http": "./node/builtin_modules/implemented/http.ts",
723
723
  "node:async_hooks": "./node/builtin_modules/implemented/async_hooks.ts",
724
+ "node:assert/strict": "./node/builtin_modules/implemented/assert/strict.ts",
725
+ "assert/strict": "./node/builtin_modules/implemented/assert/strict.ts",
724
726
  "node:util": "./node/builtin_modules/implemented/util.ts",
725
727
  "node:util/types": "./node/builtin_modules/implemented/util/types.ts",
726
728
  "node:events": "./node/builtin_modules/implemented/events.ts",
@@ -730,6 +732,7 @@ const MODULE_PROXIES = {
730
732
  "tty": "./node/builtin_modules/implemented/tty.ts",
731
733
  "node:zlib": "./node/builtin_modules/implemented/zlib.ts",
732
734
  "node:child_process": "./node/builtin_modules/implemented/child_process.ts",
735
+ "node:https": "./node/builtin_modules/mock/https.ts",
733
736
  "node:dns/promises": "./node/builtin_modules/mock/dns/promises.ts",
734
737
  "dns/promises": "./node/builtin_modules/mock/dns/promises.ts",
735
738
  "node:net": "./node/builtin_modules/mock/net.ts",
@@ -0,0 +1,16 @@
1
+ /** Truthiness assertions for Worker modules importing `node:assert/strict`. */
2
+ /**
3
+ * Require a truthy value; falsy values throw `ERR_ASSERTION` or the supplied Error.
4
+ * @param value - Value to test.
5
+ * @param message - Failure message or Error to throw unchanged; omitted messages use generic text.
6
+ * @returns Nothing; successful completion narrows the value to a truthy value.
7
+ */
8
+ export declare function ok(value: unknown, message?: string | Error): asserts value;
9
+ /** CommonJS interop marker for lowered ESM default imports. */
10
+ export declare const __esModule = true;
11
+ /** Callable truthiness assertion with the identical `ok` method; other assertion APIs are absent. */
12
+ declare const assert: typeof ok & {
13
+ ok: typeof ok;
14
+ };
15
+ export default assert;
16
+ //# sourceMappingURL=strict.d.ts.map
@@ -48,8 +48,7 @@ export declare function availableParallelism(): number;
48
48
  export declare function cpus(): CpuInfo[];
49
49
  /**
50
50
  * Network interfaces.
51
- * @returns an empty record — the worker webserver binds the loopback literal, so
52
- * no LAN address is ever derived.
51
+ * @returns an empty record — a worker has no view of the host's network.
53
52
  */
54
53
  export declare function networkInterfaces(): NodeJS.Dict<NetworkInterfaceInfo[]>;
55
54
  /** OS constants: only the signal table is read (terminal signal name mapping). */
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Reject native TLS instead of serving plaintext for an HTTPS configuration.
3
+ * @returns Never; a browser worker cannot bind a TLS socket.
4
+ */
5
+ export declare function createServer(): never;
6
+ /** CommonJS interop marker for the worker module loader. */
7
+ export declare const __esModule = true;
8
+ /** CommonJS exports for the worker's explicit TLS-listener refusal. */
9
+ declare const _default: {
10
+ createServer: typeof createServer;
11
+ };
12
+ export default _default;
13
+ //# sourceMappingURL=https.d.ts.map
@@ -6,26 +6,27 @@ export declare const createModels: (...args: never[]) => never;
6
6
  export declare const getSupportedThinkingLevels: (...args: never[]) => never;
7
7
  /** Context-overflow predicate (unavailable). */
8
8
  export declare const isContextOverflow: (...args: never[]) => never;
9
+ /** Collection of every builtin provider (unavailable). */
10
+ export declare const builtinModels: (...args: never[]) => never;
9
11
  /**
10
- * Installed catalog providers, read while `llm-pi-ai` activates. Each carries the
11
- * api-key auth marker the adapter filters on, and no models: the provider
12
- * directory therefore matches the served deployment while every request path
13
- * lands on a loud symbol above.
12
+ * Installed catalog providers, read while `llm-pi-ai` activates. `llm-pi-ai`
13
+ * registers the whole catalog as configurable the moment it mounts and rejects
14
+ * an empty registration, so these carry pi-ai's ids instead of being an empty
15
+ * list. Each has the api-key auth marker the adapter filters on, and no
16
+ * models, so every request path lands on a loud symbol above.
14
17
  * @returns one entry per builtin provider.
15
18
  */
16
19
  export declare function builtinProviders(): unknown[];
17
- /**
18
- * Provider route ids of the installed catalog. `llm-pi-ai` registers the whole
19
- * catalog as configurable the moment it mounts and rejects an empty
20
- * registration, so these are pi-ai's real ids rather than an empty list.
21
- * @returns the builtin provider ids.
22
- */
23
- export declare function getBuiltinProviders(): string[];
24
20
  /**
25
21
  * Models of one installed catalog provider.
26
22
  * @returns no models.
27
23
  */
28
24
  export declare function getBuiltinModels(): unknown[];
25
+ /**
26
+ * Models of every type of one installed catalog provider.
27
+ * @returns no models.
28
+ */
29
+ export declare function getAllBuiltinModels(): unknown[];
29
30
  /** Anthropic messages API binding (unavailable). */
30
31
  export declare const anthropicMessagesApi: (...args: never[]) => never;
31
32
  /** OpenAI completions API binding (unavailable). */
@@ -40,9 +41,10 @@ declare const _default: {
40
41
  createModels: (...args: never[]) => never;
41
42
  getSupportedThinkingLevels: (...args: never[]) => never;
42
43
  isContextOverflow: (...args: never[]) => never;
44
+ builtinModels: (...args: never[]) => never;
43
45
  builtinProviders: typeof builtinProviders;
44
46
  getBuiltinModels: typeof getBuiltinModels;
45
- getBuiltinProviders: typeof getBuiltinProviders;
47
+ getAllBuiltinModels: typeof getAllBuiltinModels;
46
48
  anthropicMessagesApi: (...args: never[]) => never;
47
49
  openAICompletionsApi: (...args: never[]) => never;
48
50
  openAIResponsesApi: (...args: never[]) => never;
@@ -84,8 +84,7 @@ export interface WorkerHostOptions {
84
84
  readonly configPath?: string;
85
85
  /**
86
86
  * Inner arguments the tree parses. The default binds the web server to the
87
- * loopback authority the tunnel synthesizes, which also keeps
88
- * `networkInterfaces()` out of the trust snapshot.
87
+ * loopback authority the tunnel synthesizes.
89
88
  */
90
89
  readonly cmdlineArgs?: readonly string[];
91
90
  /** Port named on the default command line; defaults to {@link DEFAULT_PORT}. */
package/lib/worker.js CHANGED
@@ -4797,7 +4797,35 @@ function installAsyncContextHooks() {
4797
4797
  });
4798
4798
  }
4799
4799
  //#endregion
4800
- //#region ../../../node_modules/.pnpm/@noble+hashes@2.3.0/node_modules/@noble/hashes/_u64.js
4800
+ //#region src/node/builtin_modules/implemented/assert/strict.ts
4801
+ var strict_exports = /* @__PURE__ */ __exportAll({
4802
+ __esModule: () => true,
4803
+ default: () => assert,
4804
+ ok: () => ok
4805
+ });
4806
+ /** Truthiness assertions for Worker modules importing `node:assert/strict`. */
4807
+ /**
4808
+ * Require a truthy value; falsy values throw `ERR_ASSERTION` or the supplied Error.
4809
+ * @param value - Value to test.
4810
+ * @param message - Failure message or Error to throw unchanged; omitted messages use generic text.
4811
+ * @returns Nothing; successful completion narrows the value to a truthy value.
4812
+ */
4813
+ function ok(value, message) {
4814
+ if (value) return;
4815
+ if (message instanceof Error) throw message;
4816
+ throw Object.assign(new Error(message ?? "The expression evaluated to a falsy value."), {
4817
+ name: "AssertionError",
4818
+ code: "ERR_ASSERTION",
4819
+ actual: value,
4820
+ expected: true,
4821
+ operator: "==",
4822
+ generatedMessage: message === void 0
4823
+ });
4824
+ }
4825
+ /** Callable truthiness assertion with the identical `ok` method; other assertion APIs are absent. */
4826
+ const assert = Object.assign(ok, { ok });
4827
+ //#endregion
4828
+ //#region ../../../node_modules/.pnpm/@noble+hashes@2.4.0/node_modules/@noble/hashes/_u64.js
4801
4829
  const U32_MASK64 = /* @__PURE__ */ (() => BigInt(2 ** 32 - 1))();
4802
4830
  const _32n = /* @__PURE__ */ BigInt(32);
4803
4831
  function fromBig(n, le = false) {
@@ -4848,7 +4876,7 @@ const add4H = (low, Ah, Bh, Ch, Dh) => Ah + Bh + Ch + Dh + (low / 2 ** 32 | 0) |
4848
4876
  const add5L = (Al, Bl, Cl, Dl, El) => (Al >>> 0) + (Bl >>> 0) + (Cl >>> 0) + (Dl >>> 0) + (El >>> 0);
4849
4877
  const add5H = (low, Ah, Bh, Ch, Dh, Eh) => Ah + Bh + Ch + Dh + Eh + (low / 2 ** 32 | 0) | 0;
4850
4878
  //#endregion
4851
- //#region ../../../node_modules/.pnpm/@noble+hashes@2.3.0/node_modules/@noble/hashes/utils.js
4879
+ //#region ../../../node_modules/.pnpm/@noble+hashes@2.4.0/node_modules/@noble/hashes/utils.js
4852
4880
  /**
4853
4881
  * Checks if something is Uint8Array. Be careful: nodejs Buffer will return true.
4854
4882
  * @param a - value to test
@@ -4908,6 +4936,12 @@ function abytes(value, length, title = "") {
4908
4936
  const aobject = (value, label) => {
4909
4937
  if (value === null || typeof value !== "object" || Array.isArray(value)) throw new TypeError((label === "object" ? "" : `"${label}" `) + "expected object, got type=" + typeof value);
4910
4938
  };
4939
+ const aopts = (value, label) => {
4940
+ aobject(value, label);
4941
+ const proto = Object.getPrototypeOf(value);
4942
+ if (proto !== Object.prototype && proto !== null) throw new TypeError(`"${label}" expected plain object`);
4943
+ if (Object.hasOwn(value, "__proto__")) throw new TypeError(`"${label}.__proto__" is not allowed`);
4944
+ };
4911
4945
  /**
4912
4946
  * Asserts a hash instance has not been destroyed or finished.
4913
4947
  * @param instance - hash instance to validate
@@ -5005,7 +5039,7 @@ function rotl(word, shift) {
5005
5039
  * @param defaults - base option object
5006
5040
  * @param opts - user overrides
5007
5041
  * @param title - label included in thrown override errors
5008
- * @returns Merged option object. The merge mutates `defaults` in place.
5042
+ * @returns Fresh merged option object with a null prototype.
5009
5043
  * @throws On wrong argument types. {@link TypeError}
5010
5044
  * @example
5011
5045
  * Merge user overrides onto default options.
@@ -5014,9 +5048,9 @@ function rotl(word, shift) {
5014
5048
  * ```
5015
5049
  */
5016
5050
  function checkOpts(defaults, opts, title = "opts") {
5017
- aobject(defaults, "defaults");
5018
- if (opts !== void 0) aobject(opts, title);
5019
- return Object.assign(defaults, opts);
5051
+ aopts(defaults, "defaults");
5052
+ if (opts !== void 0) aopts(opts, title);
5053
+ return Object.assign(Object.create(null), defaults, opts);
5020
5054
  }
5021
5055
  /**
5022
5056
  * Creates a callable hash function from a stateful class constructor.
@@ -5074,7 +5108,7 @@ const oidNist = (suffix) => ({ oid: Uint8Array.from([
5074
5108
  suffix
5075
5109
  ]) });
5076
5110
  //#endregion
5077
- //#region ../../../node_modules/.pnpm/@noble+hashes@2.3.0/node_modules/@noble/hashes/_md.js
5111
+ //#region ../../../node_modules/.pnpm/@noble+hashes@2.4.0/node_modules/@noble/hashes/_md.js
5078
5112
  /**
5079
5113
  * Internal Merkle-Damgard hash utils.
5080
5114
  * @module
@@ -5260,7 +5294,7 @@ const SHA512_IV = /* @__PURE__ */ Uint32Array.from([
5260
5294
  327033209
5261
5295
  ]);
5262
5296
  //#endregion
5263
- //#region ../../../node_modules/.pnpm/@noble+hashes@2.3.0/node_modules/@noble/hashes/legacy.js
5297
+ //#region ../../../node_modules/.pnpm/@noble+hashes@2.4.0/node_modules/@noble/hashes/legacy.js
5264
5298
  /**
5265
5299
 
5266
5300
  SHA1 (RFC 3174), MD5 (RFC 1321), and RIPEMD160 legacy, weak hash functions.
@@ -5368,7 +5402,7 @@ var _SHA1 = class extends HashMD {
5368
5402
  */
5369
5403
  const sha1 = /* @__PURE__ */ createHasher(() => new _SHA1());
5370
5404
  //#endregion
5371
- //#region ../../../node_modules/.pnpm/@noble+hashes@2.3.0/node_modules/@noble/hashes/sha2.js
5405
+ //#region ../../../node_modules/.pnpm/@noble+hashes@2.4.0/node_modules/@noble/hashes/sha2.js
5372
5406
  /**
5373
5407
  * SHA2 hash function. A.k.a. sha256, sha384, sha512, sha512_224, sha512_256.
5374
5408
  * SHA256 is the fastest hash implementable in JS, even faster than Blake3.
@@ -12796,7 +12830,7 @@ var http_exports = /* @__PURE__ */ __exportAll({
12796
12830
  Server: () => FakeServer,
12797
12831
  ServerResponse: () => ServerResponse,
12798
12832
  __esModule: () => true,
12799
- createServer: () => createServer$1,
12833
+ createServer: () => createServer$2,
12800
12834
  default: () => http_default,
12801
12835
  get: () => get,
12802
12836
  request: () => request,
@@ -12906,7 +12940,7 @@ var ServerResponse = class {};
12906
12940
  * @param listener - the request listener the webserver installs.
12907
12941
  * @returns the fake Server.
12908
12942
  */
12909
- function createServer$1(listener) {
12943
+ function createServer$2(listener) {
12910
12944
  if (listener !== void 0) {
12911
12945
  captured = listener;
12912
12946
  for (const resolve of waiting) resolve(listener);
@@ -12945,7 +12979,7 @@ const STATUS_CODES = {
12945
12979
  };
12946
12980
  /** CommonJS default export: the members `require()` hands a caller of this module. */
12947
12981
  var http_default = {
12948
- createServer: createServer$1,
12982
+ createServer: createServer$2,
12949
12983
  request,
12950
12984
  get,
12951
12985
  STATUS_CODES,
@@ -12953,6 +12987,23 @@ var http_default = {
12953
12987
  ServerResponse
12954
12988
  };
12955
12989
  //#endregion
12990
+ //#region src/node/builtin_modules/mock/https.ts
12991
+ /** Native TLS listeners are unavailable in a browser worker's HTTP tunnel. */
12992
+ var https_exports = /* @__PURE__ */ __exportAll({
12993
+ __esModule: () => true,
12994
+ createServer: () => createServer$1,
12995
+ default: () => https_default
12996
+ });
12997
+ /**
12998
+ * Reject native TLS instead of serving plaintext for an HTTPS configuration.
12999
+ * @returns Never; a browser worker cannot bind a TLS socket.
13000
+ */
13001
+ function createServer$1() {
13002
+ throw notAvailableError("node:https", "createServer");
13003
+ }
13004
+ /** CommonJS exports for the worker's explicit TLS-listener refusal. */
13005
+ var https_default = { createServer: createServer$1 };
13006
+ //#endregion
12956
13007
  //#region src/node/builtin_modules/implemented/module.ts
12957
13008
  /**
12958
13009
  * `node:module` for the worker: `createRequire` hands out the worker module
@@ -12981,6 +13032,7 @@ function createRequire(base) {
12981
13032
  /** Builtin specifiers the module proxy table answers (without the `node:` prefix). */
12982
13033
  const builtinModules = [
12983
13034
  "assert",
13035
+ "assert/strict",
12984
13036
  "async_hooks",
12985
13037
  "buffer",
12986
13038
  "child_process",
@@ -13121,8 +13173,7 @@ function cpus() {
13121
13173
  }
13122
13174
  /**
13123
13175
  * Network interfaces.
13124
- * @returns an empty record — the worker webserver binds the loopback literal, so
13125
- * no LAN address is ever derived.
13176
+ * @returns an empty record — a worker has no view of the host's network.
13126
13177
  */
13127
13178
  function networkInterfaces() {
13128
13179
  return {};
@@ -16922,7 +16973,7 @@ var require_shell = /* @__PURE__ */ __commonJSMin(((exports) => {
16922
16973
  ]);
16923
16974
  }));
16924
16975
  //#endregion
16925
- //#region ../../../node_modules/.pnpm/picomatch@4.0.4/node_modules/picomatch/lib/constants.js
16976
+ //#region ../../../node_modules/.pnpm/picomatch@4.0.7/node_modules/picomatch/lib/constants.js
16926
16977
  var require_constants = /* @__PURE__ */ __commonJSMin(((exports, module) => {
16927
16978
  const WIN_SLASH = "\\\\/";
16928
16979
  const WIN_NO_SLASH = `[^${WIN_SLASH}]`;
@@ -17091,7 +17142,7 @@ var require_constants = /* @__PURE__ */ __commonJSMin(((exports, module) => {
17091
17142
  };
17092
17143
  }));
17093
17144
  //#endregion
17094
- //#region ../../../node_modules/.pnpm/picomatch@4.0.4/node_modules/picomatch/lib/utils.js
17145
+ //#region ../../../node_modules/.pnpm/picomatch@4.0.7/node_modules/picomatch/lib/utils.js
17095
17146
  var require_utils = /* @__PURE__ */ __commonJSMin(((exports) => {
17096
17147
  const { REGEX_BACKSLASH, REGEX_REMOVE_BACKSLASH, REGEX_SPECIAL_CHARS, REGEX_SPECIAL_CHARS_GLOBAL } = require_constants();
17097
17148
  exports.isObject = (val) => val !== null && typeof val === "object" && !Array.isArray(val);
@@ -17139,7 +17190,7 @@ var require_utils = /* @__PURE__ */ __commonJSMin(((exports) => {
17139
17190
  };
17140
17191
  }));
17141
17192
  //#endregion
17142
- //#region ../../../node_modules/.pnpm/picomatch@4.0.4/node_modules/picomatch/lib/scan.js
17193
+ //#region ../../../node_modules/.pnpm/picomatch@4.0.7/node_modules/picomatch/lib/scan.js
17143
17194
  var require_scan = /* @__PURE__ */ __commonJSMin(((exports, module) => {
17144
17195
  const utils = require_utils();
17145
17196
  const { CHAR_ASTERISK, CHAR_AT, CHAR_BACKWARD_SLASH, CHAR_COMMA, CHAR_DOT, CHAR_EXCLAMATION_MARK, CHAR_FORWARD_SLASH, CHAR_LEFT_CURLY_BRACE, CHAR_LEFT_PARENTHESES, CHAR_LEFT_SQUARE_BRACKET, CHAR_PLUS, CHAR_QUESTION_MARK, CHAR_RIGHT_CURLY_BRACE, CHAR_RIGHT_PARENTHESES, CHAR_RIGHT_SQUARE_BRACKET } = require_constants();
@@ -17168,7 +17219,7 @@ var require_scan = /* @__PURE__ */ __commonJSMin(((exports, module) => {
17168
17219
  const scan = (input, options) => {
17169
17220
  const opts = options || {};
17170
17221
  const length = input.length - 1;
17171
- const scanToEnd = opts.parts === true || opts.scanToEnd === true;
17222
+ const scanToEnd = opts.parts === true || opts.tokens === true || opts.scanToEnd === true;
17172
17223
  const slashes = [];
17173
17224
  const tokens = [];
17174
17225
  const parts = [];
@@ -17271,14 +17322,18 @@ var require_scan = /* @__PURE__ */ __commonJSMin(((exports, module) => {
17271
17322
  finished = true;
17272
17323
  if (code === CHAR_EXCLAMATION_MARK && index === start) negatedExtglob = true;
17273
17324
  if (scanToEnd === true) {
17325
+ let parens = 0;
17274
17326
  while (eos() !== true && (code = advance())) {
17275
17327
  if (code === CHAR_BACKWARD_SLASH) {
17276
17328
  backslashes = token.backslashes = true;
17277
- code = advance();
17329
+ advance();
17278
17330
  continue;
17279
17331
  }
17280
- if (code === CHAR_RIGHT_PARENTHESES) {
17281
- isGlob = token.isGlob = true;
17332
+ if (code === CHAR_LEFT_PARENTHESES) {
17333
+ parens++;
17334
+ continue;
17335
+ }
17336
+ if (code === CHAR_RIGHT_PARENTHESES && --parens === 0) {
17282
17337
  finished = true;
17283
17338
  break;
17284
17339
  }
@@ -17326,13 +17381,18 @@ var require_scan = /* @__PURE__ */ __commonJSMin(((exports, module) => {
17326
17381
  if (opts.noparen !== true && code === CHAR_LEFT_PARENTHESES) {
17327
17382
  isGlob = token.isGlob = true;
17328
17383
  if (scanToEnd === true) {
17384
+ let parens = 1;
17329
17385
  while (eos() !== true && (code = advance())) {
17330
- if (code === CHAR_LEFT_PARENTHESES) {
17386
+ if (code === CHAR_BACKWARD_SLASH) {
17331
17387
  backslashes = token.backslashes = true;
17332
- code = advance();
17388
+ advance();
17389
+ continue;
17390
+ }
17391
+ if (code === CHAR_LEFT_PARENTHESES) {
17392
+ parens++;
17333
17393
  continue;
17334
17394
  }
17335
- if (code === CHAR_RIGHT_PARENTHESES) {
17395
+ if (code === CHAR_RIGHT_PARENTHESES && --parens === 0) {
17336
17396
  finished = true;
17337
17397
  break;
17338
17398
  }
@@ -17395,7 +17455,7 @@ var require_scan = /* @__PURE__ */ __commonJSMin(((exports, module) => {
17395
17455
  if (opts.parts === true || opts.tokens === true) {
17396
17456
  let prevIndex;
17397
17457
  for (let idx = 0; idx < slashes.length; idx++) {
17398
- const n = prevIndex ? prevIndex + 1 : start;
17458
+ const n = prevIndex !== void 0 ? prevIndex + 1 : start;
17399
17459
  const i = slashes[idx];
17400
17460
  const value = input.slice(n, i);
17401
17461
  if (opts.tokens) {
@@ -17406,18 +17466,19 @@ var require_scan = /* @__PURE__ */ __commonJSMin(((exports, module) => {
17406
17466
  depth(tokens[idx]);
17407
17467
  state.maxDepth += tokens[idx].depth;
17408
17468
  }
17409
- if (idx !== 0 || value !== "") parts.push(value);
17410
- prevIndex = i;
17411
- }
17412
- if (prevIndex && prevIndex + 1 < input.length) {
17413
- const value = input.slice(prevIndex + 1);
17414
- parts.push(value);
17415
- if (opts.tokens) {
17416
- tokens[tokens.length - 1].value = value;
17417
- depth(tokens[tokens.length - 1]);
17418
- state.maxDepth += tokens[tokens.length - 1].depth;
17469
+ if (i >= start) {
17470
+ parts.push(value);
17471
+ prevIndex = i;
17419
17472
  }
17420
17473
  }
17474
+ const n = prevIndex !== void 0 ? prevIndex + 1 : start;
17475
+ const value = input.slice(n);
17476
+ parts.push(value);
17477
+ if (opts.tokens && prevIndex && prevIndex + 1 < input.length) {
17478
+ tokens[tokens.length - 1].value = value;
17479
+ depth(tokens[tokens.length - 1]);
17480
+ state.maxDepth += tokens[tokens.length - 1].depth;
17481
+ }
17421
17482
  state.slashes = slashes;
17422
17483
  state.parts = parts;
17423
17484
  }
@@ -17426,7 +17487,7 @@ var require_scan = /* @__PURE__ */ __commonJSMin(((exports, module) => {
17426
17487
  module.exports = scan;
17427
17488
  }));
17428
17489
  //#endregion
17429
- //#region ../../../node_modules/.pnpm/picomatch@4.0.4/node_modules/picomatch/lib/parse.js
17490
+ //#region ../../../node_modules/.pnpm/picomatch@4.0.7/node_modules/picomatch/lib/parse.js
17430
17491
  var require_parse = /* @__PURE__ */ __commonJSMin(((exports, module) => {
17431
17492
  const constants = require_constants();
17432
17493
  const utils = require_utils();
@@ -17581,7 +17642,10 @@ var require_parse = /* @__PURE__ */ __commonJSMin(((exports, module) => {
17581
17642
  }
17582
17643
  }
17583
17644
  };
17584
- const getStarExtglobSequenceOutput = (pattern) => {
17645
+ const buildCharClassStar = (chars) => {
17646
+ return `${chars.length === 1 ? utils.escapeRegex(chars[0]) : `[${chars.map((ch) => utils.escapeRegex(ch)).join("")}]`}*`;
17647
+ };
17648
+ const getStarExtglobSequenceChars = (pattern) => {
17585
17649
  let index = 0;
17586
17650
  const chars = [];
17587
17651
  while (index < pattern.length) {
@@ -17595,7 +17659,7 @@ var require_parse = /* @__PURE__ */ __commonJSMin(((exports, module) => {
17595
17659
  index += match.end + 1;
17596
17660
  }
17597
17661
  if (chars.length < 1) return;
17598
- return `${chars.length === 1 ? utils.escapeRegex(chars[0]) : `[${chars.map((ch) => utils.escapeRegex(ch)).join("")}]`}*`;
17662
+ return chars;
17599
17663
  };
17600
17664
  const repeatedExtglobRecursion = (pattern) => {
17601
17665
  let depth = 0;
@@ -17615,14 +17679,28 @@ var require_parse = /* @__PURE__ */ __commonJSMin(((exports, module) => {
17615
17679
  if (branches.length > 1) {
17616
17680
  if (branches.some((branch) => branch === "") || branches.some((branch) => /^[*?]+$/.test(branch)) || hasRepeatedCharPrefixOverlap(branches)) return { risky: true };
17617
17681
  }
17682
+ const safeChars = [];
17683
+ let sawStarSequence = false;
17684
+ let combinable = true;
17618
17685
  for (const branch of branches) {
17619
- const safeOutput = getStarExtglobSequenceOutput(branch);
17620
- if (safeOutput) return {
17621
- risky: true,
17622
- safeOutput
17623
- };
17686
+ const chars = getStarExtglobSequenceChars(branch);
17687
+ if (chars) {
17688
+ sawStarSequence = true;
17689
+ safeChars.push(...chars);
17690
+ continue;
17691
+ }
17692
+ const literal = normalizeSimpleBranch(branch);
17693
+ if (literal && literal.length === 1) {
17694
+ safeChars.push(literal);
17695
+ continue;
17696
+ }
17697
+ combinable = false;
17624
17698
  if (repeatedExtglobRecursion(branch) > max) return { risky: true };
17625
17699
  }
17700
+ if (sawStarSequence) return combinable ? {
17701
+ risky: true,
17702
+ safeOutput: buildCharClassStar([...new Set(safeChars)])
17703
+ } : { risky: true };
17626
17704
  return { risky: false };
17627
17705
  };
17628
17706
  /**
@@ -18307,6 +18385,7 @@ var require_parse = /* @__PURE__ */ __commonJSMin(((exports, module) => {
18307
18385
  rest = rest.slice(3);
18308
18386
  consume("/**", 3);
18309
18387
  }
18388
+ const isEnd = eos() || state.parens > 0 && rest === ")".repeat(state.parens) && !extglobs.some((extglob) => extglob.type === "negate");
18310
18389
  if (prior.type === "bos" && eos()) {
18311
18390
  prev.type = "globstar";
18312
18391
  prev.value += value;
@@ -18316,7 +18395,7 @@ var require_parse = /* @__PURE__ */ __commonJSMin(((exports, module) => {
18316
18395
  consume(value);
18317
18396
  continue;
18318
18397
  }
18319
- if (prior.type === "slash" && prior.prev.type !== "bos" && !afterStar && eos()) {
18398
+ if (prior.type === "slash" && prior.prev.type !== "bos" && !afterStar && isEnd) {
18320
18399
  state.output = state.output.slice(0, -(prior.output + prev.output).length);
18321
18400
  prior.output = `(?:${prior.output}`;
18322
18401
  prev.type = "globstar";
@@ -18481,7 +18560,7 @@ var require_parse = /* @__PURE__ */ __commonJSMin(((exports, module) => {
18481
18560
  module.exports = parse;
18482
18561
  }));
18483
18562
  //#endregion
18484
- //#region ../../../node_modules/.pnpm/picomatch@4.0.4/node_modules/picomatch/lib/picomatch.js
18563
+ //#region ../../../node_modules/.pnpm/picomatch@4.0.7/node_modules/picomatch/lib/picomatch.js
18485
18564
  var require_picomatch$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
18486
18565
  const scan = require_scan();
18487
18566
  const parse = require_parse();
@@ -18502,6 +18581,18 @@ var require_picomatch$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
18502
18581
  * const isMatch = picomatch('*.!(*a)');
18503
18582
  * console.log(isMatch('a.a')); //=> false
18504
18583
  * console.log(isMatch('a.b')); //=> true
18584
+ *
18585
+ * // For environments without `node.js`, `picomatch/posix` provides you a dependency-free matcher, without automatic OS detection.
18586
+ * const picomatch = require('picomatch/posix');
18587
+ * // the same API, defaulting to posix paths
18588
+ * const isMatch = picomatch('a/*');
18589
+ * console.log(isMatch('a\\b')); //=> false
18590
+ * console.log(isMatch('a/b')); //=> true
18591
+ *
18592
+ * // you can still configure the matcher function to accept windows paths
18593
+ * const isMatch = picomatch('a/*', { options: windows });
18594
+ * console.log(isMatch('a\\b')); //=> true
18595
+ * console.log(isMatch('a/b')); //=> true
18505
18596
  * ```
18506
18597
  * @name picomatch
18507
18598
  * @param {String|Array} `globs` One or more glob patterns.
@@ -18620,8 +18711,8 @@ var require_picomatch$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
18620
18711
  * @return {Boolean}
18621
18712
  * @api public
18622
18713
  */
18623
- picomatch.matchBase = (input, glob, options) => {
18624
- return (glob instanceof RegExp ? glob : picomatch.makeRe(glob, options)).test(utils.basename(input));
18714
+ picomatch.matchBase = (input, glob, options, posix = options && options.windows) => {
18715
+ return (glob instanceof RegExp ? glob : picomatch.makeRe(glob, options)).test(utils.basename(input, { windows: posix }));
18625
18716
  };
18626
18717
  /**
18627
18718
  * Returns true if **any** of the given glob `patterns` match the specified `string`.
@@ -18781,7 +18872,7 @@ var require_picomatch$1 = /* @__PURE__ */ __commonJSMin(((exports, module) => {
18781
18872
  module.exports = picomatch;
18782
18873
  }));
18783
18874
  //#endregion
18784
- //#region ../../../node_modules/.pnpm/picomatch@4.0.4/node_modules/picomatch/index.js
18875
+ //#region ../../../node_modules/.pnpm/picomatch@4.0.7/node_modules/picomatch/index.js
18785
18876
  var require_picomatch = /* @__PURE__ */ __commonJSMin(((exports, module) => {
18786
18877
  const pico = require_picomatch$1();
18787
18878
  const utils = require_utils();
@@ -21624,20 +21715,22 @@ const got = { post: notImplementedFail("got", "post") };
21624
21715
  * statically at module scope, so the row cannot mount without it.
21625
21716
  *
21626
21717
  * Every symbol `llm-pi-ai` imports by name is present: a missing CommonJS symbol
21627
- * would surface as `undefined` at call time instead of a link error. The three catalog readers
21628
- * return empty collections rather than throwing — the row reads them while it
21629
- * activates, and "this deployment ships no pi-ai provider" is the truth here.
21630
- * Everything on a request path is loud.
21718
+ * would surface as `undefined` at call time instead of a link error. The row
21719
+ * reads the catalog while it activates, so the provider reader returns
21720
+ * providers without models and the two model readers return empty collections
21721
+ * instead of throwing: this deployment serves no pi-ai model. Everything on a
21722
+ * request path is loud.
21631
21723
  */
21632
21724
  var pi_ai_exports = /* @__PURE__ */ __exportAll({
21633
21725
  __esModule: () => true,
21634
21726
  anthropicMessagesApi: () => anthropicMessagesApi,
21727
+ builtinModels: () => builtinModels,
21635
21728
  builtinProviders: () => builtinProviders,
21636
21729
  createModels: () => createModels,
21637
21730
  createProvider: () => createProvider,
21638
21731
  default: () => pi_ai_default,
21732
+ getAllBuiltinModels: () => getAllBuiltinModels,
21639
21733
  getBuiltinModels: () => getBuiltinModels,
21640
- getBuiltinProviders: () => getBuiltinProviders,
21641
21734
  getSupportedThinkingLevels: () => getSupportedThinkingLevels,
21642
21735
  isContextOverflow: () => isContextOverflow,
21643
21736
  openAICompletionsApi: () => openAICompletionsApi,
@@ -21652,7 +21745,13 @@ const createModels = notImplementedFail(MODULE$1, "createModels");
21652
21745
  const getSupportedThinkingLevels = notImplementedFail(MODULE$1, "getSupportedThinkingLevels");
21653
21746
  /** Context-overflow predicate (unavailable). */
21654
21747
  const isContextOverflow = notImplementedFail(MODULE$1, "isContextOverflow");
21655
- /** Builtin provider ids of pi-ai 0.84.2, in catalog order. */
21748
+ /** Collection of every builtin provider (unavailable). */
21749
+ const builtinModels = notImplementedFail(MODULE$1, "builtinModels");
21750
+ /**
21751
+ * Builtin provider ids as pi-ai 0.84.2 listed them, in catalog order. The list
21752
+ * is a fixed copy that pi-ai upgrades do not regenerate, so it omits providers
21753
+ * added since.
21754
+ */
21656
21755
  const BUILTIN_PROVIDER_IDS = [
21657
21756
  "amazon-bedrock",
21658
21757
  "ant-ling",
@@ -21695,10 +21794,11 @@ const BUILTIN_PROVIDER_IDS = [
21695
21794
  "zai-coding-cn"
21696
21795
  ];
21697
21796
  /**
21698
- * Installed catalog providers, read while `llm-pi-ai` activates. Each carries the
21699
- * api-key auth marker the adapter filters on, and no models: the provider
21700
- * directory therefore matches the served deployment while every request path
21701
- * lands on a loud symbol above.
21797
+ * Installed catalog providers, read while `llm-pi-ai` activates. `llm-pi-ai`
21798
+ * registers the whole catalog as configurable the moment it mounts and rejects
21799
+ * an empty registration, so these carry pi-ai's ids instead of being an empty
21800
+ * list. Each has the api-key auth marker the adapter filters on, and no
21801
+ * models, so every request path lands on a loud symbol above.
21702
21802
  * @returns one entry per builtin provider.
21703
21803
  */
21704
21804
  function builtinProviders() {
@@ -21710,19 +21810,17 @@ function builtinProviders() {
21710
21810
  }));
21711
21811
  }
21712
21812
  /**
21713
- * Provider route ids of the installed catalog. `llm-pi-ai` registers the whole
21714
- * catalog as configurable the moment it mounts and rejects an empty
21715
- * registration, so these are pi-ai's real ids rather than an empty list.
21716
- * @returns the builtin provider ids.
21813
+ * Models of one installed catalog provider.
21814
+ * @returns no models.
21717
21815
  */
21718
- function getBuiltinProviders() {
21719
- return [...BUILTIN_PROVIDER_IDS];
21816
+ function getBuiltinModels() {
21817
+ return [];
21720
21818
  }
21721
21819
  /**
21722
- * Models of one installed catalog provider.
21820
+ * Models of every type of one installed catalog provider.
21723
21821
  * @returns no models.
21724
21822
  */
21725
- function getBuiltinModels() {
21823
+ function getAllBuiltinModels() {
21726
21824
  return [];
21727
21825
  }
21728
21826
  /** Anthropic messages API binding (unavailable). */
@@ -21737,9 +21835,10 @@ var pi_ai_default = {
21737
21835
  createModels,
21738
21836
  getSupportedThinkingLevels,
21739
21837
  isContextOverflow,
21838
+ builtinModels,
21740
21839
  builtinProviders,
21741
21840
  getBuiltinModels,
21742
- getBuiltinProviders,
21841
+ getAllBuiltinModels,
21743
21842
  anthropicMessagesApi,
21744
21843
  openAICompletionsApi,
21745
21844
  openAIResponsesApi
@@ -21876,6 +21975,7 @@ const REPLACED_EXTERNAL_PACKAGES = [
21876
21975
  */
21877
21976
  /** Builtin modules, keyed with and without the `node:` prefix. */
21878
21977
  const BUILTINS = {
21978
+ "assert/strict": () => strict_exports,
21879
21979
  async_hooks: () => async_hooks_exports,
21880
21980
  buffer: () => buffer_exports,
21881
21981
  child_process: () => child_process_exports,
@@ -21885,6 +21985,7 @@ const BUILTINS = {
21885
21985
  fs: () => fs_exports,
21886
21986
  "fs/promises": () => promises_exports$2,
21887
21987
  http: () => http_exports,
21988
+ https: () => https_exports,
21888
21989
  module: () => module_exports,
21889
21990
  net: () => net_exports,
21890
21991
  os: () => os_exports,
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@deepseek-ai/dsh-experimental-webworker-runtime",
3
3
  "description": "Browser-only harness runtime: in-memory VFS, module transform and loader, postMessage tunnel, and the dedicated Web Worker assembly, with the Node-compatibility layer that lets the host tree run unchanged",
4
- "version": "0.2.0-rc.2",
4
+ "version": "0.2.1-alpha.2",
5
5
  "publishConfig": {
6
6
  "access": "public"
7
7
  },
@@ -28,43 +28,43 @@
28
28
  },
29
29
  "license": "MIT",
30
30
  "dependencies": {
31
- "@noble/hashes": "^2.3.0",
31
+ "@deepseek-ai/dsh-util-crypto": "0.2.1-alpha.2",
32
+ "@noble/hashes": "^2.4.0",
32
33
  "@yarnpkg/parsers": "^3.1.0",
33
- "acorn": "^8.17.0",
34
+ "acorn": "^8.18.0",
34
35
  "buffer": "^6.0.3",
35
- "picomatch": "^4.0.4",
36
+ "picomatch": "^4.0.7",
36
37
  "readable-stream": "^4.7.0",
37
- "@deepseek-ai/dsh-util-crypto": "0.2.0-rc.2",
38
- "@deepseek-ai/dsh-client-web": "0.2.0-rc.2"
38
+ "@deepseek-ai/dsh-client-web": "0.2.1-alpha.2"
39
39
  },
40
40
  "peerDependencies": {
41
- "@deepseek-ai/cordis": "~4.0.4",
42
- "@deepseek-ai/cordis-plugin-loader": "~1.0.5",
43
- "@deepseek-ai/dsh-client-connection": "0.2.0-rc.2",
44
- "@deepseek-ai/dsh-client-modules": "0.2.0-rc.2",
45
- "@deepseek-ai/dsh-host-webserver": "0.2.0-rc.2"
41
+ "@deepseek-ai/cordis": "~4.0.5-alpha.1",
42
+ "@deepseek-ai/cordis-plugin-loader": "~1.0.6-alpha.1",
43
+ "@deepseek-ai/dsh-client-connection": "0.2.1-alpha.2",
44
+ "@deepseek-ai/dsh-client-modules": "0.2.1-alpha.2",
45
+ "@deepseek-ai/dsh-host-webserver": "0.2.1-alpha.2"
46
46
  },
47
47
  "devDependencies": {
48
- "@types/picomatch": "^3.0.2",
48
+ "@deepseek-ai/cordis": "~4.0.5-alpha.1",
49
+ "@deepseek-ai/cordis-plugin-loader": "~1.0.6-alpha.1",
50
+ "@deepseek-ai/dsh-api-gateway": "0.2.1-alpha.2",
51
+ "@deepseek-ai/dsh-app-boot": "0.2.1-alpha.2",
52
+ "@deepseek-ai/dsh-bash-sandbox": "0.2.1-alpha.2",
53
+ "@deepseek-ai/dsh-client-connection": "0.2.1-alpha.2",
54
+ "@deepseek-ai/dsh-client-file-upload": "0.2.1-alpha.2",
55
+ "@deepseek-ai/dsh-client-modules": "0.2.1-alpha.2",
56
+ "@deepseek-ai/dsh-host-webserver": "0.2.1-alpha.2",
57
+ "@deepseek-ai/dsh-sandbox-local": "0.2.1-alpha.2",
58
+ "@deepseek-ai/dsh-sandbox-policy": "0.2.1-alpha.2",
59
+ "@deepseek-ai/dsh-session": "0.2.1-alpha.2",
60
+ "@deepseek-ai/dsh-session-projection": "0.2.1-alpha.2",
61
+ "@deepseek-ai/dsh-session-persistence-jsonl": "0.2.1-alpha.2",
62
+ "@deepseek-ai/dsh-subagent": "0.2.1-alpha.2",
63
+ "@deepseek-ai/dsh-subprocess-local": "0.2.1-alpha.2",
64
+ "@deepseek-ai/node-addon-system": "~0.1.2",
65
+ "@types/picomatch": "^4.0.3",
49
66
  "@types/readable-stream": "^4.0.24",
50
- "chokidar": "^5.0.0",
51
- "@deepseek-ai/cordis": "~4.0.4",
52
- "@deepseek-ai/cordis-plugin-loader": "~1.0.5",
53
- "@deepseek-ai/dsh-api-gateway": "0.2.0-rc.2",
54
- "@deepseek-ai/dsh-app-boot": "0.2.0-rc.2",
55
- "@deepseek-ai/dsh-client-connection": "0.2.0-rc.2",
56
- "@deepseek-ai/dsh-bash-sandbox": "0.2.0-rc.2",
57
- "@deepseek-ai/dsh-client-file-upload": "0.2.0-rc.2",
58
- "@deepseek-ai/dsh-client-modules": "0.2.0-rc.2",
59
- "@deepseek-ai/dsh-host-webserver": "0.2.0-rc.2",
60
- "@deepseek-ai/dsh-sandbox-local": "0.2.0-rc.2",
61
- "@deepseek-ai/dsh-sandbox-policy": "0.2.0-rc.2",
62
- "@deepseek-ai/dsh-session": "0.2.0-rc.2",
63
- "@deepseek-ai/dsh-session-projection": "0.2.0-rc.2",
64
- "@deepseek-ai/dsh-session-persistence-jsonl": "0.2.0-rc.2",
65
- "@deepseek-ai/dsh-subagent": "0.2.0-rc.2",
66
- "@deepseek-ai/dsh-subprocess-local": "0.2.0-rc.2",
67
- "@deepseek-ai/node-addon-system": "~0.1.2"
67
+ "chokidar": "^5.0.0"
68
68
  },
69
69
  "files": [
70
70
  "lib/index.js",