lody 0.81.1 → 0.83.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.
@@ -55,7 +55,7 @@ const DEEPSEEK_HARNESS_AGENT_PRESETS = [
55
55
  }
56
56
  ];
57
57
  const ACP_EXTENSION_DSH_VERSION = "0.1.0";
58
- const DEEPSEEK_HARNESS_VERSION = "0.1.0-rc.6";
58
+ const DEEPSEEK_HARNESS_VERSION = "0.1.0-rc.7";
59
59
  const ACP_EXTENSION_DSH_PROFILE_REVISION = "v3";
60
60
  const ACP_EXTENSION_DSH_SESSION_ROOT_ENV = "ACP_EXTENSION_DSH_SESSION_ROOT";
61
61
  const ACP_EXTENSION_DSH_QUERY_PATH_ENV = "ACP_EXTENSION_DSH_QUERY_PATH";
@@ -123,7 +123,52 @@ const DEEPSEEK_HARNESS_NPX_PACKAGES = [
123
123
  "@deepseek-ai/dsh-terminal-bash",
124
124
  "@deepseek-ai/dsh-tool-bash-persistent",
125
125
  "@deepseek-ai/dsh-fs-local",
126
- "@deepseek-ai/dsh-tool-str-replace-editor"
126
+ "@deepseek-ai/dsh-tool-str-replace-editor",
127
+ // Pin the complete transitive DSH dependency and peer closure too. Harness
128
+ // packages publish caret ranges, so leaving one implicit lets npm mix a later
129
+ // release candidate into this otherwise immutable composition when published.
130
+ "@deepseek-ai/dsh-acp",
131
+ "@deepseek-ai/dsh-agent",
132
+ "@deepseek-ai/dsh-agent-loop",
133
+ "@deepseek-ai/dsh-anonymous-user-id",
134
+ "@deepseek-ai/dsh-app-boot",
135
+ "@deepseek-ai/dsh-atomic-write",
136
+ "@deepseek-ai/dsh-attachment",
137
+ "@deepseek-ai/dsh-bash-local",
138
+ "@deepseek-ai/dsh-brand",
139
+ "@deepseek-ai/dsh-code-runtime",
140
+ "@deepseek-ai/dsh-compaction",
141
+ "@deepseek-ai/dsh-credentials",
142
+ "@deepseek-ai/dsh-fs",
143
+ "@deepseek-ai/dsh-home-paths",
144
+ "@deepseek-ai/dsh-invariants",
145
+ "@deepseek-ai/dsh-jobs",
146
+ "@deepseek-ai/dsh-jobs-local",
147
+ "@deepseek-ai/dsh-launch-environment",
148
+ "@deepseek-ai/dsh-llm",
149
+ "@deepseek-ai/dsh-llm-retry",
150
+ "@deepseek-ai/dsh-output-retention",
151
+ "@deepseek-ai/dsh-pwsh-local",
152
+ "@deepseek-ai/dsh-sandbox",
153
+ "@deepseek-ai/dsh-sandbox-windows-acl",
154
+ "@deepseek-ai/dsh-scope",
155
+ "@deepseek-ai/dsh-session",
156
+ "@deepseek-ai/dsh-session-persistence",
157
+ "@deepseek-ai/dsh-session-projection-cache",
158
+ "@deepseek-ai/dsh-session-query",
159
+ "@deepseek-ai/dsh-session-title",
160
+ "@deepseek-ai/dsh-settings",
161
+ "@deepseek-ai/dsh-shell",
162
+ "@deepseek-ai/dsh-spill",
163
+ "@deepseek-ai/dsh-storage",
164
+ "@deepseek-ai/dsh-storage-domain",
165
+ "@deepseek-ai/dsh-subagent-in-process-driver",
166
+ "@deepseek-ai/dsh-subprocess",
167
+ "@deepseek-ai/dsh-system-prompt",
168
+ "@deepseek-ai/dsh-timeout",
169
+ "@deepseek-ai/dsh-tools",
170
+ "@deepseek-ai/dsh-typert-protocol",
171
+ "@deepseek-ai/dsh-workflow"
127
172
  ];
128
173
  function createDeepSeekHarnessCordisConfig(adapterPath, presetRoot, sessionCompression = DEEPSEEK_HARNESS_DEFAULT_SESSION_COMPRESSION) {
129
174
  return `# Generated for acp-extension-dsh. API credentials stay in the host environment.
@@ -32,7 +32,7 @@ import "net";
32
32
  import "tls";
33
33
  import "url";
34
34
  import { __tla as __tla_1 } from "./loro_wasm_bg-BPNKba8n.js";
35
- import "./profile-BuT-wJhi.js";
35
+ import "./profile-RfMzWliN.js";
36
36
  import "assert";
37
37
  import "fs/promises";
38
38
  import "better-sqlite3";
@@ -79,8 +79,8 @@ let __tla = Promise.all([
79
79
  }
80
80
  })()
81
81
  ]).then(async () => {
82
- const reviewViewerVersion = "0.81.1";
83
- const reviewViewerSha256 = "41b6ffd0acff2c355e190b604776a89138f9598a1772d09390a6d5af514e71bb";
82
+ const reviewViewerVersion = "0.83.0";
83
+ const reviewViewerSha256 = "2ae06d0f134be0ae82e0a9962179037cbee997a59c4240753e44e77b11d92dd6";
84
84
  const reviewViewerFileName = "standalone.html";
85
85
  const DEFAULT_CDN_BASES = [
86
86
  "https://cdn.jsdelivr.net/npm",
@@ -2,7 +2,7 @@ import { randomUUID, createHash } from "node:crypto";
2
2
  import { isAbsolute } from "node:path";
3
3
  import { Readable, Writable } from "node:stream";
4
4
  import { n as ndJsonStream, A as AgentSideConnection, R as RequestError, P as PROTOCOL_VERSION } from "./chunks/acp-CrvzLY5A.js";
5
- import { b as DEEPSEEK_HARNESS_MODELS, D as DEEPSEEK_HARNESS_PERMISSION_MODES, c as DEEPSEEK_HARNESS_REASONING_OPTIONS, e as ACP_EXTENSION_DSH_VERSION, a as DEEPSEEK_HARNESS_AGENT_PRESETS } from "./chunks/profile-BuT-wJhi.js";
5
+ import { b as DEEPSEEK_HARNESS_MODELS, D as DEEPSEEK_HARNESS_PERMISSION_MODES, c as DEEPSEEK_HARNESS_REASONING_OPTIONS, e as ACP_EXTENSION_DSH_VERSION, a as DEEPSEEK_HARNESS_AGENT_PRESETS } from "./chunks/profile-RfMzWliN.js";
6
6
  import "./chunks/schemas-Du3qLZPS.js";
7
7
  const name = "acp-extension-dsh";
8
8
  const inject = [
@@ -373,7 +373,23 @@ function apply(ctx, rawConfig) {
373
373
  if (!record || record.agent.session !== session)
374
374
  return;
375
375
  try {
376
- if (event.type === "assistant/message") {
376
+ if (event.type === "assistant/chunk" && event.data.chunk?.type === "reasoning-delta" && typeof event.data.chunk.text === "string" && event.data.chunk.text.length > 0) {
377
+ notify({
378
+ sessionId: record.agent.session.id,
379
+ update: {
380
+ sessionUpdate: "agent_thought_chunk",
381
+ content: { type: "text", text: event.data.chunk.text }
382
+ }
383
+ });
384
+ } else if (event.type === "assistant/chunk" && event.data.chunk?.type === "block-end" && event.data.chunk.block?.type === "reasoning") {
385
+ notify({
386
+ sessionId: record.agent.session.id,
387
+ update: {
388
+ sessionUpdate: "agent_thought_chunk",
389
+ content: { type: "text", text: "\n\n" }
390
+ }
391
+ });
392
+ } else if (event.type === "assistant/message") {
377
393
  for (const block of event.data.message?.content ?? []) {
378
394
  if (block.type === "text" && "text" in block && block.text.length > 0) {
379
395
  notify({
@@ -198,16 +198,16 @@
198
198
  toolName: subagent_fork
199
199
  backgroundMode: continuable
200
200
 
201
- # Product providers are host-plane singletons. Copy this preset, then
202
- # remove `disabled` from either ordinary tool row to expose that product
203
- # only to agents composed from the copy.
201
+ # Production dsh does not install these optional providers. An opting-in
202
+ # Profile mounts each provider once on the host plane; copy this preset,
203
+ # then remove `disabled` from the matching tool row.
204
204
  - id: tool-subagent-codex
205
205
  name: '@deepseek-ai/dsh-tool-subagent'
206
206
  disabled: true
207
207
  config:
208
208
  provider: codex
209
209
  toolName: subagent_codex
210
- enableRunInBackground: false
210
+ backgroundMode: one-shot
211
211
  maxDepth: provider-managed
212
212
 
213
213
  - id: tool-subagent-claude-code
@@ -216,7 +216,7 @@
216
216
  config:
217
217
  provider: claude-code
218
218
  toolName: subagent_claude_code
219
- enableRunInBackground: false
219
+ backgroundMode: one-shot
220
220
  maxDepth: provider-managed
221
221
 
222
222
  - id: workflow-worker-thread
@@ -185,16 +185,16 @@
185
185
  toolName: subagent_fork
186
186
  backgroundMode: continuable
187
187
 
188
- # Product providers are host-plane singletons. Copy this preset, then
189
- # remove `disabled` from either ordinary tool row to expose that product
190
- # only to agents composed from the copy.
188
+ # Production dsh does not install these optional providers. An opting-in
189
+ # Profile mounts each provider once on the host plane; copy this preset,
190
+ # then remove `disabled` from the matching tool row.
191
191
  - id: tool-subagent-codex
192
192
  name: '@deepseek-ai/dsh-tool-subagent'
193
193
  disabled: true
194
194
  config:
195
195
  provider: codex
196
196
  toolName: subagent_codex
197
- enableRunInBackground: false
197
+ backgroundMode: one-shot
198
198
  maxDepth: provider-managed
199
199
 
200
200
  - id: tool-subagent-claude-code
@@ -203,7 +203,7 @@
203
203
  config:
204
204
  provider: claude-code
205
205
  toolName: subagent_claude_code
206
- enableRunInBackground: false
206
+ backgroundMode: one-shot
207
207
  maxDepth: provider-managed
208
208
 
209
209
  - id: workflow-worker-thread
@@ -123,7 +123,7 @@ After a clean mount-validation, ask the user to start a session on the new prese
123
123
 
124
124
  ## Native product subagents
125
125
 
126
- Codex and Claude Code providers already live in the host composition. A preset chooses either product by contributing the same ordinary delegation-tool row used for spawn and fork; never move a product provider into the preset and never add a product-specific settings field.
126
+ Codex and Claude Code providers belong on the host plane but are not installed by production `dsh`. The active Profile must install and mount the selected provider before a preset can expose its ordinary delegation-tool row; never move a product provider into the preset and never add a product-specific settings field.
127
127
 
128
128
  Copy these disabled templates from a shipped full preset and remove `disabled` only for the products the user requested:
129
129
 
@@ -134,7 +134,7 @@ Copy these disabled templates from a shipped full preset and remove `disabled` o
134
134
  config:
135
135
  provider: codex
136
136
  toolName: subagent_codex
137
- enableRunInBackground: false
137
+ backgroundMode: one-shot
138
138
  maxDepth: provider-managed
139
139
 
140
140
  - id: tool-subagent-claude-code
@@ -143,11 +143,11 @@ Copy these disabled templates from a shipped full preset and remove `disabled` o
143
143
  config:
144
144
  provider: claude-code
145
145
  toolName: subagent_claude_code
146
- enableRunInBackground: false
146
+ backgroundMode: one-shot
147
147
  maxDepth: provider-managed
148
148
  ```
149
149
 
150
- The two rows are independent. Leaving both disabled preserves the copied preset, enabling one exposes only that product tool, and enabling both exposes both. The host must provide `codex` or `claude` on `PATH`; the preset does not install, authenticate, select a model for, or probe either product.
150
+ The two rows are independent. Leaving both disabled preserves the copied preset, enabling one exposes only that product tool, and enabling both exposes both. Production `dsh` does not install or mount either optional provider: before enabling a row, the Profile must install the matching `@deepseek-ai/dsh-subagent-codex` or `@deepseek-ai/dsh-subagent-claude-code` package and mount it once on the host plane. A preset cannot provide that host dependency. `backgroundMode: one-shot` keeps omitted or `false` calls in the foreground and lets explicit `run_in_background: true` return a generic Job id. Full presets already carry `tool-jobs`, while the base host carries the job registry; retain both so `job_output`, `job_list`, `job_kill`, cancellation, and completion notices stay available. The host must also provide `codex` or `claude` on `PATH`; the preset does not install, authenticate, select a model for, or probe either product.
151
151
 
152
152
  ## What not to move into a preset
153
153
 
@@ -197,16 +197,16 @@
197
197
  toolName: subagent_fork
198
198
  backgroundMode: continuable
199
199
 
200
- # Product providers are host-plane singletons. Copy this preset, then
201
- # remove `disabled` from either ordinary tool row to expose that product
202
- # only to agents composed from the copy.
200
+ # Production dsh does not install these optional providers. An opting-in
201
+ # Profile mounts each provider once on the host plane; copy this preset,
202
+ # then remove `disabled` from the matching tool row.
203
203
  - id: tool-subagent-codex
204
204
  name: '@deepseek-ai/dsh-tool-subagent'
205
205
  disabled: true
206
206
  config:
207
207
  provider: codex
208
208
  toolName: subagent_codex
209
- enableRunInBackground: false
209
+ backgroundMode: one-shot
210
210
  maxDepth: provider-managed
211
211
 
212
212
  - id: tool-subagent-claude-code
@@ -215,7 +215,7 @@
215
215
  config:
216
216
  provider: claude-code
217
217
  toolName: subagent_claude_code
218
- enableRunInBackground: false
218
+ backgroundMode: one-shot
219
219
  maxDepth: provider-managed
220
220
 
221
221
  - id: workflow-worker-thread