@fitchmultz/pi-subagents 0.49.1 → 0.51.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 (1069) hide show
  1. package/CHANGELOG.md +72 -1
  2. package/README.md +119 -94
  3. package/dist/agent/contracts.js +104 -0
  4. package/dist/agent/cwd.js +51 -0
  5. package/dist/agent/host.js +69 -0
  6. package/dist/agent/index.js +456 -0
  7. package/dist/agent/journal-tail.js +142 -0
  8. package/dist/agent/launch.js +99 -0
  9. package/dist/agent/legacy.js +183 -0
  10. package/dist/agent/notifications.js +210 -0
  11. package/dist/agent/observation-state.js +246 -0
  12. package/dist/agent/observation-view.js +258 -0
  13. package/dist/agent/observation.js +346 -0
  14. package/dist/agent/observe-card.js +243 -0
  15. package/dist/agent/observe-chrome.js +85 -0
  16. package/dist/agent/observe-client.js +285 -0
  17. package/dist/agent/observe-layout.js +65 -0
  18. package/dist/agent/observe-reading.js +84 -0
  19. package/dist/agent/observe-screen.js +436 -0
  20. package/dist/agent/observe-transcript.js +382 -0
  21. package/dist/agent/observe.js +441 -0
  22. package/dist/agent/process.js +346 -0
  23. package/dist/agent/receipts.js +147 -0
  24. package/dist/agent/runner.js +477 -0
  25. package/dist/agent/saved.js +195 -0
  26. package/dist/agent/shell.js +44 -0
  27. package/dist/agent/storage.js +130 -0
  28. package/dist/agent/tool-schemas.js +20 -0
  29. package/dist/agent/typebox.js +25 -0
  30. package/dist/agent/usage.js +117 -0
  31. package/dist/agent/view.js +194 -0
  32. package/dist/agent/wake.js +99 -0
  33. package/dist/build-info.js +1 -0
  34. package/dist/index.js +8 -0
  35. package/dist/intercom-client.d.ts +26 -0
  36. package/dist/intercom-client.js +45 -0
  37. package/dist/pi-intercom/agent-dir.d.ts +1 -0
  38. package/dist/pi-intercom/bridge-config.js +12 -19
  39. package/dist/pi-intercom/bridge-http.js +1 -2
  40. package/dist/pi-intercom/bridge-mailbox.js +2 -7
  41. package/dist/pi-intercom/bridge-protocol.js +3 -10
  42. package/dist/pi-intercom/bridge-routes.js +15 -186
  43. package/dist/pi-intercom/bridge-session.js +4 -97
  44. package/dist/pi-intercom/bridge.js +12 -35
  45. package/dist/pi-intercom/broker/broker.js +57 -56
  46. package/dist/pi-intercom/broker/client-last.d.ts +13 -0
  47. package/dist/pi-intercom/broker/client-last.js +60 -0
  48. package/dist/pi-intercom/broker/client.d.ts +60 -0
  49. package/dist/pi-intercom/broker/client.js +75 -4
  50. package/dist/pi-intercom/broker/connection.d.ts +29 -0
  51. package/dist/pi-intercom/broker/connection.js +5 -18
  52. package/dist/pi-intercom/broker/framing.d.ts +17 -0
  53. package/dist/pi-intercom/broker/framing.js +10 -7
  54. package/dist/pi-intercom/broker/guard.js +23 -0
  55. package/dist/pi-intercom/broker/last.d.ts +26 -0
  56. package/dist/pi-intercom/broker/last.js +198 -0
  57. package/dist/pi-intercom/broker/paths.d.ts +13 -0
  58. package/dist/pi-intercom/broker/paths.js +58 -16
  59. package/dist/pi-intercom/broker/pid.js +5 -1
  60. package/dist/pi-intercom/broker/server-connection.js +37 -0
  61. package/dist/pi-intercom/broker/snapshot-reader.d.ts +9 -0
  62. package/dist/pi-intercom/broker/snapshots.d.ts +29 -0
  63. package/dist/pi-intercom/broker/spawn.js +32 -16
  64. package/dist/pi-intercom/broker/targets.d.ts +9 -0
  65. package/dist/pi-intercom/broker/targets.js +24 -0
  66. package/dist/pi-intercom/config.js +0 -23
  67. package/dist/pi-intercom/connection.js +40 -72
  68. package/dist/pi-intercom/identity.js +15 -44
  69. package/dist/pi-intercom/inbound-delivery.js +20 -125
  70. package/dist/pi-intercom/inbound-journal.js +85 -73
  71. package/dist/pi-intercom/inbound-record.js +20 -49
  72. package/dist/pi-intercom/inbound.js +17 -90
  73. package/dist/pi-intercom/index.js +11 -47
  74. package/dist/pi-intercom/last-message.js +46 -0
  75. package/dist/pi-intercom/lifecycle.js +96 -36
  76. package/dist/pi-intercom/message-format.js +1 -32
  77. package/dist/pi-intercom/outbound.js +14 -16
  78. package/dist/pi-intercom/reply-tracker.js +9 -18
  79. package/dist/pi-intercom/reply-wait.js +17 -108
  80. package/dist/pi-intercom/runtime-types.js +0 -1
  81. package/dist/pi-intercom/session-events.js +5 -21
  82. package/dist/pi-intercom/session-targets.d.ts +24 -0
  83. package/dist/pi-intercom/tool-arguments.js +4 -0
  84. package/dist/pi-intercom/tool-registration.js +8 -86
  85. package/dist/pi-intercom/tool-results.js +5 -7
  86. package/dist/pi-intercom/tool-schemas.js +13 -67
  87. package/dist/pi-intercom/tools.js +55 -29
  88. package/dist/pi-intercom/types.d.ts +212 -0
  89. package/dist/pi-intercom/types.js +62 -4
  90. package/dist/pi-intercom/ui/session-format.js +3 -3
  91. package/dist/pi-intercom/validation.d.ts +12 -0
  92. package/dist/pi-intercom/validation.js +3 -0
  93. package/dist/shared/bounded-json.js +151 -0
  94. package/dist/shared/compact-cards.js +66 -0
  95. package/dist/shared/journal-frames.js +3 -6
  96. package/dist/shared/journal-projections.js +0 -31
  97. package/dist/shared/json-projection.js +267 -129
  98. package/dist/shared/native-journal.js +123 -56
  99. package/dist/shared/post-exit-stdio-guard.js +120 -7
  100. package/dist/shared/tui-action.js +29 -0
  101. package/dist/shared/types.js +0 -195
  102. package/dist/shared/unknown.d.ts +9 -0
  103. package/docs/code-quality.md +6 -3
  104. package/docs/development.md +93 -92
  105. package/docs/intercom-bridge.md +211 -415
  106. package/docs/intercom.md +362 -593
  107. package/docs/performance.md +185 -192
  108. package/docs/reference.md +282 -1458
  109. package/docs/retired-history-maintenance.md +252 -0
  110. package/package.json +33 -27
  111. package/scripts/archive-retired-history.mjs +464 -0
  112. package/scripts/build.mjs +49 -29
  113. package/scripts/intercom-bridge-credentials.mjs +1 -1
  114. package/scripts/intercom-remote.mjs +55 -272
  115. package/scripts/local-install-smoke.mjs +3 -1
  116. package/scripts/measure-size.mjs +64 -0
  117. package/scripts/native-package-smoke.mjs +409 -110
  118. package/scripts/package-smoke.mjs +184 -358
  119. package/scripts/prepare.mjs +2 -2
  120. package/scripts/real-pi-live.mjs +377 -0
  121. package/scripts/real-pi-processes.mjs +12 -39
  122. package/scripts/real-pi-smoke.mjs +39 -306
  123. package/scripts/run-tests.mjs +5 -2
  124. package/scripts/typescript.mjs +35 -0
  125. package/skills/pi-intercom/SKILL.md +54 -107
  126. package/skills/pi-subagents/SKILL.md +76 -72
  127. package/src/agent/contracts.ts +118 -0
  128. package/src/agent/cwd.ts +69 -0
  129. package/src/agent/host.ts +81 -0
  130. package/src/agent/index.ts +520 -0
  131. package/src/agent/journal-tail.ts +172 -0
  132. package/src/agent/launch.ts +136 -0
  133. package/src/agent/legacy.ts +221 -0
  134. package/src/agent/notifications.ts +256 -0
  135. package/src/agent/observation-state.ts +277 -0
  136. package/src/agent/observation-view.ts +267 -0
  137. package/src/agent/observation.ts +405 -0
  138. package/src/agent/observe-card.ts +304 -0
  139. package/src/agent/observe-chrome.ts +170 -0
  140. package/src/agent/observe-client.ts +318 -0
  141. package/src/agent/observe-layout.ts +79 -0
  142. package/src/agent/observe-reading.ts +97 -0
  143. package/src/agent/observe-screen.ts +481 -0
  144. package/src/agent/observe-transcript.ts +434 -0
  145. package/src/agent/observe.ts +473 -0
  146. package/src/agent/process.ts +385 -0
  147. package/src/agent/receipts.ts +178 -0
  148. package/src/agent/runner.ts +515 -0
  149. package/src/agent/saved.ts +220 -0
  150. package/src/agent/shell.ts +57 -0
  151. package/src/agent/storage.ts +139 -0
  152. package/src/agent/tool-schemas.ts +33 -0
  153. package/src/agent/typebox.ts +22 -0
  154. package/src/agent/usage.ts +133 -0
  155. package/src/agent/view.ts +296 -0
  156. package/src/agent/wake.ts +107 -0
  157. package/src/index.ts +10 -0
  158. package/src/intercom-client.ts +108 -0
  159. package/src/pi-intercom/bridge-config.ts +13 -24
  160. package/src/pi-intercom/bridge-http.ts +1 -2
  161. package/src/pi-intercom/bridge-mailbox.ts +8 -8
  162. package/src/pi-intercom/bridge-protocol.ts +7 -11
  163. package/src/pi-intercom/bridge-routes.ts +29 -277
  164. package/src/pi-intercom/bridge-session.ts +5 -116
  165. package/src/pi-intercom/bridge.ts +12 -35
  166. package/src/pi-intercom/broker/broker.ts +63 -74
  167. package/src/pi-intercom/broker/client-last.ts +78 -0
  168. package/src/pi-intercom/broker/client.ts +87 -23
  169. package/src/pi-intercom/broker/connection.ts +5 -17
  170. package/src/pi-intercom/broker/framing.ts +11 -8
  171. package/src/pi-intercom/broker/guard.ts +33 -0
  172. package/src/pi-intercom/broker/last.ts +275 -0
  173. package/src/pi-intercom/broker/paths.ts +65 -16
  174. package/src/pi-intercom/broker/pid.ts +6 -1
  175. package/src/pi-intercom/broker/server-connection.ts +63 -0
  176. package/src/pi-intercom/broker/spawn.ts +44 -16
  177. package/src/pi-intercom/broker/targets.ts +42 -0
  178. package/src/pi-intercom/config.ts +0 -27
  179. package/src/pi-intercom/connection.ts +60 -92
  180. package/src/pi-intercom/identity.ts +24 -49
  181. package/src/pi-intercom/inbound-delivery.ts +25 -154
  182. package/src/pi-intercom/inbound-journal.ts +105 -86
  183. package/src/pi-intercom/inbound-record.ts +23 -65
  184. package/src/pi-intercom/inbound.ts +24 -117
  185. package/src/pi-intercom/index.ts +13 -49
  186. package/src/pi-intercom/last-message.ts +64 -0
  187. package/src/pi-intercom/lifecycle.ts +126 -50
  188. package/src/pi-intercom/message-format.ts +1 -34
  189. package/src/pi-intercom/outbound.ts +23 -17
  190. package/src/pi-intercom/reply-tracker.ts +10 -25
  191. package/src/pi-intercom/reply-wait.ts +23 -129
  192. package/src/pi-intercom/runtime-types.ts +5 -59
  193. package/src/pi-intercom/session-events.ts +7 -35
  194. package/src/pi-intercom/tool-arguments.ts +6 -0
  195. package/src/pi-intercom/tool-registration.ts +12 -109
  196. package/src/pi-intercom/tool-results.ts +10 -9
  197. package/src/pi-intercom/tool-schemas.ts +13 -108
  198. package/src/pi-intercom/tools.ts +58 -44
  199. package/src/pi-intercom/transport.ts +1 -0
  200. package/src/pi-intercom/types.ts +156 -6
  201. package/src/pi-intercom/ui/session-format.ts +3 -3
  202. package/src/pi-intercom/validation.ts +4 -0
  203. package/src/shared/bounded-json.ts +162 -0
  204. package/src/shared/compact-cards.ts +118 -0
  205. package/src/shared/journal-frames.ts +3 -19
  206. package/src/shared/journal-projections.ts +0 -35
  207. package/src/shared/json-projection.ts +267 -147
  208. package/src/shared/native-journal.ts +157 -75
  209. package/src/shared/post-exit-stdio-guard.ts +172 -8
  210. package/src/shared/tui-action.ts +39 -0
  211. package/src/shared/types.ts +0 -257
  212. package/tsconfig.client.json +8 -0
  213. package/tsconfig.json +1 -0
  214. package/agents/context-builder.md +0 -115
  215. package/agents/debugger.md +0 -58
  216. package/agents/delegate.md +0 -14
  217. package/agents/fixer.md +0 -40
  218. package/agents/oracle.md +0 -82
  219. package/agents/planner.md +0 -83
  220. package/agents/researcher.md +0 -60
  221. package/agents/reviewer-claude.md +0 -78
  222. package/agents/reviewer-gpt.md +0 -78
  223. package/agents/reviewer-ponytail.md +0 -92
  224. package/agents/reviewer-security.md +0 -92
  225. package/agents/reviewer.md +0 -78
  226. package/agents/scout.md +0 -77
  227. package/agents/ui-designer.md +0 -58
  228. package/agents/watcher.md +0 -27
  229. package/agents/worker.md +0 -52
  230. package/agents/writer.md +0 -39
  231. package/dist/agents/agent-defaults.js +0 -9
  232. package/dist/agents/agent-definition.js +0 -196
  233. package/dist/agents/agent-management.js +0 -88
  234. package/dist/agents/agent-scope.js +0 -9
  235. package/dist/agents/agent-selection.js +0 -13
  236. package/dist/agents/agent-serializer.js +0 -88
  237. package/dist/agents/agents.js +0 -111
  238. package/dist/agents/builtin-overrides.js +0 -218
  239. package/dist/agents/chain-serializer.js +0 -3
  240. package/dist/agents/config-values.js +0 -52
  241. package/dist/agents/discovery-paths.js +0 -91
  242. package/dist/agents/frontmatter.js +0 -31
  243. package/dist/agents/identity.js +0 -46
  244. package/dist/agents/json-chain.js +0 -254
  245. package/dist/agents/management-config.js +0 -332
  246. package/dist/agents/management-format.js +0 -231
  247. package/dist/agents/management-persistence.js +0 -287
  248. package/dist/agents/management-targets.js +0 -136
  249. package/dist/agents/management-warnings.js +0 -81
  250. package/dist/agents/markdown-chain.js +0 -210
  251. package/dist/agents/package-agents.js +0 -154
  252. package/dist/agents/skill-files.js +0 -157
  253. package/dist/agents/skill-search-paths.js +0 -246
  254. package/dist/agents/skill-types.js +0 -1
  255. package/dist/agents/skills.js +0 -125
  256. package/dist/extension/acceptance-schema.js +0 -55
  257. package/dist/extension/build-info.js +0 -1
  258. package/dist/extension/chain-schema.js +0 -196
  259. package/dist/extension/child-runtime.js +0 -237
  260. package/dist/extension/compact-tools.js +0 -183
  261. package/dist/extension/config-schema.js +0 -29
  262. package/dist/extension/config.js +0 -38
  263. package/dist/extension/control-notice-schema.js +0 -37
  264. package/dist/extension/control-notices.js +0 -36
  265. package/dist/extension/delegation-bridges.js +0 -43
  266. package/dist/extension/doctor.js +0 -166
  267. package/dist/extension/everyday-schemas.js +0 -207
  268. package/dist/extension/fanout-child.js +0 -25
  269. package/dist/extension/index.js +0 -28
  270. package/dist/extension/message-renderers.js +0 -225
  271. package/dist/extension/nested-control-inbox.js +0 -154
  272. package/dist/extension/parent-runtime.js +0 -339
  273. package/dist/extension/primary-tool.js +0 -69
  274. package/dist/extension/result-snapshot.js +0 -4
  275. package/dist/extension/runtime-reload.js +0 -62
  276. package/dist/extension/runtime-storage.js +0 -43
  277. package/dist/extension/schema-overrides.js +0 -75
  278. package/dist/extension/schemas.js +0 -345
  279. package/dist/extension/tool-input.js +0 -35
  280. package/dist/extension/tool-result.js +0 -29
  281. package/dist/history/answer-texts.js +0 -57
  282. package/dist/history/canonical-result.js +0 -114
  283. package/dist/history/canonical-selection.js +0 -40
  284. package/dist/history/database-generation.js +0 -82
  285. package/dist/history/database.js +0 -96
  286. package/dist/history/entry-ingestion.js +0 -61
  287. package/dist/history/index.js +0 -344
  288. package/dist/history/ingest.js +0 -314
  289. package/dist/history/output-digests.js +0 -40
  290. package/dist/history/preview.js +0 -210
  291. package/dist/history/prune.js +0 -33
  292. package/dist/history/queries.js +0 -81
  293. package/dist/history/query-scope.js +0 -190
  294. package/dist/history/rows.js +0 -77
  295. package/dist/history/run-projection.js +0 -136
  296. package/dist/history/run-queries.js +0 -153
  297. package/dist/history/schema.js +0 -31
  298. package/dist/history/search-queries.js +0 -169
  299. package/dist/history/selected-record.js +0 -108
  300. package/dist/history/source-file.js +0 -45
  301. package/dist/history/source-watches.js +0 -141
  302. package/dist/history/store.js +0 -243
  303. package/dist/history/text-chunks.js +0 -168
  304. package/dist/history/text.js +0 -35
  305. package/dist/history/transcript-queries.js +0 -183
  306. package/dist/history/types.js +0 -8
  307. package/dist/history/values.js +0 -36
  308. package/dist/history/wire-inputs.js +0 -122
  309. package/dist/history/wire-models.js +0 -38
  310. package/dist/history/worker-runtime.js +0 -441
  311. package/dist/history/worker.js +0 -91
  312. package/dist/intercom/intercom-bridge.js +0 -140
  313. package/dist/intercom/live-intercom.js +0 -151
  314. package/dist/intercom/nested-result-tree.js +0 -163
  315. package/dist/intercom/result-delivery.js +0 -40
  316. package/dist/intercom/result-intercom.js +0 -216
  317. package/dist/pi-intercom/bridge-ask.js +0 -57
  318. package/dist/pi-intercom/bridge-broadcast.js +0 -60
  319. package/dist/pi-intercom/bridge-catalog.js +0 -372
  320. package/dist/pi-intercom/bridge-control.js +0 -104
  321. package/dist/pi-intercom/bridge-groups.js +0 -135
  322. package/dist/pi-intercom/bridge-launch-journal.js +0 -84
  323. package/dist/pi-intercom/bridge-launch-policy.js +0 -154
  324. package/dist/pi-intercom/bridge-launch.js +0 -327
  325. package/dist/pi-intercom/bridge-operations.js +0 -127
  326. package/dist/pi-intercom/bridge-rpc-process.js +0 -292
  327. package/dist/pi-intercom/interview.js +0 -236
  328. package/dist/pi-intercom/native-control-auth.js +0 -80
  329. package/dist/pi-intercom/native-control-protocol.js +0 -111
  330. package/dist/pi-intercom/native-control.js +0 -130
  331. package/dist/pi-intercom/peer-awareness.js +0 -66
  332. package/dist/pi-intercom/saved-transcript.js +0 -135
  333. package/dist/pi-intercom/subagent-events.js +0 -238
  334. package/dist/pi-intercom/subagent-live-events.js +0 -175
  335. package/dist/pi-intercom/supervisor.js +0 -282
  336. package/dist/pi-intercom/topic-actions.js +0 -177
  337. package/dist/pi-intercom/topics.js +0 -242
  338. package/dist/pi-intercom/transcript.js +0 -175
  339. package/dist/pi-intercom/ui/compose-paste.js +0 -93
  340. package/dist/pi-intercom/ui/compose.js +0 -247
  341. package/dist/pi-intercom/ui/inline-message.js +0 -80
  342. package/dist/pi-intercom/ui/message-renderers.js +0 -147
  343. package/dist/pi-intercom/ui/overlay.js +0 -181
  344. package/dist/pi-intercom/ui/session-list.js +0 -157
  345. package/dist/pi-intercom/ui/tool-renderers.js +0 -110
  346. package/dist/pi-intercom/ui/topic-view.js +0 -88
  347. package/dist/runs/background/async-chain-plan.js +0 -265
  348. package/dist/runs/background/async-control.js +0 -171
  349. package/dist/runs/background/async-execution.js +0 -179
  350. package/dist/runs/background/async-job-admission.js +0 -40
  351. package/dist/runs/background/async-job-projection.js +0 -169
  352. package/dist/runs/background/async-job-tracker.js +0 -353
  353. package/dist/runs/background/async-launch.js +0 -216
  354. package/dist/runs/background/async-plan.js +0 -116
  355. package/dist/runs/background/async-result-file.js +0 -82
  356. package/dist/runs/background/async-resume.js +0 -247
  357. package/dist/runs/background/async-run-discovery.js +0 -211
  358. package/dist/runs/background/async-run-location.js +0 -135
  359. package/dist/runs/background/async-run-record.js +0 -1
  360. package/dist/runs/background/async-run-repair.js +0 -223
  361. package/dist/runs/background/async-run-summary.js +0 -1
  362. package/dist/runs/background/async-single-plan.js +0 -105
  363. package/dist/runs/background/async-status-projection.js +0 -155
  364. package/dist/runs/background/async-status-render.js +0 -117
  365. package/dist/runs/background/async-status-validation.js +0 -181
  366. package/dist/runs/background/async-status.js +0 -3
  367. package/dist/runs/background/async-value.js +0 -21
  368. package/dist/runs/background/completion-dedupe.js +0 -42
  369. package/dist/runs/background/completion-delivery.js +0 -251
  370. package/dist/runs/background/completion-receipts.js +0 -237
  371. package/dist/runs/background/legacy-status-acceptance.js +0 -34
  372. package/dist/runs/background/notify.js +0 -111
  373. package/dist/runs/background/parallel-groups.js +0 -72
  374. package/dist/runs/background/result-payload.js +0 -178
  375. package/dist/runs/background/result-watcher.js +0 -435
  376. package/dist/runs/background/run-id-resolver.js +0 -84
  377. package/dist/runs/background/run-schemas.js +0 -189
  378. package/dist/runs/background/run-status-contracts.js +0 -14
  379. package/dist/runs/background/run-status-render.js +0 -270
  380. package/dist/runs/background/run-status.js +0 -274
  381. package/dist/runs/background/runner-attempt-output.js +0 -155
  382. package/dist/runs/background/runner-attempt.js +0 -263
  383. package/dist/runs/background/runner-child-executor.js +0 -166
  384. package/dist/runs/background/runner-child-observer.js +0 -197
  385. package/dist/runs/background/runner-completion-summary.js +0 -71
  386. package/dist/runs/background/runner-completion.js +0 -211
  387. package/dist/runs/background/runner-config.js +0 -1
  388. package/dist/runs/background/runner-contract.js +0 -1
  389. package/dist/runs/background/runner-dynamic.js +0 -121
  390. package/dist/runs/background/runner-finalization.js +0 -149
  391. package/dist/runs/background/runner-graph.js +0 -68
  392. package/dist/runs/background/runner-initial-status.js +0 -60
  393. package/dist/runs/background/runner-lifecycle.js +0 -142
  394. package/dist/runs/background/runner-monitor.js +0 -311
  395. package/dist/runs/background/runner-parallel.js +0 -203
  396. package/dist/runs/background/runner-prepare-step.js +0 -86
  397. package/dist/runs/background/runner-reporting.js +0 -153
  398. package/dist/runs/background/runner-status.js +0 -148
  399. package/dist/runs/background/runner-step-output.js +0 -90
  400. package/dist/runs/background/runner-step-record.js +0 -45
  401. package/dist/runs/background/runner-step.js +0 -112
  402. package/dist/runs/background/runner-streaming.js +0 -173
  403. package/dist/runs/background/runner-workflow.js +0 -213
  404. package/dist/runs/background/stale-run-reconciler.js +0 -198
  405. package/dist/runs/background/subagent-runner-launcher.js +0 -75
  406. package/dist/runs/background/subagent-runner.js +0 -81
  407. package/dist/runs/background/top-level-async.js +0 -6
  408. package/dist/runs/foreground/chain-clarify.js +0 -428
  409. package/dist/runs/foreground/clarification-draft.js +0 -87
  410. package/dist/runs/foreground/clarify-contracts.js +0 -1
  411. package/dist/runs/foreground/clarify-invocation.js +0 -163
  412. package/dist/runs/foreground/clarify-text-editor.js +0 -210
  413. package/dist/runs/foreground/clarify-view.js +0 -167
  414. package/dist/runs/foreground/execution-input.js +0 -296
  415. package/dist/runs/foreground/execution-routing.js +0 -33
  416. package/dist/runs/foreground/execution-timeout.js +0 -81
  417. package/dist/runs/foreground/foreground-control.js +0 -276
  418. package/dist/runs/foreground/foreground-memory.js +0 -99
  419. package/dist/runs/foreground/invocation-context.js +0 -55
  420. package/dist/runs/foreground/invocation-execution.js +0 -331
  421. package/dist/runs/foreground/invocation-expansion.js +0 -48
  422. package/dist/runs/foreground/management-actions.js +0 -295
  423. package/dist/runs/foreground/nested-control.js +0 -179
  424. package/dist/runs/foreground/question-continuation.js +0 -78
  425. package/dist/runs/foreground/question-control.js +0 -193
  426. package/dist/runs/foreground/resume-target.js +0 -221
  427. package/dist/runs/foreground/revival-launch-policy.js +0 -58
  428. package/dist/runs/foreground/run-async-path.js +0 -217
  429. package/dist/runs/foreground/run-interrupt.js +0 -164
  430. package/dist/runs/foreground/run-nudge.js +0 -278
  431. package/dist/runs/foreground/saved-revival.js +0 -251
  432. package/dist/runs/foreground/subagent-executor.js +0 -153
  433. package/dist/runs/foreground/subagent-params.js +0 -202
  434. package/dist/runs/foreground/wait-observation.js +0 -104
  435. package/dist/runs/foreground/wait-registration.js +0 -17
  436. package/dist/runs/foreground/wait-run.js +0 -301
  437. package/dist/runs/shared/acceptance-contract.js +0 -347
  438. package/dist/runs/shared/acceptance-defaults.js +0 -1
  439. package/dist/runs/shared/acceptance-evaluation.js +0 -276
  440. package/dist/runs/shared/acceptance-finalization.js +0 -356
  441. package/dist/runs/shared/acceptance-outcome.js +0 -53
  442. package/dist/runs/shared/acceptance-reports.js +0 -212
  443. package/dist/runs/shared/acceptance-submission.js +0 -167
  444. package/dist/runs/shared/acceptance-verification.js +0 -100
  445. package/dist/runs/shared/acceptance.js +0 -4
  446. package/dist/runs/shared/chain-outputs.js +0 -138
  447. package/dist/runs/shared/child-attempt-types.js +0 -1
  448. package/dist/runs/shared/child-attempt.js +0 -340
  449. package/dist/runs/shared/child-boundaries.js +0 -173
  450. package/dist/runs/shared/child-context-filter.js +0 -44
  451. package/dist/runs/shared/child-event-observer.js +0 -390
  452. package/dist/runs/shared/child-execution-cwd.js +0 -126
  453. package/dist/runs/shared/child-execution-outcome.js +0 -72
  454. package/dist/runs/shared/child-invocation.js +0 -54
  455. package/dist/runs/shared/child-message-validation.js +0 -215
  456. package/dist/runs/shared/child-native-accounting.js +0 -106
  457. package/dist/runs/shared/child-native-observation.js +0 -69
  458. package/dist/runs/shared/child-observation-spool.js +0 -169
  459. package/dist/runs/shared/child-observations.js +0 -195
  460. package/dist/runs/shared/child-presence.js +0 -3
  461. package/dist/runs/shared/child-route-env.js +0 -119
  462. package/dist/runs/shared/child-stream-observer.js +0 -221
  463. package/dist/runs/shared/child-stream-projection.js +0 -137
  464. package/dist/runs/shared/child-structured-tool.js +0 -27
  465. package/dist/runs/shared/claude-code.js +0 -162
  466. package/dist/runs/shared/claude-model.js +0 -42
  467. package/dist/runs/shared/claude-session.js +0 -83
  468. package/dist/runs/shared/claude-types.js +0 -1
  469. package/dist/runs/shared/completion-guard.js +0 -31
  470. package/dist/runs/shared/control-event-policy.js +0 -8
  471. package/dist/runs/shared/control-notification-owner.js +0 -13
  472. package/dist/runs/shared/dynamic-fanout.js +0 -289
  473. package/dist/runs/shared/dynamic-item.js +0 -102
  474. package/dist/runs/shared/history-index.js +0 -98
  475. package/dist/runs/shared/legacy-async-recovery.js +0 -114
  476. package/dist/runs/shared/legacy-output-recovery.js +0 -148
  477. package/dist/runs/shared/mcp-config-schema.js +0 -36
  478. package/dist/runs/shared/mcp-direct-tool-allowlist.js +0 -365
  479. package/dist/runs/shared/model-fallback.js +0 -247
  480. package/dist/runs/shared/mutating-tool-guard.js +0 -210
  481. package/dist/runs/shared/native-finalization-types.js +0 -1
  482. package/dist/runs/shared/native-finalization.js +0 -180
  483. package/dist/runs/shared/native-usage.js +0 -293
  484. package/dist/runs/shared/nested-control-records.js +0 -128
  485. package/dist/runs/shared/nested-events.js +0 -8
  486. package/dist/runs/shared/nested-path.js +0 -52
  487. package/dist/runs/shared/nested-projection.js +0 -155
  488. package/dist/runs/shared/nested-protocol.js +0 -18
  489. package/dist/runs/shared/nested-registry.js +0 -191
  490. package/dist/runs/shared/nested-render.js +0 -156
  491. package/dist/runs/shared/nested-route.js +0 -220
  492. package/dist/runs/shared/nested-validation.js +0 -216
  493. package/dist/runs/shared/owned-child-evidence.js +0 -125
  494. package/dist/runs/shared/owned-run-list.js +0 -146
  495. package/dist/runs/shared/owned-run-observation.js +0 -267
  496. package/dist/runs/shared/owned-run-progress.js +0 -109
  497. package/dist/runs/shared/owned-run-read-state.js +0 -1
  498. package/dist/runs/shared/owned-run-results.js +0 -202
  499. package/dist/runs/shared/owned-run-status.js +0 -180
  500. package/dist/runs/shared/owned-run-view.js +0 -51
  501. package/dist/runs/shared/owned-workflow-details.js +0 -17
  502. package/dist/runs/shared/owner-output.js +0 -43
  503. package/dist/runs/shared/parallel-utils.js +0 -49
  504. package/dist/runs/shared/parent-receipts.js +0 -126
  505. package/dist/runs/shared/parent-usage.js +0 -233
  506. package/dist/runs/shared/pi-args.js +0 -217
  507. package/dist/runs/shared/pi-launch-input.js +0 -1
  508. package/dist/runs/shared/pi-session-launch.js +0 -86
  509. package/dist/runs/shared/pi-spawn.js +0 -66
  510. package/dist/runs/shared/run-history-queries.js +0 -136
  511. package/dist/runs/shared/run-history.js +0 -176
  512. package/dist/runs/shared/run-id-ambiguity.js +0 -4
  513. package/dist/runs/shared/run-metadata-paths.js +0 -14
  514. package/dist/runs/shared/run-metadata.js +0 -158
  515. package/dist/runs/shared/run-persistence.js +0 -131
  516. package/dist/runs/shared/run-records.js +0 -9
  517. package/dist/runs/shared/run-restoration.js +0 -337
  518. package/dist/runs/shared/run-state-owner.js +0 -26
  519. package/dist/runs/shared/session-cwd-preload.js +0 -42
  520. package/dist/runs/shared/single-output.js +0 -297
  521. package/dist/runs/shared/stable-value.js +0 -15
  522. package/dist/runs/shared/streaming-text.js +0 -26
  523. package/dist/runs/shared/structured-output.js +0 -67
  524. package/dist/runs/shared/subagent-control.js +0 -246
  525. package/dist/runs/shared/subagent-prompt-runtime.js +0 -94
  526. package/dist/runs/shared/subagent-tool-loop-guard.js +0 -95
  527. package/dist/runs/shared/supervisor-question-state.js +0 -145
  528. package/dist/runs/shared/supervisor-questions.js +0 -284
  529. package/dist/runs/shared/workflow-graph.js +0 -306
  530. package/dist/runs/shared/workflow-policy.js +0 -157
  531. package/dist/runs/shared/worktree-contract.js +0 -1
  532. package/dist/runs/shared/worktree-hook.js +0 -138
  533. package/dist/runs/shared/worktree-location.js +0 -47
  534. package/dist/runs/shared/worktree-preservation.js +0 -8
  535. package/dist/runs/shared/worktree-process.js +0 -107
  536. package/dist/runs/shared/worktree.js +0 -386
  537. package/dist/shared/agent-context-policy.js +0 -116
  538. package/dist/shared/agent-dir.js +0 -14
  539. package/dist/shared/artifacts.js +0 -114
  540. package/dist/shared/atomic-json.js +0 -16
  541. package/dist/shared/chain-files.js +0 -72
  542. package/dist/shared/concurrency.js +0 -18
  543. package/dist/shared/content-preview.js +0 -115
  544. package/dist/shared/execution-cwd.js +0 -22
  545. package/dist/shared/file-coalescer.js +0 -22
  546. package/dist/shared/fork-context.js +0 -47
  547. package/dist/shared/formatters.js +0 -111
  548. package/dist/shared/journal-reader.js +0 -6
  549. package/dist/shared/lazy-tools.js +0 -43
  550. package/dist/shared/message-output.js +0 -116
  551. package/dist/shared/model-info.js +0 -85
  552. package/dist/shared/native-import.js +0 -20
  553. package/dist/shared/native-session-loader.js +0 -17
  554. package/dist/shared/native-session.js +0 -4
  555. package/dist/shared/native-tui.js +0 -23
  556. package/dist/shared/native-typebox.js +0 -32
  557. package/dist/shared/prompt-sections.js +0 -10
  558. package/dist/shared/session-entries.js +0 -87
  559. package/dist/shared/session-identity.js +0 -16
  560. package/dist/shared/settings.js +0 -121
  561. package/dist/shared/status-format.js +0 -171
  562. package/dist/shared/task-file-policy.js +0 -24
  563. package/dist/shared/temp-root.js +0 -143
  564. package/dist/shared/types/acceptance.js +0 -1
  565. package/dist/shared/types/async.js +0 -1
  566. package/dist/shared/types/config.js +0 -1
  567. package/dist/shared/types/details.js +0 -1
  568. package/dist/shared/types/history.js +0 -1
  569. package/dist/shared/types/inputs.js +0 -1
  570. package/dist/shared/types/intercom.js +0 -1
  571. package/dist/shared/types/launch.js +0 -1
  572. package/dist/shared/types/messages.js +0 -1
  573. package/dist/shared/types/nested.js +0 -1
  574. package/dist/shared/types/owned-runs.js +0 -1
  575. package/dist/shared/types/progress.js +0 -1
  576. package/dist/shared/types/questions.js +0 -1
  577. package/dist/shared/types/results.js +0 -1
  578. package/dist/shared/types/state.js +0 -1
  579. package/dist/shared/types/usage.js +0 -1
  580. package/dist/shared/types/workflow.js +0 -1
  581. package/dist/shared/ui-mode.js +0 -3
  582. package/dist/shared/utils.js +0 -128
  583. package/dist/slash/command-discovery.js +0 -83
  584. package/dist/slash/command-input.js +0 -190
  585. package/dist/slash/prompt-template-bridge.js +0 -122
  586. package/dist/slash/prompt-template-contract.js +0 -77
  587. package/dist/slash/prompt-template-results.js +0 -125
  588. package/dist/slash/request-protocol.js +0 -68
  589. package/dist/slash/result-delivery.js +0 -237
  590. package/dist/slash/saved-chain.js +0 -78
  591. package/dist/slash/slash-bridge.js +0 -150
  592. package/dist/slash/slash-commands.js +0 -136
  593. package/dist/slash/slash-live-state.js +0 -267
  594. package/dist/tui/action-hints.js +0 -103
  595. package/dist/tui/activity-lines.js +0 -32
  596. package/dist/tui/agent-browser.js +0 -290
  597. package/dist/tui/agent-controls.js +0 -289
  598. package/dist/tui/agent-conversation.js +0 -444
  599. package/dist/tui/agent-dock.js +0 -171
  600. package/dist/tui/agent-history.js +0 -50
  601. package/dist/tui/agent-model.js +0 -62
  602. package/dist/tui/agent-picker.js +0 -262
  603. package/dist/tui/agent-view.js +0 -350
  604. package/dist/tui/compact-results.js +0 -193
  605. package/dist/tui/conversation-details.js +0 -190
  606. package/dist/tui/conversation-frame.js +0 -135
  607. package/dist/tui/conversation-history.js +0 -210
  608. package/dist/tui/conversation-menu.js +0 -78
  609. package/dist/tui/conversation-notices.js +0 -79
  610. package/dist/tui/conversation-selection.js +0 -58
  611. package/dist/tui/conversation-viewport.js +0 -129
  612. package/dist/tui/direction-message.js +0 -27
  613. package/dist/tui/display.js +0 -282
  614. package/dist/tui/editor-viewport.js +0 -18
  615. package/dist/tui/expanded-content.js +0 -87
  616. package/dist/tui/expanded-multi.js +0 -170
  617. package/dist/tui/expanded-single.js +0 -65
  618. package/dist/tui/history-cards.js +0 -202
  619. package/dist/tui/history-display.js +0 -238
  620. package/dist/tui/history-json.js +0 -16
  621. package/dist/tui/history-metadata.js +0 -152
  622. package/dist/tui/history-record.js +0 -251
  623. package/dist/tui/history-text.js +0 -34
  624. package/dist/tui/indexed-history.js +0 -116
  625. package/dist/tui/nested-widget.js +0 -120
  626. package/dist/tui/picker-page.js +0 -59
  627. package/dist/tui/render.js +0 -72
  628. package/dist/tui/result-facts.js +0 -64
  629. package/dist/tui/task-observation.js +0 -59
  630. package/dist/tui/task-store.js +0 -366
  631. package/dist/tui/text-values.js +0 -16
  632. package/dist/tui/view-connections.js +0 -47
  633. package/dist/tui/view-model.js +0 -94
  634. package/dist/tui/view-persistence.js +0 -51
  635. package/dist/tui/view-ports.js +0 -1
  636. package/dist/tui/view-session.js +0 -37
  637. package/dist/tui/widget-details.js +0 -144
  638. package/dist/tui/widget-status.js +0 -245
  639. package/dist/tui/widget.js +0 -145
  640. package/dist/tui/workflow-labels.js +0 -223
  641. package/dist/tui/workflow-outcomes.js +0 -124
  642. package/generated/RunValidators.d.ts +0 -28
  643. package/generated/RunValidators.js +0 -2
  644. package/prompts/gather-context-and-clarify.md +0 -14
  645. package/prompts/parallel-cleanup.md +0 -65
  646. package/prompts/parallel-context-build.md +0 -59
  647. package/prompts/parallel-handoff-plan.md +0 -68
  648. package/prompts/parallel-research.md +0 -55
  649. package/prompts/parallel-review.md +0 -61
  650. package/prompts/review-loop.md +0 -44
  651. package/scripts/generate-run-schemas.mjs +0 -210
  652. package/skills/pi-intercom/evals/evals.json +0 -29
  653. package/skills/pi-intercom/evals/trigger-evals.json +0 -47
  654. package/skills/pi-intercom/references/peer-sessions.md +0 -74
  655. package/skills/pi-subagents/evals/evals.json +0 -29
  656. package/skills/pi-subagents/evals/trigger-evals.json +0 -42
  657. package/skills/pi-subagents/references/full-orchestration-guide.md +0 -1005
  658. package/src/agents/agent-defaults.ts +0 -13
  659. package/src/agents/agent-definition.ts +0 -253
  660. package/src/agents/agent-management.ts +0 -120
  661. package/src/agents/agent-scope.ts +0 -11
  662. package/src/agents/agent-selection.ts +0 -22
  663. package/src/agents/agent-serializer.ts +0 -90
  664. package/src/agents/agents.ts +0 -214
  665. package/src/agents/builtin-overrides.ts +0 -297
  666. package/src/agents/chain-serializer.ts +0 -3
  667. package/src/agents/config-values.ts +0 -57
  668. package/src/agents/discovery-paths.ts +0 -134
  669. package/src/agents/frontmatter.ts +0 -39
  670. package/src/agents/identity.ts +0 -61
  671. package/src/agents/json-chain.ts +0 -305
  672. package/src/agents/management-config.ts +0 -342
  673. package/src/agents/management-format.ts +0 -243
  674. package/src/agents/management-persistence.ts +0 -408
  675. package/src/agents/management-targets.ts +0 -260
  676. package/src/agents/management-warnings.ts +0 -115
  677. package/src/agents/markdown-chain.ts +0 -237
  678. package/src/agents/package-agents.ts +0 -231
  679. package/src/agents/skill-files.ts +0 -182
  680. package/src/agents/skill-search-paths.ts +0 -289
  681. package/src/agents/skill-types.ts +0 -31
  682. package/src/agents/skills.ts +0 -179
  683. package/src/extension/acceptance-schema.ts +0 -88
  684. package/src/extension/build-info.ts +0 -2
  685. package/src/extension/chain-schema.ts +0 -276
  686. package/src/extension/child-runtime.ts +0 -302
  687. package/src/extension/compact-tools.ts +0 -271
  688. package/src/extension/config-schema.ts +0 -59
  689. package/src/extension/config.ts +0 -45
  690. package/src/extension/control-notice-schema.ts +0 -55
  691. package/src/extension/control-notices.ts +0 -71
  692. package/src/extension/delegation-bridges.ts +0 -59
  693. package/src/extension/doctor.ts +0 -207
  694. package/src/extension/everyday-schemas.ts +0 -252
  695. package/src/extension/fanout-child.ts +0 -33
  696. package/src/extension/index.ts +0 -31
  697. package/src/extension/message-renderers.ts +0 -334
  698. package/src/extension/nested-control-inbox.ts +0 -196
  699. package/src/extension/parent-runtime.ts +0 -405
  700. package/src/extension/primary-tool.ts +0 -130
  701. package/src/extension/result-snapshot.ts +0 -9
  702. package/src/extension/runtime-reload.ts +0 -72
  703. package/src/extension/runtime-storage.ts +0 -49
  704. package/src/extension/schema-overrides.ts +0 -114
  705. package/src/extension/schemas.ts +0 -477
  706. package/src/extension/tool-input.ts +0 -46
  707. package/src/extension/tool-result.ts +0 -47
  708. package/src/history/answer-texts.ts +0 -74
  709. package/src/history/canonical-result.ts +0 -138
  710. package/src/history/canonical-selection.ts +0 -54
  711. package/src/history/database-generation.ts +0 -86
  712. package/src/history/database.ts +0 -97
  713. package/src/history/entry-ingestion.ts +0 -129
  714. package/src/history/index.ts +0 -434
  715. package/src/history/ingest.ts +0 -387
  716. package/src/history/output-digests.ts +0 -41
  717. package/src/history/preview.ts +0 -235
  718. package/src/history/prune.ts +0 -48
  719. package/src/history/queries.ts +0 -125
  720. package/src/history/query-scope.ts +0 -278
  721. package/src/history/rows.ts +0 -118
  722. package/src/history/run-projection.ts +0 -162
  723. package/src/history/run-queries.ts +0 -199
  724. package/src/history/schema.ts +0 -34
  725. package/src/history/search-queries.ts +0 -223
  726. package/src/history/selected-record.ts +0 -140
  727. package/src/history/source-file.ts +0 -51
  728. package/src/history/source-watches.ts +0 -156
  729. package/src/history/store.ts +0 -332
  730. package/src/history/text-chunks.ts +0 -186
  731. package/src/history/text.ts +0 -43
  732. package/src/history/transcript-queries.ts +0 -257
  733. package/src/history/types.ts +0 -29
  734. package/src/history/values.ts +0 -36
  735. package/src/history/wire-inputs.ts +0 -141
  736. package/src/history/wire-models.ts +0 -51
  737. package/src/history/worker-runtime.ts +0 -502
  738. package/src/history/worker.ts +0 -99
  739. package/src/intercom/intercom-bridge.ts +0 -190
  740. package/src/intercom/live-intercom.ts +0 -209
  741. package/src/intercom/nested-result-tree.ts +0 -213
  742. package/src/intercom/result-delivery.ts +0 -56
  743. package/src/intercom/result-intercom.ts +0 -308
  744. package/src/pi-intercom/bridge-ask.ts +0 -64
  745. package/src/pi-intercom/bridge-broadcast.ts +0 -70
  746. package/src/pi-intercom/bridge-catalog.ts +0 -489
  747. package/src/pi-intercom/bridge-control.ts +0 -179
  748. package/src/pi-intercom/bridge-groups.ts +0 -169
  749. package/src/pi-intercom/bridge-launch-journal.ts +0 -122
  750. package/src/pi-intercom/bridge-launch-policy.ts +0 -190
  751. package/src/pi-intercom/bridge-launch.ts +0 -506
  752. package/src/pi-intercom/bridge-operations.ts +0 -169
  753. package/src/pi-intercom/bridge-rpc-process.ts +0 -330
  754. package/src/pi-intercom/interview.ts +0 -295
  755. package/src/pi-intercom/native-control-auth.ts +0 -89
  756. package/src/pi-intercom/native-control-protocol.ts +0 -180
  757. package/src/pi-intercom/native-control.ts +0 -160
  758. package/src/pi-intercom/peer-awareness.ts +0 -84
  759. package/src/pi-intercom/saved-transcript.ts +0 -175
  760. package/src/pi-intercom/subagent-events.ts +0 -299
  761. package/src/pi-intercom/subagent-live-events.ts +0 -236
  762. package/src/pi-intercom/supervisor.ts +0 -362
  763. package/src/pi-intercom/topic-actions.ts +0 -243
  764. package/src/pi-intercom/topics.ts +0 -271
  765. package/src/pi-intercom/transcript.ts +0 -226
  766. package/src/pi-intercom/ui/compose-paste.ts +0 -109
  767. package/src/pi-intercom/ui/compose.ts +0 -305
  768. package/src/pi-intercom/ui/inline-message.ts +0 -110
  769. package/src/pi-intercom/ui/message-renderers.ts +0 -182
  770. package/src/pi-intercom/ui/overlay.ts +0 -238
  771. package/src/pi-intercom/ui/session-list.ts +0 -222
  772. package/src/pi-intercom/ui/tool-renderers.ts +0 -148
  773. package/src/pi-intercom/ui/topic-view.ts +0 -107
  774. package/src/runs/background/async-chain-plan.ts +0 -451
  775. package/src/runs/background/async-control.ts +0 -219
  776. package/src/runs/background/async-execution.ts +0 -227
  777. package/src/runs/background/async-job-admission.ts +0 -54
  778. package/src/runs/background/async-job-projection.ts +0 -225
  779. package/src/runs/background/async-job-tracker.ts +0 -441
  780. package/src/runs/background/async-launch.ts +0 -319
  781. package/src/runs/background/async-plan.ts +0 -285
  782. package/src/runs/background/async-result-file.ts +0 -104
  783. package/src/runs/background/async-resume.ts +0 -386
  784. package/src/runs/background/async-run-discovery.ts +0 -264
  785. package/src/runs/background/async-run-location.ts +0 -194
  786. package/src/runs/background/async-run-record.ts +0 -14
  787. package/src/runs/background/async-run-repair.ts +0 -307
  788. package/src/runs/background/async-run-summary.ts +0 -71
  789. package/src/runs/background/async-single-plan.ts +0 -168
  790. package/src/runs/background/async-status-projection.ts +0 -188
  791. package/src/runs/background/async-status-render.ts +0 -164
  792. package/src/runs/background/async-status-validation.ts +0 -238
  793. package/src/runs/background/async-status.ts +0 -9
  794. package/src/runs/background/async-value.ts +0 -29
  795. package/src/runs/background/completion-dedupe.ts +0 -65
  796. package/src/runs/background/completion-delivery.ts +0 -321
  797. package/src/runs/background/completion-receipts.ts +0 -309
  798. package/src/runs/background/legacy-status-acceptance.ts +0 -38
  799. package/src/runs/background/notify.ts +0 -174
  800. package/src/runs/background/parallel-groups.ts +0 -102
  801. package/src/runs/background/result-payload.ts +0 -268
  802. package/src/runs/background/result-watcher.ts +0 -520
  803. package/src/runs/background/run-id-resolver.ts +0 -138
  804. package/src/runs/background/run-schemas.ts +0 -240
  805. package/src/runs/background/run-status-contracts.ts +0 -46
  806. package/src/runs/background/run-status-render.ts +0 -364
  807. package/src/runs/background/run-status.ts +0 -366
  808. package/src/runs/background/runner-attempt-output.ts +0 -281
  809. package/src/runs/background/runner-attempt.ts +0 -354
  810. package/src/runs/background/runner-child-executor.ts +0 -232
  811. package/src/runs/background/runner-child-observer.ts +0 -278
  812. package/src/runs/background/runner-completion-summary.ts +0 -106
  813. package/src/runs/background/runner-completion.ts +0 -274
  814. package/src/runs/background/runner-config.ts +0 -52
  815. package/src/runs/background/runner-contract.ts +0 -51
  816. package/src/runs/background/runner-dynamic.ts +0 -185
  817. package/src/runs/background/runner-finalization.ts +0 -203
  818. package/src/runs/background/runner-graph.ts +0 -91
  819. package/src/runs/background/runner-initial-status.ts +0 -72
  820. package/src/runs/background/runner-lifecycle.ts +0 -159
  821. package/src/runs/background/runner-monitor.ts +0 -401
  822. package/src/runs/background/runner-parallel.ts +0 -279
  823. package/src/runs/background/runner-prepare-step.ts +0 -128
  824. package/src/runs/background/runner-reporting.ts +0 -192
  825. package/src/runs/background/runner-status.ts +0 -220
  826. package/src/runs/background/runner-step-output.ts +0 -156
  827. package/src/runs/background/runner-step-record.ts +0 -76
  828. package/src/runs/background/runner-step.ts +0 -150
  829. package/src/runs/background/runner-streaming.ts +0 -220
  830. package/src/runs/background/runner-workflow.ts +0 -284
  831. package/src/runs/background/stale-run-reconciler.ts +0 -312
  832. package/src/runs/background/subagent-runner-launcher.ts +0 -88
  833. package/src/runs/background/subagent-runner.ts +0 -85
  834. package/src/runs/background/top-level-async.ts +0 -15
  835. package/src/runs/foreground/chain-clarify.ts +0 -505
  836. package/src/runs/foreground/clarification-draft.ts +0 -92
  837. package/src/runs/foreground/clarify-contracts.ts +0 -33
  838. package/src/runs/foreground/clarify-invocation.ts +0 -204
  839. package/src/runs/foreground/clarify-text-editor.ts +0 -229
  840. package/src/runs/foreground/clarify-view.ts +0 -222
  841. package/src/runs/foreground/execution-input.ts +0 -401
  842. package/src/runs/foreground/execution-routing.ts +0 -41
  843. package/src/runs/foreground/execution-timeout.ts +0 -92
  844. package/src/runs/foreground/foreground-control.ts +0 -342
  845. package/src/runs/foreground/foreground-memory.ts +0 -132
  846. package/src/runs/foreground/invocation-context.ts +0 -88
  847. package/src/runs/foreground/invocation-execution.ts +0 -465
  848. package/src/runs/foreground/invocation-expansion.ts +0 -58
  849. package/src/runs/foreground/management-actions.ts +0 -360
  850. package/src/runs/foreground/nested-control.ts +0 -248
  851. package/src/runs/foreground/question-continuation.ts +0 -112
  852. package/src/runs/foreground/question-control.ts +0 -309
  853. package/src/runs/foreground/resume-target.ts +0 -330
  854. package/src/runs/foreground/revival-launch-policy.ts +0 -112
  855. package/src/runs/foreground/run-async-path.ts +0 -327
  856. package/src/runs/foreground/run-interrupt.ts +0 -202
  857. package/src/runs/foreground/run-nudge.ts +0 -355
  858. package/src/runs/foreground/saved-revival.ts +0 -356
  859. package/src/runs/foreground/subagent-executor.ts +0 -203
  860. package/src/runs/foreground/subagent-params.ts +0 -392
  861. package/src/runs/foreground/wait-observation.ts +0 -160
  862. package/src/runs/foreground/wait-registration.ts +0 -18
  863. package/src/runs/foreground/wait-run.ts +0 -366
  864. package/src/runs/shared/acceptance-contract.ts +0 -458
  865. package/src/runs/shared/acceptance-defaults.ts +0 -1
  866. package/src/runs/shared/acceptance-evaluation.ts +0 -349
  867. package/src/runs/shared/acceptance-finalization.ts +0 -495
  868. package/src/runs/shared/acceptance-outcome.ts +0 -69
  869. package/src/runs/shared/acceptance-reports.ts +0 -246
  870. package/src/runs/shared/acceptance-submission.ts +0 -251
  871. package/src/runs/shared/acceptance-verification.ts +0 -118
  872. package/src/runs/shared/acceptance.ts +0 -31
  873. package/src/runs/shared/chain-outputs.ts +0 -206
  874. package/src/runs/shared/child-attempt-types.ts +0 -118
  875. package/src/runs/shared/child-attempt.ts +0 -387
  876. package/src/runs/shared/child-boundaries.ts +0 -217
  877. package/src/runs/shared/child-context-filter.ts +0 -53
  878. package/src/runs/shared/child-event-observer.ts +0 -496
  879. package/src/runs/shared/child-execution-cwd.ts +0 -162
  880. package/src/runs/shared/child-execution-outcome.ts +0 -103
  881. package/src/runs/shared/child-invocation.ts +0 -74
  882. package/src/runs/shared/child-message-validation.ts +0 -233
  883. package/src/runs/shared/child-native-accounting.ts +0 -154
  884. package/src/runs/shared/child-native-observation.ts +0 -79
  885. package/src/runs/shared/child-observation-spool.ts +0 -193
  886. package/src/runs/shared/child-observations.ts +0 -229
  887. package/src/runs/shared/child-presence.ts +0 -6
  888. package/src/runs/shared/child-route-env.ts +0 -142
  889. package/src/runs/shared/child-stream-observer.ts +0 -302
  890. package/src/runs/shared/child-stream-projection.ts +0 -160
  891. package/src/runs/shared/child-structured-tool.ts +0 -38
  892. package/src/runs/shared/claude-code.ts +0 -216
  893. package/src/runs/shared/claude-model.ts +0 -67
  894. package/src/runs/shared/claude-session.ts +0 -124
  895. package/src/runs/shared/claude-types.ts +0 -31
  896. package/src/runs/shared/completion-guard.ts +0 -44
  897. package/src/runs/shared/control-event-policy.ts +0 -15
  898. package/src/runs/shared/control-notification-owner.ts +0 -20
  899. package/src/runs/shared/dynamic-fanout.ts +0 -459
  900. package/src/runs/shared/dynamic-item.ts +0 -114
  901. package/src/runs/shared/history-index.ts +0 -130
  902. package/src/runs/shared/legacy-async-recovery.ts +0 -153
  903. package/src/runs/shared/legacy-output-recovery.ts +0 -214
  904. package/src/runs/shared/mcp-config-schema.ts +0 -46
  905. package/src/runs/shared/mcp-direct-tool-allowlist.ts +0 -465
  906. package/src/runs/shared/model-fallback.ts +0 -344
  907. package/src/runs/shared/mutating-tool-guard.ts +0 -295
  908. package/src/runs/shared/native-finalization-types.ts +0 -29
  909. package/src/runs/shared/native-finalization.ts +0 -252
  910. package/src/runs/shared/native-usage.ts +0 -396
  911. package/src/runs/shared/nested-control-records.ts +0 -178
  912. package/src/runs/shared/nested-events.ts +0 -45
  913. package/src/runs/shared/nested-path.ts +0 -65
  914. package/src/runs/shared/nested-projection.ts +0 -230
  915. package/src/runs/shared/nested-protocol.ts +0 -67
  916. package/src/runs/shared/nested-registry.ts +0 -273
  917. package/src/runs/shared/nested-render.ts +0 -217
  918. package/src/runs/shared/nested-route.ts +0 -292
  919. package/src/runs/shared/nested-validation.ts +0 -291
  920. package/src/runs/shared/owned-child-evidence.ts +0 -184
  921. package/src/runs/shared/owned-run-list.ts +0 -187
  922. package/src/runs/shared/owned-run-observation.ts +0 -368
  923. package/src/runs/shared/owned-run-progress.ts +0 -172
  924. package/src/runs/shared/owned-run-read-state.ts +0 -7
  925. package/src/runs/shared/owned-run-results.ts +0 -289
  926. package/src/runs/shared/owned-run-status.ts +0 -239
  927. package/src/runs/shared/owned-run-view.ts +0 -65
  928. package/src/runs/shared/owned-workflow-details.ts +0 -24
  929. package/src/runs/shared/owner-output.ts +0 -73
  930. package/src/runs/shared/parallel-utils.ts +0 -93
  931. package/src/runs/shared/parent-receipts.ts +0 -186
  932. package/src/runs/shared/parent-usage.ts +0 -344
  933. package/src/runs/shared/pi-args.ts +0 -280
  934. package/src/runs/shared/pi-launch-input.ts +0 -48
  935. package/src/runs/shared/pi-session-launch.ts +0 -94
  936. package/src/runs/shared/pi-spawn.ts +0 -76
  937. package/src/runs/shared/run-history-queries.ts +0 -195
  938. package/src/runs/shared/run-history.ts +0 -221
  939. package/src/runs/shared/run-id-ambiguity.ts +0 -8
  940. package/src/runs/shared/run-metadata-paths.ts +0 -17
  941. package/src/runs/shared/run-metadata.ts +0 -240
  942. package/src/runs/shared/run-persistence.ts +0 -181
  943. package/src/runs/shared/run-records.ts +0 -19
  944. package/src/runs/shared/run-restoration.ts +0 -455
  945. package/src/runs/shared/run-state-owner.ts +0 -31
  946. package/src/runs/shared/session-cwd-preload.ts +0 -47
  947. package/src/runs/shared/single-output.ts +0 -416
  948. package/src/runs/shared/stable-value.ts +0 -15
  949. package/src/runs/shared/streaming-text.ts +0 -45
  950. package/src/runs/shared/structured-output.ts +0 -98
  951. package/src/runs/shared/subagent-control.ts +0 -352
  952. package/src/runs/shared/subagent-prompt-runtime.ts +0 -119
  953. package/src/runs/shared/subagent-tool-loop-guard.ts +0 -139
  954. package/src/runs/shared/supervisor-question-state.ts +0 -221
  955. package/src/runs/shared/supervisor-questions.ts +0 -410
  956. package/src/runs/shared/workflow-graph.ts +0 -422
  957. package/src/runs/shared/workflow-policy.ts +0 -260
  958. package/src/runs/shared/worktree-contract.ts +0 -29
  959. package/src/runs/shared/worktree-hook.ts +0 -181
  960. package/src/runs/shared/worktree-location.ts +0 -61
  961. package/src/runs/shared/worktree-preservation.ts +0 -10
  962. package/src/runs/shared/worktree-process.ts +0 -132
  963. package/src/runs/shared/worktree.ts +0 -507
  964. package/src/shared/agent-context-policy.ts +0 -215
  965. package/src/shared/agent-dir.ts +0 -15
  966. package/src/shared/artifacts.ts +0 -126
  967. package/src/shared/atomic-json.ts +0 -19
  968. package/src/shared/chain-files.ts +0 -72
  969. package/src/shared/concurrency.ts +0 -27
  970. package/src/shared/content-preview.ts +0 -117
  971. package/src/shared/execution-cwd.ts +0 -39
  972. package/src/shared/file-coalescer.ts +0 -31
  973. package/src/shared/fork-context.ts +0 -72
  974. package/src/shared/formatters.ts +0 -125
  975. package/src/shared/journal-reader.ts +0 -18
  976. package/src/shared/lazy-tools.ts +0 -85
  977. package/src/shared/message-output.ts +0 -146
  978. package/src/shared/model-info.ts +0 -117
  979. package/src/shared/native-import.ts +0 -25
  980. package/src/shared/native-session-loader.ts +0 -13
  981. package/src/shared/native-session.ts +0 -6
  982. package/src/shared/native-tui.ts +0 -20
  983. package/src/shared/native-typebox.ts +0 -29
  984. package/src/shared/prompt-sections.ts +0 -16
  985. package/src/shared/session-entries.ts +0 -108
  986. package/src/shared/session-identity.ts +0 -25
  987. package/src/shared/settings.ts +0 -196
  988. package/src/shared/status-format.ts +0 -232
  989. package/src/shared/stream-json.d.ts +0 -10
  990. package/src/shared/task-file-policy.ts +0 -35
  991. package/src/shared/temp-root.ts +0 -158
  992. package/src/shared/types/acceptance.ts +0 -149
  993. package/src/shared/types/async.ts +0 -247
  994. package/src/shared/types/config.ts +0 -139
  995. package/src/shared/types/details.ts +0 -104
  996. package/src/shared/types/history.ts +0 -217
  997. package/src/shared/types/inputs.ts +0 -4
  998. package/src/shared/types/intercom.ts +0 -57
  999. package/src/shared/types/launch.ts +0 -39
  1000. package/src/shared/types/messages.ts +0 -104
  1001. package/src/shared/types/nested.ts +0 -153
  1002. package/src/shared/types/owned-runs.ts +0 -148
  1003. package/src/shared/types/progress.ts +0 -106
  1004. package/src/shared/types/questions.ts +0 -103
  1005. package/src/shared/types/results.ts +0 -119
  1006. package/src/shared/types/state.ts +0 -56
  1007. package/src/shared/types/usage.ts +0 -36
  1008. package/src/shared/types/workflow.ts +0 -187
  1009. package/src/shared/ui-mode.ts +0 -5
  1010. package/src/shared/utils.ts +0 -148
  1011. package/src/slash/command-discovery.ts +0 -110
  1012. package/src/slash/command-input.ts +0 -232
  1013. package/src/slash/prompt-template-bridge.ts +0 -161
  1014. package/src/slash/prompt-template-contract.ts +0 -152
  1015. package/src/slash/prompt-template-results.ts +0 -189
  1016. package/src/slash/request-protocol.ts +0 -87
  1017. package/src/slash/result-delivery.ts +0 -312
  1018. package/src/slash/saved-chain.ts +0 -115
  1019. package/src/slash/slash-bridge.ts +0 -224
  1020. package/src/slash/slash-commands.ts +0 -195
  1021. package/src/slash/slash-live-state.ts +0 -350
  1022. package/src/tui/action-hints.ts +0 -155
  1023. package/src/tui/activity-lines.ts +0 -40
  1024. package/src/tui/agent-browser.ts +0 -354
  1025. package/src/tui/agent-controls.ts +0 -355
  1026. package/src/tui/agent-conversation.ts +0 -514
  1027. package/src/tui/agent-dock.ts +0 -250
  1028. package/src/tui/agent-history.ts +0 -68
  1029. package/src/tui/agent-model.ts +0 -78
  1030. package/src/tui/agent-picker.ts +0 -325
  1031. package/src/tui/agent-view.ts +0 -403
  1032. package/src/tui/compact-results.ts +0 -342
  1033. package/src/tui/conversation-details.ts +0 -206
  1034. package/src/tui/conversation-frame.ts +0 -184
  1035. package/src/tui/conversation-history.ts +0 -260
  1036. package/src/tui/conversation-menu.ts +0 -119
  1037. package/src/tui/conversation-notices.ts +0 -116
  1038. package/src/tui/conversation-selection.ts +0 -66
  1039. package/src/tui/conversation-viewport.ts +0 -169
  1040. package/src/tui/direction-message.ts +0 -35
  1041. package/src/tui/display.ts +0 -409
  1042. package/src/tui/editor-viewport.ts +0 -19
  1043. package/src/tui/expanded-content.ts +0 -134
  1044. package/src/tui/expanded-multi.ts +0 -264
  1045. package/src/tui/expanded-single.ts +0 -92
  1046. package/src/tui/history-cards.ts +0 -298
  1047. package/src/tui/history-display.ts +0 -334
  1048. package/src/tui/history-json.ts +0 -17
  1049. package/src/tui/history-metadata.ts +0 -177
  1050. package/src/tui/history-record.ts +0 -321
  1051. package/src/tui/history-text.ts +0 -34
  1052. package/src/tui/indexed-history.ts +0 -149
  1053. package/src/tui/nested-widget.ts +0 -192
  1054. package/src/tui/picker-page.ts +0 -80
  1055. package/src/tui/render.ts +0 -104
  1056. package/src/tui/result-facts.ts +0 -99
  1057. package/src/tui/task-observation.ts +0 -96
  1058. package/src/tui/task-store.ts +0 -432
  1059. package/src/tui/text-values.ts +0 -20
  1060. package/src/tui/view-connections.ts +0 -64
  1061. package/src/tui/view-model.ts +0 -181
  1062. package/src/tui/view-persistence.ts +0 -57
  1063. package/src/tui/view-ports.ts +0 -55
  1064. package/src/tui/view-session.ts +0 -42
  1065. package/src/tui/widget-details.ts +0 -220
  1066. package/src/tui/widget-status.ts +0 -331
  1067. package/src/tui/widget.ts +0 -208
  1068. package/src/tui/workflow-labels.ts +0 -340
  1069. 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
- ```