dsh-plugin-subagent-bridge 0.12.0 → 0.12.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/index.js CHANGED
@@ -888,7 +888,9 @@ export function createApi(ctx, state, settings) {
888
888
  } catch {
889
889
  /* Cancelling is best effort: the send below still delivers the message. */
890
890
  }
891
- await waitForTurnEnd(ctx, targetId, turnBefore, 15000)
891
+ /* The abort closes the *current* turn, so accept that number: waiting for a
892
+ * strictly newer turn burned the whole grace period before every send. */
893
+ await waitForTurnEnd(ctx, targetId, Math.max(0, turnBefore - 1), 15000)
892
894
  }
893
895
 
894
896
  /* A steered message is absorbed by the turn that is already running, so waiting for
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-plugin-subagent-bridge",
3
- "version": "0.12.0",
3
+ "version": "0.12.2",
4
4
  "type": "module",
5
5
  "description": "Subagent bridge: lets Codex delegate a task to DeepSeek Harness the way it would spawn a subagent (one call, waits for the answer), plus a codex_dispatch tool for the reverse direction.",
6
6
  "keywords": [
@@ -224,6 +224,35 @@ dsh_followup({ "worker": "audit_api", "message": "把第 3 条展开,给出补
224
224
 
225
225
  `dsh_followup` 复用该 worker 的会话,比新开一个便宜。也可以用 `dsh_task({ "sessionId": …, "prompt": … })` 做同样的事(阻塞版)。
226
226
 
227
+ ## 改主意时:排队还是立刻打断
228
+
229
+ 默认 `dsh_followup` / `dsh_task` 是**排队**:等 worker 当前这一轮跑完再处理。但有时候用户就是要它立刻停——改方向、别继续跑、先汇报。这时用 `mode`:
230
+
231
+ ```jsonc
232
+ // 排进队列,等当前回合结束(默认)
233
+ dsh_followup({ "worker": "w1", "message": "跑完顺手看一下测试覆盖率" })
234
+
235
+ // 插进当前回合:当前那一步工具调用仍会跑完
236
+ dsh_followup({ "worker": "w1", "message": "补充一句:只改 src 下的文件", "mode": "steer" })
237
+
238
+ // 立刻打断:先取消当前回合,再发消息开新回合
239
+ dsh_followup({ "worker": "w1", "message": "停,先汇报现在的结果", "mode": "interrupt" })
240
+ ```
241
+
242
+ | `mode` | 行为 | 什么时候用 |
243
+ | --- | --- | --- |
244
+ | `queue`(默认) | 等这一轮结束 | 补充要求,不急着停 |
245
+ | `steer` | 并入当前回合,**当前那一步还会跑完** | 想到补充,能等这一下 |
246
+ | `interrupt` | 先 `cancel`,再发消息 | 真的要停 |
247
+
248
+ 实测差别(worker 正在跑 `sleep 120`):
249
+
250
+ - `steer` → 消息要等那一步工具调用结束才被看到,**70 秒**才回应;
251
+ - `interrupt` → 先 aborted 当前回合,再开新回合,**10 秒左右**返回。
252
+
253
+ 用户说「停下来」「别跑了」「先别管这个」时用 `interrupt`;说「顺便」「另外」时用默认 `queue` 就够了。`dsh_task` 对**正在运行**的会话默认会拒绝,拒绝信息里也会提示这两个选项。
254
+
255
+
227
256
  ## 查现在有哪些 worker
228
257
 
229
258
  ```jsonc