pi-crew 0.9.50 → 0.9.52

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 (609) hide show
  1. package/CHANGELOG.md +150 -0
  2. package/README.md +216 -20
  3. package/dist/build-meta.json +2222 -1761
  4. package/dist/index.mjs +18636 -17603
  5. package/docs/actions-reference.md +431 -1
  6. package/package.json +19 -9
  7. package/schema.json +41 -0
  8. package/scripts/check-bundle-size.mjs +38 -0
  9. package/scripts/test-runner.mjs +11 -1
  10. package/skills/distill-software/SKILL.md +24 -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/README.md +0 -26
  66. package/docs/deep-review-report.md +0 -384
  67. package/docs/distillation/cybersecurity-patterns.md +0 -294
  68. package/docs/feature-analysis-subagent4.md +0 -305
  69. package/docs/fix-plan-disabletools-exit-null.md +0 -219
  70. package/docs/fixes/BATCH_A_H1_H2.md +0 -86
  71. package/docs/fixes/bug-006-foreground-cancel-concurrent.md +0 -78
  72. package/docs/fixes/bug-007-async-notifier-stale-ctx.md +0 -112
  73. package/docs/fixes/bug-008-child-process-silent-timeout.md +0 -100
  74. package/docs/fixes/bug-009-executor-yield-limit-needs-attention.md +0 -75
  75. package/docs/fixes/bug-010-child-process-api-key-filtered.md +0 -109
  76. package/docs/fixes/bug-011-spawn-pi-enoent.md +0 -92
  77. package/docs/fixes/bug-012-essential-env-stripped.md +0 -89
  78. package/docs/fixes/bug-013-background-runner-death.md +0 -84
  79. package/docs/fixes/bug-014-infinite-retry-loop-needs-attention.md +0 -82
  80. package/docs/fixes/bug-015-background-runner-sigterm.md +0 -65
  81. package/docs/fixes/bug-017-background-runner-session-shutdown.md +0 -66
  82. package/docs/fixes/bug-017-background-runner-sigkill-double-fork.md +0 -28
  83. package/docs/fixes/bug-018-child-pi-worker-stdin-hang.md +0 -61
  84. package/docs/fixes/bug-019-phantom-runs-temp-workspace.md +0 -52
  85. package/docs/fixes/bug-020-infinite-retry-loop-needs-attention.md +0 -47
  86. package/docs/fixes/v0.9.10/locks-fix-verify.md +0 -3
  87. package/docs/fixes/v0.9.10/smoke-test.md +0 -12
  88. package/docs/followup-plan-2026-05-12.md +0 -463
  89. package/docs/followup-review-2026-05-12.md +0 -297
  90. package/docs/goals.md +0 -59
  91. package/docs/implementation-plan-top3.md +0 -333
  92. package/docs/issue-29-analysis.md +0 -189
  93. package/docs/live-mailbox-runtime.md +0 -36
  94. package/docs/migration/atomic-write-v2-migration.md +0 -299
  95. package/docs/next-upgrade-roadmap.md +0 -808
  96. package/docs/oh-my-pi-research.md +0 -509
  97. package/docs/optimization-plan-2026-07.md +0 -366
  98. package/docs/optimization-plan.md +0 -644
  99. package/docs/patterns/command-agent-skill.md +0 -71
  100. package/docs/perf/baseline-2026-05.md +0 -113
  101. package/docs/perf/final-report-2026-05.md +0 -206
  102. package/docs/perf/optimization-plan-2026-07-verified.md +0 -396
  103. package/docs/perf/performance-audit-report-2026-07.md +0 -948
  104. package/docs/perf/performance-review-2026-07.md +0 -287
  105. package/docs/perf/sprint-1-report.md +0 -71
  106. package/docs/perf/sprint-2-report.md +0 -81
  107. package/docs/perf/sprint-2.5-report.md +0 -53
  108. package/docs/perf/sprint-3-report.md +0 -36
  109. package/docs/perf/sprint-4-report.md +0 -47
  110. package/docs/perf/sprint-5-report.md +0 -51
  111. package/docs/perf/sprint-6-report.md +0 -94
  112. package/docs/perf/sprint-7-report.md +0 -74
  113. package/docs/perf/upgrade-plan-2026-05.md +0 -147
  114. package/docs/performance-optimization-execution-plan.md +0 -520
  115. package/docs/phase4-triage.md +0 -58
  116. package/docs/pi-crew-investigation-report.md +0 -411
  117. package/docs/product/README.md +0 -31
  118. package/docs/product/platform.md +0 -27
  119. package/docs/product/runtime-safety.md +0 -37
  120. package/docs/product/team-run.md +0 -39
  121. package/docs/product/team-tool.md +0 -37
  122. package/docs/runtime-analysis-child-vs-live.md +0 -171
  123. package/docs/runtime-migration-in-process-analysis.md +0 -250
  124. package/docs/skills/REFERENCE.md +0 -138
  125. package/docs/stories/README.md +0 -32
  126. package/docs/stories/US-DEPS-major-upgrade.md +0 -62
  127. package/docs/stories/backlog.md +0 -36
  128. package/docs/superpowers/plans/2026-06-09-fallow-patterns-adoption.md +0 -1270
  129. package/docs/templates/decision.md +0 -27
  130. package/docs/templates/story.md +0 -44
  131. package/docs/templates/validation-report.md +0 -32
  132. package/docs/ui-optimization-plan.md +0 -447
  133. package/src/adapters/claude-adapter.ts +0 -23
  134. package/src/adapters/codex-adapter.ts +0 -21
  135. package/src/adapters/cursor-adapter.ts +0 -17
  136. package/src/adapters/export-util.ts +0 -143
  137. package/src/adapters/index.ts +0 -15
  138. package/src/adapters/registry.ts +0 -18
  139. package/src/adapters/types.ts +0 -23
  140. package/src/agents/agent-config.ts +0 -194
  141. package/src/agents/agent-search.ts +0 -98
  142. package/src/agents/agent-serializer.ts +0 -38
  143. package/src/agents/discover-agents.ts +0 -623
  144. package/src/benchmark/benchmark-runner.ts +0 -313
  145. package/src/benchmark/feedback-loop.ts +0 -73
  146. package/src/config/config.ts +0 -1269
  147. package/src/config/defaults.ts +0 -193
  148. package/src/config/drift-detector.ts +0 -290
  149. package/src/config/markers.ts +0 -330
  150. package/src/config/resilient-parser.ts +0 -117
  151. package/src/config/role-tools.ts +0 -118
  152. package/src/config/suggestions.ts +0 -75
  153. package/src/config/types.ts +0 -278
  154. package/src/errors.ts +0 -194
  155. package/src/extension/action-suggestions.ts +0 -117
  156. package/src/extension/async-notifier.ts +0 -179
  157. package/src/extension/autonomous-policy.ts +0 -209
  158. package/src/extension/command-completions.ts +0 -120
  159. package/src/extension/context-status-injection.ts +0 -185
  160. package/src/extension/crew-autocomplete.ts +0 -131
  161. package/src/extension/crew-cleanup.ts +0 -168
  162. package/src/extension/crew-input-router.ts +0 -93
  163. package/src/extension/crew-shortcuts.ts +0 -87
  164. package/src/extension/crew-vibes/cat-frames.ts +0 -18
  165. package/src/extension/crew-vibes/config.ts +0 -195
  166. package/src/extension/crew-vibes/figures.ts +0 -101
  167. package/src/extension/crew-vibes/font-detect.ts +0 -71
  168. package/src/extension/crew-vibes/footer.ts +0 -292
  169. package/src/extension/crew-vibes/index.ts +0 -432
  170. package/src/extension/crew-vibes/provider-usage.ts +0 -396
  171. package/src/extension/crew-vibes/render.ts +0 -206
  172. package/src/extension/crew-vibes/speed.ts +0 -286
  173. package/src/extension/cross-extension-rpc.ts +0 -350
  174. package/src/extension/help.ts +0 -62
  175. package/src/extension/import-index.ts +0 -74
  176. package/src/extension/knowledge-injection.ts +0 -402
  177. package/src/extension/management.ts +0 -571
  178. package/src/extension/message-renderers.ts +0 -108
  179. package/src/extension/notification-router.ts +0 -152
  180. package/src/extension/notification-sink.ts +0 -54
  181. package/src/extension/pi-api.ts +0 -56
  182. package/src/extension/plan-orchestrate.ts +0 -302
  183. package/src/extension/project-init.ts +0 -170
  184. package/src/extension/register.ts +0 -113
  185. package/src/extension/registration/artifact-cleanup.ts +0 -20
  186. package/src/extension/registration/command-registration.ts +0 -58
  187. package/src/extension/registration/command-utils.ts +0 -58
  188. package/src/extension/registration/commands.ts +0 -1228
  189. package/src/extension/registration/compaction-guard.ts +0 -333
  190. package/src/extension/registration/context-builder.ts +0 -135
  191. package/src/extension/registration/crash-recovery-cache.ts +0 -54
  192. package/src/extension/registration/foreground-run-controller.ts +0 -238
  193. package/src/extension/registration/hook-registration.ts +0 -119
  194. package/src/extension/registration/lazy-configurers.ts +0 -124
  195. package/src/extension/registration/lifecycle-handlers.ts +0 -923
  196. package/src/extension/registration/lifecycle.ts +0 -259
  197. package/src/extension/registration/observability.ts +0 -322
  198. package/src/extension/registration/registration-types.ts +0 -158
  199. package/src/extension/registration/runtime-cleanup.ts +0 -230
  200. package/src/extension/registration/subagent-helpers.ts +0 -125
  201. package/src/extension/registration/subagent-manager-setup.ts +0 -330
  202. package/src/extension/registration/subagent-tools.ts +0 -456
  203. package/src/extension/registration/team-tool.ts +0 -220
  204. package/src/extension/registration/tool-registration.ts +0 -50
  205. package/src/extension/registration/ui.ts +0 -172
  206. package/src/extension/registration/viewers.ts +0 -121
  207. package/src/extension/registration/wire-cross-extension.ts +0 -37
  208. package/src/extension/result-watcher.ts +0 -139
  209. package/src/extension/rpc-hmac.ts +0 -256
  210. package/src/extension/run-bundle-schema.ts +0 -104
  211. package/src/extension/run-export.ts +0 -97
  212. package/src/extension/run-import.ts +0 -168
  213. package/src/extension/run-index.ts +0 -131
  214. package/src/extension/run-maintenance.ts +0 -190
  215. package/src/extension/session-summary.ts +0 -18
  216. package/src/extension/team-manager-command.ts +0 -153
  217. package/src/extension/team-onboard.ts +0 -177
  218. package/src/extension/team-recommendation.ts +0 -288
  219. package/src/extension/team-tool/anchor.ts +0 -172
  220. package/src/extension/team-tool/api.ts +0 -1244
  221. package/src/extension/team-tool/auto-summarize.ts +0 -142
  222. package/src/extension/team-tool/cache-control.ts +0 -19
  223. package/src/extension/team-tool/cancel.ts +0 -337
  224. package/src/extension/team-tool/chain-dispatch.ts +0 -95
  225. package/src/extension/team-tool/chain-executor.ts +0 -379
  226. package/src/extension/team-tool/config-patch.ts +0 -50
  227. package/src/extension/team-tool/context.ts +0 -149
  228. package/src/extension/team-tool/destructive-gate.ts +0 -52
  229. package/src/extension/team-tool/doctor.ts +0 -431
  230. package/src/extension/team-tool/explain.ts +0 -282
  231. package/src/extension/team-tool/failure-patterns.ts +0 -118
  232. package/src/extension/team-tool/goal-wrap.ts +0 -330
  233. package/src/extension/team-tool/goal.ts +0 -556
  234. package/src/extension/team-tool/handle-schedule.ts +0 -332
  235. package/src/extension/team-tool/handle-settings.ts +0 -520
  236. package/src/extension/team-tool/health-monitor.ts +0 -481
  237. package/src/extension/team-tool/inspect.ts +0 -88
  238. package/src/extension/team-tool/intent-policy.ts +0 -45
  239. package/src/extension/team-tool/lifecycle-actions.ts +0 -615
  240. package/src/extension/team-tool/orchestrate.ts +0 -98
  241. package/src/extension/team-tool/parallel-dispatch.ts +0 -183
  242. package/src/extension/team-tool/plan.ts +0 -50
  243. package/src/extension/team-tool/respond.ts +0 -150
  244. package/src/extension/team-tool/run-not-found.ts +0 -49
  245. package/src/extension/team-tool/run.ts +0 -1035
  246. package/src/extension/team-tool/status.ts +0 -260
  247. package/src/extension/team-tool/workflow-manage.ts +0 -261
  248. package/src/extension/team-tool-types.ts +0 -26
  249. package/src/extension/team-tool.ts +0 -1116
  250. package/src/extension/tool-result.ts +0 -16
  251. package/src/extension/validate-resources.ts +0 -108
  252. package/src/hooks/registry.ts +0 -200
  253. package/src/hooks/types.ts +0 -69
  254. package/src/i18n.ts +0 -212
  255. package/src/observability/correlation.ts +0 -50
  256. package/src/observability/event-bus.ts +0 -86
  257. package/src/observability/event-to-metric.ts +0 -170
  258. package/src/observability/exporters/adapter.ts +0 -27
  259. package/src/observability/exporters/otlp-exporter.ts +0 -356
  260. package/src/observability/exporters/prometheus-exporter.ts +0 -54
  261. package/src/observability/metric-registry.ts +0 -100
  262. package/src/observability/metric-retention.ts +0 -64
  263. package/src/observability/metric-sink.ts +0 -99
  264. package/src/observability/metrics-primitives.ts +0 -219
  265. package/src/plugins/plugin-define.ts +0 -6
  266. package/src/plugins/plugin-registry.ts +0 -32
  267. package/src/plugins/plugins/index.ts +0 -3
  268. package/src/plugins/plugins/nextjs.ts +0 -19
  269. package/src/plugins/plugins/vite.ts +0 -10
  270. package/src/plugins/plugins/vitest.ts +0 -9
  271. package/src/prompt/prompt-runtime.ts +0 -380
  272. package/src/runtime/adaptive-plan.ts +0 -563
  273. package/src/runtime/agent-control.ts +0 -215
  274. package/src/runtime/agent-memory.ts +0 -81
  275. package/src/runtime/agent-observability.ts +0 -122
  276. package/src/runtime/anchor-manager.ts +0 -475
  277. package/src/runtime/async-marker.ts +0 -32
  278. package/src/runtime/async-runner.ts +0 -381
  279. package/src/runtime/attention-events.ts +0 -28
  280. package/src/runtime/auto-summarize.ts +0 -344
  281. package/src/runtime/background-runner.ts +0 -837
  282. package/src/runtime/batch-barrier.ts +0 -147
  283. package/src/runtime/broker-issuer.ts +0 -37
  284. package/src/runtime/cancellation-token.ts +0 -99
  285. package/src/runtime/cancellation.ts +0 -99
  286. package/src/runtime/capability-inventory.ts +0 -137
  287. package/src/runtime/chain-parser.ts +0 -237
  288. package/src/runtime/chain-runner.ts +0 -606
  289. package/src/runtime/checkpoint.ts +0 -291
  290. package/src/runtime/child-pi-constants.ts +0 -42
  291. package/src/runtime/child-pi-kill.ts +0 -180
  292. package/src/runtime/child-pi-pool.ts +0 -68
  293. package/src/runtime/child-pi-spawn.ts +0 -287
  294. package/src/runtime/child-pi-steering.ts +0 -128
  295. package/src/runtime/child-pi-streams.ts +0 -296
  296. package/src/runtime/child-pi-transcript.ts +0 -169
  297. package/src/runtime/child-pi.ts +0 -1105
  298. package/src/runtime/coalesce-tasks.ts +0 -268
  299. package/src/runtime/code-summary.ts +0 -292
  300. package/src/runtime/command-trace.ts +0 -105
  301. package/src/runtime/compact-pipeline.ts +0 -56
  302. package/src/runtime/compact-stages/ansi-strip-stage.ts +0 -25
  303. package/src/runtime/compact-stages/blank-collapse-stage.ts +0 -31
  304. package/src/runtime/compact-stages/deduplicate-stage.ts +0 -34
  305. package/src/runtime/compact-stages/head-snap-stage.ts +0 -57
  306. package/src/runtime/compact-stages/index.ts +0 -23
  307. package/src/runtime/compact-stages/tail-capture-stage.ts +0 -77
  308. package/src/runtime/compact-stages/truncation-stage.ts +0 -74
  309. package/src/runtime/compaction-summary.ts +0 -278
  310. package/src/runtime/completion-guard.ts +0 -207
  311. package/src/runtime/concurrency.ts +0 -58
  312. package/src/runtime/crash-classification.ts +0 -229
  313. package/src/runtime/crash-recovery.ts +0 -577
  314. package/src/runtime/crew-agent-records.ts +0 -593
  315. package/src/runtime/crew-agent-runtime.ts +0 -62
  316. package/src/runtime/crew-broker-child.ts +0 -88
  317. package/src/runtime/crew-broker-client.ts +0 -673
  318. package/src/runtime/crew-broker-tokens.ts +0 -84
  319. package/src/runtime/crew-broker.ts +0 -1276
  320. package/src/runtime/crew-hooks.ts +0 -227
  321. package/src/runtime/cross-extension-rpc.ts +0 -143
  322. package/src/runtime/custom-tools/irc-tool.ts +0 -282
  323. package/src/runtime/custom-tools/submit-result-tool.ts +0 -102
  324. package/src/runtime/deadletter.ts +0 -47
  325. package/src/runtime/delivery-coordinator.ts +0 -211
  326. package/src/runtime/delta-conflict.ts +0 -348
  327. package/src/runtime/deterministic-ast.ts +0 -161
  328. package/src/runtime/diagnostic-export.ts +0 -171
  329. package/src/runtime/direct-run.ts +0 -45
  330. package/src/runtime/dwf-state-store.ts +0 -102
  331. package/src/runtime/dynamic-workflow-context.ts +0 -1016
  332. package/src/runtime/dynamic-workflow-runner.ts +0 -310
  333. package/src/runtime/effectiveness.ts +0 -90
  334. package/src/runtime/errors/crew-errors.ts +0 -162
  335. package/src/runtime/event-stream-bridge.ts +0 -98
  336. package/src/runtime/foreground-control.ts +0 -193
  337. package/src/runtime/foreground-watchdog.ts +0 -132
  338. package/src/runtime/global-worker-cap.ts +0 -96
  339. package/src/runtime/goal-achievement.ts +0 -148
  340. package/src/runtime/goal-evaluator.ts +0 -361
  341. package/src/runtime/goal-loop-runner.ts +0 -828
  342. package/src/runtime/goal-state-store.ts +0 -219
  343. package/src/runtime/green-contract.ts +0 -55
  344. package/src/runtime/group-join.ts +0 -267
  345. package/src/runtime/handoff-manager.ts +0 -598
  346. package/src/runtime/heartbeat-gradient.ts +0 -36
  347. package/src/runtime/heartbeat-watcher.ts +0 -239
  348. package/src/runtime/hidden-handoff.ts +0 -407
  349. package/src/runtime/important-line-classifier.ts +0 -140
  350. package/src/runtime/intercom-bridge.ts +0 -187
  351. package/src/runtime/iteration-hooks.ts +0 -305
  352. package/src/runtime/live-agent-control.ts +0 -136
  353. package/src/runtime/live-agent-manager.ts +0 -704
  354. package/src/runtime/live-control-realtime.ts +0 -56
  355. package/src/runtime/live-extension-bridge.ts +0 -148
  356. package/src/runtime/live-irc.ts +0 -97
  357. package/src/runtime/live-session-health.ts +0 -108
  358. package/src/runtime/live-session-runtime.ts +0 -1139
  359. package/src/runtime/loop-gates.ts +0 -128
  360. package/src/runtime/manifest-cache.ts +0 -375
  361. package/src/runtime/mcp-proxy.ts +0 -105
  362. package/src/runtime/metric-parser.ts +0 -36
  363. package/src/runtime/model-fallback.ts +0 -409
  364. package/src/runtime/model-resolver.ts +0 -126
  365. package/src/runtime/model-scope.ts +0 -158
  366. package/src/runtime/orphan-worker-registry.ts +0 -465
  367. package/src/runtime/output-validator.ts +0 -202
  368. package/src/runtime/overflow-recovery.ts +0 -206
  369. package/src/runtime/parallel-research.ts +0 -68
  370. package/src/runtime/parallel-utils.ts +0 -160
  371. package/src/runtime/parent-guard.ts +0 -134
  372. package/src/runtime/path-overlap.ts +0 -150
  373. package/src/runtime/peer-dep.ts +0 -292
  374. package/src/runtime/per-write-validator.ts +0 -181
  375. package/src/runtime/phase-progress.ts +0 -217
  376. package/src/runtime/phase-tracker.ts +0 -385
  377. package/src/runtime/pi-args.ts +0 -655
  378. package/src/runtime/pi-json-output.ts +0 -170
  379. package/src/runtime/pi-spawn.ts +0 -273
  380. package/src/runtime/pipeline-runner.ts +0 -523
  381. package/src/runtime/plan-templates.ts +0 -201
  382. package/src/runtime/policy-engine.ts +0 -115
  383. package/src/runtime/post-checks.ts +0 -142
  384. package/src/runtime/post-exit-stdio-guard.ts +0 -104
  385. package/src/runtime/process-lifecycle.ts +0 -491
  386. package/src/runtime/process-status.ts +0 -154
  387. package/src/runtime/progress-event-coalescer.ts +0 -44
  388. package/src/runtime/progress-tracker.ts +0 -124
  389. package/src/runtime/prose-compressor.ts +0 -162
  390. package/src/runtime/recovery-recipes.ts +0 -203
  391. package/src/runtime/replace.ts +0 -570
  392. package/src/runtime/resilient-edit.ts +0 -153
  393. package/src/runtime/result-extractor.ts +0 -213
  394. package/src/runtime/retry-executor.ts +0 -100
  395. package/src/runtime/retry-runner.ts +0 -336
  396. package/src/runtime/role-permission.ts +0 -59
  397. package/src/runtime/run-coalesced-task-group.ts +0 -308
  398. package/src/runtime/run-drift.ts +0 -219
  399. package/src/runtime/run-tracker.ts +0 -116
  400. package/src/runtime/runtime-policy.ts +0 -29
  401. package/src/runtime/runtime-resolver.ts +0 -172
  402. package/src/runtime/runtime-warmup.ts +0 -160
  403. package/src/runtime/scheduler.ts +0 -353
  404. package/src/runtime/semaphore.ts +0 -141
  405. package/src/runtime/sensitive-paths.ts +0 -93
  406. package/src/runtime/session-resources.ts +0 -25
  407. package/src/runtime/session-snapshot.ts +0 -59
  408. package/src/runtime/session-usage.ts +0 -79
  409. package/src/runtime/settings-store.ts +0 -155
  410. package/src/runtime/sidechain-output.ts +0 -35
  411. package/src/runtime/single-agent-compose.ts +0 -84
  412. package/src/runtime/skill-effectiveness.ts +0 -524
  413. package/src/runtime/skill-instructions.ts +0 -391
  414. package/src/runtime/stale-reconciler.ts +0 -680
  415. package/src/runtime/stream-preview.ts +0 -184
  416. package/src/runtime/streaming-output.ts +0 -50
  417. package/src/runtime/subagent-manager.ts +0 -561
  418. package/src/runtime/subprocess-tool-registry.ts +0 -70
  419. package/src/runtime/supervisor-contact.ts +0 -64
  420. package/src/runtime/task-display.ts +0 -52
  421. package/src/runtime/task-graph-scheduler.ts +0 -227
  422. package/src/runtime/task-graph.ts +0 -290
  423. package/src/runtime/task-health.ts +0 -83
  424. package/src/runtime/task-id.ts +0 -161
  425. package/src/runtime/task-output-context.ts +0 -602
  426. package/src/runtime/task-packet.ts +0 -268
  427. package/src/runtime/task-quality.ts +0 -199
  428. package/src/runtime/task-runner/capabilities.ts +0 -78
  429. package/src/runtime/task-runner/context-retrieval.ts +0 -163
  430. package/src/runtime/task-runner/live-executor.ts +0 -227
  431. package/src/runtime/task-runner/output-splitter.ts +0 -152
  432. package/src/runtime/task-runner/progress.ts +0 -157
  433. package/src/runtime/task-runner/prompt-builder.ts +0 -278
  434. package/src/runtime/task-runner/prompt-pipeline.ts +0 -88
  435. package/src/runtime/task-runner/result-utils.ts +0 -16
  436. package/src/runtime/task-runner/retrieval-orchestrator.ts +0 -310
  437. package/src/runtime/task-runner/run-projection.ts +0 -125
  438. package/src/runtime/task-runner/state-helpers.ts +0 -176
  439. package/src/runtime/task-runner/tail-read.ts +0 -34
  440. package/src/runtime/task-runner.ts +0 -1420
  441. package/src/runtime/team-runner-artifacts.ts +0 -13
  442. package/src/runtime/team-runner.ts +0 -1993
  443. package/src/runtime/tool-output-pruner.ts +0 -333
  444. package/src/runtime/tool-progress.ts +0 -278
  445. package/src/runtime/usage-tracker.ts +0 -73
  446. package/src/runtime/verification-gates.ts +0 -571
  447. package/src/runtime/verification-integrity.ts +0 -105
  448. package/src/runtime/verification-worktree.ts +0 -186
  449. package/src/runtime/worker-heartbeat.ts +0 -25
  450. package/src/runtime/worker-startup.ts +0 -83
  451. package/src/runtime/workflow-state.ts +0 -195
  452. package/src/runtime/workspace-lock.ts +0 -443
  453. package/src/runtime/workspace-tree.ts +0 -312
  454. package/src/runtime/yield-handler.ts +0 -224
  455. package/src/runtime/zombie-scanner.ts +0 -298
  456. package/src/schema/config-schema.ts +0 -327
  457. package/src/schema/team-tool-schema.ts +0 -415
  458. package/src/schema/validation-types.ts +0 -159
  459. package/src/skills/discover-skills.ts +0 -197
  460. package/src/skills/skill-templates.ts +0 -456
  461. package/src/skills/validate.ts +0 -285
  462. package/src/state/active-run-registry.ts +0 -439
  463. package/src/state/artifact-store.ts +0 -176
  464. package/src/state/atomic-write.ts +0 -903
  465. package/src/state/blob-store.ts +0 -308
  466. package/src/state/contracts.ts +0 -158
  467. package/src/state/crew-init.ts +0 -269
  468. package/src/state/decision-ledger.ts +0 -345
  469. package/src/state/event-log-rotation.ts +0 -342
  470. package/src/state/event-log.ts +0 -1311
  471. package/src/state/event-reconstructor.ts +0 -229
  472. package/src/state/gitignore-manager.ts +0 -46
  473. package/src/state/health-store.ts +0 -79
  474. package/src/state/hook-instinct-bridge.ts +0 -94
  475. package/src/state/hook-integrations.ts +0 -51
  476. package/src/state/instinct-store.ts +0 -275
  477. package/src/state/jsonl-writer.ts +0 -107
  478. package/src/state/locks.ts +0 -562
  479. package/src/state/mailbox.ts +0 -916
  480. package/src/state/observation-store.ts +0 -176
  481. package/src/state/run-cache.ts +0 -193
  482. package/src/state/run-graph.ts +0 -183
  483. package/src/state/run-metrics.ts +0 -165
  484. package/src/state/schedule.ts +0 -166
  485. package/src/state/session-state-map.ts +0 -51
  486. package/src/state/state-store.ts +0 -958
  487. package/src/state/task-claims.ts +0 -61
  488. package/src/state/tiered-eval.ts +0 -480
  489. package/src/state/types-eval.ts +0 -58
  490. package/src/state/types.ts +0 -440
  491. package/src/state/usage.ts +0 -138
  492. package/src/state/worker-atomic-writer.ts +0 -194
  493. package/src/subagents/async-entry.ts +0 -1
  494. package/src/subagents/index.ts +0 -3
  495. package/src/subagents/live/control.ts +0 -1
  496. package/src/subagents/live/manager.ts +0 -1
  497. package/src/subagents/live/realtime.ts +0 -1
  498. package/src/subagents/live/session-runtime.ts +0 -1
  499. package/src/subagents/manager.ts +0 -1
  500. package/src/subagents/spawn.ts +0 -1
  501. package/src/teams/discover-teams.ts +0 -187
  502. package/src/teams/team-config.ts +0 -27
  503. package/src/teams/team-serializer.ts +0 -38
  504. package/src/tools/safe-bash-extension.ts +0 -54
  505. package/src/tools/safe-bash.ts +0 -505
  506. package/src/types/diff.d.ts +0 -18
  507. package/src/types/new-api-types.ts +0 -35
  508. package/src/ui/agent-management-overlay.ts +0 -160
  509. package/src/ui/card-colors.ts +0 -139
  510. package/src/ui/crew-footer.ts +0 -102
  511. package/src/ui/crew-select-list.ts +0 -111
  512. package/src/ui/dashboard-panes/agents-pane.ts +0 -164
  513. package/src/ui/dashboard-panes/cancellation-pane.ts +0 -66
  514. package/src/ui/dashboard-panes/capability-pane.ts +0 -77
  515. package/src/ui/dashboard-panes/health-pane.ts +0 -31
  516. package/src/ui/dashboard-panes/mailbox-pane.ts +0 -35
  517. package/src/ui/dashboard-panes/metrics-pane.ts +0 -37
  518. package/src/ui/dashboard-panes/progress-pane.ts +0 -38
  519. package/src/ui/dashboard-panes/transcript-pane.ts +0 -10
  520. package/src/ui/deploy-bundled-themes.ts +0 -71
  521. package/src/ui/dwf-phase-display.ts +0 -151
  522. package/src/ui/dynamic-border.ts +0 -35
  523. package/src/ui/heartbeat-aggregator.ts +0 -74
  524. package/src/ui/key-utils.ts +0 -42
  525. package/src/ui/keybinding-map.ts +0 -248
  526. package/src/ui/layout-primitives.ts +0 -106
  527. package/src/ui/live-conversation-overlay.ts +0 -183
  528. package/src/ui/live-duration.ts +0 -55
  529. package/src/ui/live-run-sidebar.ts +0 -301
  530. package/src/ui/loaders.ts +0 -176
  531. package/src/ui/mascot.ts +0 -436
  532. package/src/ui/overlays/agent-picker-overlay.ts +0 -65
  533. package/src/ui/overlays/confirm-overlay.ts +0 -60
  534. package/src/ui/overlays/help-overlay.ts +0 -177
  535. package/src/ui/overlays/mailbox-compose-overlay.ts +0 -181
  536. package/src/ui/overlays/mailbox-compose-preview.ts +0 -78
  537. package/src/ui/overlays/mailbox-detail-overlay.ts +0 -154
  538. package/src/ui/pi-ui-compat.ts +0 -68
  539. package/src/ui/powerbar-publisher.ts +0 -459
  540. package/src/ui/render-coalescer.ts +0 -101
  541. package/src/ui/render-diff.ts +0 -160
  542. package/src/ui/render-scheduler.ts +0 -224
  543. package/src/ui/run-action-dispatcher.ts +0 -182
  544. package/src/ui/run-dashboard.ts +0 -913
  545. package/src/ui/run-event-bus.ts +0 -381
  546. package/src/ui/run-snapshot-cache.ts +0 -1057
  547. package/src/ui/settings-overlay.ts +0 -1067
  548. package/src/ui/snapshot-types.ts +0 -90
  549. package/src/ui/spinner.ts +0 -17
  550. package/src/ui/status-colors.ts +0 -143
  551. package/src/ui/syntax-highlight.ts +0 -136
  552. package/src/ui/terminal-status.ts +0 -269
  553. package/src/ui/theme-adapter.ts +0 -271
  554. package/src/ui/theme-discovery.ts +0 -199
  555. package/src/ui/tool-progress-formatter.ts +0 -93
  556. package/src/ui/tool-render.ts +0 -453
  557. package/src/ui/tool-renderers/brief-mode.ts +0 -225
  558. package/src/ui/tool-renderers/index.ts +0 -726
  559. package/src/ui/transcript-cache.ts +0 -128
  560. package/src/ui/transcript-entries.ts +0 -256
  561. package/src/ui/transcript-viewer.ts +0 -424
  562. package/src/ui/widget/index.ts +0 -357
  563. package/src/ui/widget/widget-formatters.ts +0 -182
  564. package/src/ui/widget/widget-model.ts +0 -110
  565. package/src/ui/widget/widget-renderer.ts +0 -182
  566. package/src/ui/widget/widget-types.ts +0 -36
  567. package/src/utils/bm25-search.ts +0 -235
  568. package/src/utils/completion-dedupe.ts +0 -63
  569. package/src/utils/conflict-detect.ts +0 -668
  570. package/src/utils/env-allowlist.ts +0 -30
  571. package/src/utils/env-filter.ts +0 -155
  572. package/src/utils/file-coalescer.ts +0 -98
  573. package/src/utils/fingerprint.ts +0 -180
  574. package/src/utils/frontmatter.ts +0 -70
  575. package/src/utils/fs-watch.ts +0 -37
  576. package/src/utils/gh-protocol.ts +0 -556
  577. package/src/utils/git.ts +0 -260
  578. package/src/utils/guards.ts +0 -107
  579. package/src/utils/ids.ts +0 -24
  580. package/src/utils/incremental-reader.ts +0 -220
  581. package/src/utils/internal-error.ts +0 -10
  582. package/src/utils/names.ts +0 -36
  583. package/src/utils/ndjson.ts +0 -115
  584. package/src/utils/paths.ts +0 -227
  585. package/src/utils/project-detector.ts +0 -160
  586. package/src/utils/redaction.ts +0 -347
  587. package/src/utils/resolve-shell.ts +0 -36
  588. package/src/utils/run-watcher-registry.ts +0 -152
  589. package/src/utils/safe-paths.ts +0 -383
  590. package/src/utils/scan-cache.ts +0 -144
  591. package/src/utils/session-utils.ts +0 -110
  592. package/src/utils/sleep.ts +0 -54
  593. package/src/utils/socket-path.ts +0 -127
  594. package/src/utils/sse-parser.ts +0 -129
  595. package/src/utils/task-name-generator.ts +0 -337
  596. package/src/utils/timings.ts +0 -33
  597. package/src/utils/token-counter.ts +0 -200
  598. package/src/utils/visual.ts +0 -207
  599. package/src/workflows/cost-estimator.ts +0 -34
  600. package/src/workflows/discover-workflows.ts +0 -290
  601. package/src/workflows/intermediate-store.ts +0 -166
  602. package/src/workflows/preflight-validator.ts +0 -168
  603. package/src/workflows/topology-analyzer.ts +0 -203
  604. package/src/workflows/validate-workflow.ts +0 -50
  605. package/src/workflows/workflow-config.ts +0 -70
  606. package/src/workflows/workflow-serializer.ts +0 -32
  607. package/src/worktree/branch-freshness.ts +0 -112
  608. package/src/worktree/cleanup.ts +0 -341
  609. 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