pi-crew 0.2.2 → 0.2.4

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 (354) hide show
  1. package/AGENTS.md +57 -32
  2. package/CHANGELOG.md +466 -413
  3. package/LICENSE +21 -21
  4. package/NOTICE.md +16 -16
  5. package/README.md +323 -323
  6. package/docs/FEATURE_INTAKE.md +126 -0
  7. package/docs/HARNESS.md +86 -0
  8. package/docs/HARNESS_BACKLOG.md +41 -0
  9. package/docs/TEST_MATRIX.md +49 -0
  10. package/docs/actions-reference.md +595 -595
  11. package/docs/architecture.md +180 -180
  12. package/docs/code-review-2026-05-11.md +592 -0
  13. package/docs/commands-reference.md +347 -347
  14. package/docs/comparison-pi-subagents-vs-pi-crew.md +303 -0
  15. package/docs/decisions/0001-durable-state.md +41 -0
  16. package/docs/decisions/0002-child-process-for-async.md +42 -0
  17. package/docs/decisions/0003-depth-guard.md +36 -0
  18. package/docs/decisions/0004-execfile-over-exec.md +34 -0
  19. package/docs/decisions/0005-no-parameter-properties.md +49 -0
  20. package/docs/decisions/0006-publish-bundled-esm.md +63 -0
  21. package/docs/decisions/0007-active-run-binary-index.md +54 -0
  22. package/docs/decisions/0008-child-pi-warm-pool.md +61 -0
  23. package/docs/decisions/README.md +23 -0
  24. package/docs/followup-plan-2026-05-12.md +463 -0
  25. package/docs/followup-review-2026-05-12.md +297 -0
  26. package/docs/followup-review-round3-2026-05-12.md +342 -0
  27. package/docs/followup-review-round4-2026-05-13.md +107 -0
  28. package/docs/implementation-plan-top3.md +333 -0
  29. package/docs/live-mailbox-runtime.md +36 -36
  30. package/docs/next-upgrade-roadmap.md +808 -808
  31. package/docs/oh-my-pi-research.md +509 -0
  32. package/docs/perf/baseline-2026-05.md +113 -0
  33. package/docs/perf/final-report-2026-05.md +206 -0
  34. package/docs/perf/sprint-1-report.md +71 -0
  35. package/docs/perf/sprint-2-report.md +81 -0
  36. package/docs/perf/sprint-2.5-report.md +53 -0
  37. package/docs/perf/sprint-3-report.md +36 -0
  38. package/docs/perf/sprint-4-report.md +47 -0
  39. package/docs/perf/sprint-5-report.md +51 -0
  40. package/docs/perf/sprint-6-report.md +94 -0
  41. package/docs/perf/sprint-7-report.md +74 -0
  42. package/docs/perf/upgrade-plan-2026-05.md +147 -0
  43. package/docs/pi-subagents3-deep-analysis.md +508 -0
  44. package/docs/product/README.md +31 -0
  45. package/docs/product/platform.md +27 -0
  46. package/docs/product/runtime-safety.md +37 -0
  47. package/docs/product/team-run.md +39 -0
  48. package/docs/product/team-tool.md +37 -0
  49. package/docs/publishing.md +65 -65
  50. package/docs/resource-formats.md +134 -134
  51. package/docs/runtime-analysis-child-vs-live.md +171 -0
  52. package/docs/runtime-flow.md +148 -148
  53. package/docs/runtime-migration-in-process-analysis.md +250 -0
  54. package/docs/stories/README.md +30 -0
  55. package/docs/stories/backlog.md +36 -0
  56. package/docs/templates/decision.md +27 -0
  57. package/docs/templates/story.md +44 -0
  58. package/docs/templates/validation-report.md +32 -0
  59. package/docs/usage.md +238 -238
  60. package/index.ts +7 -6
  61. package/install.mjs +65 -65
  62. package/package.json +107 -99
  63. package/schema.json +222 -222
  64. package/skills/child-pi-spawning/SKILL.md +213 -0
  65. package/skills/context-artifact-hygiene/SKILL.md +32 -0
  66. package/skills/event-log-tracing/SKILL.md +299 -0
  67. package/skills/git-master/SKILL.md +225 -24
  68. package/skills/live-agent-lifecycle/SKILL.md +192 -0
  69. package/skills/mailbox-interactive/SKILL.md +300 -19
  70. package/skills/model-routing-context/SKILL.md +94 -0
  71. package/skills/multi-perspective-review/SKILL.md +88 -0
  72. package/skills/read-only-explorer/SKILL.md +250 -26
  73. package/skills/safe-bash/SKILL.md +307 -21
  74. package/skills/verification-before-done/SKILL.md +11 -2
  75. package/skills/widget-rendering/SKILL.md +258 -0
  76. package/skills/workspace-isolation/SKILL.md +202 -0
  77. package/skills/worktree-isolation/SKILL.md +202 -18
  78. package/src/adapters/claude-adapter.ts +25 -25
  79. package/src/adapters/codex-adapter.ts +21 -21
  80. package/src/adapters/cursor-adapter.ts +17 -17
  81. package/src/adapters/export-util.ts +137 -137
  82. package/src/adapters/index.ts +15 -15
  83. package/src/adapters/registry.ts +18 -18
  84. package/src/adapters/types.ts +23 -23
  85. package/src/agents/agent-config.ts +38 -38
  86. package/src/agents/agent-serializer.ts +38 -38
  87. package/src/agents/discover-agents.ts +121 -118
  88. package/src/config/config.ts +740 -858
  89. package/src/config/defaults.ts +96 -96
  90. package/src/config/drift-detector.ts +211 -211
  91. package/src/config/markers.ts +327 -327
  92. package/src/config/resilient-parser.ts +109 -108
  93. package/src/config/suggestions.ts +74 -74
  94. package/src/config/types.ts +199 -0
  95. package/src/extension/async-notifier.ts +123 -89
  96. package/src/extension/autonomous-policy.ts +169 -169
  97. package/src/extension/cross-extension-rpc.ts +104 -103
  98. package/src/extension/help.ts +47 -47
  99. package/src/extension/import-index.ts +69 -69
  100. package/src/extension/management.ts +395 -382
  101. package/src/extension/notification-router.ts +116 -116
  102. package/src/extension/notification-sink.ts +51 -51
  103. package/src/extension/project-init.ts +168 -168
  104. package/src/extension/register.ts +859 -668
  105. package/src/extension/registration/artifact-cleanup.ts +15 -15
  106. package/src/extension/registration/command-utils.ts +54 -54
  107. package/src/extension/registration/commands.ts +559 -452
  108. package/src/extension/registration/compaction-guard.ts +125 -125
  109. package/src/extension/registration/subagent-helpers.ts +102 -102
  110. package/src/extension/registration/subagent-tools.ts +220 -158
  111. package/src/extension/registration/team-tool.ts +159 -98
  112. package/src/extension/registration/viewers.ts +29 -0
  113. package/src/extension/result-watcher.ts +128 -128
  114. package/src/extension/run-bundle-schema.ts +89 -89
  115. package/src/extension/run-export.ts +73 -73
  116. package/src/extension/run-import.ts +84 -84
  117. package/src/extension/run-index.ts +94 -94
  118. package/src/extension/run-maintenance.ts +142 -142
  119. package/src/extension/session-summary.ts +8 -8
  120. package/src/extension/team-manager-command.ts +96 -95
  121. package/src/extension/team-recommendation.ts +188 -188
  122. package/src/extension/team-tool/api.ts +5 -2
  123. package/src/extension/team-tool/cancel.ts +224 -209
  124. package/src/extension/team-tool/config-patch.ts +36 -36
  125. package/src/extension/team-tool/context.ts +60 -60
  126. package/src/extension/team-tool/doctor.ts +242 -242
  127. package/src/extension/team-tool/handle-settings.ts +421 -195
  128. package/src/extension/team-tool/inspect.ts +41 -41
  129. package/src/extension/team-tool/lifecycle-actions.ts +139 -139
  130. package/src/extension/team-tool/parallel-dispatch.ts +156 -156
  131. package/src/extension/team-tool/plan.ts +19 -19
  132. package/src/extension/team-tool/respond.ts +112 -111
  133. package/src/extension/team-tool/run.ts +246 -228
  134. package/src/extension/team-tool/status.ts +110 -110
  135. package/src/extension/team-tool-types.ts +13 -13
  136. package/src/extension/team-tool.ts +16 -4
  137. package/src/extension/tool-result.ts +16 -16
  138. package/src/extension/validate-resources.ts +77 -77
  139. package/src/hooks/registry.ts +61 -61
  140. package/src/hooks/types.ts +40 -40
  141. package/src/i18n.ts +184 -184
  142. package/src/observability/correlation.ts +35 -35
  143. package/src/observability/event-to-metric.ts +68 -68
  144. package/src/observability/exporters/adapter.ts +30 -30
  145. package/src/observability/exporters/otlp-exporter.ts +106 -92
  146. package/src/observability/exporters/prometheus-exporter.ts +54 -54
  147. package/src/observability/metric-registry.ts +87 -87
  148. package/src/observability/metric-retention.ts +54 -54
  149. package/src/observability/metric-sink.ts +81 -56
  150. package/src/observability/metrics-primitives.ts +167 -167
  151. package/src/prompt/prompt-runtime.ts +72 -72
  152. package/src/runtime/adaptive-plan.ts +338 -0
  153. package/src/runtime/agent-control.ts +169 -169
  154. package/src/runtime/agent-memory.ts +72 -72
  155. package/src/runtime/agent-observability.ts +114 -114
  156. package/src/runtime/async-marker.ts +26 -26
  157. package/src/runtime/async-runner.ts +153 -79
  158. package/src/runtime/attention-events.ts +28 -28
  159. package/src/runtime/auto-resume.ts +100 -100
  160. package/src/runtime/background-runner.ts +122 -88
  161. package/src/runtime/cancellation.ts +61 -61
  162. package/src/runtime/capability-inventory.ts +116 -116
  163. package/src/runtime/child-pi-pool.ts +68 -0
  164. package/src/runtime/child-pi.ts +541 -463
  165. package/src/runtime/code-summary.ts +247 -247
  166. package/src/runtime/compaction-summary.ts +271 -271
  167. package/src/runtime/concurrency.ts +58 -58
  168. package/src/runtime/crash-recovery.ts +317 -301
  169. package/src/runtime/crew-agent-records.ts +379 -281
  170. package/src/runtime/crew-agent-runtime.ts +60 -60
  171. package/src/runtime/cross-extension-rpc.ts +72 -0
  172. package/src/runtime/custom-tools/irc-tool.ts +201 -201
  173. package/src/runtime/custom-tools/submit-result-tool.ts +90 -90
  174. package/src/runtime/deadletter.ts +47 -47
  175. package/src/runtime/delivery-coordinator.ts +176 -176
  176. package/src/runtime/delta-conflict.ts +360 -360
  177. package/src/runtime/diagnostic-export.ts +102 -102
  178. package/src/runtime/direct-run.ts +35 -35
  179. package/src/runtime/effectiveness.ts +82 -81
  180. package/src/runtime/errors/crew-errors.ts +166 -0
  181. package/src/runtime/event-stream-bridge.ts +92 -92
  182. package/src/runtime/foreground-control.ts +82 -82
  183. package/src/runtime/green-contract.ts +46 -46
  184. package/src/runtime/group-join.ts +234 -106
  185. package/src/runtime/heartbeat-watcher.ts +145 -124
  186. package/src/runtime/iteration-hooks.ts +267 -264
  187. package/src/runtime/live-agent-control.ts +88 -88
  188. package/src/runtime/live-agent-manager.ts +377 -179
  189. package/src/runtime/live-control-realtime.ts +36 -36
  190. package/src/runtime/live-session-runtime.ts +676 -599
  191. package/src/runtime/loop-gates.ts +129 -129
  192. package/src/runtime/manifest-cache.ts +263 -263
  193. package/src/runtime/mcp-proxy.ts +113 -113
  194. package/src/runtime/metric-parser.ts +40 -40
  195. package/src/runtime/model-fallback.ts +282 -274
  196. package/src/runtime/model-resolver.ts +118 -0
  197. package/src/runtime/output-validator.ts +187 -187
  198. package/src/runtime/overflow-recovery.ts +175 -175
  199. package/src/runtime/parallel-research.ts +44 -44
  200. package/src/runtime/parallel-utils.ts +156 -156
  201. package/src/runtime/parent-guard.ts +80 -80
  202. package/src/runtime/phase-progress.ts +217 -217
  203. package/src/runtime/pi-args.ts +165 -165
  204. package/src/runtime/pi-json-output.ts +111 -111
  205. package/src/runtime/pi-spawn.ts +167 -167
  206. package/src/runtime/policy-engine.ts +79 -79
  207. package/src/runtime/post-checks.ts +125 -122
  208. package/src/runtime/post-exit-stdio-guard.ts +86 -86
  209. package/src/runtime/process-status.ts +97 -73
  210. package/src/runtime/progress-event-coalescer.ts +43 -43
  211. package/src/runtime/recovery-recipes.ts +74 -74
  212. package/src/runtime/retry-executor.ts +81 -81
  213. package/src/runtime/role-permission.ts +39 -39
  214. package/src/runtime/run-tracker.ts +99 -0
  215. package/src/runtime/runtime-policy.ts +21 -0
  216. package/src/runtime/runtime-resolver.ts +94 -90
  217. package/src/runtime/scheduler.ts +294 -0
  218. package/src/runtime/semaphore.ts +131 -131
  219. package/src/runtime/sensitive-paths.ts +92 -92
  220. package/src/runtime/session-usage.ts +79 -79
  221. package/src/runtime/settings-store.ts +103 -0
  222. package/src/runtime/sidechain-output.ts +29 -29
  223. package/src/runtime/skill-instructions.ts +222 -222
  224. package/src/runtime/stale-reconciler.ts +198 -189
  225. package/src/runtime/streaming-output.ts +47 -0
  226. package/src/runtime/subagent-manager.ts +404 -395
  227. package/src/runtime/subprocess-tool-registry.ts +67 -67
  228. package/src/runtime/task-display.ts +38 -38
  229. package/src/runtime/task-graph-scheduler.ts +122 -122
  230. package/src/runtime/task-graph.ts +207 -207
  231. package/src/runtime/task-output-context.ts +177 -177
  232. package/src/runtime/task-packet.ts +93 -93
  233. package/src/runtime/task-quality.ts +207 -207
  234. package/src/runtime/task-runner/capabilities.ts +78 -78
  235. package/src/runtime/task-runner/live-executor.ts +131 -113
  236. package/src/runtime/task-runner/progress.ts +119 -119
  237. package/src/runtime/task-runner/prompt-builder.ts +139 -139
  238. package/src/runtime/task-runner/prompt-pipeline.ts +64 -64
  239. package/src/runtime/task-runner/result-utils.ts +14 -14
  240. package/src/runtime/task-runner/run-projection.ts +103 -103
  241. package/src/runtime/task-runner/state-helpers.ts +22 -22
  242. package/src/runtime/task-runner.ts +469 -458
  243. package/src/runtime/team-runner.ts +693 -945
  244. package/src/runtime/usage-tracker.ts +71 -0
  245. package/src/runtime/worker-heartbeat.ts +21 -21
  246. package/src/runtime/worker-startup.ts +57 -57
  247. package/src/runtime/workflow-state.ts +187 -187
  248. package/src/runtime/yield-handler.ts +190 -189
  249. package/src/schema/config-schema.ts +172 -168
  250. package/src/schema/team-tool-schema.ts +126 -125
  251. package/src/schema/validation-types.ts +151 -148
  252. package/src/skills/discover-skills.ts +67 -67
  253. package/src/skills/skill-templates.ts +374 -374
  254. package/src/state/active-run-registry.ts +227 -191
  255. package/src/state/artifact-store.ts +130 -129
  256. package/src/state/atomic-write.ts +262 -178
  257. package/src/state/blob-store.ts +116 -116
  258. package/src/state/contracts.ts +111 -111
  259. package/src/state/event-log-rotation.ts +161 -158
  260. package/src/state/event-log.ts +383 -240
  261. package/src/state/event-reconstructor.ts +217 -217
  262. package/src/state/jsonl-writer.ts +82 -82
  263. package/src/state/locks.ts +146 -148
  264. package/src/state/mailbox.ts +446 -405
  265. package/src/state/state-store.ts +364 -351
  266. package/src/state/task-claims.ts +44 -44
  267. package/src/state/types.ts +285 -285
  268. package/src/state/usage.ts +29 -29
  269. package/src/subagents/async-entry.ts +1 -1
  270. package/src/subagents/index.ts +3 -3
  271. package/src/subagents/live/control.ts +1 -1
  272. package/src/subagents/live/manager.ts +1 -1
  273. package/src/subagents/live/realtime.ts +1 -1
  274. package/src/subagents/live/session-runtime.ts +1 -1
  275. package/src/subagents/manager.ts +1 -1
  276. package/src/subagents/spawn.ts +1 -1
  277. package/src/teams/discover-teams.ts +116 -116
  278. package/src/teams/team-config.ts +27 -27
  279. package/src/teams/team-serializer.ts +38 -38
  280. package/src/types/diff.d.ts +18 -18
  281. package/src/ui/agent-management-overlay.ts +144 -144
  282. package/src/ui/crew-widget.ts +487 -370
  283. package/src/ui/dashboard-panes/agents-pane.ts +109 -28
  284. package/src/ui/dashboard-panes/cancellation-pane.ts +42 -42
  285. package/src/ui/dashboard-panes/capability-pane.ts +59 -59
  286. package/src/ui/dashboard-panes/health-pane.ts +30 -30
  287. package/src/ui/dashboard-panes/mailbox-pane.ts +35 -35
  288. package/src/ui/dashboard-panes/progress-pane.ts +30 -30
  289. package/src/ui/dashboard-panes/transcript-pane.ts +10 -10
  290. package/src/ui/heartbeat-aggregator.ts +63 -63
  291. package/src/ui/keybinding-map.ts +97 -94
  292. package/src/ui/live-conversation-overlay.ts +152 -0
  293. package/src/ui/live-run-sidebar.ts +180 -180
  294. package/src/ui/mascot.ts +442 -442
  295. package/src/ui/overlays/agent-picker-overlay.ts +57 -57
  296. package/src/ui/overlays/confirm-overlay.ts +58 -58
  297. package/src/ui/overlays/mailbox-compose-overlay.ts +144 -144
  298. package/src/ui/overlays/mailbox-compose-preview.ts +63 -63
  299. package/src/ui/overlays/mailbox-detail-overlay.ts +122 -122
  300. package/src/ui/pi-ui-compat.ts +57 -57
  301. package/src/ui/powerbar-publisher.ts +221 -197
  302. package/src/ui/render-scheduler.ts +216 -143
  303. package/src/ui/run-action-dispatcher.ts +118 -117
  304. package/src/ui/run-dashboard.ts +526 -464
  305. package/src/ui/run-event-bus.ts +208 -208
  306. package/src/ui/run-snapshot-cache.ts +826 -777
  307. package/src/ui/settings-overlay.ts +721 -0
  308. package/src/ui/snapshot-types.ts +86 -70
  309. package/src/ui/theme-adapter.ts +190 -190
  310. package/src/ui/tool-progress-formatter.ts +89 -0
  311. package/src/ui/transcript-cache.ts +94 -94
  312. package/src/ui/transcript-viewer.ts +335 -335
  313. package/src/utils/conflict-detect.ts +662 -0
  314. package/src/utils/env-filter.ts +30 -0
  315. package/src/utils/file-coalescer.ts +86 -86
  316. package/src/utils/frontmatter.ts +68 -68
  317. package/src/utils/fs-watch.ts +88 -31
  318. package/src/utils/gh-protocol.ts +479 -0
  319. package/src/utils/ids.ts +17 -17
  320. package/src/utils/incremental-reader.ts +104 -104
  321. package/src/utils/internal-error.ts +6 -6
  322. package/src/utils/names.ts +27 -27
  323. package/src/utils/paths.ts +102 -63
  324. package/src/utils/redaction.ts +44 -44
  325. package/src/utils/resolve-shell.ts +34 -0
  326. package/src/utils/safe-paths.ts +47 -47
  327. package/src/utils/scan-cache.ts +136 -136
  328. package/src/utils/sleep.ts +2 -1
  329. package/src/utils/sse-parser.ts +134 -134
  330. package/src/utils/task-name-generator.ts +337 -337
  331. package/src/utils/timings.ts +33 -33
  332. package/src/utils/visual.ts +243 -198
  333. package/src/workflows/discover-workflows.ts +139 -139
  334. package/src/workflows/validate-workflow.ts +40 -40
  335. package/src/workflows/workflow-config.ts +26 -26
  336. package/src/workflows/workflow-serializer.ts +32 -32
  337. package/src/worktree/branch-freshness.ts +45 -45
  338. package/src/worktree/cleanup.ts +75 -72
  339. package/src/worktree/worktree-manager.ts +188 -146
  340. package/teams/default.team.md +12 -12
  341. package/teams/fast-fix.team.md +11 -11
  342. package/teams/implementation.team.md +18 -18
  343. package/teams/parallel-research.team.md +14 -14
  344. package/teams/research.team.md +11 -11
  345. package/teams/review.team.md +12 -12
  346. package/tsconfig.json +19 -19
  347. package/workflows/default.workflow.md +30 -30
  348. package/workflows/fast-fix.workflow.md +23 -23
  349. package/workflows/implementation.workflow.md +43 -43
  350. package/workflows/parallel-research.workflow.md +46 -46
  351. package/workflows/research.workflow.md +22 -22
  352. package/workflows/review.workflow.md +30 -30
  353. package/skills/task-packet/SKILL.md +0 -28
  354. package/skills/verify-evidence/SKILL.md +0 -27
@@ -1,65 +1,65 @@
1
- # Publishing pi-crew
2
-
3
- This package is published as the scoped public npm package:
4
-
5
- ```text
6
- pi-crew
7
- ```
8
-
9
- Before publishing to npm:
10
-
11
- 1. Confirm package metadata in `package.json`:
12
- - `author`
13
- - `repository`
14
- - `homepage`
15
- - `bugs`
16
- - `publishConfig.access = public`
17
- 2. Confirm license and notices:
18
- - keep `LICENSE`
19
- - keep `NOTICE.md`
20
- - document copied/adapted MIT source if any substantial code is ported
21
- 3. Run checks:
22
-
23
- ```bash
24
- npm run check
25
- ```
26
-
27
- 4. Verify package contents:
28
-
29
- ```bash
30
- npm pack --dry-run
31
- ```
32
-
33
- 5. Verify local install in Pi:
34
-
35
- ```bash
36
- pi install ./pi-crew
37
- /team-doctor
38
- /team-validate
39
- ```
40
-
41
- 6. Publish when ready:
42
-
43
- ```bash
44
- npm publish --access public
45
- ```
46
-
47
- Users can install the published package with:
48
-
49
- ```bash
50
- pi install npm:pi-crew
51
- ```
52
-
53
- ## Config schema
54
-
55
- The package exports:
56
-
57
- ```text
58
- ./schema.json
59
- ```
60
-
61
- Use this for editor validation of:
62
-
63
- ```text
64
- ~/.pi/agent/extensions/pi-crew/config.json
65
- ```
1
+ # Publishing pi-crew
2
+
3
+ This package is published as the scoped public npm package:
4
+
5
+ ```text
6
+ pi-crew
7
+ ```
8
+
9
+ Before publishing to npm:
10
+
11
+ 1. Confirm package metadata in `package.json`:
12
+ - `author`
13
+ - `repository`
14
+ - `homepage`
15
+ - `bugs`
16
+ - `publishConfig.access = public`
17
+ 2. Confirm license and notices:
18
+ - keep `LICENSE`
19
+ - keep `NOTICE.md`
20
+ - document copied/adapted MIT source if any substantial code is ported
21
+ 3. Run checks:
22
+
23
+ ```bash
24
+ npm run check
25
+ ```
26
+
27
+ 4. Verify package contents:
28
+
29
+ ```bash
30
+ npm pack --dry-run
31
+ ```
32
+
33
+ 5. Verify local install in Pi:
34
+
35
+ ```bash
36
+ pi install ./pi-crew
37
+ /team-doctor
38
+ /team-validate
39
+ ```
40
+
41
+ 6. Publish when ready:
42
+
43
+ ```bash
44
+ npm publish --access public
45
+ ```
46
+
47
+ Users can install the published package with:
48
+
49
+ ```bash
50
+ pi install npm:pi-crew
51
+ ```
52
+
53
+ ## Config schema
54
+
55
+ The package exports:
56
+
57
+ ```text
58
+ ./schema.json
59
+ ```
60
+
61
+ Use this for editor validation of:
62
+
63
+ ```text
64
+ ~/.pi/agent/extensions/pi-crew/config.json
65
+ ```
@@ -1,134 +1,134 @@
1
- # pi-crew Resource Formats
2
-
3
- ## Agent files
4
-
5
- Location:
6
-
7
- ```text
8
- agents/{name}.md # builtin (in this package)
9
- ~/.pi/agent/agents/{name}.md # user-global
10
- .crew/agents/{name}.md # project (new layout)
11
- .pi/teams/agents/{name}.md # project (legacy layout when .pi/ exists)
12
- ```
13
-
14
- Format:
15
-
16
- ```md
17
- ---
18
- name: executor
19
- description: Implement planned code changes
20
- model: claude-sonnet-4-5
21
- fallbackModels: openai/gpt-5-mini, anthropic/claude-sonnet-4
22
- thinking: high
23
- tools: read, grep, find, ls, bash, edit, write
24
- extensions: /path/to/extension.ts
25
- skills: safe-bash
26
- systemPromptMode: replace
27
- inheritProjectContext: true
28
- inheritSkills: false
29
- triggers: auth, tests
30
- useWhen: multi-file implementation with tests
31
- avoidWhen: one-line typo
32
- cost: cheap
33
- category: implementation
34
- ---
35
-
36
- System prompt body.
37
- ```
38
-
39
- Optional routing metadata fields:
40
-
41
- | Field | Meaning |
42
- | --- | --- |
43
- | `triggers` | Comma-separated terms that should route work to this agent/team |
44
- | `useWhen` | Comma-separated natural-language use cases |
45
- | `avoidWhen` | Comma-separated cases where the agent/team should not be used |
46
- | `cost` | `free`, `cheap`, or `expensive` hint for autonomous routing |
47
- | `category` | Free-form grouping such as `frontend`, `security`, `docs` |
48
-
49
- ## Team files
50
-
51
- Location:
52
-
53
- ```text
54
- teams/{name}.team.md # builtin (in this package)
55
- ~/.pi/agent/teams/{name}.team.md # user-global (shared with pi-mono)
56
- .crew/teams/{name}.team.md # project (new layout)
57
- .pi/teams/teams/{name}.team.md # project (legacy layout when .pi/ exists)
58
- ```
59
-
60
- Format:
61
-
62
- ```md
63
- ---
64
- name: implementation
65
- description: Full implementation team
66
- defaultWorkflow: implementation
67
- workspaceMode: single
68
- maxConcurrency: 3
69
- triggers: implementation, refactor
70
- useWhen: multi-file implementation
71
- cost: cheap
72
- category: implementation
73
- ---
74
-
75
- - explorer: agent=explorer map the codebase
76
- - planner: agent=planner create plan
77
- - executor: agent=executor implement
78
- - verifier: agent=verifier verify
79
- ```
80
-
81
- Role line:
82
-
83
- ```text
84
- - {role-name}: agent={agent-name} [model={provider/model}] [skills={a,b}|false] [maxConcurrency={n}] optional description
85
- ```
86
-
87
- ## Workflow files
88
-
89
- Location:
90
-
91
- ```text
92
- workflows/{name}.workflow.md # builtin (in this package)
93
- ~/.pi/agent/workflows/{name}.workflow.md # user-global
94
- .crew/workflows/{name}.workflow.md # project (new layout)
95
- .pi/teams/workflows/{name}.workflow.md # project (legacy layout when .pi/ exists)
96
- ```
97
-
98
- Format:
99
-
100
- ```md
101
- ---
102
- name: default
103
- description: Explore, plan, execute, verify
104
- ---
105
-
106
- ## explore
107
- role: explorer
108
-
109
- Explore for: {goal}
110
-
111
- ## plan
112
- role: planner
113
- dependsOn: explore
114
- output: plan.md
115
-
116
- Create a plan for: {goal}
117
- ```
118
-
119
- Step fields:
120
-
121
- | Field | Meaning |
122
- | --- | --- |
123
- | `role` | Team role to run |
124
- | `dependsOn` | Comma-separated step IDs |
125
- | `parallelGroup` | Optional grouping metadata |
126
- | `output` | Output file name or `false` |
127
- | `reads` | Comma-separated read files or `false` |
128
- | `model` | Step model override |
129
- | `skills` | Comma-separated skills or `false` |
130
- | `progress` | `true`/`false` |
131
- | `worktree` | `true`/`false` metadata |
132
- | `verify` | `true`/`false` verification marker |
133
-
134
- Each step starts with `## step-id` followed by recognized step metadata such as `role:` before the blank line. Level-2 headings inside task bodies are preserved unless they look like a step section with recognized metadata; use `###` or lower for maximum compatibility.
1
+ # pi-crew Resource Formats
2
+
3
+ ## Agent files
4
+
5
+ Location:
6
+
7
+ ```text
8
+ agents/{name}.md # builtin (in this package)
9
+ ~/.pi/agent/agents/{name}.md # user-global
10
+ .crew/agents/{name}.md # project (new layout)
11
+ .pi/teams/agents/{name}.md # project (legacy layout when .pi/ exists)
12
+ ```
13
+
14
+ Format:
15
+
16
+ ```md
17
+ ---
18
+ name: executor
19
+ description: Implement planned code changes
20
+ model: claude-sonnet-4-5
21
+ fallbackModels: openai/gpt-5-mini, anthropic/claude-sonnet-4
22
+ thinking: high
23
+ tools: read, grep, find, ls, bash, edit, write
24
+ extensions: /path/to/extension.ts
25
+ skills: safe-bash
26
+ systemPromptMode: replace
27
+ inheritProjectContext: true
28
+ inheritSkills: false
29
+ triggers: auth, tests
30
+ useWhen: multi-file implementation with tests
31
+ avoidWhen: one-line typo
32
+ cost: cheap
33
+ category: implementation
34
+ ---
35
+
36
+ System prompt body.
37
+ ```
38
+
39
+ Optional routing metadata fields:
40
+
41
+ | Field | Meaning |
42
+ | --- | --- |
43
+ | `triggers` | Comma-separated terms that should route work to this agent/team |
44
+ | `useWhen` | Comma-separated natural-language use cases |
45
+ | `avoidWhen` | Comma-separated cases where the agent/team should not be used |
46
+ | `cost` | `free`, `cheap`, or `expensive` hint for autonomous routing |
47
+ | `category` | Free-form grouping such as `frontend`, `security`, `docs` |
48
+
49
+ ## Team files
50
+
51
+ Location:
52
+
53
+ ```text
54
+ teams/{name}.team.md # builtin (in this package)
55
+ ~/.pi/agent/teams/{name}.team.md # user-global (shared with pi-mono)
56
+ .crew/teams/{name}.team.md # project (new layout)
57
+ .pi/teams/teams/{name}.team.md # project (legacy layout when .pi/ exists)
58
+ ```
59
+
60
+ Format:
61
+
62
+ ```md
63
+ ---
64
+ name: implementation
65
+ description: Full implementation team
66
+ defaultWorkflow: implementation
67
+ workspaceMode: single
68
+ maxConcurrency: 3
69
+ triggers: implementation, refactor
70
+ useWhen: multi-file implementation
71
+ cost: cheap
72
+ category: implementation
73
+ ---
74
+
75
+ - explorer: agent=explorer map the codebase
76
+ - planner: agent=planner create plan
77
+ - executor: agent=executor implement
78
+ - verifier: agent=verifier verify
79
+ ```
80
+
81
+ Role line:
82
+
83
+ ```text
84
+ - {role-name}: agent={agent-name} [model={provider/model}] [skills={a,b}|false] [maxConcurrency={n}] optional description
85
+ ```
86
+
87
+ ## Workflow files
88
+
89
+ Location:
90
+
91
+ ```text
92
+ workflows/{name}.workflow.md # builtin (in this package)
93
+ ~/.pi/agent/workflows/{name}.workflow.md # user-global
94
+ .crew/workflows/{name}.workflow.md # project (new layout)
95
+ .pi/teams/workflows/{name}.workflow.md # project (legacy layout when .pi/ exists)
96
+ ```
97
+
98
+ Format:
99
+
100
+ ```md
101
+ ---
102
+ name: default
103
+ description: Explore, plan, execute, verify
104
+ ---
105
+
106
+ ## explore
107
+ role: explorer
108
+
109
+ Explore for: {goal}
110
+
111
+ ## plan
112
+ role: planner
113
+ dependsOn: explore
114
+ output: plan.md
115
+
116
+ Create a plan for: {goal}
117
+ ```
118
+
119
+ Step fields:
120
+
121
+ | Field | Meaning |
122
+ | --- | --- |
123
+ | `role` | Team role to run |
124
+ | `dependsOn` | Comma-separated step IDs |
125
+ | `parallelGroup` | Optional grouping metadata |
126
+ | `output` | Output file name or `false` |
127
+ | `reads` | Comma-separated read files or `false` |
128
+ | `model` | Step model override |
129
+ | `skills` | Comma-separated skills or `false` |
130
+ | `progress` | `true`/`false` |
131
+ | `worktree` | `true`/`false` metadata |
132
+ | `verify` | `true`/`false` verification marker |
133
+
134
+ Each step starts with `## step-id` followed by recognized step metadata such as `role:` before the blank line. Level-2 headings inside task bodies are preserved unless they look like a step section with recognized metadata; use `###` or lower for maximum compatibility.
@@ -0,0 +1,171 @@
1
+ # pi-crew Runtime Analysis: child-process vs live-session
2
+
3
+ > Ngày: 2026-05-12
4
+ > Trạng thái: Phân tích hiệu năng — đề xuất chuyển default runtime
5
+
6
+ ---
7
+
8
+ ## 1. Vấn đề hiện tại
9
+
10
+ pi-crew default runtime là **child-process** — mỗi worker spawn một `pi` CLI child process riêng. Điều này gây:
11
+
12
+ ### 1.1 Memory
13
+
14
+ | Scenario | child-process | live-session | Tiết kiệm |
15
+ |---|---|---|---|
16
+ | 1 worker | ~150 MB thêm | ~15 MB thêm | **135 MB** |
17
+ | 4 workers (parallel) | ~600 MB thêm | ~60 MB thêm | **540 MB** |
18
+ | 8 workers (max cap) | ~1.2 GB thêm | ~120 MB thêm | **~1.1 GB** |
19
+
20
+ **Parent Pi process đã chiếm ~308 MB.** Thêm 4 child-process workers = **910 MB tổng**, gần 1 GB chỉ để chạy một team. Máy có 8 GB RAM sẽ bắt đầu swap.
21
+
22
+ ### 1.2 Startup latency
23
+
24
+ | Giai đoạn | child-process | live-session |
25
+ |---|---|---|
26
+ | Process spawn | ~300ms | 0 |
27
+ | Node.js bootstrap | ~500ms | 0 |
28
+ | Pi CLI init + load extensions | ~1-2s | 0 |
29
+ | pi-crew register() (chạy lại trong child) | ~200ms | 0 |
30
+ | createAgentSession() | ~100ms | ~100ms |
31
+ | First LLM token | **2-4s total** | **200-500ms total** |
32
+
33
+ **Mỗi worker mất 2-4s startup.** Team implementation có 3 phases sequential × 2-4s = **6-12s chỉ để spawn processes**, trước khi bất kỳ công việc nào bắt đầu.
34
+
35
+ ### 1.3 CPU overhead
36
+
37
+ - Mỗi child process chạy riêng V8 isolate → riêng JIT compiler, riêng GC
38
+ - `pi-crew register()` chạy **lặp lại** trong mỗi child (load config, register tools, bind extensions)
39
+ - JSON parsing/redaction trên child stdout → CPU cost cho mỗi event
40
+
41
+ ### 1.4 Complexity
42
+
43
+ - `child-pi.ts` = 461 dòng chỉ để quản lý subprocess lifecycle
44
+ - Hard kill timer (3s), post-exit stdio guard (3s), final drain (5s), response timeout (5 min)
45
+ - Process tree kill (`taskkill /t /f` trên Windows, `kill -pgid` trên Unix)
46
+ - Mock system cho testing (`PI_TEAMS_MOCK_CHILD_PI`)
47
+
48
+ ---
49
+
50
+ ## 2. live-session đã sẵn sàng
51
+
52
+ pi-crew **đã implement** live-session runtime hoàn chỉnh:
53
+
54
+ - `src/runtime/live-session-runtime.ts` — 600 LOC, feature parity với child-process cho hầu hết use cases
55
+ - `src/runtime/runtime-resolver.ts` — `resolveCrewRuntime()` đã handle auto/live-session/child-process
56
+ - Soft turn limit + grace period (default 5) — **đã có**, y hệt pi-subagents3
57
+ - Tool filtering — `filterActiveTools()` loại recursive tools
58
+ - Yield/submit_result — custom tool + JSON event detection
59
+ - Live agent control — steer, resume, real-time tool activity
60
+ - Extension bridge — `buildExtensionBridge()` cho extension-based APIs
61
+ - Health diagnostics — `collectLiveSessionHealth()`, `formatLiveSessionDiagnostics()`
62
+
63
+ ### Cấu hình hiện tại cần set thủ công:
64
+
65
+ ```json
66
+ // .pi/crew-config.json
67
+ {
68
+ "runtime": {
69
+ "mode": "live-session"
70
+ }
71
+ }
72
+ ```
73
+
74
+ Hoặc:
75
+ ```json
76
+ {
77
+ "runtime": {
78
+ "mode": "auto",
79
+ "preferLiveSession": true
80
+ }
81
+ }
82
+ ```
83
+
84
+ **Default hiện tại là `"auto"` KHÔNG có `preferLiveSession`** → luôn fallback về child-process.
85
+
86
+ ---
87
+
88
+ ## 3. Đề xuất
89
+
90
+ ### 3.1 Đổi default: `preferLiveSession: true` khi mode = "auto"
91
+
92
+ `resolveCrewRuntime()` hiện tại:
93
+
94
+ ```typescript
95
+ // src/runtime/runtime-resolver.ts
96
+ if (requestedMode === "live-session" || (requestedMode === "auto" && config.runtime?.preferLiveSession === true)) {
97
+ const live = await isLiveSessionRuntimeAvailable(1500, env);
98
+ if (live.available) return liveCaps(requestedMode);
99
+ // fallback to child-process
100
+ }
101
+ return childCaps(requestedMode); // ← default: luôn child-process
102
+ ```
103
+
104
+ **Đề xuất đổi:**
105
+
106
+ ```typescript
107
+ if (requestedMode === "live-session" || requestedMode === "auto") {
108
+ const live = await isLiveSessionRuntimeAvailable(1500, env);
109
+ if (live.available) return liveCaps(requestedMode);
110
+ if (requestedMode === "live-session" && !config.runtime?.allowChildProcessFallback)
111
+ return scaffoldCaps(requestedMode, live.reason, "blocked");
112
+ return { ...childCaps(requestedMode), fallback: "child-process", reason: live.reason };
113
+ }
114
+ ```
115
+
116
+ **Tức là:** `"auto"` → thử live-session trước, fallback child-process nếu SDK không available. User vẫn có thể force `child-process` nếu muốn.
117
+
118
+ ### 3.2 Thêm opt-out cho risky tasks
119
+
120
+ Task-level flag để force child-process cho tasks cụ thể:
121
+
122
+ ```json
123
+ {
124
+ "runtime": {
125
+ "mode": "auto",
126
+ "preferLiveSession": true,
127
+ "riskyIsolation": "child-process"
128
+ }
129
+ }
130
+ ```
131
+
132
+ Tasks có role `executor` hoặc tasks trong worktree → tự dùng child-process.
133
+
134
+ ### 3.3 Lợi ích dự kiến
135
+
136
+ | Metric | Trước (child-process default) | Sau (live-session default) |
137
+ |---|---|---|
138
+ | **4-worker memory** | ~910 MB | ~370 MB |
139
+ | **First token latency** | 2-4s/worker | 200-500ms/worker |
140
+ | **Startup total (3 phases)** | 6-12s | 0.6-1.5s |
141
+ | **Steering** | ❌ | ✅ |
142
+ | **Resume** | ❌ | ✅ |
143
+ | **Crash isolation** | ✅ | ❌ (fallback available) |
144
+ | **Parent crash risk** | None | Low (session.abort handles most) |
145
+
146
+ ### 3.4 Rủi ro và cách giảm thiểu
147
+
148
+ | Rủi ro | Mức độ | Cách giảm thiểu |
149
+ |---|---|---|
150
+ | Agent crash → parent crash | Medium | `try/catch` quanh `session.prompt()`, `AbortController` per-agent, cleanup trên unhandled rejection |
151
+ | Memory pressure (nhiều sessions) | Low | Giữ `maxConcurrent` cap (default 4), limit là đủ |
152
+ | Recursive team calls | Low | `filterActiveTools()` đã loại recursive tools |
153
+ | SDK không available (Pi version cũ) | Low | Auto-fallback về child-process |
154
+ | Unhandled errors trong session | Medium | Global `unhandledRejection` handler per-session |
155
+
156
+ ---
157
+
158
+ ## 4. Kết luận
159
+
160
+ **pi-crew đang dùng runtime quá nặng cho hầu hết use cases.** child-process có crash isolation tuyệt vời nhưng:
161
+
162
+ - **9x memory** so với live-session
163
+ - **8x startup latency**
164
+ - **Không có steer/resume** — mất khả năng interactive
165
+
166
+ live-session **đã implement sẵn**, chỉ cần đổi default. Crash isolation trade-off chấp nhận được vì:
167
+ 1. Pi SDK `createAgentSession()` đã handle大部分 errors
168
+ 2. Fallback child-process vẫn available khi cần
169
+ 3. Lợi ích (540 MB tiết kiệm, 3s faster startup, steer/resume) vượt trội hơn rủi ro
170
+
171
+ **Action:** Đổi `resolveCrewRuntime()` default để `"auto"` prefer live-session, giữ child-process làm fallback.