pi-crew 0.9.16 → 0.9.17

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 (432) hide show
  1. package/CHANGELOG.md +81 -0
  2. package/README.md +19 -0
  3. package/dist/build-meta.json +21790 -0
  4. package/dist/index.mjs +83070 -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/patterns/command-agent-skill.md +1 -1
  14. package/docs/skills/REFERENCE.md +0 -17
  15. package/docs//303/242mmaAAA/303/242 +357 -0
  16. package/index.bundle.ts +25 -0
  17. package/index.ts +95 -4
  18. package/package.json +15 -4
  19. package/skills/iterative-audit/SKILL.md +0 -1
  20. package/skills/widget-rendering/SKILL.md +17 -0
  21. package/src/adapters/claude-adapter.ts +1 -3
  22. package/src/adapters/export-util.ts +16 -16
  23. package/src/adapters/index.ts +5 -5
  24. package/src/agents/agent-config.ts +20 -14
  25. package/src/agents/agent-serializer.ts +1 -1
  26. package/src/agents/discover-agents.ts +83 -39
  27. package/src/benchmark/benchmark-runner.ts +51 -51
  28. package/src/benchmark/feedback-loop.ts +1 -1
  29. package/src/config/config.ts +166 -590
  30. package/src/config/defaults.ts +28 -2
  31. package/src/config/drift-detector.ts +11 -14
  32. package/src/config/markers.ts +201 -203
  33. package/src/config/resilient-parser.ts +14 -6
  34. package/src/config/role-tools.ts +3 -3
  35. package/src/config/suggestions.ts +5 -12
  36. package/src/config/types.ts +9 -25
  37. package/src/errors.ts +151 -157
  38. package/src/extension/action-suggestions.ts +54 -9
  39. package/src/extension/async-notifier.ts +43 -13
  40. package/src/extension/autonomous-policy.ts +77 -37
  41. package/src/extension/command-completions.ts +9 -8
  42. package/src/extension/context-status-injection.ts +14 -12
  43. package/src/extension/crew-autocomplete.ts +8 -16
  44. package/src/extension/crew-cleanup.ts +2 -1
  45. package/src/extension/crew-shortcuts.ts +9 -6
  46. package/src/extension/cross-extension-rpc.ts +136 -42
  47. package/src/extension/help.ts +1 -1
  48. package/src/extension/import-index.ts +10 -5
  49. package/src/extension/knowledge-injection.ts +88 -15
  50. package/src/extension/management.ts +89 -349
  51. package/src/extension/message-renderers.ts +3 -4
  52. package/src/extension/notification-router.ts +22 -5
  53. package/src/extension/notification-sink.ts +6 -3
  54. package/src/extension/pi-api.ts +17 -8
  55. package/src/extension/plan-orchestrate.ts +8 -27
  56. package/src/extension/project-init.ts +21 -6
  57. package/src/extension/register.ts +329 -975
  58. package/src/extension/registration/artifact-cleanup.ts +9 -4
  59. package/src/extension/registration/command-utils.ts +5 -1
  60. package/src/extension/registration/commands.ts +806 -314
  61. package/src/extension/registration/compaction-guard.ts +15 -15
  62. package/src/extension/registration/lifecycle.ts +259 -0
  63. package/src/extension/registration/observability.ts +293 -0
  64. package/src/extension/registration/subagent-helpers.ts +29 -7
  65. package/src/extension/registration/subagent-tools.ts +253 -44
  66. package/src/extension/registration/team-tool.ts +19 -84
  67. package/src/extension/registration/ui.ts +168 -0
  68. package/src/extension/registration/viewers.ts +64 -24
  69. package/src/extension/result-watcher.ts +18 -7
  70. package/src/extension/run-bundle-schema.ts +21 -6
  71. package/src/extension/run-export.ts +15 -6
  72. package/src/extension/run-import.ts +64 -29
  73. package/src/extension/run-index.ts +28 -9
  74. package/src/extension/run-maintenance.ts +32 -12
  75. package/src/extension/session-summary.ts +1 -1
  76. package/src/extension/team-manager-command.ts +64 -7
  77. package/src/extension/team-onboard.ts +151 -150
  78. package/src/extension/team-recommendation.ts +121 -21
  79. package/src/extension/team-tool/anchor.ts +31 -64
  80. package/src/extension/team-tool/api.ts +929 -141
  81. package/src/extension/team-tool/auto-summarize.ts +14 -26
  82. package/src/extension/team-tool/cache-control.ts +1 -5
  83. package/src/extension/team-tool/cancel.ts +138 -38
  84. package/src/extension/team-tool/chain-dispatch.ts +5 -13
  85. package/src/extension/team-tool/chain-executor.ts +29 -51
  86. package/src/extension/team-tool/config-patch.ts +1 -1
  87. package/src/extension/team-tool/context.ts +40 -20
  88. package/src/extension/team-tool/destructive-gate.ts +10 -5
  89. package/src/extension/team-tool/doctor.ts +170 -51
  90. package/src/extension/team-tool/explain.ts +228 -214
  91. package/src/extension/team-tool/failure-patterns.ts +3 -9
  92. package/src/extension/team-tool/goal-wrap.ts +71 -29
  93. package/src/extension/team-tool/goal.ts +185 -35
  94. package/src/extension/team-tool/handle-schedule.ts +34 -15
  95. package/src/extension/team-tool/handle-settings.ts +94 -56
  96. package/src/extension/team-tool/health-monitor.ts +27 -108
  97. package/src/extension/team-tool/inspect.ts +42 -9
  98. package/src/extension/team-tool/intent-policy.ts +4 -1
  99. package/src/extension/team-tool/lifecycle-actions.ts +244 -48
  100. package/src/extension/team-tool/orchestrate.ts +7 -18
  101. package/src/extension/team-tool/parallel-dispatch.ts +51 -29
  102. package/src/extension/team-tool/plan.ts +29 -5
  103. package/src/extension/team-tool/respond.ts +49 -16
  104. package/src/extension/team-tool/run-not-found.ts +3 -8
  105. package/src/extension/team-tool/run.ts +80 -317
  106. package/src/extension/team-tool/status.ts +135 -43
  107. package/src/extension/team-tool/workflow-manage.ts +92 -25
  108. package/src/extension/team-tool-types.ts +8 -1
  109. package/src/extension/team-tool.ts +142 -551
  110. package/src/extension/validate-resources.ts +39 -8
  111. package/src/hooks/registry.ts +66 -17
  112. package/src/hooks/types.ts +1 -1
  113. package/src/i18n.ts +25 -11
  114. package/src/observability/correlation.ts +17 -3
  115. package/src/observability/event-bus.ts +51 -56
  116. package/src/observability/event-to-metric.ts +117 -15
  117. package/src/observability/exporters/otlp-exporter.ts +56 -17
  118. package/src/observability/exporters/prometheus-exporter.ts +1 -1
  119. package/src/observability/metric-registry.ts +16 -4
  120. package/src/observability/metric-retention.ts +8 -2
  121. package/src/observability/metric-sink.ts +11 -3
  122. package/src/observability/metrics-primitives.ts +42 -9
  123. package/src/plugins/plugin-define.ts +2 -2
  124. package/src/plugins/plugin-registry.ts +25 -25
  125. package/src/plugins/plugins/index.ts +1 -1
  126. package/src/plugins/plugins/nextjs.ts +16 -16
  127. package/src/plugins/plugins/vite.ts +7 -11
  128. package/src/plugins/plugins/vitest.ts +6 -11
  129. package/src/runtime/adaptive-plan.ts +225 -40
  130. package/src/runtime/agent-control.ts +58 -15
  131. package/src/runtime/agent-memory.ts +15 -9
  132. package/src/runtime/agent-observability.ts +10 -2
  133. package/src/runtime/anchor-manager.ts +27 -25
  134. package/src/runtime/async-marker.ts +7 -1
  135. package/src/runtime/async-runner.ts +27 -23
  136. package/src/runtime/auto-summarize.ts +7 -13
  137. package/src/runtime/background-runner.ts +189 -251
  138. package/src/runtime/batch-barrier.ts +18 -16
  139. package/src/runtime/cancellation-token.ts +16 -6
  140. package/src/runtime/cancellation.ts +46 -8
  141. package/src/runtime/capability-inventory.ts +6 -4
  142. package/src/runtime/chain-parser.ts +44 -11
  143. package/src/runtime/chain-runner.ts +63 -69
  144. package/src/runtime/checkpoint.ts +12 -56
  145. package/src/runtime/child-pi.ts +343 -78
  146. package/src/runtime/coalesce-tasks.ts +268 -0
  147. package/src/runtime/code-summary.ts +71 -26
  148. package/src/runtime/compact-stages/index.ts +15 -5
  149. package/src/runtime/compact-stages/tail-capture-stage.ts +7 -2
  150. package/src/runtime/compact-stages/truncation-stage.ts +4 -1
  151. package/src/runtime/compaction-summary.ts +17 -10
  152. package/src/runtime/completion-guard.ts +33 -16
  153. package/src/runtime/crash-classification.ts +28 -7
  154. package/src/runtime/crash-recovery.ts +177 -37
  155. package/src/runtime/crew-agent-records.ts +145 -47
  156. package/src/runtime/crew-hooks.ts +9 -24
  157. package/src/runtime/cross-extension-rpc.ts +25 -23
  158. package/src/runtime/custom-tools/irc-tool.ts +43 -15
  159. package/src/runtime/custom-tools/submit-result-tool.ts +16 -5
  160. package/src/runtime/delivery-coordinator.ts +34 -7
  161. package/src/runtime/delta-conflict.ts +9 -21
  162. package/src/runtime/deterministic-ast.ts +1 -1
  163. package/src/runtime/diagnostic-export.ts +53 -20
  164. package/src/runtime/direct-run.ts +12 -2
  165. package/src/runtime/dwf-state-store.ts +1 -1
  166. package/src/runtime/dynamic-workflow-context.ts +186 -58
  167. package/src/runtime/dynamic-workflow-runner.ts +42 -20
  168. package/src/runtime/effectiveness.ts +16 -8
  169. package/src/runtime/errors/crew-errors.ts +7 -11
  170. package/src/runtime/event-stream-bridge.ts +9 -3
  171. package/src/runtime/foreground-control.ts +54 -14
  172. package/src/runtime/foreground-watchdog.ts +9 -6
  173. package/src/runtime/goal-achievement.ts +27 -10
  174. package/src/runtime/goal-evaluator.ts +54 -19
  175. package/src/runtime/goal-loop-runner.ts +280 -99
  176. package/src/runtime/goal-state-store.ts +27 -17
  177. package/src/runtime/green-contract.ts +11 -2
  178. package/src/runtime/group-join.ts +64 -31
  179. package/src/runtime/handoff-manager.ts +37 -42
  180. package/src/runtime/heartbeat-gradient.ts +10 -2
  181. package/src/runtime/heartbeat-watcher.ts +32 -6
  182. package/src/runtime/hidden-handoff.ts +12 -30
  183. package/src/runtime/important-line-classifier.ts +12 -2
  184. package/src/runtime/iteration-hooks.ts +25 -15
  185. package/src/runtime/live-agent-control.ts +55 -7
  186. package/src/runtime/live-agent-manager.ts +130 -27
  187. package/src/runtime/live-control-realtime.ts +23 -3
  188. package/src/runtime/live-irc.ts +4 -1
  189. package/src/runtime/live-session-health.ts +12 -4
  190. package/src/runtime/live-session-runtime.ts +379 -117
  191. package/src/runtime/manifest-cache.ts +28 -12
  192. package/src/runtime/mcp-proxy.ts +8 -16
  193. package/src/runtime/metric-parser.ts +1 -5
  194. package/src/runtime/model-fallback.ts +55 -18
  195. package/src/runtime/model-resolver.ts +2 -6
  196. package/src/runtime/model-scope.ts +19 -3
  197. package/src/runtime/notebook-helpers.ts +60 -62
  198. package/src/runtime/orphan-worker-registry.ts +37 -26
  199. package/src/runtime/output-validator.ts +18 -3
  200. package/src/runtime/overflow-recovery.ts +5 -4
  201. package/src/runtime/parallel-research.ts +29 -5
  202. package/src/runtime/parallel-utils.ts +9 -11
  203. package/src/runtime/path-overlap.ts +150 -0
  204. package/src/runtime/peer-dep.ts +12 -17
  205. package/src/runtime/per-write-validator.ts +1 -3
  206. package/src/runtime/phase-tracker.ts +342 -330
  207. package/src/runtime/pi-args.ts +26 -8
  208. package/src/runtime/pi-json-output.ts +1 -1
  209. package/src/runtime/pi-spawn.ts +30 -19
  210. package/src/runtime/pipeline-runner.ts +56 -55
  211. package/src/runtime/plan-templates.ts +5 -6
  212. package/src/runtime/policy-engine.ts +43 -7
  213. package/src/runtime/post-checks.ts +12 -4
  214. package/src/runtime/post-exit-stdio-guard.ts +2 -2
  215. package/src/runtime/process-lifecycle.ts +20 -10
  216. package/src/runtime/process-status.ts +16 -5
  217. package/src/runtime/progress-event-coalescer.ts +2 -1
  218. package/src/runtime/progress-tracker.ts +103 -103
  219. package/src/runtime/prose-compressor.ts +9 -11
  220. package/src/runtime/recovery-recipes.ts +118 -24
  221. package/src/runtime/replace.ts +25 -10
  222. package/src/runtime/resilient-edit.ts +10 -25
  223. package/src/runtime/result-extractor.ts +1 -2
  224. package/src/runtime/retry-executor.ts +20 -4
  225. package/src/runtime/retry-runner.ts +26 -50
  226. package/src/runtime/role-permission.ts +6 -1
  227. package/src/runtime/run-coalesced-task-group.ts +256 -0
  228. package/src/runtime/run-drift.ts +14 -15
  229. package/src/runtime/run-tracker.ts +6 -28
  230. package/src/runtime/runtime-policy.ts +1 -6
  231. package/src/runtime/runtime-resolver.ts +80 -15
  232. package/src/runtime/scheduler.ts +47 -18
  233. package/src/runtime/semaphore.ts +5 -7
  234. package/src/runtime/sensitive-paths.ts +2 -1
  235. package/src/runtime/session-usage.ts +1 -1
  236. package/src/runtime/settings-store.ts +16 -12
  237. package/src/runtime/sidechain-output.ts +6 -2
  238. package/src/runtime/single-agent-compose.ts +1 -4
  239. package/src/runtime/skill-effectiveness.ts +29 -97
  240. package/src/runtime/skill-instructions.ts +40 -83
  241. package/src/runtime/stale-reconciler.ts +73 -197
  242. package/src/runtime/stream-preview.ts +1 -1
  243. package/src/runtime/streaming-output.ts +1 -1
  244. package/src/runtime/subagent-manager.ts +44 -169
  245. package/src/runtime/subprocess-tool-registry.ts +4 -1
  246. package/src/runtime/supervisor-contact.ts +10 -5
  247. package/src/runtime/task-display.ts +19 -5
  248. package/src/runtime/task-graph-scheduler.ts +95 -21
  249. package/src/runtime/task-graph.ts +5 -11
  250. package/src/runtime/task-health.ts +54 -47
  251. package/src/runtime/task-id.ts +11 -18
  252. package/src/runtime/task-output-context.ts +265 -81
  253. package/src/runtime/task-packet.ts +12 -20
  254. package/src/runtime/task-quality.ts +6 -14
  255. package/src/runtime/task-runner/context-retrieval.ts +4 -13
  256. package/src/runtime/task-runner/live-executor.ts +114 -36
  257. package/src/runtime/task-runner/output-splitter.ts +152 -0
  258. package/src/runtime/task-runner/progress.ts +50 -12
  259. package/src/runtime/task-runner/prompt-builder.ts +31 -7
  260. package/src/runtime/task-runner/prompt-pipeline.ts +31 -7
  261. package/src/runtime/task-runner/result-utils.ts +3 -1
  262. package/src/runtime/task-runner/retrieval-orchestrator.ts +310 -0
  263. package/src/runtime/task-runner/run-projection.ts +27 -8
  264. package/src/runtime/task-runner/state-helpers.ts +29 -8
  265. package/src/runtime/task-runner/tail-read.ts +2 -6
  266. package/src/runtime/task-runner.ts +180 -326
  267. package/src/runtime/team-runner-artifacts.ts +13 -0
  268. package/src/runtime/team-runner.ts +456 -974
  269. package/src/runtime/tool-output-pruner.ts +6 -9
  270. package/src/runtime/tool-progress.ts +11 -21
  271. package/src/runtime/verification-gates.ts +33 -24
  272. package/src/runtime/verification-integrity.ts +1 -4
  273. package/src/runtime/verification-worktree.ts +62 -12
  274. package/src/runtime/worker-heartbeat.ts +5 -1
  275. package/src/runtime/worker-startup.ts +29 -5
  276. package/src/runtime/workflow-state.ts +17 -9
  277. package/src/runtime/workspace-lock.ts +30 -35
  278. package/src/runtime/workspace-tree.ts +20 -32
  279. package/src/runtime/yield-handler.ts +43 -9
  280. package/src/runtime/zombie-scanner.ts +5 -4
  281. package/src/schema/config-schema.ts +266 -172
  282. package/src/schema/team-tool-schema.ts +29 -74
  283. package/src/schema/validation-types.ts +25 -17
  284. package/src/skills/discover-skills.ts +35 -10
  285. package/src/skills/skill-templates.ts +109 -27
  286. package/src/skills/validate.ts +26 -8
  287. package/src/state/active-run-registry.ts +87 -28
  288. package/src/state/artifact-store.ts +9 -5
  289. package/src/state/atomic-write-v2.ts +85 -63
  290. package/src/state/atomic-write.ts +105 -26
  291. package/src/state/blob-store.ts +47 -20
  292. package/src/state/contracts.ts +20 -5
  293. package/src/state/crew-init.ts +5 -22
  294. package/src/state/decision-ledger.ts +19 -73
  295. package/src/state/event-log-rotation.ts +41 -15
  296. package/src/state/event-log.ts +168 -53
  297. package/src/state/event-reconstructor.ts +11 -1
  298. package/src/state/gitignore-manager.ts +2 -8
  299. package/src/state/health-store.ts +57 -57
  300. package/src/state/hook-instinct-bridge.ts +1 -1
  301. package/src/state/hook-integrations.ts +1 -1
  302. package/src/state/instinct-store.ts +17 -5
  303. package/src/state/jsonl-writer.ts +1 -1
  304. package/src/state/locks.ts +23 -9
  305. package/src/state/mailbox.ts +151 -28
  306. package/src/state/observation-store.ts +20 -14
  307. package/src/state/run-cache.ts +142 -135
  308. package/src/state/run-graph.ts +6 -15
  309. package/src/state/run-metrics.ts +5 -18
  310. package/src/state/schedule.ts +15 -9
  311. package/src/state/state-store.ts +129 -45
  312. package/src/state/task-claims.ts +12 -2
  313. package/src/state/tiered-eval.ts +52 -43
  314. package/src/state/types-eval.ts +2 -2
  315. package/src/state/types.ts +24 -20
  316. package/src/state/usage.ts +20 -4
  317. package/src/state/worker-atomic-writer.ts +6 -3
  318. package/src/subagents/index.ts +2 -2
  319. package/src/teams/discover-teams.ts +21 -6
  320. package/src/tools/safe-bash-extension.ts +5 -6
  321. package/src/tools/safe-bash.ts +10 -11
  322. package/src/types/new-api-types.ts +6 -10
  323. package/src/ui/agent-management-overlay.ts +52 -40
  324. package/src/ui/card-colors.ts +13 -4
  325. package/src/ui/crew-footer.ts +8 -7
  326. package/src/ui/crew-select-list.ts +1 -1
  327. package/src/ui/dashboard-panes/agents-pane.ts +41 -25
  328. package/src/ui/dashboard-panes/cancellation-pane.ts +1 -1
  329. package/src/ui/dashboard-panes/capability-pane.ts +32 -15
  330. package/src/ui/dashboard-panes/health-pane.ts +2 -1
  331. package/src/ui/dashboard-panes/metrics-pane.ts +4 -1
  332. package/src/ui/dashboard-panes/progress-pane.ts +12 -9
  333. package/src/ui/heartbeat-aggregator.ts +15 -4
  334. package/src/ui/keybinding-map.ts +40 -7
  335. package/src/ui/live-conversation-overlay.ts +36 -20
  336. package/src/ui/live-duration.ts +1 -4
  337. package/src/ui/live-run-sidebar.ts +88 -25
  338. package/src/ui/loaders.ts +2 -8
  339. package/src/ui/mascot.ts +20 -36
  340. package/src/ui/overlays/agent-picker-overlay.ts +11 -3
  341. package/src/ui/overlays/confirm-overlay.ts +4 -2
  342. package/src/ui/overlays/help-overlay.ts +25 -14
  343. package/src/ui/overlays/mailbox-compose-overlay.ts +48 -11
  344. package/src/ui/overlays/mailbox-compose-preview.ts +20 -5
  345. package/src/ui/overlays/mailbox-detail-overlay.ts +27 -6
  346. package/src/ui/pi-ui-compat.ts +7 -7
  347. package/src/ui/powerbar-publisher.ts +120 -42
  348. package/src/ui/render-diff.ts +10 -3
  349. package/src/ui/render-scheduler.ts +12 -4
  350. package/src/ui/run-action-dispatcher.ts +81 -18
  351. package/src/ui/run-dashboard.ts +172 -76
  352. package/src/ui/run-event-bus.ts +59 -37
  353. package/src/ui/run-snapshot-cache.ts +276 -86
  354. package/src/ui/settings-overlay.ts +361 -74
  355. package/src/ui/status-colors.ts +12 -1
  356. package/src/ui/syntax-highlight.ts +1 -1
  357. package/src/ui/theme-adapter.ts +16 -14
  358. package/src/ui/theme-discovery.ts +13 -2
  359. package/src/ui/tool-progress-formatter.ts +7 -7
  360. package/src/ui/tool-render.ts +128 -56
  361. package/src/ui/tool-renderers/brief-mode.ts +45 -27
  362. package/src/ui/tool-renderers/index.ts +109 -43
  363. package/src/ui/transcript-cache.ts +32 -6
  364. package/src/ui/transcript-entries.ts +25 -23
  365. package/src/ui/transcript-viewer.ts +78 -29
  366. package/src/ui/widget/index.ts +99 -40
  367. package/src/ui/widget/widget-formatters.ts +13 -6
  368. package/src/ui/widget/widget-model.ts +19 -8
  369. package/src/ui/widget/widget-renderer.ts +23 -13
  370. package/src/ui/widget/widget-types.ts +1 -1
  371. package/src/utils/bm25-search.ts +199 -199
  372. package/src/utils/conflict-detect.ts +22 -21
  373. package/src/utils/env-filter.ts +14 -7
  374. package/src/utils/file-coalescer.ts +5 -1
  375. package/src/utils/fingerprint.ts +3 -6
  376. package/src/utils/frontmatter.ts +3 -1
  377. package/src/utils/fs-watch.ts +2 -6
  378. package/src/utils/gh-protocol.ts +119 -44
  379. package/src/utils/git.ts +13 -15
  380. package/src/utils/guards.ts +2 -5
  381. package/src/utils/ids.ts +9 -2
  382. package/src/utils/incremental-reader.ts +14 -3
  383. package/src/utils/internal-error.ts +2 -1
  384. package/src/utils/names.ts +12 -3
  385. package/src/utils/paths.ts +49 -5
  386. package/src/utils/project-detector.ts +2 -2
  387. package/src/utils/redaction.ts +29 -19
  388. package/src/utils/resolve-shell.ts +9 -7
  389. package/src/utils/run-watcher-registry.ts +19 -31
  390. package/src/utils/safe-paths.ts +45 -24
  391. package/src/utils/scan-cache.ts +9 -2
  392. package/src/utils/session-utils.ts +2 -4
  393. package/src/utils/sleep.ts +12 -5
  394. package/src/utils/sse-parser.ts +5 -17
  395. package/src/utils/visual.ts +52 -32
  396. package/src/workflows/discover-workflows.ts +41 -109
  397. package/src/workflows/intermediate-store.ts +5 -21
  398. package/src/workflows/preflight-validator.ts +6 -33
  399. package/src/workflows/topology-analyzer.ts +5 -21
  400. package/src/workflows/workflow-config.ts +7 -6
  401. package/src/worktree/branch-freshness.ts +66 -8
  402. package/src/worktree/cleanup.ts +130 -20
  403. package/src/worktree/worktree-manager.ts +212 -69
  404. package/skills/artifact-analysis-loop/SKILL.md +0 -303
  405. package/skills/detection-pipeline-design/SKILL.md +0 -286
  406. package/skills/hunting-investigation-loop/SKILL.md +0 -402
  407. package/skills/incident-playbook-construction/SKILL.md +0 -384
  408. package/skills/security-review/SKILL.md +0 -561
  409. package/skills/threat-hypothesis-framework/SKILL.md +0 -176
  410. package/skills/ui-render-performance/SKILL.md +0 -58
  411. /package/docs/{followup-review-round3-2026-05-12.md → archive/followup-review-round3-2026-05-12.md} +0 -0
  412. /package/docs/{followup-review-round4-2026-05-13.md → archive/followup-review-round4-2026-05-13.md} +0 -0
  413. /package/docs/{pi-crew-bugs.md → archive/pi-crew-bugs.md} +0 -0
  414. /package/docs/{pi-crew-test-final.md → archive/pi-crew-test-final.md} +0 -0
  415. /package/docs/{pi-crew-test-results.md → archive/pi-crew-test-results.md} +0 -0
  416. /package/docs/{pi-crew-test-round2.md → archive/pi-crew-test-round2.md} +0 -0
  417. /package/docs/{pi-crew-test-round4.md → archive/pi-crew-test-round4.md} +0 -0
  418. /package/docs/{pi-crew-test-round5.md → archive/pi-crew-test-round5.md} +0 -0
  419. /package/docs/{pi-crew-test-round6.md → archive/pi-crew-test-round6.md} +0 -0
  420. /package/docs/{pi-crew-v0.5.10-audit-fix-plan.md → archive/pi-crew-v0.5.10-audit-fix-plan.md} +0 -0
  421. /package/docs/{pi-crew-v0.5.11-audit-fix-plan.md → archive/pi-crew-v0.5.11-audit-fix-plan.md} +0 -0
  422. /package/docs/{pi-crew-v0.5.12-audit-fix-plan.md → archive/pi-crew-v0.5.12-audit-fix-plan.md} +0 -0
  423. /package/docs/{pi-crew-v0.5.13-audit-fix-plan.md → archive/pi-crew-v0.5.13-audit-fix-plan.md} +0 -0
  424. /package/docs/{pi-crew-v0.5.14-audit-fix-plan.md → archive/pi-crew-v0.5.14-audit-fix-plan.md} +0 -0
  425. /package/docs/{pi-crew-v0.5.16-audit-fix-plan.md → archive/pi-crew-v0.5.16-audit-fix-plan.md} +0 -0
  426. /package/docs/{pi-crew-v0.5.17-audit-fix-plan.md → archive/pi-crew-v0.5.17-audit-fix-plan.md} +0 -0
  427. /package/docs/{pi-crew-v0.5.5-audit-fix-plan.md → archive/pi-crew-v0.5.5-audit-fix-plan.md} +0 -0
  428. /package/docs/{pi-crew-v0.5.9-audit-fix-plan.md → archive/pi-crew-v0.5.9-audit-fix-plan.md} +0 -0
  429. /package/docs/{pi-mono-opportunities.md → archive/pi-mono-opportunities.md} +0 -0
  430. /package/docs/{pi-mono-review.md → archive/pi-mono-review.md} +0 -0
  431. /package/docs/{pi-subagent4-comparison.md → archive/pi-subagent4-comparison.md} +0 -0
  432. /package/docs/{pi-subagents3-deep-analysis.md → archive/pi-subagents3-deep-analysis.md} +0 -0
@@ -1,561 +0,0 @@
1
- ---
2
- name: security-review
3
- description: "Security review patterns with audit and detection authoring."
4
- origin: distilled:anthropic-cybersecurity-skills
5
- triggers:
6
- - "security review"
7
- - "vulnerability scan"
8
- - "audit"
9
- - "pen test"
10
- - "build detection rule"
11
- ---
12
- # Security Review Skill
13
-
14
- **Version:** 1.0.0
15
- **Author:** pi-crew team
16
- **Source:** `source/Anthropic-Cybersecurity-Skills/` distillation
17
-
18
- ## Overview
19
-
20
- Security review patterns for pi-crew multi-agent orchestration.
21
- Based on MITRE ATLAS v5.4, NIST AI RMF, and Anthropic Cybersecurity Skills.
22
-
23
- ## TRIGGERS
24
-
25
- Trigger this skill when:
26
- - User requests: "security review", "vulnerability scan", "audit", "pen test"
27
- - Keywords: security, vulnerability, auth, owasp, injection, xss, csrf, exploit
28
- - Actions: `team action='run', team='review'`
29
- - High-risk tasks routed by autonomous policy
30
-
31
- ## Audit Finding Prioritization (from benchmark-based auditing)
32
-
33
- Use audit frameworks to systematically assess security posture:
34
-
35
- ### Audit Workflow
36
-
37
- ```markdown
38
- ## Audit Process
39
-
40
- 1. **Select Standard** → [CIS, OWASP-Top10, SOC2, NIST, custom]
41
- 2. **Identify Controls** → Which security controls to check
42
- 3. **Run Checks** → Automated (Semgrep, npm audit) or manual inspection
43
- 4. **Document Findings** → [passed, failed, warning, info]
44
- 5. **Calculate Score** → Compliance: [X/Y passed as percentage]
45
- 6. **Prioritize** → By risk: [Critical, High, Medium, Low]
46
- 7. **Remediate** → Fix in priority order
47
- 8. **Verify** → Confirm fixes resolved findings
48
- ```
49
-
50
- ### Audit Finding Structure
51
-
52
- ```yaml
53
- audit_finding:
54
- control_id: string # e.g., "CIS-1.1", "OWASP-A1"
55
- control_name: string # Human-readable name
56
- status: [pass|fail|warning|info|not_applicable]
57
- severity: [critical|high|medium|low]
58
- evidence:
59
- - file: string # File with issue
60
- line: number
61
- description: string
62
- recommendation: string # How to fix
63
- effort: [low|medium|high] # Implementation effort
64
- benefit: [low|medium|high] # Security improvement
65
- ```
66
-
67
- ### Prioritization Matrix
68
-
69
- | Severity \ Effort | Low | Medium | High |
70
- |-------------------|-----|--------|------|
71
- | **Critical** | Fix now | Fix now | Priority |
72
- | **High** | Fix now | Priority | Schedule |
73
- | **Medium** | Priority | Schedule | Later |
74
- | **Low** | Schedule | Later | Later |
75
-
76
- Sort by: severity DESC, effort ASC, benefit DESC
77
-
78
- ### Audit Check Examples
79
-
80
- ```bash
81
- # OWASP Top 10 check
82
- semgrep --config=owasp-top-10 .
83
-
84
- # Dependency audit
85
- npm audit --audit-level=high
86
-
87
- # Secrets detection
88
- trufflehog3 filesystem .
89
-
90
- # CIS Benchmark (cloud)
91
- prowler aws --output-format json
92
- ```
93
-
94
- ## Detection Signature Authoring (from detection rule building)
95
-
96
- Build detection rules to identify vulnerabilities and attack patterns:
97
-
98
- ### Detection Workflow
99
-
100
- ```markdown
101
- ## Detection Authoring Process
102
-
103
- 1. **Identify Target** → What to detect: [vulnerability, pattern, anomaly]
104
- 2. **Define Source** → Where to look: [files, logs, events, network]
105
- 3. **Create Pattern** → Match logic: [regex, AST pattern, rule]
106
- 4. **Tune** → Adjust thresholds: [reduce noise, increase sensitivity]
107
- 5. **Test** → Validate: [true positive, false positive rate]
108
- 6. **Deploy** → Activate monitoring: [hook, alert, block]
109
- 7. **Monitor** → Track: [alerts triggered, quality]
110
- ```
111
-
112
- ### Detection Rule Structure
113
-
114
- ```yaml
115
- detection:
116
- name: string
117
- description: string
118
- severity: [critical|high|medium|low]
119
- target:
120
- type: [vulnerability|pattern|anomaly]
121
- techniques: [MITRE ATT&CK IDs]
122
- source:
123
- - type: [file|log|network|event]
124
- locations: [path, glob, endpoint]
125
- pattern:
126
- type: [regex|AST|signature|heuristic]
127
- match: string_or_structure
128
- exclude: [false_positive_patterns]
129
- threshold:
130
- count: int
131
- time_window: duration
132
- response:
133
- alert: [severity, message]
134
- block: boolean
135
- log: boolean
136
- tuning:
137
- false_positives: [known_noise]
138
- sensitivity: [high|medium|low]
139
- validation:
140
- test_cases:
141
- - input: string
142
- expected: [match|no_match]
143
- true_positive_rate: float
144
- false_positive_rate: float
145
- ```
146
-
147
- ### Detection Rule Examples
148
-
149
- ```yaml
150
- # SQL Injection Detection
151
- detection:
152
- name: sql-injection-pattern
153
- severity: critical
154
- pattern:
155
- type: regex
156
- match: '(union|select|insert|update|delete).*from'
157
- exclude:
158
- - '// comment with select'
159
- - 'userProvidedQuery = "safe_value"'
160
-
161
- # Log4j Detection (CVE-2021-44228)
162
- pattern:
163
- type: regex
164
- match: '\$\{jndi:ldap://'
165
-
166
- # Sensitive Data in Logs
167
- pattern:
168
- type: regex
169
- match: '(password|secret|token|key)\s*[=:]\s*["\']?[\w+/]{20,}'
170
- ```
171
-
172
- ## ENFORCE
173
-
174
- ### Gate 1: PATH TRAVERSAL (RED → GREEN)
175
- ```
176
- RED: Any unvalidated path operation (read/write/exec)
177
- YELLOW: Path validated but without symlink check
178
- GREEN: Path validated with assertSafePathId() + resolveRealContainedPath()
179
- ```
180
-
181
- ### Gate 2: PROMPT INJECTION (RED → Green)
182
- ```
183
- RED: Untrusted input passed to model without sanitization
184
- YELLOW: Partial sanitization (regex only, no context markers)
185
- GREEN: Full sanitization with injection markers + context isolation
186
- ```
187
-
188
- ### Gate 3: SECRET EXPOSURE (RED → Green)
189
- ```
190
- RED: *** values visible in logs/artifacts/transcripts
191
- YELLOW: Partial redaction (logs only, not artifacts)
192
- GREEN: Full redaction via redactEvent(), sanitizeEnvSecrets()
193
- ```
194
-
195
- ### Gate 4: SUPPLY CHAIN (RED → Green)
196
- ```
197
- RED: Dependencies from untrusted sources without verification
198
- YELLOW: Lockfile checked but package integrity not verified
199
- GREEN: Package integrity verified + npm audit + typosquatting check
200
- ```
201
-
202
- ## PATTERNS
203
-
204
- ### Pattern 1: Agent Context Poisoning Detection
205
-
206
- **MITRE ATLAS:** AML.T0051 (Prompt Injection), AML.T0054 (Jailbreak)
207
-
208
- ```typescript
209
- // Check for injection markers in user input
210
- const INJECTION_PATTERNS = [
211
- /\b(ignore|disregard|forget)\s+(previous|all|above)\s+(instructions|prompts)/i,
212
- /\b(you\s+are\s+now|act\s+as|pretend)\s+\w+/i,
213
- /<\s*script\s*>/i,
214
- /\{\{.*?\}\}/, // Template injection
215
- /\$\{.*?\}/, // Variable injection
216
- /\[\s*system\s*\]/i,
217
- /\[\s*assistant\s*\]/i,
218
- ];
219
-
220
- function detectInjection(input: string): boolean {
221
- return INJECTION_PATTERNS.some(p => p.test(input));
222
- }
223
-
224
- // Check task packet for poisoned context
225
- function validateTaskPacket(packet: TaskPacket): ValidationResult {
226
- const injections = detectInjection(packet.prompt);
227
- if (injections) {
228
- return {
229
- severity: 'critical',
230
- category: 'prompt-injection',
231
- evidence: packet.prompt,
232
- recommendation: 'Sanitize input with injection markers',
233
- };
234
- }
235
- return { severity: 'pass', category: 'context-integrity', evidence: null };
236
- }
237
- ```
238
-
239
- ### Pattern 2: Path Traversal Prevention
240
-
241
- **MITRE ATLAS:** ATT&CK T1059 (Command & Scripting Interpreter)
242
-
243
- ```typescript
244
- import { assertSafePathId, resolveContainedPath } from '../utils/safe-paths.ts';
245
-
246
- function safeFileOperation(path: string, cwd: string): SafePathResult {
247
- // Step 1: Validate path ID format
248
- assertSafePathId(path);
249
-
250
- // Step 2: Resolve to absolute with containment
251
- const resolved = resolveContainedPath(path, cwd);
252
-
253
- // Step 3: Verify resolved path is within cwd
254
- if (!resolved.startsWith(cwd)) {
255
- return {
256
- safe: false,
257
- reason: 'Path escapes working directory',
258
- resolved: undefined,
259
- };
260
- }
261
-
262
- return {
263
- safe: true,
264
- resolved,
265
- reason: 'Path validated and contained',
266
- };
267
- }
268
- ```
269
-
270
- ### Pattern 3: Supply Chain Security
271
-
272
- **MITRE ATLAS:** AML.T0010 (Supply Chain), AML.T0104 (Software Supply Chain)
273
-
274
- ```typescript
275
- const TRUSTED_NPM_SOURCES = [
276
- 'registry.npmjs.org',
277
- 'registry.npmmirror.com',
278
- ];
279
-
280
- function validateNpmPackage(manifest: PackageManifest): ValidationResult {
281
- // Check for typosquatting
282
- const suspiciousNames = detectTyposquatting(manifest.name);
283
- if (suspiciousNames.length > 0) {
284
- return {
285
- severity: 'high',
286
- category: 'typosquatting',
287
- evidence: `Package name similar to: ${suspiciousNames.join(', ')}`,
288
- };
289
- }
290
-
291
- // Check for post-install scripts
292
- if (manifest.scripts?.postinstall && !isTrustedSource(manifest)) {
293
- return {
294
- severity: 'medium',
295
- category: 'supply-chain',
296
- evidence: 'Post-install script detected',
297
- };
298
- }
299
-
300
- // Check dependencies
301
- const dangerousDeps = findDangerousDependencies(manifest.dependencies);
302
- if (dangerousDeps.length > 0) {
303
- return {
304
- severity: 'high',
305
- category: 'dependency-confusion',
306
- evidence: dangerousDeps,
307
- };
308
- }
309
-
310
- return { severity: 'pass', category: 'supply-chain', evidence: null };
311
- }
312
- ```
313
-
314
- ### Pattern 4: Secret Redaction
315
-
316
- **MITRE ATLAS:** AML.T0067 (Exfiltrate Training Data)
317
-
318
- ```typescript
319
- import { redactEvent } from '../state/event-log.ts';
320
-
321
- const SECRET_PATTERNS = [
322
- /\b(?:api[_-]?key|secret|token|password|credential)["\s]*[=:]["\s]*[A-Za-z0-9+/]{20,}/gi,
323
- /\b(?:ghp|github)_[A-Za-z0-9]{36,}/g,
324
- /\bBearer\s+[A-Za-z0-9+/=_.-]{20,}/g,
325
- /\b[A-Za-z0-9+/]{40,}={0,2}\b/g, // Generic long base64
326
- ];
327
-
328
- function redactSecrets(content: string): string {
329
- let redacted = content;
330
- for (const pattern of SECRET_PATTERNS) {
331
- redacted = redacted.replace(pattern, '***REDACTED***');
332
- }
333
- return redacted;
334
- }
335
-
336
- // Apply to all event types
337
- function safeLogEvent(event: CrewEvent): void {
338
- const redacted = redactEvent(event); // Built-in redaction
339
- appendEvent(redacted);
340
- }
341
- ```
342
-
343
- ### Pattern 5: Race Condition Detection
344
-
345
- **MITRE ATLAS:** AML.T0054 (Privilege Escalation via Race)
346
-
347
- ```typescript
348
- // Detect timing attacks and race conditions
349
- const RACE_CONDITION_PATTERNS = [
350
- { pattern: /appendFileSync.*race/i, severity: 'medium' },
351
- { pattern: /readFileSync.*writeFileSync.*race/i, severity: 'high' },
352
- { pattern: /mkdirSync.*mkdir.*race/i, severity: 'medium' },
353
- ];
354
-
355
- function detectRaceConditions(code: string): Finding[] {
356
- const findings: Finding[] = [];
357
-
358
- // Check for file operation races
359
- for (const { pattern, severity } of RACE_CONDITION_PATTERNS) {
360
- if (pattern.test(code)) {
361
- findings.push({
362
- severity,
363
- category: 'race-condition',
364
- pattern: pattern.source,
365
- recommendation: 'Use atomic write or filesystem locking',
366
- });
367
- }
368
- }
369
-
370
- // Check for timing-sensitive operations
371
- if (code.includes('setTimeout') && code.includes('auth')) {
372
- findings.push({
373
- severity: 'medium',
374
- category: 'timing-attack',
375
- recommendation: 'Add constant-time comparison for auth checks',
376
- });
377
- }
378
-
379
- return findings;
380
- }
381
- ```
382
-
383
- ### Pattern 6: Authentication Anomaly Detection
384
-
385
- **MITRE ATLAS:** AML.T0043 (Auth Failure), AML.T0018 (Token Theft)
386
-
387
- ```typescript
388
- interface AuthPattern {
389
- sessionId: string;
390
- timestamp: number;
391
- failures: number;
392
- source: string;
393
- }
394
-
395
- function detectAuthAnomalies(sessions: AuthPattern[]): Finding[] {
396
- const findings: Finding[] = [];
397
-
398
- // Brute force detection
399
- for (const session of sessions) {
400
- if (session.failures > 5) {
401
- findings.push({
402
- severity: 'high',
403
- category: 'brute-force',
404
- evidence: `${session.failures} auth failures from ${session.source}`,
405
- });
406
- }
407
-
408
- // Token reuse detection
409
- if (session.timestamp < Date.now() - 3600000) {
410
- findings.push({
411
- severity: 'medium',
412
- category: 'token-reuse',
413
- evidence: 'Stale session token used',
414
- });
415
- }
416
- }
417
-
418
- // Session fixation
419
- const predictableIds = sessions.filter(s =>
420
- /^(session|team|run)_[a-z0-9]{8}$/i.test(s.sessionId)
421
- );
422
- if (predictableIds.length > 0) {
423
- findings.push({
424
- severity: 'medium',
425
- category: 'session-fixation',
426
- evidence: 'Predictable session ID pattern detected',
427
- });
428
- }
429
-
430
- return findings;
431
- }
432
- ```
433
-
434
- ### Pattern 7: Tool Invocation Abuse Detection
435
-
436
- **MITRE ATLAS:** AML.T0051 (Prompt Injection)
437
-
438
- ```typescript
439
- interface ToolMetrics {
440
- toolName: string;
441
- callCount: number;
442
- timeWindow: number;
443
- anomalies: string[];
444
- }
445
-
446
- function detectToolAbuse(metrics: ToolMetrics[]): Finding[] {
447
- const findings: Finding[] = [];
448
- const RATE_THRESHOLD = 10; // calls per minute
449
- const BURST_THRESHOLD = 20; // calls in 30 seconds
450
-
451
- for (const metric of metrics) {
452
- // Rate limiting
453
- const rate = metric.callCount / (metric.timeWindow / 60000);
454
- if (rate > RATE_THRESHOLD) {
455
- findings.push({
456
- severity: 'high',
457
- category: 'tool-abuse',
458
- evidence: `${metric.toolName}: ${rate.toFixed(1)} calls/min (threshold: ${RATE_THRESHOLD})`,
459
- recommendation: 'Implement rate limiting or throttling',
460
- });
461
- }
462
-
463
- // Burst detection
464
- if (metric.callCount > BURST_THRESHOLD && metric.timeWindow < 30000) {
465
- findings.push({
466
- severity: 'critical',
467
- category: 'tool-burst',
468
- evidence: `${metric.toolName}: ${metric.callCount} calls in <30s`,
469
- recommendation: 'Block tool and investigate source',
470
- });
471
- }
472
- }
473
-
474
- return findings;
475
- }
476
- ```
477
-
478
- ### Pattern 8: Malicious Skill Loading Detection
479
-
480
- **MITRE ATLAS:** AML.T0062 (Exfiltrate Data via ML)
481
-
482
- ```typescript
483
- const UNSAFE_SKILL_PATTERNS = [
484
- /(^|\/)\.\.(\/|$)/, // Path traversal
485
- /^[A-Z]:/i, // Windows absolute path
486
- /^\//, // Unix absolute path
487
- /\.exe$|\.dll$|\.so$/i, // Binary files
488
- /<script|SQL|SELECT.*FROM/i, // Script injection
489
- ];
490
-
491
- function validateSkillPath(path: string): ValidationResult {
492
- if (!path || path.includes('\0')) {
493
- return {
494
- safe: false,
495
- reason: 'Null byte or empty path',
496
- category: 'malicious-skill',
497
- };
498
- }
499
-
500
- for (const pattern of UNSAFE_SKILL_PATTERNS) {
501
- if (pattern.test(path)) {
502
- return {
503
- safe: false,
504
- reason: `Path matches unsafe pattern: ${pattern}`,
505
- category: 'malicious-skill',
506
- };
507
- }
508
- }
509
-
510
- // Check if skill exists and is readable
511
- if (!existsSync(path)) {
512
- return {
513
- safe: false,
514
- reason: 'Skill file does not exist',
515
- category: 'missing-skill',
516
- };
517
- }
518
-
519
- return {
520
- safe: true,
521
- reason: 'Skill path validated',
522
- category: 'skill-path',
523
- };
524
- }
525
- ```
526
-
527
- ---
528
-
529
- ## TOOLS
530
-
531
- | Tool | Purpose |
532
- |------|---------|
533
- | `assertSafePathId()` | Path ID format validation |
534
- | `resolveContainedPath()` | Path containment resolution |
535
- | `redactEvent()` | Event log redaction |
536
- | `sanitizeEnvSecrets()` | Environment variable sanitization |
537
- | `sanitizeTaskPacket()` | Task packet sanitization |
538
- | `atomicWriteJson()` | Atomic file writes |
539
-
540
- ---
541
-
542
- ## METRICS
543
-
544
- | Metric | Target |
545
- |--------|--------|
546
- | Path traversal findings | 0 critical |
547
- | Secret exposure | 0 in any artifact |
548
- | Supply chain issues | <5 medium |
549
- | Race conditions | <2 medium |
550
- | Tool abuse detection | 100% coverage |
551
-
552
- ---
553
-
554
- *See also: `docs/distillation/cybersecurity-patterns.md`*
555
- ## Anti-Patterns
556
-
557
- - **Don't** skip path traversal checks when dealing with user input
558
- - **Don't** trust agent output without auditing artifacts
559
- - **Don't** run security review without knowing the data flow boundaries
560
- - **Don't** skip secrets detection in configuration and environment files
561
- - **Don't** skip supply chain checks when using external packages