pi-crew 0.9.51 → 0.9.53

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 (611) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/README.md +216 -20
  3. package/dist/build-meta.json +2090 -1638
  4. package/dist/index.mjs +18057 -17119
  5. package/docs/actions-reference.md +431 -1
  6. package/index.ts +39 -10
  7. package/package.json +19 -9
  8. package/schema.json +41 -0
  9. package/scripts/check-bundle-size.mjs +38 -0
  10. package/scripts/test-runner.mjs +11 -1
  11. package/dist/index.mjs.map +0 -7
  12. package/docs/FEATURE_INTAKE.md +0 -126
  13. package/docs/HARNESS.md +0 -87
  14. package/docs/HARNESS_BACKLOG.md +0 -89
  15. package/docs/PROJECT_REVIEW.md +0 -270
  16. package/docs/PROJECT_REVIEW_FIXES.md +0 -342
  17. package/docs/PROJECT_REVIEW_ROUND4.md +0 -156
  18. package/docs/PROJECT_REVIEW_ROUND5.md +0 -86
  19. package/docs/REVIEW-FINDINGS-2026-06 +0 -357
  20. package/docs/REVIEW-FINDINGS-2026-07-CORE.md +0 -139
  21. package/docs/REVIEW-FINDINGS-2026-07.md +0 -125
  22. package/docs/TEST_MATRIX.md +0 -51
  23. package/docs/archive/README.md +0 -91
  24. package/docs/archive/followup-review-round3-2026-05-12.md +0 -342
  25. package/docs/archive/followup-review-round4-2026-05-13.md +0 -107
  26. package/docs/archive/pi-crew-bugs.md +0 -961
  27. package/docs/archive/pi-crew-test-final.md +0 -120
  28. package/docs/archive/pi-crew-test-results.md +0 -260
  29. package/docs/archive/pi-crew-test-round2.md +0 -136
  30. package/docs/archive/pi-crew-test-round4.md +0 -100
  31. package/docs/archive/pi-crew-test-round5.md +0 -70
  32. package/docs/archive/pi-crew-test-round6.md +0 -110
  33. package/docs/archive/pi-crew-v0.5.10-audit-fix-plan.md +0 -60
  34. package/docs/archive/pi-crew-v0.5.11-audit-fix-plan.md +0 -92
  35. package/docs/archive/pi-crew-v0.5.12-audit-fix-plan.md +0 -76
  36. package/docs/archive/pi-crew-v0.5.13-audit-fix-plan.md +0 -75
  37. package/docs/archive/pi-crew-v0.5.14-audit-fix-plan.md +0 -75
  38. package/docs/archive/pi-crew-v0.5.16-audit-fix-plan.md +0 -35
  39. package/docs/archive/pi-crew-v0.5.17-audit-fix-plan.md +0 -80
  40. package/docs/archive/pi-crew-v0.5.5-audit-fix-plan.md +0 -133
  41. package/docs/archive/pi-crew-v0.5.9-audit-fix-plan.md +0 -88
  42. package/docs/archive/pi-mono-opportunities.md +0 -969
  43. package/docs/archive/pi-mono-review.md +0 -291
  44. package/docs/archive/pi-subagent4-comparison.md +0 -261
  45. package/docs/archive/pi-subagents3-deep-analysis.md +0 -508
  46. package/docs/bugs/bug-021-notification-badge-counter-misleading.md +0 -293
  47. package/docs/bugs/bug-023-chain-windows-path-resolution.md +0 -106
  48. package/docs/bugs/bug-quota-display-truncation.md +0 -223
  49. package/docs/bugs/cross-session-notification-leakage.md +0 -82
  50. package/docs/code-review-2026-05-11.md +0 -592
  51. package/docs/coding-agent-optimization.md +0 -268
  52. package/docs/comparison-pi-subagents-vs-pi-crew.md +0 -303
  53. package/docs/decisions/0001-durable-state.md +0 -41
  54. package/docs/decisions/0002-child-process-for-async.md +0 -42
  55. package/docs/decisions/0003-depth-guard.md +0 -36
  56. package/docs/decisions/0004-execfile-over-exec.md +0 -34
  57. package/docs/decisions/0005-no-parameter-properties.md +0 -49
  58. package/docs/decisions/0006-publish-bundled-esm.md +0 -63
  59. package/docs/decisions/0007-active-run-binary-index.md +0 -54
  60. package/docs/decisions/0008-child-pi-warm-pool.md +0 -61
  61. package/docs/decisions/2026-07-21-broker-phase4-default-on.md +0 -77
  62. package/docs/decisions/2026-07-21-broker-windows-perms.md +0 -91
  63. package/docs/decisions/2026-07-22-broker-phase4-gated-on.md +0 -99
  64. package/docs/decisions/2026-07-24-oidc-trusted-publishing.md +0 -112
  65. package/docs/decisions/2026-07-26-c6-mascot-visibility-not-wired.md +0 -84
  66. package/docs/decisions/README.md +0 -26
  67. package/docs/deep-review-report.md +0 -384
  68. package/docs/distillation/cybersecurity-patterns.md +0 -294
  69. package/docs/feature-analysis-subagent4.md +0 -305
  70. package/docs/fix-plan-disabletools-exit-null.md +0 -219
  71. package/docs/fixes/BATCH_A_H1_H2.md +0 -86
  72. package/docs/fixes/bug-006-foreground-cancel-concurrent.md +0 -78
  73. package/docs/fixes/bug-007-async-notifier-stale-ctx.md +0 -112
  74. package/docs/fixes/bug-008-child-process-silent-timeout.md +0 -100
  75. package/docs/fixes/bug-009-executor-yield-limit-needs-attention.md +0 -75
  76. package/docs/fixes/bug-010-child-process-api-key-filtered.md +0 -109
  77. package/docs/fixes/bug-011-spawn-pi-enoent.md +0 -92
  78. package/docs/fixes/bug-012-essential-env-stripped.md +0 -89
  79. package/docs/fixes/bug-013-background-runner-death.md +0 -84
  80. package/docs/fixes/bug-014-infinite-retry-loop-needs-attention.md +0 -82
  81. package/docs/fixes/bug-015-background-runner-sigterm.md +0 -65
  82. package/docs/fixes/bug-017-background-runner-session-shutdown.md +0 -66
  83. package/docs/fixes/bug-017-background-runner-sigkill-double-fork.md +0 -28
  84. package/docs/fixes/bug-018-child-pi-worker-stdin-hang.md +0 -61
  85. package/docs/fixes/bug-019-phantom-runs-temp-workspace.md +0 -52
  86. package/docs/fixes/bug-020-infinite-retry-loop-needs-attention.md +0 -47
  87. package/docs/fixes/v0.9.10/locks-fix-verify.md +0 -3
  88. package/docs/fixes/v0.9.10/smoke-test.md +0 -12
  89. package/docs/followup-plan-2026-05-12.md +0 -463
  90. package/docs/followup-review-2026-05-12.md +0 -297
  91. package/docs/goals.md +0 -59
  92. package/docs/implementation-plan-top3.md +0 -333
  93. package/docs/issue-29-analysis.md +0 -189
  94. package/docs/live-mailbox-runtime.md +0 -36
  95. package/docs/migration/atomic-write-v2-migration.md +0 -299
  96. package/docs/next-upgrade-roadmap.md +0 -808
  97. package/docs/oh-my-pi-research.md +0 -509
  98. package/docs/optimization-plan-2026-07.md +0 -366
  99. package/docs/optimization-plan.md +0 -644
  100. package/docs/patterns/command-agent-skill.md +0 -71
  101. package/docs/perf/baseline-2026-05.md +0 -113
  102. package/docs/perf/final-report-2026-05.md +0 -206
  103. package/docs/perf/optimization-plan-2026-07-verified.md +0 -396
  104. package/docs/perf/performance-audit-report-2026-07.md +0 -948
  105. package/docs/perf/performance-review-2026-07.md +0 -287
  106. package/docs/perf/sprint-1-report.md +0 -71
  107. package/docs/perf/sprint-2-report.md +0 -81
  108. package/docs/perf/sprint-2.5-report.md +0 -53
  109. package/docs/perf/sprint-3-report.md +0 -36
  110. package/docs/perf/sprint-4-report.md +0 -47
  111. package/docs/perf/sprint-5-report.md +0 -51
  112. package/docs/perf/sprint-6-report.md +0 -94
  113. package/docs/perf/sprint-7-report.md +0 -74
  114. package/docs/perf/upgrade-plan-2026-05.md +0 -147
  115. package/docs/performance-optimization-execution-plan.md +0 -520
  116. package/docs/phase4-triage.md +0 -58
  117. package/docs/pi-crew-investigation-report.md +0 -411
  118. package/docs/product/README.md +0 -31
  119. package/docs/product/platform.md +0 -27
  120. package/docs/product/runtime-safety.md +0 -37
  121. package/docs/product/team-run.md +0 -39
  122. package/docs/product/team-tool.md +0 -37
  123. package/docs/runtime-analysis-child-vs-live.md +0 -171
  124. package/docs/runtime-migration-in-process-analysis.md +0 -250
  125. package/docs/skills/REFERENCE.md +0 -138
  126. package/docs/stories/README.md +0 -32
  127. package/docs/stories/US-DEPS-major-upgrade.md +0 -62
  128. package/docs/stories/backlog.md +0 -36
  129. package/docs/superpowers/plans/2026-06-09-fallow-patterns-adoption.md +0 -1270
  130. package/docs/templates/decision.md +0 -27
  131. package/docs/templates/story.md +0 -44
  132. package/docs/templates/validation-report.md +0 -32
  133. package/docs/ui-optimization-plan.md +0 -447
  134. package/src/adapters/claude-adapter.ts +0 -23
  135. package/src/adapters/codex-adapter.ts +0 -21
  136. package/src/adapters/cursor-adapter.ts +0 -17
  137. package/src/adapters/export-util.ts +0 -143
  138. package/src/adapters/index.ts +0 -15
  139. package/src/adapters/registry.ts +0 -18
  140. package/src/adapters/types.ts +0 -23
  141. package/src/agents/agent-config.ts +0 -194
  142. package/src/agents/agent-search.ts +0 -98
  143. package/src/agents/agent-serializer.ts +0 -38
  144. package/src/agents/discover-agents.ts +0 -623
  145. package/src/benchmark/benchmark-runner.ts +0 -313
  146. package/src/benchmark/feedback-loop.ts +0 -73
  147. package/src/config/config.ts +0 -1269
  148. package/src/config/defaults.ts +0 -193
  149. package/src/config/drift-detector.ts +0 -290
  150. package/src/config/markers.ts +0 -330
  151. package/src/config/resilient-parser.ts +0 -117
  152. package/src/config/role-tools.ts +0 -118
  153. package/src/config/suggestions.ts +0 -75
  154. package/src/config/types.ts +0 -278
  155. package/src/errors.ts +0 -194
  156. package/src/extension/action-suggestions.ts +0 -117
  157. package/src/extension/async-notifier.ts +0 -179
  158. package/src/extension/autonomous-policy.ts +0 -209
  159. package/src/extension/command-completions.ts +0 -120
  160. package/src/extension/context-status-injection.ts +0 -185
  161. package/src/extension/crew-autocomplete.ts +0 -131
  162. package/src/extension/crew-cleanup.ts +0 -168
  163. package/src/extension/crew-input-router.ts +0 -93
  164. package/src/extension/crew-shortcuts.ts +0 -87
  165. package/src/extension/crew-vibes/cat-frames.ts +0 -18
  166. package/src/extension/crew-vibes/config.ts +0 -195
  167. package/src/extension/crew-vibes/figures.ts +0 -101
  168. package/src/extension/crew-vibes/font-detect.ts +0 -71
  169. package/src/extension/crew-vibes/footer.ts +0 -292
  170. package/src/extension/crew-vibes/index.ts +0 -432
  171. package/src/extension/crew-vibes/provider-usage.ts +0 -396
  172. package/src/extension/crew-vibes/render.ts +0 -206
  173. package/src/extension/crew-vibes/speed.ts +0 -286
  174. package/src/extension/cross-extension-rpc.ts +0 -350
  175. package/src/extension/help.ts +0 -62
  176. package/src/extension/import-index.ts +0 -74
  177. package/src/extension/knowledge-injection.ts +0 -402
  178. package/src/extension/management.ts +0 -571
  179. package/src/extension/message-renderers.ts +0 -108
  180. package/src/extension/notification-router.ts +0 -152
  181. package/src/extension/notification-sink.ts +0 -54
  182. package/src/extension/pi-api.ts +0 -56
  183. package/src/extension/plan-orchestrate.ts +0 -302
  184. package/src/extension/project-init.ts +0 -170
  185. package/src/extension/register.ts +0 -113
  186. package/src/extension/registration/artifact-cleanup.ts +0 -20
  187. package/src/extension/registration/command-registration.ts +0 -58
  188. package/src/extension/registration/command-utils.ts +0 -58
  189. package/src/extension/registration/commands.ts +0 -1228
  190. package/src/extension/registration/compaction-guard.ts +0 -333
  191. package/src/extension/registration/context-builder.ts +0 -135
  192. package/src/extension/registration/crash-recovery-cache.ts +0 -54
  193. package/src/extension/registration/foreground-run-controller.ts +0 -238
  194. package/src/extension/registration/hook-registration.ts +0 -119
  195. package/src/extension/registration/lazy-configurers.ts +0 -124
  196. package/src/extension/registration/lifecycle-handlers.ts +0 -923
  197. package/src/extension/registration/lifecycle.ts +0 -259
  198. package/src/extension/registration/observability.ts +0 -322
  199. package/src/extension/registration/registration-types.ts +0 -158
  200. package/src/extension/registration/runtime-cleanup.ts +0 -230
  201. package/src/extension/registration/subagent-helpers.ts +0 -125
  202. package/src/extension/registration/subagent-manager-setup.ts +0 -330
  203. package/src/extension/registration/subagent-tools.ts +0 -456
  204. package/src/extension/registration/team-tool.ts +0 -220
  205. package/src/extension/registration/tool-registration.ts +0 -50
  206. package/src/extension/registration/ui.ts +0 -172
  207. package/src/extension/registration/viewers.ts +0 -121
  208. package/src/extension/registration/wire-cross-extension.ts +0 -37
  209. package/src/extension/result-watcher.ts +0 -139
  210. package/src/extension/rpc-hmac.ts +0 -256
  211. package/src/extension/run-bundle-schema.ts +0 -104
  212. package/src/extension/run-export.ts +0 -97
  213. package/src/extension/run-import.ts +0 -168
  214. package/src/extension/run-index.ts +0 -131
  215. package/src/extension/run-maintenance.ts +0 -190
  216. package/src/extension/session-summary.ts +0 -18
  217. package/src/extension/team-manager-command.ts +0 -153
  218. package/src/extension/team-onboard.ts +0 -177
  219. package/src/extension/team-recommendation.ts +0 -288
  220. package/src/extension/team-tool/anchor.ts +0 -172
  221. package/src/extension/team-tool/api.ts +0 -1244
  222. package/src/extension/team-tool/auto-summarize.ts +0 -142
  223. package/src/extension/team-tool/cache-control.ts +0 -19
  224. package/src/extension/team-tool/cancel.ts +0 -337
  225. package/src/extension/team-tool/chain-dispatch.ts +0 -95
  226. package/src/extension/team-tool/chain-executor.ts +0 -379
  227. package/src/extension/team-tool/config-patch.ts +0 -50
  228. package/src/extension/team-tool/context.ts +0 -149
  229. package/src/extension/team-tool/destructive-gate.ts +0 -52
  230. package/src/extension/team-tool/doctor.ts +0 -431
  231. package/src/extension/team-tool/explain.ts +0 -282
  232. package/src/extension/team-tool/failure-patterns.ts +0 -118
  233. package/src/extension/team-tool/goal-wrap.ts +0 -330
  234. package/src/extension/team-tool/goal.ts +0 -556
  235. package/src/extension/team-tool/handle-schedule.ts +0 -332
  236. package/src/extension/team-tool/handle-settings.ts +0 -520
  237. package/src/extension/team-tool/health-monitor.ts +0 -481
  238. package/src/extension/team-tool/inspect.ts +0 -88
  239. package/src/extension/team-tool/intent-policy.ts +0 -45
  240. package/src/extension/team-tool/lifecycle-actions.ts +0 -615
  241. package/src/extension/team-tool/orchestrate.ts +0 -98
  242. package/src/extension/team-tool/parallel-dispatch.ts +0 -183
  243. package/src/extension/team-tool/plan.ts +0 -50
  244. package/src/extension/team-tool/respond.ts +0 -150
  245. package/src/extension/team-tool/run-not-found.ts +0 -49
  246. package/src/extension/team-tool/run.ts +0 -1035
  247. package/src/extension/team-tool/status.ts +0 -260
  248. package/src/extension/team-tool/workflow-manage.ts +0 -261
  249. package/src/extension/team-tool-types.ts +0 -26
  250. package/src/extension/team-tool.ts +0 -1116
  251. package/src/extension/tool-result.ts +0 -16
  252. package/src/extension/validate-resources.ts +0 -108
  253. package/src/hooks/registry.ts +0 -200
  254. package/src/hooks/types.ts +0 -69
  255. package/src/i18n.ts +0 -212
  256. package/src/observability/correlation.ts +0 -50
  257. package/src/observability/event-bus.ts +0 -86
  258. package/src/observability/event-to-metric.ts +0 -170
  259. package/src/observability/exporters/adapter.ts +0 -27
  260. package/src/observability/exporters/otlp-exporter.ts +0 -356
  261. package/src/observability/exporters/prometheus-exporter.ts +0 -54
  262. package/src/observability/metric-registry.ts +0 -100
  263. package/src/observability/metric-retention.ts +0 -64
  264. package/src/observability/metric-sink.ts +0 -99
  265. package/src/observability/metrics-primitives.ts +0 -219
  266. package/src/plugins/plugin-define.ts +0 -6
  267. package/src/plugins/plugin-registry.ts +0 -32
  268. package/src/plugins/plugins/index.ts +0 -3
  269. package/src/plugins/plugins/nextjs.ts +0 -19
  270. package/src/plugins/plugins/vite.ts +0 -10
  271. package/src/plugins/plugins/vitest.ts +0 -9
  272. package/src/prompt/prompt-runtime.ts +0 -380
  273. package/src/runtime/adaptive-plan.ts +0 -563
  274. package/src/runtime/agent-control.ts +0 -215
  275. package/src/runtime/agent-memory.ts +0 -81
  276. package/src/runtime/agent-observability.ts +0 -122
  277. package/src/runtime/anchor-manager.ts +0 -475
  278. package/src/runtime/async-marker.ts +0 -32
  279. package/src/runtime/async-runner.ts +0 -381
  280. package/src/runtime/attention-events.ts +0 -28
  281. package/src/runtime/auto-summarize.ts +0 -344
  282. package/src/runtime/background-runner.ts +0 -837
  283. package/src/runtime/batch-barrier.ts +0 -147
  284. package/src/runtime/broker-issuer.ts +0 -37
  285. package/src/runtime/cancellation-token.ts +0 -99
  286. package/src/runtime/cancellation.ts +0 -99
  287. package/src/runtime/capability-inventory.ts +0 -137
  288. package/src/runtime/chain-parser.ts +0 -237
  289. package/src/runtime/chain-runner.ts +0 -606
  290. package/src/runtime/checkpoint.ts +0 -291
  291. package/src/runtime/child-pi-constants.ts +0 -42
  292. package/src/runtime/child-pi-kill.ts +0 -180
  293. package/src/runtime/child-pi-pool.ts +0 -68
  294. package/src/runtime/child-pi-spawn.ts +0 -287
  295. package/src/runtime/child-pi-steering.ts +0 -128
  296. package/src/runtime/child-pi-streams.ts +0 -296
  297. package/src/runtime/child-pi-transcript.ts +0 -169
  298. package/src/runtime/child-pi.ts +0 -1105
  299. package/src/runtime/coalesce-tasks.ts +0 -268
  300. package/src/runtime/code-summary.ts +0 -292
  301. package/src/runtime/command-trace.ts +0 -105
  302. package/src/runtime/compact-pipeline.ts +0 -56
  303. package/src/runtime/compact-stages/ansi-strip-stage.ts +0 -25
  304. package/src/runtime/compact-stages/blank-collapse-stage.ts +0 -31
  305. package/src/runtime/compact-stages/deduplicate-stage.ts +0 -34
  306. package/src/runtime/compact-stages/head-snap-stage.ts +0 -57
  307. package/src/runtime/compact-stages/index.ts +0 -23
  308. package/src/runtime/compact-stages/tail-capture-stage.ts +0 -77
  309. package/src/runtime/compact-stages/truncation-stage.ts +0 -74
  310. package/src/runtime/compaction-summary.ts +0 -278
  311. package/src/runtime/completion-guard.ts +0 -207
  312. package/src/runtime/concurrency.ts +0 -58
  313. package/src/runtime/crash-classification.ts +0 -229
  314. package/src/runtime/crash-recovery.ts +0 -577
  315. package/src/runtime/crew-agent-records.ts +0 -593
  316. package/src/runtime/crew-agent-runtime.ts +0 -62
  317. package/src/runtime/crew-broker-child.ts +0 -88
  318. package/src/runtime/crew-broker-client.ts +0 -673
  319. package/src/runtime/crew-broker-tokens.ts +0 -84
  320. package/src/runtime/crew-broker.ts +0 -1276
  321. package/src/runtime/crew-hooks.ts +0 -227
  322. package/src/runtime/cross-extension-rpc.ts +0 -143
  323. package/src/runtime/custom-tools/irc-tool.ts +0 -282
  324. package/src/runtime/custom-tools/submit-result-tool.ts +0 -102
  325. package/src/runtime/deadletter.ts +0 -47
  326. package/src/runtime/delivery-coordinator.ts +0 -211
  327. package/src/runtime/delta-conflict.ts +0 -348
  328. package/src/runtime/deterministic-ast.ts +0 -161
  329. package/src/runtime/diagnostic-export.ts +0 -171
  330. package/src/runtime/direct-run.ts +0 -45
  331. package/src/runtime/dwf-state-store.ts +0 -102
  332. package/src/runtime/dynamic-workflow-context.ts +0 -1016
  333. package/src/runtime/dynamic-workflow-runner.ts +0 -310
  334. package/src/runtime/effectiveness.ts +0 -90
  335. package/src/runtime/errors/crew-errors.ts +0 -162
  336. package/src/runtime/event-stream-bridge.ts +0 -98
  337. package/src/runtime/foreground-control.ts +0 -193
  338. package/src/runtime/foreground-watchdog.ts +0 -132
  339. package/src/runtime/global-worker-cap.ts +0 -96
  340. package/src/runtime/goal-achievement.ts +0 -148
  341. package/src/runtime/goal-evaluator.ts +0 -361
  342. package/src/runtime/goal-loop-runner.ts +0 -828
  343. package/src/runtime/goal-state-store.ts +0 -219
  344. package/src/runtime/green-contract.ts +0 -55
  345. package/src/runtime/group-join.ts +0 -267
  346. package/src/runtime/handoff-manager.ts +0 -598
  347. package/src/runtime/heartbeat-gradient.ts +0 -36
  348. package/src/runtime/heartbeat-watcher.ts +0 -239
  349. package/src/runtime/hidden-handoff.ts +0 -407
  350. package/src/runtime/important-line-classifier.ts +0 -140
  351. package/src/runtime/intercom-bridge.ts +0 -187
  352. package/src/runtime/iteration-hooks.ts +0 -305
  353. package/src/runtime/live-agent-control.ts +0 -136
  354. package/src/runtime/live-agent-manager.ts +0 -704
  355. package/src/runtime/live-control-realtime.ts +0 -56
  356. package/src/runtime/live-extension-bridge.ts +0 -148
  357. package/src/runtime/live-irc.ts +0 -97
  358. package/src/runtime/live-session-health.ts +0 -108
  359. package/src/runtime/live-session-runtime.ts +0 -1139
  360. package/src/runtime/loop-gates.ts +0 -128
  361. package/src/runtime/manifest-cache.ts +0 -375
  362. package/src/runtime/mcp-proxy.ts +0 -105
  363. package/src/runtime/metric-parser.ts +0 -36
  364. package/src/runtime/model-fallback.ts +0 -409
  365. package/src/runtime/model-resolver.ts +0 -126
  366. package/src/runtime/model-scope.ts +0 -158
  367. package/src/runtime/orphan-worker-registry.ts +0 -465
  368. package/src/runtime/output-validator.ts +0 -202
  369. package/src/runtime/overflow-recovery.ts +0 -206
  370. package/src/runtime/parallel-research.ts +0 -68
  371. package/src/runtime/parallel-utils.ts +0 -160
  372. package/src/runtime/parent-guard.ts +0 -134
  373. package/src/runtime/path-overlap.ts +0 -150
  374. package/src/runtime/peer-dep.ts +0 -292
  375. package/src/runtime/per-write-validator.ts +0 -181
  376. package/src/runtime/phase-progress.ts +0 -217
  377. package/src/runtime/phase-tracker.ts +0 -385
  378. package/src/runtime/pi-args.ts +0 -655
  379. package/src/runtime/pi-json-output.ts +0 -170
  380. package/src/runtime/pi-spawn.ts +0 -273
  381. package/src/runtime/pipeline-runner.ts +0 -523
  382. package/src/runtime/plan-templates.ts +0 -201
  383. package/src/runtime/policy-engine.ts +0 -115
  384. package/src/runtime/post-checks.ts +0 -142
  385. package/src/runtime/post-exit-stdio-guard.ts +0 -104
  386. package/src/runtime/process-lifecycle.ts +0 -491
  387. package/src/runtime/process-status.ts +0 -154
  388. package/src/runtime/progress-event-coalescer.ts +0 -44
  389. package/src/runtime/progress-tracker.ts +0 -124
  390. package/src/runtime/prose-compressor.ts +0 -162
  391. package/src/runtime/recovery-recipes.ts +0 -203
  392. package/src/runtime/replace.ts +0 -570
  393. package/src/runtime/resilient-edit.ts +0 -153
  394. package/src/runtime/result-extractor.ts +0 -213
  395. package/src/runtime/retry-executor.ts +0 -100
  396. package/src/runtime/retry-runner.ts +0 -336
  397. package/src/runtime/role-permission.ts +0 -59
  398. package/src/runtime/run-coalesced-task-group.ts +0 -308
  399. package/src/runtime/run-drift.ts +0 -219
  400. package/src/runtime/run-tracker.ts +0 -116
  401. package/src/runtime/runtime-policy.ts +0 -29
  402. package/src/runtime/runtime-resolver.ts +0 -172
  403. package/src/runtime/runtime-warmup.ts +0 -160
  404. package/src/runtime/scheduler.ts +0 -353
  405. package/src/runtime/semaphore.ts +0 -141
  406. package/src/runtime/sensitive-paths.ts +0 -93
  407. package/src/runtime/session-resources.ts +0 -25
  408. package/src/runtime/session-snapshot.ts +0 -59
  409. package/src/runtime/session-usage.ts +0 -79
  410. package/src/runtime/settings-store.ts +0 -155
  411. package/src/runtime/sidechain-output.ts +0 -35
  412. package/src/runtime/single-agent-compose.ts +0 -84
  413. package/src/runtime/skill-effectiveness.ts +0 -524
  414. package/src/runtime/skill-instructions.ts +0 -391
  415. package/src/runtime/stale-reconciler.ts +0 -680
  416. package/src/runtime/stream-preview.ts +0 -184
  417. package/src/runtime/streaming-output.ts +0 -50
  418. package/src/runtime/subagent-manager.ts +0 -561
  419. package/src/runtime/subprocess-tool-registry.ts +0 -70
  420. package/src/runtime/supervisor-contact.ts +0 -64
  421. package/src/runtime/task-display.ts +0 -52
  422. package/src/runtime/task-graph-scheduler.ts +0 -227
  423. package/src/runtime/task-graph.ts +0 -290
  424. package/src/runtime/task-health.ts +0 -83
  425. package/src/runtime/task-id.ts +0 -161
  426. package/src/runtime/task-output-context.ts +0 -602
  427. package/src/runtime/task-packet.ts +0 -268
  428. package/src/runtime/task-quality.ts +0 -199
  429. package/src/runtime/task-runner/capabilities.ts +0 -78
  430. package/src/runtime/task-runner/context-retrieval.ts +0 -163
  431. package/src/runtime/task-runner/live-executor.ts +0 -227
  432. package/src/runtime/task-runner/output-splitter.ts +0 -152
  433. package/src/runtime/task-runner/progress.ts +0 -157
  434. package/src/runtime/task-runner/prompt-builder.ts +0 -278
  435. package/src/runtime/task-runner/prompt-pipeline.ts +0 -88
  436. package/src/runtime/task-runner/result-utils.ts +0 -16
  437. package/src/runtime/task-runner/retrieval-orchestrator.ts +0 -310
  438. package/src/runtime/task-runner/run-projection.ts +0 -125
  439. package/src/runtime/task-runner/state-helpers.ts +0 -176
  440. package/src/runtime/task-runner/tail-read.ts +0 -34
  441. package/src/runtime/task-runner.ts +0 -1420
  442. package/src/runtime/team-runner-artifacts.ts +0 -13
  443. package/src/runtime/team-runner.ts +0 -1993
  444. package/src/runtime/tool-output-pruner.ts +0 -333
  445. package/src/runtime/tool-progress.ts +0 -278
  446. package/src/runtime/usage-tracker.ts +0 -73
  447. package/src/runtime/verification-gates.ts +0 -571
  448. package/src/runtime/verification-integrity.ts +0 -105
  449. package/src/runtime/verification-worktree.ts +0 -186
  450. package/src/runtime/worker-heartbeat.ts +0 -25
  451. package/src/runtime/worker-startup.ts +0 -83
  452. package/src/runtime/workflow-state.ts +0 -195
  453. package/src/runtime/workspace-lock.ts +0 -443
  454. package/src/runtime/workspace-tree.ts +0 -312
  455. package/src/runtime/yield-handler.ts +0 -224
  456. package/src/runtime/zombie-scanner.ts +0 -298
  457. package/src/schema/config-schema.ts +0 -327
  458. package/src/schema/team-tool-schema.ts +0 -415
  459. package/src/schema/validation-types.ts +0 -159
  460. package/src/skills/discover-skills.ts +0 -197
  461. package/src/skills/skill-templates.ts +0 -456
  462. package/src/skills/validate.ts +0 -285
  463. package/src/state/active-run-registry.ts +0 -439
  464. package/src/state/artifact-store.ts +0 -176
  465. package/src/state/atomic-write.ts +0 -903
  466. package/src/state/blob-store.ts +0 -308
  467. package/src/state/contracts.ts +0 -158
  468. package/src/state/crew-init.ts +0 -269
  469. package/src/state/decision-ledger.ts +0 -345
  470. package/src/state/event-log-rotation.ts +0 -342
  471. package/src/state/event-log.ts +0 -1311
  472. package/src/state/event-reconstructor.ts +0 -229
  473. package/src/state/gitignore-manager.ts +0 -46
  474. package/src/state/health-store.ts +0 -79
  475. package/src/state/hook-instinct-bridge.ts +0 -94
  476. package/src/state/hook-integrations.ts +0 -51
  477. package/src/state/instinct-store.ts +0 -275
  478. package/src/state/jsonl-writer.ts +0 -107
  479. package/src/state/locks.ts +0 -562
  480. package/src/state/mailbox.ts +0 -916
  481. package/src/state/observation-store.ts +0 -176
  482. package/src/state/run-cache.ts +0 -193
  483. package/src/state/run-graph.ts +0 -183
  484. package/src/state/run-metrics.ts +0 -165
  485. package/src/state/schedule.ts +0 -166
  486. package/src/state/session-state-map.ts +0 -51
  487. package/src/state/state-store.ts +0 -958
  488. package/src/state/task-claims.ts +0 -61
  489. package/src/state/tiered-eval.ts +0 -480
  490. package/src/state/types-eval.ts +0 -58
  491. package/src/state/types.ts +0 -440
  492. package/src/state/usage.ts +0 -138
  493. package/src/state/worker-atomic-writer.ts +0 -194
  494. package/src/subagents/async-entry.ts +0 -1
  495. package/src/subagents/index.ts +0 -3
  496. package/src/subagents/live/control.ts +0 -1
  497. package/src/subagents/live/manager.ts +0 -1
  498. package/src/subagents/live/realtime.ts +0 -1
  499. package/src/subagents/live/session-runtime.ts +0 -1
  500. package/src/subagents/manager.ts +0 -1
  501. package/src/subagents/spawn.ts +0 -1
  502. package/src/teams/discover-teams.ts +0 -187
  503. package/src/teams/team-config.ts +0 -27
  504. package/src/teams/team-serializer.ts +0 -38
  505. package/src/tools/safe-bash-extension.ts +0 -54
  506. package/src/tools/safe-bash.ts +0 -505
  507. package/src/types/diff.d.ts +0 -18
  508. package/src/types/new-api-types.ts +0 -35
  509. package/src/ui/agent-management-overlay.ts +0 -160
  510. package/src/ui/card-colors.ts +0 -139
  511. package/src/ui/crew-footer.ts +0 -102
  512. package/src/ui/crew-select-list.ts +0 -111
  513. package/src/ui/dashboard-panes/agents-pane.ts +0 -164
  514. package/src/ui/dashboard-panes/cancellation-pane.ts +0 -66
  515. package/src/ui/dashboard-panes/capability-pane.ts +0 -77
  516. package/src/ui/dashboard-panes/health-pane.ts +0 -31
  517. package/src/ui/dashboard-panes/mailbox-pane.ts +0 -35
  518. package/src/ui/dashboard-panes/metrics-pane.ts +0 -37
  519. package/src/ui/dashboard-panes/progress-pane.ts +0 -38
  520. package/src/ui/dashboard-panes/transcript-pane.ts +0 -10
  521. package/src/ui/deploy-bundled-themes.ts +0 -71
  522. package/src/ui/dwf-phase-display.ts +0 -151
  523. package/src/ui/dynamic-border.ts +0 -35
  524. package/src/ui/heartbeat-aggregator.ts +0 -74
  525. package/src/ui/key-utils.ts +0 -42
  526. package/src/ui/keybinding-map.ts +0 -248
  527. package/src/ui/layout-primitives.ts +0 -106
  528. package/src/ui/live-conversation-overlay.ts +0 -183
  529. package/src/ui/live-duration.ts +0 -55
  530. package/src/ui/live-run-sidebar.ts +0 -293
  531. package/src/ui/loaders.ts +0 -6
  532. package/src/ui/mascot.ts +0 -449
  533. package/src/ui/overlays/agent-picker-overlay.ts +0 -65
  534. package/src/ui/overlays/confirm-overlay.ts +0 -60
  535. package/src/ui/overlays/help-overlay.ts +0 -177
  536. package/src/ui/overlays/mailbox-compose-overlay.ts +0 -181
  537. package/src/ui/overlays/mailbox-compose-preview.ts +0 -78
  538. package/src/ui/overlays/mailbox-detail-overlay.ts +0 -154
  539. package/src/ui/pi-ui-compat.ts +0 -68
  540. package/src/ui/powerbar-publisher.ts +0 -459
  541. package/src/ui/render-coalescer.ts +0 -101
  542. package/src/ui/render-diff.ts +0 -160
  543. package/src/ui/render-scheduler.ts +0 -278
  544. package/src/ui/run-action-dispatcher.ts +0 -182
  545. package/src/ui/run-dashboard.ts +0 -904
  546. package/src/ui/run-event-bus.ts +0 -381
  547. package/src/ui/run-snapshot-cache.ts +0 -1057
  548. package/src/ui/settings-overlay.ts +0 -1067
  549. package/src/ui/shared-overlay-scheduler.ts +0 -96
  550. package/src/ui/snapshot-types.ts +0 -90
  551. package/src/ui/spinner.ts +0 -17
  552. package/src/ui/status-colors.ts +0 -143
  553. package/src/ui/syntax-highlight.ts +0 -136
  554. package/src/ui/terminal-status.ts +0 -269
  555. package/src/ui/theme-adapter.ts +0 -271
  556. package/src/ui/theme-discovery.ts +0 -199
  557. package/src/ui/tool-progress-formatter.ts +0 -93
  558. package/src/ui/tool-render.ts +0 -453
  559. package/src/ui/tool-renderers/brief-mode.ts +0 -225
  560. package/src/ui/tool-renderers/index.ts +0 -726
  561. package/src/ui/transcript-cache.ts +0 -128
  562. package/src/ui/transcript-entries.ts +0 -256
  563. package/src/ui/transcript-viewer.ts +0 -424
  564. package/src/ui/widget/index.ts +0 -391
  565. package/src/ui/widget/widget-formatters.ts +0 -182
  566. package/src/ui/widget/widget-model.ts +0 -110
  567. package/src/ui/widget/widget-renderer.ts +0 -182
  568. package/src/ui/widget/widget-types.ts +0 -36
  569. package/src/utils/bm25-search.ts +0 -235
  570. package/src/utils/completion-dedupe.ts +0 -63
  571. package/src/utils/conflict-detect.ts +0 -668
  572. package/src/utils/env-allowlist.ts +0 -30
  573. package/src/utils/env-filter.ts +0 -155
  574. package/src/utils/file-coalescer.ts +0 -98
  575. package/src/utils/fingerprint.ts +0 -180
  576. package/src/utils/frontmatter.ts +0 -70
  577. package/src/utils/fs-watch.ts +0 -37
  578. package/src/utils/gh-protocol.ts +0 -556
  579. package/src/utils/git.ts +0 -260
  580. package/src/utils/guards.ts +0 -107
  581. package/src/utils/ids.ts +0 -24
  582. package/src/utils/incremental-reader.ts +0 -220
  583. package/src/utils/internal-error.ts +0 -10
  584. package/src/utils/names.ts +0 -36
  585. package/src/utils/ndjson.ts +0 -115
  586. package/src/utils/paths.ts +0 -227
  587. package/src/utils/project-detector.ts +0 -160
  588. package/src/utils/redaction.ts +0 -347
  589. package/src/utils/resolve-shell.ts +0 -36
  590. package/src/utils/run-watcher-registry.ts +0 -152
  591. package/src/utils/safe-paths.ts +0 -383
  592. package/src/utils/scan-cache.ts +0 -144
  593. package/src/utils/session-utils.ts +0 -110
  594. package/src/utils/sleep.ts +0 -54
  595. package/src/utils/socket-path.ts +0 -127
  596. package/src/utils/sse-parser.ts +0 -129
  597. package/src/utils/task-name-generator.ts +0 -337
  598. package/src/utils/timings.ts +0 -33
  599. package/src/utils/token-counter.ts +0 -200
  600. package/src/utils/visual.ts +0 -207
  601. package/src/workflows/cost-estimator.ts +0 -34
  602. package/src/workflows/discover-workflows.ts +0 -290
  603. package/src/workflows/intermediate-store.ts +0 -166
  604. package/src/workflows/preflight-validator.ts +0 -168
  605. package/src/workflows/topology-analyzer.ts +0 -203
  606. package/src/workflows/validate-workflow.ts +0 -50
  607. package/src/workflows/workflow-config.ts +0 -70
  608. package/src/workflows/workflow-serializer.ts +0 -32
  609. package/src/worktree/branch-freshness.ts +0 -112
  610. package/src/worktree/cleanup.ts +0 -341
  611. package/src/worktree/worktree-manager.ts +0 -1200
@@ -1,268 +0,0 @@
1
- # coding-agent Changes: Optimization Opportunities for pi-crew
2
-
3
- **Date:** 2026-05-28
4
- **Source:** Direct analysis of `packages/coding-agent/` commits (133 commits in May 2026)
5
- **Focus:** Changes that can help pi-crew work better, faster, or more reliably
6
-
7
- ---
8
-
9
- ## Executive Summary
10
-
11
- **133 coding-agent commits in May 2026.** Many are internal fixes, but several directly impact pi-crew's child-process spawning and RPC communication. This doc focuses on actionable optimization opportunities.
12
-
13
- ---
14
-
15
- ## 1. HIGH IMPACT — Direct pi-crew Benefit
16
-
17
- ### A. RPC Backpressure Handling (`d0d1d8ed`, `ce0e801d`)
18
-
19
- **Problem:** Large bash output could block RPC stdout, causing backpressure and hangs.
20
-
21
- **Solution:** pi now uses async stdout writes with backpressure signaling:
22
-
23
- ```typescript
24
- // rpc-mode.ts
25
- const output = async (obj: ...): Promise<void> => {
26
- await writeRawStdout(serializeJsonLine(obj));
27
- };
28
- ```
29
-
30
- **pi-crew relevance:** `child-pi.ts` already has backpressure handling (line ~560 `stdout.resume()` / `stdout.pause()`). **This fix improves the underlying child process's stdout handling.** When pi-crew spawns a child Pi, that child now handles large output better.
31
-
32
- **Optimization opportunity:** Consider adding explicit backpressure acknowledgment in `child-pi.ts` — currently it uses `stdout.pause()` but doesn't explicitly signal to pi when it's ready to resume. pi now handles this internally.
33
-
34
- ### B. Child Process Exit Handling (`e007fcd0`)
35
-
36
- **Problem:** When a child process exits unexpectedly, pending RPC requests would hang forever.
37
-
38
- **Solution:** RpcClient now tracks child process exit and rejects pending requests:
39
-
40
- ```typescript
41
- // rpc-client.ts
42
- childProcess.once("exit", (code, signal) => {
43
- const error = this.createProcessExitError(code, signal);
44
- this.exitError = error;
45
- this.rejectPendingRequests(error);
46
- });
47
- ```
48
-
49
- **pi-crew relevance:** **Critical.** pi-crew's `child-pi.ts` spawns child Pi processes. If the child exits unexpectedly (OOM, crash, SIGKILL), pi-crew should:
50
- 1. Capture the exit code/signal
51
- 2. Reject any pending operations
52
- 3. Log the error with stderr context
53
-
54
- **Current gap:** `child-pi.ts` captures exit codes but doesn't propagate stderr context when rejecting pending work.
55
-
56
- ### C. Bash Output Truncation Fix (`f9530678`)
57
-
58
- **Problem:** Bash truncation counted lines incorrectly when output ended with a newline.
59
-
60
- **Fix:** `OutputAccumulator` now correctly tracks `completedLines` vs `totalLines`:
61
-
62
- ```typescript
63
- // output-accumulator.ts
64
- this.completedLines = 0;
65
- this.totalLines = 0;
66
- this.hasOpenLine = false;
67
- // ...
68
- const lines = splitLinesForCounting(content);
69
- // If content ends with \n, pop the empty final line
70
- ```
71
-
72
- **pi-crew relevance:** pi-crew shows task output in `team action='status'`. If the output is truncated, the line count is now accurate. **No code change needed** — this is internal to pi.
73
-
74
- ### D. Session ID Naming (`52dc08c1`)
75
-
76
- **New feature:** Users can specify explicit session IDs with `--session-id <name>`.
77
-
78
- **pi-crew relevance:** Could enable named sessions for:
79
- - `team action='run'` with `inheritContext: true` → pass named session instead of JSON
80
- - Debugging: label sessions by task/team
81
- - Cross-reference: match pi-crew run IDs to pi session IDs
82
-
83
- **Implementation:** `assertValidSessionId(id)` validates format (`^[A-Za-z0-9](?:[A-Za-z0-9._-]*[A-Za-z0-9])?$`).
84
-
85
- ### E. Compact Read Output (`373bd128`)
86
-
87
- **New feature:** Large file reads are collapsed by default, with "Show more" toggle.
88
-
89
- **pi-crew relevance:** Tasks that read large files now show cleaner output in logs/UI. **No code change needed.**
90
-
91
- ---
92
-
93
- ## 2. MEDIUM IMPACT — Optimization Opportunities
94
-
95
- ### A. `excludeFromContext` Flag (`61babc24`)
96
-
97
- **New RPC command:**
98
- ```typescript
99
- { type: "bash", command: "ls -la", excludeFromContext: true }
100
- ```
101
-
102
- When `excludeFromContext: true`, the bash command output is **not included in the agent's context**. This prevents noisy commands (e.g., `ls -la` in large directories) from consuming context tokens.
103
-
104
- **pi-crew opportunity:** pi-crew could add a `--no-context` flag to `team action='run'` that maps to `excludeFromContext: true` for certain agent operations. Currently, all agent operations contribute to context.
105
-
106
- **Implementation would be in:** `child-pi.ts` → when spawning, pass `excludeFromContext: true` for non-essential commands.
107
-
108
- ### B. Async Tool Operations (`e9146a5f`, `ba09f1c9`)
109
-
110
- **Change:** Tools (read, write, edit) now use async operations instead of sync.
111
-
112
- **pi-crew relevance:** Tasks that run many file operations will be faster (non-blocking I/O). **No code change needed.**
113
-
114
- ### C. Edit Tool Unified Patch (`60a55a23`)
115
-
116
- **New feature:** Edit tool results now include a `patch` field (standard unified diff):
117
-
118
- ```typescript
119
- // edit.ts
120
- export interface EditToolDetails {
121
- diff: string; // Display-oriented diff
122
- patch: string; // Standard unified patch
123
- firstChangedLine?: number;
124
- }
125
- ```
126
-
127
- **pi-crew opportunity:** `team action='status'` could show the unified patch instead of display diff, enabling:
128
- - More precise change tracking
129
- - `git apply` compatibility for rollback
130
- - Better diff visualization in logs
131
-
132
- **Implementation would be in:** `task-runner.ts` → capture `toolResult.details.patch` instead of `toolResult.details.diff`.
133
-
134
- ### D. HTTP Idle Timeout (`849f9d9c`)
135
-
136
- **Change:** Coding-agent now configures HTTP idle timeout for network requests.
137
-
138
- **pi-crew relevance:** When pi-crew tasks make HTTP requests (e.g., calling external APIs), the idle timeout prevents hanging connections. **No code change needed** — this is internal to pi's HTTP client.
139
-
140
- ### E. Retry Marking for Agent End Events (`c685b273`)
141
-
142
- **Change:** When an agent retries a turn, the `agent_end` event is now marked as a retry.
143
-
144
- **pi-crew relevance:** `team action='status'` could show retry count. Currently, pi-crew tracks task retries via `run_recovery` hook but doesn't surface retry reasons.
145
-
146
- ---
147
-
148
- ## 3. LOW IMPACT — Nice to Know
149
-
150
- ### A. Theme Detection (`f4f0ac7a`, `088987b2`)
151
-
152
- Update notes shown on startup. Themes listed by content name.
153
-
154
- **No action needed.**
155
-
156
- ### B. OpenCode Session Headers (`42379a37`)
157
-
158
- Session headers for OpenCode provider (Qwen models).
159
-
160
- **No action needed.**
161
-
162
- ### C. Clipboard Sidecar (`3f89350c`)
163
-
164
- Bun binaries now include clipboard helper.
165
-
166
- **No action needed.**
167
-
168
- ### D. Path Handling Fix (`c100620b`)
169
-
170
- Corrected path resolution for pattern matching.
171
-
172
- **No action needed.**
173
-
174
- ---
175
-
176
- ## 4. Optimization Roadmap (Priority Order)
177
-
178
- ### Priority 1: Child Process Exit Handling
179
-
180
- **Gap:** `child-pi.ts` captures exit code but doesn't reject pending work with stderr context.
181
-
182
- **Current code:** `child-pi.ts` line ~635
183
- ```typescript
184
- const wasGraceAborted = softLimitReached && turnCount >= ...
185
- ```
186
-
187
- **Missing:** When child exits unexpectedly, propagate `exitError` to any pending operations.
188
-
189
- **Fix:**
190
- ```typescript
191
- // In child-pi.ts, handle unexpected exit
192
- childProcess.once("exit", (code, signal) => {
193
- const exitError = new Error(
194
- `Agent process exited (code=${code} signal=${signal}). Stderr: ${stderr}`
195
- );
196
- // Reject any pending operations
197
- // Log exitError to event log
198
- });
199
- ```
200
-
201
- ### Priority 2: `excludeFromContext` Integration
202
-
203
- **New capability in pi:** Commands can opt out of context.
204
-
205
- **pi-crew opportunity:** Add config flag to `team action='run'`:
206
- ```
207
- team action='run' goal='...' exclude-context-bash=true
208
- ```
209
-
210
- This would mark intermediate/staging bash commands as `excludeFromContext: true`.
211
-
212
- **Implementation:**
213
- 1. Add `excludeContextBash?: boolean` to `PiTeamsAutonomousConfig`
214
- 2. In `child-pi.ts`, wrap commands with `excludeFromContext` flag
215
-
216
- ### Priority 3: Edit Tool Patch Capture
217
-
218
- **Current:** `task-runner.ts` captures `toolResult.details.diff` for reporting.
219
-
220
- **Opportunity:** Capture `toolResult.details.patch` for:
221
- - Rollback capability (`git apply` patch)
222
- - Precise change tracking
223
- - Better visualization
224
-
225
- **Implementation:** Change `task-runner.ts` line ~1114 to read `details.patch` instead of `details.diff`.
226
-
227
- ### Priority 4: Session ID Alignment
228
-
229
- **New capability:** `--session-id <name>` for explicit session naming.
230
-
231
- **pi-crew opportunity:** Align pi session IDs with pi-crew run IDs:
232
- ```
233
- pi --session-id "crew-run-{runId}"
234
- ```
235
-
236
- This would enable:
237
- - Easy cross-reference between pi sessions and pi-crew runs
238
- - Named resume: `pi --session crew-run-abc` resumes a specific run
239
- - Better debugging in `.crew/sessions/`
240
-
241
- ---
242
-
243
- ## 5. Key Files to Watch
244
-
245
- | File | Significance |
246
- |------|-------------|
247
- | `packages/coding-agent/src/modes/rpc/rpc-mode.ts` | RPC protocol — pi-crew's child communicates via this |
248
- | `packages/coding-agent/src/modes/rpc/rpc-client.ts` | Client that handles child process lifecycle |
249
- | `packages/coding-agent/src/core/session-manager.ts` | Session naming, fork, resume |
250
- | `packages/coding-agent/src/core/tools/bash.ts` | Bash execution with backpressure |
251
- | `packages/coding-agent/src/core/tools/output-accumulator.ts` | Output truncation logic |
252
- | `packages/coding-agent/src/core/tools/edit.ts` | Edit tool with unified patch |
253
-
254
- ---
255
-
256
- ## 6. Summary
257
-
258
- | Category | Finding | Action |
259
- |----------|---------|--------|
260
- | **Critical** | Child exit handling improved | Verify `child-pi.ts` rejects pending work on unexpected exit |
261
- | **Opportunity** | `excludeFromContext` flag | Add to `team action='run'` config |
262
- | **Opportunity** | Edit tool unified patch | Capture in `task-runner.ts` for rollback |
263
- | **Nice-to-have** | Session ID alignment | Align pi session IDs with pi-crew run IDs |
264
- | **No action** | Bash truncation fix | Already benefits pi-crew (internal) |
265
- | **No action** | Compact reads | Already benefits pi-crew (internal) |
266
- | **No action** | Async tools | Already benefits pi-crew (internal) |
267
-
268
- **Primary recommendation:** Implement Priority 1 (child exit handling) and Priority 2 (excludeFromContext) in `child-pi.ts`.
@@ -1,303 +0,0 @@
1
- # Architecture Comparison: pi-subagents3 vs pi-crew
2
-
3
- > Date: 2026-05-12
4
- > Source: `@tintinweb/pi-subagents` v0.7.1 (6.082 LOC, 28 files) vs `pi-crew` v0.2.3 (35.809 LOC, ~200+ files)
5
-
6
- ---
7
-
8
- ## 1. Overview
9
-
10
- | Criterion | pi-subagents3 | pi-crew |
11
- |---|---|---|
12
- | **Author** | tintinweb | baphuongna |
13
- | **Version** | 0.7.1 | 0.2.3 |
14
- | **Goal** | Single subagent (Agent tool) — spawn, resume, steer | Team orchestration — multi-agent workflows, phases, parallel dispatch |
15
- | **LOC** | ~6.000 | ~36.000 |
16
- | **Entry point** | `src/index.ts` (1.885 lines — monolith) | `index.ts` → `register.ts` (668 lines) → modular registration |
17
- | **Architecture** | Simple, direct, single-agent focus | Layered, event-driven, state-machine based |
18
- | **Peer deps** | pi-ai ≥0.70.5, pi-coding-agent ≥0.70.5, pi-tui ≥0.70.5 | pi-coding-agent (runtime) |
19
- | **Npm deps** | `@sinclair/typebox`, `croner`, `nanoid` | 0 (zero runtime dependencies) |
20
- | **Test runner** | vitest | Node built-in `--experimental-strip-types` |
21
- | **Subprocess model** | **In-process** (reuses Pi SDK `createAgentSession`) | **Out-of-process** (spawn child Pi instance via `child-pi.ts`) |
22
-
23
- ---
24
-
25
- ## 2. Core architecture
26
-
27
- ### 2.1 pi-subagents3 — In-process Agent Sessions
28
-
29
- ```
30
- ┌─────────────────────────────────────────────┐
31
- │ index.ts (1885 LOC) │
32
- │ Extension entry: tools, commands, menus, │
33
- │ lifecycle hooks, settings, scheduling │
34
- ├─────────┬──────────┬──────────┬──────────────┤
35
- │agent- │agent- │agent- │schedule.ts │
36
- │runner │manager │types │ScheduleStore │
37
- │(310 LOC)│(310 LOC) │(140 LOC) │(365 LOC) │
38
- ├─────────┴──────────┴──────────┴──────────────┤
39
- │ memory.ts │ prompts.ts │ context.ts │ env.ts │
40
- │ worktree │ model- │ settings │ usage │
41
- │ │ resolver │ │ │
42
- ├──────────────────────────────────────────────┤
43
- │ Pi SDK (createAgentSession) │
44
- │ In-process, shared event loop │
45
- └──────────────────────────────────────────────┘
46
- ```
47
-
48
- **Key characteristics:**
49
- - Agent runs **in the same process** as the parent Pi session
50
- - Uses `createAgentSession()` + `session.prompt()` — direct Pi SDK API
51
- - Tool filtering, extension binding, skill preloading in-process
52
- - Event subscription (`session.subscribe()`) to track turns, tool uses, streaming text
53
- - A single huge `index.ts` file contains nearly all the logic
54
-
55
- ### 2.2 pi-crew — Out-of-process Child Workers
56
-
57
- ```
58
- ┌─────────────────────────────────────────────────────────┐
59
- │ register.ts (668 LOC) │
60
- │ Extension entry: lifecycle, commands, tool registration │
61
- ├────────────────┬─────────────────┬───────────────────────┤
62
- │ team-tool.ts │ team-runner.ts │ subagent-manager.ts │
63
- │ (344 LOC) │ (945 LOC) │ (400 LOC) │
64
- │ Tool handler │ Workflow engine │ Agent tracking │
65
- ├────────────────┴─────────────────┴───────────────────────┤
66
- │ child-pi.ts (461 LOC) │ task-runner.ts (459 LOC) │
67
- │ Subprocess spawn │ Per-worker execution │
68
- ├─────────────────────────┬───────────────────────────────┤
69
- │ State Layer │ UI Layer │
70
- │ state-store.ts │ crew-widget.ts │
71
- │ event-log.ts │ run-dashboard.ts │
72
- │ locks.ts │ transcript-viewer.ts │
73
- │ atomic-write.ts │ powerbar-publisher.ts │
74
- ├─────────────────────────┴───────────────────────────────┤
75
- │ Pi CLI (child process via spawn) │
76
- │ Isolated process, independent event loop │
77
- └─────────────────────────────────────────────────────────┘
78
- ```
79
-
80
- **Key characteristics:**
81
- - Worker runs **in a separate process** — spawns `pi` CLI child process
82
- - Communicates via JSON events on stdout (`--json-output` mode)
83
- - State persistence: JSONL event log, manifest files, atomic writes
84
- - Distributed architecture: team → workflow → phases → tasks → workers
85
- - Full isolation: crash recovery, stuck detection, deadletter
86
-
87
- ---
88
-
89
- ## 3. Detailed module-by-module comparison
90
-
91
- ### 3.1 Agent Execution
92
-
93
- | Aspect | pi-subagents3 | pi-crew |
94
- |---|---|---|
95
- | **Runtime** | `createAgentSession()` in-process | `spawn("pi", [...])` child process |
96
- | **Tool access** | Direct — `session.setActiveToolsByName()` | Limited by child Pi args |
97
- | **Context sharing** | `buildParentContext()` — copy conversation | None (isolated by design) |
98
- | **Steering** | `session.steer(message)` — immediate in-process | `child.stdin.write()` — JSON event |
99
- | **Resume** | `resumeAgent(session, prompt)` — reuse session | Re-spawn child process |
100
- | **Turn limits** | Soft limit → steer "wrap up" → hard abort | `--max-turns` CLI arg → child exit |
101
- | **Grace turns** | Configurable (default 5) | N/A |
102
- | **Streaming** | `session.subscribe()` — real-time deltas | JSON event polling on stdout |
103
- | **Compaction** | Tracked via `compaction_end` events | Child handles independently |
104
- | **Memory overhead** | Low (shared process) | High (separate Node.js process) |
105
- | **Isolation** | Process-shared (same memory space) | Process-isolated (crash-safe) |
106
- | **Max concurrent** | Queue with configurable limit (default 4) | Queue with configurable limit (default 4) |
107
-
108
- ### 3.2 Agent Configuration
109
-
110
- | Aspect | pi-subagents3 | pi-crew |
111
- |---|---|---|
112
- | **Built-in agents** | 3: general-purpose, Explore, Plan | 10: explorer, planner, executor, reviewer, verifier, analyst, critic, writer, security-reviewer, test-engineer |
113
- | **Custom agents** | `.md` files in `.pi/agents/` or `~/.pi/agents/` | `.md` files in `agents/` (project) |
114
- | **Agent config** | 22 fields: systemPrompt, promptMode, extensions, skills, model, thinking, maxTurns, memory, isolation, disallowedTools... | agent-config.ts: name, systemPrompt (frontmatter), maxTurns |
115
- | **Prompt mode** | `replace` (standalone) or `append` (parent twin) | Always replace (isolated subprocess) |
116
- | **Tool filtering** | Allowlist (builtinToolNames) + denylist (disallowedTools) + extension filter | CLI arg `--allowed-tools` |
117
- | **Model lock** | Per-agent model in config | Per-agent model in frontmatter |
118
- | **Thinking level** | Per-agent `thinking` field | Per-agent `thinkingLevel` in frontmatter |
119
- | **Agent discovery** | `custom-agents.ts` → `.md` frontmatter parse | `discover-agents.ts` → `.md` frontmatter parse |
120
-
121
- ### 3.3 Memory / Persistence
122
-
123
- | Aspect | pi-subagents3 | pi-crew |
124
- |---|---|---|
125
- | **Agent memory** | ✅ Persistent MEMORY.md per agent (user/project/local scope) | ❌ No built-in agent memory |
126
- | **Memory tools** | Injected dynamically based on write capability | N/A |
127
- | **State persistence** | In-memory AgentRecord + JSON schedule store | Full state machine: manifest.json + events.jsonl + tasks.json |
128
- | **Crash recovery** | Worktree prune on dispose | Detect interrupted runs, deadletter, stuck-blocked notifications |
129
- | **Locking** | PID-based file lock for schedule store | `mkdirSync` atomic lock + PID stale detection for event log |
130
- | **Atomic writes** | temp+rename (POSIX) | Full atomic-write.ts with O_NOFOLLOW, symlink checks, sync/async parity |
131
-
132
- ### 3.4 Scheduling
133
-
134
- | Aspect | pi-subagents3 | pi-crew |
135
- |---|---|---|
136
- | **Scheduling** | ✅ Full scheduler: cron (6-field), interval, one-shot | ❌ No scheduling |
137
- | **Cron engine** | `croner` library | N/A |
138
- | **Persistence** | Session-scoped JSON with PID-locked store | N/A |
139
- | **Queue bypass** | `bypassQueue: true` for scheduled fires | N/A |
140
- | **Events** | `subagents:scheduled` (added/removed/fired/error) | N/A |
141
- | **Master switch** | `schedulingEnabled` setting (strips tool param) | N/A |
142
-
143
- ### 3.5 Worktree Isolation
144
-
145
- | Aspect | pi-subagents3 | pi-crew |
146
- |---|---|---|
147
- | **Worktree support** | ✅ `createWorktree()` / `cleanupWorktree()` | ✅ Full `worktree-manager.ts` (8.8 KB) |
148
- | **Branch management** | Auto-branch, auto-commit changes | Branch freshness, reuse, file node_modules skip |
149
- | **Error handling** | Strict — throws if worktree creation fails | Retry + fallback |
150
- | **Cleanup** | On completion (success or error) + prune on dispose | On completion + cleanup.ts + branch-freshness |
151
-
152
- ### 3.6 Cross-extension Communication
153
-
154
- | Aspect | pi-subagents3 | pi-crew |
155
- |---|---|---|
156
- | **RPC protocol** | ✅ Event bus RPC: ping/spawn/stop | ✅ Event bus RPC: ping/spawn/status/cancel |
157
- | **Protocol version** | v2 | Versioned |
158
- | **Reply envelope** | `{ success: true, data? }` / `{ success: false, error }` | Similar |
159
- | **Singleton access** | `Symbol.for("pi-subagents:manager")` on globalThis | `globalThis.__piCrewRuntimeCleanup` |
160
-
161
- ### 3.7 UI / TUI
162
-
163
- | Aspect | pi-subagents3 | pi-crew |
164
- |---|---|---|
165
- | **Agent widget** | `agent-widget.ts` (518 LOC) — overlay | `crew-widget.ts` (16 KB) — sidebar + dashboard |
166
- | **Conversation viewer** | `conversation-viewer.ts` (243 LOC) | `transcript-viewer.ts` (13.9 KB) — JSONL-based |
167
- | **Schedule menu** | `schedule-menu.ts` (104 LOC) | N/A |
168
- | **Dashboard** | N/A (overlay-based) | `run-dashboard.ts` (22.7 KB) — multi-pane |
169
- | **Status bar** | Inline status in overlay | `powerbar-publisher.ts` (8.9 KB) |
170
- | **Live sidebar** | N/A | `live-run-sidebar.ts` (8.6 KB) |
171
- | **Notification render** | Custom `renderCall` / `renderResult` | `notification-router.ts` + `notification-sink.ts` |
172
- | **Context % indicator** | ✅ Token count + context % (colored) + compaction count | ❌ No context indicator |
173
-
174
- ### 3.8 Settings / Configuration
175
-
176
- | Aspect | pi-subagents3 | pi-crew |
177
- |---|---|---|
178
- | **Settings file** | `.pi/subagents.json` (project) + `~/.pi/agent/subagents.json` (global) | `config.ts` → `.pi/crew-config.json` + `defaults.ts` |
179
- | **Runtime settings** | maxConcurrent, defaultMaxTurns, graceTurns, defaultJoinMode, schedulingEnabled | maxConcurrent, telemetry, notifications |
180
- | **Validation** | `sanitize()` with ceiling values | `config.ts` schema validation |
181
- | **Hot reload** | Apply on change + emit event | Load on register |
182
-
183
- ---
184
-
185
- ## 4. Unique features
186
-
187
- ### pi-subagents3 has but pi-crew doesn't:
188
-
189
- 1. **In-process agent sessions** — Zero subprocess overhead, direct Pi SDK access, shared event loop
190
- 2. **Persistent agent memory** — MEMORY.md per agent with 3 scopes (user/project/local), auto-injected tools
191
- 3. **Soft turn limit + grace period** — Steer "wrap up" before hard-aborting, configurable grace turns
192
- 4. **Scheduling** — Full cron/interval/one-shot scheduler with croner, session-scoped persistence
193
- 5. **Parent context inheritance** — `inheritContext` forks the conversation for the subagent
194
- 6. **Append mode** — Agent runs as a "twin" of the parent (inherits system prompt + tools)
195
- 7. **Context % indicator** — Live context window utilization (%), compaction count (↻N)
196
- 8. **Agent memory tools** — Dynamic tool injection based on write capability (read-only vs read-write)
197
- 9. **Skill preloading** — Load skill content directly into the system prompt (string[])
198
- 10. **Batch grouping** — 100ms debounce batches multiple background completions into 1 notification
199
- 11. **Cancelable nudges** — 200ms hold before sending a notification, get_subagent_result cancels the nudge
200
- 12. **Agent creation wizard** — `/agents` → spawn an agent to create an agent config .md file
201
-
202
- ### pi-crew has but pi-subagents3 doesn't:
203
-
204
- 1. **Team orchestration** — Multi-agent teams with workflows, phases, parallel dispatch
205
- 2. **Workflow engine** — Declarative workflow definitions (step → agent → gate → next)
206
- 3. **Out-of-process isolation** — Child Pi process, crash-safe, independent event loop
207
- 4. **Full state machine** — manifest.json + tasks.json + events.jsonl, durable persistence
208
- 5. **Crash recovery** — Detect interrupted runs, deadletter queue, stuck-blocked detection
209
- 6. **Mailbox system** — Interactive respond/nudge/ack workflow for waiting tasks
210
- 7. **Heartbeat monitoring** — `heartbeat-watcher.ts` + gradient-based health tracking
211
- 8. **Observability** — Metrics registry, OTLP exporter, Prometheus exporter
212
- 9. **Run export/import** — Bundle/unbundle runs for cross-machine sharing
213
- 10. **Live session management** — Live IRC, live agent control, live extension bridge
214
- 11. **UI dashboard** — Multi-pane dashboard with agents/capabilities/health/mailbox/progress
215
- 12. **Run snapshot cache** — Efficient state snapshots for UI rendering
216
- 13. **Delivery coordination** — Overflow recovery, delivery coordinator for message routing
217
- 14. **i18n** — Internationalization support
218
- 15. **Post-checks** — Configurable post-execution verification hooks
219
- 16. **Iteration hooks** — Pre/post iteration hooks for external integrations
220
- 17. **Model fallback chain** — Multi-model fallback with cost tracking
221
- 18. **Compaction summary** — Context compaction for long-running agents
222
- 19. **Task quality scoring** — Automatic quality assessment of task outputs
223
- 20. **Agent capability inventory** — Dynamic tool/skill capability detection
224
-
225
- ---
226
-
227
- ## 5. Pros and cons analysis
228
-
229
- ### pi-subagents3
230
-
231
- **Pros:**
232
- - **Simple**: ~6K LOC, easy to understand and maintain
233
- - **Performance**: In-process, zero subprocess overhead, shared memory
234
- - **Deep features**: Memory, scheduling, context inheritance, turn management are very detailed
235
- - **SDK-first**: Uses the Pi SDK directly, fully leveraging the API
236
- - **Interactive**: Resume, steer, conversation viewer are very smooth
237
- - **Settings**: Hot-reload, master switch for features
238
-
239
- **Cons:**
240
- - **Monolith**: `index.ts` 1.885 lines — hard to maintain, hard to test
241
- - **No team support**: No workflow, phases, parallel dispatch
242
- - **Crash propagation**: Agent crash affects the parent process
243
- - **Limited observability**: No metrics, export, monitoring
244
- - **No run persistence**: Agent record is in-memory only (except the schedule store)
245
-
246
- ### pi-crew
247
-
248
- **Pros:**
249
- - **Strong architecture**: Layered, event-driven, state-machine based
250
- - **Team orchestration**: Workflow engine with phases, parallel, gates
251
- - **Crash isolation**: Out-of-process workers, child crash doesn't affect parent
252
- - **Full persistence**: JSONL event log, manifest, atomic writes
253
- - **Observability**: Metrics, OTLP, Prometheus, heartbeat monitoring
254
- - **Modular**: 200+ files, each file one responsibility
255
- - **Enterprise features**: Export/import, i18n, compaction, quality scoring
256
-
257
- **Cons:**
258
- - **Complex**: 36K LOC, steep learning curve
259
- - **Subprocess overhead**: Each worker spawns its own process (RAM, startup time)
260
- - **No memory**: Agents have no persistent memory between sessions
261
- - **No scheduling**: No cron/interval/one-shot
262
- - **No context inheritance**: Workers run isolated, can't see parent context
263
- - **No soft turn limit**: Hard cutoff, no grace period
264
- - **No interactive steer**: Cannot steer a worker after spawning
265
-
266
- ---
267
-
268
- ## 6. Recommendations
269
-
270
- ### What pi-crew should learn from pi-subagents3:
271
-
272
- 1. **Persistent agent memory** — The MEMORY.md pattern is very valuable for long-running projects
273
- 2. **Soft turn limit + grace period** — More elegant than hard abort
274
- 3. **Scheduling** — Cron/interval scheduling for automated tasks
275
- 4. **Context % indicator** — Helps the parent LLM know how much room the subagent has left
276
- 5. **Batch notification grouping** — Reduces noise when many workers complete simultaneously
277
- 6. **In-process mode** (optional) — For lightweight tasks that don't need process isolation
278
- 7. **Cancelable nudges** — Avoid notification spam
279
- 8. **Agent settings hot-reload** — Change settings without restarting
280
-
281
- ### What pi-subagents3 should learn from pi-crew:
282
-
283
- 1. **Modular architecture** — Split `index.ts` into multiple files
284
- 2. **State persistence** — Durable state instead of in-memory only
285
- 3. **Crash recovery** — Detect interrupted runs, deadletter
286
- 4. **Observability** — Metrics, monitoring, health checks
287
- 5. **Team support** — Multi-agent workflows
288
- 6. **Out-of-process option** — For heavy tasks needing isolation
289
- 7. **Run export/import** — Cross-machine sharing
290
-
291
- ---
292
-
293
- ## 7. Conclusion
294
-
295
- **pi-subagents3** is a **focused** extension — it does one thing very well: spawn and manage individual subagents. It leverages the Pi SDK maximally, in-process, interactive, with deep features like memory and scheduling.
296
-
297
- **pi-crew** is an **orchestration platform** — broader scope, strong in team workflows, state management, crash recovery, and enterprise features. But much more complex, and missing some "nice-to-have" features that pi-subagents3 has.
298
-
299
- The two extensions **complement** each other more than they compete:
300
- - pi-subagents3 for **quick, interactive subagent tasks** (code review, exploration, one-off analysis)
301
- - pi-crew for **complex, multi-phase team workflows** (full feature implementation, multi-perspective review, parallel research)
302
-
303
- An ideal architecture might combine both: use pi-subagents3's in-process execution for lightweight tasks, and pi-crew's orchestration layer for complex workflows.
@@ -1,41 +0,0 @@
1
- # 0001 Durable State as Source of Truth
2
-
3
- Date: 2026-05-11
4
-
5
- ## Status
6
-
7
- Accepted
8
-
9
- ## Context
10
-
11
- pi-crew runs can last minutes to hours. Runs may be started from foreground
12
- sessions, background processes, or async workers. Multiple observers (TUI
13
- dashboard, status commands, event hooks) need to see the same run state.
14
-
15
- ## Decision
16
-
17
- All run state is stored on disk as JSON files:
18
- - `manifest.json` — run metadata, status, config
19
- - `tasks.json` — task graph with statuses
20
- - `events.jsonl` — append-only event log
21
- - `agents/{taskId}/status.json` — per-agent state
22
-
23
- All reads go through state store. All writes use atomic write helpers and
24
- run-level locks (`withRunLockSync`).
25
-
26
- ## Alternatives Considered
27
-
28
- 1. In-memory state with periodic flush. Rejected: lost on crash, inconsistent across processes.
29
- 2. Database (SQLite). Rejected: adds native dependency, overkill for append-mostly data.
30
-
31
- ## Consequences
32
-
33
- Positive:
34
- - Crash recovery is possible by reading state from disk
35
- - Multiple processes can observe the same run
36
- - Event log provides audit trail
37
-
38
- Tradeoffs:
39
- - File I/O on every state mutation (mitigated by atomic writes)
40
- - Windows EBUSY/EPERM requires retry logic
41
- - Lock contention under heavy concurrent access
@@ -1,42 +0,0 @@
1
- # 0002 Child-Process for Async Runners
2
-
3
- Date: 2026-05-12
4
-
5
- ## Status
6
-
7
- Accepted
8
-
9
- ## Context
10
-
11
- pi-crew supports two runtime modes for task execution:
12
- - `live-session`: in-process, reuses current Pi agent session
13
- - `child-process`: spawns a new Node process via `child-pi.ts`
14
-
15
- Async runs (background runner, async runner) start from the current session but
16
- continue after the session ends. Live-session mode requires the parent Pi agent
17
- to be alive — it uses the same in-process tools and session context.
18
-
19
- ## Decision
20
-
21
- Async runners MUST use `child-process` mode. The `live-session` mode is only
22
- available for foreground runs within the current Pi agent session.
23
-
24
- Runtime policy enforces: `runtimeResolver` overrides any `live-session` request
25
- to `child-process` when the run is async.
26
-
27
- ## Alternatives Considered
28
-
29
- 1. Allow live-session for async. Rejected: crashes when parent session ends, resource leaks.
30
- 2. Persist and restore live-session. Rejected: in-process state (timers, handles) cannot be serialized.
31
-
32
- ## Consequences
33
-
34
- Positive:
35
- - Async runs survive session shutdown
36
- - No zombie timers or leaked handles from dead sessions
37
- - Clean process isolation
38
-
39
- Tradeoffs:
40
- - Child process startup overhead (~2-5s)
41
- - No shared in-process state between parent and child
42
- - Requires all runtime config to be serializable