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.
- package/AGENTS.md +57 -32
- package/CHANGELOG.md +466 -448
- package/LICENSE +21 -21
- package/NOTICE.md +16 -16
- package/README.md +323 -323
- package/docs/FEATURE_INTAKE.md +126 -0
- package/docs/HARNESS.md +86 -0
- package/docs/HARNESS_BACKLOG.md +41 -0
- package/docs/TEST_MATRIX.md +49 -0
- package/docs/actions-reference.md +595 -595
- package/docs/architecture.md +180 -180
- package/docs/code-review-2026-05-11.md +592 -592
- package/docs/commands-reference.md +347 -347
- package/docs/comparison-pi-subagents-vs-pi-crew.md +303 -0
- package/docs/decisions/0001-durable-state.md +41 -0
- package/docs/decisions/0002-child-process-for-async.md +42 -0
- package/docs/decisions/0003-depth-guard.md +36 -0
- package/docs/decisions/0004-execfile-over-exec.md +34 -0
- package/docs/decisions/0005-no-parameter-properties.md +49 -0
- package/docs/decisions/0006-publish-bundled-esm.md +63 -0
- package/docs/decisions/0007-active-run-binary-index.md +54 -0
- package/docs/decisions/0008-child-pi-warm-pool.md +61 -0
- package/docs/decisions/README.md +23 -0
- package/docs/followup-review-round4-2026-05-13.md +107 -0
- package/docs/implementation-plan-top3.md +333 -0
- package/docs/live-mailbox-runtime.md +36 -36
- package/docs/next-upgrade-roadmap.md +808 -808
- package/docs/oh-my-pi-research.md +509 -0
- package/docs/perf/baseline-2026-05.md +113 -0
- package/docs/perf/final-report-2026-05.md +206 -0
- package/docs/perf/sprint-1-report.md +71 -0
- package/docs/perf/sprint-2-report.md +81 -0
- package/docs/perf/sprint-2.5-report.md +53 -0
- package/docs/perf/sprint-3-report.md +36 -0
- package/docs/perf/sprint-4-report.md +47 -0
- package/docs/perf/sprint-5-report.md +51 -0
- package/docs/perf/sprint-6-report.md +94 -0
- package/docs/perf/sprint-7-report.md +74 -0
- package/docs/perf/upgrade-plan-2026-05.md +147 -0
- package/docs/pi-subagents3-deep-analysis.md +508 -0
- package/docs/product/README.md +31 -0
- package/docs/product/platform.md +27 -0
- package/docs/product/runtime-safety.md +37 -0
- package/docs/product/team-run.md +39 -0
- package/docs/product/team-tool.md +37 -0
- package/docs/publishing.md +65 -65
- package/docs/resource-formats.md +134 -134
- package/docs/runtime-analysis-child-vs-live.md +171 -0
- package/docs/runtime-flow.md +148 -148
- package/docs/runtime-migration-in-process-analysis.md +250 -0
- package/docs/stories/README.md +30 -0
- package/docs/stories/backlog.md +36 -0
- package/docs/templates/decision.md +27 -0
- package/docs/templates/story.md +44 -0
- package/docs/templates/validation-report.md +32 -0
- package/docs/usage.md +238 -238
- package/index.ts +7 -6
- package/install.mjs +65 -65
- package/package.json +107 -100
- package/schema.json +222 -222
- package/skills/child-pi-spawning/SKILL.md +213 -0
- package/skills/context-artifact-hygiene/SKILL.md +32 -0
- package/skills/event-log-tracing/SKILL.md +299 -0
- package/skills/git-master/SKILL.md +225 -24
- package/skills/live-agent-lifecycle/SKILL.md +192 -0
- package/skills/mailbox-interactive/SKILL.md +300 -19
- package/skills/model-routing-context/SKILL.md +94 -0
- package/skills/multi-perspective-review/SKILL.md +88 -0
- package/skills/read-only-explorer/SKILL.md +250 -26
- package/skills/safe-bash/SKILL.md +307 -21
- package/skills/verification-before-done/SKILL.md +11 -2
- package/skills/widget-rendering/SKILL.md +258 -0
- package/skills/workspace-isolation/SKILL.md +202 -0
- package/skills/worktree-isolation/SKILL.md +202 -18
- package/src/adapters/claude-adapter.ts +25 -25
- package/src/adapters/codex-adapter.ts +21 -21
- package/src/adapters/cursor-adapter.ts +17 -17
- package/src/adapters/export-util.ts +137 -137
- package/src/adapters/index.ts +15 -15
- package/src/adapters/registry.ts +18 -18
- package/src/adapters/types.ts +23 -23
- package/src/agents/agent-config.ts +38 -38
- package/src/agents/agent-serializer.ts +38 -38
- package/src/agents/discover-agents.ts +121 -118
- package/src/config/config.ts +740 -858
- package/src/config/defaults.ts +96 -96
- package/src/config/drift-detector.ts +211 -211
- package/src/config/markers.ts +327 -327
- package/src/config/resilient-parser.ts +109 -108
- package/src/config/suggestions.ts +74 -74
- package/src/config/types.ts +199 -0
- package/src/extension/async-notifier.ts +123 -89
- package/src/extension/autonomous-policy.ts +169 -169
- package/src/extension/cross-extension-rpc.ts +104 -104
- package/src/extension/help.ts +47 -47
- package/src/extension/import-index.ts +69 -69
- package/src/extension/management.ts +395 -382
- package/src/extension/notification-router.ts +116 -116
- package/src/extension/notification-sink.ts +51 -51
- package/src/extension/project-init.ts +168 -168
- package/src/extension/register.ts +859 -668
- package/src/extension/registration/artifact-cleanup.ts +15 -15
- package/src/extension/registration/command-utils.ts +54 -54
- package/src/extension/registration/commands.ts +559 -452
- package/src/extension/registration/compaction-guard.ts +125 -125
- package/src/extension/registration/subagent-helpers.ts +102 -102
- package/src/extension/registration/subagent-tools.ts +220 -159
- package/src/extension/registration/team-tool.ts +159 -99
- package/src/extension/registration/viewers.ts +29 -0
- package/src/extension/result-watcher.ts +128 -128
- package/src/extension/run-bundle-schema.ts +89 -89
- package/src/extension/run-export.ts +73 -73
- package/src/extension/run-import.ts +84 -84
- package/src/extension/run-index.ts +94 -94
- package/src/extension/run-maintenance.ts +142 -142
- package/src/extension/session-summary.ts +8 -8
- package/src/extension/team-manager-command.ts +96 -96
- package/src/extension/team-recommendation.ts +188 -188
- package/src/extension/team-tool/api.ts +5 -2
- package/src/extension/team-tool/cancel.ts +224 -209
- package/src/extension/team-tool/config-patch.ts +36 -36
- package/src/extension/team-tool/context.ts +60 -60
- package/src/extension/team-tool/doctor.ts +242 -242
- package/src/extension/team-tool/handle-settings.ts +421 -195
- package/src/extension/team-tool/inspect.ts +41 -41
- package/src/extension/team-tool/lifecycle-actions.ts +139 -139
- package/src/extension/team-tool/parallel-dispatch.ts +156 -156
- package/src/extension/team-tool/plan.ts +19 -19
- package/src/extension/team-tool/respond.ts +112 -111
- package/src/extension/team-tool/run.ts +246 -229
- package/src/extension/team-tool/status.ts +110 -110
- package/src/extension/team-tool-types.ts +13 -13
- package/src/extension/team-tool.ts +344 -344
- package/src/extension/tool-result.ts +16 -16
- package/src/extension/validate-resources.ts +77 -77
- package/src/hooks/registry.ts +61 -61
- package/src/hooks/types.ts +40 -40
- package/src/i18n.ts +184 -184
- package/src/observability/correlation.ts +35 -35
- package/src/observability/event-to-metric.ts +68 -68
- package/src/observability/exporters/adapter.ts +30 -30
- package/src/observability/exporters/otlp-exporter.ts +106 -92
- package/src/observability/exporters/prometheus-exporter.ts +54 -54
- package/src/observability/metric-registry.ts +87 -87
- package/src/observability/metric-retention.ts +54 -54
- package/src/observability/metric-sink.ts +81 -56
- package/src/observability/metrics-primitives.ts +167 -167
- package/src/prompt/prompt-runtime.ts +72 -72
- package/src/runtime/adaptive-plan.ts +338 -0
- package/src/runtime/agent-control.ts +169 -169
- package/src/runtime/agent-memory.ts +72 -72
- package/src/runtime/agent-observability.ts +114 -114
- package/src/runtime/async-marker.ts +26 -26
- package/src/runtime/async-runner.ts +153 -153
- package/src/runtime/attention-events.ts +28 -28
- package/src/runtime/auto-resume.ts +100 -100
- package/src/runtime/background-runner.ts +122 -89
- package/src/runtime/cancellation.ts +61 -61
- package/src/runtime/capability-inventory.ts +116 -116
- package/src/runtime/child-pi-pool.ts +68 -0
- package/src/runtime/child-pi.ts +541 -461
- package/src/runtime/code-summary.ts +247 -247
- package/src/runtime/compaction-summary.ts +271 -271
- package/src/runtime/concurrency.ts +58 -58
- package/src/runtime/crash-recovery.ts +317 -301
- package/src/runtime/crew-agent-records.ts +379 -281
- package/src/runtime/crew-agent-runtime.ts +60 -60
- package/src/runtime/cross-extension-rpc.ts +72 -0
- package/src/runtime/custom-tools/irc-tool.ts +201 -201
- package/src/runtime/custom-tools/submit-result-tool.ts +90 -90
- package/src/runtime/deadletter.ts +47 -47
- package/src/runtime/delivery-coordinator.ts +176 -176
- package/src/runtime/delta-conflict.ts +360 -360
- package/src/runtime/diagnostic-export.ts +102 -102
- package/src/runtime/direct-run.ts +35 -35
- package/src/runtime/effectiveness.ts +82 -81
- package/src/runtime/errors/crew-errors.ts +166 -0
- package/src/runtime/event-stream-bridge.ts +92 -92
- package/src/runtime/foreground-control.ts +82 -82
- package/src/runtime/green-contract.ts +46 -46
- package/src/runtime/group-join.ts +234 -106
- package/src/runtime/heartbeat-watcher.ts +145 -124
- package/src/runtime/iteration-hooks.ts +267 -267
- package/src/runtime/live-agent-control.ts +88 -88
- package/src/runtime/live-agent-manager.ts +377 -179
- package/src/runtime/live-control-realtime.ts +36 -36
- package/src/runtime/live-session-runtime.ts +676 -600
- package/src/runtime/loop-gates.ts +129 -129
- package/src/runtime/manifest-cache.ts +263 -263
- package/src/runtime/mcp-proxy.ts +113 -113
- package/src/runtime/metric-parser.ts +40 -40
- package/src/runtime/model-fallback.ts +282 -274
- package/src/runtime/model-resolver.ts +118 -0
- package/src/runtime/output-validator.ts +187 -187
- package/src/runtime/overflow-recovery.ts +175 -175
- package/src/runtime/parallel-research.ts +44 -44
- package/src/runtime/parallel-utils.ts +156 -156
- package/src/runtime/parent-guard.ts +80 -80
- package/src/runtime/phase-progress.ts +217 -217
- package/src/runtime/pi-args.ts +165 -165
- package/src/runtime/pi-json-output.ts +111 -111
- package/src/runtime/pi-spawn.ts +167 -167
- package/src/runtime/policy-engine.ts +79 -79
- package/src/runtime/post-checks.ts +125 -125
- package/src/runtime/post-exit-stdio-guard.ts +86 -86
- package/src/runtime/process-status.ts +97 -73
- package/src/runtime/progress-event-coalescer.ts +43 -43
- package/src/runtime/recovery-recipes.ts +74 -74
- package/src/runtime/retry-executor.ts +81 -81
- package/src/runtime/role-permission.ts +39 -39
- package/src/runtime/run-tracker.ts +99 -0
- package/src/runtime/runtime-policy.ts +21 -0
- package/src/runtime/runtime-resolver.ts +94 -91
- package/src/runtime/scheduler.ts +294 -0
- package/src/runtime/semaphore.ts +131 -131
- package/src/runtime/sensitive-paths.ts +92 -92
- package/src/runtime/session-usage.ts +79 -79
- package/src/runtime/settings-store.ts +103 -0
- package/src/runtime/sidechain-output.ts +29 -29
- package/src/runtime/skill-instructions.ts +222 -222
- package/src/runtime/stale-reconciler.ts +198 -189
- package/src/runtime/streaming-output.ts +47 -0
- package/src/runtime/subagent-manager.ts +404 -400
- package/src/runtime/subprocess-tool-registry.ts +67 -67
- package/src/runtime/task-display.ts +38 -38
- package/src/runtime/task-graph-scheduler.ts +122 -122
- package/src/runtime/task-graph.ts +207 -207
- package/src/runtime/task-output-context.ts +177 -177
- package/src/runtime/task-packet.ts +93 -93
- package/src/runtime/task-quality.ts +207 -207
- package/src/runtime/task-runner/capabilities.ts +78 -78
- package/src/runtime/task-runner/live-executor.ts +131 -113
- package/src/runtime/task-runner/progress.ts +119 -119
- package/src/runtime/task-runner/prompt-builder.ts +139 -139
- package/src/runtime/task-runner/prompt-pipeline.ts +64 -64
- package/src/runtime/task-runner/result-utils.ts +14 -14
- package/src/runtime/task-runner/run-projection.ts +103 -103
- package/src/runtime/task-runner/state-helpers.ts +22 -22
- package/src/runtime/task-runner.ts +469 -459
- package/src/runtime/team-runner.ts +693 -945
- package/src/runtime/usage-tracker.ts +71 -0
- package/src/runtime/worker-heartbeat.ts +21 -21
- package/src/runtime/worker-startup.ts +57 -57
- package/src/runtime/workflow-state.ts +187 -187
- package/src/runtime/yield-handler.ts +190 -190
- package/src/schema/config-schema.ts +172 -168
- package/src/schema/team-tool-schema.ts +126 -126
- package/src/schema/validation-types.ts +151 -148
- package/src/skills/discover-skills.ts +67 -67
- package/src/skills/skill-templates.ts +374 -374
- package/src/state/active-run-registry.ts +227 -191
- package/src/state/artifact-store.ts +130 -129
- package/src/state/atomic-write.ts +262 -195
- package/src/state/blob-store.ts +116 -116
- package/src/state/contracts.ts +111 -111
- package/src/state/event-log-rotation.ts +161 -158
- package/src/state/event-log.ts +383 -303
- package/src/state/event-reconstructor.ts +217 -217
- package/src/state/jsonl-writer.ts +82 -82
- package/src/state/locks.ts +146 -146
- package/src/state/mailbox.ts +446 -405
- package/src/state/state-store.ts +364 -351
- package/src/state/task-claims.ts +44 -44
- package/src/state/types.ts +285 -285
- package/src/state/usage.ts +29 -29
- package/src/subagents/async-entry.ts +1 -1
- package/src/subagents/index.ts +3 -3
- package/src/subagents/live/control.ts +1 -1
- package/src/subagents/live/manager.ts +1 -1
- package/src/subagents/live/realtime.ts +1 -1
- package/src/subagents/live/session-runtime.ts +1 -1
- package/src/subagents/manager.ts +1 -1
- package/src/subagents/spawn.ts +1 -1
- package/src/teams/discover-teams.ts +116 -116
- package/src/teams/team-config.ts +27 -27
- package/src/teams/team-serializer.ts +38 -38
- package/src/types/diff.d.ts +18 -18
- package/src/ui/agent-management-overlay.ts +144 -144
- package/src/ui/crew-widget.ts +487 -370
- package/src/ui/dashboard-panes/agents-pane.ts +109 -28
- package/src/ui/dashboard-panes/cancellation-pane.ts +42 -42
- package/src/ui/dashboard-panes/capability-pane.ts +59 -59
- package/src/ui/dashboard-panes/health-pane.ts +30 -30
- package/src/ui/dashboard-panes/mailbox-pane.ts +35 -35
- package/src/ui/dashboard-panes/progress-pane.ts +30 -30
- package/src/ui/dashboard-panes/transcript-pane.ts +10 -10
- package/src/ui/heartbeat-aggregator.ts +63 -63
- package/src/ui/keybinding-map.ts +97 -94
- package/src/ui/live-conversation-overlay.ts +152 -0
- package/src/ui/live-run-sidebar.ts +180 -180
- package/src/ui/mascot.ts +442 -442
- package/src/ui/overlays/agent-picker-overlay.ts +57 -57
- package/src/ui/overlays/confirm-overlay.ts +58 -58
- package/src/ui/overlays/mailbox-compose-overlay.ts +144 -144
- package/src/ui/overlays/mailbox-compose-preview.ts +63 -63
- package/src/ui/overlays/mailbox-detail-overlay.ts +122 -122
- package/src/ui/pi-ui-compat.ts +57 -57
- package/src/ui/powerbar-publisher.ts +221 -197
- package/src/ui/render-scheduler.ts +216 -143
- package/src/ui/run-action-dispatcher.ts +118 -118
- package/src/ui/run-dashboard.ts +526 -464
- package/src/ui/run-event-bus.ts +208 -208
- package/src/ui/run-snapshot-cache.ts +826 -777
- package/src/ui/settings-overlay.ts +721 -0
- package/src/ui/snapshot-types.ts +86 -70
- package/src/ui/theme-adapter.ts +190 -190
- package/src/ui/tool-progress-formatter.ts +89 -0
- package/src/ui/transcript-cache.ts +94 -94
- package/src/ui/transcript-viewer.ts +335 -335
- package/src/utils/conflict-detect.ts +662 -0
- package/src/utils/file-coalescer.ts +86 -86
- package/src/utils/frontmatter.ts +68 -68
- package/src/utils/fs-watch.ts +88 -31
- package/src/utils/gh-protocol.ts +479 -0
- package/src/utils/ids.ts +17 -17
- package/src/utils/incremental-reader.ts +104 -104
- package/src/utils/internal-error.ts +6 -6
- package/src/utils/names.ts +27 -27
- package/src/utils/paths.ts +102 -63
- package/src/utils/redaction.ts +44 -44
- package/src/utils/safe-paths.ts +47 -47
- package/src/utils/scan-cache.ts +136 -136
- package/src/utils/sse-parser.ts +134 -134
- package/src/utils/task-name-generator.ts +337 -337
- package/src/utils/timings.ts +33 -33
- package/src/utils/visual.ts +243 -198
- package/src/workflows/discover-workflows.ts +139 -139
- package/src/workflows/validate-workflow.ts +40 -40
- package/src/workflows/workflow-config.ts +26 -26
- package/src/workflows/workflow-serializer.ts +32 -32
- package/src/worktree/branch-freshness.ts +45 -45
- package/src/worktree/cleanup.ts +75 -75
- package/src/worktree/worktree-manager.ts +188 -188
- package/teams/default.team.md +12 -12
- package/teams/fast-fix.team.md +11 -11
- package/teams/implementation.team.md +18 -18
- package/teams/parallel-research.team.md +14 -14
- package/teams/research.team.md +11 -11
- package/teams/review.team.md +12 -12
- package/tsconfig.json +19 -19
- package/workflows/default.workflow.md +30 -30
- package/workflows/fast-fix.workflow.md +23 -23
- package/workflows/implementation.workflow.md +43 -43
- package/workflows/parallel-research.workflow.md +46 -46
- package/workflows/research.workflow.md +22 -22
- package/workflows/review.workflow.md +30 -30
- package/skills/task-packet/SKILL.md +0 -28
- package/skills/verify-evidence/SKILL.md +0 -27
package/docs/publishing.md
CHANGED
|
@@ -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
|
+
```
|
package/docs/resource-formats.md
CHANGED
|
@@ -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.
|