dsh-edge 0.9.0 → 0.10.0

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.
Files changed (56) hide show
  1. package/THIRD_PARTY_NOTICES.md +1318 -1075
  2. package/dist/assets/index-Df-65__b.js +110 -0
  3. package/dist/assets/index-b24khbeK.css +1 -0
  4. package/dist/assets/langs/{php-DDkx9sim.js → php-DJl5gRdb.js} +2 -2
  5. package/dist/assets/langs/{ruby-DCxyoPen.js → ruby-5eNB0pDK.js} +2 -2
  6. package/dist/assets/vendor-BNsW4eBh.css +1 -0
  7. package/dist/assets/vendor-CCJJTK99.js +411 -0
  8. package/dist/index.html +8 -8
  9. package/dist/plugins/@deepseek-ai/dsh-api-gateway/client.js +1513 -77
  10. package/dist/plugins/@deepseek-ai/dsh-api-remotes/client.js +3608 -757
  11. package/dist/plugins/@deepseek-ai/dsh-api-session-controller/client.js +2777 -0
  12. package/dist/plugins/@deepseek-ai/dsh-api-workspace-controller/client.js +415 -0
  13. package/dist/plugins/@deepseek-ai/dsh-client-connection/client.js +1975 -7466
  14. package/dist/plugins/@deepseek-ai/dsh-client-locale/client.js +225 -76
  15. package/dist/plugins/@deepseek-ai/dsh-client-modules/client.js +67 -15
  16. package/dist/plugins/@deepseek-ai/dsh-client-ui-agent-preset/client.js +270 -460
  17. package/dist/plugins/@deepseek-ai/dsh-client-ui-approval/client.js +292 -0
  18. package/dist/plugins/@deepseek-ai/dsh-client-ui-attachment/client.js +42 -17
  19. package/dist/plugins/@deepseek-ai/dsh-client-ui-brand-official/client.js +7 -9
  20. package/dist/plugins/@deepseek-ai/dsh-client-ui-chat/client.js +8177 -0
  21. package/dist/plugins/@deepseek-ai/dsh-client-ui-commands/client.js +22 -10
  22. package/dist/plugins/@deepseek-ai/dsh-client-ui-conversation/client.js +14950 -8910
  23. package/dist/plugins/@deepseek-ai/dsh-client-ui-deliverables/client.js +161 -137
  24. package/dist/plugins/@deepseek-ai/dsh-client-ui-goal/client.js +6 -7
  25. package/dist/plugins/@deepseek-ai/dsh-client-ui-input-trigger/client.js +268 -40
  26. package/dist/plugins/@deepseek-ai/dsh-client-ui-jobs/client.js +1 -1
  27. package/dist/plugins/@deepseek-ai/dsh-client-ui-layout/client.js +45 -11
  28. package/dist/plugins/@deepseek-ai/dsh-client-ui-message-feedback/client.js +30 -58
  29. package/dist/plugins/@deepseek-ai/dsh-client-ui-model-selection/client.js +188 -89
  30. package/dist/plugins/@deepseek-ai/dsh-client-ui-permission-presets/client.js +105 -75
  31. package/dist/plugins/@deepseek-ai/dsh-client-ui-renderer/client.js +650 -188
  32. package/dist/plugins/@deepseek-ai/dsh-client-ui-schedule/client.js +307 -0
  33. package/dist/plugins/@deepseek-ai/dsh-client-ui-session/client.js +340 -0
  34. package/dist/plugins/@deepseek-ai/dsh-client-ui-settings/client.js +57 -50
  35. package/dist/plugins/@deepseek-ai/dsh-client-ui-settings-general/client.js +134 -69
  36. package/dist/plugins/@deepseek-ai/dsh-client-ui-settings-models/client.js +575 -442
  37. package/dist/plugins/@deepseek-ai/dsh-client-ui-sidebar/client.js +24 -11
  38. package/dist/plugins/@deepseek-ai/dsh-client-ui-skill/client.js +13 -9
  39. package/dist/plugins/@deepseek-ai/dsh-client-ui-subagent/client.js +44 -20
  40. package/dist/plugins/@deepseek-ai/dsh-client-ui-theme/client.js +265 -94
  41. package/dist/plugins/@deepseek-ai/dsh-client-ui-tool/client.js +899 -433
  42. package/dist/plugins/@deepseek-ai/dsh-client-ui-trajectory/client.js +1472 -613
  43. package/dist/plugins/@deepseek-ai/dsh-client-ui-user-questions/client.js +249 -95
  44. package/dist/plugins/@deepseek-ai/dsh-client-ui-workflow-run/client.js +5 -5
  45. package/dist/plugins/@deepseek-ai/dsh-client-ui-workspace/client.js +425 -146
  46. package/dist/plugins/@deepseek-ai/dsh-typert-registry/client.js +29 -14
  47. package/dist/plugins/dsh-edge-client-ui/client.js +28 -26
  48. package/package.json +62 -58
  49. package/scripts/verify-packed.mjs +1 -1
  50. package/worker/direct/index.js +2866 -1466
  51. package/worker/isolated/index.js +2438 -1038
  52. package/dist/assets/index-C6eRlFa6.css +0 -1
  53. package/dist/assets/index-ClqxG24t.js +0 -96
  54. package/dist/assets/vendor-CjyC-hUb.css +0 -1
  55. package/dist/assets/vendor-D22_Mp1f.js +0 -411
  56. package/dist/plugins/@deepseek-ai/dsh-client-runtime/client.js +0 -10574
@@ -1056,25 +1056,40 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
1056
1056
  }
1057
1057
  view(ctx) {
1058
1058
  return {
1059
- registerHost: (key, provider) => this.registerHost(ctx, key, provider),
1059
+ registerHost: (key, adapter) => this.registerHost(ctx, key, adapter),
1060
1060
  configureHost: (key, resolver) => this.configureHost(ctx, key, resolver),
1061
- registerClient: (key, binder) => this.registerClient(ctx, key, binder),
1061
+ registerClient: (key, adapter) => this.registerClient(ctx, key, adapter),
1062
+ identifyHost: (context) => this.identifyHost(context),
1062
1063
  getHost: (key) => this.getHost(key),
1063
1064
  getClient: (key) => this.clients.get(key)?.provider,
1064
1065
  subscribe: (listener) => this.changes.subscribe(ctx, listener)
1065
1066
  };
1066
1067
  }
1067
1068
  getHost(key) {
1068
- const provider = this.hosts.get(key)?.provider;
1069
- if (provider === void 0) return void 0;
1069
+ const adapter = this.hosts.get(key)?.provider;
1070
+ if (adapter === void 0) return void 0;
1070
1071
  const resolver = this.hostResolvers.get(key)?.provider;
1071
- if (resolver === void 0) return provider;
1072
+ if (resolver === void 0) return adapter;
1072
1073
  return {
1073
- wire: provider.wire,
1074
- wireTypeSymbol: provider.wireTypeSymbol,
1074
+ wire: adapter.wire,
1075
+ wireTypeSymbol: adapter.wireTypeSymbol,
1076
+ identity: (context) => adapter.identity(context),
1075
1077
  resolve: (id) => resolver.resolve(id)
1076
1078
  };
1077
1079
  }
1080
+ identifyHost(ctx) {
1081
+ let match;
1082
+ for (const key of this.hosts.keys()) {
1083
+ const identity = this.getHost(key)?.identity(ctx);
1084
+ if (identity === void 0) continue;
1085
+ if (match !== void 0) throw new Error(`typert: Host Context is recognized by both ${JSON.stringify(match.kind)} and ${JSON.stringify(key)}`);
1086
+ match = {
1087
+ kind: key,
1088
+ identity
1089
+ };
1090
+ }
1091
+ return match;
1092
+ }
1078
1093
  configureHost(ctx, key, resolver) {
1079
1094
  validateSegment("Context key", key);
1080
1095
  if (this.hostResolvers.has(key)) throw new Error(`typert: host-context "${key}" resolver is already configured`);
@@ -1100,15 +1115,15 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
1100
1115
  };
1101
1116
  }, `typert.contexts.configureHost(${JSON.stringify(key)})`);
1102
1117
  }
1103
- registerHost(ctx, key, provider) {
1118
+ registerHost(ctx, key, adapter) {
1104
1119
  validateSegment("Context key", key);
1105
- validateWireName("Context wire field", provider.wire);
1106
- validateNonempty("Context wire type symbol", provider.wireTypeSymbol);
1107
- return this.registerProvider(ctx, this.hosts, "host-context", key, provider);
1120
+ validateWireName("Context wire field", adapter.wire);
1121
+ validateNonempty("Context wire type symbol", adapter.wireTypeSymbol);
1122
+ return this.registerProvider(ctx, this.hosts, "host-context", key, adapter);
1108
1123
  }
1109
- registerClient(ctx, key, binder) {
1124
+ registerClient(ctx, key, adapter) {
1110
1125
  validateSegment("Context key", key);
1111
- return this.registerProvider(ctx, this.clients, "client-context", key, binder);
1126
+ return this.registerProvider(ctx, this.clients, "client-context", key, adapter);
1112
1127
  }
1113
1128
  registerProvider(ctx, table, kind, key, provider) {
1114
1129
  if (table.has(key)) throw new Error(`typert: ${kind} provider "${key}" is already registered`);
@@ -1176,7 +1191,7 @@ Set the \`cycles\` parameter to \`"ref"\` to resolve cyclical schemas with defs.
1176
1191
  get lookups() {
1177
1192
  return this.lookupStore.view(this.ctx);
1178
1193
  }
1179
- /** Host Context providers and Client Context binders. */
1194
+ /** Host and Client Context adapters. */
1180
1195
  get contexts() {
1181
1196
  return this.contextStore.view(this.ctx);
1182
1197
  }
@@ -10,7 +10,7 @@ window.__ModuleLoader__.load({
10
10
  let _deepseek_ai_dsh_client_ui_primitives = require("@deepseek-ai/dsh-client-ui-primitives");
11
11
  let react = require("react");
12
12
  let react_jsx_runtime = require("react/jsx-runtime");
13
- let _deepseek_ai_dsh_client_runtime_client = require("@deepseek-ai/dsh-client-runtime/client");
13
+ let _deepseek_ai_dsh_client_store = require("@deepseek-ai/dsh-client-store");
14
14
  //#region \0dsh-edge-css:src/client/EdgeDirectoryFlow.module.css.mjs
15
15
  const css$1 = "._f3UMG_overlay{z-index:999;position:fixed;inset:0}._f3UMG_popover{background:var(--dsh-surface-2,#252526);border:1px solid var(--dsh-border,#3e3e42);z-index:1000;border-radius:8px;flex-direction:column;gap:8px;padding:12px;display:flex;position:fixed;box-shadow:0 8px 24px #0006,0 2px 8px #0000004d}._f3UMG_title{color:var(--dsh-text-1,#ccc);font-size:12px;font-weight:600}._f3UMG_inputGroup{border:1px solid var(--dsh-border,#3e3e42);border-radius:6px;transition:border-color .15s;display:flex;overflow:hidden}._f3UMG_inputGroup:focus-within{border-color:var(--dsh-accent,#3b82f6)}._f3UMG_inputGroup._f3UMG_error{border-color:var(--dsh-error,#ef4444)}._f3UMG_prefix{background:var(--dsh-surface-1,#1a1a1a);color:var(--dsh-text-3,#6b6b6b);white-space:nowrap;font-size:12px;font-family:var(--dsh-font-mono,\"SF Mono\", \"Menlo\", monospace);user-select:none;border-right:1px solid var(--dsh-border,#3e3e42);align-items:center;padding:6px 2px 6px 8px;display:flex}._f3UMG_input{background:var(--dsh-surface-3,#2d2d2d);color:var(--dsh-text-1,#ccc);font-size:12px;font-family:var(--dsh-font-mono,\"SF Mono\", \"Menlo\", monospace);border:none;outline:none;flex:1;min-width:0;padding:6px 8px}._f3UMG_input::placeholder{color:var(--dsh-text-3,#6b6b6b)}._f3UMG_hint{color:var(--dsh-text-3,#6b6b6b);font-size:11px;line-height:1.4}._f3UMG_errorText{color:var(--dsh-error,#ef4444);font-size:11px;line-height:1.4}._f3UMG_submitBtn{background:var(--dsh-accent,#3b82f6);color:#fff;cursor:pointer;border:none;border-radius:6px;width:100%;padding:6px 0;font-size:12px;font-weight:500;transition:opacity .15s}._f3UMG_submitBtn:hover{opacity:.9}._f3UMG_submitBtn:disabled{opacity:.4;cursor:not-allowed}";
16
16
  const tagId$1 = "dsh-edge-client-ui/src/client/EdgeDirectoryFlow.module.css";
@@ -377,7 +377,7 @@ window.__ModuleLoader__.load({
377
377
  var EdgeSettingsController = class {
378
378
  io;
379
379
  /** Observable settings state consumed by the client runtime. */
380
- store = (0, _deepseek_ai_dsh_client_runtime_client.createSnapshotStore)({
380
+ store = (0, _deepseek_ai_dsh_client_store.createSnapshotStore)({
381
381
  status: "idle",
382
382
  copied: false,
383
383
  signingOut: false
@@ -713,10 +713,10 @@ window.__ModuleLoader__.load({
713
713
  const inject = [
714
714
  "slots",
715
715
  "locale",
716
- "settingsScope",
717
- "workspaces"
716
+ "settingsScope"
718
717
  ];
719
718
  function apply(ctx) {
719
+ const slots = ctx.slots;
720
720
  const mirror = ctx.settingsScope.describe();
721
721
  if (mirror.persistence === "memory") {
722
722
  mirror.persistence = "host";
@@ -741,7 +741,7 @@ window.__ModuleLoader__.load({
741
741
  copyUpgrade: () => controller.copyUpgrade(),
742
742
  signOut: () => controller.signOut()
743
743
  });
744
- ctx.slots.inject("settings.section", () => ctx.slots.register({
744
+ slots.inject("settings.section", () => slots.register({
745
745
  name: "settings.section",
746
746
  id: "dsh-edge",
747
747
  order: 90,
@@ -749,34 +749,36 @@ window.__ModuleLoader__.load({
749
749
  locale: "settings.edge",
750
750
  inject: injected
751
751
  }, EdgeSettingsSection));
752
- ctx.slots.inject("conversation.hero.workspace.directoryFlow", () => ctx.slots.inject("sidebar.workspaces.directoryFlow", function* () {
753
- yield ctx.slots.register({
752
+ slots.inject("conversation.hero.workspace.directoryFlow", () => slots.inject("sidebar.workspaces.directoryFlow", function* () {
753
+ yield slots.register({
754
754
  name: "conversation.hero.workspace.directoryFlow",
755
755
  locale: "settings.edge"
756
756
  }, EdgeDirectoryFlow);
757
- yield ctx.slots.register({
757
+ yield slots.register({
758
758
  name: "sidebar.workspaces.directoryFlow",
759
759
  locale: "settings.edge"
760
760
  }, EdgeDirectoryFlow);
761
761
  }));
762
- const workspaces = ctx.workspaces;
763
- const originalOpenPath = workspaces.openPath.bind(workspaces);
764
- workspaces.openPath = async (path) => {
765
- try {
766
- await originalOpenPath(path);
767
- } catch {
768
- const url = `/api/workspace/file?path=${encodeURIComponent(path)}`;
769
- const res = await globalThis.fetch(url);
770
- if (!res.ok) throw new Error(`path open failed: ${res.status === 413 ? "file too large" : await res.text()}`);
771
- const blob = await res.blob();
772
- const blobUrl = URL.createObjectURL(blob);
773
- const a = document.createElement("a");
774
- a.href = blobUrl;
775
- a.download = path.split("/").pop() ?? "file";
776
- a.click();
777
- URL.revokeObjectURL(blobUrl);
778
- }
779
- };
762
+ ctx.inject(["workspaces"], () => {
763
+ const workspaces = ctx.workspaces;
764
+ const originalOpenPath = workspaces.openPath.bind(workspaces);
765
+ workspaces.openPath = async (path) => {
766
+ try {
767
+ await originalOpenPath(path);
768
+ } catch {
769
+ const url = `/api/workspace/file?path=${encodeURIComponent(path)}`;
770
+ const res = await globalThis.fetch(url);
771
+ if (!res.ok) throw new Error(`path open failed: ${res.status === 413 ? "file too large" : await res.text()}`);
772
+ const blob = await res.blob();
773
+ const blobUrl = URL.createObjectURL(blob);
774
+ const a = document.createElement("a");
775
+ a.href = blobUrl;
776
+ a.download = path.split("/").pop() ?? "file";
777
+ a.click();
778
+ URL.revokeObjectURL(blobUrl);
779
+ }
780
+ };
781
+ });
780
782
  }
781
783
  //#endregion
782
784
  exports.apply = apply;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-edge",
3
- "version": "0.9.0",
3
+ "version": "0.10.0",
4
4
  "description": "Your DeepSeek Harness, anywhere — deploy a persistent personal coding agent to Cloudflare Workers in one command",
5
5
  "author": "pawaca",
6
6
  "license": "MIT",
@@ -44,73 +44,77 @@
44
44
  "access": "public"
45
45
  },
46
46
  "dshEdge": {
47
- "upstreamVersion": "0.1.1-rc.2"
47
+ "upstreamVersion": "0.1.2-rc.1"
48
48
  },
49
49
  "dependencies": {
50
50
  "@clack/prompts": "1.7.0",
51
51
  "compare-versions": "6.1.1",
52
- "execa": "^10.0.0",
52
+ "execa": "^10.0.1",
53
53
  "jsonc-parser": "^3.3.1",
54
- "wrangler": "4.123.0"
54
+ "wrangler": "4.129.0"
55
55
  },
56
56
  "devDependencies": {
57
- "@cloudflare/computer": "0.2.0",
58
- "@cloudflare/workers-types": "5.20260812.1",
59
- "@deepseek-ai/cordis": "4.0.1",
60
- "@deepseek-ai/dsh-agent": "0.1.1-rc.2",
61
- "@deepseek-ai/dsh-agent-loop": "0.1.1-rc.2",
62
- "@deepseek-ai/dsh-api-gateway": "0.1.1-rc.2",
63
- "@deepseek-ai/dsh-anonymous-user-id": "0.1.1-rc.2",
64
- "@deepseek-ai/dsh-attachment": "0.1.1-rc.2",
65
- "@deepseek-ai/dsh-brand": "0.1.1-rc.2",
66
- "@deepseek-ai/dsh-compaction": "0.1.1-rc.2",
67
- "@deepseek-ai/dsh-compaction-basic": "0.1.1-rc.2",
68
- "@deepseek-ai/dsh-compaction-tool-result-pruner": "0.1.1-rc.2",
69
- "@deepseek-ai/dsh-commands": "0.1.1-rc.2",
70
- "@deepseek-ai/dsh-credentials": "0.1.1-rc.2",
71
- "@deepseek-ai/dsh-fs": "0.1.1-rc.2",
72
- "@deepseek-ai/dsh-goal": "0.1.1-rc.2",
73
- "@deepseek-ai/dsh-goal-round-driver": "0.1.1-rc.2",
74
- "@deepseek-ai/dsh-host-apiproxy": "0.1.1-rc.2",
75
- "@deepseek-ai/dsh-launch-environment": "0.1.1-rc.2",
76
- "@deepseek-ai/dsh-llm": "0.1.1-rc.2",
77
- "@deepseek-ai/dsh-llm-deepseek": "0.1.1-rc.2",
78
- "@deepseek-ai/dsh-message-feedback": "0.1.1-rc.2",
79
- "@deepseek-ai/dsh-session": "0.1.1-rc.2",
80
- "@deepseek-ai/dsh-session-persistence": "0.1.1-rc.2",
81
- "@deepseek-ai/dsh-session-projection": "0.1.1-rc.2",
82
- "@deepseek-ai/dsh-session-projection-cache": "0.1.1-rc.2",
83
- "@deepseek-ai/dsh-session-query": "0.1.1-rc.2",
84
- "@deepseek-ai/dsh-session-title": "0.1.1-rc.2",
85
- "@deepseek-ai/dsh-session-title-first-prompt-llm": "0.1.1-rc.2",
86
- "@deepseek-ai/dsh-session-title-llm": "0.1.1-rc.2",
87
- "@deepseek-ai/dsh-output-retention": "0.1.1-rc.2",
88
- "@deepseek-ai/dsh-settings": "0.1.1-rc.2",
89
- "@deepseek-ai/dsh-spill": "0.1.1-rc.2",
90
- "@deepseek-ai/dsh-spill-policy": "0.1.1-rc.2",
91
- "@deepseek-ai/dsh-storage": "0.1.1-rc.2",
92
- "@deepseek-ai/dsh-storage-domain": "0.1.1-rc.2",
93
- "@deepseek-ai/dsh-timeout": "0.1.1-rc.2",
94
- "@deepseek-ai/dsh-token-meter": "0.1.1-rc.2",
95
- "@deepseek-ai/dsh-system-prompt": "0.1.1-rc.2",
96
- "@deepseek-ai/dsh-sandbox": "0.1.1-rc.2",
97
- "@deepseek-ai/dsh-skill": "0.1.1-rc.2",
98
- "@deepseek-ai/dsh-tool-call-timeout-policy": "0.1.1-rc.2",
99
- "@deepseek-ai/dsh-tool-fs": "0.1.1-rc.2",
100
- "@deepseek-ai/dsh-tool-goal": "0.1.1-rc.2",
101
- "@deepseek-ai/dsh-tool-skill": "0.1.1-rc.2",
102
- "@deepseek-ai/dsh-tool-web": "0.1.1-rc.2",
103
- "@deepseek-ai/dsh-tools": "0.1.1-rc.2",
104
- "@deepseek-ai/dsh-typert-protocol": "0.1.1-rc.2",
105
- "@deepseek-ai/dsh-typert-registry": "0.1.1-rc.2",
106
- "@deepseek-ai/dsh-web": "0.1.1-rc.2",
107
- "@deepseek-ai/dsh-web-fetch-http": "0.1.1-rc.2",
108
- "@deepseek-ai/dsh-web-search-deepseek": "0.1.1-rc.2",
109
- "@deepseek-ai/dsh-workspace": "0.1.1-rc.2",
57
+ "@cloudflare/computer": "0.2.1",
58
+ "@cloudflare/workers-types": "5.20260904.1",
59
+ "@deepseek-ai/cordis": "4.0.2",
60
+ "@deepseek-ai/dsh-agent": "0.1.2-rc.1",
61
+ "@deepseek-ai/dsh-agent-loop": "0.1.2-rc.1",
62
+ "@deepseek-ai/dsh-anonymous-user-id": "0.1.2-rc.1",
63
+ "@deepseek-ai/dsh-api-gateway": "0.1.2-rc.1",
64
+ "@deepseek-ai/dsh-api-session-controller": "0.1.2-rc.1",
65
+ "@deepseek-ai/dsh-api-settings-controller": "0.1.2-rc.1",
66
+ "@deepseek-ai/dsh-api-workspace-controller": "0.1.2-rc.1",
67
+ "@deepseek-ai/dsh-attachment": "0.1.2-rc.1",
68
+ "@deepseek-ai/dsh-brand": "0.1.2-rc.1",
69
+ "@deepseek-ai/dsh-client-store": "0.1.2-rc.1",
70
+ "@deepseek-ai/dsh-commands": "0.1.2-rc.1",
71
+ "@deepseek-ai/dsh-compaction": "0.1.2-rc.1",
72
+ "@deepseek-ai/dsh-compaction-basic": "0.1.2-rc.1",
73
+ "@deepseek-ai/dsh-compaction-tool-result-pruner": "0.1.2-rc.1",
74
+ "@deepseek-ai/dsh-credentials": "0.1.2-rc.1",
75
+ "@deepseek-ai/dsh-fs": "0.1.2-rc.1",
76
+ "@deepseek-ai/dsh-goal": "0.1.2-rc.1",
77
+ "@deepseek-ai/dsh-goal-round-driver": "0.1.2-rc.1",
78
+ "@deepseek-ai/dsh-launch-environment": "0.1.2-rc.1",
79
+ "@deepseek-ai/dsh-llm": "0.1.2-rc.1",
80
+ "@deepseek-ai/dsh-llm-deepseek": "0.1.2-rc.1",
81
+ "@deepseek-ai/dsh-message-feedback": "0.1.2-rc.1",
82
+ "@deepseek-ai/dsh-output-retention": "0.1.2-rc.1",
83
+ "@deepseek-ai/dsh-sandbox": "0.1.2-rc.1",
84
+ "@deepseek-ai/dsh-session": "0.1.2-rc.1",
85
+ "@deepseek-ai/dsh-session-persistence": "0.1.2-rc.1",
86
+ "@deepseek-ai/dsh-session-projection": "0.1.2-rc.1",
87
+ "@deepseek-ai/dsh-session-projection-cache": "0.1.2-rc.1",
88
+ "@deepseek-ai/dsh-session-query": "0.1.2-rc.1",
89
+ "@deepseek-ai/dsh-session-title": "0.1.2-rc.1",
90
+ "@deepseek-ai/dsh-session-title-first-prompt-llm": "0.1.2-rc.1",
91
+ "@deepseek-ai/dsh-session-title-llm": "0.1.2-rc.1",
92
+ "@deepseek-ai/dsh-settings": "0.1.2-rc.1",
93
+ "@deepseek-ai/dsh-skill": "0.1.2-rc.1",
94
+ "@deepseek-ai/dsh-spill": "0.1.2-rc.1",
95
+ "@deepseek-ai/dsh-spill-policy": "0.1.2-rc.1",
96
+ "@deepseek-ai/dsh-storage": "0.1.2-rc.1",
97
+ "@deepseek-ai/dsh-storage-domain": "0.1.2-rc.1",
98
+ "@deepseek-ai/dsh-system-prompt": "0.1.2-rc.1",
99
+ "@deepseek-ai/dsh-timeout": "0.1.2-rc.1",
100
+ "@deepseek-ai/dsh-token-meter": "0.1.2-rc.1",
101
+ "@deepseek-ai/dsh-tool-call-timeout-policy": "0.1.2-rc.1",
102
+ "@deepseek-ai/dsh-tool-fs": "0.1.2-rc.1",
103
+ "@deepseek-ai/dsh-tool-goal": "0.1.2-rc.1",
104
+ "@deepseek-ai/dsh-tool-skill": "0.1.2-rc.1",
105
+ "@deepseek-ai/dsh-tool-web": "0.1.2-rc.1",
106
+ "@deepseek-ai/dsh-tools": "0.1.2-rc.1",
107
+ "@deepseek-ai/dsh-typert-protocol": "0.1.2-rc.1",
108
+ "@deepseek-ai/dsh-typert-registry": "0.1.2-rc.1",
109
+ "@deepseek-ai/dsh-util-values": "0.1.2-rc.1",
110
+ "@deepseek-ai/dsh-web": "0.1.2-rc.1",
111
+ "@deepseek-ai/dsh-web-fetch-http": "0.1.2-rc.1",
112
+ "@deepseek-ai/dsh-web-search-deepseek": "0.1.2-rc.1",
113
+ "@deepseek-ai/dsh-workspace": "0.1.2-rc.1",
110
114
  "@mixmark-io/domino": "2.2.0",
111
- "just-bash": "3.3.0",
112
115
  "fast-png": "8.0.0",
113
116
  "jpeg-js": "0.4.4",
117
+ "just-bash": "3.4.2",
114
118
  "playwright": "^1.49.0",
115
119
  "typescript": "^6.0.3",
116
120
  "vitest": "^4.1.8",
@@ -79,7 +79,7 @@ export function verifyPacked(input) {
79
79
  || !noticesText.includes('Copyright (c) 2026 DeepSeek')
80
80
  || !noticesText.includes('## Bundled component inventory')
81
81
  || !noticesText.includes('## Bundled license and notice texts')
82
- || !noticesText.includes('`@cloudflare/computer@0.2.0` | `MIT`')
82
+ || !noticesText.includes('`@cloudflare/computer@0.2.1` | `MIT`')
83
83
  || !noticesText.includes('`diff@9.0.0` (`LICENSE`)')
84
84
  || !noticesText.includes('Copyright (c) 2009-2015, Kevin Decker')
85
85
  || !noticesText.includes('Redistributions in binary form must reproduce')