pi-crew 0.2.3 → 0.2.5

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 (348) hide show
  1. package/AGENTS.md +57 -32
  2. package/CHANGELOG.md +466 -448
  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 -592
  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-review-round4-2026-05-13.md +107 -0
  25. package/docs/implementation-plan-top3.md +333 -0
  26. package/docs/live-mailbox-runtime.md +36 -36
  27. package/docs/next-upgrade-roadmap.md +808 -808
  28. package/docs/oh-my-pi-research.md +509 -0
  29. package/docs/perf/baseline-2026-05.md +113 -0
  30. package/docs/perf/final-report-2026-05.md +206 -0
  31. package/docs/perf/sprint-1-report.md +71 -0
  32. package/docs/perf/sprint-2-report.md +81 -0
  33. package/docs/perf/sprint-2.5-report.md +53 -0
  34. package/docs/perf/sprint-3-report.md +36 -0
  35. package/docs/perf/sprint-4-report.md +47 -0
  36. package/docs/perf/sprint-5-report.md +51 -0
  37. package/docs/perf/sprint-6-report.md +94 -0
  38. package/docs/perf/sprint-7-report.md +74 -0
  39. package/docs/perf/upgrade-plan-2026-05.md +147 -0
  40. package/docs/pi-subagents3-deep-analysis.md +508 -0
  41. package/docs/product/README.md +31 -0
  42. package/docs/product/platform.md +27 -0
  43. package/docs/product/runtime-safety.md +37 -0
  44. package/docs/product/team-run.md +39 -0
  45. package/docs/product/team-tool.md +37 -0
  46. package/docs/publishing.md +65 -65
  47. package/docs/resource-formats.md +134 -134
  48. package/docs/runtime-analysis-child-vs-live.md +171 -0
  49. package/docs/runtime-flow.md +148 -148
  50. package/docs/runtime-migration-in-process-analysis.md +250 -0
  51. package/docs/stories/README.md +30 -0
  52. package/docs/stories/backlog.md +36 -0
  53. package/docs/templates/decision.md +27 -0
  54. package/docs/templates/story.md +44 -0
  55. package/docs/templates/validation-report.md +32 -0
  56. package/docs/usage.md +238 -238
  57. package/index.ts +7 -6
  58. package/install.mjs +65 -65
  59. package/package.json +107 -100
  60. package/schema.json +222 -222
  61. package/skills/child-pi-spawning/SKILL.md +213 -0
  62. package/skills/context-artifact-hygiene/SKILL.md +32 -0
  63. package/skills/event-log-tracing/SKILL.md +299 -0
  64. package/skills/git-master/SKILL.md +225 -24
  65. package/skills/live-agent-lifecycle/SKILL.md +192 -0
  66. package/skills/mailbox-interactive/SKILL.md +300 -19
  67. package/skills/model-routing-context/SKILL.md +94 -0
  68. package/skills/multi-perspective-review/SKILL.md +88 -0
  69. package/skills/read-only-explorer/SKILL.md +250 -26
  70. package/skills/safe-bash/SKILL.md +307 -21
  71. package/skills/verification-before-done/SKILL.md +11 -2
  72. package/skills/widget-rendering/SKILL.md +258 -0
  73. package/skills/workspace-isolation/SKILL.md +202 -0
  74. package/skills/worktree-isolation/SKILL.md +202 -18
  75. package/src/adapters/claude-adapter.ts +25 -25
  76. package/src/adapters/codex-adapter.ts +21 -21
  77. package/src/adapters/cursor-adapter.ts +17 -17
  78. package/src/adapters/export-util.ts +137 -137
  79. package/src/adapters/index.ts +15 -15
  80. package/src/adapters/registry.ts +18 -18
  81. package/src/adapters/types.ts +23 -23
  82. package/src/agents/agent-config.ts +38 -38
  83. package/src/agents/agent-serializer.ts +38 -38
  84. package/src/agents/discover-agents.ts +121 -118
  85. package/src/config/config.ts +740 -858
  86. package/src/config/defaults.ts +96 -96
  87. package/src/config/drift-detector.ts +211 -211
  88. package/src/config/markers.ts +327 -327
  89. package/src/config/resilient-parser.ts +109 -108
  90. package/src/config/suggestions.ts +74 -74
  91. package/src/config/types.ts +199 -0
  92. package/src/extension/async-notifier.ts +123 -89
  93. package/src/extension/autonomous-policy.ts +169 -169
  94. package/src/extension/cross-extension-rpc.ts +104 -104
  95. package/src/extension/help.ts +47 -47
  96. package/src/extension/import-index.ts +69 -69
  97. package/src/extension/management.ts +395 -382
  98. package/src/extension/notification-router.ts +116 -116
  99. package/src/extension/notification-sink.ts +51 -51
  100. package/src/extension/project-init.ts +168 -168
  101. package/src/extension/register.ts +859 -668
  102. package/src/extension/registration/artifact-cleanup.ts +15 -15
  103. package/src/extension/registration/command-utils.ts +54 -54
  104. package/src/extension/registration/commands.ts +559 -452
  105. package/src/extension/registration/compaction-guard.ts +125 -125
  106. package/src/extension/registration/subagent-helpers.ts +102 -102
  107. package/src/extension/registration/subagent-tools.ts +220 -159
  108. package/src/extension/registration/team-tool.ts +159 -99
  109. package/src/extension/registration/viewers.ts +29 -0
  110. package/src/extension/result-watcher.ts +128 -128
  111. package/src/extension/run-bundle-schema.ts +89 -89
  112. package/src/extension/run-export.ts +73 -73
  113. package/src/extension/run-import.ts +84 -84
  114. package/src/extension/run-index.ts +94 -94
  115. package/src/extension/run-maintenance.ts +142 -142
  116. package/src/extension/session-summary.ts +8 -8
  117. package/src/extension/team-manager-command.ts +96 -96
  118. package/src/extension/team-recommendation.ts +188 -188
  119. package/src/extension/team-tool/api.ts +5 -2
  120. package/src/extension/team-tool/cancel.ts +224 -209
  121. package/src/extension/team-tool/config-patch.ts +36 -36
  122. package/src/extension/team-tool/context.ts +60 -60
  123. package/src/extension/team-tool/doctor.ts +242 -242
  124. package/src/extension/team-tool/handle-settings.ts +421 -195
  125. package/src/extension/team-tool/inspect.ts +41 -41
  126. package/src/extension/team-tool/lifecycle-actions.ts +139 -139
  127. package/src/extension/team-tool/parallel-dispatch.ts +156 -156
  128. package/src/extension/team-tool/plan.ts +19 -19
  129. package/src/extension/team-tool/respond.ts +112 -111
  130. package/src/extension/team-tool/run.ts +246 -229
  131. package/src/extension/team-tool/status.ts +110 -110
  132. package/src/extension/team-tool-types.ts +13 -13
  133. package/src/extension/team-tool.ts +344 -344
  134. package/src/extension/tool-result.ts +16 -16
  135. package/src/extension/validate-resources.ts +77 -77
  136. package/src/hooks/registry.ts +61 -61
  137. package/src/hooks/types.ts +40 -40
  138. package/src/i18n.ts +184 -184
  139. package/src/observability/correlation.ts +35 -35
  140. package/src/observability/event-to-metric.ts +68 -68
  141. package/src/observability/exporters/adapter.ts +30 -30
  142. package/src/observability/exporters/otlp-exporter.ts +106 -92
  143. package/src/observability/exporters/prometheus-exporter.ts +54 -54
  144. package/src/observability/metric-registry.ts +87 -87
  145. package/src/observability/metric-retention.ts +54 -54
  146. package/src/observability/metric-sink.ts +81 -56
  147. package/src/observability/metrics-primitives.ts +167 -167
  148. package/src/prompt/prompt-runtime.ts +72 -72
  149. package/src/runtime/adaptive-plan.ts +338 -0
  150. package/src/runtime/agent-control.ts +169 -169
  151. package/src/runtime/agent-memory.ts +72 -72
  152. package/src/runtime/agent-observability.ts +114 -114
  153. package/src/runtime/async-marker.ts +26 -26
  154. package/src/runtime/async-runner.ts +153 -153
  155. package/src/runtime/attention-events.ts +28 -28
  156. package/src/runtime/auto-resume.ts +100 -100
  157. package/src/runtime/background-runner.ts +122 -89
  158. package/src/runtime/cancellation.ts +61 -61
  159. package/src/runtime/capability-inventory.ts +116 -116
  160. package/src/runtime/child-pi-pool.ts +68 -0
  161. package/src/runtime/child-pi.ts +541 -461
  162. package/src/runtime/code-summary.ts +247 -247
  163. package/src/runtime/compaction-summary.ts +271 -271
  164. package/src/runtime/concurrency.ts +58 -58
  165. package/src/runtime/crash-recovery.ts +317 -301
  166. package/src/runtime/crew-agent-records.ts +379 -281
  167. package/src/runtime/crew-agent-runtime.ts +60 -60
  168. package/src/runtime/cross-extension-rpc.ts +72 -0
  169. package/src/runtime/custom-tools/irc-tool.ts +201 -201
  170. package/src/runtime/custom-tools/submit-result-tool.ts +90 -90
  171. package/src/runtime/deadletter.ts +47 -47
  172. package/src/runtime/delivery-coordinator.ts +176 -176
  173. package/src/runtime/delta-conflict.ts +360 -360
  174. package/src/runtime/diagnostic-export.ts +102 -102
  175. package/src/runtime/direct-run.ts +35 -35
  176. package/src/runtime/effectiveness.ts +82 -81
  177. package/src/runtime/errors/crew-errors.ts +166 -0
  178. package/src/runtime/event-stream-bridge.ts +92 -92
  179. package/src/runtime/foreground-control.ts +82 -82
  180. package/src/runtime/green-contract.ts +46 -46
  181. package/src/runtime/group-join.ts +234 -106
  182. package/src/runtime/heartbeat-watcher.ts +145 -124
  183. package/src/runtime/iteration-hooks.ts +267 -267
  184. package/src/runtime/live-agent-control.ts +88 -88
  185. package/src/runtime/live-agent-manager.ts +377 -179
  186. package/src/runtime/live-control-realtime.ts +36 -36
  187. package/src/runtime/live-session-runtime.ts +676 -600
  188. package/src/runtime/loop-gates.ts +129 -129
  189. package/src/runtime/manifest-cache.ts +263 -263
  190. package/src/runtime/mcp-proxy.ts +113 -113
  191. package/src/runtime/metric-parser.ts +40 -40
  192. package/src/runtime/model-fallback.ts +282 -274
  193. package/src/runtime/model-resolver.ts +118 -0
  194. package/src/runtime/output-validator.ts +187 -187
  195. package/src/runtime/overflow-recovery.ts +175 -175
  196. package/src/runtime/parallel-research.ts +44 -44
  197. package/src/runtime/parallel-utils.ts +156 -156
  198. package/src/runtime/parent-guard.ts +80 -80
  199. package/src/runtime/phase-progress.ts +217 -217
  200. package/src/runtime/pi-args.ts +165 -165
  201. package/src/runtime/pi-json-output.ts +111 -111
  202. package/src/runtime/pi-spawn.ts +167 -167
  203. package/src/runtime/policy-engine.ts +79 -79
  204. package/src/runtime/post-checks.ts +125 -125
  205. package/src/runtime/post-exit-stdio-guard.ts +86 -86
  206. package/src/runtime/process-status.ts +97 -73
  207. package/src/runtime/progress-event-coalescer.ts +43 -43
  208. package/src/runtime/recovery-recipes.ts +74 -74
  209. package/src/runtime/retry-executor.ts +81 -81
  210. package/src/runtime/role-permission.ts +39 -39
  211. package/src/runtime/run-tracker.ts +99 -0
  212. package/src/runtime/runtime-policy.ts +21 -0
  213. package/src/runtime/runtime-resolver.ts +94 -91
  214. package/src/runtime/scheduler.ts +294 -0
  215. package/src/runtime/semaphore.ts +131 -131
  216. package/src/runtime/sensitive-paths.ts +92 -92
  217. package/src/runtime/session-usage.ts +79 -79
  218. package/src/runtime/settings-store.ts +103 -0
  219. package/src/runtime/sidechain-output.ts +29 -29
  220. package/src/runtime/skill-instructions.ts +222 -222
  221. package/src/runtime/stale-reconciler.ts +198 -189
  222. package/src/runtime/streaming-output.ts +47 -0
  223. package/src/runtime/subagent-manager.ts +404 -400
  224. package/src/runtime/subprocess-tool-registry.ts +67 -67
  225. package/src/runtime/task-display.ts +38 -38
  226. package/src/runtime/task-graph-scheduler.ts +122 -122
  227. package/src/runtime/task-graph.ts +207 -207
  228. package/src/runtime/task-output-context.ts +177 -177
  229. package/src/runtime/task-packet.ts +93 -93
  230. package/src/runtime/task-quality.ts +207 -207
  231. package/src/runtime/task-runner/capabilities.ts +78 -78
  232. package/src/runtime/task-runner/live-executor.ts +131 -113
  233. package/src/runtime/task-runner/progress.ts +119 -119
  234. package/src/runtime/task-runner/prompt-builder.ts +139 -139
  235. package/src/runtime/task-runner/prompt-pipeline.ts +64 -64
  236. package/src/runtime/task-runner/result-utils.ts +14 -14
  237. package/src/runtime/task-runner/run-projection.ts +103 -103
  238. package/src/runtime/task-runner/state-helpers.ts +22 -22
  239. package/src/runtime/task-runner.ts +469 -459
  240. package/src/runtime/team-runner.ts +693 -945
  241. package/src/runtime/usage-tracker.ts +71 -0
  242. package/src/runtime/worker-heartbeat.ts +21 -21
  243. package/src/runtime/worker-startup.ts +57 -57
  244. package/src/runtime/workflow-state.ts +187 -187
  245. package/src/runtime/yield-handler.ts +190 -190
  246. package/src/schema/config-schema.ts +172 -168
  247. package/src/schema/team-tool-schema.ts +126 -126
  248. package/src/schema/validation-types.ts +151 -148
  249. package/src/skills/discover-skills.ts +67 -67
  250. package/src/skills/skill-templates.ts +374 -374
  251. package/src/state/active-run-registry.ts +227 -191
  252. package/src/state/artifact-store.ts +130 -129
  253. package/src/state/atomic-write.ts +262 -195
  254. package/src/state/blob-store.ts +116 -116
  255. package/src/state/contracts.ts +111 -111
  256. package/src/state/event-log-rotation.ts +161 -158
  257. package/src/state/event-log.ts +383 -303
  258. package/src/state/event-reconstructor.ts +217 -217
  259. package/src/state/jsonl-writer.ts +82 -82
  260. package/src/state/locks.ts +146 -146
  261. package/src/state/mailbox.ts +446 -405
  262. package/src/state/state-store.ts +364 -351
  263. package/src/state/task-claims.ts +44 -44
  264. package/src/state/types.ts +285 -285
  265. package/src/state/usage.ts +29 -29
  266. package/src/subagents/async-entry.ts +1 -1
  267. package/src/subagents/index.ts +3 -3
  268. package/src/subagents/live/control.ts +1 -1
  269. package/src/subagents/live/manager.ts +1 -1
  270. package/src/subagents/live/realtime.ts +1 -1
  271. package/src/subagents/live/session-runtime.ts +1 -1
  272. package/src/subagents/manager.ts +1 -1
  273. package/src/subagents/spawn.ts +1 -1
  274. package/src/teams/discover-teams.ts +116 -116
  275. package/src/teams/team-config.ts +27 -27
  276. package/src/teams/team-serializer.ts +38 -38
  277. package/src/types/diff.d.ts +18 -18
  278. package/src/ui/agent-management-overlay.ts +144 -144
  279. package/src/ui/crew-widget.ts +487 -370
  280. package/src/ui/dashboard-panes/agents-pane.ts +109 -28
  281. package/src/ui/dashboard-panes/cancellation-pane.ts +42 -42
  282. package/src/ui/dashboard-panes/capability-pane.ts +59 -59
  283. package/src/ui/dashboard-panes/health-pane.ts +30 -30
  284. package/src/ui/dashboard-panes/mailbox-pane.ts +35 -35
  285. package/src/ui/dashboard-panes/progress-pane.ts +30 -30
  286. package/src/ui/dashboard-panes/transcript-pane.ts +10 -10
  287. package/src/ui/heartbeat-aggregator.ts +63 -63
  288. package/src/ui/keybinding-map.ts +97 -94
  289. package/src/ui/live-conversation-overlay.ts +152 -0
  290. package/src/ui/live-run-sidebar.ts +180 -180
  291. package/src/ui/mascot.ts +442 -442
  292. package/src/ui/overlays/agent-picker-overlay.ts +57 -57
  293. package/src/ui/overlays/confirm-overlay.ts +58 -58
  294. package/src/ui/overlays/mailbox-compose-overlay.ts +144 -144
  295. package/src/ui/overlays/mailbox-compose-preview.ts +63 -63
  296. package/src/ui/overlays/mailbox-detail-overlay.ts +122 -122
  297. package/src/ui/pi-ui-compat.ts +57 -57
  298. package/src/ui/powerbar-publisher.ts +221 -197
  299. package/src/ui/render-scheduler.ts +216 -143
  300. package/src/ui/run-action-dispatcher.ts +118 -118
  301. package/src/ui/run-dashboard.ts +526 -464
  302. package/src/ui/run-event-bus.ts +208 -208
  303. package/src/ui/run-snapshot-cache.ts +826 -777
  304. package/src/ui/settings-overlay.ts +721 -0
  305. package/src/ui/snapshot-types.ts +86 -70
  306. package/src/ui/theme-adapter.ts +190 -190
  307. package/src/ui/tool-progress-formatter.ts +89 -0
  308. package/src/ui/transcript-cache.ts +94 -94
  309. package/src/ui/transcript-viewer.ts +335 -335
  310. package/src/utils/conflict-detect.ts +662 -0
  311. package/src/utils/file-coalescer.ts +86 -86
  312. package/src/utils/frontmatter.ts +68 -68
  313. package/src/utils/fs-watch.ts +88 -31
  314. package/src/utils/gh-protocol.ts +479 -0
  315. package/src/utils/ids.ts +17 -17
  316. package/src/utils/incremental-reader.ts +104 -104
  317. package/src/utils/internal-error.ts +6 -6
  318. package/src/utils/names.ts +27 -27
  319. package/src/utils/paths.ts +102 -63
  320. package/src/utils/redaction.ts +44 -44
  321. package/src/utils/safe-paths.ts +47 -47
  322. package/src/utils/scan-cache.ts +136 -136
  323. package/src/utils/sse-parser.ts +134 -134
  324. package/src/utils/task-name-generator.ts +337 -337
  325. package/src/utils/timings.ts +33 -33
  326. package/src/utils/visual.ts +243 -198
  327. package/src/workflows/discover-workflows.ts +139 -139
  328. package/src/workflows/validate-workflow.ts +40 -40
  329. package/src/workflows/workflow-config.ts +26 -26
  330. package/src/workflows/workflow-serializer.ts +32 -32
  331. package/src/worktree/branch-freshness.ts +45 -45
  332. package/src/worktree/cleanup.ts +75 -75
  333. package/src/worktree/worktree-manager.ts +188 -188
  334. package/teams/default.team.md +12 -12
  335. package/teams/fast-fix.team.md +11 -11
  336. package/teams/implementation.team.md +18 -18
  337. package/teams/parallel-research.team.md +14 -14
  338. package/teams/research.team.md +11 -11
  339. package/teams/review.team.md +12 -12
  340. package/tsconfig.json +19 -19
  341. package/workflows/default.workflow.md +30 -30
  342. package/workflows/fast-fix.workflow.md +23 -23
  343. package/workflows/implementation.workflow.md +43 -43
  344. package/workflows/parallel-research.workflow.md +46 -46
  345. package/workflows/research.workflow.md +22 -22
  346. package/workflows/review.workflow.md +30 -30
  347. package/skills/task-packet/SKILL.md +0 -28
  348. 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.