pi-crew 0.9.50 → 0.9.52
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/CHANGELOG.md +150 -0
- package/README.md +216 -20
- package/dist/build-meta.json +2222 -1761
- package/dist/index.mjs +18636 -17603
- package/docs/actions-reference.md +431 -1
- package/package.json +19 -9
- package/schema.json +41 -0
- package/scripts/check-bundle-size.mjs +38 -0
- package/scripts/test-runner.mjs +11 -1
- package/skills/distill-software/SKILL.md +24 -1
- package/dist/index.mjs.map +0 -7
- package/docs/FEATURE_INTAKE.md +0 -126
- package/docs/HARNESS.md +0 -87
- package/docs/HARNESS_BACKLOG.md +0 -89
- package/docs/PROJECT_REVIEW.md +0 -270
- package/docs/PROJECT_REVIEW_FIXES.md +0 -342
- package/docs/PROJECT_REVIEW_ROUND4.md +0 -156
- package/docs/PROJECT_REVIEW_ROUND5.md +0 -86
- package/docs/REVIEW-FINDINGS-2026-06 +0 -357
- package/docs/REVIEW-FINDINGS-2026-07-CORE.md +0 -139
- package/docs/REVIEW-FINDINGS-2026-07.md +0 -125
- package/docs/TEST_MATRIX.md +0 -51
- package/docs/archive/README.md +0 -91
- package/docs/archive/followup-review-round3-2026-05-12.md +0 -342
- package/docs/archive/followup-review-round4-2026-05-13.md +0 -107
- package/docs/archive/pi-crew-bugs.md +0 -961
- package/docs/archive/pi-crew-test-final.md +0 -120
- package/docs/archive/pi-crew-test-results.md +0 -260
- package/docs/archive/pi-crew-test-round2.md +0 -136
- package/docs/archive/pi-crew-test-round4.md +0 -100
- package/docs/archive/pi-crew-test-round5.md +0 -70
- package/docs/archive/pi-crew-test-round6.md +0 -110
- package/docs/archive/pi-crew-v0.5.10-audit-fix-plan.md +0 -60
- package/docs/archive/pi-crew-v0.5.11-audit-fix-plan.md +0 -92
- package/docs/archive/pi-crew-v0.5.12-audit-fix-plan.md +0 -76
- package/docs/archive/pi-crew-v0.5.13-audit-fix-plan.md +0 -75
- package/docs/archive/pi-crew-v0.5.14-audit-fix-plan.md +0 -75
- package/docs/archive/pi-crew-v0.5.16-audit-fix-plan.md +0 -35
- package/docs/archive/pi-crew-v0.5.17-audit-fix-plan.md +0 -80
- package/docs/archive/pi-crew-v0.5.5-audit-fix-plan.md +0 -133
- package/docs/archive/pi-crew-v0.5.9-audit-fix-plan.md +0 -88
- package/docs/archive/pi-mono-opportunities.md +0 -969
- package/docs/archive/pi-mono-review.md +0 -291
- package/docs/archive/pi-subagent4-comparison.md +0 -261
- package/docs/archive/pi-subagents3-deep-analysis.md +0 -508
- package/docs/bugs/bug-021-notification-badge-counter-misleading.md +0 -293
- package/docs/bugs/bug-023-chain-windows-path-resolution.md +0 -106
- package/docs/bugs/bug-quota-display-truncation.md +0 -223
- package/docs/bugs/cross-session-notification-leakage.md +0 -82
- package/docs/code-review-2026-05-11.md +0 -592
- package/docs/coding-agent-optimization.md +0 -268
- package/docs/comparison-pi-subagents-vs-pi-crew.md +0 -303
- package/docs/decisions/0001-durable-state.md +0 -41
- package/docs/decisions/0002-child-process-for-async.md +0 -42
- package/docs/decisions/0003-depth-guard.md +0 -36
- package/docs/decisions/0004-execfile-over-exec.md +0 -34
- package/docs/decisions/0005-no-parameter-properties.md +0 -49
- package/docs/decisions/0006-publish-bundled-esm.md +0 -63
- package/docs/decisions/0007-active-run-binary-index.md +0 -54
- package/docs/decisions/0008-child-pi-warm-pool.md +0 -61
- package/docs/decisions/2026-07-21-broker-phase4-default-on.md +0 -77
- package/docs/decisions/2026-07-21-broker-windows-perms.md +0 -91
- package/docs/decisions/2026-07-22-broker-phase4-gated-on.md +0 -99
- package/docs/decisions/2026-07-24-oidc-trusted-publishing.md +0 -112
- package/docs/decisions/README.md +0 -26
- package/docs/deep-review-report.md +0 -384
- package/docs/distillation/cybersecurity-patterns.md +0 -294
- package/docs/feature-analysis-subagent4.md +0 -305
- package/docs/fix-plan-disabletools-exit-null.md +0 -219
- package/docs/fixes/BATCH_A_H1_H2.md +0 -86
- package/docs/fixes/bug-006-foreground-cancel-concurrent.md +0 -78
- package/docs/fixes/bug-007-async-notifier-stale-ctx.md +0 -112
- package/docs/fixes/bug-008-child-process-silent-timeout.md +0 -100
- package/docs/fixes/bug-009-executor-yield-limit-needs-attention.md +0 -75
- package/docs/fixes/bug-010-child-process-api-key-filtered.md +0 -109
- package/docs/fixes/bug-011-spawn-pi-enoent.md +0 -92
- package/docs/fixes/bug-012-essential-env-stripped.md +0 -89
- package/docs/fixes/bug-013-background-runner-death.md +0 -84
- package/docs/fixes/bug-014-infinite-retry-loop-needs-attention.md +0 -82
- package/docs/fixes/bug-015-background-runner-sigterm.md +0 -65
- package/docs/fixes/bug-017-background-runner-session-shutdown.md +0 -66
- package/docs/fixes/bug-017-background-runner-sigkill-double-fork.md +0 -28
- package/docs/fixes/bug-018-child-pi-worker-stdin-hang.md +0 -61
- package/docs/fixes/bug-019-phantom-runs-temp-workspace.md +0 -52
- package/docs/fixes/bug-020-infinite-retry-loop-needs-attention.md +0 -47
- package/docs/fixes/v0.9.10/locks-fix-verify.md +0 -3
- package/docs/fixes/v0.9.10/smoke-test.md +0 -12
- package/docs/followup-plan-2026-05-12.md +0 -463
- package/docs/followup-review-2026-05-12.md +0 -297
- package/docs/goals.md +0 -59
- package/docs/implementation-plan-top3.md +0 -333
- package/docs/issue-29-analysis.md +0 -189
- package/docs/live-mailbox-runtime.md +0 -36
- package/docs/migration/atomic-write-v2-migration.md +0 -299
- package/docs/next-upgrade-roadmap.md +0 -808
- package/docs/oh-my-pi-research.md +0 -509
- package/docs/optimization-plan-2026-07.md +0 -366
- package/docs/optimization-plan.md +0 -644
- package/docs/patterns/command-agent-skill.md +0 -71
- package/docs/perf/baseline-2026-05.md +0 -113
- package/docs/perf/final-report-2026-05.md +0 -206
- package/docs/perf/optimization-plan-2026-07-verified.md +0 -396
- package/docs/perf/performance-audit-report-2026-07.md +0 -948
- package/docs/perf/performance-review-2026-07.md +0 -287
- package/docs/perf/sprint-1-report.md +0 -71
- package/docs/perf/sprint-2-report.md +0 -81
- package/docs/perf/sprint-2.5-report.md +0 -53
- package/docs/perf/sprint-3-report.md +0 -36
- package/docs/perf/sprint-4-report.md +0 -47
- package/docs/perf/sprint-5-report.md +0 -51
- package/docs/perf/sprint-6-report.md +0 -94
- package/docs/perf/sprint-7-report.md +0 -74
- package/docs/perf/upgrade-plan-2026-05.md +0 -147
- package/docs/performance-optimization-execution-plan.md +0 -520
- package/docs/phase4-triage.md +0 -58
- package/docs/pi-crew-investigation-report.md +0 -411
- package/docs/product/README.md +0 -31
- package/docs/product/platform.md +0 -27
- package/docs/product/runtime-safety.md +0 -37
- package/docs/product/team-run.md +0 -39
- package/docs/product/team-tool.md +0 -37
- package/docs/runtime-analysis-child-vs-live.md +0 -171
- package/docs/runtime-migration-in-process-analysis.md +0 -250
- package/docs/skills/REFERENCE.md +0 -138
- package/docs/stories/README.md +0 -32
- package/docs/stories/US-DEPS-major-upgrade.md +0 -62
- package/docs/stories/backlog.md +0 -36
- package/docs/superpowers/plans/2026-06-09-fallow-patterns-adoption.md +0 -1270
- package/docs/templates/decision.md +0 -27
- package/docs/templates/story.md +0 -44
- package/docs/templates/validation-report.md +0 -32
- package/docs/ui-optimization-plan.md +0 -447
- package/src/adapters/claude-adapter.ts +0 -23
- package/src/adapters/codex-adapter.ts +0 -21
- package/src/adapters/cursor-adapter.ts +0 -17
- package/src/adapters/export-util.ts +0 -143
- package/src/adapters/index.ts +0 -15
- package/src/adapters/registry.ts +0 -18
- package/src/adapters/types.ts +0 -23
- package/src/agents/agent-config.ts +0 -194
- package/src/agents/agent-search.ts +0 -98
- package/src/agents/agent-serializer.ts +0 -38
- package/src/agents/discover-agents.ts +0 -623
- package/src/benchmark/benchmark-runner.ts +0 -313
- package/src/benchmark/feedback-loop.ts +0 -73
- package/src/config/config.ts +0 -1269
- package/src/config/defaults.ts +0 -193
- package/src/config/drift-detector.ts +0 -290
- package/src/config/markers.ts +0 -330
- package/src/config/resilient-parser.ts +0 -117
- package/src/config/role-tools.ts +0 -118
- package/src/config/suggestions.ts +0 -75
- package/src/config/types.ts +0 -278
- package/src/errors.ts +0 -194
- package/src/extension/action-suggestions.ts +0 -117
- package/src/extension/async-notifier.ts +0 -179
- package/src/extension/autonomous-policy.ts +0 -209
- package/src/extension/command-completions.ts +0 -120
- package/src/extension/context-status-injection.ts +0 -185
- package/src/extension/crew-autocomplete.ts +0 -131
- package/src/extension/crew-cleanup.ts +0 -168
- package/src/extension/crew-input-router.ts +0 -93
- package/src/extension/crew-shortcuts.ts +0 -87
- package/src/extension/crew-vibes/cat-frames.ts +0 -18
- package/src/extension/crew-vibes/config.ts +0 -195
- package/src/extension/crew-vibes/figures.ts +0 -101
- package/src/extension/crew-vibes/font-detect.ts +0 -71
- package/src/extension/crew-vibes/footer.ts +0 -292
- package/src/extension/crew-vibes/index.ts +0 -432
- package/src/extension/crew-vibes/provider-usage.ts +0 -396
- package/src/extension/crew-vibes/render.ts +0 -206
- package/src/extension/crew-vibes/speed.ts +0 -286
- package/src/extension/cross-extension-rpc.ts +0 -350
- package/src/extension/help.ts +0 -62
- package/src/extension/import-index.ts +0 -74
- package/src/extension/knowledge-injection.ts +0 -402
- package/src/extension/management.ts +0 -571
- package/src/extension/message-renderers.ts +0 -108
- package/src/extension/notification-router.ts +0 -152
- package/src/extension/notification-sink.ts +0 -54
- package/src/extension/pi-api.ts +0 -56
- package/src/extension/plan-orchestrate.ts +0 -302
- package/src/extension/project-init.ts +0 -170
- package/src/extension/register.ts +0 -113
- package/src/extension/registration/artifact-cleanup.ts +0 -20
- package/src/extension/registration/command-registration.ts +0 -58
- package/src/extension/registration/command-utils.ts +0 -58
- package/src/extension/registration/commands.ts +0 -1228
- package/src/extension/registration/compaction-guard.ts +0 -333
- package/src/extension/registration/context-builder.ts +0 -135
- package/src/extension/registration/crash-recovery-cache.ts +0 -54
- package/src/extension/registration/foreground-run-controller.ts +0 -238
- package/src/extension/registration/hook-registration.ts +0 -119
- package/src/extension/registration/lazy-configurers.ts +0 -124
- package/src/extension/registration/lifecycle-handlers.ts +0 -923
- package/src/extension/registration/lifecycle.ts +0 -259
- package/src/extension/registration/observability.ts +0 -322
- package/src/extension/registration/registration-types.ts +0 -158
- package/src/extension/registration/runtime-cleanup.ts +0 -230
- package/src/extension/registration/subagent-helpers.ts +0 -125
- package/src/extension/registration/subagent-manager-setup.ts +0 -330
- package/src/extension/registration/subagent-tools.ts +0 -456
- package/src/extension/registration/team-tool.ts +0 -220
- package/src/extension/registration/tool-registration.ts +0 -50
- package/src/extension/registration/ui.ts +0 -172
- package/src/extension/registration/viewers.ts +0 -121
- package/src/extension/registration/wire-cross-extension.ts +0 -37
- package/src/extension/result-watcher.ts +0 -139
- package/src/extension/rpc-hmac.ts +0 -256
- package/src/extension/run-bundle-schema.ts +0 -104
- package/src/extension/run-export.ts +0 -97
- package/src/extension/run-import.ts +0 -168
- package/src/extension/run-index.ts +0 -131
- package/src/extension/run-maintenance.ts +0 -190
- package/src/extension/session-summary.ts +0 -18
- package/src/extension/team-manager-command.ts +0 -153
- package/src/extension/team-onboard.ts +0 -177
- package/src/extension/team-recommendation.ts +0 -288
- package/src/extension/team-tool/anchor.ts +0 -172
- package/src/extension/team-tool/api.ts +0 -1244
- package/src/extension/team-tool/auto-summarize.ts +0 -142
- package/src/extension/team-tool/cache-control.ts +0 -19
- package/src/extension/team-tool/cancel.ts +0 -337
- package/src/extension/team-tool/chain-dispatch.ts +0 -95
- package/src/extension/team-tool/chain-executor.ts +0 -379
- package/src/extension/team-tool/config-patch.ts +0 -50
- package/src/extension/team-tool/context.ts +0 -149
- package/src/extension/team-tool/destructive-gate.ts +0 -52
- package/src/extension/team-tool/doctor.ts +0 -431
- package/src/extension/team-tool/explain.ts +0 -282
- package/src/extension/team-tool/failure-patterns.ts +0 -118
- package/src/extension/team-tool/goal-wrap.ts +0 -330
- package/src/extension/team-tool/goal.ts +0 -556
- package/src/extension/team-tool/handle-schedule.ts +0 -332
- package/src/extension/team-tool/handle-settings.ts +0 -520
- package/src/extension/team-tool/health-monitor.ts +0 -481
- package/src/extension/team-tool/inspect.ts +0 -88
- package/src/extension/team-tool/intent-policy.ts +0 -45
- package/src/extension/team-tool/lifecycle-actions.ts +0 -615
- package/src/extension/team-tool/orchestrate.ts +0 -98
- package/src/extension/team-tool/parallel-dispatch.ts +0 -183
- package/src/extension/team-tool/plan.ts +0 -50
- package/src/extension/team-tool/respond.ts +0 -150
- package/src/extension/team-tool/run-not-found.ts +0 -49
- package/src/extension/team-tool/run.ts +0 -1035
- package/src/extension/team-tool/status.ts +0 -260
- package/src/extension/team-tool/workflow-manage.ts +0 -261
- package/src/extension/team-tool-types.ts +0 -26
- package/src/extension/team-tool.ts +0 -1116
- package/src/extension/tool-result.ts +0 -16
- package/src/extension/validate-resources.ts +0 -108
- package/src/hooks/registry.ts +0 -200
- package/src/hooks/types.ts +0 -69
- package/src/i18n.ts +0 -212
- package/src/observability/correlation.ts +0 -50
- package/src/observability/event-bus.ts +0 -86
- package/src/observability/event-to-metric.ts +0 -170
- package/src/observability/exporters/adapter.ts +0 -27
- package/src/observability/exporters/otlp-exporter.ts +0 -356
- package/src/observability/exporters/prometheus-exporter.ts +0 -54
- package/src/observability/metric-registry.ts +0 -100
- package/src/observability/metric-retention.ts +0 -64
- package/src/observability/metric-sink.ts +0 -99
- package/src/observability/metrics-primitives.ts +0 -219
- package/src/plugins/plugin-define.ts +0 -6
- package/src/plugins/plugin-registry.ts +0 -32
- package/src/plugins/plugins/index.ts +0 -3
- package/src/plugins/plugins/nextjs.ts +0 -19
- package/src/plugins/plugins/vite.ts +0 -10
- package/src/plugins/plugins/vitest.ts +0 -9
- package/src/prompt/prompt-runtime.ts +0 -380
- package/src/runtime/adaptive-plan.ts +0 -563
- package/src/runtime/agent-control.ts +0 -215
- package/src/runtime/agent-memory.ts +0 -81
- package/src/runtime/agent-observability.ts +0 -122
- package/src/runtime/anchor-manager.ts +0 -475
- package/src/runtime/async-marker.ts +0 -32
- package/src/runtime/async-runner.ts +0 -381
- package/src/runtime/attention-events.ts +0 -28
- package/src/runtime/auto-summarize.ts +0 -344
- package/src/runtime/background-runner.ts +0 -837
- package/src/runtime/batch-barrier.ts +0 -147
- package/src/runtime/broker-issuer.ts +0 -37
- package/src/runtime/cancellation-token.ts +0 -99
- package/src/runtime/cancellation.ts +0 -99
- package/src/runtime/capability-inventory.ts +0 -137
- package/src/runtime/chain-parser.ts +0 -237
- package/src/runtime/chain-runner.ts +0 -606
- package/src/runtime/checkpoint.ts +0 -291
- package/src/runtime/child-pi-constants.ts +0 -42
- package/src/runtime/child-pi-kill.ts +0 -180
- package/src/runtime/child-pi-pool.ts +0 -68
- package/src/runtime/child-pi-spawn.ts +0 -287
- package/src/runtime/child-pi-steering.ts +0 -128
- package/src/runtime/child-pi-streams.ts +0 -296
- package/src/runtime/child-pi-transcript.ts +0 -169
- package/src/runtime/child-pi.ts +0 -1105
- package/src/runtime/coalesce-tasks.ts +0 -268
- package/src/runtime/code-summary.ts +0 -292
- package/src/runtime/command-trace.ts +0 -105
- package/src/runtime/compact-pipeline.ts +0 -56
- package/src/runtime/compact-stages/ansi-strip-stage.ts +0 -25
- package/src/runtime/compact-stages/blank-collapse-stage.ts +0 -31
- package/src/runtime/compact-stages/deduplicate-stage.ts +0 -34
- package/src/runtime/compact-stages/head-snap-stage.ts +0 -57
- package/src/runtime/compact-stages/index.ts +0 -23
- package/src/runtime/compact-stages/tail-capture-stage.ts +0 -77
- package/src/runtime/compact-stages/truncation-stage.ts +0 -74
- package/src/runtime/compaction-summary.ts +0 -278
- package/src/runtime/completion-guard.ts +0 -207
- package/src/runtime/concurrency.ts +0 -58
- package/src/runtime/crash-classification.ts +0 -229
- package/src/runtime/crash-recovery.ts +0 -577
- package/src/runtime/crew-agent-records.ts +0 -593
- package/src/runtime/crew-agent-runtime.ts +0 -62
- package/src/runtime/crew-broker-child.ts +0 -88
- package/src/runtime/crew-broker-client.ts +0 -673
- package/src/runtime/crew-broker-tokens.ts +0 -84
- package/src/runtime/crew-broker.ts +0 -1276
- package/src/runtime/crew-hooks.ts +0 -227
- package/src/runtime/cross-extension-rpc.ts +0 -143
- package/src/runtime/custom-tools/irc-tool.ts +0 -282
- package/src/runtime/custom-tools/submit-result-tool.ts +0 -102
- package/src/runtime/deadletter.ts +0 -47
- package/src/runtime/delivery-coordinator.ts +0 -211
- package/src/runtime/delta-conflict.ts +0 -348
- package/src/runtime/deterministic-ast.ts +0 -161
- package/src/runtime/diagnostic-export.ts +0 -171
- package/src/runtime/direct-run.ts +0 -45
- package/src/runtime/dwf-state-store.ts +0 -102
- package/src/runtime/dynamic-workflow-context.ts +0 -1016
- package/src/runtime/dynamic-workflow-runner.ts +0 -310
- package/src/runtime/effectiveness.ts +0 -90
- package/src/runtime/errors/crew-errors.ts +0 -162
- package/src/runtime/event-stream-bridge.ts +0 -98
- package/src/runtime/foreground-control.ts +0 -193
- package/src/runtime/foreground-watchdog.ts +0 -132
- package/src/runtime/global-worker-cap.ts +0 -96
- package/src/runtime/goal-achievement.ts +0 -148
- package/src/runtime/goal-evaluator.ts +0 -361
- package/src/runtime/goal-loop-runner.ts +0 -828
- package/src/runtime/goal-state-store.ts +0 -219
- package/src/runtime/green-contract.ts +0 -55
- package/src/runtime/group-join.ts +0 -267
- package/src/runtime/handoff-manager.ts +0 -598
- package/src/runtime/heartbeat-gradient.ts +0 -36
- package/src/runtime/heartbeat-watcher.ts +0 -239
- package/src/runtime/hidden-handoff.ts +0 -407
- package/src/runtime/important-line-classifier.ts +0 -140
- package/src/runtime/intercom-bridge.ts +0 -187
- package/src/runtime/iteration-hooks.ts +0 -305
- package/src/runtime/live-agent-control.ts +0 -136
- package/src/runtime/live-agent-manager.ts +0 -704
- package/src/runtime/live-control-realtime.ts +0 -56
- package/src/runtime/live-extension-bridge.ts +0 -148
- package/src/runtime/live-irc.ts +0 -97
- package/src/runtime/live-session-health.ts +0 -108
- package/src/runtime/live-session-runtime.ts +0 -1139
- package/src/runtime/loop-gates.ts +0 -128
- package/src/runtime/manifest-cache.ts +0 -375
- package/src/runtime/mcp-proxy.ts +0 -105
- package/src/runtime/metric-parser.ts +0 -36
- package/src/runtime/model-fallback.ts +0 -409
- package/src/runtime/model-resolver.ts +0 -126
- package/src/runtime/model-scope.ts +0 -158
- package/src/runtime/orphan-worker-registry.ts +0 -465
- package/src/runtime/output-validator.ts +0 -202
- package/src/runtime/overflow-recovery.ts +0 -206
- package/src/runtime/parallel-research.ts +0 -68
- package/src/runtime/parallel-utils.ts +0 -160
- package/src/runtime/parent-guard.ts +0 -134
- package/src/runtime/path-overlap.ts +0 -150
- package/src/runtime/peer-dep.ts +0 -292
- package/src/runtime/per-write-validator.ts +0 -181
- package/src/runtime/phase-progress.ts +0 -217
- package/src/runtime/phase-tracker.ts +0 -385
- package/src/runtime/pi-args.ts +0 -655
- package/src/runtime/pi-json-output.ts +0 -170
- package/src/runtime/pi-spawn.ts +0 -273
- package/src/runtime/pipeline-runner.ts +0 -523
- package/src/runtime/plan-templates.ts +0 -201
- package/src/runtime/policy-engine.ts +0 -115
- package/src/runtime/post-checks.ts +0 -142
- package/src/runtime/post-exit-stdio-guard.ts +0 -104
- package/src/runtime/process-lifecycle.ts +0 -491
- package/src/runtime/process-status.ts +0 -154
- package/src/runtime/progress-event-coalescer.ts +0 -44
- package/src/runtime/progress-tracker.ts +0 -124
- package/src/runtime/prose-compressor.ts +0 -162
- package/src/runtime/recovery-recipes.ts +0 -203
- package/src/runtime/replace.ts +0 -570
- package/src/runtime/resilient-edit.ts +0 -153
- package/src/runtime/result-extractor.ts +0 -213
- package/src/runtime/retry-executor.ts +0 -100
- package/src/runtime/retry-runner.ts +0 -336
- package/src/runtime/role-permission.ts +0 -59
- package/src/runtime/run-coalesced-task-group.ts +0 -308
- package/src/runtime/run-drift.ts +0 -219
- package/src/runtime/run-tracker.ts +0 -116
- package/src/runtime/runtime-policy.ts +0 -29
- package/src/runtime/runtime-resolver.ts +0 -172
- package/src/runtime/runtime-warmup.ts +0 -160
- package/src/runtime/scheduler.ts +0 -353
- package/src/runtime/semaphore.ts +0 -141
- package/src/runtime/sensitive-paths.ts +0 -93
- package/src/runtime/session-resources.ts +0 -25
- package/src/runtime/session-snapshot.ts +0 -59
- package/src/runtime/session-usage.ts +0 -79
- package/src/runtime/settings-store.ts +0 -155
- package/src/runtime/sidechain-output.ts +0 -35
- package/src/runtime/single-agent-compose.ts +0 -84
- package/src/runtime/skill-effectiveness.ts +0 -524
- package/src/runtime/skill-instructions.ts +0 -391
- package/src/runtime/stale-reconciler.ts +0 -680
- package/src/runtime/stream-preview.ts +0 -184
- package/src/runtime/streaming-output.ts +0 -50
- package/src/runtime/subagent-manager.ts +0 -561
- package/src/runtime/subprocess-tool-registry.ts +0 -70
- package/src/runtime/supervisor-contact.ts +0 -64
- package/src/runtime/task-display.ts +0 -52
- package/src/runtime/task-graph-scheduler.ts +0 -227
- package/src/runtime/task-graph.ts +0 -290
- package/src/runtime/task-health.ts +0 -83
- package/src/runtime/task-id.ts +0 -161
- package/src/runtime/task-output-context.ts +0 -602
- package/src/runtime/task-packet.ts +0 -268
- package/src/runtime/task-quality.ts +0 -199
- package/src/runtime/task-runner/capabilities.ts +0 -78
- package/src/runtime/task-runner/context-retrieval.ts +0 -163
- package/src/runtime/task-runner/live-executor.ts +0 -227
- package/src/runtime/task-runner/output-splitter.ts +0 -152
- package/src/runtime/task-runner/progress.ts +0 -157
- package/src/runtime/task-runner/prompt-builder.ts +0 -278
- package/src/runtime/task-runner/prompt-pipeline.ts +0 -88
- package/src/runtime/task-runner/result-utils.ts +0 -16
- package/src/runtime/task-runner/retrieval-orchestrator.ts +0 -310
- package/src/runtime/task-runner/run-projection.ts +0 -125
- package/src/runtime/task-runner/state-helpers.ts +0 -176
- package/src/runtime/task-runner/tail-read.ts +0 -34
- package/src/runtime/task-runner.ts +0 -1420
- package/src/runtime/team-runner-artifacts.ts +0 -13
- package/src/runtime/team-runner.ts +0 -1993
- package/src/runtime/tool-output-pruner.ts +0 -333
- package/src/runtime/tool-progress.ts +0 -278
- package/src/runtime/usage-tracker.ts +0 -73
- package/src/runtime/verification-gates.ts +0 -571
- package/src/runtime/verification-integrity.ts +0 -105
- package/src/runtime/verification-worktree.ts +0 -186
- package/src/runtime/worker-heartbeat.ts +0 -25
- package/src/runtime/worker-startup.ts +0 -83
- package/src/runtime/workflow-state.ts +0 -195
- package/src/runtime/workspace-lock.ts +0 -443
- package/src/runtime/workspace-tree.ts +0 -312
- package/src/runtime/yield-handler.ts +0 -224
- package/src/runtime/zombie-scanner.ts +0 -298
- package/src/schema/config-schema.ts +0 -327
- package/src/schema/team-tool-schema.ts +0 -415
- package/src/schema/validation-types.ts +0 -159
- package/src/skills/discover-skills.ts +0 -197
- package/src/skills/skill-templates.ts +0 -456
- package/src/skills/validate.ts +0 -285
- package/src/state/active-run-registry.ts +0 -439
- package/src/state/artifact-store.ts +0 -176
- package/src/state/atomic-write.ts +0 -903
- package/src/state/blob-store.ts +0 -308
- package/src/state/contracts.ts +0 -158
- package/src/state/crew-init.ts +0 -269
- package/src/state/decision-ledger.ts +0 -345
- package/src/state/event-log-rotation.ts +0 -342
- package/src/state/event-log.ts +0 -1311
- package/src/state/event-reconstructor.ts +0 -229
- package/src/state/gitignore-manager.ts +0 -46
- package/src/state/health-store.ts +0 -79
- package/src/state/hook-instinct-bridge.ts +0 -94
- package/src/state/hook-integrations.ts +0 -51
- package/src/state/instinct-store.ts +0 -275
- package/src/state/jsonl-writer.ts +0 -107
- package/src/state/locks.ts +0 -562
- package/src/state/mailbox.ts +0 -916
- package/src/state/observation-store.ts +0 -176
- package/src/state/run-cache.ts +0 -193
- package/src/state/run-graph.ts +0 -183
- package/src/state/run-metrics.ts +0 -165
- package/src/state/schedule.ts +0 -166
- package/src/state/session-state-map.ts +0 -51
- package/src/state/state-store.ts +0 -958
- package/src/state/task-claims.ts +0 -61
- package/src/state/tiered-eval.ts +0 -480
- package/src/state/types-eval.ts +0 -58
- package/src/state/types.ts +0 -440
- package/src/state/usage.ts +0 -138
- package/src/state/worker-atomic-writer.ts +0 -194
- package/src/subagents/async-entry.ts +0 -1
- package/src/subagents/index.ts +0 -3
- package/src/subagents/live/control.ts +0 -1
- package/src/subagents/live/manager.ts +0 -1
- package/src/subagents/live/realtime.ts +0 -1
- package/src/subagents/live/session-runtime.ts +0 -1
- package/src/subagents/manager.ts +0 -1
- package/src/subagents/spawn.ts +0 -1
- package/src/teams/discover-teams.ts +0 -187
- package/src/teams/team-config.ts +0 -27
- package/src/teams/team-serializer.ts +0 -38
- package/src/tools/safe-bash-extension.ts +0 -54
- package/src/tools/safe-bash.ts +0 -505
- package/src/types/diff.d.ts +0 -18
- package/src/types/new-api-types.ts +0 -35
- package/src/ui/agent-management-overlay.ts +0 -160
- package/src/ui/card-colors.ts +0 -139
- package/src/ui/crew-footer.ts +0 -102
- package/src/ui/crew-select-list.ts +0 -111
- package/src/ui/dashboard-panes/agents-pane.ts +0 -164
- package/src/ui/dashboard-panes/cancellation-pane.ts +0 -66
- package/src/ui/dashboard-panes/capability-pane.ts +0 -77
- package/src/ui/dashboard-panes/health-pane.ts +0 -31
- package/src/ui/dashboard-panes/mailbox-pane.ts +0 -35
- package/src/ui/dashboard-panes/metrics-pane.ts +0 -37
- package/src/ui/dashboard-panes/progress-pane.ts +0 -38
- package/src/ui/dashboard-panes/transcript-pane.ts +0 -10
- package/src/ui/deploy-bundled-themes.ts +0 -71
- package/src/ui/dwf-phase-display.ts +0 -151
- package/src/ui/dynamic-border.ts +0 -35
- package/src/ui/heartbeat-aggregator.ts +0 -74
- package/src/ui/key-utils.ts +0 -42
- package/src/ui/keybinding-map.ts +0 -248
- package/src/ui/layout-primitives.ts +0 -106
- package/src/ui/live-conversation-overlay.ts +0 -183
- package/src/ui/live-duration.ts +0 -55
- package/src/ui/live-run-sidebar.ts +0 -301
- package/src/ui/loaders.ts +0 -176
- package/src/ui/mascot.ts +0 -436
- package/src/ui/overlays/agent-picker-overlay.ts +0 -65
- package/src/ui/overlays/confirm-overlay.ts +0 -60
- package/src/ui/overlays/help-overlay.ts +0 -177
- package/src/ui/overlays/mailbox-compose-overlay.ts +0 -181
- package/src/ui/overlays/mailbox-compose-preview.ts +0 -78
- package/src/ui/overlays/mailbox-detail-overlay.ts +0 -154
- package/src/ui/pi-ui-compat.ts +0 -68
- package/src/ui/powerbar-publisher.ts +0 -459
- package/src/ui/render-coalescer.ts +0 -101
- package/src/ui/render-diff.ts +0 -160
- package/src/ui/render-scheduler.ts +0 -224
- package/src/ui/run-action-dispatcher.ts +0 -182
- package/src/ui/run-dashboard.ts +0 -913
- package/src/ui/run-event-bus.ts +0 -381
- package/src/ui/run-snapshot-cache.ts +0 -1057
- package/src/ui/settings-overlay.ts +0 -1067
- package/src/ui/snapshot-types.ts +0 -90
- package/src/ui/spinner.ts +0 -17
- package/src/ui/status-colors.ts +0 -143
- package/src/ui/syntax-highlight.ts +0 -136
- package/src/ui/terminal-status.ts +0 -269
- package/src/ui/theme-adapter.ts +0 -271
- package/src/ui/theme-discovery.ts +0 -199
- package/src/ui/tool-progress-formatter.ts +0 -93
- package/src/ui/tool-render.ts +0 -453
- package/src/ui/tool-renderers/brief-mode.ts +0 -225
- package/src/ui/tool-renderers/index.ts +0 -726
- package/src/ui/transcript-cache.ts +0 -128
- package/src/ui/transcript-entries.ts +0 -256
- package/src/ui/transcript-viewer.ts +0 -424
- package/src/ui/widget/index.ts +0 -357
- package/src/ui/widget/widget-formatters.ts +0 -182
- package/src/ui/widget/widget-model.ts +0 -110
- package/src/ui/widget/widget-renderer.ts +0 -182
- package/src/ui/widget/widget-types.ts +0 -36
- package/src/utils/bm25-search.ts +0 -235
- package/src/utils/completion-dedupe.ts +0 -63
- package/src/utils/conflict-detect.ts +0 -668
- package/src/utils/env-allowlist.ts +0 -30
- package/src/utils/env-filter.ts +0 -155
- package/src/utils/file-coalescer.ts +0 -98
- package/src/utils/fingerprint.ts +0 -180
- package/src/utils/frontmatter.ts +0 -70
- package/src/utils/fs-watch.ts +0 -37
- package/src/utils/gh-protocol.ts +0 -556
- package/src/utils/git.ts +0 -260
- package/src/utils/guards.ts +0 -107
- package/src/utils/ids.ts +0 -24
- package/src/utils/incremental-reader.ts +0 -220
- package/src/utils/internal-error.ts +0 -10
- package/src/utils/names.ts +0 -36
- package/src/utils/ndjson.ts +0 -115
- package/src/utils/paths.ts +0 -227
- package/src/utils/project-detector.ts +0 -160
- package/src/utils/redaction.ts +0 -347
- package/src/utils/resolve-shell.ts +0 -36
- package/src/utils/run-watcher-registry.ts +0 -152
- package/src/utils/safe-paths.ts +0 -383
- package/src/utils/scan-cache.ts +0 -144
- package/src/utils/session-utils.ts +0 -110
- package/src/utils/sleep.ts +0 -54
- package/src/utils/socket-path.ts +0 -127
- package/src/utils/sse-parser.ts +0 -129
- package/src/utils/task-name-generator.ts +0 -337
- package/src/utils/timings.ts +0 -33
- package/src/utils/token-counter.ts +0 -200
- package/src/utils/visual.ts +0 -207
- package/src/workflows/cost-estimator.ts +0 -34
- package/src/workflows/discover-workflows.ts +0 -290
- package/src/workflows/intermediate-store.ts +0 -166
- package/src/workflows/preflight-validator.ts +0 -168
- package/src/workflows/topology-analyzer.ts +0 -203
- package/src/workflows/validate-workflow.ts +0 -50
- package/src/workflows/workflow-config.ts +0 -70
- package/src/workflows/workflow-serializer.ts +0 -32
- package/src/worktree/branch-freshness.ts +0 -112
- package/src/worktree/cleanup.ts +0 -341
- package/src/worktree/worktree-manager.ts +0 -1200
|
@@ -1,268 +0,0 @@
|
|
|
1
|
-
# coding-agent Changes: Optimization Opportunities for pi-crew
|
|
2
|
-
|
|
3
|
-
**Date:** 2026-05-28
|
|
4
|
-
**Source:** Direct analysis of `packages/coding-agent/` commits (133 commits in May 2026)
|
|
5
|
-
**Focus:** Changes that can help pi-crew work better, faster, or more reliably
|
|
6
|
-
|
|
7
|
-
---
|
|
8
|
-
|
|
9
|
-
## Executive Summary
|
|
10
|
-
|
|
11
|
-
**133 coding-agent commits in May 2026.** Many are internal fixes, but several directly impact pi-crew's child-process spawning and RPC communication. This doc focuses on actionable optimization opportunities.
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## 1. HIGH IMPACT — Direct pi-crew Benefit
|
|
16
|
-
|
|
17
|
-
### A. RPC Backpressure Handling (`d0d1d8ed`, `ce0e801d`)
|
|
18
|
-
|
|
19
|
-
**Problem:** Large bash output could block RPC stdout, causing backpressure and hangs.
|
|
20
|
-
|
|
21
|
-
**Solution:** pi now uses async stdout writes with backpressure signaling:
|
|
22
|
-
|
|
23
|
-
```typescript
|
|
24
|
-
// rpc-mode.ts
|
|
25
|
-
const output = async (obj: ...): Promise<void> => {
|
|
26
|
-
await writeRawStdout(serializeJsonLine(obj));
|
|
27
|
-
};
|
|
28
|
-
```
|
|
29
|
-
|
|
30
|
-
**pi-crew relevance:** `child-pi.ts` already has backpressure handling (line ~560 `stdout.resume()` / `stdout.pause()`). **This fix improves the underlying child process's stdout handling.** When pi-crew spawns a child Pi, that child now handles large output better.
|
|
31
|
-
|
|
32
|
-
**Optimization opportunity:** Consider adding explicit backpressure acknowledgment in `child-pi.ts` — currently it uses `stdout.pause()` but doesn't explicitly signal to pi when it's ready to resume. pi now handles this internally.
|
|
33
|
-
|
|
34
|
-
### B. Child Process Exit Handling (`e007fcd0`)
|
|
35
|
-
|
|
36
|
-
**Problem:** When a child process exits unexpectedly, pending RPC requests would hang forever.
|
|
37
|
-
|
|
38
|
-
**Solution:** RpcClient now tracks child process exit and rejects pending requests:
|
|
39
|
-
|
|
40
|
-
```typescript
|
|
41
|
-
// rpc-client.ts
|
|
42
|
-
childProcess.once("exit", (code, signal) => {
|
|
43
|
-
const error = this.createProcessExitError(code, signal);
|
|
44
|
-
this.exitError = error;
|
|
45
|
-
this.rejectPendingRequests(error);
|
|
46
|
-
});
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
**pi-crew relevance:** **Critical.** pi-crew's `child-pi.ts` spawns child Pi processes. If the child exits unexpectedly (OOM, crash, SIGKILL), pi-crew should:
|
|
50
|
-
1. Capture the exit code/signal
|
|
51
|
-
2. Reject any pending operations
|
|
52
|
-
3. Log the error with stderr context
|
|
53
|
-
|
|
54
|
-
**Current gap:** `child-pi.ts` captures exit codes but doesn't propagate stderr context when rejecting pending work.
|
|
55
|
-
|
|
56
|
-
### C. Bash Output Truncation Fix (`f9530678`)
|
|
57
|
-
|
|
58
|
-
**Problem:** Bash truncation counted lines incorrectly when output ended with a newline.
|
|
59
|
-
|
|
60
|
-
**Fix:** `OutputAccumulator` now correctly tracks `completedLines` vs `totalLines`:
|
|
61
|
-
|
|
62
|
-
```typescript
|
|
63
|
-
// output-accumulator.ts
|
|
64
|
-
this.completedLines = 0;
|
|
65
|
-
this.totalLines = 0;
|
|
66
|
-
this.hasOpenLine = false;
|
|
67
|
-
// ...
|
|
68
|
-
const lines = splitLinesForCounting(content);
|
|
69
|
-
// If content ends with \n, pop the empty final line
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
**pi-crew relevance:** pi-crew shows task output in `team action='status'`. If the output is truncated, the line count is now accurate. **No code change needed** — this is internal to pi.
|
|
73
|
-
|
|
74
|
-
### D. Session ID Naming (`52dc08c1`)
|
|
75
|
-
|
|
76
|
-
**New feature:** Users can specify explicit session IDs with `--session-id <name>`.
|
|
77
|
-
|
|
78
|
-
**pi-crew relevance:** Could enable named sessions for:
|
|
79
|
-
- `team action='run'` with `inheritContext: true` → pass named session instead of JSON
|
|
80
|
-
- Debugging: label sessions by task/team
|
|
81
|
-
- Cross-reference: match pi-crew run IDs to pi session IDs
|
|
82
|
-
|
|
83
|
-
**Implementation:** `assertValidSessionId(id)` validates format (`^[A-Za-z0-9](?:[A-Za-z0-9._-]*[A-Za-z0-9])?$`).
|
|
84
|
-
|
|
85
|
-
### E. Compact Read Output (`373bd128`)
|
|
86
|
-
|
|
87
|
-
**New feature:** Large file reads are collapsed by default, with "Show more" toggle.
|
|
88
|
-
|
|
89
|
-
**pi-crew relevance:** Tasks that read large files now show cleaner output in logs/UI. **No code change needed.**
|
|
90
|
-
|
|
91
|
-
---
|
|
92
|
-
|
|
93
|
-
## 2. MEDIUM IMPACT — Optimization Opportunities
|
|
94
|
-
|
|
95
|
-
### A. `excludeFromContext` Flag (`61babc24`)
|
|
96
|
-
|
|
97
|
-
**New RPC command:**
|
|
98
|
-
```typescript
|
|
99
|
-
{ type: "bash", command: "ls -la", excludeFromContext: true }
|
|
100
|
-
```
|
|
101
|
-
|
|
102
|
-
When `excludeFromContext: true`, the bash command output is **not included in the agent's context**. This prevents noisy commands (e.g., `ls -la` in large directories) from consuming context tokens.
|
|
103
|
-
|
|
104
|
-
**pi-crew opportunity:** pi-crew could add a `--no-context` flag to `team action='run'` that maps to `excludeFromContext: true` for certain agent operations. Currently, all agent operations contribute to context.
|
|
105
|
-
|
|
106
|
-
**Implementation would be in:** `child-pi.ts` → when spawning, pass `excludeFromContext: true` for non-essential commands.
|
|
107
|
-
|
|
108
|
-
### B. Async Tool Operations (`e9146a5f`, `ba09f1c9`)
|
|
109
|
-
|
|
110
|
-
**Change:** Tools (read, write, edit) now use async operations instead of sync.
|
|
111
|
-
|
|
112
|
-
**pi-crew relevance:** Tasks that run many file operations will be faster (non-blocking I/O). **No code change needed.**
|
|
113
|
-
|
|
114
|
-
### C. Edit Tool Unified Patch (`60a55a23`)
|
|
115
|
-
|
|
116
|
-
**New feature:** Edit tool results now include a `patch` field (standard unified diff):
|
|
117
|
-
|
|
118
|
-
```typescript
|
|
119
|
-
// edit.ts
|
|
120
|
-
export interface EditToolDetails {
|
|
121
|
-
diff: string; // Display-oriented diff
|
|
122
|
-
patch: string; // Standard unified patch
|
|
123
|
-
firstChangedLine?: number;
|
|
124
|
-
}
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
**pi-crew opportunity:** `team action='status'` could show the unified patch instead of display diff, enabling:
|
|
128
|
-
- More precise change tracking
|
|
129
|
-
- `git apply` compatibility for rollback
|
|
130
|
-
- Better diff visualization in logs
|
|
131
|
-
|
|
132
|
-
**Implementation would be in:** `task-runner.ts` → capture `toolResult.details.patch` instead of `toolResult.details.diff`.
|
|
133
|
-
|
|
134
|
-
### D. HTTP Idle Timeout (`849f9d9c`)
|
|
135
|
-
|
|
136
|
-
**Change:** Coding-agent now configures HTTP idle timeout for network requests.
|
|
137
|
-
|
|
138
|
-
**pi-crew relevance:** When pi-crew tasks make HTTP requests (e.g., calling external APIs), the idle timeout prevents hanging connections. **No code change needed** — this is internal to pi's HTTP client.
|
|
139
|
-
|
|
140
|
-
### E. Retry Marking for Agent End Events (`c685b273`)
|
|
141
|
-
|
|
142
|
-
**Change:** When an agent retries a turn, the `agent_end` event is now marked as a retry.
|
|
143
|
-
|
|
144
|
-
**pi-crew relevance:** `team action='status'` could show retry count. Currently, pi-crew tracks task retries via `run_recovery` hook but doesn't surface retry reasons.
|
|
145
|
-
|
|
146
|
-
---
|
|
147
|
-
|
|
148
|
-
## 3. LOW IMPACT — Nice to Know
|
|
149
|
-
|
|
150
|
-
### A. Theme Detection (`f4f0ac7a`, `088987b2`)
|
|
151
|
-
|
|
152
|
-
Update notes shown on startup. Themes listed by content name.
|
|
153
|
-
|
|
154
|
-
**No action needed.**
|
|
155
|
-
|
|
156
|
-
### B. OpenCode Session Headers (`42379a37`)
|
|
157
|
-
|
|
158
|
-
Session headers for OpenCode provider (Qwen models).
|
|
159
|
-
|
|
160
|
-
**No action needed.**
|
|
161
|
-
|
|
162
|
-
### C. Clipboard Sidecar (`3f89350c`)
|
|
163
|
-
|
|
164
|
-
Bun binaries now include clipboard helper.
|
|
165
|
-
|
|
166
|
-
**No action needed.**
|
|
167
|
-
|
|
168
|
-
### D. Path Handling Fix (`c100620b`)
|
|
169
|
-
|
|
170
|
-
Corrected path resolution for pattern matching.
|
|
171
|
-
|
|
172
|
-
**No action needed.**
|
|
173
|
-
|
|
174
|
-
---
|
|
175
|
-
|
|
176
|
-
## 4. Optimization Roadmap (Priority Order)
|
|
177
|
-
|
|
178
|
-
### Priority 1: Child Process Exit Handling
|
|
179
|
-
|
|
180
|
-
**Gap:** `child-pi.ts` captures exit code but doesn't reject pending work with stderr context.
|
|
181
|
-
|
|
182
|
-
**Current code:** `child-pi.ts` line ~635
|
|
183
|
-
```typescript
|
|
184
|
-
const wasGraceAborted = softLimitReached && turnCount >= ...
|
|
185
|
-
```
|
|
186
|
-
|
|
187
|
-
**Missing:** When child exits unexpectedly, propagate `exitError` to any pending operations.
|
|
188
|
-
|
|
189
|
-
**Fix:**
|
|
190
|
-
```typescript
|
|
191
|
-
// In child-pi.ts, handle unexpected exit
|
|
192
|
-
childProcess.once("exit", (code, signal) => {
|
|
193
|
-
const exitError = new Error(
|
|
194
|
-
`Agent process exited (code=${code} signal=${signal}). Stderr: ${stderr}`
|
|
195
|
-
);
|
|
196
|
-
// Reject any pending operations
|
|
197
|
-
// Log exitError to event log
|
|
198
|
-
});
|
|
199
|
-
```
|
|
200
|
-
|
|
201
|
-
### Priority 2: `excludeFromContext` Integration
|
|
202
|
-
|
|
203
|
-
**New capability in pi:** Commands can opt out of context.
|
|
204
|
-
|
|
205
|
-
**pi-crew opportunity:** Add config flag to `team action='run'`:
|
|
206
|
-
```
|
|
207
|
-
team action='run' goal='...' exclude-context-bash=true
|
|
208
|
-
```
|
|
209
|
-
|
|
210
|
-
This would mark intermediate/staging bash commands as `excludeFromContext: true`.
|
|
211
|
-
|
|
212
|
-
**Implementation:**
|
|
213
|
-
1. Add `excludeContextBash?: boolean` to `PiTeamsAutonomousConfig`
|
|
214
|
-
2. In `child-pi.ts`, wrap commands with `excludeFromContext` flag
|
|
215
|
-
|
|
216
|
-
### Priority 3: Edit Tool Patch Capture
|
|
217
|
-
|
|
218
|
-
**Current:** `task-runner.ts` captures `toolResult.details.diff` for reporting.
|
|
219
|
-
|
|
220
|
-
**Opportunity:** Capture `toolResult.details.patch` for:
|
|
221
|
-
- Rollback capability (`git apply` patch)
|
|
222
|
-
- Precise change tracking
|
|
223
|
-
- Better visualization
|
|
224
|
-
|
|
225
|
-
**Implementation:** Change `task-runner.ts` line ~1114 to read `details.patch` instead of `details.diff`.
|
|
226
|
-
|
|
227
|
-
### Priority 4: Session ID Alignment
|
|
228
|
-
|
|
229
|
-
**New capability:** `--session-id <name>` for explicit session naming.
|
|
230
|
-
|
|
231
|
-
**pi-crew opportunity:** Align pi session IDs with pi-crew run IDs:
|
|
232
|
-
```
|
|
233
|
-
pi --session-id "crew-run-{runId}"
|
|
234
|
-
```
|
|
235
|
-
|
|
236
|
-
This would enable:
|
|
237
|
-
- Easy cross-reference between pi sessions and pi-crew runs
|
|
238
|
-
- Named resume: `pi --session crew-run-abc` resumes a specific run
|
|
239
|
-
- Better debugging in `.crew/sessions/`
|
|
240
|
-
|
|
241
|
-
---
|
|
242
|
-
|
|
243
|
-
## 5. Key Files to Watch
|
|
244
|
-
|
|
245
|
-
| File | Significance |
|
|
246
|
-
|------|-------------|
|
|
247
|
-
| `packages/coding-agent/src/modes/rpc/rpc-mode.ts` | RPC protocol — pi-crew's child communicates via this |
|
|
248
|
-
| `packages/coding-agent/src/modes/rpc/rpc-client.ts` | Client that handles child process lifecycle |
|
|
249
|
-
| `packages/coding-agent/src/core/session-manager.ts` | Session naming, fork, resume |
|
|
250
|
-
| `packages/coding-agent/src/core/tools/bash.ts` | Bash execution with backpressure |
|
|
251
|
-
| `packages/coding-agent/src/core/tools/output-accumulator.ts` | Output truncation logic |
|
|
252
|
-
| `packages/coding-agent/src/core/tools/edit.ts` | Edit tool with unified patch |
|
|
253
|
-
|
|
254
|
-
---
|
|
255
|
-
|
|
256
|
-
## 6. Summary
|
|
257
|
-
|
|
258
|
-
| Category | Finding | Action |
|
|
259
|
-
|----------|---------|--------|
|
|
260
|
-
| **Critical** | Child exit handling improved | Verify `child-pi.ts` rejects pending work on unexpected exit |
|
|
261
|
-
| **Opportunity** | `excludeFromContext` flag | Add to `team action='run'` config |
|
|
262
|
-
| **Opportunity** | Edit tool unified patch | Capture in `task-runner.ts` for rollback |
|
|
263
|
-
| **Nice-to-have** | Session ID alignment | Align pi session IDs with pi-crew run IDs |
|
|
264
|
-
| **No action** | Bash truncation fix | Already benefits pi-crew (internal) |
|
|
265
|
-
| **No action** | Compact reads | Already benefits pi-crew (internal) |
|
|
266
|
-
| **No action** | Async tools | Already benefits pi-crew (internal) |
|
|
267
|
-
|
|
268
|
-
**Primary recommendation:** Implement Priority 1 (child exit handling) and Priority 2 (excludeFromContext) in `child-pi.ts`.
|
|
@@ -1,303 +0,0 @@
|
|
|
1
|
-
# Architecture Comparison: pi-subagents3 vs pi-crew
|
|
2
|
-
|
|
3
|
-
> Date: 2026-05-12
|
|
4
|
-
> Source: `@tintinweb/pi-subagents` v0.7.1 (6.082 LOC, 28 files) vs `pi-crew` v0.2.3 (35.809 LOC, ~200+ files)
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## 1. Overview
|
|
9
|
-
|
|
10
|
-
| Criterion | pi-subagents3 | pi-crew |
|
|
11
|
-
|---|---|---|
|
|
12
|
-
| **Author** | tintinweb | baphuongna |
|
|
13
|
-
| **Version** | 0.7.1 | 0.2.3 |
|
|
14
|
-
| **Goal** | Single subagent (Agent tool) — spawn, resume, steer | Team orchestration — multi-agent workflows, phases, parallel dispatch |
|
|
15
|
-
| **LOC** | ~6.000 | ~36.000 |
|
|
16
|
-
| **Entry point** | `src/index.ts` (1.885 lines — monolith) | `index.ts` → `register.ts` (668 lines) → modular registration |
|
|
17
|
-
| **Architecture** | Simple, direct, single-agent focus | Layered, event-driven, state-machine based |
|
|
18
|
-
| **Peer deps** | pi-ai ≥0.70.5, pi-coding-agent ≥0.70.5, pi-tui ≥0.70.5 | pi-coding-agent (runtime) |
|
|
19
|
-
| **Npm deps** | `@sinclair/typebox`, `croner`, `nanoid` | 0 (zero runtime dependencies) |
|
|
20
|
-
| **Test runner** | vitest | Node built-in `--experimental-strip-types` |
|
|
21
|
-
| **Subprocess model** | **In-process** (reuses Pi SDK `createAgentSession`) | **Out-of-process** (spawn child Pi instance via `child-pi.ts`) |
|
|
22
|
-
|
|
23
|
-
---
|
|
24
|
-
|
|
25
|
-
## 2. Core architecture
|
|
26
|
-
|
|
27
|
-
### 2.1 pi-subagents3 — In-process Agent Sessions
|
|
28
|
-
|
|
29
|
-
```
|
|
30
|
-
┌─────────────────────────────────────────────┐
|
|
31
|
-
│ index.ts (1885 LOC) │
|
|
32
|
-
│ Extension entry: tools, commands, menus, │
|
|
33
|
-
│ lifecycle hooks, settings, scheduling │
|
|
34
|
-
├─────────┬──────────┬──────────┬──────────────┤
|
|
35
|
-
│agent- │agent- │agent- │schedule.ts │
|
|
36
|
-
│runner │manager │types │ScheduleStore │
|
|
37
|
-
│(310 LOC)│(310 LOC) │(140 LOC) │(365 LOC) │
|
|
38
|
-
├─────────┴──────────┴──────────┴──────────────┤
|
|
39
|
-
│ memory.ts │ prompts.ts │ context.ts │ env.ts │
|
|
40
|
-
│ worktree │ model- │ settings │ usage │
|
|
41
|
-
│ │ resolver │ │ │
|
|
42
|
-
├──────────────────────────────────────────────┤
|
|
43
|
-
│ Pi SDK (createAgentSession) │
|
|
44
|
-
│ In-process, shared event loop │
|
|
45
|
-
└──────────────────────────────────────────────┘
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
**Key characteristics:**
|
|
49
|
-
- Agent runs **in the same process** as the parent Pi session
|
|
50
|
-
- Uses `createAgentSession()` + `session.prompt()` — direct Pi SDK API
|
|
51
|
-
- Tool filtering, extension binding, skill preloading in-process
|
|
52
|
-
- Event subscription (`session.subscribe()`) to track turns, tool uses, streaming text
|
|
53
|
-
- A single huge `index.ts` file contains nearly all the logic
|
|
54
|
-
|
|
55
|
-
### 2.2 pi-crew — Out-of-process Child Workers
|
|
56
|
-
|
|
57
|
-
```
|
|
58
|
-
┌─────────────────────────────────────────────────────────┐
|
|
59
|
-
│ register.ts (668 LOC) │
|
|
60
|
-
│ Extension entry: lifecycle, commands, tool registration │
|
|
61
|
-
├────────────────┬─────────────────┬───────────────────────┤
|
|
62
|
-
│ team-tool.ts │ team-runner.ts │ subagent-manager.ts │
|
|
63
|
-
│ (344 LOC) │ (945 LOC) │ (400 LOC) │
|
|
64
|
-
│ Tool handler │ Workflow engine │ Agent tracking │
|
|
65
|
-
├────────────────┴─────────────────┴───────────────────────┤
|
|
66
|
-
│ child-pi.ts (461 LOC) │ task-runner.ts (459 LOC) │
|
|
67
|
-
│ Subprocess spawn │ Per-worker execution │
|
|
68
|
-
├─────────────────────────┬───────────────────────────────┤
|
|
69
|
-
│ State Layer │ UI Layer │
|
|
70
|
-
│ state-store.ts │ crew-widget.ts │
|
|
71
|
-
│ event-log.ts │ run-dashboard.ts │
|
|
72
|
-
│ locks.ts │ transcript-viewer.ts │
|
|
73
|
-
│ atomic-write.ts │ powerbar-publisher.ts │
|
|
74
|
-
├─────────────────────────┴───────────────────────────────┤
|
|
75
|
-
│ Pi CLI (child process via spawn) │
|
|
76
|
-
│ Isolated process, independent event loop │
|
|
77
|
-
└─────────────────────────────────────────────────────────┘
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
**Key characteristics:**
|
|
81
|
-
- Worker runs **in a separate process** — spawns `pi` CLI child process
|
|
82
|
-
- Communicates via JSON events on stdout (`--json-output` mode)
|
|
83
|
-
- State persistence: JSONL event log, manifest files, atomic writes
|
|
84
|
-
- Distributed architecture: team → workflow → phases → tasks → workers
|
|
85
|
-
- Full isolation: crash recovery, stuck detection, deadletter
|
|
86
|
-
|
|
87
|
-
---
|
|
88
|
-
|
|
89
|
-
## 3. Detailed module-by-module comparison
|
|
90
|
-
|
|
91
|
-
### 3.1 Agent Execution
|
|
92
|
-
|
|
93
|
-
| Aspect | pi-subagents3 | pi-crew |
|
|
94
|
-
|---|---|---|
|
|
95
|
-
| **Runtime** | `createAgentSession()` in-process | `spawn("pi", [...])` child process |
|
|
96
|
-
| **Tool access** | Direct — `session.setActiveToolsByName()` | Limited by child Pi args |
|
|
97
|
-
| **Context sharing** | `buildParentContext()` — copy conversation | None (isolated by design) |
|
|
98
|
-
| **Steering** | `session.steer(message)` — immediate in-process | `child.stdin.write()` — JSON event |
|
|
99
|
-
| **Resume** | `resumeAgent(session, prompt)` — reuse session | Re-spawn child process |
|
|
100
|
-
| **Turn limits** | Soft limit → steer "wrap up" → hard abort | `--max-turns` CLI arg → child exit |
|
|
101
|
-
| **Grace turns** | Configurable (default 5) | N/A |
|
|
102
|
-
| **Streaming** | `session.subscribe()` — real-time deltas | JSON event polling on stdout |
|
|
103
|
-
| **Compaction** | Tracked via `compaction_end` events | Child handles independently |
|
|
104
|
-
| **Memory overhead** | Low (shared process) | High (separate Node.js process) |
|
|
105
|
-
| **Isolation** | Process-shared (same memory space) | Process-isolated (crash-safe) |
|
|
106
|
-
| **Max concurrent** | Queue with configurable limit (default 4) | Queue with configurable limit (default 4) |
|
|
107
|
-
|
|
108
|
-
### 3.2 Agent Configuration
|
|
109
|
-
|
|
110
|
-
| Aspect | pi-subagents3 | pi-crew |
|
|
111
|
-
|---|---|---|
|
|
112
|
-
| **Built-in agents** | 3: general-purpose, Explore, Plan | 10: explorer, planner, executor, reviewer, verifier, analyst, critic, writer, security-reviewer, test-engineer |
|
|
113
|
-
| **Custom agents** | `.md` files in `.pi/agents/` or `~/.pi/agents/` | `.md` files in `agents/` (project) |
|
|
114
|
-
| **Agent config** | 22 fields: systemPrompt, promptMode, extensions, skills, model, thinking, maxTurns, memory, isolation, disallowedTools... | agent-config.ts: name, systemPrompt (frontmatter), maxTurns |
|
|
115
|
-
| **Prompt mode** | `replace` (standalone) or `append` (parent twin) | Always replace (isolated subprocess) |
|
|
116
|
-
| **Tool filtering** | Allowlist (builtinToolNames) + denylist (disallowedTools) + extension filter | CLI arg `--allowed-tools` |
|
|
117
|
-
| **Model lock** | Per-agent model in config | Per-agent model in frontmatter |
|
|
118
|
-
| **Thinking level** | Per-agent `thinking` field | Per-agent `thinkingLevel` in frontmatter |
|
|
119
|
-
| **Agent discovery** | `custom-agents.ts` → `.md` frontmatter parse | `discover-agents.ts` → `.md` frontmatter parse |
|
|
120
|
-
|
|
121
|
-
### 3.3 Memory / Persistence
|
|
122
|
-
|
|
123
|
-
| Aspect | pi-subagents3 | pi-crew |
|
|
124
|
-
|---|---|---|
|
|
125
|
-
| **Agent memory** | ✅ Persistent MEMORY.md per agent (user/project/local scope) | ❌ No built-in agent memory |
|
|
126
|
-
| **Memory tools** | Injected dynamically based on write capability | N/A |
|
|
127
|
-
| **State persistence** | In-memory AgentRecord + JSON schedule store | Full state machine: manifest.json + events.jsonl + tasks.json |
|
|
128
|
-
| **Crash recovery** | Worktree prune on dispose | Detect interrupted runs, deadletter, stuck-blocked notifications |
|
|
129
|
-
| **Locking** | PID-based file lock for schedule store | `mkdirSync` atomic lock + PID stale detection for event log |
|
|
130
|
-
| **Atomic writes** | temp+rename (POSIX) | Full atomic-write.ts with O_NOFOLLOW, symlink checks, sync/async parity |
|
|
131
|
-
|
|
132
|
-
### 3.4 Scheduling
|
|
133
|
-
|
|
134
|
-
| Aspect | pi-subagents3 | pi-crew |
|
|
135
|
-
|---|---|---|
|
|
136
|
-
| **Scheduling** | ✅ Full scheduler: cron (6-field), interval, one-shot | ❌ No scheduling |
|
|
137
|
-
| **Cron engine** | `croner` library | N/A |
|
|
138
|
-
| **Persistence** | Session-scoped JSON with PID-locked store | N/A |
|
|
139
|
-
| **Queue bypass** | `bypassQueue: true` for scheduled fires | N/A |
|
|
140
|
-
| **Events** | `subagents:scheduled` (added/removed/fired/error) | N/A |
|
|
141
|
-
| **Master switch** | `schedulingEnabled` setting (strips tool param) | N/A |
|
|
142
|
-
|
|
143
|
-
### 3.5 Worktree Isolation
|
|
144
|
-
|
|
145
|
-
| Aspect | pi-subagents3 | pi-crew |
|
|
146
|
-
|---|---|---|
|
|
147
|
-
| **Worktree support** | ✅ `createWorktree()` / `cleanupWorktree()` | ✅ Full `worktree-manager.ts` (8.8 KB) |
|
|
148
|
-
| **Branch management** | Auto-branch, auto-commit changes | Branch freshness, reuse, file node_modules skip |
|
|
149
|
-
| **Error handling** | Strict — throws if worktree creation fails | Retry + fallback |
|
|
150
|
-
| **Cleanup** | On completion (success or error) + prune on dispose | On completion + cleanup.ts + branch-freshness |
|
|
151
|
-
|
|
152
|
-
### 3.6 Cross-extension Communication
|
|
153
|
-
|
|
154
|
-
| Aspect | pi-subagents3 | pi-crew |
|
|
155
|
-
|---|---|---|
|
|
156
|
-
| **RPC protocol** | ✅ Event bus RPC: ping/spawn/stop | ✅ Event bus RPC: ping/spawn/status/cancel |
|
|
157
|
-
| **Protocol version** | v2 | Versioned |
|
|
158
|
-
| **Reply envelope** | `{ success: true, data? }` / `{ success: false, error }` | Similar |
|
|
159
|
-
| **Singleton access** | `Symbol.for("pi-subagents:manager")` on globalThis | `globalThis.__piCrewRuntimeCleanup` |
|
|
160
|
-
|
|
161
|
-
### 3.7 UI / TUI
|
|
162
|
-
|
|
163
|
-
| Aspect | pi-subagents3 | pi-crew |
|
|
164
|
-
|---|---|---|
|
|
165
|
-
| **Agent widget** | `agent-widget.ts` (518 LOC) — overlay | `crew-widget.ts` (16 KB) — sidebar + dashboard |
|
|
166
|
-
| **Conversation viewer** | `conversation-viewer.ts` (243 LOC) | `transcript-viewer.ts` (13.9 KB) — JSONL-based |
|
|
167
|
-
| **Schedule menu** | `schedule-menu.ts` (104 LOC) | N/A |
|
|
168
|
-
| **Dashboard** | N/A (overlay-based) | `run-dashboard.ts` (22.7 KB) — multi-pane |
|
|
169
|
-
| **Status bar** | Inline status in overlay | `powerbar-publisher.ts` (8.9 KB) |
|
|
170
|
-
| **Live sidebar** | N/A | `live-run-sidebar.ts` (8.6 KB) |
|
|
171
|
-
| **Notification render** | Custom `renderCall` / `renderResult` | `notification-router.ts` + `notification-sink.ts` |
|
|
172
|
-
| **Context % indicator** | ✅ Token count + context % (colored) + compaction count | ❌ No context indicator |
|
|
173
|
-
|
|
174
|
-
### 3.8 Settings / Configuration
|
|
175
|
-
|
|
176
|
-
| Aspect | pi-subagents3 | pi-crew |
|
|
177
|
-
|---|---|---|
|
|
178
|
-
| **Settings file** | `.pi/subagents.json` (project) + `~/.pi/agent/subagents.json` (global) | `config.ts` → `.pi/crew-config.json` + `defaults.ts` |
|
|
179
|
-
| **Runtime settings** | maxConcurrent, defaultMaxTurns, graceTurns, defaultJoinMode, schedulingEnabled | maxConcurrent, telemetry, notifications |
|
|
180
|
-
| **Validation** | `sanitize()` with ceiling values | `config.ts` schema validation |
|
|
181
|
-
| **Hot reload** | Apply on change + emit event | Load on register |
|
|
182
|
-
|
|
183
|
-
---
|
|
184
|
-
|
|
185
|
-
## 4. Unique features
|
|
186
|
-
|
|
187
|
-
### pi-subagents3 has but pi-crew doesn't:
|
|
188
|
-
|
|
189
|
-
1. **In-process agent sessions** — Zero subprocess overhead, direct Pi SDK access, shared event loop
|
|
190
|
-
2. **Persistent agent memory** — MEMORY.md per agent with 3 scopes (user/project/local), auto-injected tools
|
|
191
|
-
3. **Soft turn limit + grace period** — Steer "wrap up" before hard-aborting, configurable grace turns
|
|
192
|
-
4. **Scheduling** — Full cron/interval/one-shot scheduler with croner, session-scoped persistence
|
|
193
|
-
5. **Parent context inheritance** — `inheritContext` forks the conversation for the subagent
|
|
194
|
-
6. **Append mode** — Agent runs as a "twin" of the parent (inherits system prompt + tools)
|
|
195
|
-
7. **Context % indicator** — Live context window utilization (%), compaction count (↻N)
|
|
196
|
-
8. **Agent memory tools** — Dynamic tool injection based on write capability (read-only vs read-write)
|
|
197
|
-
9. **Skill preloading** — Load skill content directly into the system prompt (string[])
|
|
198
|
-
10. **Batch grouping** — 100ms debounce batches multiple background completions into 1 notification
|
|
199
|
-
11. **Cancelable nudges** — 200ms hold before sending a notification, get_subagent_result cancels the nudge
|
|
200
|
-
12. **Agent creation wizard** — `/agents` → spawn an agent to create an agent config .md file
|
|
201
|
-
|
|
202
|
-
### pi-crew has but pi-subagents3 doesn't:
|
|
203
|
-
|
|
204
|
-
1. **Team orchestration** — Multi-agent teams with workflows, phases, parallel dispatch
|
|
205
|
-
2. **Workflow engine** — Declarative workflow definitions (step → agent → gate → next)
|
|
206
|
-
3. **Out-of-process isolation** — Child Pi process, crash-safe, independent event loop
|
|
207
|
-
4. **Full state machine** — manifest.json + tasks.json + events.jsonl, durable persistence
|
|
208
|
-
5. **Crash recovery** — Detect interrupted runs, deadletter queue, stuck-blocked detection
|
|
209
|
-
6. **Mailbox system** — Interactive respond/nudge/ack workflow for waiting tasks
|
|
210
|
-
7. **Heartbeat monitoring** — `heartbeat-watcher.ts` + gradient-based health tracking
|
|
211
|
-
8. **Observability** — Metrics registry, OTLP exporter, Prometheus exporter
|
|
212
|
-
9. **Run export/import** — Bundle/unbundle runs for cross-machine sharing
|
|
213
|
-
10. **Live session management** — Live IRC, live agent control, live extension bridge
|
|
214
|
-
11. **UI dashboard** — Multi-pane dashboard with agents/capabilities/health/mailbox/progress
|
|
215
|
-
12. **Run snapshot cache** — Efficient state snapshots for UI rendering
|
|
216
|
-
13. **Delivery coordination** — Overflow recovery, delivery coordinator for message routing
|
|
217
|
-
14. **i18n** — Internationalization support
|
|
218
|
-
15. **Post-checks** — Configurable post-execution verification hooks
|
|
219
|
-
16. **Iteration hooks** — Pre/post iteration hooks for external integrations
|
|
220
|
-
17. **Model fallback chain** — Multi-model fallback with cost tracking
|
|
221
|
-
18. **Compaction summary** — Context compaction for long-running agents
|
|
222
|
-
19. **Task quality scoring** — Automatic quality assessment of task outputs
|
|
223
|
-
20. **Agent capability inventory** — Dynamic tool/skill capability detection
|
|
224
|
-
|
|
225
|
-
---
|
|
226
|
-
|
|
227
|
-
## 5. Pros and cons analysis
|
|
228
|
-
|
|
229
|
-
### pi-subagents3
|
|
230
|
-
|
|
231
|
-
**Pros:**
|
|
232
|
-
- **Simple**: ~6K LOC, easy to understand and maintain
|
|
233
|
-
- **Performance**: In-process, zero subprocess overhead, shared memory
|
|
234
|
-
- **Deep features**: Memory, scheduling, context inheritance, turn management are very detailed
|
|
235
|
-
- **SDK-first**: Uses the Pi SDK directly, fully leveraging the API
|
|
236
|
-
- **Interactive**: Resume, steer, conversation viewer are very smooth
|
|
237
|
-
- **Settings**: Hot-reload, master switch for features
|
|
238
|
-
|
|
239
|
-
**Cons:**
|
|
240
|
-
- **Monolith**: `index.ts` 1.885 lines — hard to maintain, hard to test
|
|
241
|
-
- **No team support**: No workflow, phases, parallel dispatch
|
|
242
|
-
- **Crash propagation**: Agent crash affects the parent process
|
|
243
|
-
- **Limited observability**: No metrics, export, monitoring
|
|
244
|
-
- **No run persistence**: Agent record is in-memory only (except the schedule store)
|
|
245
|
-
|
|
246
|
-
### pi-crew
|
|
247
|
-
|
|
248
|
-
**Pros:**
|
|
249
|
-
- **Strong architecture**: Layered, event-driven, state-machine based
|
|
250
|
-
- **Team orchestration**: Workflow engine with phases, parallel, gates
|
|
251
|
-
- **Crash isolation**: Out-of-process workers, child crash doesn't affect parent
|
|
252
|
-
- **Full persistence**: JSONL event log, manifest, atomic writes
|
|
253
|
-
- **Observability**: Metrics, OTLP, Prometheus, heartbeat monitoring
|
|
254
|
-
- **Modular**: 200+ files, each file one responsibility
|
|
255
|
-
- **Enterprise features**: Export/import, i18n, compaction, quality scoring
|
|
256
|
-
|
|
257
|
-
**Cons:**
|
|
258
|
-
- **Complex**: 36K LOC, steep learning curve
|
|
259
|
-
- **Subprocess overhead**: Each worker spawns its own process (RAM, startup time)
|
|
260
|
-
- **No memory**: Agents have no persistent memory between sessions
|
|
261
|
-
- **No scheduling**: No cron/interval/one-shot
|
|
262
|
-
- **No context inheritance**: Workers run isolated, can't see parent context
|
|
263
|
-
- **No soft turn limit**: Hard cutoff, no grace period
|
|
264
|
-
- **No interactive steer**: Cannot steer a worker after spawning
|
|
265
|
-
|
|
266
|
-
---
|
|
267
|
-
|
|
268
|
-
## 6. Recommendations
|
|
269
|
-
|
|
270
|
-
### What pi-crew should learn from pi-subagents3:
|
|
271
|
-
|
|
272
|
-
1. **Persistent agent memory** — The MEMORY.md pattern is very valuable for long-running projects
|
|
273
|
-
2. **Soft turn limit + grace period** — More elegant than hard abort
|
|
274
|
-
3. **Scheduling** — Cron/interval scheduling for automated tasks
|
|
275
|
-
4. **Context % indicator** — Helps the parent LLM know how much room the subagent has left
|
|
276
|
-
5. **Batch notification grouping** — Reduces noise when many workers complete simultaneously
|
|
277
|
-
6. **In-process mode** (optional) — For lightweight tasks that don't need process isolation
|
|
278
|
-
7. **Cancelable nudges** — Avoid notification spam
|
|
279
|
-
8. **Agent settings hot-reload** — Change settings without restarting
|
|
280
|
-
|
|
281
|
-
### What pi-subagents3 should learn from pi-crew:
|
|
282
|
-
|
|
283
|
-
1. **Modular architecture** — Split `index.ts` into multiple files
|
|
284
|
-
2. **State persistence** — Durable state instead of in-memory only
|
|
285
|
-
3. **Crash recovery** — Detect interrupted runs, deadletter
|
|
286
|
-
4. **Observability** — Metrics, monitoring, health checks
|
|
287
|
-
5. **Team support** — Multi-agent workflows
|
|
288
|
-
6. **Out-of-process option** — For heavy tasks needing isolation
|
|
289
|
-
7. **Run export/import** — Cross-machine sharing
|
|
290
|
-
|
|
291
|
-
---
|
|
292
|
-
|
|
293
|
-
## 7. Conclusion
|
|
294
|
-
|
|
295
|
-
**pi-subagents3** is a **focused** extension — it does one thing very well: spawn and manage individual subagents. It leverages the Pi SDK maximally, in-process, interactive, with deep features like memory and scheduling.
|
|
296
|
-
|
|
297
|
-
**pi-crew** is an **orchestration platform** — broader scope, strong in team workflows, state management, crash recovery, and enterprise features. But much more complex, and missing some "nice-to-have" features that pi-subagents3 has.
|
|
298
|
-
|
|
299
|
-
The two extensions **complement** each other more than they compete:
|
|
300
|
-
- pi-subagents3 for **quick, interactive subagent tasks** (code review, exploration, one-off analysis)
|
|
301
|
-
- pi-crew for **complex, multi-phase team workflows** (full feature implementation, multi-perspective review, parallel research)
|
|
302
|
-
|
|
303
|
-
An ideal architecture might combine both: use pi-subagents3's in-process execution for lightweight tasks, and pi-crew's orchestration layer for complex workflows.
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
# 0001 Durable State as Source of Truth
|
|
2
|
-
|
|
3
|
-
Date: 2026-05-11
|
|
4
|
-
|
|
5
|
-
## Status
|
|
6
|
-
|
|
7
|
-
Accepted
|
|
8
|
-
|
|
9
|
-
## Context
|
|
10
|
-
|
|
11
|
-
pi-crew runs can last minutes to hours. Runs may be started from foreground
|
|
12
|
-
sessions, background processes, or async workers. Multiple observers (TUI
|
|
13
|
-
dashboard, status commands, event hooks) need to see the same run state.
|
|
14
|
-
|
|
15
|
-
## Decision
|
|
16
|
-
|
|
17
|
-
All run state is stored on disk as JSON files:
|
|
18
|
-
- `manifest.json` — run metadata, status, config
|
|
19
|
-
- `tasks.json` — task graph with statuses
|
|
20
|
-
- `events.jsonl` — append-only event log
|
|
21
|
-
- `agents/{taskId}/status.json` — per-agent state
|
|
22
|
-
|
|
23
|
-
All reads go through state store. All writes use atomic write helpers and
|
|
24
|
-
run-level locks (`withRunLockSync`).
|
|
25
|
-
|
|
26
|
-
## Alternatives Considered
|
|
27
|
-
|
|
28
|
-
1. In-memory state with periodic flush. Rejected: lost on crash, inconsistent across processes.
|
|
29
|
-
2. Database (SQLite). Rejected: adds native dependency, overkill for append-mostly data.
|
|
30
|
-
|
|
31
|
-
## Consequences
|
|
32
|
-
|
|
33
|
-
Positive:
|
|
34
|
-
- Crash recovery is possible by reading state from disk
|
|
35
|
-
- Multiple processes can observe the same run
|
|
36
|
-
- Event log provides audit trail
|
|
37
|
-
|
|
38
|
-
Tradeoffs:
|
|
39
|
-
- File I/O on every state mutation (mitigated by atomic writes)
|
|
40
|
-
- Windows EBUSY/EPERM requires retry logic
|
|
41
|
-
- Lock contention under heavy concurrent access
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
# 0002 Child-Process for Async Runners
|
|
2
|
-
|
|
3
|
-
Date: 2026-05-12
|
|
4
|
-
|
|
5
|
-
## Status
|
|
6
|
-
|
|
7
|
-
Accepted
|
|
8
|
-
|
|
9
|
-
## Context
|
|
10
|
-
|
|
11
|
-
pi-crew supports two runtime modes for task execution:
|
|
12
|
-
- `live-session`: in-process, reuses current Pi agent session
|
|
13
|
-
- `child-process`: spawns a new Node process via `child-pi.ts`
|
|
14
|
-
|
|
15
|
-
Async runs (background runner, async runner) start from the current session but
|
|
16
|
-
continue after the session ends. Live-session mode requires the parent Pi agent
|
|
17
|
-
to be alive — it uses the same in-process tools and session context.
|
|
18
|
-
|
|
19
|
-
## Decision
|
|
20
|
-
|
|
21
|
-
Async runners MUST use `child-process` mode. The `live-session` mode is only
|
|
22
|
-
available for foreground runs within the current Pi agent session.
|
|
23
|
-
|
|
24
|
-
Runtime policy enforces: `runtimeResolver` overrides any `live-session` request
|
|
25
|
-
to `child-process` when the run is async.
|
|
26
|
-
|
|
27
|
-
## Alternatives Considered
|
|
28
|
-
|
|
29
|
-
1. Allow live-session for async. Rejected: crashes when parent session ends, resource leaks.
|
|
30
|
-
2. Persist and restore live-session. Rejected: in-process state (timers, handles) cannot be serialized.
|
|
31
|
-
|
|
32
|
-
## Consequences
|
|
33
|
-
|
|
34
|
-
Positive:
|
|
35
|
-
- Async runs survive session shutdown
|
|
36
|
-
- No zombie timers or leaked handles from dead sessions
|
|
37
|
-
- Clean process isolation
|
|
38
|
-
|
|
39
|
-
Tradeoffs:
|
|
40
|
-
- Child process startup overhead (~2-5s)
|
|
41
|
-
- No shared in-process state between parent and child
|
|
42
|
-
- Requires all runtime config to be serializable
|