@zhushanwen/pi-subagent-workflow 8.14.7 → 9.0.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 (58) hide show
  1. package/README.md +6 -5
  2. package/package.json +11 -7
  3. package/relay/relay.mjs +45 -2
  4. package/skills/workflow-script-format/SKILL.md +2 -56
  5. package/src/host/__tests__/inflight-reporter.test.ts +26 -1
  6. package/src/host/__tests__/pi-host.test.ts +418 -4
  7. package/src/host/inflight-reporter.ts +13 -10
  8. package/src/host/pi-host.ts +205 -17
  9. package/src/index.ts +21 -72
  10. package/src/injectors/__tests__/engine-awareness.test.ts +236 -33
  11. package/src/injectors/__tests__/helpers/injector-test-mocks.ts +15 -7
  12. package/src/injectors/__tests__/workflow-list-injector.test.ts +447 -40
  13. package/src/injectors/resource-list-injector.ts +103 -32
  14. package/src/injectors/subagent-list-injector.ts +4 -28
  15. package/src/injectors/workflow-list-injector.ts +8 -4
  16. package/src/interface/__tests__/capture-tool.ts +56 -0
  17. package/src/interface/__tests__/commands-resume.test.ts +103 -0
  18. package/src/interface/__tests__/tool-prompt-contract.test.ts +361 -0
  19. package/src/interface/__tests__/tool-render.test.ts +105 -2
  20. package/src/interface/__tests__/tool-subagents.test.ts +24 -26
  21. package/src/interface/__tests__/tool-workflow-resume.test.ts +227 -0
  22. package/src/interface/__tests__/tool-workflow-script.test.ts +557 -0
  23. package/src/interface/__tests__/tool-workflow.test.ts +884 -0
  24. package/src/interface/bg-notify-render.ts +18 -9
  25. package/src/interface/command-actions.ts +22 -17
  26. package/src/interface/commands.ts +58 -12
  27. package/src/interface/format.ts +50 -16
  28. package/src/interface/id-preview.ts +4 -4
  29. package/src/interface/subagent-actions.ts +18 -50
  30. package/src/interface/subagent-tool.ts +26 -18
  31. package/src/interface/subagents.ts +5 -11
  32. package/src/interface/tool-render.ts +14 -30
  33. package/src/interface/tool-shared.ts +55 -12
  34. package/src/interface/tool-subagents.ts +21 -11
  35. package/src/interface/tool-workflow-script.ts +52 -72
  36. package/src/interface/tool-workflow.ts +345 -139
  37. package/src/interface/views/WorkflowsView.ts +10 -7
  38. package/src/interface/views/__tests__/{WorkflowsView-signature.test.ts → WorkflowsView.test.ts} +155 -11
  39. package/src/interface/views/detail-content.ts +3 -5
  40. package/src/jsonl-run-store.ts +656 -544
  41. package/src/model-events.ts +35 -0
  42. package/src/session-lifecycle.ts +376 -85
  43. package/src/subagents-events.ts +56 -0
  44. package/src/workflow-events.ts +285 -200
  45. package/src/workflow-notify.ts +456 -0
  46. package/src/injectors/__tests__/engine-section-stability.test.ts +0 -353
  47. package/src/injectors/__tests__/model-list-injector.test.ts +0 -136
  48. package/src/injectors/__tests__/subagent-list-injector.test.ts +0 -376
  49. package/src/interface/__tests__/detectors.test.ts +0 -161
  50. package/src/interface/__tests__/subagent-tool-prompt.test.ts +0 -183
  51. package/src/interface/__tests__/tool-workflow-run-builtin-name.test.ts +0 -219
  52. package/src/interface/__tests__/tool-workflow-script-generate.test.ts +0 -251
  53. package/src/interface/__tests__/tool-workflow-throw-paths.test.ts +0 -215
  54. package/src/interface/__tests__/workflow-state-file-exposure.test.ts +0 -38
  55. package/src/interface/__tests__/workflow-tool-prompt.test.ts +0 -129
  56. package/src/interface/helpers.ts +0 -272
  57. package/src/interface/views/__tests__/detail-content-session-file.test.ts +0 -73
  58. package/src/interface/views/__tests__/record-progress.test.ts +0 -235
@@ -0,0 +1,56 @@
1
+ /**
2
+ * subagents-events — subagents 域父级联事件 handler(/fork /new 级联关闭)。
3
+ *
4
+ * 原内联在 workflow-events.ts 装配 seam(跨域 handler 迁出,原样搬移——行为与
5
+ * 日志文案逐字保留);级联关闭的对象是 SubagentService 的 record 池,与 workflow
6
+ * 域装配零数据耦合。由 setupWorkflowDomain 在原注册位置调用
7
+ * setupSubagentsCascadeEvents(pi.on 注册顺序逐位不变,
8
+ * workflow-events.test.ts 锁定)。
9
+ */
10
+
11
+ import type { ExtensionAPI } from "@earendil-works/pi-coding-agent";
12
+ import { getLogger } from "@zhushanwen/pi-extension-logger";
13
+ import { getSubagentService } from "@zhushanwen/subagent-core";
14
+
15
+ // 模块级 logger(与 index.ts 同 component 名;setPiHandle 注入后自动走 appendEntry)
16
+ const logger = getLogger("subagents");
17
+
18
+ /**
19
+ * SP-4: 注册父级联关闭事件(/fork 与 /new)。
20
+ *
21
+ * 主 session /fork 或 /new 时,清理旧 record(disposeAllRecords:CAS 转终态 +
22
+ * archive + worktree 清理)。before 事件在 session 替换前触发,确保旧 session 的
23
+ * subagent 在新 session 创建前被清理(随后的 session_shutdown → dispose 收割子进程)。
24
+ *
25
+ * [M2 修复] 旧实现把 /new 级联挂在 session_before_tree 上——SDK 中该事件只由
26
+ * AgentSession.navigateTree()(/tree 同 session 分支切换)触发,/new 走
27
+ * session_before_switch(reason:"new") + session_shutdown(reason:"new"),从不触发
28
+ * before_tree。后果双向:/new 级联是死代码;普通 /tree 分支导航反而误杀全部活跃
29
+ * subagent。现 /new 改挂 session_before_switch(reason==="new"),before_tree handler
30
+ * 移除(/tree 是同 session 内导航,record/子进程归属不变,无级联关闭诉求)。
31
+ */
32
+ export function setupSubagentsCascadeEvents(pi: ExtensionAPI): void {
33
+ pi.on("session_before_fork", (_event, _ctx) => {
34
+ const service = getSubagentService();
35
+ if (service) {
36
+ const count = service.onParentFork();
37
+ if (count > 0) {
38
+ logger.warn(`[subagents] /fork 级联关闭 ${count} 个 subagent`);
39
+ }
40
+ }
41
+ });
42
+
43
+ pi.on("session_before_switch", (event, _ctx) => {
44
+ // /new(reason:"new")创建全新 session → 级联关闭旧 record。
45
+ // reason:"resume"(/resume /import 回到已有 session)不级联:record 按 rootSessionId
46
+ // 归属隔离,跨 session 读写由 store 过滤守卫,无需销毁。
47
+ if (event.reason !== "new") return;
48
+ const service = getSubagentService();
49
+ if (service) {
50
+ const count = service.onParentNew();
51
+ if (count > 0) {
52
+ logger.warn(`[subagents] /new 级联关闭 ${count} 个 subagent`);
53
+ }
54
+ }
55
+ });
56
+ }