@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.
- package/README.md +6 -5
- package/package.json +11 -7
- package/relay/relay.mjs +45 -2
- package/skills/workflow-script-format/SKILL.md +2 -56
- package/src/host/__tests__/inflight-reporter.test.ts +26 -1
- package/src/host/__tests__/pi-host.test.ts +418 -4
- package/src/host/inflight-reporter.ts +13 -10
- package/src/host/pi-host.ts +205 -17
- package/src/index.ts +21 -72
- package/src/injectors/__tests__/engine-awareness.test.ts +236 -33
- package/src/injectors/__tests__/helpers/injector-test-mocks.ts +15 -7
- package/src/injectors/__tests__/workflow-list-injector.test.ts +447 -40
- package/src/injectors/resource-list-injector.ts +103 -32
- package/src/injectors/subagent-list-injector.ts +4 -28
- package/src/injectors/workflow-list-injector.ts +8 -4
- package/src/interface/__tests__/capture-tool.ts +56 -0
- package/src/interface/__tests__/commands-resume.test.ts +103 -0
- package/src/interface/__tests__/tool-prompt-contract.test.ts +361 -0
- package/src/interface/__tests__/tool-render.test.ts +105 -2
- package/src/interface/__tests__/tool-subagents.test.ts +24 -26
- package/src/interface/__tests__/tool-workflow-resume.test.ts +227 -0
- package/src/interface/__tests__/tool-workflow-script.test.ts +557 -0
- package/src/interface/__tests__/tool-workflow.test.ts +884 -0
- package/src/interface/bg-notify-render.ts +18 -9
- package/src/interface/command-actions.ts +22 -17
- package/src/interface/commands.ts +58 -12
- package/src/interface/format.ts +50 -16
- package/src/interface/id-preview.ts +4 -4
- package/src/interface/subagent-actions.ts +18 -50
- package/src/interface/subagent-tool.ts +26 -18
- package/src/interface/subagents.ts +5 -11
- package/src/interface/tool-render.ts +14 -30
- package/src/interface/tool-shared.ts +55 -12
- package/src/interface/tool-subagents.ts +21 -11
- package/src/interface/tool-workflow-script.ts +52 -72
- package/src/interface/tool-workflow.ts +345 -139
- package/src/interface/views/WorkflowsView.ts +10 -7
- package/src/interface/views/__tests__/{WorkflowsView-signature.test.ts → WorkflowsView.test.ts} +155 -11
- package/src/interface/views/detail-content.ts +3 -5
- package/src/jsonl-run-store.ts +656 -544
- package/src/model-events.ts +35 -0
- package/src/session-lifecycle.ts +376 -85
- package/src/subagents-events.ts +56 -0
- package/src/workflow-events.ts +285 -200
- package/src/workflow-notify.ts +456 -0
- package/src/injectors/__tests__/engine-section-stability.test.ts +0 -353
- package/src/injectors/__tests__/model-list-injector.test.ts +0 -136
- package/src/injectors/__tests__/subagent-list-injector.test.ts +0 -376
- package/src/interface/__tests__/detectors.test.ts +0 -161
- package/src/interface/__tests__/subagent-tool-prompt.test.ts +0 -183
- package/src/interface/__tests__/tool-workflow-run-builtin-name.test.ts +0 -219
- package/src/interface/__tests__/tool-workflow-script-generate.test.ts +0 -251
- package/src/interface/__tests__/tool-workflow-throw-paths.test.ts +0 -215
- package/src/interface/__tests__/workflow-state-file-exposure.test.ts +0 -38
- package/src/interface/__tests__/workflow-tool-prompt.test.ts +0 -129
- package/src/interface/helpers.ts +0 -272
- package/src/interface/views/__tests__/detail-content-session-file.test.ts +0 -73
- 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
|
+
}
|