@fitchmultz/pi-subagents 0.49.1 → 0.50.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (999) hide show
  1. package/CHANGELOG.md +23 -1
  2. package/README.md +88 -94
  3. package/dist/agent/contracts.js +122 -0
  4. package/dist/agent/cwd.js +51 -0
  5. package/dist/agent/host.js +82 -0
  6. package/dist/agent/index.js +422 -0
  7. package/dist/agent/journal-tail.js +183 -0
  8. package/dist/agent/launch.js +87 -0
  9. package/dist/agent/legacy.js +141 -0
  10. package/dist/agent/notifications.js +119 -0
  11. package/dist/agent/observe-screen.js +132 -0
  12. package/dist/agent/observe.js +234 -0
  13. package/dist/agent/process.js +173 -0
  14. package/dist/agent/receipts.js +75 -0
  15. package/dist/agent/runner.js +372 -0
  16. package/dist/agent/saved.js +195 -0
  17. package/dist/agent/shell.js +43 -0
  18. package/dist/agent/storage.js +113 -0
  19. package/dist/agent/typebox.js +20 -0
  20. package/dist/agent/usage.js +232 -0
  21. package/dist/agent/view.js +164 -0
  22. package/dist/build-info.js +1 -0
  23. package/dist/index.js +8 -0
  24. package/dist/pi-intercom/bridge-config.js +12 -19
  25. package/dist/pi-intercom/bridge-http.js +1 -2
  26. package/dist/pi-intercom/bridge-mailbox.js +2 -7
  27. package/dist/pi-intercom/bridge-protocol.js +3 -10
  28. package/dist/pi-intercom/bridge-routes.js +15 -186
  29. package/dist/pi-intercom/bridge-session.js +2 -96
  30. package/dist/pi-intercom/bridge.js +12 -35
  31. package/dist/pi-intercom/broker/broker.js +33 -38
  32. package/dist/pi-intercom/broker/client-last.js +48 -0
  33. package/dist/pi-intercom/broker/client.js +41 -1
  34. package/dist/pi-intercom/broker/connection.js +5 -18
  35. package/dist/pi-intercom/broker/last.js +173 -0
  36. package/dist/pi-intercom/broker/paths.js +28 -9
  37. package/dist/pi-intercom/broker/server-connection.js +18 -0
  38. package/dist/pi-intercom/broker/spawn.js +32 -16
  39. package/dist/pi-intercom/broker/targets.js +24 -0
  40. package/dist/pi-intercom/config.js +0 -23
  41. package/dist/pi-intercom/connection.js +30 -70
  42. package/dist/pi-intercom/identity.js +14 -44
  43. package/dist/pi-intercom/inbound-delivery.js +8 -69
  44. package/dist/pi-intercom/inbound-journal.js +3 -68
  45. package/dist/pi-intercom/inbound-record.js +2 -48
  46. package/dist/pi-intercom/inbound.js +6 -53
  47. package/dist/pi-intercom/index.js +8 -47
  48. package/dist/pi-intercom/last-message.js +58 -0
  49. package/dist/pi-intercom/lifecycle.js +8 -33
  50. package/dist/pi-intercom/message-format.js +1 -32
  51. package/dist/pi-intercom/outbound.js +9 -1
  52. package/dist/pi-intercom/reply-tracker.js +2 -12
  53. package/dist/pi-intercom/reply-wait.js +16 -107
  54. package/dist/pi-intercom/runtime-types.js +0 -1
  55. package/dist/pi-intercom/session-events.js +5 -21
  56. package/dist/pi-intercom/tool-arguments.js +4 -0
  57. package/dist/pi-intercom/tool-registration.js +5 -86
  58. package/dist/pi-intercom/tool-schemas.js +12 -52
  59. package/dist/pi-intercom/tools.js +55 -29
  60. package/dist/pi-intercom/types.js +10 -3
  61. package/dist/pi-intercom/ui/session-format.js +3 -3
  62. package/dist/shared/journal-projections.js +0 -31
  63. package/dist/shared/types.js +0 -195
  64. package/docs/code-quality.md +4 -3
  65. package/docs/development.md +57 -95
  66. package/docs/intercom-bridge.md +206 -415
  67. package/docs/intercom.md +142 -593
  68. package/docs/performance.md +109 -192
  69. package/docs/reference.md +139 -1452
  70. package/package.json +12 -19
  71. package/scripts/build.mjs +1 -1
  72. package/scripts/intercom-bridge-credentials.mjs +1 -1
  73. package/scripts/intercom-remote.mjs +55 -272
  74. package/scripts/local-install-smoke.mjs +3 -1
  75. package/scripts/measure-size.mjs +64 -0
  76. package/scripts/native-package-smoke.mjs +267 -109
  77. package/scripts/package-smoke.mjs +120 -363
  78. package/scripts/real-pi-processes.mjs +6 -38
  79. package/scripts/real-pi-smoke.mjs +153 -144
  80. package/scripts/run-tests.mjs +4 -3
  81. package/skills/pi-intercom/SKILL.md +53 -107
  82. package/skills/pi-subagents/SKILL.md +45 -59
  83. package/src/agent/contracts.ts +144 -0
  84. package/src/agent/cwd.ts +69 -0
  85. package/src/agent/host.ts +82 -0
  86. package/src/agent/index.ts +486 -0
  87. package/src/agent/journal-tail.ts +184 -0
  88. package/src/agent/launch.ts +112 -0
  89. package/src/agent/legacy.ts +167 -0
  90. package/src/agent/notifications.ts +131 -0
  91. package/src/agent/observe-screen.ts +167 -0
  92. package/src/agent/observe.ts +240 -0
  93. package/src/agent/process.ts +179 -0
  94. package/src/agent/receipts.ts +88 -0
  95. package/src/agent/runner.ts +417 -0
  96. package/src/agent/saved.ts +220 -0
  97. package/src/agent/shell.ts +56 -0
  98. package/src/agent/storage.ts +123 -0
  99. package/src/agent/typebox.ts +17 -0
  100. package/src/agent/usage.ts +263 -0
  101. package/src/agent/view.ts +246 -0
  102. package/src/index.ts +10 -0
  103. package/src/pi-intercom/bridge-config.ts +13 -24
  104. package/src/pi-intercom/bridge-http.ts +1 -2
  105. package/src/pi-intercom/bridge-mailbox.ts +8 -8
  106. package/src/pi-intercom/bridge-protocol.ts +7 -11
  107. package/src/pi-intercom/bridge-routes.ts +29 -277
  108. package/src/pi-intercom/bridge-session.ts +3 -114
  109. package/src/pi-intercom/bridge.ts +12 -35
  110. package/src/pi-intercom/broker/broker.ts +39 -54
  111. package/src/pi-intercom/broker/client-last.ts +65 -0
  112. package/src/pi-intercom/broker/client.ts +45 -3
  113. package/src/pi-intercom/broker/connection.ts +5 -17
  114. package/src/pi-intercom/broker/last.ts +222 -0
  115. package/src/pi-intercom/broker/paths.ts +31 -9
  116. package/src/pi-intercom/broker/server-connection.ts +38 -0
  117. package/src/pi-intercom/broker/spawn.ts +44 -16
  118. package/src/pi-intercom/broker/targets.ts +42 -0
  119. package/src/pi-intercom/config.ts +0 -27
  120. package/src/pi-intercom/connection.ts +41 -84
  121. package/src/pi-intercom/identity.ts +21 -49
  122. package/src/pi-intercom/inbound-delivery.ts +10 -93
  123. package/src/pi-intercom/inbound-journal.ts +4 -81
  124. package/src/pi-intercom/inbound-record.ts +2 -61
  125. package/src/pi-intercom/inbound.ts +7 -69
  126. package/src/pi-intercom/index.ts +10 -49
  127. package/src/pi-intercom/last-message.ts +73 -0
  128. package/src/pi-intercom/lifecycle.ts +14 -41
  129. package/src/pi-intercom/message-format.ts +1 -34
  130. package/src/pi-intercom/outbound.ts +16 -1
  131. package/src/pi-intercom/reply-tracker.ts +2 -19
  132. package/src/pi-intercom/reply-wait.ts +21 -128
  133. package/src/pi-intercom/runtime-types.ts +5 -58
  134. package/src/pi-intercom/session-events.ts +7 -35
  135. package/src/pi-intercom/tool-arguments.ts +6 -0
  136. package/src/pi-intercom/tool-registration.ts +9 -109
  137. package/src/pi-intercom/tool-schemas.ts +17 -80
  138. package/src/pi-intercom/tools.ts +58 -44
  139. package/src/pi-intercom/transport.ts +1 -0
  140. package/src/pi-intercom/types.ts +45 -6
  141. package/src/pi-intercom/ui/session-format.ts +3 -3
  142. package/src/shared/journal-projections.ts +0 -35
  143. package/src/shared/post-exit-stdio-guard.ts +7 -1
  144. package/src/shared/types.ts +0 -257
  145. package/agents/context-builder.md +0 -115
  146. package/agents/debugger.md +0 -58
  147. package/agents/delegate.md +0 -14
  148. package/agents/fixer.md +0 -40
  149. package/agents/oracle.md +0 -82
  150. package/agents/planner.md +0 -83
  151. package/agents/researcher.md +0 -60
  152. package/agents/reviewer-claude.md +0 -78
  153. package/agents/reviewer-gpt.md +0 -78
  154. package/agents/reviewer-ponytail.md +0 -92
  155. package/agents/reviewer-security.md +0 -92
  156. package/agents/reviewer.md +0 -78
  157. package/agents/scout.md +0 -77
  158. package/agents/ui-designer.md +0 -58
  159. package/agents/watcher.md +0 -27
  160. package/agents/worker.md +0 -52
  161. package/agents/writer.md +0 -39
  162. package/dist/agents/agent-defaults.js +0 -9
  163. package/dist/agents/agent-definition.js +0 -196
  164. package/dist/agents/agent-management.js +0 -88
  165. package/dist/agents/agent-scope.js +0 -9
  166. package/dist/agents/agent-selection.js +0 -13
  167. package/dist/agents/agent-serializer.js +0 -88
  168. package/dist/agents/agents.js +0 -111
  169. package/dist/agents/builtin-overrides.js +0 -218
  170. package/dist/agents/chain-serializer.js +0 -3
  171. package/dist/agents/config-values.js +0 -52
  172. package/dist/agents/discovery-paths.js +0 -91
  173. package/dist/agents/frontmatter.js +0 -31
  174. package/dist/agents/identity.js +0 -46
  175. package/dist/agents/json-chain.js +0 -254
  176. package/dist/agents/management-config.js +0 -332
  177. package/dist/agents/management-format.js +0 -231
  178. package/dist/agents/management-persistence.js +0 -287
  179. package/dist/agents/management-targets.js +0 -136
  180. package/dist/agents/management-warnings.js +0 -81
  181. package/dist/agents/markdown-chain.js +0 -210
  182. package/dist/agents/package-agents.js +0 -154
  183. package/dist/agents/skill-files.js +0 -157
  184. package/dist/agents/skill-search-paths.js +0 -246
  185. package/dist/agents/skill-types.js +0 -1
  186. package/dist/agents/skills.js +0 -125
  187. package/dist/extension/acceptance-schema.js +0 -55
  188. package/dist/extension/build-info.js +0 -1
  189. package/dist/extension/chain-schema.js +0 -196
  190. package/dist/extension/child-runtime.js +0 -237
  191. package/dist/extension/compact-tools.js +0 -183
  192. package/dist/extension/config-schema.js +0 -29
  193. package/dist/extension/config.js +0 -38
  194. package/dist/extension/control-notice-schema.js +0 -37
  195. package/dist/extension/control-notices.js +0 -36
  196. package/dist/extension/delegation-bridges.js +0 -43
  197. package/dist/extension/doctor.js +0 -166
  198. package/dist/extension/everyday-schemas.js +0 -207
  199. package/dist/extension/fanout-child.js +0 -25
  200. package/dist/extension/index.js +0 -28
  201. package/dist/extension/message-renderers.js +0 -225
  202. package/dist/extension/nested-control-inbox.js +0 -154
  203. package/dist/extension/parent-runtime.js +0 -339
  204. package/dist/extension/primary-tool.js +0 -69
  205. package/dist/extension/result-snapshot.js +0 -4
  206. package/dist/extension/runtime-reload.js +0 -62
  207. package/dist/extension/runtime-storage.js +0 -43
  208. package/dist/extension/schema-overrides.js +0 -75
  209. package/dist/extension/schemas.js +0 -345
  210. package/dist/extension/tool-input.js +0 -35
  211. package/dist/extension/tool-result.js +0 -29
  212. package/dist/history/answer-texts.js +0 -57
  213. package/dist/history/canonical-result.js +0 -114
  214. package/dist/history/canonical-selection.js +0 -40
  215. package/dist/history/database-generation.js +0 -82
  216. package/dist/history/database.js +0 -96
  217. package/dist/history/entry-ingestion.js +0 -61
  218. package/dist/history/index.js +0 -344
  219. package/dist/history/ingest.js +0 -314
  220. package/dist/history/output-digests.js +0 -40
  221. package/dist/history/preview.js +0 -210
  222. package/dist/history/prune.js +0 -33
  223. package/dist/history/queries.js +0 -81
  224. package/dist/history/query-scope.js +0 -190
  225. package/dist/history/rows.js +0 -77
  226. package/dist/history/run-projection.js +0 -136
  227. package/dist/history/run-queries.js +0 -153
  228. package/dist/history/schema.js +0 -31
  229. package/dist/history/search-queries.js +0 -169
  230. package/dist/history/selected-record.js +0 -108
  231. package/dist/history/source-file.js +0 -45
  232. package/dist/history/source-watches.js +0 -141
  233. package/dist/history/store.js +0 -243
  234. package/dist/history/text-chunks.js +0 -168
  235. package/dist/history/text.js +0 -35
  236. package/dist/history/transcript-queries.js +0 -183
  237. package/dist/history/types.js +0 -8
  238. package/dist/history/values.js +0 -36
  239. package/dist/history/wire-inputs.js +0 -122
  240. package/dist/history/wire-models.js +0 -38
  241. package/dist/history/worker-runtime.js +0 -441
  242. package/dist/history/worker.js +0 -91
  243. package/dist/intercom/intercom-bridge.js +0 -140
  244. package/dist/intercom/live-intercom.js +0 -151
  245. package/dist/intercom/nested-result-tree.js +0 -163
  246. package/dist/intercom/result-delivery.js +0 -40
  247. package/dist/intercom/result-intercom.js +0 -216
  248. package/dist/pi-intercom/bridge-ask.js +0 -57
  249. package/dist/pi-intercom/bridge-broadcast.js +0 -60
  250. package/dist/pi-intercom/bridge-catalog.js +0 -372
  251. package/dist/pi-intercom/bridge-control.js +0 -104
  252. package/dist/pi-intercom/bridge-groups.js +0 -135
  253. package/dist/pi-intercom/bridge-launch-journal.js +0 -84
  254. package/dist/pi-intercom/bridge-launch-policy.js +0 -154
  255. package/dist/pi-intercom/bridge-launch.js +0 -327
  256. package/dist/pi-intercom/bridge-operations.js +0 -127
  257. package/dist/pi-intercom/bridge-rpc-process.js +0 -292
  258. package/dist/pi-intercom/interview.js +0 -236
  259. package/dist/pi-intercom/native-control-auth.js +0 -80
  260. package/dist/pi-intercom/native-control-protocol.js +0 -111
  261. package/dist/pi-intercom/native-control.js +0 -130
  262. package/dist/pi-intercom/peer-awareness.js +0 -66
  263. package/dist/pi-intercom/saved-transcript.js +0 -135
  264. package/dist/pi-intercom/subagent-events.js +0 -238
  265. package/dist/pi-intercom/subagent-live-events.js +0 -175
  266. package/dist/pi-intercom/supervisor.js +0 -282
  267. package/dist/pi-intercom/topic-actions.js +0 -177
  268. package/dist/pi-intercom/topics.js +0 -242
  269. package/dist/pi-intercom/transcript.js +0 -175
  270. package/dist/pi-intercom/ui/compose-paste.js +0 -93
  271. package/dist/pi-intercom/ui/compose.js +0 -247
  272. package/dist/pi-intercom/ui/inline-message.js +0 -80
  273. package/dist/pi-intercom/ui/message-renderers.js +0 -147
  274. package/dist/pi-intercom/ui/overlay.js +0 -181
  275. package/dist/pi-intercom/ui/session-list.js +0 -157
  276. package/dist/pi-intercom/ui/tool-renderers.js +0 -110
  277. package/dist/pi-intercom/ui/topic-view.js +0 -88
  278. package/dist/runs/background/async-chain-plan.js +0 -265
  279. package/dist/runs/background/async-control.js +0 -171
  280. package/dist/runs/background/async-execution.js +0 -179
  281. package/dist/runs/background/async-job-admission.js +0 -40
  282. package/dist/runs/background/async-job-projection.js +0 -169
  283. package/dist/runs/background/async-job-tracker.js +0 -353
  284. package/dist/runs/background/async-launch.js +0 -216
  285. package/dist/runs/background/async-plan.js +0 -116
  286. package/dist/runs/background/async-result-file.js +0 -82
  287. package/dist/runs/background/async-resume.js +0 -247
  288. package/dist/runs/background/async-run-discovery.js +0 -211
  289. package/dist/runs/background/async-run-location.js +0 -135
  290. package/dist/runs/background/async-run-record.js +0 -1
  291. package/dist/runs/background/async-run-repair.js +0 -223
  292. package/dist/runs/background/async-run-summary.js +0 -1
  293. package/dist/runs/background/async-single-plan.js +0 -105
  294. package/dist/runs/background/async-status-projection.js +0 -155
  295. package/dist/runs/background/async-status-render.js +0 -117
  296. package/dist/runs/background/async-status-validation.js +0 -181
  297. package/dist/runs/background/async-status.js +0 -3
  298. package/dist/runs/background/async-value.js +0 -21
  299. package/dist/runs/background/completion-dedupe.js +0 -42
  300. package/dist/runs/background/completion-delivery.js +0 -251
  301. package/dist/runs/background/completion-receipts.js +0 -237
  302. package/dist/runs/background/legacy-status-acceptance.js +0 -34
  303. package/dist/runs/background/notify.js +0 -111
  304. package/dist/runs/background/parallel-groups.js +0 -72
  305. package/dist/runs/background/result-payload.js +0 -178
  306. package/dist/runs/background/result-watcher.js +0 -435
  307. package/dist/runs/background/run-id-resolver.js +0 -84
  308. package/dist/runs/background/run-schemas.js +0 -189
  309. package/dist/runs/background/run-status-contracts.js +0 -14
  310. package/dist/runs/background/run-status-render.js +0 -270
  311. package/dist/runs/background/run-status.js +0 -274
  312. package/dist/runs/background/runner-attempt-output.js +0 -155
  313. package/dist/runs/background/runner-attempt.js +0 -263
  314. package/dist/runs/background/runner-child-executor.js +0 -166
  315. package/dist/runs/background/runner-child-observer.js +0 -197
  316. package/dist/runs/background/runner-completion-summary.js +0 -71
  317. package/dist/runs/background/runner-completion.js +0 -211
  318. package/dist/runs/background/runner-config.js +0 -1
  319. package/dist/runs/background/runner-contract.js +0 -1
  320. package/dist/runs/background/runner-dynamic.js +0 -121
  321. package/dist/runs/background/runner-finalization.js +0 -149
  322. package/dist/runs/background/runner-graph.js +0 -68
  323. package/dist/runs/background/runner-initial-status.js +0 -60
  324. package/dist/runs/background/runner-lifecycle.js +0 -142
  325. package/dist/runs/background/runner-monitor.js +0 -311
  326. package/dist/runs/background/runner-parallel.js +0 -203
  327. package/dist/runs/background/runner-prepare-step.js +0 -86
  328. package/dist/runs/background/runner-reporting.js +0 -153
  329. package/dist/runs/background/runner-status.js +0 -148
  330. package/dist/runs/background/runner-step-output.js +0 -90
  331. package/dist/runs/background/runner-step-record.js +0 -45
  332. package/dist/runs/background/runner-step.js +0 -112
  333. package/dist/runs/background/runner-streaming.js +0 -173
  334. package/dist/runs/background/runner-workflow.js +0 -213
  335. package/dist/runs/background/stale-run-reconciler.js +0 -198
  336. package/dist/runs/background/subagent-runner-launcher.js +0 -75
  337. package/dist/runs/background/subagent-runner.js +0 -81
  338. package/dist/runs/background/top-level-async.js +0 -6
  339. package/dist/runs/foreground/chain-clarify.js +0 -428
  340. package/dist/runs/foreground/clarification-draft.js +0 -87
  341. package/dist/runs/foreground/clarify-contracts.js +0 -1
  342. package/dist/runs/foreground/clarify-invocation.js +0 -163
  343. package/dist/runs/foreground/clarify-text-editor.js +0 -210
  344. package/dist/runs/foreground/clarify-view.js +0 -167
  345. package/dist/runs/foreground/execution-input.js +0 -296
  346. package/dist/runs/foreground/execution-routing.js +0 -33
  347. package/dist/runs/foreground/execution-timeout.js +0 -81
  348. package/dist/runs/foreground/foreground-control.js +0 -276
  349. package/dist/runs/foreground/foreground-memory.js +0 -99
  350. package/dist/runs/foreground/invocation-context.js +0 -55
  351. package/dist/runs/foreground/invocation-execution.js +0 -331
  352. package/dist/runs/foreground/invocation-expansion.js +0 -48
  353. package/dist/runs/foreground/management-actions.js +0 -295
  354. package/dist/runs/foreground/nested-control.js +0 -179
  355. package/dist/runs/foreground/question-continuation.js +0 -78
  356. package/dist/runs/foreground/question-control.js +0 -193
  357. package/dist/runs/foreground/resume-target.js +0 -221
  358. package/dist/runs/foreground/revival-launch-policy.js +0 -58
  359. package/dist/runs/foreground/run-async-path.js +0 -217
  360. package/dist/runs/foreground/run-interrupt.js +0 -164
  361. package/dist/runs/foreground/run-nudge.js +0 -278
  362. package/dist/runs/foreground/saved-revival.js +0 -251
  363. package/dist/runs/foreground/subagent-executor.js +0 -153
  364. package/dist/runs/foreground/subagent-params.js +0 -202
  365. package/dist/runs/foreground/wait-observation.js +0 -104
  366. package/dist/runs/foreground/wait-registration.js +0 -17
  367. package/dist/runs/foreground/wait-run.js +0 -301
  368. package/dist/runs/shared/acceptance-contract.js +0 -347
  369. package/dist/runs/shared/acceptance-defaults.js +0 -1
  370. package/dist/runs/shared/acceptance-evaluation.js +0 -276
  371. package/dist/runs/shared/acceptance-finalization.js +0 -356
  372. package/dist/runs/shared/acceptance-outcome.js +0 -53
  373. package/dist/runs/shared/acceptance-reports.js +0 -212
  374. package/dist/runs/shared/acceptance-submission.js +0 -167
  375. package/dist/runs/shared/acceptance-verification.js +0 -100
  376. package/dist/runs/shared/acceptance.js +0 -4
  377. package/dist/runs/shared/chain-outputs.js +0 -138
  378. package/dist/runs/shared/child-attempt-types.js +0 -1
  379. package/dist/runs/shared/child-attempt.js +0 -340
  380. package/dist/runs/shared/child-boundaries.js +0 -173
  381. package/dist/runs/shared/child-context-filter.js +0 -44
  382. package/dist/runs/shared/child-event-observer.js +0 -390
  383. package/dist/runs/shared/child-execution-cwd.js +0 -126
  384. package/dist/runs/shared/child-execution-outcome.js +0 -72
  385. package/dist/runs/shared/child-invocation.js +0 -54
  386. package/dist/runs/shared/child-message-validation.js +0 -215
  387. package/dist/runs/shared/child-native-accounting.js +0 -106
  388. package/dist/runs/shared/child-native-observation.js +0 -69
  389. package/dist/runs/shared/child-observation-spool.js +0 -169
  390. package/dist/runs/shared/child-observations.js +0 -195
  391. package/dist/runs/shared/child-presence.js +0 -3
  392. package/dist/runs/shared/child-route-env.js +0 -119
  393. package/dist/runs/shared/child-stream-observer.js +0 -221
  394. package/dist/runs/shared/child-stream-projection.js +0 -137
  395. package/dist/runs/shared/child-structured-tool.js +0 -27
  396. package/dist/runs/shared/claude-code.js +0 -162
  397. package/dist/runs/shared/claude-model.js +0 -42
  398. package/dist/runs/shared/claude-session.js +0 -83
  399. package/dist/runs/shared/claude-types.js +0 -1
  400. package/dist/runs/shared/completion-guard.js +0 -31
  401. package/dist/runs/shared/control-event-policy.js +0 -8
  402. package/dist/runs/shared/control-notification-owner.js +0 -13
  403. package/dist/runs/shared/dynamic-fanout.js +0 -289
  404. package/dist/runs/shared/dynamic-item.js +0 -102
  405. package/dist/runs/shared/history-index.js +0 -98
  406. package/dist/runs/shared/legacy-async-recovery.js +0 -114
  407. package/dist/runs/shared/legacy-output-recovery.js +0 -148
  408. package/dist/runs/shared/mcp-config-schema.js +0 -36
  409. package/dist/runs/shared/mcp-direct-tool-allowlist.js +0 -365
  410. package/dist/runs/shared/model-fallback.js +0 -247
  411. package/dist/runs/shared/mutating-tool-guard.js +0 -210
  412. package/dist/runs/shared/native-finalization-types.js +0 -1
  413. package/dist/runs/shared/native-finalization.js +0 -180
  414. package/dist/runs/shared/native-usage.js +0 -293
  415. package/dist/runs/shared/nested-control-records.js +0 -128
  416. package/dist/runs/shared/nested-events.js +0 -8
  417. package/dist/runs/shared/nested-path.js +0 -52
  418. package/dist/runs/shared/nested-projection.js +0 -155
  419. package/dist/runs/shared/nested-protocol.js +0 -18
  420. package/dist/runs/shared/nested-registry.js +0 -191
  421. package/dist/runs/shared/nested-render.js +0 -156
  422. package/dist/runs/shared/nested-route.js +0 -220
  423. package/dist/runs/shared/nested-validation.js +0 -216
  424. package/dist/runs/shared/owned-child-evidence.js +0 -125
  425. package/dist/runs/shared/owned-run-list.js +0 -146
  426. package/dist/runs/shared/owned-run-observation.js +0 -267
  427. package/dist/runs/shared/owned-run-progress.js +0 -109
  428. package/dist/runs/shared/owned-run-read-state.js +0 -1
  429. package/dist/runs/shared/owned-run-results.js +0 -202
  430. package/dist/runs/shared/owned-run-status.js +0 -180
  431. package/dist/runs/shared/owned-run-view.js +0 -51
  432. package/dist/runs/shared/owned-workflow-details.js +0 -17
  433. package/dist/runs/shared/owner-output.js +0 -43
  434. package/dist/runs/shared/parallel-utils.js +0 -49
  435. package/dist/runs/shared/parent-receipts.js +0 -126
  436. package/dist/runs/shared/parent-usage.js +0 -233
  437. package/dist/runs/shared/pi-args.js +0 -217
  438. package/dist/runs/shared/pi-launch-input.js +0 -1
  439. package/dist/runs/shared/pi-session-launch.js +0 -86
  440. package/dist/runs/shared/pi-spawn.js +0 -66
  441. package/dist/runs/shared/run-history-queries.js +0 -136
  442. package/dist/runs/shared/run-history.js +0 -176
  443. package/dist/runs/shared/run-id-ambiguity.js +0 -4
  444. package/dist/runs/shared/run-metadata-paths.js +0 -14
  445. package/dist/runs/shared/run-metadata.js +0 -158
  446. package/dist/runs/shared/run-persistence.js +0 -131
  447. package/dist/runs/shared/run-records.js +0 -9
  448. package/dist/runs/shared/run-restoration.js +0 -337
  449. package/dist/runs/shared/run-state-owner.js +0 -26
  450. package/dist/runs/shared/session-cwd-preload.js +0 -42
  451. package/dist/runs/shared/single-output.js +0 -297
  452. package/dist/runs/shared/stable-value.js +0 -15
  453. package/dist/runs/shared/streaming-text.js +0 -26
  454. package/dist/runs/shared/structured-output.js +0 -67
  455. package/dist/runs/shared/subagent-control.js +0 -246
  456. package/dist/runs/shared/subagent-prompt-runtime.js +0 -94
  457. package/dist/runs/shared/subagent-tool-loop-guard.js +0 -95
  458. package/dist/runs/shared/supervisor-question-state.js +0 -145
  459. package/dist/runs/shared/supervisor-questions.js +0 -284
  460. package/dist/runs/shared/workflow-graph.js +0 -306
  461. package/dist/runs/shared/workflow-policy.js +0 -157
  462. package/dist/runs/shared/worktree-contract.js +0 -1
  463. package/dist/runs/shared/worktree-hook.js +0 -138
  464. package/dist/runs/shared/worktree-location.js +0 -47
  465. package/dist/runs/shared/worktree-preservation.js +0 -8
  466. package/dist/runs/shared/worktree-process.js +0 -107
  467. package/dist/runs/shared/worktree.js +0 -386
  468. package/dist/shared/agent-context-policy.js +0 -116
  469. package/dist/shared/agent-dir.js +0 -14
  470. package/dist/shared/artifacts.js +0 -114
  471. package/dist/shared/atomic-json.js +0 -16
  472. package/dist/shared/chain-files.js +0 -72
  473. package/dist/shared/concurrency.js +0 -18
  474. package/dist/shared/content-preview.js +0 -115
  475. package/dist/shared/execution-cwd.js +0 -22
  476. package/dist/shared/file-coalescer.js +0 -22
  477. package/dist/shared/fork-context.js +0 -47
  478. package/dist/shared/formatters.js +0 -111
  479. package/dist/shared/journal-reader.js +0 -6
  480. package/dist/shared/lazy-tools.js +0 -43
  481. package/dist/shared/message-output.js +0 -116
  482. package/dist/shared/model-info.js +0 -85
  483. package/dist/shared/native-import.js +0 -20
  484. package/dist/shared/native-session-loader.js +0 -17
  485. package/dist/shared/native-session.js +0 -4
  486. package/dist/shared/native-tui.js +0 -23
  487. package/dist/shared/native-typebox.js +0 -32
  488. package/dist/shared/prompt-sections.js +0 -10
  489. package/dist/shared/session-entries.js +0 -87
  490. package/dist/shared/session-identity.js +0 -16
  491. package/dist/shared/settings.js +0 -121
  492. package/dist/shared/status-format.js +0 -171
  493. package/dist/shared/task-file-policy.js +0 -24
  494. package/dist/shared/temp-root.js +0 -143
  495. package/dist/shared/types/acceptance.js +0 -1
  496. package/dist/shared/types/async.js +0 -1
  497. package/dist/shared/types/config.js +0 -1
  498. package/dist/shared/types/details.js +0 -1
  499. package/dist/shared/types/history.js +0 -1
  500. package/dist/shared/types/inputs.js +0 -1
  501. package/dist/shared/types/intercom.js +0 -1
  502. package/dist/shared/types/launch.js +0 -1
  503. package/dist/shared/types/messages.js +0 -1
  504. package/dist/shared/types/nested.js +0 -1
  505. package/dist/shared/types/owned-runs.js +0 -1
  506. package/dist/shared/types/progress.js +0 -1
  507. package/dist/shared/types/questions.js +0 -1
  508. package/dist/shared/types/results.js +0 -1
  509. package/dist/shared/types/state.js +0 -1
  510. package/dist/shared/types/usage.js +0 -1
  511. package/dist/shared/types/workflow.js +0 -1
  512. package/dist/shared/ui-mode.js +0 -3
  513. package/dist/shared/utils.js +0 -128
  514. package/dist/slash/command-discovery.js +0 -83
  515. package/dist/slash/command-input.js +0 -190
  516. package/dist/slash/prompt-template-bridge.js +0 -122
  517. package/dist/slash/prompt-template-contract.js +0 -77
  518. package/dist/slash/prompt-template-results.js +0 -125
  519. package/dist/slash/request-protocol.js +0 -68
  520. package/dist/slash/result-delivery.js +0 -237
  521. package/dist/slash/saved-chain.js +0 -78
  522. package/dist/slash/slash-bridge.js +0 -150
  523. package/dist/slash/slash-commands.js +0 -136
  524. package/dist/slash/slash-live-state.js +0 -267
  525. package/dist/tui/action-hints.js +0 -103
  526. package/dist/tui/activity-lines.js +0 -32
  527. package/dist/tui/agent-browser.js +0 -290
  528. package/dist/tui/agent-controls.js +0 -289
  529. package/dist/tui/agent-conversation.js +0 -444
  530. package/dist/tui/agent-dock.js +0 -171
  531. package/dist/tui/agent-history.js +0 -50
  532. package/dist/tui/agent-model.js +0 -62
  533. package/dist/tui/agent-picker.js +0 -262
  534. package/dist/tui/agent-view.js +0 -350
  535. package/dist/tui/compact-results.js +0 -193
  536. package/dist/tui/conversation-details.js +0 -190
  537. package/dist/tui/conversation-frame.js +0 -135
  538. package/dist/tui/conversation-history.js +0 -210
  539. package/dist/tui/conversation-menu.js +0 -78
  540. package/dist/tui/conversation-notices.js +0 -79
  541. package/dist/tui/conversation-selection.js +0 -58
  542. package/dist/tui/conversation-viewport.js +0 -129
  543. package/dist/tui/direction-message.js +0 -27
  544. package/dist/tui/display.js +0 -282
  545. package/dist/tui/editor-viewport.js +0 -18
  546. package/dist/tui/expanded-content.js +0 -87
  547. package/dist/tui/expanded-multi.js +0 -170
  548. package/dist/tui/expanded-single.js +0 -65
  549. package/dist/tui/history-cards.js +0 -202
  550. package/dist/tui/history-display.js +0 -238
  551. package/dist/tui/history-json.js +0 -16
  552. package/dist/tui/history-metadata.js +0 -152
  553. package/dist/tui/history-record.js +0 -251
  554. package/dist/tui/history-text.js +0 -34
  555. package/dist/tui/indexed-history.js +0 -116
  556. package/dist/tui/nested-widget.js +0 -120
  557. package/dist/tui/picker-page.js +0 -59
  558. package/dist/tui/render.js +0 -72
  559. package/dist/tui/result-facts.js +0 -64
  560. package/dist/tui/task-observation.js +0 -59
  561. package/dist/tui/task-store.js +0 -366
  562. package/dist/tui/text-values.js +0 -16
  563. package/dist/tui/view-connections.js +0 -47
  564. package/dist/tui/view-model.js +0 -94
  565. package/dist/tui/view-persistence.js +0 -51
  566. package/dist/tui/view-ports.js +0 -1
  567. package/dist/tui/view-session.js +0 -37
  568. package/dist/tui/widget-details.js +0 -144
  569. package/dist/tui/widget-status.js +0 -245
  570. package/dist/tui/widget.js +0 -145
  571. package/dist/tui/workflow-labels.js +0 -223
  572. package/dist/tui/workflow-outcomes.js +0 -124
  573. package/generated/RunValidators.d.ts +0 -28
  574. package/generated/RunValidators.js +0 -2
  575. package/prompts/gather-context-and-clarify.md +0 -14
  576. package/prompts/parallel-cleanup.md +0 -65
  577. package/prompts/parallel-context-build.md +0 -59
  578. package/prompts/parallel-handoff-plan.md +0 -68
  579. package/prompts/parallel-research.md +0 -55
  580. package/prompts/parallel-review.md +0 -61
  581. package/prompts/review-loop.md +0 -44
  582. package/scripts/generate-run-schemas.mjs +0 -210
  583. package/skills/pi-intercom/evals/evals.json +0 -29
  584. package/skills/pi-intercom/evals/trigger-evals.json +0 -47
  585. package/skills/pi-intercom/references/peer-sessions.md +0 -74
  586. package/skills/pi-subagents/evals/evals.json +0 -29
  587. package/skills/pi-subagents/evals/trigger-evals.json +0 -42
  588. package/skills/pi-subagents/references/full-orchestration-guide.md +0 -1005
  589. package/src/agents/agent-defaults.ts +0 -13
  590. package/src/agents/agent-definition.ts +0 -253
  591. package/src/agents/agent-management.ts +0 -120
  592. package/src/agents/agent-scope.ts +0 -11
  593. package/src/agents/agent-selection.ts +0 -22
  594. package/src/agents/agent-serializer.ts +0 -90
  595. package/src/agents/agents.ts +0 -214
  596. package/src/agents/builtin-overrides.ts +0 -297
  597. package/src/agents/chain-serializer.ts +0 -3
  598. package/src/agents/config-values.ts +0 -57
  599. package/src/agents/discovery-paths.ts +0 -134
  600. package/src/agents/frontmatter.ts +0 -39
  601. package/src/agents/identity.ts +0 -61
  602. package/src/agents/json-chain.ts +0 -305
  603. package/src/agents/management-config.ts +0 -342
  604. package/src/agents/management-format.ts +0 -243
  605. package/src/agents/management-persistence.ts +0 -408
  606. package/src/agents/management-targets.ts +0 -260
  607. package/src/agents/management-warnings.ts +0 -115
  608. package/src/agents/markdown-chain.ts +0 -237
  609. package/src/agents/package-agents.ts +0 -231
  610. package/src/agents/skill-files.ts +0 -182
  611. package/src/agents/skill-search-paths.ts +0 -289
  612. package/src/agents/skill-types.ts +0 -31
  613. package/src/agents/skills.ts +0 -179
  614. package/src/extension/acceptance-schema.ts +0 -88
  615. package/src/extension/build-info.ts +0 -2
  616. package/src/extension/chain-schema.ts +0 -276
  617. package/src/extension/child-runtime.ts +0 -302
  618. package/src/extension/compact-tools.ts +0 -271
  619. package/src/extension/config-schema.ts +0 -59
  620. package/src/extension/config.ts +0 -45
  621. package/src/extension/control-notice-schema.ts +0 -55
  622. package/src/extension/control-notices.ts +0 -71
  623. package/src/extension/delegation-bridges.ts +0 -59
  624. package/src/extension/doctor.ts +0 -207
  625. package/src/extension/everyday-schemas.ts +0 -252
  626. package/src/extension/fanout-child.ts +0 -33
  627. package/src/extension/index.ts +0 -31
  628. package/src/extension/message-renderers.ts +0 -334
  629. package/src/extension/nested-control-inbox.ts +0 -196
  630. package/src/extension/parent-runtime.ts +0 -405
  631. package/src/extension/primary-tool.ts +0 -130
  632. package/src/extension/result-snapshot.ts +0 -9
  633. package/src/extension/runtime-reload.ts +0 -72
  634. package/src/extension/runtime-storage.ts +0 -49
  635. package/src/extension/schema-overrides.ts +0 -114
  636. package/src/extension/schemas.ts +0 -477
  637. package/src/extension/tool-input.ts +0 -46
  638. package/src/extension/tool-result.ts +0 -47
  639. package/src/history/answer-texts.ts +0 -74
  640. package/src/history/canonical-result.ts +0 -138
  641. package/src/history/canonical-selection.ts +0 -54
  642. package/src/history/database-generation.ts +0 -86
  643. package/src/history/database.ts +0 -97
  644. package/src/history/entry-ingestion.ts +0 -129
  645. package/src/history/index.ts +0 -434
  646. package/src/history/ingest.ts +0 -387
  647. package/src/history/output-digests.ts +0 -41
  648. package/src/history/preview.ts +0 -235
  649. package/src/history/prune.ts +0 -48
  650. package/src/history/queries.ts +0 -125
  651. package/src/history/query-scope.ts +0 -278
  652. package/src/history/rows.ts +0 -118
  653. package/src/history/run-projection.ts +0 -162
  654. package/src/history/run-queries.ts +0 -199
  655. package/src/history/schema.ts +0 -34
  656. package/src/history/search-queries.ts +0 -223
  657. package/src/history/selected-record.ts +0 -140
  658. package/src/history/source-file.ts +0 -51
  659. package/src/history/source-watches.ts +0 -156
  660. package/src/history/store.ts +0 -332
  661. package/src/history/text-chunks.ts +0 -186
  662. package/src/history/text.ts +0 -43
  663. package/src/history/transcript-queries.ts +0 -257
  664. package/src/history/types.ts +0 -29
  665. package/src/history/values.ts +0 -36
  666. package/src/history/wire-inputs.ts +0 -141
  667. package/src/history/wire-models.ts +0 -51
  668. package/src/history/worker-runtime.ts +0 -502
  669. package/src/history/worker.ts +0 -99
  670. package/src/intercom/intercom-bridge.ts +0 -190
  671. package/src/intercom/live-intercom.ts +0 -209
  672. package/src/intercom/nested-result-tree.ts +0 -213
  673. package/src/intercom/result-delivery.ts +0 -56
  674. package/src/intercom/result-intercom.ts +0 -308
  675. package/src/pi-intercom/bridge-ask.ts +0 -64
  676. package/src/pi-intercom/bridge-broadcast.ts +0 -70
  677. package/src/pi-intercom/bridge-catalog.ts +0 -489
  678. package/src/pi-intercom/bridge-control.ts +0 -179
  679. package/src/pi-intercom/bridge-groups.ts +0 -169
  680. package/src/pi-intercom/bridge-launch-journal.ts +0 -122
  681. package/src/pi-intercom/bridge-launch-policy.ts +0 -190
  682. package/src/pi-intercom/bridge-launch.ts +0 -506
  683. package/src/pi-intercom/bridge-operations.ts +0 -169
  684. package/src/pi-intercom/bridge-rpc-process.ts +0 -330
  685. package/src/pi-intercom/interview.ts +0 -295
  686. package/src/pi-intercom/native-control-auth.ts +0 -89
  687. package/src/pi-intercom/native-control-protocol.ts +0 -180
  688. package/src/pi-intercom/native-control.ts +0 -160
  689. package/src/pi-intercom/peer-awareness.ts +0 -84
  690. package/src/pi-intercom/saved-transcript.ts +0 -175
  691. package/src/pi-intercom/subagent-events.ts +0 -299
  692. package/src/pi-intercom/subagent-live-events.ts +0 -236
  693. package/src/pi-intercom/supervisor.ts +0 -362
  694. package/src/pi-intercom/topic-actions.ts +0 -243
  695. package/src/pi-intercom/topics.ts +0 -271
  696. package/src/pi-intercom/transcript.ts +0 -226
  697. package/src/pi-intercom/ui/compose-paste.ts +0 -109
  698. package/src/pi-intercom/ui/compose.ts +0 -305
  699. package/src/pi-intercom/ui/inline-message.ts +0 -110
  700. package/src/pi-intercom/ui/message-renderers.ts +0 -182
  701. package/src/pi-intercom/ui/overlay.ts +0 -238
  702. package/src/pi-intercom/ui/session-list.ts +0 -222
  703. package/src/pi-intercom/ui/tool-renderers.ts +0 -148
  704. package/src/pi-intercom/ui/topic-view.ts +0 -107
  705. package/src/runs/background/async-chain-plan.ts +0 -451
  706. package/src/runs/background/async-control.ts +0 -219
  707. package/src/runs/background/async-execution.ts +0 -227
  708. package/src/runs/background/async-job-admission.ts +0 -54
  709. package/src/runs/background/async-job-projection.ts +0 -225
  710. package/src/runs/background/async-job-tracker.ts +0 -441
  711. package/src/runs/background/async-launch.ts +0 -319
  712. package/src/runs/background/async-plan.ts +0 -285
  713. package/src/runs/background/async-result-file.ts +0 -104
  714. package/src/runs/background/async-resume.ts +0 -386
  715. package/src/runs/background/async-run-discovery.ts +0 -264
  716. package/src/runs/background/async-run-location.ts +0 -194
  717. package/src/runs/background/async-run-record.ts +0 -14
  718. package/src/runs/background/async-run-repair.ts +0 -307
  719. package/src/runs/background/async-run-summary.ts +0 -71
  720. package/src/runs/background/async-single-plan.ts +0 -168
  721. package/src/runs/background/async-status-projection.ts +0 -188
  722. package/src/runs/background/async-status-render.ts +0 -164
  723. package/src/runs/background/async-status-validation.ts +0 -238
  724. package/src/runs/background/async-status.ts +0 -9
  725. package/src/runs/background/async-value.ts +0 -29
  726. package/src/runs/background/completion-dedupe.ts +0 -65
  727. package/src/runs/background/completion-delivery.ts +0 -321
  728. package/src/runs/background/completion-receipts.ts +0 -309
  729. package/src/runs/background/legacy-status-acceptance.ts +0 -38
  730. package/src/runs/background/notify.ts +0 -174
  731. package/src/runs/background/parallel-groups.ts +0 -102
  732. package/src/runs/background/result-payload.ts +0 -268
  733. package/src/runs/background/result-watcher.ts +0 -520
  734. package/src/runs/background/run-id-resolver.ts +0 -138
  735. package/src/runs/background/run-schemas.ts +0 -240
  736. package/src/runs/background/run-status-contracts.ts +0 -46
  737. package/src/runs/background/run-status-render.ts +0 -364
  738. package/src/runs/background/run-status.ts +0 -366
  739. package/src/runs/background/runner-attempt-output.ts +0 -281
  740. package/src/runs/background/runner-attempt.ts +0 -354
  741. package/src/runs/background/runner-child-executor.ts +0 -232
  742. package/src/runs/background/runner-child-observer.ts +0 -278
  743. package/src/runs/background/runner-completion-summary.ts +0 -106
  744. package/src/runs/background/runner-completion.ts +0 -274
  745. package/src/runs/background/runner-config.ts +0 -52
  746. package/src/runs/background/runner-contract.ts +0 -51
  747. package/src/runs/background/runner-dynamic.ts +0 -185
  748. package/src/runs/background/runner-finalization.ts +0 -203
  749. package/src/runs/background/runner-graph.ts +0 -91
  750. package/src/runs/background/runner-initial-status.ts +0 -72
  751. package/src/runs/background/runner-lifecycle.ts +0 -159
  752. package/src/runs/background/runner-monitor.ts +0 -401
  753. package/src/runs/background/runner-parallel.ts +0 -279
  754. package/src/runs/background/runner-prepare-step.ts +0 -128
  755. package/src/runs/background/runner-reporting.ts +0 -192
  756. package/src/runs/background/runner-status.ts +0 -220
  757. package/src/runs/background/runner-step-output.ts +0 -156
  758. package/src/runs/background/runner-step-record.ts +0 -76
  759. package/src/runs/background/runner-step.ts +0 -150
  760. package/src/runs/background/runner-streaming.ts +0 -220
  761. package/src/runs/background/runner-workflow.ts +0 -284
  762. package/src/runs/background/stale-run-reconciler.ts +0 -312
  763. package/src/runs/background/subagent-runner-launcher.ts +0 -88
  764. package/src/runs/background/subagent-runner.ts +0 -85
  765. package/src/runs/background/top-level-async.ts +0 -15
  766. package/src/runs/foreground/chain-clarify.ts +0 -505
  767. package/src/runs/foreground/clarification-draft.ts +0 -92
  768. package/src/runs/foreground/clarify-contracts.ts +0 -33
  769. package/src/runs/foreground/clarify-invocation.ts +0 -204
  770. package/src/runs/foreground/clarify-text-editor.ts +0 -229
  771. package/src/runs/foreground/clarify-view.ts +0 -222
  772. package/src/runs/foreground/execution-input.ts +0 -401
  773. package/src/runs/foreground/execution-routing.ts +0 -41
  774. package/src/runs/foreground/execution-timeout.ts +0 -92
  775. package/src/runs/foreground/foreground-control.ts +0 -342
  776. package/src/runs/foreground/foreground-memory.ts +0 -132
  777. package/src/runs/foreground/invocation-context.ts +0 -88
  778. package/src/runs/foreground/invocation-execution.ts +0 -465
  779. package/src/runs/foreground/invocation-expansion.ts +0 -58
  780. package/src/runs/foreground/management-actions.ts +0 -360
  781. package/src/runs/foreground/nested-control.ts +0 -248
  782. package/src/runs/foreground/question-continuation.ts +0 -112
  783. package/src/runs/foreground/question-control.ts +0 -309
  784. package/src/runs/foreground/resume-target.ts +0 -330
  785. package/src/runs/foreground/revival-launch-policy.ts +0 -112
  786. package/src/runs/foreground/run-async-path.ts +0 -327
  787. package/src/runs/foreground/run-interrupt.ts +0 -202
  788. package/src/runs/foreground/run-nudge.ts +0 -355
  789. package/src/runs/foreground/saved-revival.ts +0 -356
  790. package/src/runs/foreground/subagent-executor.ts +0 -203
  791. package/src/runs/foreground/subagent-params.ts +0 -392
  792. package/src/runs/foreground/wait-observation.ts +0 -160
  793. package/src/runs/foreground/wait-registration.ts +0 -18
  794. package/src/runs/foreground/wait-run.ts +0 -366
  795. package/src/runs/shared/acceptance-contract.ts +0 -458
  796. package/src/runs/shared/acceptance-defaults.ts +0 -1
  797. package/src/runs/shared/acceptance-evaluation.ts +0 -349
  798. package/src/runs/shared/acceptance-finalization.ts +0 -495
  799. package/src/runs/shared/acceptance-outcome.ts +0 -69
  800. package/src/runs/shared/acceptance-reports.ts +0 -246
  801. package/src/runs/shared/acceptance-submission.ts +0 -251
  802. package/src/runs/shared/acceptance-verification.ts +0 -118
  803. package/src/runs/shared/acceptance.ts +0 -31
  804. package/src/runs/shared/chain-outputs.ts +0 -206
  805. package/src/runs/shared/child-attempt-types.ts +0 -118
  806. package/src/runs/shared/child-attempt.ts +0 -387
  807. package/src/runs/shared/child-boundaries.ts +0 -217
  808. package/src/runs/shared/child-context-filter.ts +0 -53
  809. package/src/runs/shared/child-event-observer.ts +0 -496
  810. package/src/runs/shared/child-execution-cwd.ts +0 -162
  811. package/src/runs/shared/child-execution-outcome.ts +0 -103
  812. package/src/runs/shared/child-invocation.ts +0 -74
  813. package/src/runs/shared/child-message-validation.ts +0 -233
  814. package/src/runs/shared/child-native-accounting.ts +0 -154
  815. package/src/runs/shared/child-native-observation.ts +0 -79
  816. package/src/runs/shared/child-observation-spool.ts +0 -193
  817. package/src/runs/shared/child-observations.ts +0 -229
  818. package/src/runs/shared/child-presence.ts +0 -6
  819. package/src/runs/shared/child-route-env.ts +0 -142
  820. package/src/runs/shared/child-stream-observer.ts +0 -302
  821. package/src/runs/shared/child-stream-projection.ts +0 -160
  822. package/src/runs/shared/child-structured-tool.ts +0 -38
  823. package/src/runs/shared/claude-code.ts +0 -216
  824. package/src/runs/shared/claude-model.ts +0 -67
  825. package/src/runs/shared/claude-session.ts +0 -124
  826. package/src/runs/shared/claude-types.ts +0 -31
  827. package/src/runs/shared/completion-guard.ts +0 -44
  828. package/src/runs/shared/control-event-policy.ts +0 -15
  829. package/src/runs/shared/control-notification-owner.ts +0 -20
  830. package/src/runs/shared/dynamic-fanout.ts +0 -459
  831. package/src/runs/shared/dynamic-item.ts +0 -114
  832. package/src/runs/shared/history-index.ts +0 -130
  833. package/src/runs/shared/legacy-async-recovery.ts +0 -153
  834. package/src/runs/shared/legacy-output-recovery.ts +0 -214
  835. package/src/runs/shared/mcp-config-schema.ts +0 -46
  836. package/src/runs/shared/mcp-direct-tool-allowlist.ts +0 -465
  837. package/src/runs/shared/model-fallback.ts +0 -344
  838. package/src/runs/shared/mutating-tool-guard.ts +0 -295
  839. package/src/runs/shared/native-finalization-types.ts +0 -29
  840. package/src/runs/shared/native-finalization.ts +0 -252
  841. package/src/runs/shared/native-usage.ts +0 -396
  842. package/src/runs/shared/nested-control-records.ts +0 -178
  843. package/src/runs/shared/nested-events.ts +0 -45
  844. package/src/runs/shared/nested-path.ts +0 -65
  845. package/src/runs/shared/nested-projection.ts +0 -230
  846. package/src/runs/shared/nested-protocol.ts +0 -67
  847. package/src/runs/shared/nested-registry.ts +0 -273
  848. package/src/runs/shared/nested-render.ts +0 -217
  849. package/src/runs/shared/nested-route.ts +0 -292
  850. package/src/runs/shared/nested-validation.ts +0 -291
  851. package/src/runs/shared/owned-child-evidence.ts +0 -184
  852. package/src/runs/shared/owned-run-list.ts +0 -187
  853. package/src/runs/shared/owned-run-observation.ts +0 -368
  854. package/src/runs/shared/owned-run-progress.ts +0 -172
  855. package/src/runs/shared/owned-run-read-state.ts +0 -7
  856. package/src/runs/shared/owned-run-results.ts +0 -289
  857. package/src/runs/shared/owned-run-status.ts +0 -239
  858. package/src/runs/shared/owned-run-view.ts +0 -65
  859. package/src/runs/shared/owned-workflow-details.ts +0 -24
  860. package/src/runs/shared/owner-output.ts +0 -73
  861. package/src/runs/shared/parallel-utils.ts +0 -93
  862. package/src/runs/shared/parent-receipts.ts +0 -186
  863. package/src/runs/shared/parent-usage.ts +0 -344
  864. package/src/runs/shared/pi-args.ts +0 -280
  865. package/src/runs/shared/pi-launch-input.ts +0 -48
  866. package/src/runs/shared/pi-session-launch.ts +0 -94
  867. package/src/runs/shared/pi-spawn.ts +0 -76
  868. package/src/runs/shared/run-history-queries.ts +0 -195
  869. package/src/runs/shared/run-history.ts +0 -221
  870. package/src/runs/shared/run-id-ambiguity.ts +0 -8
  871. package/src/runs/shared/run-metadata-paths.ts +0 -17
  872. package/src/runs/shared/run-metadata.ts +0 -240
  873. package/src/runs/shared/run-persistence.ts +0 -181
  874. package/src/runs/shared/run-records.ts +0 -19
  875. package/src/runs/shared/run-restoration.ts +0 -455
  876. package/src/runs/shared/run-state-owner.ts +0 -31
  877. package/src/runs/shared/session-cwd-preload.ts +0 -47
  878. package/src/runs/shared/single-output.ts +0 -416
  879. package/src/runs/shared/stable-value.ts +0 -15
  880. package/src/runs/shared/streaming-text.ts +0 -45
  881. package/src/runs/shared/structured-output.ts +0 -98
  882. package/src/runs/shared/subagent-control.ts +0 -352
  883. package/src/runs/shared/subagent-prompt-runtime.ts +0 -119
  884. package/src/runs/shared/subagent-tool-loop-guard.ts +0 -139
  885. package/src/runs/shared/supervisor-question-state.ts +0 -221
  886. package/src/runs/shared/supervisor-questions.ts +0 -410
  887. package/src/runs/shared/workflow-graph.ts +0 -422
  888. package/src/runs/shared/workflow-policy.ts +0 -260
  889. package/src/runs/shared/worktree-contract.ts +0 -29
  890. package/src/runs/shared/worktree-hook.ts +0 -181
  891. package/src/runs/shared/worktree-location.ts +0 -61
  892. package/src/runs/shared/worktree-preservation.ts +0 -10
  893. package/src/runs/shared/worktree-process.ts +0 -132
  894. package/src/runs/shared/worktree.ts +0 -507
  895. package/src/shared/agent-context-policy.ts +0 -215
  896. package/src/shared/agent-dir.ts +0 -15
  897. package/src/shared/artifacts.ts +0 -126
  898. package/src/shared/atomic-json.ts +0 -19
  899. package/src/shared/chain-files.ts +0 -72
  900. package/src/shared/concurrency.ts +0 -27
  901. package/src/shared/content-preview.ts +0 -117
  902. package/src/shared/execution-cwd.ts +0 -39
  903. package/src/shared/file-coalescer.ts +0 -31
  904. package/src/shared/fork-context.ts +0 -72
  905. package/src/shared/formatters.ts +0 -125
  906. package/src/shared/journal-reader.ts +0 -18
  907. package/src/shared/lazy-tools.ts +0 -85
  908. package/src/shared/message-output.ts +0 -146
  909. package/src/shared/model-info.ts +0 -117
  910. package/src/shared/native-import.ts +0 -25
  911. package/src/shared/native-session-loader.ts +0 -13
  912. package/src/shared/native-session.ts +0 -6
  913. package/src/shared/native-tui.ts +0 -20
  914. package/src/shared/native-typebox.ts +0 -29
  915. package/src/shared/prompt-sections.ts +0 -16
  916. package/src/shared/session-entries.ts +0 -108
  917. package/src/shared/session-identity.ts +0 -25
  918. package/src/shared/settings.ts +0 -196
  919. package/src/shared/status-format.ts +0 -232
  920. package/src/shared/task-file-policy.ts +0 -35
  921. package/src/shared/temp-root.ts +0 -158
  922. package/src/shared/types/acceptance.ts +0 -149
  923. package/src/shared/types/async.ts +0 -247
  924. package/src/shared/types/config.ts +0 -139
  925. package/src/shared/types/details.ts +0 -104
  926. package/src/shared/types/history.ts +0 -217
  927. package/src/shared/types/inputs.ts +0 -4
  928. package/src/shared/types/intercom.ts +0 -57
  929. package/src/shared/types/launch.ts +0 -39
  930. package/src/shared/types/messages.ts +0 -104
  931. package/src/shared/types/nested.ts +0 -153
  932. package/src/shared/types/owned-runs.ts +0 -148
  933. package/src/shared/types/progress.ts +0 -106
  934. package/src/shared/types/questions.ts +0 -103
  935. package/src/shared/types/results.ts +0 -119
  936. package/src/shared/types/state.ts +0 -56
  937. package/src/shared/types/usage.ts +0 -36
  938. package/src/shared/types/workflow.ts +0 -187
  939. package/src/shared/ui-mode.ts +0 -5
  940. package/src/shared/utils.ts +0 -148
  941. package/src/slash/command-discovery.ts +0 -110
  942. package/src/slash/command-input.ts +0 -232
  943. package/src/slash/prompt-template-bridge.ts +0 -161
  944. package/src/slash/prompt-template-contract.ts +0 -152
  945. package/src/slash/prompt-template-results.ts +0 -189
  946. package/src/slash/request-protocol.ts +0 -87
  947. package/src/slash/result-delivery.ts +0 -312
  948. package/src/slash/saved-chain.ts +0 -115
  949. package/src/slash/slash-bridge.ts +0 -224
  950. package/src/slash/slash-commands.ts +0 -195
  951. package/src/slash/slash-live-state.ts +0 -350
  952. package/src/tui/action-hints.ts +0 -155
  953. package/src/tui/activity-lines.ts +0 -40
  954. package/src/tui/agent-browser.ts +0 -354
  955. package/src/tui/agent-controls.ts +0 -355
  956. package/src/tui/agent-conversation.ts +0 -514
  957. package/src/tui/agent-dock.ts +0 -250
  958. package/src/tui/agent-history.ts +0 -68
  959. package/src/tui/agent-model.ts +0 -78
  960. package/src/tui/agent-picker.ts +0 -325
  961. package/src/tui/agent-view.ts +0 -403
  962. package/src/tui/compact-results.ts +0 -342
  963. package/src/tui/conversation-details.ts +0 -206
  964. package/src/tui/conversation-frame.ts +0 -184
  965. package/src/tui/conversation-history.ts +0 -260
  966. package/src/tui/conversation-menu.ts +0 -119
  967. package/src/tui/conversation-notices.ts +0 -116
  968. package/src/tui/conversation-selection.ts +0 -66
  969. package/src/tui/conversation-viewport.ts +0 -169
  970. package/src/tui/direction-message.ts +0 -35
  971. package/src/tui/display.ts +0 -409
  972. package/src/tui/editor-viewport.ts +0 -19
  973. package/src/tui/expanded-content.ts +0 -134
  974. package/src/tui/expanded-multi.ts +0 -264
  975. package/src/tui/expanded-single.ts +0 -92
  976. package/src/tui/history-cards.ts +0 -298
  977. package/src/tui/history-display.ts +0 -334
  978. package/src/tui/history-json.ts +0 -17
  979. package/src/tui/history-metadata.ts +0 -177
  980. package/src/tui/history-record.ts +0 -321
  981. package/src/tui/history-text.ts +0 -34
  982. package/src/tui/indexed-history.ts +0 -149
  983. package/src/tui/nested-widget.ts +0 -192
  984. package/src/tui/picker-page.ts +0 -80
  985. package/src/tui/render.ts +0 -104
  986. package/src/tui/result-facts.ts +0 -99
  987. package/src/tui/task-observation.ts +0 -96
  988. package/src/tui/task-store.ts +0 -432
  989. package/src/tui/text-values.ts +0 -20
  990. package/src/tui/view-connections.ts +0 -64
  991. package/src/tui/view-model.ts +0 -181
  992. package/src/tui/view-persistence.ts +0 -57
  993. package/src/tui/view-ports.ts +0 -55
  994. package/src/tui/view-session.ts +0 -42
  995. package/src/tui/widget-details.ts +0 -220
  996. package/src/tui/widget-status.ts +0 -331
  997. package/src/tui/widget.ts +0 -208
  998. package/src/tui/workflow-labels.ts +0 -340
  999. package/src/tui/workflow-outcomes.ts +0 -150
@@ -6,16 +6,17 @@ export class IntercomLifecycle {
6
6
  sessionId = null;
7
7
  model = "unknown";
8
8
  disposed = true;
9
- started = false;
10
9
  epoch = 0;
11
10
  running = false;
12
11
  activity = 0;
13
12
  tools = new Map();
14
13
  pi;
15
14
  config;
16
- constructor(pi, config) {
15
+ lineage;
16
+ constructor(pi, config, lineage) {
17
17
  this.pi = pi;
18
18
  this.config = config;
19
+ this.lineage = lineage;
19
20
  }
20
21
  get generation() {
21
22
  return this.epoch;
@@ -23,15 +24,11 @@ export class IntercomLifecycle {
23
24
  get currentSessionId() {
24
25
  return this.sessionId;
25
26
  }
26
- get runtimeStarted() {
27
- return this.started;
28
- }
29
27
  get toolCount() {
30
28
  return this.tools.size;
31
29
  }
32
30
  start(ctx) {
33
31
  this.disposed = false;
34
- this.started = true;
35
32
  this.epoch += 1;
36
33
  this.context = ctx;
37
34
  this.sessionId = ctx.sessionManager.getSessionId();
@@ -70,18 +67,6 @@ export class IntercomLifecycle {
70
67
  return null;
71
68
  }
72
69
  }
73
- notify(ctx, message, level, generation = this.epoch) {
74
- const live = this.live(ctx, generation);
75
- if (live?.hasUI !== true) {
76
- return;
77
- }
78
- try {
79
- live.ui.notify(message, level);
80
- }
81
- catch {
82
- // The UI may disappear while an asynchronous overlay settles during shutdown.
83
- }
84
- }
85
70
  isIdle(ctx) {
86
71
  // ponytail: Pi 1.0 has no busy signal during foreign prompt preparation.
87
72
  if (this.running || this.tools.size > 0) {
@@ -115,7 +100,11 @@ export class IntercomLifecycle {
115
100
  this.activity = Date.now();
116
101
  }
117
102
  identity(sessionId) {
118
- return buildPresenceIdentity(this.pi, sessionId);
103
+ return {
104
+ ...buildPresenceIdentity(this.pi, sessionId),
105
+ rootSessionId: this.lineage?.rootSessionId ?? sessionId,
106
+ parentSessionId: this.lineage?.parentSessionId,
107
+ };
119
108
  }
120
109
  status() {
121
110
  const tool = this.tools.values().next().value;
@@ -151,18 +140,4 @@ export class IntercomLifecycle {
151
140
  ...this.health(pendingAsks),
152
141
  };
153
142
  }
154
- targetMatches(to, resolvedTo, brokerId) {
155
- const targets = [
156
- this.sessionId,
157
- brokerId,
158
- this.pi.getSessionName(),
159
- this.sessionId === null ? undefined : this.identity(this.sessionId).name,
160
- ];
161
- return ((resolvedTo !== undefined &&
162
- resolvedTo !== null &&
163
- brokerId !== undefined &&
164
- brokerId !== null &&
165
- resolvedTo === brokerId) ||
166
- targets.some((target) => target?.trim().toLowerCase() === to.trim().toLowerCase()));
167
- }
168
143
  }
@@ -33,37 +33,6 @@ export function previewText(value, maxLength = 72) {
33
33
  }
34
34
  return normalized.length > maxLength ? `${normalized.slice(0, maxLength - 1)}…` : normalized;
35
35
  }
36
- function metadataField(text, pattern) {
37
- return text.match(pattern)?.[1]?.trim();
38
- }
39
- function namedPreview(label, value) {
40
- return value === undefined || value === "" ? undefined : `${label}=${value}`;
41
- }
42
36
  export function pendingAskPreview(message) {
43
- const text = message.content.text;
44
- const normalized = text.replace(/\s+/g, " ").trim();
45
- if (!text.startsWith("Subagent needs a supervisor decision.") &&
46
- !text.startsWith("Subagent requests a structured supervisor interview.")) {
47
- return previewText(normalized, 180) ?? normalized;
48
- }
49
- const run = metadataField(text, /^Run:\s*(.+)$/m);
50
- const agent = metadataField(text, /^Agent:\s*(.+)$/m);
51
- const target = metadataField(text, /^Child intercom target:\s*(.+)$/m);
52
- const body = text
53
- .split(/\n\s*\n/)
54
- .slice(1)
55
- .join(" ")
56
- .replace(/\s+/g, " ")
57
- .trim();
58
- return [
59
- text.startsWith("Subagent requests")
60
- ? "structured supervisor interview"
61
- : "supervisor decision",
62
- namedPreview("run", run),
63
- namedPreview("agent", agent),
64
- namedPreview("target", target),
65
- namedPreview("question", previewText(body, 180)),
66
- ]
67
- .filter((part) => part !== undefined)
68
- .join(" · ");
37
+ return previewText(message.content.text, 180) ?? message.content.text;
69
38
  }
@@ -184,10 +184,18 @@ export class IntercomOutbound {
184
184
  return this.busyAsk(request.to, result);
185
185
  }
186
186
  async prepareAsk(active, to, signal) {
187
- const target = (await resolveConnectedTarget(active, to)) ?? to;
187
+ const target = await resolveConnectedTarget(active, to);
188
188
  if (this.isCancelled(signal)) {
189
189
  return { error: toolError("Cancelled") };
190
190
  }
191
+ if (target === null) {
192
+ return {
193
+ error: toolError(`Ask to "${to}" was not sent: connected session not found.`, failureDetails("delivery_failed", [
194
+ { action: "list" },
195
+ { action: "send", guidance: "Retry with an exact active recipient target." },
196
+ ], { accepted: false, delivered: false })),
197
+ };
198
+ }
191
199
  if (target === active.sessionId) {
192
200
  return { error: toolError("Cannot message the current session") };
193
201
  }
@@ -23,9 +23,6 @@ function pendingSenderOptions(contexts, allContexts = contexts) {
23
23
  .map((context) => `${context.from.name === undefined || context.from.name === "" ? shortSessionId(context.from.id) : context.from.name}: to: ${JSON.stringify(formatSessionTarget(context.from, allSenders))} or replyTo: ${JSON.stringify(context.message.id)}`)
24
24
  .join(", ");
25
25
  }
26
- export function isDurableSupervisorQuestion(message) {
27
- return message.content.text.includes(`Question ID: ${message.id}`);
28
- }
29
26
  function matchingSender(contexts, to) {
30
27
  const tooShort = tooShortSenderTargetMessage(contexts, to);
31
28
  if (tooShort !== null && tooShort !== "") {
@@ -104,7 +101,7 @@ export class ReplyTracker {
104
101
  this.activeAgentContext = null;
105
102
  }
106
103
  expireSender(sessionId) {
107
- const expires = (context) => context.from.id === sessionId && !isDurableSupervisorQuestion(context.message);
104
+ const expires = (context) => context.from.id === sessionId;
108
105
  let expired = 0;
109
106
  for (const [messageId, context] of this.pendingAsks) {
110
107
  if (expires(context)) {
@@ -161,12 +158,6 @@ export class ReplyTracker {
161
158
  markReplied(replyTo) {
162
159
  this.removeContext(replyTo);
163
160
  }
164
- get hasReplyContext() {
165
- return (this.pendingAsks.size > 0 ||
166
- this.pendingTurnContexts.length > 0 ||
167
- this.currentTurnContext !== null ||
168
- this.activeAgentContext !== null);
169
- }
170
161
  listPending(now = Date.now()) {
171
162
  this.pruneExpired(now);
172
163
  return Array.from(this.pendingAsks.values()).sort((a, b) => a.receivedAt - b.receivedAt);
@@ -192,8 +183,7 @@ export class ReplyTracker {
192
183
  }
193
184
  pruneExpired(now) {
194
185
  for (const [messageId, context] of this.pendingAsks) {
195
- if (!isDurableSupervisorQuestion(context.message) &&
196
- now - context.receivedAt > this.askTimeoutMs) {
186
+ if (now - context.receivedAt > this.askTimeoutMs) {
197
187
  this.removeContext(messageId);
198
188
  }
199
189
  }
@@ -1,103 +1,37 @@
1
- import { RECIPIENT_TURN_FAILED_ATTACHMENT } from "./runtime-types.js";
2
1
  import { asError } from "./validation.js";
3
2
  import { AskDeliveryError } from "./tool-results.js";
4
- import { cancelSupervisorQuestion, readQuestionState, saveQuestionAnswer, } from "../runs/shared/supervisor-questions.js";
5
- /** Owns the single blocking wait, abort listener, timeout and durable polling. */
3
+ /** One correlated blocking wait; admitted before send so a fast reply cannot race it. */
6
4
  export class ReplyWait {
7
5
  waiter = null;
8
- pi;
9
6
  lifecycle;
10
7
  timeoutMs;
11
- constructor(pi, lifecycle, timeoutMs) {
12
- this.pi = pi;
8
+ constructor(lifecycle, timeoutMs) {
13
9
  this.lifecycle = lifecycle;
14
10
  this.timeoutMs = timeoutMs;
15
11
  }
16
12
  get waiting() {
17
13
  return this.waiter !== null;
18
14
  }
19
- get durable() {
20
- return this.waiter?.question !== undefined;
21
- }
22
15
  isWaitingFor(id) {
23
16
  return this.waiter?.replyTo === id;
24
17
  }
25
- retarget(id, from) {
26
- if (this.waiter?.replyTo === id) {
27
- this.waiter = { ...this.waiter, from };
28
- }
29
- }
30
- clearRetry(id) {
31
- if (this.waiter?.replyTo === id) {
32
- this.waiter = { ...this.waiter, retryNotification: undefined };
33
- }
34
- }
35
- retry(id, retryNotification) {
36
- if (this.waiter?.replyTo === id) {
37
- this.waiter = { ...this.waiter, retryNotification };
38
- }
39
- }
40
18
  reject(error) {
41
19
  this.waiter?.reject(error);
42
20
  }
43
21
  peerDisconnected(id) {
44
- if (this.waiter?.from === id && !this.waiter.question) {
22
+ if (this.waiter?.from === id) {
45
23
  this.reject(new Error(`Reply peer disconnected before answering: ${id}`));
46
24
  }
47
25
  }
48
26
  receive(sender, message, onMatch) {
49
- const { id: from, name } = sender;
50
27
  const waiter = this.waiter;
51
- if (!waiter) {
52
- return false;
53
- }
54
- const senderTarget = name !== undefined && name !== "" ? name : from;
55
- if ((senderTarget.toLowerCase() !== waiter.from.toLowerCase() && from !== waiter.from) ||
56
- message.replyTo !== waiter.replyTo) {
28
+ if (!waiter || sender.id !== waiter.from || message.replyTo !== waiter.replyTo) {
57
29
  return false;
58
30
  }
59
31
  onMatch();
60
32
  waiter.resolve(message);
61
33
  return true;
62
34
  }
63
- poll(question, replyTo) {
64
- try {
65
- const saved = readQuestionState(question);
66
- if (saved.state === "cancelled") {
67
- this.lifecycle.live()?.abort();
68
- this.reject(new Error("Cancelled"));
69
- return;
70
- }
71
- if (saved.answer) {
72
- this.waiter?.resolve({
73
- id: replyTo,
74
- replyTo,
75
- timestamp: saved.answer.answeredAt,
76
- content: { text: saved.answer.message },
77
- });
78
- }
79
- else {
80
- this.waiter?.retryNotification?.();
81
- }
82
- }
83
- catch (error) {
84
- this.reject(asError(error));
85
- }
86
- }
87
- saveAnswer(question, message) {
88
- if (!question) {
89
- return true;
90
- }
91
- if (message.content.attachments?.some((attachment) => attachment.name === RECIPIENT_TURN_FAILED_ATTACHMENT) === true) {
92
- this.pi.appendEntry("intercom_question_notification_error", {
93
- questionId: question.questionId,
94
- error: message.content.text,
95
- });
96
- return false;
97
- }
98
- saveQuestionAnswer(question, message.content.text);
99
- return true;
100
- }
101
35
  wait(options) {
102
36
  if (this.waiter) {
103
37
  throw new Error("Already waiting for a reply");
@@ -106,54 +40,29 @@ export class ReplyWait {
106
40
  throw new Error("Cancelled");
107
41
  }
108
42
  return new Promise((resolve, reject) => {
109
- const { from, replyTo, signal, question } = options;
110
- const timeout = question
111
- ? undefined
112
- : setTimeout(() => {
113
- this.reject(new Error(`No reply from "${from}" within ${Math.max(1, Math.round(this.timeoutMs / 60000))} minute(s)`));
114
- }, this.timeoutMs);
115
- timeout?.unref();
116
- const poll = question
117
- ? setInterval(() => {
118
- this.poll(question, replyTo);
119
- }, 250)
120
- : undefined;
43
+ const { from, replyTo, signal } = options;
44
+ const timeout = setTimeout(() => {
45
+ this.reject(new Error(`No reply from "${from}" within ${Math.max(1, Math.round(this.timeoutMs / 60000))} minute(s)`));
46
+ }, this.timeoutMs);
47
+ timeout.unref();
121
48
  const cleanup = () => {
122
49
  clearTimeout(timeout);
123
- clearInterval(poll);
124
50
  signal?.removeEventListener("abort", onAbort);
125
51
  if (this.waiter?.replyTo === replyTo) {
126
52
  this.waiter = null;
127
53
  }
128
54
  };
129
55
  const onAbort = () => {
130
- try {
131
- if (question) {
132
- cancelSupervisorQuestion(question);
133
- }
134
- }
135
- finally {
136
- cleanup();
137
- reject(new Error("Cancelled"));
138
- }
56
+ cleanup();
57
+ reject(new Error("Cancelled"));
139
58
  };
140
59
  signal?.addEventListener("abort", onAbort, { once: true });
141
60
  this.waiter = {
142
61
  from,
143
62
  replyTo,
144
- question,
145
63
  resolve: (message) => {
146
- try {
147
- if (!this.saveAnswer(question, message)) {
148
- return;
149
- }
150
- cleanup();
151
- resolve(message);
152
- }
153
- catch (error) {
154
- cleanup();
155
- reject(asError(error));
156
- }
64
+ cleanup();
65
+ resolve(message);
157
66
  },
158
67
  reject: (error) => {
159
68
  cleanup();
@@ -165,9 +74,9 @@ export class ReplyWait {
165
74
  async transact(activeClient, transaction) {
166
75
  const { to, questionId, options, signal, onSent } = transaction;
167
76
  const reply = this.wait({ from: to, replyTo: questionId, signal });
168
- // Delivery may reject before the reply is joined; the transaction owns both branches.
77
+ // A delivery failure may reject before its reply branch is joined.
169
78
  reply.catch(() => {
170
- /* The original error is propagated below after cleanup. */
79
+ // The transaction joins this branch after settling delivery.
171
80
  });
172
81
  try {
173
82
  if (signal?.aborted === true) {
@@ -193,7 +102,7 @@ export class ReplyWait {
193
102
  await reply;
194
103
  }
195
104
  catch {
196
- /* Preserve the delivery failure rather than its cleanup rejection. */
105
+ // Preserve the delivery failure rather than its cleanup rejection.
197
106
  }
198
107
  throw error;
199
108
  }
@@ -1,3 +1,2 @@
1
1
  export const RECIPIENT_TURN_FAILED_ATTACHMENT = "pi-intercom-recipient-turn-failure";
2
2
  export const INBOUND_CHECKPOINT_TYPE = "intercom_delivery";
3
- export const TOPICS_UNAVAILABLE = "Intercom topics are unavailable while an older broker is still running. Direct messaging and active sessions are unchanged. Let its sessions close normally; after it exits, reconnect with the updated package and retry. Nothing was stopped or restarted.";
@@ -1,7 +1,5 @@
1
- import { isDurableSupervisorQuestion } from "./reply-tracker.js";
2
1
  import { RECIPIENT_TURN_FAILED_ATTACHMENT } from "./runtime-types.js";
3
2
  import { getAssistantErrorMessage, inboundIdFromCustomMessage } from "./message-format.js";
4
- import { restoreLazyTools } from "../shared/lazy-tools.js";
5
3
  /** Native phase ordering is centralized here; each resource is cleaned by its owner. */
6
4
  export class IntercomSessionEvents {
7
5
  pi;
@@ -11,30 +9,23 @@ export class IntercomSessionEvents {
11
9
  this.owners = owners;
12
10
  }
13
11
  async start(reason, ctx) {
14
- const { lifecycle, bridges, awareness, connection, topics, delivery } = this.owners;
15
- bridges.start();
12
+ const { lifecycle, connection, delivery } = this.owners;
16
13
  const generation = lifecycle.start(ctx);
17
- awareness?.reset();
18
14
  connection.clearTimers();
19
- topics.start(ctx);
20
- if (reason !== "reload") {
21
- restoreLazyTools(this.pi, ctx, "load_intercom", ["intercom"]);
22
- }
23
15
  await delivery.start(ctx, reason, generation);
24
16
  if (lifecycle.live(ctx, generation)) {
25
17
  connection.start(ctx, generation);
26
18
  }
27
19
  }
28
20
  async shutdown() {
29
- const { bridges, connection, delivery, wait, lifecycle, replies, journal, supervisor } = this.owners;
30
- bridges.stop();
21
+ const { connection, delivery, wait, lifecycle, replies, journal } = this.owners;
31
22
  connection.clearTimers();
32
23
  delivery.clearTimer();
33
24
  wait.reject(new Error("Session shutting down"));
34
25
  // Reload keeps the outgoing runner valid until native handoff completes.
35
26
  await delivery.drain();
36
27
  lifecycle.invalidate();
37
- await Promise.allSettled([connection.shutdown(), bridges.drain(), supervisor?.drain()]);
28
+ await connection.shutdown();
38
29
  delivery.reset();
39
30
  replies.reset();
40
31
  journal.reset();
@@ -65,7 +56,7 @@ export class IntercomSessionEvents {
65
56
  replyTo: context.message.id,
66
57
  attachments: [{ type: "context", name: RECIPIENT_TURN_FAILED_ATTACHMENT, content: error }],
67
58
  });
68
- if (result.delivered && !isDurableSupervisorQuestion(context.message)) {
59
+ if (result.delivered) {
69
60
  journal.retire(context.message.id);
70
61
  }
71
62
  }
@@ -74,7 +65,7 @@ export class IntercomSessionEvents {
74
65
  }
75
66
  }
76
67
  registerSessionBoundaries() {
77
- const { lifecycle, connection, journal, awareness } = this.owners;
68
+ const { lifecycle, connection, journal } = this.owners;
78
69
  this.pi.on("session_start", async (event, ctx) => {
79
70
  await this.start(event.reason, ctx);
80
71
  });
@@ -91,13 +82,6 @@ export class IntercomSessionEvents {
91
82
  if (lifecycle.live(ctx)) {
92
83
  journal.reconcileConsumed(ctx, true);
93
84
  }
94
- journal.reconcileTools();
95
- });
96
- this.pi.on("session_compact", () => {
97
- journal.reconcileTools();
98
- });
99
- this.pi.on("before_agent_start", async (event, ctx) => {
100
- await awareness?.beforeStart(event, ctx);
101
85
  });
102
86
  this.pi.on("model_select", (event, ctx) => {
103
87
  if (!lifecycle.live(ctx)) {
@@ -57,6 +57,10 @@ function queueError(params) {
57
57
  return;
58
58
  }
59
59
  export function validateIntercomArguments(params) {
60
+ if ((params.entryId !== undefined || params.offset !== undefined || params.limit !== undefined) &&
61
+ params.action !== "last") {
62
+ return toolError("'entryId', 'offset', and 'limit' are only valid for action='last'");
63
+ }
60
64
  if (params.scope !== undefined && params.action !== "list" && params.action !== "status") {
61
65
  return toolError("'scope' is only valid for action='list' or action='status'");
62
66
  }
@@ -1,95 +1,14 @@
1
- import { Type } from "../shared/native-typebox.js";
2
- import { activateTools } from "../shared/lazy-tools.js";
3
1
  import { throwIfToolError } from "./tool-results.js";
4
- import { intercomSchema, contactSupervisorSchema } from "./tool-schemas.js";
5
- import { renderContactCall, renderContactResult, renderIntercomCall, renderIntercomResult, } from "./ui/tool-renderers.js";
6
- function nativeResult(result) {
7
- const success = throwIfToolError(result);
8
- return { content: [...success.content], details: success.details, isError: false };
9
- }
10
- function registerContact(pi, supervisor) {
11
- pi.registerTool({
12
- name: "contact_supervisor",
13
- label: "Contact Supervisor",
14
- description: "Subagent-only tool for contacting the supervisor agent that delegated this task. Use need_decision only when this child cannot safely continue without a decision, approval, or product/API/scope clarification; this steers the supervisor at its next tool boundary and keeps the child alive for the reply. Use interview_request only when multiple structured answers are all required before safe progress; this also steers and waits. Use progress_update only for a discovery or change the supervisor needs while working; it steers at the next tool boundary without waiting for a reply. Skip starts, redundant status, and routine completion; retain material findings in the final result.",
15
- promptSnippet: "Subagent-only: steer the supervisor for required decisions, structured interviews, or material discoveries needed during active work. Skip routine status and completion messages.",
16
- promptGuidelines: [
17
- "Use contact_supervisor with reason='need_decision' when a subagent cannot safely continue without a decision, approval, or product/API/scope clarification; it steers the supervisor and waits for the reply.",
18
- "Use contact_supervisor with reason='interview_request' only when the child cannot safely continue until it receives multiple structured answers in one blocking steered exchange.",
19
- "Use contact_supervisor with reason='progress_update' only for a discovery or change the supervisor needs while working. It steers at the next tool boundary without waiting. Skip starts, redundant narration, and routine completion; keep material findings in the final result.",
20
- "Do not use contact_supervisor for routine completion handoffs; return the final subagent result normally.",
21
- ],
22
- parameters: contactSupervisorSchema,
23
- async execute(_id, params, signal, _update, ctx) {
24
- return nativeResult(await supervisor.execute(params, signal, ctx));
25
- },
26
- renderCall: renderContactCall,
27
- renderResult: renderContactResult,
28
- });
29
- }
30
- function registerLoader(pi) {
31
- pi.registerTool({
32
- name: "load_intercom",
33
- label: "Load Intercom",
34
- description: "Enable local peer coordination: list/check sessions before shared-state work, send or reply to messages, and inspect/publish topics. Does not send a message or check peers itself.",
35
- parameters: Type.Object({}),
36
- async execute() {
37
- if (!pi.getAllTools().some((tool) => tool.name === "intercom" && tool.namespace === undefined)) {
38
- throw new Error("Intercom is excluded from this session.");
39
- }
40
- activateTools(pi, ["intercom"]);
41
- return {
42
- content: [
43
- {
44
- type: "text",
45
- text: "Intercom enabled. Use intercom({action:'list'}) to check peers, or status, pending, reply, send, ask and topics for coordination.",
46
- },
47
- ],
48
- details: {},
49
- };
50
- },
51
- });
52
- }
53
- function registerMessaging(pi, tools) {
2
+ import { intercomSchema } from "./tool-schemas.js";
3
+ export function registerIntercomTools(pi, tools) {
54
4
  pi.registerTool({
55
5
  name: "intercom",
56
- defaultActive: false,
57
6
  label: "Intercom",
58
- description: `Send a message to another pi session running on this machine.
59
- Use this to communicate findings, request help, or coordinate work with other sessions.
60
- Non-blocking send defaults to steer for guidance, answers, corrections, or blockers that may affect active work. Use queue only when delay is intentional; use ask only when this process must remain alive waiting for the reply.
61
-
62
- Usage:
63
- intercom({ action: "list" }) → List sessions in this repository and its worktrees
64
- intercom({ action: "list", scope: "all" }) → List connected sessions across every project
65
- intercom({ action: "send", to: "session-name", message: "..." }) → Send live coordination (defaults to steer)
66
- intercom({ action: "ask", to: "session-name", delivery: "steer", message: "..." }) → Blocking wait only when sender must stay alive
67
- intercom({ action: "reply", message: "..." }) → Reply to the active/single pending ask
68
- intercom({ action: "pending" }) → List unresolved inbound asks
69
- intercom({ action: "status" }) → Show connection status
70
- intercom({ action: "subscribe", topic: "project/work", awaitRelease: true }) → Opt into a topic
71
- intercom({ action: "publish", topic: "project/work", message: "Current self-contained state" }) → Quiet latest state
72
- intercom({ action: "topics" }) → Inspect topics and current resource owners`,
73
- promptSnippet: "Coordinate with local Pi sessions. Non-blocking send defaults to steer for live agent guidance; queue only for intentional delay and ask only for a required blocking reply.",
74
- promptGuidelines: [
75
- "Intercom list/status defaults to the current Git repository and its worktrees. Use scope='all' only when intentionally discovering sessions in other projects.",
76
- "Action='send' defaults to delivery='steer' for agent-to-agent guidance, answers, corrections, blockers, or other context that may affect active work.",
77
- "Use delivery='queue' only when delay is intentional. For routine status, explicitly subscribe/publish topics: updates replace quiet inspectable state outside model context, not passive conversation messages. Topic blockers/decisions and awaited ownership releases interrupt; direct messages always bypass subscriptions.",
78
- "Treat inbound steered messages as supplemental coordination within the active task: incorporate relevant context and continue; replace the task only when the message explicitly says so.",
79
- "Use action='reply' for an active inbound ask. Otherwise respond with send plus steer; use blocking ask only when this process must stay alive and cannot safely continue without the answer.",
80
- ],
7
+ description: "Discover and message connected Pi sessions in your collaboration group; main sessions can also reach other mains, across projects. Use list for unambiguous targets. Send defaults to steer at the next tool boundary; queue defers; passive never wakes the model. Ask waits for a correlated reply; reply answers the active or single pending ask (specify replyTo when ambiguous). Pending lists asks; status shows connection and inbound queue state. Last reads a peer's original completed assistant response without waking it; page using entryId and nextOffset. Broker acceptance is not recipient persistence, consumption, or task completion.",
81
8
  parameters: intercomSchema,
82
9
  async execute(_id, params, signal, _update, ctx) {
83
- return nativeResult(await tools.execute(params, signal, ctx));
10
+ const result = throwIfToolError(await tools.execute(params, signal, ctx));
11
+ return { content: [...result.content], details: result.details };
84
12
  },
85
- renderCall: renderIntercomCall,
86
- renderResult: renderIntercomResult,
87
13
  });
88
14
  }
89
- export function registerIntercomTools(pi, tools, supervisor) {
90
- if (supervisor) {
91
- registerContact(pi, supervisor);
92
- }
93
- registerLoader(pi);
94
- registerMessaging(pi, tools);
95
- }
@@ -1,64 +1,17 @@
1
1
  import { StringEnum } from "@earendil-works/pi-ai";
2
- import { Type } from "../shared/native-typebox.js";
3
- export const contactSupervisorSchema = Type.Object({
4
- reason: StringEnum(["need_decision", "progress_update", "interview_request"], {
5
- description: "Contact reason: 'need_decision' and 'interview_request' steer the supervisor and wait for a reply; 'progress_update' steers a material discovery without waiting for a reply",
6
- }),
7
- message: Type.Optional(Type.String({
8
- description: "Decision request, optional interview note, or meaningful progress update for the supervisor",
9
- })),
10
- interview: Type.Optional(Type.Object({
11
- title: Type.Optional(Type.String()),
12
- description: Type.Optional(Type.String()),
13
- questions: Type.Array(Type.Object({
14
- id: Type.String(),
15
- type: StringEnum(["single", "multi", "text", "image", "info"], {
16
- description: "Question type: single, multi, text, image, or info",
17
- }),
18
- question: Type.String(),
19
- options: Type.Optional(Type.Array(Type.Unknown())),
20
- context: Type.Optional(Type.String()),
21
- })),
22
- }, { description: "Structured interview request for reason='interview_request'" })),
23
- });
2
+ import { Type } from "../agent/typebox.js";
24
3
  export const intercomSchema = Type.Object({
25
- action: StringEnum([
26
- "list",
27
- "send",
28
- "ask",
29
- "reply",
30
- "pending",
31
- "status",
32
- "subscribe",
33
- "unsubscribe",
34
- "publish",
35
- "topics",
36
- ], {
37
- description: "Direct messages: list/send/ask/reply/pending/status. Quiet state: subscribe/unsubscribe/publish/topics.",
4
+ action: StringEnum(["list", "send", "ask", "reply", "pending", "status", "last"], {
5
+ description: "List, send, ask, reply, pending asks, connection status, or last completed assistant response.",
38
6
  }),
39
7
  scope: Type.Optional(StringEnum(["project", "all"], {
40
- description: "For list/status: 'project' (default) shows this Git repository and its worktrees; 'all' includes sessions in other projects.",
8
+ description: "For list/status: 'all' (default) includes every reachable session; 'project' further filters this repository and its worktrees.",
41
9
  })),
42
10
  to: Type.Optional(Type.String({
43
11
  description: "Target session name or ID (for 'send', 'ask', or disambiguating 'reply')",
44
12
  })),
45
- topic: Type.Optional(Type.String({
46
- description: "Exact opt-in topic for subscribe/unsubscribe/publish/topics; no automatic subscriptions.",
47
- })),
48
- event: Type.Optional(StringEnum(["update", "blocker", "decision", "release"], {
49
- description: "Publish: update is quiet current state. Blockers/decisions interrupt subscribers; release interrupts only those awaiting release.",
50
- })),
51
- resource: Type.Optional(Type.String({
52
- description: "Publish: resource this session is using (advisory ownership, not a lock).",
53
- })),
54
- ownership: Type.Optional(StringEnum(["held", "released"], {
55
- description: "Publish: this session's declared resource state. Disconnect never implies released.",
56
- })),
57
- awaitRelease: Type.Optional(Type.Boolean({
58
- description: "Subscribe: interrupt when this topic explicitly releases ownership.",
59
- })),
60
13
  message: Type.Optional(Type.String({
61
- description: "Message for send/ask/reply, or self-contained latest state for publish",
14
+ description: "Message for send/ask/reply",
62
15
  })),
63
16
  attachments: Type.Optional(Type.Array(Type.Object({
64
17
  type: StringEnum(["file", "snippet", "context"]),
@@ -76,6 +29,13 @@ export const intercomSchema = Type.Object({
76
29
  description: "For delivery='queue': 'stack' keeps all messages; 'replace' keeps only the latest undelivered message for the same threadId.",
77
30
  })),
78
31
  threadId: Type.Optional(Type.String({ description: "Stable topic key for queueMode='replace'." })),
32
+ entryId: Type.Optional(Type.String({ description: "Last response entry ID for stable paging." })),
33
+ offset: Type.Optional(Type.Integer({ minimum: 0, description: "Last response character offset (UTF-16)." })),
34
+ limit: Type.Optional(Type.Integer({
35
+ minimum: 1,
36
+ maximum: 16384,
37
+ description: "Last response page size; default/max 16384 characters.",
38
+ })),
79
39
  passive: Type.Optional(Type.Boolean({
80
40
  description: "For action='send' only: legacy alias for delivery='passive'. Discouraged for agent-to-agent messages.",
81
41
  })),