@fitchmultz/pi-subagents 0.49.0 → 0.50.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 (999) hide show
  1. package/CHANGELOG.md +29 -1
  2. package/README.md +88 -94
  3. package/dist/agent/contracts.js +122 -0
  4. package/dist/agent/cwd.js +51 -0
  5. package/dist/agent/host.js +82 -0
  6. package/dist/agent/index.js +422 -0
  7. package/dist/agent/journal-tail.js +183 -0
  8. package/dist/agent/launch.js +87 -0
  9. package/dist/agent/legacy.js +141 -0
  10. package/dist/agent/notifications.js +119 -0
  11. package/dist/agent/observe-screen.js +132 -0
  12. package/dist/agent/observe.js +234 -0
  13. package/dist/agent/process.js +173 -0
  14. package/dist/agent/receipts.js +75 -0
  15. package/dist/agent/runner.js +372 -0
  16. package/dist/agent/saved.js +195 -0
  17. package/dist/agent/shell.js +43 -0
  18. package/dist/agent/storage.js +113 -0
  19. package/dist/agent/typebox.js +20 -0
  20. package/dist/agent/usage.js +232 -0
  21. package/dist/agent/view.js +164 -0
  22. package/dist/build-info.js +1 -0
  23. package/dist/index.js +8 -0
  24. package/dist/pi-intercom/bridge-config.js +12 -19
  25. package/dist/pi-intercom/bridge-http.js +1 -2
  26. package/dist/pi-intercom/bridge-mailbox.js +2 -7
  27. package/dist/pi-intercom/bridge-protocol.js +3 -10
  28. package/dist/pi-intercom/bridge-routes.js +15 -186
  29. package/dist/pi-intercom/bridge-session.js +2 -96
  30. package/dist/pi-intercom/bridge.js +12 -35
  31. package/dist/pi-intercom/broker/broker.js +33 -38
  32. package/dist/pi-intercom/broker/client-last.js +48 -0
  33. package/dist/pi-intercom/broker/client.js +41 -1
  34. package/dist/pi-intercom/broker/connection.js +5 -18
  35. package/dist/pi-intercom/broker/last.js +173 -0
  36. package/dist/pi-intercom/broker/paths.js +28 -9
  37. package/dist/pi-intercom/broker/server-connection.js +18 -0
  38. package/dist/pi-intercom/broker/spawn.js +32 -16
  39. package/dist/pi-intercom/broker/targets.js +24 -0
  40. package/dist/pi-intercom/config.js +0 -23
  41. package/dist/pi-intercom/connection.js +30 -70
  42. package/dist/pi-intercom/identity.js +14 -44
  43. package/dist/pi-intercom/inbound-delivery.js +8 -69
  44. package/dist/pi-intercom/inbound-journal.js +3 -68
  45. package/dist/pi-intercom/inbound-record.js +2 -48
  46. package/dist/pi-intercom/inbound.js +6 -53
  47. package/dist/pi-intercom/index.js +8 -47
  48. package/dist/pi-intercom/last-message.js +58 -0
  49. package/dist/pi-intercom/lifecycle.js +8 -33
  50. package/dist/pi-intercom/message-format.js +1 -32
  51. package/dist/pi-intercom/outbound.js +9 -1
  52. package/dist/pi-intercom/reply-tracker.js +2 -12
  53. package/dist/pi-intercom/reply-wait.js +16 -107
  54. package/dist/pi-intercom/runtime-types.js +0 -1
  55. package/dist/pi-intercom/session-events.js +5 -21
  56. package/dist/pi-intercom/tool-arguments.js +4 -0
  57. package/dist/pi-intercom/tool-registration.js +5 -86
  58. package/dist/pi-intercom/tool-schemas.js +12 -52
  59. package/dist/pi-intercom/tools.js +55 -29
  60. package/dist/pi-intercom/types.js +10 -3
  61. package/dist/pi-intercom/ui/session-format.js +3 -3
  62. package/dist/shared/journal-projections.js +0 -31
  63. package/dist/shared/types.js +0 -195
  64. package/docs/code-quality.md +4 -3
  65. package/docs/development.md +57 -95
  66. package/docs/intercom-bridge.md +206 -415
  67. package/docs/intercom.md +142 -593
  68. package/docs/performance.md +109 -192
  69. package/docs/reference.md +139 -1452
  70. package/package.json +12 -19
  71. package/scripts/build.mjs +1 -1
  72. package/scripts/intercom-bridge-credentials.mjs +1 -1
  73. package/scripts/intercom-remote.mjs +55 -272
  74. package/scripts/local-install-smoke.mjs +3 -1
  75. package/scripts/measure-size.mjs +64 -0
  76. package/scripts/native-package-smoke.mjs +267 -109
  77. package/scripts/package-smoke.mjs +120 -363
  78. package/scripts/real-pi-processes.mjs +6 -38
  79. package/scripts/real-pi-smoke.mjs +153 -144
  80. package/scripts/run-tests.mjs +4 -3
  81. package/skills/pi-intercom/SKILL.md +53 -107
  82. package/skills/pi-subagents/SKILL.md +45 -59
  83. package/src/agent/contracts.ts +144 -0
  84. package/src/agent/cwd.ts +69 -0
  85. package/src/agent/host.ts +82 -0
  86. package/src/agent/index.ts +486 -0
  87. package/src/agent/journal-tail.ts +184 -0
  88. package/src/agent/launch.ts +112 -0
  89. package/src/agent/legacy.ts +167 -0
  90. package/src/agent/notifications.ts +131 -0
  91. package/src/agent/observe-screen.ts +167 -0
  92. package/src/agent/observe.ts +240 -0
  93. package/src/agent/process.ts +179 -0
  94. package/src/agent/receipts.ts +88 -0
  95. package/src/agent/runner.ts +417 -0
  96. package/src/agent/saved.ts +220 -0
  97. package/src/agent/shell.ts +56 -0
  98. package/src/agent/storage.ts +123 -0
  99. package/src/agent/typebox.ts +17 -0
  100. package/src/agent/usage.ts +263 -0
  101. package/src/agent/view.ts +246 -0
  102. package/src/index.ts +10 -0
  103. package/src/pi-intercom/bridge-config.ts +13 -24
  104. package/src/pi-intercom/bridge-http.ts +1 -2
  105. package/src/pi-intercom/bridge-mailbox.ts +8 -8
  106. package/src/pi-intercom/bridge-protocol.ts +7 -11
  107. package/src/pi-intercom/bridge-routes.ts +29 -277
  108. package/src/pi-intercom/bridge-session.ts +3 -114
  109. package/src/pi-intercom/bridge.ts +12 -35
  110. package/src/pi-intercom/broker/broker.ts +39 -54
  111. package/src/pi-intercom/broker/client-last.ts +65 -0
  112. package/src/pi-intercom/broker/client.ts +45 -3
  113. package/src/pi-intercom/broker/connection.ts +5 -17
  114. package/src/pi-intercom/broker/last.ts +222 -0
  115. package/src/pi-intercom/broker/paths.ts +31 -9
  116. package/src/pi-intercom/broker/server-connection.ts +38 -0
  117. package/src/pi-intercom/broker/spawn.ts +44 -16
  118. package/src/pi-intercom/broker/targets.ts +42 -0
  119. package/src/pi-intercom/config.ts +0 -27
  120. package/src/pi-intercom/connection.ts +41 -84
  121. package/src/pi-intercom/identity.ts +21 -49
  122. package/src/pi-intercom/inbound-delivery.ts +10 -93
  123. package/src/pi-intercom/inbound-journal.ts +4 -81
  124. package/src/pi-intercom/inbound-record.ts +2 -61
  125. package/src/pi-intercom/inbound.ts +7 -69
  126. package/src/pi-intercom/index.ts +10 -49
  127. package/src/pi-intercom/last-message.ts +73 -0
  128. package/src/pi-intercom/lifecycle.ts +14 -41
  129. package/src/pi-intercom/message-format.ts +1 -34
  130. package/src/pi-intercom/outbound.ts +16 -1
  131. package/src/pi-intercom/reply-tracker.ts +2 -19
  132. package/src/pi-intercom/reply-wait.ts +21 -128
  133. package/src/pi-intercom/runtime-types.ts +5 -58
  134. package/src/pi-intercom/session-events.ts +7 -35
  135. package/src/pi-intercom/tool-arguments.ts +6 -0
  136. package/src/pi-intercom/tool-registration.ts +9 -109
  137. package/src/pi-intercom/tool-schemas.ts +17 -80
  138. package/src/pi-intercom/tools.ts +58 -44
  139. package/src/pi-intercom/transport.ts +1 -0
  140. package/src/pi-intercom/types.ts +45 -6
  141. package/src/pi-intercom/ui/session-format.ts +3 -3
  142. package/src/shared/journal-projections.ts +0 -35
  143. package/src/shared/post-exit-stdio-guard.ts +7 -1
  144. package/src/shared/types.ts +0 -257
  145. package/agents/context-builder.md +0 -115
  146. package/agents/debugger.md +0 -58
  147. package/agents/delegate.md +0 -14
  148. package/agents/fixer.md +0 -40
  149. package/agents/oracle.md +0 -82
  150. package/agents/planner.md +0 -83
  151. package/agents/researcher.md +0 -60
  152. package/agents/reviewer-claude.md +0 -78
  153. package/agents/reviewer-gpt.md +0 -78
  154. package/agents/reviewer-ponytail.md +0 -92
  155. package/agents/reviewer-security.md +0 -92
  156. package/agents/reviewer.md +0 -78
  157. package/agents/scout.md +0 -77
  158. package/agents/ui-designer.md +0 -58
  159. package/agents/watcher.md +0 -27
  160. package/agents/worker.md +0 -52
  161. package/agents/writer.md +0 -39
  162. package/dist/agents/agent-defaults.js +0 -9
  163. package/dist/agents/agent-definition.js +0 -196
  164. package/dist/agents/agent-management.js +0 -88
  165. package/dist/agents/agent-scope.js +0 -9
  166. package/dist/agents/agent-selection.js +0 -13
  167. package/dist/agents/agent-serializer.js +0 -88
  168. package/dist/agents/agents.js +0 -111
  169. package/dist/agents/builtin-overrides.js +0 -218
  170. package/dist/agents/chain-serializer.js +0 -3
  171. package/dist/agents/config-values.js +0 -52
  172. package/dist/agents/discovery-paths.js +0 -91
  173. package/dist/agents/frontmatter.js +0 -31
  174. package/dist/agents/identity.js +0 -46
  175. package/dist/agents/json-chain.js +0 -254
  176. package/dist/agents/management-config.js +0 -332
  177. package/dist/agents/management-format.js +0 -231
  178. package/dist/agents/management-persistence.js +0 -287
  179. package/dist/agents/management-targets.js +0 -136
  180. package/dist/agents/management-warnings.js +0 -81
  181. package/dist/agents/markdown-chain.js +0 -210
  182. package/dist/agents/package-agents.js +0 -154
  183. package/dist/agents/skill-files.js +0 -157
  184. package/dist/agents/skill-search-paths.js +0 -246
  185. package/dist/agents/skill-types.js +0 -1
  186. package/dist/agents/skills.js +0 -125
  187. package/dist/extension/acceptance-schema.js +0 -55
  188. package/dist/extension/build-info.js +0 -1
  189. package/dist/extension/chain-schema.js +0 -196
  190. package/dist/extension/child-runtime.js +0 -237
  191. package/dist/extension/compact-tools.js +0 -183
  192. package/dist/extension/config-schema.js +0 -29
  193. package/dist/extension/config.js +0 -38
  194. package/dist/extension/control-notice-schema.js +0 -37
  195. package/dist/extension/control-notices.js +0 -36
  196. package/dist/extension/delegation-bridges.js +0 -43
  197. package/dist/extension/doctor.js +0 -166
  198. package/dist/extension/everyday-schemas.js +0 -207
  199. package/dist/extension/fanout-child.js +0 -25
  200. package/dist/extension/index.js +0 -28
  201. package/dist/extension/message-renderers.js +0 -225
  202. package/dist/extension/nested-control-inbox.js +0 -154
  203. package/dist/extension/parent-runtime.js +0 -339
  204. package/dist/extension/primary-tool.js +0 -69
  205. package/dist/extension/result-snapshot.js +0 -4
  206. package/dist/extension/runtime-reload.js +0 -62
  207. package/dist/extension/runtime-storage.js +0 -43
  208. package/dist/extension/schema-overrides.js +0 -75
  209. package/dist/extension/schemas.js +0 -345
  210. package/dist/extension/tool-input.js +0 -35
  211. package/dist/extension/tool-result.js +0 -29
  212. package/dist/history/answer-texts.js +0 -57
  213. package/dist/history/canonical-result.js +0 -114
  214. package/dist/history/canonical-selection.js +0 -40
  215. package/dist/history/database-generation.js +0 -82
  216. package/dist/history/database.js +0 -96
  217. package/dist/history/entry-ingestion.js +0 -61
  218. package/dist/history/index.js +0 -344
  219. package/dist/history/ingest.js +0 -314
  220. package/dist/history/output-digests.js +0 -40
  221. package/dist/history/preview.js +0 -210
  222. package/dist/history/prune.js +0 -33
  223. package/dist/history/queries.js +0 -81
  224. package/dist/history/query-scope.js +0 -190
  225. package/dist/history/rows.js +0 -77
  226. package/dist/history/run-projection.js +0 -136
  227. package/dist/history/run-queries.js +0 -153
  228. package/dist/history/schema.js +0 -31
  229. package/dist/history/search-queries.js +0 -169
  230. package/dist/history/selected-record.js +0 -108
  231. package/dist/history/source-file.js +0 -45
  232. package/dist/history/source-watches.js +0 -141
  233. package/dist/history/store.js +0 -243
  234. package/dist/history/text-chunks.js +0 -168
  235. package/dist/history/text.js +0 -35
  236. package/dist/history/transcript-queries.js +0 -183
  237. package/dist/history/types.js +0 -8
  238. package/dist/history/values.js +0 -36
  239. package/dist/history/wire-inputs.js +0 -122
  240. package/dist/history/wire-models.js +0 -38
  241. package/dist/history/worker-runtime.js +0 -441
  242. package/dist/history/worker.js +0 -91
  243. package/dist/intercom/intercom-bridge.js +0 -140
  244. package/dist/intercom/live-intercom.js +0 -151
  245. package/dist/intercom/nested-result-tree.js +0 -163
  246. package/dist/intercom/result-delivery.js +0 -40
  247. package/dist/intercom/result-intercom.js +0 -216
  248. package/dist/pi-intercom/bridge-ask.js +0 -57
  249. package/dist/pi-intercom/bridge-broadcast.js +0 -60
  250. package/dist/pi-intercom/bridge-catalog.js +0 -372
  251. package/dist/pi-intercom/bridge-control.js +0 -104
  252. package/dist/pi-intercom/bridge-groups.js +0 -135
  253. package/dist/pi-intercom/bridge-launch-journal.js +0 -84
  254. package/dist/pi-intercom/bridge-launch-policy.js +0 -154
  255. package/dist/pi-intercom/bridge-launch.js +0 -327
  256. package/dist/pi-intercom/bridge-operations.js +0 -127
  257. package/dist/pi-intercom/bridge-rpc-process.js +0 -292
  258. package/dist/pi-intercom/interview.js +0 -236
  259. package/dist/pi-intercom/native-control-auth.js +0 -80
  260. package/dist/pi-intercom/native-control-protocol.js +0 -111
  261. package/dist/pi-intercom/native-control.js +0 -130
  262. package/dist/pi-intercom/peer-awareness.js +0 -66
  263. package/dist/pi-intercom/saved-transcript.js +0 -135
  264. package/dist/pi-intercom/subagent-events.js +0 -238
  265. package/dist/pi-intercom/subagent-live-events.js +0 -175
  266. package/dist/pi-intercom/supervisor.js +0 -282
  267. package/dist/pi-intercom/topic-actions.js +0 -177
  268. package/dist/pi-intercom/topics.js +0 -242
  269. package/dist/pi-intercom/transcript.js +0 -175
  270. package/dist/pi-intercom/ui/compose-paste.js +0 -93
  271. package/dist/pi-intercom/ui/compose.js +0 -247
  272. package/dist/pi-intercom/ui/inline-message.js +0 -80
  273. package/dist/pi-intercom/ui/message-renderers.js +0 -147
  274. package/dist/pi-intercom/ui/overlay.js +0 -181
  275. package/dist/pi-intercom/ui/session-list.js +0 -157
  276. package/dist/pi-intercom/ui/tool-renderers.js +0 -110
  277. package/dist/pi-intercom/ui/topic-view.js +0 -88
  278. package/dist/runs/background/async-chain-plan.js +0 -265
  279. package/dist/runs/background/async-control.js +0 -171
  280. package/dist/runs/background/async-execution.js +0 -179
  281. package/dist/runs/background/async-job-admission.js +0 -40
  282. package/dist/runs/background/async-job-projection.js +0 -169
  283. package/dist/runs/background/async-job-tracker.js +0 -353
  284. package/dist/runs/background/async-launch.js +0 -216
  285. package/dist/runs/background/async-plan.js +0 -116
  286. package/dist/runs/background/async-result-file.js +0 -82
  287. package/dist/runs/background/async-resume.js +0 -247
  288. package/dist/runs/background/async-run-discovery.js +0 -211
  289. package/dist/runs/background/async-run-location.js +0 -135
  290. package/dist/runs/background/async-run-record.js +0 -1
  291. package/dist/runs/background/async-run-repair.js +0 -223
  292. package/dist/runs/background/async-run-summary.js +0 -1
  293. package/dist/runs/background/async-single-plan.js +0 -105
  294. package/dist/runs/background/async-status-projection.js +0 -155
  295. package/dist/runs/background/async-status-render.js +0 -117
  296. package/dist/runs/background/async-status-validation.js +0 -181
  297. package/dist/runs/background/async-status.js +0 -3
  298. package/dist/runs/background/async-value.js +0 -21
  299. package/dist/runs/background/completion-dedupe.js +0 -42
  300. package/dist/runs/background/completion-delivery.js +0 -251
  301. package/dist/runs/background/completion-receipts.js +0 -237
  302. package/dist/runs/background/legacy-status-acceptance.js +0 -34
  303. package/dist/runs/background/notify.js +0 -111
  304. package/dist/runs/background/parallel-groups.js +0 -72
  305. package/dist/runs/background/result-payload.js +0 -178
  306. package/dist/runs/background/result-watcher.js +0 -435
  307. package/dist/runs/background/run-id-resolver.js +0 -84
  308. package/dist/runs/background/run-schemas.js +0 -189
  309. package/dist/runs/background/run-status-contracts.js +0 -14
  310. package/dist/runs/background/run-status-render.js +0 -270
  311. package/dist/runs/background/run-status.js +0 -274
  312. package/dist/runs/background/runner-attempt-output.js +0 -155
  313. package/dist/runs/background/runner-attempt.js +0 -263
  314. package/dist/runs/background/runner-child-executor.js +0 -166
  315. package/dist/runs/background/runner-child-observer.js +0 -197
  316. package/dist/runs/background/runner-completion-summary.js +0 -71
  317. package/dist/runs/background/runner-completion.js +0 -211
  318. package/dist/runs/background/runner-config.js +0 -1
  319. package/dist/runs/background/runner-contract.js +0 -1
  320. package/dist/runs/background/runner-dynamic.js +0 -121
  321. package/dist/runs/background/runner-finalization.js +0 -149
  322. package/dist/runs/background/runner-graph.js +0 -68
  323. package/dist/runs/background/runner-initial-status.js +0 -60
  324. package/dist/runs/background/runner-lifecycle.js +0 -142
  325. package/dist/runs/background/runner-monitor.js +0 -311
  326. package/dist/runs/background/runner-parallel.js +0 -203
  327. package/dist/runs/background/runner-prepare-step.js +0 -86
  328. package/dist/runs/background/runner-reporting.js +0 -153
  329. package/dist/runs/background/runner-status.js +0 -148
  330. package/dist/runs/background/runner-step-output.js +0 -90
  331. package/dist/runs/background/runner-step-record.js +0 -45
  332. package/dist/runs/background/runner-step.js +0 -112
  333. package/dist/runs/background/runner-streaming.js +0 -173
  334. package/dist/runs/background/runner-workflow.js +0 -213
  335. package/dist/runs/background/stale-run-reconciler.js +0 -198
  336. package/dist/runs/background/subagent-runner-launcher.js +0 -75
  337. package/dist/runs/background/subagent-runner.js +0 -81
  338. package/dist/runs/background/top-level-async.js +0 -6
  339. package/dist/runs/foreground/chain-clarify.js +0 -428
  340. package/dist/runs/foreground/clarification-draft.js +0 -87
  341. package/dist/runs/foreground/clarify-contracts.js +0 -1
  342. package/dist/runs/foreground/clarify-invocation.js +0 -163
  343. package/dist/runs/foreground/clarify-text-editor.js +0 -210
  344. package/dist/runs/foreground/clarify-view.js +0 -167
  345. package/dist/runs/foreground/execution-input.js +0 -296
  346. package/dist/runs/foreground/execution-routing.js +0 -33
  347. package/dist/runs/foreground/execution-timeout.js +0 -81
  348. package/dist/runs/foreground/foreground-control.js +0 -276
  349. package/dist/runs/foreground/foreground-memory.js +0 -99
  350. package/dist/runs/foreground/invocation-context.js +0 -55
  351. package/dist/runs/foreground/invocation-execution.js +0 -331
  352. package/dist/runs/foreground/invocation-expansion.js +0 -48
  353. package/dist/runs/foreground/management-actions.js +0 -295
  354. package/dist/runs/foreground/nested-control.js +0 -179
  355. package/dist/runs/foreground/question-continuation.js +0 -78
  356. package/dist/runs/foreground/question-control.js +0 -193
  357. package/dist/runs/foreground/resume-target.js +0 -221
  358. package/dist/runs/foreground/revival-launch-policy.js +0 -58
  359. package/dist/runs/foreground/run-async-path.js +0 -217
  360. package/dist/runs/foreground/run-interrupt.js +0 -164
  361. package/dist/runs/foreground/run-nudge.js +0 -278
  362. package/dist/runs/foreground/saved-revival.js +0 -251
  363. package/dist/runs/foreground/subagent-executor.js +0 -153
  364. package/dist/runs/foreground/subagent-params.js +0 -202
  365. package/dist/runs/foreground/wait-observation.js +0 -104
  366. package/dist/runs/foreground/wait-registration.js +0 -17
  367. package/dist/runs/foreground/wait-run.js +0 -301
  368. package/dist/runs/shared/acceptance-contract.js +0 -347
  369. package/dist/runs/shared/acceptance-defaults.js +0 -1
  370. package/dist/runs/shared/acceptance-evaluation.js +0 -276
  371. package/dist/runs/shared/acceptance-finalization.js +0 -356
  372. package/dist/runs/shared/acceptance-outcome.js +0 -53
  373. package/dist/runs/shared/acceptance-reports.js +0 -212
  374. package/dist/runs/shared/acceptance-submission.js +0 -167
  375. package/dist/runs/shared/acceptance-verification.js +0 -100
  376. package/dist/runs/shared/acceptance.js +0 -4
  377. package/dist/runs/shared/chain-outputs.js +0 -138
  378. package/dist/runs/shared/child-attempt-types.js +0 -1
  379. package/dist/runs/shared/child-attempt.js +0 -340
  380. package/dist/runs/shared/child-boundaries.js +0 -173
  381. package/dist/runs/shared/child-context-filter.js +0 -44
  382. package/dist/runs/shared/child-event-observer.js +0 -390
  383. package/dist/runs/shared/child-execution-cwd.js +0 -126
  384. package/dist/runs/shared/child-execution-outcome.js +0 -72
  385. package/dist/runs/shared/child-invocation.js +0 -54
  386. package/dist/runs/shared/child-message-validation.js +0 -215
  387. package/dist/runs/shared/child-native-accounting.js +0 -106
  388. package/dist/runs/shared/child-native-observation.js +0 -69
  389. package/dist/runs/shared/child-observation-spool.js +0 -169
  390. package/dist/runs/shared/child-observations.js +0 -195
  391. package/dist/runs/shared/child-presence.js +0 -3
  392. package/dist/runs/shared/child-route-env.js +0 -119
  393. package/dist/runs/shared/child-stream-observer.js +0 -221
  394. package/dist/runs/shared/child-stream-projection.js +0 -137
  395. package/dist/runs/shared/child-structured-tool.js +0 -27
  396. package/dist/runs/shared/claude-code.js +0 -162
  397. package/dist/runs/shared/claude-model.js +0 -42
  398. package/dist/runs/shared/claude-session.js +0 -83
  399. package/dist/runs/shared/claude-types.js +0 -1
  400. package/dist/runs/shared/completion-guard.js +0 -31
  401. package/dist/runs/shared/control-event-policy.js +0 -8
  402. package/dist/runs/shared/control-notification-owner.js +0 -13
  403. package/dist/runs/shared/dynamic-fanout.js +0 -289
  404. package/dist/runs/shared/dynamic-item.js +0 -102
  405. package/dist/runs/shared/history-index.js +0 -98
  406. package/dist/runs/shared/legacy-async-recovery.js +0 -114
  407. package/dist/runs/shared/legacy-output-recovery.js +0 -148
  408. package/dist/runs/shared/mcp-config-schema.js +0 -36
  409. package/dist/runs/shared/mcp-direct-tool-allowlist.js +0 -365
  410. package/dist/runs/shared/model-fallback.js +0 -247
  411. package/dist/runs/shared/mutating-tool-guard.js +0 -210
  412. package/dist/runs/shared/native-finalization-types.js +0 -1
  413. package/dist/runs/shared/native-finalization.js +0 -180
  414. package/dist/runs/shared/native-usage.js +0 -293
  415. package/dist/runs/shared/nested-control-records.js +0 -128
  416. package/dist/runs/shared/nested-events.js +0 -8
  417. package/dist/runs/shared/nested-path.js +0 -52
  418. package/dist/runs/shared/nested-projection.js +0 -155
  419. package/dist/runs/shared/nested-protocol.js +0 -18
  420. package/dist/runs/shared/nested-registry.js +0 -191
  421. package/dist/runs/shared/nested-render.js +0 -156
  422. package/dist/runs/shared/nested-route.js +0 -220
  423. package/dist/runs/shared/nested-validation.js +0 -216
  424. package/dist/runs/shared/owned-child-evidence.js +0 -125
  425. package/dist/runs/shared/owned-run-list.js +0 -146
  426. package/dist/runs/shared/owned-run-observation.js +0 -267
  427. package/dist/runs/shared/owned-run-progress.js +0 -109
  428. package/dist/runs/shared/owned-run-read-state.js +0 -1
  429. package/dist/runs/shared/owned-run-results.js +0 -202
  430. package/dist/runs/shared/owned-run-status.js +0 -180
  431. package/dist/runs/shared/owned-run-view.js +0 -51
  432. package/dist/runs/shared/owned-workflow-details.js +0 -17
  433. package/dist/runs/shared/owner-output.js +0 -43
  434. package/dist/runs/shared/parallel-utils.js +0 -49
  435. package/dist/runs/shared/parent-receipts.js +0 -126
  436. package/dist/runs/shared/parent-usage.js +0 -233
  437. package/dist/runs/shared/pi-args.js +0 -217
  438. package/dist/runs/shared/pi-launch-input.js +0 -1
  439. package/dist/runs/shared/pi-session-launch.js +0 -86
  440. package/dist/runs/shared/pi-spawn.js +0 -66
  441. package/dist/runs/shared/run-history-queries.js +0 -136
  442. package/dist/runs/shared/run-history.js +0 -176
  443. package/dist/runs/shared/run-id-ambiguity.js +0 -4
  444. package/dist/runs/shared/run-metadata-paths.js +0 -14
  445. package/dist/runs/shared/run-metadata.js +0 -158
  446. package/dist/runs/shared/run-persistence.js +0 -131
  447. package/dist/runs/shared/run-records.js +0 -9
  448. package/dist/runs/shared/run-restoration.js +0 -337
  449. package/dist/runs/shared/run-state-owner.js +0 -26
  450. package/dist/runs/shared/session-cwd-preload.js +0 -42
  451. package/dist/runs/shared/single-output.js +0 -297
  452. package/dist/runs/shared/stable-value.js +0 -15
  453. package/dist/runs/shared/streaming-text.js +0 -26
  454. package/dist/runs/shared/structured-output.js +0 -67
  455. package/dist/runs/shared/subagent-control.js +0 -246
  456. package/dist/runs/shared/subagent-prompt-runtime.js +0 -94
  457. package/dist/runs/shared/subagent-tool-loop-guard.js +0 -95
  458. package/dist/runs/shared/supervisor-question-state.js +0 -145
  459. package/dist/runs/shared/supervisor-questions.js +0 -284
  460. package/dist/runs/shared/workflow-graph.js +0 -306
  461. package/dist/runs/shared/workflow-policy.js +0 -157
  462. package/dist/runs/shared/worktree-contract.js +0 -1
  463. package/dist/runs/shared/worktree-hook.js +0 -138
  464. package/dist/runs/shared/worktree-location.js +0 -47
  465. package/dist/runs/shared/worktree-preservation.js +0 -8
  466. package/dist/runs/shared/worktree-process.js +0 -107
  467. package/dist/runs/shared/worktree.js +0 -386
  468. package/dist/shared/agent-context-policy.js +0 -116
  469. package/dist/shared/agent-dir.js +0 -14
  470. package/dist/shared/artifacts.js +0 -114
  471. package/dist/shared/atomic-json.js +0 -16
  472. package/dist/shared/chain-files.js +0 -72
  473. package/dist/shared/concurrency.js +0 -18
  474. package/dist/shared/content-preview.js +0 -115
  475. package/dist/shared/execution-cwd.js +0 -22
  476. package/dist/shared/file-coalescer.js +0 -22
  477. package/dist/shared/fork-context.js +0 -47
  478. package/dist/shared/formatters.js +0 -111
  479. package/dist/shared/journal-reader.js +0 -6
  480. package/dist/shared/lazy-tools.js +0 -43
  481. package/dist/shared/message-output.js +0 -116
  482. package/dist/shared/model-info.js +0 -85
  483. package/dist/shared/native-import.js +0 -20
  484. package/dist/shared/native-session-loader.js +0 -17
  485. package/dist/shared/native-session.js +0 -4
  486. package/dist/shared/native-tui.js +0 -23
  487. package/dist/shared/native-typebox.js +0 -32
  488. package/dist/shared/prompt-sections.js +0 -10
  489. package/dist/shared/session-entries.js +0 -87
  490. package/dist/shared/session-identity.js +0 -16
  491. package/dist/shared/settings.js +0 -121
  492. package/dist/shared/status-format.js +0 -171
  493. package/dist/shared/task-file-policy.js +0 -24
  494. package/dist/shared/temp-root.js +0 -143
  495. package/dist/shared/types/acceptance.js +0 -1
  496. package/dist/shared/types/async.js +0 -1
  497. package/dist/shared/types/config.js +0 -1
  498. package/dist/shared/types/details.js +0 -1
  499. package/dist/shared/types/history.js +0 -1
  500. package/dist/shared/types/inputs.js +0 -1
  501. package/dist/shared/types/intercom.js +0 -1
  502. package/dist/shared/types/launch.js +0 -1
  503. package/dist/shared/types/messages.js +0 -1
  504. package/dist/shared/types/nested.js +0 -1
  505. package/dist/shared/types/owned-runs.js +0 -1
  506. package/dist/shared/types/progress.js +0 -1
  507. package/dist/shared/types/questions.js +0 -1
  508. package/dist/shared/types/results.js +0 -1
  509. package/dist/shared/types/state.js +0 -1
  510. package/dist/shared/types/usage.js +0 -1
  511. package/dist/shared/types/workflow.js +0 -1
  512. package/dist/shared/ui-mode.js +0 -3
  513. package/dist/shared/utils.js +0 -128
  514. package/dist/slash/command-discovery.js +0 -83
  515. package/dist/slash/command-input.js +0 -190
  516. package/dist/slash/prompt-template-bridge.js +0 -122
  517. package/dist/slash/prompt-template-contract.js +0 -77
  518. package/dist/slash/prompt-template-results.js +0 -125
  519. package/dist/slash/request-protocol.js +0 -68
  520. package/dist/slash/result-delivery.js +0 -237
  521. package/dist/slash/saved-chain.js +0 -78
  522. package/dist/slash/slash-bridge.js +0 -150
  523. package/dist/slash/slash-commands.js +0 -136
  524. package/dist/slash/slash-live-state.js +0 -267
  525. package/dist/tui/action-hints.js +0 -103
  526. package/dist/tui/activity-lines.js +0 -32
  527. package/dist/tui/agent-browser.js +0 -290
  528. package/dist/tui/agent-controls.js +0 -289
  529. package/dist/tui/agent-conversation.js +0 -444
  530. package/dist/tui/agent-dock.js +0 -171
  531. package/dist/tui/agent-history.js +0 -50
  532. package/dist/tui/agent-model.js +0 -62
  533. package/dist/tui/agent-picker.js +0 -262
  534. package/dist/tui/agent-view.js +0 -350
  535. package/dist/tui/compact-results.js +0 -193
  536. package/dist/tui/conversation-details.js +0 -190
  537. package/dist/tui/conversation-frame.js +0 -135
  538. package/dist/tui/conversation-history.js +0 -210
  539. package/dist/tui/conversation-menu.js +0 -78
  540. package/dist/tui/conversation-notices.js +0 -79
  541. package/dist/tui/conversation-selection.js +0 -58
  542. package/dist/tui/conversation-viewport.js +0 -129
  543. package/dist/tui/direction-message.js +0 -27
  544. package/dist/tui/display.js +0 -282
  545. package/dist/tui/editor-viewport.js +0 -18
  546. package/dist/tui/expanded-content.js +0 -87
  547. package/dist/tui/expanded-multi.js +0 -170
  548. package/dist/tui/expanded-single.js +0 -65
  549. package/dist/tui/history-cards.js +0 -202
  550. package/dist/tui/history-display.js +0 -238
  551. package/dist/tui/history-json.js +0 -16
  552. package/dist/tui/history-metadata.js +0 -152
  553. package/dist/tui/history-record.js +0 -251
  554. package/dist/tui/history-text.js +0 -34
  555. package/dist/tui/indexed-history.js +0 -116
  556. package/dist/tui/nested-widget.js +0 -120
  557. package/dist/tui/picker-page.js +0 -59
  558. package/dist/tui/render.js +0 -72
  559. package/dist/tui/result-facts.js +0 -64
  560. package/dist/tui/task-observation.js +0 -59
  561. package/dist/tui/task-store.js +0 -366
  562. package/dist/tui/text-values.js +0 -16
  563. package/dist/tui/view-connections.js +0 -47
  564. package/dist/tui/view-model.js +0 -94
  565. package/dist/tui/view-persistence.js +0 -51
  566. package/dist/tui/view-ports.js +0 -1
  567. package/dist/tui/view-session.js +0 -37
  568. package/dist/tui/widget-details.js +0 -144
  569. package/dist/tui/widget-status.js +0 -245
  570. package/dist/tui/widget.js +0 -145
  571. package/dist/tui/workflow-labels.js +0 -223
  572. package/dist/tui/workflow-outcomes.js +0 -124
  573. package/generated/RunValidators.d.ts +0 -28
  574. package/generated/RunValidators.js +0 -2
  575. package/prompts/gather-context-and-clarify.md +0 -14
  576. package/prompts/parallel-cleanup.md +0 -65
  577. package/prompts/parallel-context-build.md +0 -59
  578. package/prompts/parallel-handoff-plan.md +0 -68
  579. package/prompts/parallel-research.md +0 -55
  580. package/prompts/parallel-review.md +0 -61
  581. package/prompts/review-loop.md +0 -44
  582. package/scripts/generate-run-schemas.mjs +0 -210
  583. package/skills/pi-intercom/evals/evals.json +0 -29
  584. package/skills/pi-intercom/evals/trigger-evals.json +0 -47
  585. package/skills/pi-intercom/references/peer-sessions.md +0 -74
  586. package/skills/pi-subagents/evals/evals.json +0 -29
  587. package/skills/pi-subagents/evals/trigger-evals.json +0 -42
  588. package/skills/pi-subagents/references/full-orchestration-guide.md +0 -1005
  589. package/src/agents/agent-defaults.ts +0 -13
  590. package/src/agents/agent-definition.ts +0 -253
  591. package/src/agents/agent-management.ts +0 -120
  592. package/src/agents/agent-scope.ts +0 -11
  593. package/src/agents/agent-selection.ts +0 -22
  594. package/src/agents/agent-serializer.ts +0 -90
  595. package/src/agents/agents.ts +0 -214
  596. package/src/agents/builtin-overrides.ts +0 -297
  597. package/src/agents/chain-serializer.ts +0 -3
  598. package/src/agents/config-values.ts +0 -57
  599. package/src/agents/discovery-paths.ts +0 -134
  600. package/src/agents/frontmatter.ts +0 -39
  601. package/src/agents/identity.ts +0 -61
  602. package/src/agents/json-chain.ts +0 -305
  603. package/src/agents/management-config.ts +0 -342
  604. package/src/agents/management-format.ts +0 -243
  605. package/src/agents/management-persistence.ts +0 -408
  606. package/src/agents/management-targets.ts +0 -260
  607. package/src/agents/management-warnings.ts +0 -115
  608. package/src/agents/markdown-chain.ts +0 -237
  609. package/src/agents/package-agents.ts +0 -231
  610. package/src/agents/skill-files.ts +0 -182
  611. package/src/agents/skill-search-paths.ts +0 -289
  612. package/src/agents/skill-types.ts +0 -31
  613. package/src/agents/skills.ts +0 -179
  614. package/src/extension/acceptance-schema.ts +0 -88
  615. package/src/extension/build-info.ts +0 -2
  616. package/src/extension/chain-schema.ts +0 -276
  617. package/src/extension/child-runtime.ts +0 -302
  618. package/src/extension/compact-tools.ts +0 -271
  619. package/src/extension/config-schema.ts +0 -59
  620. package/src/extension/config.ts +0 -45
  621. package/src/extension/control-notice-schema.ts +0 -55
  622. package/src/extension/control-notices.ts +0 -71
  623. package/src/extension/delegation-bridges.ts +0 -59
  624. package/src/extension/doctor.ts +0 -207
  625. package/src/extension/everyday-schemas.ts +0 -252
  626. package/src/extension/fanout-child.ts +0 -33
  627. package/src/extension/index.ts +0 -31
  628. package/src/extension/message-renderers.ts +0 -334
  629. package/src/extension/nested-control-inbox.ts +0 -196
  630. package/src/extension/parent-runtime.ts +0 -405
  631. package/src/extension/primary-tool.ts +0 -130
  632. package/src/extension/result-snapshot.ts +0 -9
  633. package/src/extension/runtime-reload.ts +0 -72
  634. package/src/extension/runtime-storage.ts +0 -49
  635. package/src/extension/schema-overrides.ts +0 -114
  636. package/src/extension/schemas.ts +0 -477
  637. package/src/extension/tool-input.ts +0 -46
  638. package/src/extension/tool-result.ts +0 -47
  639. package/src/history/answer-texts.ts +0 -74
  640. package/src/history/canonical-result.ts +0 -138
  641. package/src/history/canonical-selection.ts +0 -54
  642. package/src/history/database-generation.ts +0 -86
  643. package/src/history/database.ts +0 -97
  644. package/src/history/entry-ingestion.ts +0 -129
  645. package/src/history/index.ts +0 -434
  646. package/src/history/ingest.ts +0 -387
  647. package/src/history/output-digests.ts +0 -41
  648. package/src/history/preview.ts +0 -235
  649. package/src/history/prune.ts +0 -48
  650. package/src/history/queries.ts +0 -125
  651. package/src/history/query-scope.ts +0 -278
  652. package/src/history/rows.ts +0 -118
  653. package/src/history/run-projection.ts +0 -162
  654. package/src/history/run-queries.ts +0 -199
  655. package/src/history/schema.ts +0 -34
  656. package/src/history/search-queries.ts +0 -223
  657. package/src/history/selected-record.ts +0 -140
  658. package/src/history/source-file.ts +0 -51
  659. package/src/history/source-watches.ts +0 -156
  660. package/src/history/store.ts +0 -332
  661. package/src/history/text-chunks.ts +0 -186
  662. package/src/history/text.ts +0 -43
  663. package/src/history/transcript-queries.ts +0 -257
  664. package/src/history/types.ts +0 -29
  665. package/src/history/values.ts +0 -36
  666. package/src/history/wire-inputs.ts +0 -141
  667. package/src/history/wire-models.ts +0 -51
  668. package/src/history/worker-runtime.ts +0 -502
  669. package/src/history/worker.ts +0 -99
  670. package/src/intercom/intercom-bridge.ts +0 -190
  671. package/src/intercom/live-intercom.ts +0 -209
  672. package/src/intercom/nested-result-tree.ts +0 -213
  673. package/src/intercom/result-delivery.ts +0 -56
  674. package/src/intercom/result-intercom.ts +0 -308
  675. package/src/pi-intercom/bridge-ask.ts +0 -64
  676. package/src/pi-intercom/bridge-broadcast.ts +0 -70
  677. package/src/pi-intercom/bridge-catalog.ts +0 -489
  678. package/src/pi-intercom/bridge-control.ts +0 -179
  679. package/src/pi-intercom/bridge-groups.ts +0 -169
  680. package/src/pi-intercom/bridge-launch-journal.ts +0 -122
  681. package/src/pi-intercom/bridge-launch-policy.ts +0 -190
  682. package/src/pi-intercom/bridge-launch.ts +0 -506
  683. package/src/pi-intercom/bridge-operations.ts +0 -169
  684. package/src/pi-intercom/bridge-rpc-process.ts +0 -330
  685. package/src/pi-intercom/interview.ts +0 -295
  686. package/src/pi-intercom/native-control-auth.ts +0 -89
  687. package/src/pi-intercom/native-control-protocol.ts +0 -180
  688. package/src/pi-intercom/native-control.ts +0 -160
  689. package/src/pi-intercom/peer-awareness.ts +0 -84
  690. package/src/pi-intercom/saved-transcript.ts +0 -175
  691. package/src/pi-intercom/subagent-events.ts +0 -299
  692. package/src/pi-intercom/subagent-live-events.ts +0 -236
  693. package/src/pi-intercom/supervisor.ts +0 -362
  694. package/src/pi-intercom/topic-actions.ts +0 -243
  695. package/src/pi-intercom/topics.ts +0 -271
  696. package/src/pi-intercom/transcript.ts +0 -226
  697. package/src/pi-intercom/ui/compose-paste.ts +0 -109
  698. package/src/pi-intercom/ui/compose.ts +0 -305
  699. package/src/pi-intercom/ui/inline-message.ts +0 -110
  700. package/src/pi-intercom/ui/message-renderers.ts +0 -182
  701. package/src/pi-intercom/ui/overlay.ts +0 -238
  702. package/src/pi-intercom/ui/session-list.ts +0 -222
  703. package/src/pi-intercom/ui/tool-renderers.ts +0 -148
  704. package/src/pi-intercom/ui/topic-view.ts +0 -107
  705. package/src/runs/background/async-chain-plan.ts +0 -451
  706. package/src/runs/background/async-control.ts +0 -219
  707. package/src/runs/background/async-execution.ts +0 -227
  708. package/src/runs/background/async-job-admission.ts +0 -54
  709. package/src/runs/background/async-job-projection.ts +0 -225
  710. package/src/runs/background/async-job-tracker.ts +0 -441
  711. package/src/runs/background/async-launch.ts +0 -319
  712. package/src/runs/background/async-plan.ts +0 -285
  713. package/src/runs/background/async-result-file.ts +0 -104
  714. package/src/runs/background/async-resume.ts +0 -386
  715. package/src/runs/background/async-run-discovery.ts +0 -264
  716. package/src/runs/background/async-run-location.ts +0 -194
  717. package/src/runs/background/async-run-record.ts +0 -14
  718. package/src/runs/background/async-run-repair.ts +0 -307
  719. package/src/runs/background/async-run-summary.ts +0 -71
  720. package/src/runs/background/async-single-plan.ts +0 -168
  721. package/src/runs/background/async-status-projection.ts +0 -188
  722. package/src/runs/background/async-status-render.ts +0 -164
  723. package/src/runs/background/async-status-validation.ts +0 -238
  724. package/src/runs/background/async-status.ts +0 -9
  725. package/src/runs/background/async-value.ts +0 -29
  726. package/src/runs/background/completion-dedupe.ts +0 -65
  727. package/src/runs/background/completion-delivery.ts +0 -321
  728. package/src/runs/background/completion-receipts.ts +0 -309
  729. package/src/runs/background/legacy-status-acceptance.ts +0 -38
  730. package/src/runs/background/notify.ts +0 -174
  731. package/src/runs/background/parallel-groups.ts +0 -102
  732. package/src/runs/background/result-payload.ts +0 -268
  733. package/src/runs/background/result-watcher.ts +0 -520
  734. package/src/runs/background/run-id-resolver.ts +0 -138
  735. package/src/runs/background/run-schemas.ts +0 -240
  736. package/src/runs/background/run-status-contracts.ts +0 -46
  737. package/src/runs/background/run-status-render.ts +0 -364
  738. package/src/runs/background/run-status.ts +0 -366
  739. package/src/runs/background/runner-attempt-output.ts +0 -281
  740. package/src/runs/background/runner-attempt.ts +0 -354
  741. package/src/runs/background/runner-child-executor.ts +0 -232
  742. package/src/runs/background/runner-child-observer.ts +0 -278
  743. package/src/runs/background/runner-completion-summary.ts +0 -106
  744. package/src/runs/background/runner-completion.ts +0 -274
  745. package/src/runs/background/runner-config.ts +0 -52
  746. package/src/runs/background/runner-contract.ts +0 -51
  747. package/src/runs/background/runner-dynamic.ts +0 -185
  748. package/src/runs/background/runner-finalization.ts +0 -203
  749. package/src/runs/background/runner-graph.ts +0 -91
  750. package/src/runs/background/runner-initial-status.ts +0 -72
  751. package/src/runs/background/runner-lifecycle.ts +0 -159
  752. package/src/runs/background/runner-monitor.ts +0 -401
  753. package/src/runs/background/runner-parallel.ts +0 -279
  754. package/src/runs/background/runner-prepare-step.ts +0 -128
  755. package/src/runs/background/runner-reporting.ts +0 -192
  756. package/src/runs/background/runner-status.ts +0 -220
  757. package/src/runs/background/runner-step-output.ts +0 -156
  758. package/src/runs/background/runner-step-record.ts +0 -76
  759. package/src/runs/background/runner-step.ts +0 -150
  760. package/src/runs/background/runner-streaming.ts +0 -220
  761. package/src/runs/background/runner-workflow.ts +0 -284
  762. package/src/runs/background/stale-run-reconciler.ts +0 -312
  763. package/src/runs/background/subagent-runner-launcher.ts +0 -88
  764. package/src/runs/background/subagent-runner.ts +0 -85
  765. package/src/runs/background/top-level-async.ts +0 -15
  766. package/src/runs/foreground/chain-clarify.ts +0 -505
  767. package/src/runs/foreground/clarification-draft.ts +0 -92
  768. package/src/runs/foreground/clarify-contracts.ts +0 -33
  769. package/src/runs/foreground/clarify-invocation.ts +0 -204
  770. package/src/runs/foreground/clarify-text-editor.ts +0 -229
  771. package/src/runs/foreground/clarify-view.ts +0 -222
  772. package/src/runs/foreground/execution-input.ts +0 -401
  773. package/src/runs/foreground/execution-routing.ts +0 -41
  774. package/src/runs/foreground/execution-timeout.ts +0 -92
  775. package/src/runs/foreground/foreground-control.ts +0 -342
  776. package/src/runs/foreground/foreground-memory.ts +0 -132
  777. package/src/runs/foreground/invocation-context.ts +0 -88
  778. package/src/runs/foreground/invocation-execution.ts +0 -465
  779. package/src/runs/foreground/invocation-expansion.ts +0 -58
  780. package/src/runs/foreground/management-actions.ts +0 -360
  781. package/src/runs/foreground/nested-control.ts +0 -248
  782. package/src/runs/foreground/question-continuation.ts +0 -112
  783. package/src/runs/foreground/question-control.ts +0 -309
  784. package/src/runs/foreground/resume-target.ts +0 -330
  785. package/src/runs/foreground/revival-launch-policy.ts +0 -112
  786. package/src/runs/foreground/run-async-path.ts +0 -327
  787. package/src/runs/foreground/run-interrupt.ts +0 -202
  788. package/src/runs/foreground/run-nudge.ts +0 -355
  789. package/src/runs/foreground/saved-revival.ts +0 -356
  790. package/src/runs/foreground/subagent-executor.ts +0 -203
  791. package/src/runs/foreground/subagent-params.ts +0 -392
  792. package/src/runs/foreground/wait-observation.ts +0 -160
  793. package/src/runs/foreground/wait-registration.ts +0 -18
  794. package/src/runs/foreground/wait-run.ts +0 -366
  795. package/src/runs/shared/acceptance-contract.ts +0 -458
  796. package/src/runs/shared/acceptance-defaults.ts +0 -1
  797. package/src/runs/shared/acceptance-evaluation.ts +0 -349
  798. package/src/runs/shared/acceptance-finalization.ts +0 -495
  799. package/src/runs/shared/acceptance-outcome.ts +0 -69
  800. package/src/runs/shared/acceptance-reports.ts +0 -246
  801. package/src/runs/shared/acceptance-submission.ts +0 -251
  802. package/src/runs/shared/acceptance-verification.ts +0 -118
  803. package/src/runs/shared/acceptance.ts +0 -31
  804. package/src/runs/shared/chain-outputs.ts +0 -206
  805. package/src/runs/shared/child-attempt-types.ts +0 -118
  806. package/src/runs/shared/child-attempt.ts +0 -387
  807. package/src/runs/shared/child-boundaries.ts +0 -217
  808. package/src/runs/shared/child-context-filter.ts +0 -53
  809. package/src/runs/shared/child-event-observer.ts +0 -496
  810. package/src/runs/shared/child-execution-cwd.ts +0 -162
  811. package/src/runs/shared/child-execution-outcome.ts +0 -103
  812. package/src/runs/shared/child-invocation.ts +0 -74
  813. package/src/runs/shared/child-message-validation.ts +0 -233
  814. package/src/runs/shared/child-native-accounting.ts +0 -154
  815. package/src/runs/shared/child-native-observation.ts +0 -79
  816. package/src/runs/shared/child-observation-spool.ts +0 -193
  817. package/src/runs/shared/child-observations.ts +0 -229
  818. package/src/runs/shared/child-presence.ts +0 -6
  819. package/src/runs/shared/child-route-env.ts +0 -142
  820. package/src/runs/shared/child-stream-observer.ts +0 -302
  821. package/src/runs/shared/child-stream-projection.ts +0 -160
  822. package/src/runs/shared/child-structured-tool.ts +0 -38
  823. package/src/runs/shared/claude-code.ts +0 -216
  824. package/src/runs/shared/claude-model.ts +0 -67
  825. package/src/runs/shared/claude-session.ts +0 -124
  826. package/src/runs/shared/claude-types.ts +0 -31
  827. package/src/runs/shared/completion-guard.ts +0 -44
  828. package/src/runs/shared/control-event-policy.ts +0 -15
  829. package/src/runs/shared/control-notification-owner.ts +0 -20
  830. package/src/runs/shared/dynamic-fanout.ts +0 -459
  831. package/src/runs/shared/dynamic-item.ts +0 -114
  832. package/src/runs/shared/history-index.ts +0 -130
  833. package/src/runs/shared/legacy-async-recovery.ts +0 -153
  834. package/src/runs/shared/legacy-output-recovery.ts +0 -214
  835. package/src/runs/shared/mcp-config-schema.ts +0 -46
  836. package/src/runs/shared/mcp-direct-tool-allowlist.ts +0 -465
  837. package/src/runs/shared/model-fallback.ts +0 -344
  838. package/src/runs/shared/mutating-tool-guard.ts +0 -295
  839. package/src/runs/shared/native-finalization-types.ts +0 -29
  840. package/src/runs/shared/native-finalization.ts +0 -252
  841. package/src/runs/shared/native-usage.ts +0 -396
  842. package/src/runs/shared/nested-control-records.ts +0 -178
  843. package/src/runs/shared/nested-events.ts +0 -45
  844. package/src/runs/shared/nested-path.ts +0 -65
  845. package/src/runs/shared/nested-projection.ts +0 -230
  846. package/src/runs/shared/nested-protocol.ts +0 -67
  847. package/src/runs/shared/nested-registry.ts +0 -273
  848. package/src/runs/shared/nested-render.ts +0 -217
  849. package/src/runs/shared/nested-route.ts +0 -292
  850. package/src/runs/shared/nested-validation.ts +0 -291
  851. package/src/runs/shared/owned-child-evidence.ts +0 -184
  852. package/src/runs/shared/owned-run-list.ts +0 -187
  853. package/src/runs/shared/owned-run-observation.ts +0 -368
  854. package/src/runs/shared/owned-run-progress.ts +0 -172
  855. package/src/runs/shared/owned-run-read-state.ts +0 -7
  856. package/src/runs/shared/owned-run-results.ts +0 -289
  857. package/src/runs/shared/owned-run-status.ts +0 -239
  858. package/src/runs/shared/owned-run-view.ts +0 -65
  859. package/src/runs/shared/owned-workflow-details.ts +0 -24
  860. package/src/runs/shared/owner-output.ts +0 -73
  861. package/src/runs/shared/parallel-utils.ts +0 -93
  862. package/src/runs/shared/parent-receipts.ts +0 -186
  863. package/src/runs/shared/parent-usage.ts +0 -344
  864. package/src/runs/shared/pi-args.ts +0 -280
  865. package/src/runs/shared/pi-launch-input.ts +0 -48
  866. package/src/runs/shared/pi-session-launch.ts +0 -94
  867. package/src/runs/shared/pi-spawn.ts +0 -76
  868. package/src/runs/shared/run-history-queries.ts +0 -195
  869. package/src/runs/shared/run-history.ts +0 -221
  870. package/src/runs/shared/run-id-ambiguity.ts +0 -8
  871. package/src/runs/shared/run-metadata-paths.ts +0 -17
  872. package/src/runs/shared/run-metadata.ts +0 -240
  873. package/src/runs/shared/run-persistence.ts +0 -181
  874. package/src/runs/shared/run-records.ts +0 -19
  875. package/src/runs/shared/run-restoration.ts +0 -455
  876. package/src/runs/shared/run-state-owner.ts +0 -31
  877. package/src/runs/shared/session-cwd-preload.ts +0 -47
  878. package/src/runs/shared/single-output.ts +0 -416
  879. package/src/runs/shared/stable-value.ts +0 -15
  880. package/src/runs/shared/streaming-text.ts +0 -45
  881. package/src/runs/shared/structured-output.ts +0 -98
  882. package/src/runs/shared/subagent-control.ts +0 -352
  883. package/src/runs/shared/subagent-prompt-runtime.ts +0 -119
  884. package/src/runs/shared/subagent-tool-loop-guard.ts +0 -139
  885. package/src/runs/shared/supervisor-question-state.ts +0 -221
  886. package/src/runs/shared/supervisor-questions.ts +0 -410
  887. package/src/runs/shared/workflow-graph.ts +0 -422
  888. package/src/runs/shared/workflow-policy.ts +0 -260
  889. package/src/runs/shared/worktree-contract.ts +0 -29
  890. package/src/runs/shared/worktree-hook.ts +0 -181
  891. package/src/runs/shared/worktree-location.ts +0 -61
  892. package/src/runs/shared/worktree-preservation.ts +0 -10
  893. package/src/runs/shared/worktree-process.ts +0 -132
  894. package/src/runs/shared/worktree.ts +0 -507
  895. package/src/shared/agent-context-policy.ts +0 -215
  896. package/src/shared/agent-dir.ts +0 -15
  897. package/src/shared/artifacts.ts +0 -126
  898. package/src/shared/atomic-json.ts +0 -19
  899. package/src/shared/chain-files.ts +0 -72
  900. package/src/shared/concurrency.ts +0 -27
  901. package/src/shared/content-preview.ts +0 -117
  902. package/src/shared/execution-cwd.ts +0 -39
  903. package/src/shared/file-coalescer.ts +0 -31
  904. package/src/shared/fork-context.ts +0 -72
  905. package/src/shared/formatters.ts +0 -125
  906. package/src/shared/journal-reader.ts +0 -18
  907. package/src/shared/lazy-tools.ts +0 -85
  908. package/src/shared/message-output.ts +0 -146
  909. package/src/shared/model-info.ts +0 -117
  910. package/src/shared/native-import.ts +0 -25
  911. package/src/shared/native-session-loader.ts +0 -13
  912. package/src/shared/native-session.ts +0 -6
  913. package/src/shared/native-tui.ts +0 -20
  914. package/src/shared/native-typebox.ts +0 -29
  915. package/src/shared/prompt-sections.ts +0 -16
  916. package/src/shared/session-entries.ts +0 -108
  917. package/src/shared/session-identity.ts +0 -25
  918. package/src/shared/settings.ts +0 -196
  919. package/src/shared/status-format.ts +0 -232
  920. package/src/shared/task-file-policy.ts +0 -35
  921. package/src/shared/temp-root.ts +0 -158
  922. package/src/shared/types/acceptance.ts +0 -149
  923. package/src/shared/types/async.ts +0 -247
  924. package/src/shared/types/config.ts +0 -139
  925. package/src/shared/types/details.ts +0 -104
  926. package/src/shared/types/history.ts +0 -217
  927. package/src/shared/types/inputs.ts +0 -4
  928. package/src/shared/types/intercom.ts +0 -57
  929. package/src/shared/types/launch.ts +0 -39
  930. package/src/shared/types/messages.ts +0 -104
  931. package/src/shared/types/nested.ts +0 -153
  932. package/src/shared/types/owned-runs.ts +0 -148
  933. package/src/shared/types/progress.ts +0 -106
  934. package/src/shared/types/questions.ts +0 -103
  935. package/src/shared/types/results.ts +0 -119
  936. package/src/shared/types/state.ts +0 -56
  937. package/src/shared/types/usage.ts +0 -36
  938. package/src/shared/types/workflow.ts +0 -187
  939. package/src/shared/ui-mode.ts +0 -5
  940. package/src/shared/utils.ts +0 -148
  941. package/src/slash/command-discovery.ts +0 -110
  942. package/src/slash/command-input.ts +0 -232
  943. package/src/slash/prompt-template-bridge.ts +0 -161
  944. package/src/slash/prompt-template-contract.ts +0 -152
  945. package/src/slash/prompt-template-results.ts +0 -189
  946. package/src/slash/request-protocol.ts +0 -87
  947. package/src/slash/result-delivery.ts +0 -312
  948. package/src/slash/saved-chain.ts +0 -115
  949. package/src/slash/slash-bridge.ts +0 -224
  950. package/src/slash/slash-commands.ts +0 -195
  951. package/src/slash/slash-live-state.ts +0 -350
  952. package/src/tui/action-hints.ts +0 -155
  953. package/src/tui/activity-lines.ts +0 -40
  954. package/src/tui/agent-browser.ts +0 -354
  955. package/src/tui/agent-controls.ts +0 -355
  956. package/src/tui/agent-conversation.ts +0 -514
  957. package/src/tui/agent-dock.ts +0 -250
  958. package/src/tui/agent-history.ts +0 -68
  959. package/src/tui/agent-model.ts +0 -78
  960. package/src/tui/agent-picker.ts +0 -325
  961. package/src/tui/agent-view.ts +0 -403
  962. package/src/tui/compact-results.ts +0 -342
  963. package/src/tui/conversation-details.ts +0 -206
  964. package/src/tui/conversation-frame.ts +0 -184
  965. package/src/tui/conversation-history.ts +0 -260
  966. package/src/tui/conversation-menu.ts +0 -119
  967. package/src/tui/conversation-notices.ts +0 -116
  968. package/src/tui/conversation-selection.ts +0 -66
  969. package/src/tui/conversation-viewport.ts +0 -169
  970. package/src/tui/direction-message.ts +0 -35
  971. package/src/tui/display.ts +0 -409
  972. package/src/tui/editor-viewport.ts +0 -19
  973. package/src/tui/expanded-content.ts +0 -134
  974. package/src/tui/expanded-multi.ts +0 -264
  975. package/src/tui/expanded-single.ts +0 -92
  976. package/src/tui/history-cards.ts +0 -298
  977. package/src/tui/history-display.ts +0 -334
  978. package/src/tui/history-json.ts +0 -17
  979. package/src/tui/history-metadata.ts +0 -177
  980. package/src/tui/history-record.ts +0 -321
  981. package/src/tui/history-text.ts +0 -34
  982. package/src/tui/indexed-history.ts +0 -149
  983. package/src/tui/nested-widget.ts +0 -192
  984. package/src/tui/picker-page.ts +0 -80
  985. package/src/tui/render.ts +0 -104
  986. package/src/tui/result-facts.ts +0 -99
  987. package/src/tui/task-observation.ts +0 -96
  988. package/src/tui/task-store.ts +0 -432
  989. package/src/tui/text-values.ts +0 -20
  990. package/src/tui/view-connections.ts +0 -64
  991. package/src/tui/view-model.ts +0 -181
  992. package/src/tui/view-persistence.ts +0 -57
  993. package/src/tui/view-ports.ts +0 -55
  994. package/src/tui/view-session.ts +0 -42
  995. package/src/tui/widget-details.ts +0 -220
  996. package/src/tui/widget-status.ts +0 -331
  997. package/src/tui/widget.ts +0 -208
  998. package/src/tui/workflow-labels.ts +0 -340
  999. package/src/tui/workflow-outcomes.ts +0 -150
@@ -1,1005 +0,0 @@
1
- ---
2
- name: pi-subagents
3
- description: "Pi subagent orchestration reference for single, parallel, chain, async/background, forked-context, acceptance, worktree, intercom, status/control, and agent-management workflows. Do not use for Agent Skill maintenance or non-Pi delegation."
4
- ---
5
-
6
- # Pi Subagents
7
-
8
- The original agent owns integration, review synthesis, and final delivery. Helpers with delegation enabled may split their assigned work when it saves time or improves quality. Use the available child-safe tools and preserve the assigned scope.
9
-
10
- Use this skill when the parent orchestrator needs to launch a specialized subagent, compose multiple agents into a workflow, or create/edit agents and chains on demand.
11
-
12
- ## When to Use
13
-
14
- - **Advisory review**: use fresh-context `reviewer` agents for adversarial code review, or fork to `oracle` when inherited decisions and drift matter
15
- - **Implementation handoff**: use `oracle` advice when helpful, then `worker` implements within existing authority
16
- - **Recon and planning**: use `scout` or `context-builder`, then `planner`
17
- - **Parallel exploration**: run multiple non-conflicting tasks concurrently
18
- - **Long-running work**: launch async/background runs and inspect them later
19
- - **Long-running observation**: use ordinary tools for routine waiting and check collection; use `watcher` when ongoing interpretation adds value
20
- - **Subagent control**: watch needs-attention signals and soft-interrupt only when a delegated run is genuinely blocked
21
- - **Subagent definition management**: create, update, or override Pi agents and chains for a project
22
-
23
- ## Tool vs Slash Commands
24
-
25
- Prefer the compact tools for ordinary delegation:
26
-
27
- ```typescript
28
- agent_runs({ action: "profiles" });
29
- delegate({ agent: "worker", task: "Implement the approved fix", worktree: true });
30
- agent_runs({ action: "list" });
31
- agent_runs({ action: "inspect", id: "<run-id>" });
32
- agent_runs({
33
- action: "review",
34
- id: "<run-id>",
35
- decision: "accepted",
36
- message: "Checked the evidence.",
37
- });
38
- agent_runs({ action: "list", text: "login", sort: "newest", limit: 20 });
39
- agent_runs({ action: "history", id: "<run-id>", index: 0, limit: 100 });
40
- agent_runs({ action: "search", query: '"login timeout"', agent: "worker", limit: 20 });
41
- ```
42
-
43
- These share the full executor, including acceptance and isolated single-writer worktrees. The list prioritizes pending questions, failures/interrupted or unconfirmed work, and completed-but-unreviewed results. Global `agent`/`state`/`text` filters and attention/newest/oldest sorting apply before paging (default 20, maximum 100), never cap retained history. Reuse the returned cursor with the same query, or use `offset`; restart without a cursor when the indexed snapshot changes. `history` requires an owned ID and a child index for multi-child runs, defaults to 100 native-entry previews, and returns an earlier-page cursor. `search` accepts 1–12 lexical words or one quoted phrase, excludes thinking/arguments/hidden payloads, and supports relevance/newest order and owned ID/child/agent filters. Finished attempts keep their own terminal/time boundary even when a continuation shares the source. Browse freshness and excerpts are observations, not canonical completion or delivery proof. For validated full selected bodies, use Agents details/Reply; oversized or changed records fail explicitly. `review` records `accepted` or `needs_changes` separately from execution, validation, and notification; it never launches a repair or reviewer. Use `continue` explicitly for more work. Use `load_subagent` and `subagent(...)` for parallel groups, chains, detailed overrides, and profile administration.
44
- Humans often use the slash-command layer instead:
45
-
46
- - `/run` — launch a single agent
47
- - `/chain` — launch a chain of steps
48
- - `/parallel` — launch top-level parallel tasks
49
- - `/run-chain` — launch a saved `.chain.md` or `.chain.json` workflow
50
- - `/subagents-doctor` — diagnose setup, discovery, async paths, and the paired intercom target
51
-
52
- Prefer the tool when you are writing agent logic. Prefer the slash commands when
53
- you are guiding a human through an interactive flow.
54
-
55
- The repository keeps example prompts for repeatable workflows. Treat them as reusable orchestration recipes. When the user asks for one of these shapes, or when the workflow clearly fits, apply the same pattern directly with `subagent(...)` and other tools:
56
-
57
- - `prompts/parallel-review.md` — fresh-context reviewers with distinct review angles, then synthesis
58
- - `prompts/review-loop.md` — parent-orchestrated worker, fresh-reviewer, and fix-worker cycles until clean or capped
59
- - `prompts/parallel-research.md` — combine `researcher` and `scout` for external evidence plus local code context
60
- - `prompts/parallel-context-build.md` — parallel `context-builder` passes that produce planning handoff context and meta-prompts
61
- - `prompts/parallel-handoff-plan.md` — external-reference research plus local `context-builder` passes, followed by a synthesis handoff plan and implementation-ready meta-prompt
62
- - `prompts/gather-context-and-clarify.md` — scout/research first, then ask the user clarifying questions with the available clarification tool (`ask_question` in pi)
63
- - `prompts/parallel-cleanup.md` — two fresh-context reviewers (deslop + verbosity passes) for an adversarial cleanup review of the current diff
64
-
65
- ## Applying Example Prompt Techniques
66
-
67
- The examples in `prompts/` encode workflows the parent agent can run on demand. If the user provides a URL, issue, PR, plan, local file, screenshot, or freeform target, treat that target as the primary scope: read or fetch it before launching children, then include it explicitly in every child task. For every fresh child, include relevant exact original user instructions and settled decisions, or readable source references, alongside the bounded assignment. Summaries do not replace those requirements. The harness does not automatically forward the owner's transcript; do not switch to fork as a workaround.
68
-
69
- ### Parallel review technique
70
-
71
- Use this when the user wants adversarial review of a diff, plan, issue, file, or implemented work. Launch fresh-context `reviewer` agents with distinct angles generated from the actual target. Common angles are correctness/regressions, tests/validation, and simplicity/maintainability; adapt for TypeScript, UI, security, docs, or large structural changes. Reviewers should inspect files and diffs directly, return concise evidence-backed findings with file/line references, and avoid edits unless the user explicitly asks for a writer pass. The parent synthesizes fixes worth doing now, optional improvements, and feedback to ignore/defer before applying anything.
72
-
73
- ### Review-loop technique
74
-
75
- Use this when the user wants implementation or current diff review to continue until reviewers stop finding fixes worth doing now. Keep the loop in the parent session: one `worker` implements or fixes, fresh-context `reviewer` agents inspect the actual repo and diff, the parent synthesizes accepted fixes, and one `worker` applies them. Prefer separate async reviewer runs so each completion wakes the parent instead of waiting for the whole panel. Continue useful parent work while they run; if none remains, end the turn and wait instead of polling. Do not put reviewer panels inside one async chain because the aggregate result hides individual reviewer completions; continue with explicit follow-up runs after each completion. An incomplete active Pi goal follows the same async workflow: yield when child evidence gates the next step, then resume the goal after automatic completion delivery. Treat an async implementation worker handoff as an intermediate state, not final completion, unless the user explicitly asked for worker-only work, review-only output, or to stop after implementation. Stop when reviewers find no blockers or fixes worth doing now, remaining feedback is optional or deferred, a concrete decision outside the existing authority appears, or the max review-round cap is reached. Default to 3 review rounds unless the user sets a different cap. Do not loop for optional polish. Helpers may delegate within their assigned work; the original agent decides the loop outcome.
76
-
77
- ### Parallel research technique
78
-
79
- Use this when the question needs both external evidence and local implications. Combine `researcher` for official docs, specs, ecosystem behavior, recent changes, benchmarks, and primary sources with `scout` for repository files, patterns, constraints, tests, and likely integration points. Give each child a distinct angle: external evidence, local code context, and practical tradeoffs. Ask for source links or file ranges, confidence level, gaps, and decision implications. Do not ask these children to edit unless implementation was explicitly requested.
80
-
81
- ### Parallel context-build technique
82
-
83
- Use this before planning or implementation when a stronger handoff is needed. Run a chain with one parallel step of `context-builder` agents rather than top-level parallel tasks, so relative output files live under the temporary chain directory. Give every task a distinct output path such as `context-build/request-and-scope.md`, `context-build/codebase-and-patterns.md`, and `context-build/validation-and-risks.md`. Choose two or three builders: request/scope, codebase/patterns, and validation/risks. Each builder must read every relevant file needed to understand its slice, follow imports/callers/tests/docs/config, conduct tool-available web research when needed, and include a compact `meta-prompt` section. The parent synthesizes the outputs into important context, recommended next meta-prompt, open questions, assumptions, and artifact paths.
84
-
85
- Example shape:
86
-
87
- ```typescript
88
- subagent({
89
- chain: [
90
- {
91
- parallel: [
92
- {
93
- agent: "context-builder",
94
- task: "Build request/scope context for: ...",
95
- output: "context-build/request-and-scope.md",
96
- },
97
- {
98
- agent: "context-builder",
99
- task: "Build codebase/pattern context for: ...",
100
- output: "context-build/codebase-and-patterns.md",
101
- },
102
- {
103
- agent: "context-builder",
104
- task: "Build validation/risk context for: ...",
105
- output: "context-build/validation-and-risks.md",
106
- },
107
- ],
108
- },
109
- ],
110
- context: "fresh",
111
- });
112
- ```
113
-
114
- ### Parallel handoff-plan technique
115
-
116
- Use this when the user needs a solution brief or implementation-ready handoff from an external reference plus local code context, such as “study this library behavior, inspect our codebase, then produce a worker prompt.” Run a chain with a first parallel group and a second synthesis `context-builder` step. The first group usually includes `researcher` for external projects/docs/prompt guidance and `context-builder` for local code context; add a second `context-builder` for implementation strategy only when the scope is large enough to benefit. Use distinct output paths under `handoff/`, then have the synthesis `context-builder` read those outputs and write `handoff/final-handoff-plan.md` with the recommended approach, likely files, constraints, non-goals, validation, risks, unresolved questions, and final compact implementation-ready meta-prompt.
117
-
118
- Example shape:
119
-
120
- ```typescript
121
- subagent({
122
- chain: [
123
- {
124
- parallel: [
125
- {
126
- agent: "researcher",
127
- task: "Research the external reference and transferable implementation ideas for: ...",
128
- output: "handoff/external-reference.md",
129
- },
130
- {
131
- agent: "context-builder",
132
- task: "Build local codebase context for: ...",
133
- output: "handoff/local-context.md",
134
- },
135
- {
136
- agent: "context-builder",
137
- task: "Compare evidence and propose implementation strategy for: ...",
138
- output: "handoff/implementation-strategy.md",
139
- },
140
- ],
141
- },
142
- {
143
- agent: "context-builder",
144
- task: "Read {previous} and synthesize the final handoff plan and implementation-ready meta-prompt.",
145
- output: "handoff/final-handoff-plan.md",
146
- },
147
- ],
148
- context: "fresh",
149
- });
150
- ```
151
-
152
- ### Gather-context-and-clarify technique
153
-
154
- Use this at the start of non-trivial work when material ambiguity remains. Launch `scout` for local context and `researcher` only when external docs, recent sources, ecosystem context, or primary evidence would materially improve understanding. Ask children for concise findings plus remaining clarification questions. Then synthesize what is known and use the available clarification tool (`ask_question` in pi) only for unresolved questions that affect scope, acceptance, constraints, or implementation.
155
-
156
- ### Parallel cleanup technique
157
-
158
- Use this after implementation when the user wants cleanup review or when a final pass would reduce AI-slop. Launch two fresh-context `reviewer` tasks with `output: false` and `progress: false`: one deslop pass and one verbosity pass. If the `deslop` or `verbosity-cleaner` skills are available, pass the relevant skill to that reviewer; otherwise inline the criteria. Both reviewers are review-only and should flag concrete issues with severity, file/line references, and smallest safe fixes. Phrase the constraint as “Do not modify project/source files; returning findings through the configured output artifact is allowed” when you use `output` or `outputMode: "file-only"`. The parent applies worthwhile fixes when cleanup or implementation is already authorized; review-only requests remain read-only.
159
-
160
- ### Staged fix orchestration technique
161
-
162
- Use this when a broad diff has known reviewer findings across several items and the user wants the parent to “orchestrate subagents like a boss.” Normally keep these stages under parent control with separate async reviewers and one writer. If the caller explicitly chooses a fixed foreground workflow with no parent decisions between steps, use a three-stage chain:
163
-
164
- 1. A parallel read-only planning fanout, one planner/reviewer per issue cluster. Each child inspects the real diff and returns exact files, line refs, proposed fixes, and focused validation. They must not edit.
165
- 2. One writer worker. It receives the planner summaries through `{previous}`, the parent’s accepted scope, stop rules, and verification contract. It is the only child allowed to edit the active worktree.
166
- 3. A parallel read-only validation fanout. Validators inspect the worker diff from fresh context with distinct angles, report pass/fail, remaining blockers, and missing verification.
167
-
168
- Prefer `context: "fresh"` for planners/validators, `outputMode: "file-only"` for large summaries, and per-stage output names that will not collide. For an explicitly chosen foreground chain, set `async: false`; `forceTopLevelAsync` must be disabled because it overrides foreground requests. Otherwise, including under an active goal, run the same stages under parent control: launch each planning or validation reviewer as a separate async single-agent run, synthesize after their individual completions, then launch the sole writer. Add `phase` and `label` to make foreground chain status readable, and use `as` plus `{outputs.name}` when a later step needs a specific earlier result instead of the whole `{previous}` blob. Use this pattern instead of launching several writer workers into a dirty worktree. Include non-blocking suggestions in the writer prompt only when they are small, safe, and do not expand product scope; otherwise record them as deferred.
169
-
170
- When the first step can return a structured target list, prefer dynamic fanout instead of hand-authoring a static parallel group. Use `outputSchema` and `as` on the producer, then an `expand` step with `from: { output, path }`, an explicit `maxItems`, one `parallel` child template, and `collect.as`. Item templates may use `{item}` or a named item such as `{target.path}`. Do not use dynamic fanout for prose outputs, nested fanout, dynamic agent selection, reducers, `when` conditions, or arbitrary expressions; `.chain.md` does not support this syntax, so use direct JSON or a saved `.chain.json`.
171
-
172
- Example shape:
173
-
174
- ```typescript
175
- subagent({
176
- // Explicitly chosen foreground workflow; requires forceTopLevelAsync to be disabled.
177
- async: false,
178
- context: "fresh",
179
- chain: [
180
- {
181
- parallel: [
182
- {
183
- agent: "reviewer",
184
- phase: "Planning",
185
- label: "Deploy docs",
186
- as: "deployPlan",
187
- task: "Plan fixes for deploy docs/workflow. Inspect the current diff. Do not modify project/source files; returning findings via the configured output artifact is allowed.",
188
- output: "plans/deploy.md",
189
- outputMode: "file-only",
190
- },
191
- {
192
- agent: "reviewer",
193
- phase: "Planning",
194
- label: "Scheduler contract",
195
- as: "schedulerPlan",
196
- task: "Plan fixes for scheduler contract. Inspect the current diff. Do not modify project/source files; returning findings via the configured output artifact is allowed.",
197
- output: "plans/scheduler.md",
198
- outputMode: "file-only",
199
- },
200
- {
201
- agent: "reviewer",
202
- phase: "Planning",
203
- label: "Sandbox/security",
204
- as: "sandboxPlan",
205
- task: "Plan fixes for sandbox/security. Inspect the current diff. Do not modify project/source files; returning findings via the configured output artifact is allowed.",
206
- output: "plans/sandbox.md",
207
- outputMode: "file-only",
208
- },
209
- ],
210
- concurrency: 3,
211
- },
212
- {
213
- agent: "worker",
214
- phase: "Implementation",
215
- label: "Apply accepted fixes",
216
- as: "workerResult",
217
- task: "Apply only the accepted fixes from these planning summaries. You are the sole writer for the active worktree.\n\nDeploy plan:\n{outputs.deployPlan}\n\nScheduler plan:\n{outputs.schedulerPlan}\n\nSandbox plan:\n{outputs.sandboxPlan}",
218
- acceptance: {
219
- criteria: [
220
- "Accepted fixes from each planning summary are applied",
221
- "Focused validation for changed behavior passes",
222
- "Changed files, validation commands, failures, and residual risks are reported",
223
- ],
224
- evidence: ["changed-files", "commands-run", "validation-output", "residual-risks"],
225
- stopRules: [
226
- "Do not expand product scope beyond accepted fixes",
227
- "Stop and report if a fix requires information or authority you cannot obtain",
228
- ],
229
- maxFinalizationTurns: 3,
230
- },
231
- output: "worker/fixes.md",
232
- outputMode: "file-only",
233
- progress: true,
234
- },
235
- {
236
- parallel: [
237
- {
238
- agent: "reviewer",
239
- phase: "Validation",
240
- label: "Deploy/scheduler validation",
241
- task: "Validate the post-worker diff for deploy and scheduler fixes. Start from the worker result: {outputs.workerResult}. Do not modify project/source files; returning findings via the configured output artifact is allowed.",
242
- output: "validation/deploy-scheduler.md",
243
- outputMode: "file-only",
244
- },
245
- {
246
- agent: "reviewer",
247
- phase: "Validation",
248
- label: "Sandbox validation",
249
- task: "Validate the post-worker diff for sandbox/security fixes. Start from the worker result: {outputs.workerResult}. Do not modify project/source files; returning findings via the configured output artifact is allowed.",
250
- output: "validation/sandbox.md",
251
- outputMode: "file-only",
252
- },
253
- ],
254
- concurrency: 2,
255
- },
256
- ],
257
- });
258
- ```
259
-
260
- ## Builtin Agents
261
-
262
- Builtin agents load at the lowest priority. Project agents override user agents,
263
- and user/project agents override builtins with the same name.
264
-
265
- Use `agent_runs({ action: "profiles" })` for the effective roles, model/thinking/fallback defaults (including truthful inheritance), and context defaults. The [Subagents reference](../../../docs/reference.md#builtin-agents-in-plain-english) describes the bundled roles. Do not infer installed model routes from an old workflow example. Profiles without a model inherit the parent model at launch, including fresh-context runs; inspect the effective profile rather than assuming a role has no model configured.
266
-
267
- For one run, use inline config:
268
-
269
- ```text
270
- /run reviewer[model=anthropic/claude-sonnet-4] "Review this diff"
271
- ```
272
-
273
- For persistent tweaks, edit `subagents.agentOverrides` in user or project settings. User overrides apply everywhere. Project overrides apply only in that repo and win over user overrides.
274
-
275
- ## Prompting role subagents
276
-
277
- Use profile defaults for routine launches; warranted overrides follow the [skill's model policy](../SKILL.md#agent-selection), using `model: "provider/model:high"`, never a standalone execution `thinking` field. Explicit overrides pin route/effort with same-choice transport retries but no profile fallback; unavailable choices fail for the parent to replace. Write the task prompt as a compact contract, not a long procedural script. Define the destination and let the role choose the efficient path.
278
-
279
- A strong subagent prompt usually includes:
280
-
281
- - **Goal**: the concrete outcome the child should produce.
282
- - **Context/evidence**: relevant plan paths, files, diffs, decisions, or user constraints already approved.
283
- - **Success criteria**: what must be true before the child can finish.
284
- - **Hard constraints**: true invariants only, such as no edits for review-only tasks, one writer thread or escalation for decisions outside the approved outcome.
285
- - **Validation**: targeted checks to run, or the next-best check when validation is impossible.
286
- - **Output**: the expected summary shape, artifact path, or finding format.
287
- - **Stop rules**: when to ask via `intercom`, when to stop after enough evidence, and when not to keep searching.
288
-
289
- Avoid carrying over old prompt habits that over-specify every step. Use `must`, `always`, and `never` for real invariants; for judgment calls, give decision rules. For example, tell a reviewer to inspect the staged diff directly and report only evidence-backed findings, rather than prescribing every file or command. Tell a researcher the retrieval budget: start with broad targeted searches, fetch only the strongest sources, search again only when a required fact is missing, then stop.
290
-
291
- For implementation handoffs, name the approved scope and success criteria more clearly than the process. Good prompts say what to change, what not to change, where the evidence lives, how to validate, and when to escalate. Useful helpers may split the assigned work within native limits; they must not take over the parent's workflow or continue its conversation.
292
-
293
- Settings locations:
294
-
295
- - User scope: `~/.pi/agent/settings.json`
296
- - Project scope: `.pi/settings.json`
297
-
298
- Direct settings example:
299
-
300
- ```json
301
- {
302
- "subagents": {
303
- "agentOverrides": {
304
- "reviewer": {
305
- "model": "anthropic/claude-sonnet-4",
306
- "thinking": "high",
307
- "fallbackModels": ["openai/gpt-5-mini"]
308
- }
309
- }
310
- }
311
- }
312
- ```
313
-
314
- Useful override fields: `model`, `fallbackModels`, `thinking`,
315
- `systemPromptMode`, `inheritProjectContext`, `inheritSkills`, `defaultContext`,
316
- `disabled`, `skills`, `tools`, and `systemPrompt`. Create a user or project
317
- agent with the same name only when you want a substantially different agent.
318
-
319
- ## Discovery and Scope Rules
320
-
321
- Agent files can live in:
322
-
323
- - `~/.pi/agent/agents/**/*.md` — user scope
324
- - `.pi/agents/**/*.md` — canonical project scope
325
- - legacy `.agents/**/*.md` — still read for compatibility, but `.pi/agents/` wins on conflicts
326
-
327
- Chains live in:
328
-
329
- - `~/.pi/agent/chains/**/*.chain.md` and `~/.pi/agent/chains/**/*.chain.json` — user scope
330
- - `.pi/chains/**/*.chain.md` and `.pi/chains/**/*.chain.json` — project scope
331
-
332
- Discovery is recursive. `.chain.md` files do not define agents. Use `.chain.md` for simple saved chains and `.chain.json` for dynamic fanout or inline schema objects. Agents and chains can set optional frontmatter/package metadata; `name: scout` plus `package: code-analysis` registers as runtime name `code-analysis.scout` while serialization keeps `name` and `package` separate.
333
-
334
- Precedence is by parsed runtime name:
335
-
336
- 1. project scope
337
- 2. user scope
338
- 3. builtin agents
339
-
340
- ## Running Subagents
341
-
342
- ### Single agent
343
-
344
- ```typescript
345
- subagent({
346
- agent: "oracle",
347
- task: "Review my current direction and challenge assumptions.",
348
- });
349
- ```
350
-
351
- ### Forked context
352
-
353
- ```typescript
354
- subagent({
355
- agent: "oracle",
356
- task: "Review my current direction and challenge assumptions.",
357
- });
358
- ```
359
-
360
- `context: "fork"` creates a branched child session from the current persisted
361
- parent session. It does **not** create a fresh minimal review context or filter
362
- history down to only the relevant parts. Use it when you want a separate review
363
- or execution thread that can still reference the parent session history. Fork
364
- is rejected when an affected agent's actual primary or fallback candidate uses
365
- the `anthropic/` provider. A pinned non-Anthropic override excludes profile
366
- fallbacks; an Anthropic override remains ineligible.
367
-
368
- ### Parallel execution
369
-
370
- ```typescript
371
- subagent({
372
- tasks: [
373
- { agent: "scout", task: "Explore the auth module" },
374
- { agent: "researcher", task: "Research API client retry behavior" },
375
- ],
376
- });
377
- ```
378
-
379
- Top-level parallel tasks can override per-task behavior:
380
-
381
- ```typescript
382
- subagent({
383
- tasks: [
384
- { agent: "scout", task: "Map auth", output: "auth-context.md", progress: true },
385
- { agent: "researcher", task: "Research OAuth best practices", output: "oauth-research.md" },
386
- { agent: "scout", task: "Map auth test coverage", model: "anthropic/claude-sonnet-4" },
387
- ],
388
- concurrency: 3,
389
- });
390
- ```
391
-
392
- Avoid duplicate explicit output paths in parallel tasks. Concurrent children should not be told to write the same explicit file. Explicit output paths persist at their resolved cwd/workspace path; relative output paths that come from agent defaults are automatically materialized under the run artifact directory with unique names, so default `context.md`/`review.md` handoffs do not collide or leave project-root files. For large saved outputs, set `outputMode: "file-only"` together with an `output` path. The parent result then contains only a compact reference like `Output saved to: /abs/report.md (48.2 KB, 2847 lines). Read this file if needed.` instead of the full saved content. Do not use `output: false` for this; `output: false` means no file output. When a task is review-only, say “do not modify project/source files” rather than “do not write files” if you also configured `output`; otherwise the child may treat the output artifact as forbidden. Failed runs and save errors still return inline details for debugging.
393
-
394
- ### Chain execution
395
-
396
- ```typescript
397
- subagent({
398
- chain: [
399
- { agent: "scout", task: "Map the auth flow and summarize key files" },
400
- { agent: "planner", task: "Create an implementation plan from {previous}" },
401
- { agent: "worker", task: "Implement the approved plan based on {previous}" },
402
- ],
403
- });
404
- ```
405
-
406
- Chain steps can use templated variables such as `{task}`, `{previous}`,
407
- `{chain_dir}`, and `{outputs.name}`. Use `as: "name"` on a successful step or
408
- parallel task to make that output available to later steps. Prefer named outputs
409
- when a later step needs one specific result; keep `{previous}` for simple linear
410
- handoffs or full fan-in summaries. Use `phase` and `label` for status readability.
411
- Use `outputSchema` when later steps need reliable structured data; the child must
412
- call `structured_output` with schema-valid JSON, or the step fails.
413
-
414
- ### Async/background
415
-
416
- Subagent launches default to async mode when `async` is omitted. Use that default for scouts, researchers, workers, reviewers, validators, oracle checks, one-off delegates, chains, and non-review parallel groups. Launch each member of a reviewer or validator panel as a separate single-agent call; do not put the panel in one parallel group or chain. Keep the write path single-threaded even when the run is async.
417
-
418
- An incomplete active Pi goal does not require foreground execution. If child evidence gates the next step, end the current turn and continue the goal after automatic completion delivery; do not advance past missing evidence. Use `async: false` only for explicitly chosen foreground execution or non-interactive one-shot callers that need the result on stdout.
419
-
420
- Async does not mean parallel writes. Do not edit the same active worktree while an async worker is changing it. Parent-side overlap should be reading, validation prep, synthesis, command planning, or review of unaffected context unless the writer is isolated in a separate worktree.
421
-
422
- After launching an async child, continue promised or useful independent work. If none remains, end your turn and wait instead of sleep-polling; Pi will deliver the completion.
423
-
424
- A reviewer timeout is never sign-off. Prefer separate default-async runs for final reviewers, including under active goals, so each completion wakes the parent. Runtime automatically raises foreground reviewer timeouts below 15 minutes to prevent false non-signoff failures. Planner/researcher-style roles raise short foreground budgets only when local run history shows they need longer; async/background runs still reject foreground timeout fields. Do not use short foreground timeouts such as 3–4 minutes for broad reviewer/scout/research tasks. If a reviewer times out, resume, rerun with enough budget, or split the review into narrower reviewers before claiming reviewed completion.
425
-
426
- ```typescript
427
- subagent({
428
- agent: "worker",
429
- task: "Run the full test suite",
430
- });
431
- ```
432
-
433
- Use ordinary tools for routine waiting and CI status collection. When observation requires ongoing interpretation, give `watcher` the target, material transitions, and terminal condition. It should report meaningful findings without repeating unchanged status.
434
-
435
- File-only output mode also works for async single runs, top-level parallel task items, sequential chain steps, and chain parallel task items. In chains, `{previous}` receives the compact saved-file reference when the prior step used file-only mode.
436
-
437
- For review fanout where the parent continues a local audit:
438
-
439
- ```typescript
440
- const run = subagent({
441
- agent: "reviewer",
442
- task: "Review the current diff for correctness issues. Do not edit files.",
443
- context: "fresh",
444
- });
445
- // Continue local inspection; completion will wake the parent.
446
- ```
447
-
448
- Inspect async runs with `subagent({ action: "status", id: "..." })` or `subagent({ action: "status" })` for active runs. Use status for diagnostics, not as a wait loop; healthy runs deliver completion automatically. Foreground and background handles remain inspectable and continuable after native reload/restart of the same saved parent. `subagent({ action: "status", id: "latest" })` / `id: "last"` selects the latest owned run. `inspect` shows saved effective configuration and profile provenance, result references, review state, and the root/predecessor/continuation history. If a delegated fanout child launches nested runs, the parent status view shows them as a tree and you can target a nested run directly with its nested id.
449
-
450
- Use `extend` when an active foreground child has an explicit timeout and is still doing useful work:
451
-
452
- ```typescript
453
- subagent({ action: "extend", id: "foreground-run-id", extendMs: 300000 });
454
- ```
455
-
456
- `extend` adds time to the current foreground child deadline. It does not revive an already timed-out child; use `resume` after a timeout or transient failure.
457
-
458
- Use `resume` for follow-up work after a delegated run:
459
-
460
- ```typescript
461
- subagent({ action: "resume", id: "run-id", message: "Follow up on this point." });
462
- subagent({ action: "resume", id: "run-id", index: 1, message: "Continue reviewer 2." });
463
- subagent({ action: "resume", id: "nested-run-id", message: "Continue this nested reviewer." });
464
- ```
465
-
466
- Resume behavior:
467
-
468
- - If a foreground or async child is still running and reachable, `resume` sends the follow-up to that live child over intercom.
469
- - If a live foreground or async child needs a prompt but not a blocking reply, `nudge` sends a steered intercom message through the same bridge.
470
- - If an async child has completed, `resume` revives it by starting a new async child from the persisted child session file.
471
- - Multi-child async runs require `index` unless only one running child is selectable.
472
- - Completed foreground single, parallel, and chain runs can also be revived by `index`; ownership and results are restored from persistent session records, not only extension memory.
473
- - Continuation without `agent` keeps saved launch settings, including resolved model/thinking and override pinning. Explicit `agent` adopts the current profile's model, thinking and fallback policy; a separate `model` override wins and pins its choice. Other saved output, limits and acceptance settings remain unless overridden. Live guidance is not a new launch and cannot mutate model or acceptance. Old receipts without a profile snapshot require an explicit `agent` rather than silently rediscovering defaults.
474
- - `agent_runs` supports `model`, `cwd`, `output`, and `acceptance` overrides on `continue`/`answer`. Use legacy `resume` for detailed output/skill/control overrides. A deleted worktree needs an explicit replacement `cwd`; a missing native child session cannot be revived.
475
- - If another continuation of the same saved child is already live, `continue` forwards to it rather than duplicating its process. A new continuation has its own review outcome.
476
- - Timed-out or transient-error foreground children can be revived the same way when their `.jsonl` session file was persisted.
477
- - Nested runs can be resumed by nested id when a live route or persisted nested session metadata is available.
478
- - Revive starts a new child process from the old session context; it does not restart the same OS process.
479
- - If the chosen child has no persisted `.jsonl` session file, resume fails and reports that directly.
480
-
481
- Use diagnostics when setup or child startup looks wrong:
482
-
483
- ```typescript
484
- subagent({ action: "doctor" });
485
- ```
486
-
487
- Humans can use `/subagents-doctor` for the same read-only report. It checks runtime paths, discovery counts, async support, current session context, and intercom bridge state.
488
-
489
- ### Subagent control
490
-
491
- Subagent control is the runtime visibility and intervention layer for delegated runs. It is separate from lifecycle status. Lifecycle status says whether a child is `queued`, `running`, `paused`, `complete`, or `failed`. Activity reporting is factual: it tracks the last observed activity time and the current tool when known. It does not pretend to know that a child is truly stuck.
492
-
493
- Default behavior is intentionally conservative. When no activity has been observed past the configured threshold (10 minutes by default), the run emits a `needs_attention` control event. Foreground runs can push this as a `subagent:control-event` event, and async runs persist it to `events.jsonl` so the parent tracker can surface it without constant manual polling. Notification-worthy control events are also inserted into the visible transcript so both the user and the parent agent can see them, with a proactive hint plus concrete `nudge`, `status`, and `interrupt` options. Use `status` to see an `extend` command when the active foreground child has an extendable timeout. Visible notifications fire once per child run and attention state.
494
-
495
- Use soft interrupt when a child is clearly blocked or drifting and the parent needs to regain control:
496
-
497
- ```typescript
498
- subagent({ action: "interrupt" });
499
- ```
500
-
501
- Pass `id` when targeting a specific controllable run, including a nested run shown in the parent status tree:
502
-
503
- ```typescript
504
- subagent({ action: "interrupt", id: "abc123" });
505
- subagent({ action: "interrupt", id: "nested-run-id" });
506
- ```
507
-
508
- A soft interrupt cancels the current child turn and leaves the run paused. It does not mean the delegated task succeeded or failed. Bare `interrupt` does not target hidden nested descendants; use the explicit nested id. After an interrupt, decide the next explicit action: resume with clearer instructions, replace the task, ask the user, or stop the workflow.
509
-
510
- Per-run control thresholds can be overridden when a task legitimately runs without observable output for longer than usual:
511
-
512
- ```typescript
513
- subagent({
514
- agent: "worker",
515
- task: "Run the slow migration test suite",
516
- control: {
517
- needsAttentionAfterMs: 1800000,
518
- notifyOn: ["needs_attention"],
519
- },
520
- });
521
- ```
522
-
523
- Needs-attention notifications can also prepare a compact intercom ping for the paired orchestrator target. Prefer `subagent({ action: "nudge", id: "...", message: "..." })` for live guidance, answers, corrections, or blockers; it is a non-blocking steer that supplements the active child task unless it explicitly replaces it. Use the status-shown intercom ask only when the parent must remain alive waiting for a reply. Do not invent a target; use the resolved target shown in status or injected instructions. An explicit agent `extensions` allowlist that omits `pi-intercom` still sandboxes child-side coordination tools.
524
-
525
- ## Clarify TUI
526
-
527
- Single and parallel runs support a clarification TUI when you want to preview or
528
- edit parameters before launch:
529
-
530
- ```typescript
531
- subagent({
532
- agent: "worker",
533
- task: "Implement feature X",
534
- clarify: true,
535
- });
536
- ```
537
-
538
- Clarify is opt-in for tool calls. Set `clarify: true` when you want to preview or edit a single, parallel, or chain run before launch. Clarify edits affect only the next run; use management actions, settings, or markdown files for persistent changes.
539
- Programmatic launches run in the background by default. Omit `clarify` or set `clarify: false` to launch directly; `async: false`, `clarify: true`, or a foreground timeout keeps the run foreground.
540
-
541
- ## Worktree Isolation
542
-
543
- When multiple agents might write concurrently, use worktrees instead of letting
544
- them share one filesystem view.
545
-
546
- ```typescript
547
- subagent({
548
- tasks: [
549
- { agent: "worker", task: "Implement feature A" },
550
- { agent: "worker", task: "Implement feature B" },
551
- ],
552
- worktree: true,
553
- });
554
- ```
555
-
556
- `worktree: true` gives each parallel task its own git worktree branched from
557
- HEAD. This requires a clean git state and is mainly for intentionally parallel
558
- write workflows. If you want one writer thread and several advisory agents,
559
- prefer a single-writer pattern instead.
560
-
561
- ## The Oracle Workflow
562
-
563
- The intended oracle loop is:
564
-
565
- 1. the main agent forks to `oracle`
566
- 2. `oracle` reviews direction, drift, assumptions, and risks
567
- 3. `oracle` can coordinate back through `contact_supervisor` when the bridge injects it
568
- 4. the main agent chooses an in-scope direction under existing authority
569
- 5. `worker` implements when the task already authorizes implementation; planning-only requests and explicit holds remain read-only
570
-
571
- ```typescript
572
- // Advisory review in a branched thread. Oracle defaults to forked context.
573
- subagent({
574
- agent: "oracle",
575
- task: "Review my current direction, challenge assumptions, and propose the best next move.",
576
- });
577
-
578
- // Existing implementation authority is sufficient. Worker defaults to fresh context.
579
- subagent({
580
- agent: "worker",
581
- task: "Implement the approved approach: ...",
582
- });
583
- ```
584
-
585
- `oracle` is not a fresh-context reviewer in the Cognition article sense. It is
586
- a forked advisory thread that inherits the parent session history and uses that
587
- history as a baseline contract.
588
-
589
- Use `oracle` as a smart-friend escalation when the parent needs help with trajectory rather than diff inspection: architectural boundaries, model capability routing, merge conflicts, reviewer disagreement, context drift after long work, a worker about to invent a pattern, or fixes that require product/scope tradeoffs. Ask broad questions when the right concern is unclear, and let `oracle` point out missing context or files the parent should inspect before asking again. Keep `oracle` advisory unless it has been explicitly assigned the single writer role.
590
-
591
- ## Subagent + Intercom Coordination
592
-
593
- `pi-subagents` bundles its intercom extension. Children get fixed default bridge instructions and a private coordination channel back to the parent session unless an explicit `extensions` allowlist omits `pi-intercom`.
594
-
595
- Most agents should not call generic `intercom` directly unless bridge instructions provide a target and `contact_supervisor` is unavailable. Do not invent a target. Prefer the tool from the injected bridge instructions.
596
-
597
- Use blocking `contact_supervisor` only when an ephemeral child cannot safely continue and must remain alive for the reply:
598
-
599
- - `reason: "need_decision"` for one decision, approval, or product/API/scope clarification
600
- - `reason: "interview_request"` when multiple structured answers are all required before safe progress
601
-
602
- Both reasons persist the question before steering the supervisor, and neither uses the ordinary intercom ask timeout. After supervisor reload, reconnect, or child exit, resume the same saved supervisor session and use:
603
-
604
- ```typescript
605
- agent_runs({ action: "questions" });
606
- agent_runs({
607
- action: "answer",
608
- id: "<run-id>",
609
- questionId: "<question-id>",
610
- message: "Use the stable API.",
611
- });
612
- agent_runs({ action: "stop", id: "<run-id>" });
613
- ```
614
-
615
- A live waiter reads the saved answer; an exited child is revived from its saved session with its original effective launch configuration and acceptance contract. Identical repeated answers do not duplicate work, and conflicting answers retain the original. A nudge is guidance, not an answer. `awaiting_input` and `answer_pending` are not execution completion. Stop cancels pending questions and aborts live waiters even after reload. Questions, contracts, and results live in persistent Pi session storage and survive temporary-log cleanup. Native parent custom entries retain ownership and review across reload, restart, and context-window changes. New or forked parent sessions do not automatically adopt another parent's runs. An interrupted pre-launch answer receipt gives an explicit `continue` recovery call; it never silently retries an uncertain launch.
616
-
617
- Do not use `contact_supervisor` just to resolve review-only/no-project-edit versus progress-writing or output-artifact instructions. The child must not modify project/source files, but returning findings through its normal response or configured output artifact is allowed unless the parent explicitly set `output: false`.
618
-
619
- Use `contact_supervisor` with `reason: "progress_update"` only for a discovery or change the supervisor needs while working. It is non-blocking and steers at the next tool boundary. Skip starts, redundant narration, and routine completion; retain material findings in the final result.
620
-
621
- Message conventions:
622
-
623
- - `reason: "need_decision"` and `reason: "interview_request"` steer, wait for the parent reply, and return it to the child.
624
- - `reason: "progress_update"` steers at the next tool boundary and should contain only a finding needed during active work.
625
- - Child-side routine completion handoffs are not expected. Parent-side `pi-subagents` sends grouped completion results through `pi-intercom`: one grouped message per foreground parent run and one per completed async result file. Acknowledged foreground delivery returns a compact receipt with artifact/session paths; if unacknowledged, the normal full output is preserved. Grouped messages include child intercom targets, full child summaries, and compact nested summaries under the parent child that launched them.
626
-
627
- If bridge instructions provide the child-facing tool, a child can ask:
628
-
629
- ```typescript
630
- contact_supervisor({
631
- reason: "need_decision",
632
- message:
633
- "The approved API contract does not specify whether this new response field may be public. Should I preserve the current response shape?",
634
- });
635
- ```
636
-
637
- The parent replies with:
638
-
639
- ```typescript
640
- intercom({ action: "reply", message: "Optimize for readability." });
641
- ```
642
-
643
- Or inspects unresolved asks first:
644
-
645
- ```typescript
646
- intercom({ action: "pending" });
647
- ```
648
-
649
- If intercom messages do not show up, run `subagent({ action: "doctor" })` or `/subagents-doctor`.
650
-
651
- ## Management Mode
652
-
653
- The `subagent(...)` tool also supports management actions.
654
-
655
- ### List available agents and chains
656
-
657
- ```typescript
658
- subagent({ action: "list" });
659
- ```
660
-
661
- `list` and `get` show the effective runtime agent by default. If a user or project agent shadows a builtin with the same name, the agent appears once with the same precedence used for execution (`project` > `user` > `builtin`). Use `agentScope: "user"` or `agentScope: "project"` only when you need to inspect a specific shadowing scope.
662
-
663
- ### Create an agent
664
-
665
- ```typescript
666
- subagent({
667
- action: "create",
668
- config: {
669
- name: "my-agent",
670
- package: "code-analysis",
671
- description: "Project-specific implementation helper",
672
- systemPrompt: "Your system prompt here.",
673
- systemPromptMode: "replace",
674
- model: "openai-codex/gpt-5.4",
675
- tools: "read,grep,find,ls,bash",
676
- },
677
- });
678
- ```
679
-
680
- ### Update an agent
681
-
682
- ```typescript
683
- subagent({
684
- action: "update",
685
- agent: "code-analysis.my-agent",
686
- config: {
687
- thinking: "high",
688
- },
689
- });
690
- ```
691
-
692
- ### Delete an agent
693
-
694
- ```typescript
695
- subagent({ action: "delete", agent: "code-analysis.my-agent" });
696
- ```
697
-
698
- Use management actions when the system needs to create or edit subagents on
699
- demand without dropping into raw file editing.
700
-
701
- Management actions create or update user/project agent files. `config.name` is the local frontmatter name; optional `config.package` registers and looks up the runtime name as `{package}.{name}`. Use the dotted runtime name for `get`, `update`, `delete`, slash commands, and chain steps. `get` follows effective runtime precedence by default; `update` and `delete` use `agentScope` only when the same runtime name exists in multiple mutable scopes. For small builtin changes such as a model swap, prefer `subagents.agentOverrides` in settings.
702
-
703
- ## Creating and Editing Agents by File
704
-
705
- A minimal agent file looks like this:
706
-
707
- ```markdown
708
- ---
709
- name: my-agent
710
- package: code-analysis
711
- description: What this agent does
712
- ---
713
-
714
- Your system prompt here.
715
- ```
716
-
717
- This defaults to fresh conversation context while appending the prompt to Pi's base prompt, inheriting project context and skills, preserving normal tools and extensions, and blocking nested delegation. Omit `package` for the traditional unqualified runtime name. Common optional fields include:
718
-
719
- - `defaultProgress`
720
- - `defaultReads`
721
- - `output`
722
- - `fallbackModels`
723
- - `maxSubagentDepth`
724
-
725
- For many customizations, builtin overrides in settings are lower-friction than
726
- copying a full builtin file.
727
-
728
- ## Prompt Template Integration
729
-
730
- The files under `prompts/` are unregistered examples of common workflows. Parent agents can apply the same recipes directly with `subagent(...)` when the user describes the workflow in natural language.
731
-
732
- If `pi-prompt-template-model` is installed, additional user prompt templates can delegate into
733
- `pi-subagents`. This is useful when a slash command should always run through a
734
- particular agent or with forked context.
735
-
736
- ## Important Constraints
737
-
738
- - **Forking requires a persisted parent session.** If the current session does not
739
- have a persisted session file, forked runs fail. Packaged `oracle` defaults to
740
- forked context; the other Fitch role profiles default to fresh context.
741
- - **Forked runs inherit parent history.** They are branched threads, not fresh
742
- filtered contexts. Use fresh context for adversarial reviewers unless the user explicitly asks for forked context.
743
- - **Default subagent nesting depth is 1.** The parent can delegate; children cannot delegate again unless explicitly configured.
744
- - **Attention signals are not lifecycle state.** `needs_attention` means no activity has been observed past the configured threshold. `paused` means the child turn was intentionally interrupted or is awaiting direction; it is not the same as `failed`.
745
- - **Intercom asks are blocking.** A session can only maintain one pending outbound
746
- ask wait state at a time.
747
- - **Keep conversational authority clear.** Advisory subagents should not silently
748
- become second decision-makers.
749
-
750
- ## Best Practices
751
-
752
- ### Prefer async orchestration
753
-
754
- Launch independent subagents with the default async mode. Omit `async` for scouts, researchers, workers, reviewers, validators, oracle checks, one-off delegates, chains, and non-review parallel groups. Launch reviewer and validator panels as separate single-agent calls, not one parallel group or chain. Continue useful parent work while children run; if none remains, end the turn and wait for automatic completion instead of polling.
755
-
756
- For an incomplete active Pi goal, keep the async default. Yield when child evidence gates the next step, then continue the goal after automatic completion delivery.
757
-
758
- For reviewer sign-off, avoid short foreground timeouts. A timeout means review incomplete, not review failed cleanly and not sign-off. Prefer separate async runs, including under active goals. If foreground execution is explicitly chosen, avoid short `timeoutMs`/`maxRuntimeMs` budgets.
759
-
760
- ### Keep writes single-threaded by default
761
-
762
- A strong pattern is one main decision-maker plus advisory/research/review/validation subagents around it. Use `oracle` for advice and `worker` for the actual write path. Parallelize reading, review, validation, and synthesis support, not normal writes, unless you deliberately isolate writers with worktrees. A child that writes should report what changed, what was left undone, commands run with exit codes, validation evidence, surprises, and any decisions that need parent approval.
763
-
764
- ### Use fork for branched advisory or execution threads
765
-
766
- Forked runs are useful when the child should reason in a separate thread while
767
- still inheriting the parent’s accumulated context. They are especially useful for
768
- `oracle`, which audits inherited decisions and drift. For adversarial code review,
769
- prefer fresh-context reviewers that inspect the repo and diff directly unless the
770
- user explicitly requests forked context.
771
-
772
- ### Prefer narrow tasks
773
-
774
- Give subagents specific tasks rather than vague mandates.
775
- `Review auth.ts for null-check gaps` works better than `Review everything`.
776
-
777
- ### Escalate decisions upward
778
-
779
- Make ordinary reversible architecture and implementation choices within the assigned outcome. Coordinate back only when required information or authority is unavailable or a choice would change the owner's settled outcome or scope.
780
-
781
- ### Intervene only on clear control signals
782
-
783
- Use subagent control proactively when a delegated run emits `needs_attention`, or when a human asks you to regain control. Do not interrupt just because a child has briefly produced no output. Silence can be normal during long tool calls, test runs, or model reasoning.
784
-
785
- ### Name sessions meaningfully
786
-
787
- Use `/name` so intercom targeting stays stable.
788
-
789
- ## Common Workflows
790
-
791
- ### Recon → Plan → Implement
792
-
793
- ```typescript
794
- subagent({
795
- chain: [
796
- { agent: "scout", task: "Map the auth flow and summarize relevant files" },
797
- { agent: "planner", task: "Plan the migration from {previous}" },
798
- { agent: "worker", task: "Implement the approved plan from {previous}" },
799
- ],
800
- });
801
- ```
802
-
803
- ### Clarify → Plan → Implement → Review (self-orchestrated workflow)
804
-
805
- When you are the orchestrating agent for a new feature or non-trivial change, use the same orchestration patterns through tools and subagents.
806
-
807
- Keep effective agent defaults for routine runs; ordinary launches retain configured fallbacks. Warranted overrides remain subject to user instructions and provider authorization; see [Agent selection](../SKILL.md#agent-selection) for the per-run syntax and pinning policy. Packaged `oracle` defaults to forked context; the other Fitch role profiles default to fresh context. Fork is never available to effective `anthropic/` primary or fallback models; other providers continue to use the configured context policy normally.
808
-
809
- Use the existing task authority to launch helpful subagents and write a role-specific handoff; no separate launch or handoff approval is needed. Include the approved plan path or summary, clarified requirements, non-goals, relevant context, role boundaries, files or areas to inspect, acceptance criteria, expected output, and validation expectations. Do not pass vague instructions like “implement the plan fully” or “review this” by themselves.
810
-
811
- - Gather context and clarify: launch `scout` and, when needed, `researcher`; synthesize findings; then use the available clarification tool (`ask_question` in pi) for unresolved material questions.
812
- - Parallel review: launch fresh-context `reviewer` agents with distinct review angles; synthesize the feedback before applying anything.
813
- - Review loop: keep the parent in charge of worker → fresh reviewers → synthesized fix worker cycles until no fixes worth doing now remain, a concrete decision outside the existing authority appears, or the review-round cap is reached.
814
- - Parallel research: combine local `scout` context with external `researcher` evidence when current docs, ecosystem behavior, or API details matter.
815
- - Parallel context build: run a chain-mode parallel group of `context-builder` agents with distinct temp output paths, then synthesize their context and meta-prompt sections.
816
- - Parallel handoff plan: run external `researcher` plus local/strategy `context-builder` passes, then a synthesis `context-builder` that writes an implementation handoff plan and implementation-ready meta-prompt.
817
- - Parallel cleanup: use review-only cleanup passes after implementation, especially for simplicity, verbosity, and redundant tests.
818
-
819
- For feature work, use this sequence as scaffolding for parent-agent behavior:
820
-
821
- ```text
822
- clarify → validation contract → planner → worker → fresh-context reviewers/validators → fix worker → follow-up review when warranted → parent review
823
- ```
824
-
825
- The validation contract defines acceptance before code is written: expected behavior, acceptance checks, commands or user flows to exercise, and evidence the worker should return. Keep it lightweight for small tasks, but make it explicit enough that reviewers and validators are checking the intended outcome rather than the worker’s own assumptions.
826
-
827
- Use the structured `acceptance` field when the run should carry an explicit acceptance contract. If omitted, the run stays lightweight. For review-only tasks, omit it unless the user explicitly requests a same-session acceptance contract; the extra finalization turn is not independent review. When present, acceptance is object-only: define concrete `criteria`, required `evidence`, optional runtime `verify` commands, and optionally `maxFinalizationTurns`. The runtime continues the same child session for a bounded self-review/repair loop before evaluating the final report, so set `acceptance` on single runs, sequential chain steps, parallel task items, and dynamic fanout child templates, not on static parallel or dynamic fanout groups. Independent review stays parent-controlled: `acceptance.review` is unsupported and fails preflight, so launch reviewer subagents separately after the worker completes. The latest substantive finalization answer becomes the result and downstream handoff; report-only finalization preserves the previous substantive answer. Initial output remains audit evidence, not a stale replacement for the corrected result. Child-reported command success is evidence, not runtime verification.
828
-
829
- Goal-style requests map to `acceptance`. If the user says `/goal`, “goal”, “active goal”, “continue until evidence says done”, or “verify against a goal” for a subagent run, create an explicit run-scoped acceptance contract: `criteria` for the target, `evidence` and `verify` for proof, `stopRules` for constraints, and `maxFinalizationTurns` for the bounded loop budget.
830
-
831
- When launching a writer/worker from a plan, PRD, spec, issue, or broad fix, set structured `acceptance` proactively. Put implementation instructions, plan paths, and handoff artifacts in `task`; put the definition of done in `acceptance.criteria`, proof requirements in `acceptance.evidence` and `acceptance.verify`, constraints in `acceptance.stopRules`, and usually set `maxFinalizationTurns: 3`. Do not bury all validation requirements only in the task prompt.
832
-
833
- Example writer handoff:
834
-
835
- ```typescript
836
- subagent({
837
- agent: "worker",
838
- // Async is the default; set async: false for explicitly chosen foreground execution.
839
- task: "Implement the plan at /Users/me/docs/mcp-alignment-plan.md. Use scout artifacts in ./handoff/ as context. Do not commit the scout artifacts.",
840
- acceptance: {
841
- criteria: [
842
- "Implementation follows /Users/me/docs/mcp-alignment-plan.md",
843
- "Plan acceptance checks are addressed",
844
- "Scout handoff artifacts are not committed",
845
- "Focused validation for changed behavior passes",
846
- "Residual risks or skipped checks are reported",
847
- ],
848
- evidence: ["changed-files", "commands-run", "validation-output", "residual-risks"],
849
- verify: [{ id: "focused", command: "npm test -- --runInBand" }],
850
- stopRules: [
851
- "Do not edit unrelated files",
852
- "Stop and report if the plan requires a decision outside the assigned authority",
853
- ],
854
- maxFinalizationTurns: 3,
855
- },
856
- });
857
- ```
858
-
859
- The first `worker` implements the approved plan. The parent continues with independent inspection or validation prep while it runs only when the worker is async; do not make parallel edits to the same worktree. When an async worker completes, treat its handoff as the transition into review, not as final completion, unless the user explicitly asked for worker-only work, review-only output, or to stop after implementation. Launch parallel reviewers as separate async runs so each completion wakes the parent. Validators check behavior with the best available evidence: commands, tests, browser/CLI interaction, screenshots, logs, or manual reproduction notes. The final `worker` applies synthesized review fixes, then the parent looks over the final diff before completing. Keep these as parent-launched follow-up runs after each completion; do not hide reviewer panels inside an initial async chain. Under an incomplete active Pi goal, a fixed sequence with no intervening parent decision may instead use a bounded foreground chain. Do not stop after parallel review unless the user explicitly asked for review-only output or the review surfaced a concrete decision outside the existing authority.
860
-
861
- For complex work, risky changes, broad refactors, or many changed lines, increase review and validation fanout rather than trusting one reviewer. Use distinct angles such as correctness/regressions, tests/validation, simplicity/maintainability, security/privacy, performance, docs/API contracts, and user-flow behavior. When reviewers find non-trivial issues or the fix worker touches many lines, run another focused review round before final validation.
862
-
863
- When review has already produced concrete findings across several independent areas, use staged fix orchestration: parallel read-only planners for each issue cluster, one sole writer worker for the active worktree, then parallel fresh-context validators. This is the safest way to handle a dirty worktree with many prior changes because it parallelizes judgment without parallelizing writes. Non-blocking suggestions may go into the writer prompt only if they are small, safe, and inside the approved scope; otherwise defer them explicitly.
864
-
865
- For very large work, split into serial milestones instead of launching a swarm of writers. Each milestone gets one writer, a validation contract, fresh-context review/validation, a fix pass, and parent acceptance before the next milestone starts. Use parallel subagents inside a milestone for read-only context, research, review, and validation only.
866
-
867
- Keep final integration and delivery with the original agent. Bundled children remain leaf agents; launch routine fanout from the parent. Helpers may split their assigned work using the child-safe `subagent` tool only when the user explicitly authorized nesting and their profile/native depth budget already permits it. Parent-only management controls and inherited orchestration records remain filtered by the runtime. Do not infer permission to change `allowSubagents` or the depth budget. Implementation helpers must use real edit/write tools.
868
-
869
- 1. Clarify only material uncertainty. Gather code context with `scout` or `context-builder`, add `researcher` only when external evidence matters, then ask the user unresolved questions with the available clarification tool (`ask_question` in pi) when the answer changes scope, acceptance criteria, constraints, or non-goals.
870
- 2. Define the validation contract. State acceptance before implementation: expected behavior, checks to run, user flows to exercise, and evidence required in the worker handoff. For UI, CLI, integration, or workflow changes, include at least one validator angle that uses the product the way a user would rather than only reading code.
871
- 3. Plan when useful. Use existing authorization and make routine implementation decisions directly. Ask only when required information or authority cannot be obtained, a decision would change the owner's settled outcome or scope, or it crosses a concrete irreversible-loss, private-data, or substantial new-cost boundary.
872
- 4. Implement with one writer. Launch `worker` under the existing authorization with the requirements, relevant context, plan path or summary, validation expectations, and required output. Packaged `worker` defaults to fresh context. While an async worker runs, prepare validation or inspect adjacent code instead of editing the same worktree.
873
- 5. Require a useful worker handoff. Ask the worker to report changed files, what was implemented, what was left undone, commands run with exit codes, validation evidence, surprises or new risks, decisions made inside approved scope, and decisions needing parent approval.
874
- 6. Review after implementation. After the worker completes, launch fresh-context `reviewer` agents for correctness/regressions, tests/validation, and simplicity/maintainability as separate async runs so each completion wakes the parent. Add security, performance, docs/API, domain-specific, or user-flow validators for complex work, risky changes, broad refactors, or many changed lines. Use `output: false` unless review artifacts are explicitly needed.
875
- 7. Synthesize, then run the fix worker. Separate blockers, fixes worth doing now, optional improvements, and feedback to ignore/defer, then launch an async `worker` to apply fixes worth doing now when the workflow is implementation-authorized. Make ordinary reversible fixes within existing authority; escalate only a concrete blocker or decision outside the owner's outcome and scope.
876
- 8. Review again when warranted. If the fix worker made substantial changes or addressed non-trivial findings, run another focused parallel review round before final validation.
877
- 9. Validate and complete. After the fix worker and any follow-up review return, inspect the final diff yourself, run or confirm focused validation, update docs/changelog when relevant, and summarize what changed and why.
878
-
879
- Example implementation handoff after clarification and optional planning:
880
-
881
- ```typescript
882
- subagent({
883
- agent: "worker",
884
- task: "Implement the approved feature.\n\nClarified requirements:\n- ...\n\nPlan: see ~/Documents/docs/...-plan.md\n\nValidation contract:\n- ...\n\nReturn a handoff with changed files, what was implemented, what was left undone, commands run with exit codes, validation evidence, surprises/new risks, and decisions needing parent approval.",
885
- acceptance: {
886
- criteria: ["Implement the approved feature without widening scope"],
887
- evidence: ["changed-files", "tests-added", "commands-run", "residual-risks", "no-staged-files"],
888
- maxFinalizationTurns: 3,
889
- },
890
- // Async is the default; set async: false for explicitly chosen foreground execution.
891
- });
892
- ```
893
-
894
- Example review pass after implementation:
895
-
896
- ```typescript
897
- subagent({
898
- agent: "reviewer",
899
- task: "Review the current diff for correctness and regressions. Inspect changed files directly; do not rely on the worker's reasoning.",
900
- context: "fresh",
901
- output: false,
902
- });
903
- subagent({
904
- agent: "reviewer",
905
- task: "Review the current diff for tests and validation quality against the validation contract. Inspect changed files directly.",
906
- context: "fresh",
907
- output: false,
908
- });
909
- subagent({
910
- agent: "reviewer",
911
- task: "Review the current diff for simplicity and maintainability. Inspect changed files directly.",
912
- context: "fresh",
913
- output: false,
914
- });
915
- // Each completion wakes the parent. Continue useful work or end the turn and wait; do not poll.
916
- ```
917
-
918
- Example fix worker after parallel reviews:
919
-
920
- ```typescript
921
- subagent({
922
- agent: "worker",
923
- task: "Apply the synthesized reviewer feedback below. Only apply fixes worth doing now; preserve user-approved scope; make ordinary reversible choices; escalate only concrete decisions outside the assigned authority. Run focused validation and summarize what changed.\n\nReviewer synthesis:\n...",
924
- // Async is the default; set async: false for explicitly chosen foreground execution.
925
- });
926
- ```
927
-
928
- ### Review loop
929
-
930
- Do not treat review as the final step for implementation work. Run reviewers and validators, synthesize their findings against user scope and the validation contract, then launch one `worker` for accepted fixes when implementation is authorized.
931
-
932
- When an async implementation worker completes, treat the worker handoff as an intermediate state. The next parent action is separate async review runs, then synthesis, then an async fix worker if reviewers found fixes worth doing now. Keep these as parent-launched follow-up runs so each reviewer completion wakes the parent; do not put the review panel inside one async chain.
933
-
934
- For explicit review-loop requests, repeat worker → fresh-reviewer → synthesized-fix-worker cycles until reviewers find no blockers or fixes worth doing now, remaining feedback is optional or intentionally deferred, a concrete decision outside existing authority needs the user, or the max review-round cap is reached. Default to 3 review rounds unless the user sets a different cap. For complex work, many changed lines, or any fix pass that materially changes the diff, run another focused review round before the parent’s final look; otherwise stop instead of chasing optional polish.
935
-
936
- ### Parallel non-conflicting analysis
937
-
938
- ```typescript
939
- subagent({
940
- tasks: [
941
- { agent: "scout", task: "Audit frontend auth flow" },
942
- { agent: "researcher", task: "Research current retry/backoff best practices" },
943
- ],
944
- });
945
- ```
946
-
947
- ### Saved chain
948
-
949
- ```text
950
- /run-chain review-chain -- review this branch
951
- ```
952
-
953
- Use saved `.chain.md` or `.chain.json` workflows when the user wants a repeatable multi-agent flow without rewriting the chain each time. Prefer `.chain.json` for dynamic fanout or inline `outputSchema` objects; `.chain.md` remains the simple sequential/static authoring format.
954
-
955
- ## Error Handling
956
-
957
- **"Unknown agent"**
958
-
959
- ```typescript
960
- subagent({ action: "list" });
961
- // Check available agents and chains, then confirm scope/precedence.
962
- ```
963
-
964
- **Setup, discovery, or intercom confusion**
965
-
966
- ```typescript
967
- subagent({ action: "doctor" });
968
- // Check runtime paths, async support, discovery counts, current session, and intercom bridge state.
969
- ```
970
-
971
- **"Max subagent depth exceeded"**
972
-
973
- ```typescript
974
- // Flatten the workflow or raise maxSubagentDepth in config.
975
- ```
976
-
977
- **"Session manager did not return a session file"**
978
-
979
- ```typescript
980
- // Persist the current session before using context: "fork".
981
- ```
982
-
983
- **Intercom "Already waiting for a reply"**
984
-
985
- ```typescript
986
- // Resolve the current outbound ask before starting another one.
987
- ```
988
-
989
- **Parallel output-path conflict**
990
-
991
- ```typescript
992
- // Give each parallel task a distinct output path, or disable output for tasks that do not need it.
993
- ```
994
-
995
- **Worktree launch fails**
996
-
997
- ```typescript
998
- // Ensure the git working tree is clean and task cwd overrides match the shared cwd.
999
- ```
1000
-
1001
- **Child fails before starting**
1002
-
1003
- ```typescript
1004
- // Inspect `subagent({ action: "status", id: "..." })`, artifact metadata/output logs, and run doctor. Extension loader errors usually appear in child output logs.
1005
- ```