pi-crew 0.9.16 → 0.9.18

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 (435) hide show
  1. package/CHANGELOG.md +130 -0
  2. package/README.md +19 -0
  3. package/dist/build-meta.json +21784 -0
  4. package/dist/index.mjs +83169 -0
  5. package/dist/index.mjs.map +7 -0
  6. package/docs/A +358 -0
  7. package/docs/M-A +357 -0
  8. package/docs/REVIEW-FINDINGS-2026-06 +357 -0
  9. package/docs/Y +357 -0
  10. package/docs/a +357 -0
  11. package/docs/aA +358 -0
  12. package/docs/archive/README.md +91 -0
  13. package/docs/migration/atomic-write-v2-migration.md +297 -0
  14. package/docs/patterns/command-agent-skill.md +1 -1
  15. package/docs/perf/performance-review-2026-07.md +287 -0
  16. package/docs/skills/REFERENCE.md +0 -17
  17. package/docs//303/242mmaAAA/303/242 +357 -0
  18. package/index.bundle.ts +25 -0
  19. package/index.ts +95 -4
  20. package/package.json +15 -4
  21. package/skills/iterative-audit/SKILL.md +0 -1
  22. package/skills/widget-rendering/SKILL.md +17 -0
  23. package/src/adapters/claude-adapter.ts +1 -3
  24. package/src/adapters/export-util.ts +16 -16
  25. package/src/adapters/index.ts +5 -5
  26. package/src/agents/agent-config.ts +20 -14
  27. package/src/agents/agent-serializer.ts +1 -1
  28. package/src/agents/discover-agents.ts +83 -39
  29. package/src/benchmark/benchmark-runner.ts +51 -51
  30. package/src/benchmark/feedback-loop.ts +1 -1
  31. package/src/config/config.ts +303 -591
  32. package/src/config/defaults.ts +28 -2
  33. package/src/config/drift-detector.ts +11 -14
  34. package/src/config/markers.ts +201 -203
  35. package/src/config/resilient-parser.ts +14 -6
  36. package/src/config/role-tools.ts +3 -3
  37. package/src/config/suggestions.ts +5 -12
  38. package/src/config/types.ts +9 -25
  39. package/src/errors.ts +151 -157
  40. package/src/extension/action-suggestions.ts +54 -9
  41. package/src/extension/async-notifier.ts +43 -13
  42. package/src/extension/autonomous-policy.ts +77 -37
  43. package/src/extension/command-completions.ts +9 -8
  44. package/src/extension/context-status-injection.ts +14 -12
  45. package/src/extension/crew-autocomplete.ts +8 -16
  46. package/src/extension/crew-cleanup.ts +2 -1
  47. package/src/extension/crew-shortcuts.ts +9 -6
  48. package/src/extension/cross-extension-rpc.ts +136 -42
  49. package/src/extension/help.ts +1 -1
  50. package/src/extension/import-index.ts +10 -5
  51. package/src/extension/knowledge-injection.ts +88 -15
  52. package/src/extension/management.ts +89 -349
  53. package/src/extension/message-renderers.ts +3 -4
  54. package/src/extension/notification-router.ts +22 -5
  55. package/src/extension/notification-sink.ts +6 -3
  56. package/src/extension/pi-api.ts +17 -8
  57. package/src/extension/plan-orchestrate.ts +8 -27
  58. package/src/extension/project-init.ts +21 -6
  59. package/src/extension/register.ts +329 -975
  60. package/src/extension/registration/artifact-cleanup.ts +9 -4
  61. package/src/extension/registration/command-utils.ts +5 -1
  62. package/src/extension/registration/commands.ts +806 -314
  63. package/src/extension/registration/compaction-guard.ts +15 -15
  64. package/src/extension/registration/lifecycle.ts +259 -0
  65. package/src/extension/registration/observability.ts +293 -0
  66. package/src/extension/registration/subagent-helpers.ts +29 -7
  67. package/src/extension/registration/subagent-tools.ts +253 -44
  68. package/src/extension/registration/team-tool.ts +19 -84
  69. package/src/extension/registration/ui.ts +168 -0
  70. package/src/extension/registration/viewers.ts +64 -24
  71. package/src/extension/result-watcher.ts +18 -7
  72. package/src/extension/run-bundle-schema.ts +21 -6
  73. package/src/extension/run-export.ts +15 -6
  74. package/src/extension/run-import.ts +64 -29
  75. package/src/extension/run-index.ts +28 -9
  76. package/src/extension/run-maintenance.ts +32 -12
  77. package/src/extension/session-summary.ts +1 -1
  78. package/src/extension/team-manager-command.ts +64 -7
  79. package/src/extension/team-onboard.ts +149 -150
  80. package/src/extension/team-recommendation.ts +121 -21
  81. package/src/extension/team-tool/anchor.ts +31 -64
  82. package/src/extension/team-tool/api.ts +929 -141
  83. package/src/extension/team-tool/auto-summarize.ts +14 -26
  84. package/src/extension/team-tool/cache-control.ts +1 -5
  85. package/src/extension/team-tool/cancel.ts +138 -38
  86. package/src/extension/team-tool/chain-dispatch.ts +5 -13
  87. package/src/extension/team-tool/chain-executor.ts +29 -51
  88. package/src/extension/team-tool/config-patch.ts +1 -1
  89. package/src/extension/team-tool/context.ts +40 -20
  90. package/src/extension/team-tool/destructive-gate.ts +10 -5
  91. package/src/extension/team-tool/doctor.ts +170 -51
  92. package/src/extension/team-tool/explain.ts +228 -214
  93. package/src/extension/team-tool/failure-patterns.ts +3 -9
  94. package/src/extension/team-tool/goal-wrap.ts +71 -29
  95. package/src/extension/team-tool/goal.ts +185 -35
  96. package/src/extension/team-tool/handle-schedule.ts +34 -15
  97. package/src/extension/team-tool/handle-settings.ts +94 -56
  98. package/src/extension/team-tool/health-monitor.ts +27 -108
  99. package/src/extension/team-tool/inspect.ts +42 -9
  100. package/src/extension/team-tool/intent-policy.ts +4 -1
  101. package/src/extension/team-tool/lifecycle-actions.ts +244 -48
  102. package/src/extension/team-tool/orchestrate.ts +7 -18
  103. package/src/extension/team-tool/parallel-dispatch.ts +51 -29
  104. package/src/extension/team-tool/plan.ts +29 -5
  105. package/src/extension/team-tool/respond.ts +49 -16
  106. package/src/extension/team-tool/run-not-found.ts +3 -8
  107. package/src/extension/team-tool/run.ts +80 -317
  108. package/src/extension/team-tool/status.ts +135 -43
  109. package/src/extension/team-tool/workflow-manage.ts +92 -25
  110. package/src/extension/team-tool-types.ts +8 -1
  111. package/src/extension/team-tool.ts +142 -551
  112. package/src/extension/validate-resources.ts +39 -8
  113. package/src/hooks/registry.ts +66 -17
  114. package/src/hooks/types.ts +1 -1
  115. package/src/i18n.ts +25 -11
  116. package/src/observability/correlation.ts +17 -3
  117. package/src/observability/event-bus.ts +51 -56
  118. package/src/observability/event-to-metric.ts +117 -15
  119. package/src/observability/exporters/otlp-exporter.ts +56 -17
  120. package/src/observability/exporters/prometheus-exporter.ts +1 -1
  121. package/src/observability/metric-registry.ts +16 -4
  122. package/src/observability/metric-retention.ts +8 -2
  123. package/src/observability/metric-sink.ts +11 -3
  124. package/src/observability/metrics-primitives.ts +42 -9
  125. package/src/plugins/plugin-define.ts +2 -2
  126. package/src/plugins/plugin-registry.ts +25 -25
  127. package/src/plugins/plugins/index.ts +1 -1
  128. package/src/plugins/plugins/nextjs.ts +16 -16
  129. package/src/plugins/plugins/vite.ts +7 -11
  130. package/src/plugins/plugins/vitest.ts +6 -11
  131. package/src/runtime/adaptive-plan.ts +225 -40
  132. package/src/runtime/agent-control.ts +58 -15
  133. package/src/runtime/agent-memory.ts +15 -9
  134. package/src/runtime/agent-observability.ts +10 -2
  135. package/src/runtime/anchor-manager.ts +27 -25
  136. package/src/runtime/async-marker.ts +7 -1
  137. package/src/runtime/async-runner.ts +39 -24
  138. package/src/runtime/auto-summarize.ts +7 -13
  139. package/src/runtime/background-runner.ts +189 -251
  140. package/src/runtime/batch-barrier.ts +18 -16
  141. package/src/runtime/cancellation-token.ts +16 -6
  142. package/src/runtime/cancellation.ts +46 -8
  143. package/src/runtime/capability-inventory.ts +6 -4
  144. package/src/runtime/chain-parser.ts +44 -11
  145. package/src/runtime/chain-runner.ts +63 -69
  146. package/src/runtime/checkpoint.ts +12 -56
  147. package/src/runtime/child-pi.ts +344 -79
  148. package/src/runtime/coalesce-tasks.ts +268 -0
  149. package/src/runtime/code-summary.ts +71 -26
  150. package/src/runtime/compact-stages/index.ts +15 -5
  151. package/src/runtime/compact-stages/tail-capture-stage.ts +7 -2
  152. package/src/runtime/compact-stages/truncation-stage.ts +4 -1
  153. package/src/runtime/compaction-summary.ts +17 -10
  154. package/src/runtime/completion-guard.ts +33 -16
  155. package/src/runtime/crash-classification.ts +28 -7
  156. package/src/runtime/crash-recovery.ts +177 -37
  157. package/src/runtime/crew-agent-records.ts +145 -47
  158. package/src/runtime/crew-hooks.ts +9 -24
  159. package/src/runtime/cross-extension-rpc.ts +25 -23
  160. package/src/runtime/custom-tools/irc-tool.ts +43 -15
  161. package/src/runtime/custom-tools/submit-result-tool.ts +16 -5
  162. package/src/runtime/delivery-coordinator.ts +34 -7
  163. package/src/runtime/delta-conflict.ts +9 -21
  164. package/src/runtime/deterministic-ast.ts +1 -1
  165. package/src/runtime/diagnostic-export.ts +53 -20
  166. package/src/runtime/direct-run.ts +12 -2
  167. package/src/runtime/dwf-state-store.ts +1 -1
  168. package/src/runtime/dynamic-workflow-context.ts +187 -59
  169. package/src/runtime/dynamic-workflow-runner.ts +42 -20
  170. package/src/runtime/effectiveness.ts +16 -8
  171. package/src/runtime/errors/crew-errors.ts +7 -11
  172. package/src/runtime/event-stream-bridge.ts +9 -3
  173. package/src/runtime/foreground-control.ts +54 -14
  174. package/src/runtime/foreground-watchdog.ts +9 -6
  175. package/src/runtime/goal-achievement.ts +27 -10
  176. package/src/runtime/goal-evaluator.ts +54 -19
  177. package/src/runtime/goal-loop-runner.ts +280 -99
  178. package/src/runtime/goal-state-store.ts +27 -17
  179. package/src/runtime/green-contract.ts +11 -2
  180. package/src/runtime/group-join.ts +64 -31
  181. package/src/runtime/handoff-manager.ts +37 -42
  182. package/src/runtime/heartbeat-gradient.ts +10 -2
  183. package/src/runtime/heartbeat-watcher.ts +32 -6
  184. package/src/runtime/hidden-handoff.ts +13 -31
  185. package/src/runtime/important-line-classifier.ts +12 -2
  186. package/src/runtime/iteration-hooks.ts +25 -15
  187. package/src/runtime/live-agent-control.ts +55 -7
  188. package/src/runtime/live-agent-manager.ts +130 -27
  189. package/src/runtime/live-control-realtime.ts +23 -3
  190. package/src/runtime/live-irc.ts +4 -1
  191. package/src/runtime/live-session-health.ts +12 -4
  192. package/src/runtime/live-session-runtime.ts +379 -117
  193. package/src/runtime/manifest-cache.ts +28 -12
  194. package/src/runtime/mcp-proxy.ts +10 -18
  195. package/src/runtime/metric-parser.ts +1 -5
  196. package/src/runtime/model-fallback.ts +55 -18
  197. package/src/runtime/model-resolver.ts +2 -6
  198. package/src/runtime/model-scope.ts +19 -3
  199. package/src/runtime/notebook-helpers.ts +60 -62
  200. package/src/runtime/orphan-worker-registry.ts +37 -26
  201. package/src/runtime/output-validator.ts +18 -3
  202. package/src/runtime/overflow-recovery.ts +5 -4
  203. package/src/runtime/parallel-research.ts +29 -5
  204. package/src/runtime/parallel-utils.ts +9 -11
  205. package/src/runtime/path-overlap.ts +150 -0
  206. package/src/runtime/peer-dep.ts +12 -17
  207. package/src/runtime/per-write-validator.ts +1 -3
  208. package/src/runtime/phase-tracker.ts +342 -330
  209. package/src/runtime/pi-args.ts +26 -8
  210. package/src/runtime/pi-json-output.ts +1 -1
  211. package/src/runtime/pi-spawn.ts +30 -19
  212. package/src/runtime/pipeline-runner.ts +56 -55
  213. package/src/runtime/plan-templates.ts +5 -6
  214. package/src/runtime/policy-engine.ts +43 -7
  215. package/src/runtime/post-checks.ts +12 -4
  216. package/src/runtime/post-exit-stdio-guard.ts +2 -2
  217. package/src/runtime/process-lifecycle.ts +20 -10
  218. package/src/runtime/process-status.ts +16 -5
  219. package/src/runtime/progress-event-coalescer.ts +2 -1
  220. package/src/runtime/progress-tracker.ts +103 -103
  221. package/src/runtime/prose-compressor.ts +9 -11
  222. package/src/runtime/recovery-recipes.ts +118 -24
  223. package/src/runtime/replace.ts +25 -10
  224. package/src/runtime/resilient-edit.ts +10 -25
  225. package/src/runtime/result-extractor.ts +2 -6
  226. package/src/runtime/retry-executor.ts +20 -4
  227. package/src/runtime/retry-runner.ts +27 -51
  228. package/src/runtime/role-permission.ts +6 -1
  229. package/src/runtime/run-coalesced-task-group.ts +256 -0
  230. package/src/runtime/run-drift.ts +14 -15
  231. package/src/runtime/run-tracker.ts +6 -28
  232. package/src/runtime/runtime-policy.ts +1 -6
  233. package/src/runtime/runtime-resolver.ts +80 -15
  234. package/src/runtime/scheduler.ts +47 -18
  235. package/src/runtime/semaphore.ts +5 -7
  236. package/src/runtime/sensitive-paths.ts +2 -1
  237. package/src/runtime/session-usage.ts +1 -1
  238. package/src/runtime/settings-store.ts +16 -12
  239. package/src/runtime/sidechain-output.ts +6 -2
  240. package/src/runtime/single-agent-compose.ts +1 -4
  241. package/src/runtime/skill-effectiveness.ts +29 -97
  242. package/src/runtime/skill-instructions.ts +40 -83
  243. package/src/runtime/stale-reconciler.ts +73 -197
  244. package/src/runtime/stream-preview.ts +1 -1
  245. package/src/runtime/streaming-output.ts +1 -1
  246. package/src/runtime/subagent-manager.ts +44 -169
  247. package/src/runtime/subprocess-tool-registry.ts +4 -1
  248. package/src/runtime/supervisor-contact.ts +10 -5
  249. package/src/runtime/task-display.ts +19 -5
  250. package/src/runtime/task-graph-scheduler.ts +95 -21
  251. package/src/runtime/task-graph.ts +5 -11
  252. package/src/runtime/task-health.ts +54 -47
  253. package/src/runtime/task-id.ts +12 -19
  254. package/src/runtime/task-output-context.ts +265 -81
  255. package/src/runtime/task-packet.ts +12 -20
  256. package/src/runtime/task-quality.ts +6 -14
  257. package/src/runtime/task-runner/context-retrieval.ts +4 -13
  258. package/src/runtime/task-runner/live-executor.ts +114 -36
  259. package/src/runtime/task-runner/output-splitter.ts +152 -0
  260. package/src/runtime/task-runner/progress.ts +50 -12
  261. package/src/runtime/task-runner/prompt-builder.ts +31 -7
  262. package/src/runtime/task-runner/prompt-pipeline.ts +31 -7
  263. package/src/runtime/task-runner/result-utils.ts +3 -1
  264. package/src/runtime/task-runner/retrieval-orchestrator.ts +310 -0
  265. package/src/runtime/task-runner/run-projection.ts +27 -8
  266. package/src/runtime/task-runner/state-helpers.ts +50 -14
  267. package/src/runtime/task-runner/tail-read.ts +2 -6
  268. package/src/runtime/task-runner.ts +180 -326
  269. package/src/runtime/team-runner-artifacts.ts +13 -0
  270. package/src/runtime/team-runner.ts +456 -974
  271. package/src/runtime/tool-output-pruner.ts +6 -9
  272. package/src/runtime/tool-progress.ts +11 -21
  273. package/src/runtime/verification-gates.ts +33 -24
  274. package/src/runtime/verification-integrity.ts +2 -7
  275. package/src/runtime/verification-worktree.ts +62 -12
  276. package/src/runtime/worker-heartbeat.ts +5 -1
  277. package/src/runtime/worker-startup.ts +29 -5
  278. package/src/runtime/workflow-state.ts +17 -9
  279. package/src/runtime/workspace-lock.ts +30 -35
  280. package/src/runtime/workspace-tree.ts +20 -32
  281. package/src/runtime/yield-handler.ts +43 -9
  282. package/src/runtime/zombie-scanner.ts +5 -4
  283. package/src/schema/config-schema.ts +266 -172
  284. package/src/schema/team-tool-schema.ts +29 -74
  285. package/src/schema/validation-types.ts +25 -17
  286. package/src/skills/discover-skills.ts +35 -10
  287. package/src/skills/skill-templates.ts +109 -27
  288. package/src/skills/validate.ts +26 -8
  289. package/src/state/active-run-registry.ts +87 -28
  290. package/src/state/artifact-store.ts +9 -5
  291. package/src/state/atomic-write-v2.ts +85 -63
  292. package/src/state/atomic-write.ts +106 -27
  293. package/src/state/blob-store.ts +47 -20
  294. package/src/state/contracts.ts +20 -5
  295. package/src/state/crew-init.ts +5 -22
  296. package/src/state/decision-ledger.ts +19 -73
  297. package/src/state/event-log-rotation.ts +41 -15
  298. package/src/state/event-log.ts +168 -53
  299. package/src/state/event-reconstructor.ts +11 -1
  300. package/src/state/gitignore-manager.ts +2 -8
  301. package/src/state/health-store.ts +57 -57
  302. package/src/state/hook-instinct-bridge.ts +1 -1
  303. package/src/state/hook-integrations.ts +1 -1
  304. package/src/state/instinct-store.ts +17 -5
  305. package/src/state/jsonl-writer.ts +1 -1
  306. package/src/state/locks.ts +23 -9
  307. package/src/state/mailbox.ts +151 -28
  308. package/src/state/observation-store.ts +20 -14
  309. package/src/state/run-cache.ts +142 -135
  310. package/src/state/run-graph.ts +6 -15
  311. package/src/state/run-metrics.ts +5 -18
  312. package/src/state/schedule.ts +15 -9
  313. package/src/state/state-store.ts +137 -47
  314. package/src/state/task-claims.ts +12 -2
  315. package/src/state/tiered-eval.ts +52 -43
  316. package/src/state/types-eval.ts +2 -2
  317. package/src/state/types.ts +24 -20
  318. package/src/state/usage.ts +20 -4
  319. package/src/state/worker-atomic-writer.ts +6 -3
  320. package/src/subagents/index.ts +2 -2
  321. package/src/teams/discover-teams.ts +21 -6
  322. package/src/tools/safe-bash-extension.ts +5 -6
  323. package/src/tools/safe-bash.ts +10 -11
  324. package/src/types/new-api-types.ts +6 -10
  325. package/src/ui/agent-management-overlay.ts +52 -40
  326. package/src/ui/card-colors.ts +13 -4
  327. package/src/ui/crew-footer.ts +8 -7
  328. package/src/ui/crew-select-list.ts +1 -1
  329. package/src/ui/dashboard-panes/agents-pane.ts +41 -25
  330. package/src/ui/dashboard-panes/cancellation-pane.ts +1 -1
  331. package/src/ui/dashboard-panes/capability-pane.ts +32 -15
  332. package/src/ui/dashboard-panes/health-pane.ts +2 -1
  333. package/src/ui/dashboard-panes/metrics-pane.ts +4 -1
  334. package/src/ui/dashboard-panes/progress-pane.ts +12 -9
  335. package/src/ui/heartbeat-aggregator.ts +15 -4
  336. package/src/ui/keybinding-map.ts +40 -7
  337. package/src/ui/live-conversation-overlay.ts +36 -20
  338. package/src/ui/live-duration.ts +1 -4
  339. package/src/ui/live-run-sidebar.ts +88 -25
  340. package/src/ui/loaders.ts +2 -8
  341. package/src/ui/mascot.ts +20 -36
  342. package/src/ui/overlays/agent-picker-overlay.ts +11 -3
  343. package/src/ui/overlays/confirm-overlay.ts +4 -2
  344. package/src/ui/overlays/help-overlay.ts +25 -14
  345. package/src/ui/overlays/mailbox-compose-overlay.ts +48 -11
  346. package/src/ui/overlays/mailbox-compose-preview.ts +20 -5
  347. package/src/ui/overlays/mailbox-detail-overlay.ts +27 -6
  348. package/src/ui/pi-ui-compat.ts +7 -7
  349. package/src/ui/powerbar-publisher.ts +120 -42
  350. package/src/ui/render-diff.ts +10 -3
  351. package/src/ui/render-scheduler.ts +12 -4
  352. package/src/ui/run-action-dispatcher.ts +81 -18
  353. package/src/ui/run-dashboard.ts +172 -76
  354. package/src/ui/run-event-bus.ts +59 -37
  355. package/src/ui/run-snapshot-cache.ts +276 -86
  356. package/src/ui/settings-overlay.ts +361 -74
  357. package/src/ui/status-colors.ts +12 -1
  358. package/src/ui/syntax-highlight.ts +1 -1
  359. package/src/ui/terminal-status.ts +1 -3
  360. package/src/ui/theme-adapter.ts +16 -14
  361. package/src/ui/theme-discovery.ts +13 -2
  362. package/src/ui/tool-progress-formatter.ts +7 -7
  363. package/src/ui/tool-render.ts +128 -56
  364. package/src/ui/tool-renderers/brief-mode.ts +45 -27
  365. package/src/ui/tool-renderers/index.ts +109 -43
  366. package/src/ui/transcript-cache.ts +32 -6
  367. package/src/ui/transcript-entries.ts +25 -23
  368. package/src/ui/transcript-viewer.ts +78 -29
  369. package/src/ui/widget/index.ts +99 -40
  370. package/src/ui/widget/widget-formatters.ts +13 -6
  371. package/src/ui/widget/widget-model.ts +19 -8
  372. package/src/ui/widget/widget-renderer.ts +23 -13
  373. package/src/ui/widget/widget-types.ts +1 -1
  374. package/src/utils/bm25-search.ts +199 -199
  375. package/src/utils/conflict-detect.ts +22 -21
  376. package/src/utils/env-filter.ts +14 -7
  377. package/src/utils/file-coalescer.ts +5 -1
  378. package/src/utils/fingerprint.ts +3 -6
  379. package/src/utils/frontmatter.ts +3 -1
  380. package/src/utils/fs-watch.ts +2 -6
  381. package/src/utils/gh-protocol.ts +119 -44
  382. package/src/utils/git.ts +13 -15
  383. package/src/utils/guards.ts +2 -5
  384. package/src/utils/ids.ts +9 -2
  385. package/src/utils/incremental-reader.ts +14 -3
  386. package/src/utils/internal-error.ts +2 -1
  387. package/src/utils/names.ts +12 -3
  388. package/src/utils/paths.ts +49 -5
  389. package/src/utils/project-detector.ts +2 -2
  390. package/src/utils/redaction.ts +29 -19
  391. package/src/utils/resolve-shell.ts +9 -7
  392. package/src/utils/run-watcher-registry.ts +19 -31
  393. package/src/utils/safe-paths.ts +46 -29
  394. package/src/utils/scan-cache.ts +9 -2
  395. package/src/utils/session-utils.ts +2 -4
  396. package/src/utils/sleep.ts +12 -5
  397. package/src/utils/sse-parser.ts +5 -17
  398. package/src/utils/visual.ts +52 -32
  399. package/src/workflows/discover-workflows.ts +41 -109
  400. package/src/workflows/intermediate-store.ts +5 -21
  401. package/src/workflows/preflight-validator.ts +6 -33
  402. package/src/workflows/topology-analyzer.ts +5 -21
  403. package/src/workflows/workflow-config.ts +7 -6
  404. package/src/worktree/branch-freshness.ts +66 -8
  405. package/src/worktree/cleanup.ts +130 -20
  406. package/src/worktree/worktree-manager.ts +212 -69
  407. package/skills/artifact-analysis-loop/SKILL.md +0 -303
  408. package/skills/detection-pipeline-design/SKILL.md +0 -286
  409. package/skills/hunting-investigation-loop/SKILL.md +0 -402
  410. package/skills/incident-playbook-construction/SKILL.md +0 -384
  411. package/skills/security-review/SKILL.md +0 -561
  412. package/skills/threat-hypothesis-framework/SKILL.md +0 -176
  413. package/skills/ui-render-performance/SKILL.md +0 -58
  414. /package/docs/{followup-review-round3-2026-05-12.md → archive/followup-review-round3-2026-05-12.md} +0 -0
  415. /package/docs/{followup-review-round4-2026-05-13.md → archive/followup-review-round4-2026-05-13.md} +0 -0
  416. /package/docs/{pi-crew-bugs.md → archive/pi-crew-bugs.md} +0 -0
  417. /package/docs/{pi-crew-test-final.md → archive/pi-crew-test-final.md} +0 -0
  418. /package/docs/{pi-crew-test-results.md → archive/pi-crew-test-results.md} +0 -0
  419. /package/docs/{pi-crew-test-round2.md → archive/pi-crew-test-round2.md} +0 -0
  420. /package/docs/{pi-crew-test-round4.md → archive/pi-crew-test-round4.md} +0 -0
  421. /package/docs/{pi-crew-test-round5.md → archive/pi-crew-test-round5.md} +0 -0
  422. /package/docs/{pi-crew-test-round6.md → archive/pi-crew-test-round6.md} +0 -0
  423. /package/docs/{pi-crew-v0.5.10-audit-fix-plan.md → archive/pi-crew-v0.5.10-audit-fix-plan.md} +0 -0
  424. /package/docs/{pi-crew-v0.5.11-audit-fix-plan.md → archive/pi-crew-v0.5.11-audit-fix-plan.md} +0 -0
  425. /package/docs/{pi-crew-v0.5.12-audit-fix-plan.md → archive/pi-crew-v0.5.12-audit-fix-plan.md} +0 -0
  426. /package/docs/{pi-crew-v0.5.13-audit-fix-plan.md → archive/pi-crew-v0.5.13-audit-fix-plan.md} +0 -0
  427. /package/docs/{pi-crew-v0.5.14-audit-fix-plan.md → archive/pi-crew-v0.5.14-audit-fix-plan.md} +0 -0
  428. /package/docs/{pi-crew-v0.5.16-audit-fix-plan.md → archive/pi-crew-v0.5.16-audit-fix-plan.md} +0 -0
  429. /package/docs/{pi-crew-v0.5.17-audit-fix-plan.md → archive/pi-crew-v0.5.17-audit-fix-plan.md} +0 -0
  430. /package/docs/{pi-crew-v0.5.5-audit-fix-plan.md → archive/pi-crew-v0.5.5-audit-fix-plan.md} +0 -0
  431. /package/docs/{pi-crew-v0.5.9-audit-fix-plan.md → archive/pi-crew-v0.5.9-audit-fix-plan.md} +0 -0
  432. /package/docs/{pi-mono-opportunities.md → archive/pi-mono-opportunities.md} +0 -0
  433. /package/docs/{pi-mono-review.md → archive/pi-mono-review.md} +0 -0
  434. /package/docs/{pi-subagent4-comparison.md → archive/pi-subagent4-comparison.md} +0 -0
  435. /package/docs/{pi-subagents3-deep-analysis.md → archive/pi-subagents3-deep-analysis.md} +0 -0
@@ -10,13 +10,13 @@ const MAX_HANDOFFS_PER_ANCHOR = 100;
10
10
 
11
11
  /**
12
12
  * AnchorManager - Creates shared summary points where multiple handoffs accumulate.
13
- *
13
+ *
14
14
  * Based on pi-boomerang's anchorMode pattern:
15
15
  * - setAnchor() creates a shared summary point for a session
16
16
  * - accumulateHandoff() adds handoffs to the anchor
17
17
  * - clearAnchor() finalizes and returns accumulated summaries
18
18
  * - getAnchorHandoff() retrieves accumulated summary without clearing
19
- *
19
+ *
20
20
  * @see docs/pi-boomerang-integration-plan.md
21
21
  */
22
22
 
@@ -89,7 +89,7 @@ export class AnchorManager {
89
89
  /**
90
90
  * Set an anchor point for a session.
91
91
  * All subsequent handoffs will accumulate to this anchor.
92
- *
92
+ *
93
93
  * @param sessionId - The session ID to create anchor for
94
94
  * @param context - Initial context for the anchor
95
95
  * @returns The anchor ID
@@ -121,7 +121,7 @@ export class AnchorManager {
121
121
 
122
122
  /**
123
123
  * Get the current anchor for a session.
124
- *
124
+ *
125
125
  * @param sessionId - The session ID
126
126
  * @returns The anchor if exists, null otherwise
127
127
  */
@@ -134,7 +134,7 @@ export class AnchorManager {
134
134
 
135
135
  /**
136
136
  * Get the anchor ID for a session.
137
- *
137
+ *
138
138
  * @param sessionId - The session ID
139
139
  * @returns The anchor ID if exists, undefined otherwise
140
140
  */
@@ -145,7 +145,7 @@ export class AnchorManager {
145
145
  /**
146
146
  * Clear an anchor and return the accumulated handoff summary.
147
147
  * This removes the anchor and returns merged handoffs.
148
- *
148
+ *
149
149
  * @param anchorId - The anchor ID to clear
150
150
  * @returns The accumulated handoff summary
151
151
  * @throws Error if anchor not found or no handoffs accumulated
@@ -163,14 +163,17 @@ export class AnchorManager {
163
163
  this.sessionAnchors.delete(anchor.sessionId);
164
164
  this.anchors.delete(anchorId);
165
165
 
166
- this.options.eventEmitter?.emit("anchor:cleared", { anchorId, accumulated });
166
+ this.options.eventEmitter?.emit("anchor:cleared", {
167
+ anchorId,
168
+ accumulated,
169
+ });
167
170
 
168
171
  return accumulated;
169
172
  }
170
173
 
171
174
  /**
172
175
  * Clear anchor by session ID.
173
- *
176
+ *
174
177
  * @param sessionId - The session ID
175
178
  * @returns The accumulated handoff summary
176
179
  */
@@ -183,7 +186,7 @@ export class AnchorManager {
183
186
  /**
184
187
  * Accumulate a handoff to an anchor.
185
188
  * If anchor doesn't exist, creates an implicit anchor.
186
- *
189
+ *
187
190
  * @param anchorId - The anchor ID
188
191
  * @param handoff - The handoff summary to accumulate
189
192
  */
@@ -224,7 +227,7 @@ export class AnchorManager {
224
227
 
225
228
  /**
226
229
  * Accumulate handoff by session ID.
227
- *
230
+ *
228
231
  * @param sessionId - The session ID
229
232
  * @param handoff - The handoff summary to accumulate
230
233
  */
@@ -241,7 +244,7 @@ export class AnchorManager {
241
244
 
242
245
  /**
243
246
  * Get the accumulated handoff for an anchor without clearing it.
244
- *
247
+ *
245
248
  * @param anchorId - The anchor ID
246
249
  * @returns The accumulated handoff summary, or null if anchor not found or no handoffs
247
250
  */
@@ -254,7 +257,7 @@ export class AnchorManager {
254
257
 
255
258
  /**
256
259
  * Get accumulated handoff by session ID.
257
- *
260
+ *
258
261
  * @param sessionId - The session ID
259
262
  * @returns The accumulated handoff summary, or null if no anchor or handoffs
260
263
  */
@@ -266,7 +269,7 @@ export class AnchorManager {
266
269
 
267
270
  /**
268
271
  * Get status information for an anchor.
269
- *
272
+ *
270
273
  * @param anchorId - The anchor ID
271
274
  * @returns Status object or null if anchor not found
272
275
  */
@@ -279,21 +282,15 @@ export class AnchorManager {
279
282
  sessionId: anchor.sessionId,
280
283
  createdAt: anchor.createdAt,
281
284
  handoffCount: anchor.handoffs.length,
282
- totalTokens: anchor.handoffs.reduce(
283
- (sum, h) => sum + h.metrics.tokensUsed,
284
- 0,
285
- ),
286
- totalDuration: anchor.handoffs.reduce(
287
- (sum, h) => sum + h.metrics.duration,
288
- 0,
289
- ),
285
+ totalTokens: anchor.handoffs.reduce((sum, h) => sum + h.metrics.tokensUsed, 0),
286
+ totalDuration: anchor.handoffs.reduce((sum, h) => sum + h.metrics.duration, 0),
290
287
  context: anchor.context,
291
288
  };
292
289
  }
293
290
 
294
291
  /**
295
292
  * Get status by session ID.
296
- *
293
+ *
297
294
  * @param sessionId - The session ID
298
295
  * @returns Status object or null if no anchor
299
296
  */
@@ -305,7 +302,7 @@ export class AnchorManager {
305
302
 
306
303
  /**
307
304
  * Check if an anchor has handoffs accumulated.
308
- *
305
+ *
309
306
  * @param anchorId - The anchor ID
310
307
  * @returns True if anchor has handoffs
311
308
  */
@@ -316,7 +313,7 @@ export class AnchorManager {
316
313
 
317
314
  /**
318
315
  * Get all anchors.
319
- *
316
+ *
320
317
  * @returns Array of all anchors
321
318
  */
322
319
  getAllAnchors(): Anchor[] {
@@ -347,7 +344,12 @@ export class AnchorManager {
347
344
  iterations: acc.iterations + h.metrics.iterations,
348
345
  toolsUsed: [...acc.toolsUsed, ...h.metrics.toolsUsed],
349
346
  }),
350
- { tokensUsed: 0, duration: 0, iterations: 0, toolsUsed: [] as string[] },
347
+ {
348
+ tokensUsed: 0,
349
+ duration: 0,
350
+ iterations: 0,
351
+ toolsUsed: [] as string[],
352
+ },
351
353
  );
352
354
 
353
355
  // Deduplicate tools
@@ -19,7 +19,13 @@ export function writeAsyncStartMarker(manifest: Pick<TeamRunManifest, "stateRoot
19
19
  export function hasAsyncStartMarker(manifest: Pick<TeamRunManifest, "stateRoot">): boolean {
20
20
  try {
21
21
  const raw = JSON.parse(fs.readFileSync(asyncStartMarkerPath(manifest), "utf-8")) as Partial<AsyncStartMarker>;
22
- return typeof raw.pid === "number" && Number.isInteger(raw.pid) && raw.pid > 0 && typeof raw.startedAt === "string" && raw.startedAt.length > 0;
22
+ return (
23
+ typeof raw.pid === "number" &&
24
+ Number.isInteger(raw.pid) &&
25
+ raw.pid > 0 &&
26
+ typeof raw.startedAt === "string" &&
27
+ raw.startedAt.length > 0
28
+ );
23
29
  } catch {
24
30
  return false;
25
31
  }
@@ -1,19 +1,16 @@
1
- import { spawn, type SpawnOptions } from "node:child_process";
2
- import { createRequire } from "node:module";
1
+ import { type SpawnOptions, spawn } from "node:child_process";
3
2
  import * as fs from "node:fs";
3
+ import { createRequire } from "node:module";
4
4
  import * as path from "node:path";
5
5
  import { fileURLToPath, pathToFileURL } from "node:url";
6
- import { WINDOWS_ESSENTIAL_ENV_VARS } from "../utils/env-allowlist.ts";
7
- import { logInternalError } from "../utils/internal-error.ts";
8
6
  import { appendEvent } from "../state/event-log.ts";
9
- import { sanitizeEnvSecrets } from "../utils/env-filter.ts";
10
- import { resolvePeerDepDir, PEER_DEP_DIR_ENV } from "./peer-dep.ts";
11
- import {
12
- registerWorker,
13
- unregisterWorker,
14
- } from "./orphan-worker-registry.ts";
15
7
  import type { TeamRunManifest } from "../state/types.ts";
16
-
8
+ import { WINDOWS_ESSENTIAL_ENV_VARS } from "../utils/env-allowlist.ts";
9
+ import { sanitizeEnvSecrets } from "../utils/env-filter.ts";
10
+ import { logInternalError } from "../utils/internal-error.ts";
11
+ import { packageRoot } from "../utils/paths.ts";
12
+ import { registerWorker, unregisterWorker } from "./orphan-worker-registry.ts";
13
+ import { PEER_DEP_DIR_ENV, resolvePeerDepDir } from "./peer-dep.ts";
17
14
 
18
15
  export type FileExists = (filePath: string) => boolean;
19
16
 
@@ -23,9 +20,7 @@ const requireFromHere = createRequire(import.meta.url);
23
20
  const STRIP_TYPES_MIN_MAJOR = 22;
24
21
  const STRIP_TYPES_MIN_MINOR = 6;
25
22
 
26
- export type LoaderSpec =
27
- | { kind: "jiti"; path: string }
28
- | { kind: "strip-types" };
23
+ export type LoaderSpec = { kind: "jiti"; path: string } | { kind: "strip-types" };
29
24
 
30
25
  type LoaderInput = LoaderSpec | string | false | undefined;
31
26
 
@@ -130,12 +125,21 @@ export function getBackgroundRunnerCommand(
130
125
  // don't want report files can opt out with PI_CREW_BG_REPORT_ON_FATAL=0.
131
126
  const reportOn = !(process.env.PI_CREW_BG_REPORT_ON_FATAL === "0" || process.env.PI_TEAMS_BG_REPORT_ON_FATAL === "0");
132
127
  const reportDir = reportDirectory ?? path.dirname(runnerPath);
133
- const reportFlags = reportOn
134
- ? ["--report-on-fatalerror", "--report-compact", `--report-directory=${reportDir}`]
135
- : [];
128
+ const reportFlags = reportOn ? ["--report-on-fatalerror", "--report-compact", `--report-directory=${reportDir}`] : [];
136
129
  if (loader.kind === "jiti") {
137
130
  return {
138
- args: [memoryLimit, ...reportFlags, "--trace-uncaught", "--import", pathToFileURL(loader.path).href, runnerPath, "--cwd", cwd, "--run-id", runId],
131
+ args: [
132
+ memoryLimit,
133
+ ...reportFlags,
134
+ "--trace-uncaught",
135
+ "--import",
136
+ pathToFileURL(loader.path).href,
137
+ runnerPath,
138
+ "--cwd",
139
+ cwd,
140
+ "--run-id",
141
+ runId,
142
+ ],
139
143
  loader: "jiti",
140
144
  };
141
145
  }
@@ -220,7 +224,17 @@ export const BACKGROUND_RUNNER_ENV_ALLOWLIST: string[] = [
220
224
  ];
221
225
 
222
226
  export async function spawnBackgroundTeamRun(manifest: TeamRunManifest): Promise<SpawnBackgroundTeamRunResult> {
223
- const runnerPath = path.join(path.dirname(fileURLToPath(import.meta.url)), "background-runner.ts");
227
+ // FIX (2026-07-02, perf review F-critical): use packageRoot() instead of
228
+ // import.meta.url-relative path. The previous path.resolve walks
229
+ // <bundleDir>/background-runner.ts, which is correct in src/ but BROKEN
230
+ // in the bundle: esbuild's __esm helper does not preserve per-module
231
+ // import.meta.url, so the resolve lands at <pi-crew>/background-runner.ts
232
+ // (missing `src/runtime/`). The background-runner then ENOENTs at spawn
233
+ // and 3 explorer agents failed during the verification run. packageRoot()
234
+ // walks up to find pi-crew's package.json and works correctly from both
235
+ // src/ and dist/ entry points. Mirrors the fix in pi-args.ts:10 (commit
236
+ // 0dd93e0).
237
+ const runnerPath = path.join(packageRoot(), "src", "runtime", "background-runner.ts");
224
238
  const logPath = path.join(manifest.stateRoot, "background.log");
225
239
  fs.mkdirSync(manifest.stateRoot, { recursive: true });
226
240
 
@@ -238,14 +252,16 @@ export async function spawnBackgroundTeamRun(manifest: TeamRunManifest): Promise
238
252
  // `npm root -g` probe. No-op when pi-crew and pi are co-located. See
239
253
  // src/runtime/peer-dep.ts.
240
254
  const peerDepDir = resolvePeerDepDir();
241
- const childEnv = peerDepDir
242
- ? { ...filteredEnv, [PEER_DEP_DIR_ENV]: peerDepDir }
243
- : filteredEnv;
255
+ const childEnv = peerDepDir ? { ...filteredEnv, [PEER_DEP_DIR_ENV]: peerDepDir } : filteredEnv;
244
256
 
245
257
  const loader = resolveTypeScriptLoader();
246
258
  if (!loader) {
247
259
  const message = buildLoaderUnavailableMessage(packageRootFromRuntime());
248
- appendEvent(manifest.eventsPath, { type: "async.failed", runId: manifest.runId, message });
260
+ appendEvent(manifest.eventsPath, {
261
+ type: "async.failed",
262
+ runId: manifest.runId,
263
+ message,
264
+ });
249
265
  throw new Error(message);
250
266
  }
251
267
  // Pass manifest.stateRoot as report-directory so V8 fatal reports land
@@ -345,4 +361,3 @@ export async function spawnBackgroundTeamRun(manifest: TeamRunManifest): Promise
345
361
 
346
362
  return { pid: child.pid, logPath };
347
363
  }
348
-
@@ -1,11 +1,11 @@
1
1
  /**
2
2
  * AutoSummarizeService - Enables auto-summarization with token/tool thresholds.
3
- *
3
+ *
4
4
  * Based on pi-boomerang's autoBoomerang pattern:
5
5
  * - toggle() enables/disables auto-summarization
6
6
  * - shouldAutoSummarize() checks if task should auto-summarize
7
7
  * - Token and tool thresholds control when summarization triggers
8
- *
8
+ *
9
9
  * @see docs/pi-boomerang-integration-plan.md
10
10
  */
11
11
 
@@ -72,11 +72,7 @@ export interface AutoSummarizeTriggeredEventData {
72
72
  /**
73
73
  * What triggered the auto-summarize.
74
74
  */
75
- export type AutoSummarizeTrigger =
76
- | "token_threshold"
77
- | "tools_threshold"
78
- | "manual"
79
- | "high_usage";
75
+ export type AutoSummarizeTrigger = "token_threshold" | "tools_threshold" | "manual" | "high_usage";
80
76
 
81
77
  /**
82
78
  * AutoSummarizeService enables automatic summarization based on configurable thresholds.
@@ -143,7 +139,7 @@ export class AutoSummarizeService {
143
139
 
144
140
  /**
145
141
  * Check if a task should auto-summarize.
146
- *
142
+ *
147
143
  * @param packet - The task packet
148
144
  * @param result - The task result
149
145
  * @returns True if the task should auto-summarize
@@ -180,7 +176,7 @@ export class AutoSummarizeService {
180
176
 
181
177
  /**
182
178
  * Get the reason why a task should (or should not) auto-summarize.
183
- *
179
+ *
184
180
  * @param packet - The task packet
185
181
  * @param result - The task result
186
182
  * @returns Object with shouldSummarize flag and reason
@@ -343,8 +339,6 @@ export interface AutoSummarizeDecision {
343
339
  /**
344
340
  * Create an AutoSummarizeService with default options.
345
341
  */
346
- export function createAutoSummarizeService(
347
- options?: AutoSummarizeServiceOptions,
348
- ): AutoSummarizeService {
342
+ export function createAutoSummarizeService(options?: AutoSummarizeServiceOptions): AutoSummarizeService {
349
343
  return new AutoSummarizeService(options);
350
- }
344
+ }