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,291 +0,0 @@
|
|
|
1
|
-
# pi-mono Review: Full May 2026 Analysis
|
|
2
|
-
|
|
3
|
-
**Date:** 2026-05-28
|
|
4
|
-
**Reviewed:** Direct source reading of `packages/agent/`, `packages/ai/`, `packages/coding-agent/`
|
|
5
|
-
**Source:** `origin/main` (up to date)
|
|
6
|
-
|
|
7
|
-
> **Focused coding-agent analysis:** See [`docs/coding-agent-optimization.md`](./coding-agent-optimization.md) for actionable optimization opportunities for pi-crew.
|
|
8
|
-
|
|
9
|
-
---
|
|
10
|
-
|
|
11
|
-
## Executive Summary
|
|
12
|
-
|
|
13
|
-
**No breaking changes found.** The entire May refactor is additive or internal. Both `Agent` (legacy harness) and `AgentHarness` (new harness) coexist. pi-crew's usage of the `Agent` class via `child-pi.ts` spawning is **fully compatible**.
|
|
14
|
-
|
|
15
|
-
---
|
|
16
|
-
|
|
17
|
-
## 1. Architecture: Two Harnesses Coexist
|
|
18
|
-
|
|
19
|
-
### Legacy Harness: `Agent` class (`packages/agent/src/agent.ts`)
|
|
20
|
-
|
|
21
|
-
```typescript
|
|
22
|
-
// Still the primary harness used by coding-agent
|
|
23
|
-
export class Agent {
|
|
24
|
-
async prompt(input: string | AgentMessage | AgentMessage[], images?: ImageContent[]): Promise<void>
|
|
25
|
-
async abort(): void
|
|
26
|
-
subscribe(listener: (event: AgentEvent, signal: AbortSignal) => void): () => void
|
|
27
|
-
// ... existing API unchanged
|
|
28
|
-
}
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
This is what pi-crew's `child-pi.ts` spawns — **no breaking changes**.
|
|
32
|
-
|
|
33
|
-
### New Harness: `AgentHarness` class (`packages/agent/src/harness/agent-harness.ts`)
|
|
34
|
-
|
|
35
|
-
```typescript
|
|
36
|
-
// New harness, built on top of runAgentLoop, with richer APIs
|
|
37
|
-
export class AgentHarness {
|
|
38
|
-
async prompt(text: string, options?: AgentHarnessPromptOptions): Promise<AssistantMessage>
|
|
39
|
-
async steer(text: string): Promise<void>
|
|
40
|
-
async setModel(model: Model<any>): Promise<void>
|
|
41
|
-
async setThinkingLevel(level: ThinkingLevel): Promise<void>
|
|
42
|
-
async setResources(resources: AgentHarnessResources): Promise<void>
|
|
43
|
-
async navigateTree(options: NavigateTreeOptions): Promise<NavigateTreeResult>
|
|
44
|
-
async abort(): Promise<AbortResult>
|
|
45
|
-
}
|
|
46
|
-
```
|
|
47
|
-
|
|
48
|
-
**Both use the same `runAgentLoop`** internally. `AgentHarness` wraps it with richer state management, resource loading, and session persistence.
|
|
49
|
-
|
|
50
|
-
### Session System (`packages/agent/src/harness/session/`)
|
|
51
|
-
|
|
52
|
-
New formal session infrastructure (1,008 lines across 7 files):
|
|
53
|
-
|
|
54
|
-
```typescript
|
|
55
|
-
// Session storage with JSONL backend
|
|
56
|
-
SessionStorage<TMetadata> {
|
|
57
|
-
getMetadata(), setLeafId(), createEntryId(), appendEntry(),
|
|
58
|
-
getEntry(), findEntries(), getLabel(), getPathToRoot(), getEntries()
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// Session repo with fork/list/delete
|
|
62
|
-
SessionRepo<TMetadata, TCreateOptions, TListOptions> {
|
|
63
|
-
create(), open(), list(), delete(), fork()
|
|
64
|
-
}
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
**pi-crew's event log** (`src/state/event-log.ts`) uses its own JSONL format — no conflict.
|
|
68
|
-
|
|
69
|
-
---
|
|
70
|
-
|
|
71
|
-
## 2. New Hooks (AgentHarness)
|
|
72
|
-
|
|
73
|
-
### `context` hook
|
|
74
|
-
|
|
75
|
-
Fires before each LLM call to allow context transformation:
|
|
76
|
-
|
|
77
|
-
```typescript
|
|
78
|
-
// agent-harness.ts line ~413
|
|
79
|
-
const result = await this.emitHook({ type: "context", messages: [...messages] });
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
**pi-crew relevance:** Currently pi-crew uses `before_agent_start` only. The `context` hook would allow per-turn context injection (e.g., pruning, external context injection).
|
|
83
|
-
|
|
84
|
-
### `resources_update` hook
|
|
85
|
-
|
|
86
|
-
Fires when resources (skills/prompt templates) change mid-run:
|
|
87
|
-
|
|
88
|
-
```typescript
|
|
89
|
-
type: "resources_update";
|
|
90
|
-
resources: AgentHarnessResources;
|
|
91
|
-
previousResources: AgentHarnessResources;
|
|
92
|
-
```
|
|
93
|
-
|
|
94
|
-
**pi-crew relevance:** Useful for dynamic skill loading during task execution.
|
|
95
|
-
|
|
96
|
-
### `model_select` / `thinking_level_select` hooks
|
|
97
|
-
|
|
98
|
-
Fire when the model or thinking level changes mid-run.
|
|
99
|
-
|
|
100
|
-
**pi-crew relevance:** Supports the `prepareNextTurn` dynamic model switching pattern.
|
|
101
|
-
|
|
102
|
-
---
|
|
103
|
-
|
|
104
|
-
## 3. New `prepareNextTurn` API
|
|
105
|
-
|
|
106
|
-
```typescript
|
|
107
|
-
// packages/agent/src/types.ts
|
|
108
|
-
prepareNextTurn?: (
|
|
109
|
-
context: PrepareNextTurnContext,
|
|
110
|
-
) => AgentLoopTurnUpdate | undefined | Promise<AgentLoopTurnUpdate | undefined>;
|
|
111
|
-
|
|
112
|
-
interface AgentLoopTurnUpdate {
|
|
113
|
-
context?: AgentContext; // replacement context
|
|
114
|
-
model?: Model<any>; // new model for next turn
|
|
115
|
-
thinkingLevel?: ThinkingLevel; // new thinking level
|
|
116
|
-
}
|
|
117
|
-
```
|
|
118
|
-
|
|
119
|
-
Called after each `turn_end` and before deciding whether to start another LLM call. Enables **dynamic model routing** mid-run without restarting.
|
|
120
|
-
|
|
121
|
-
**pi-crew relevance:** Process-per-task model means each task is already isolated. No use for `prepareNextTurn`. However, this could enable a future single-process execution mode.
|
|
122
|
-
|
|
123
|
-
---
|
|
124
|
-
|
|
125
|
-
## 4. New `shouldStopAfterTurn` API
|
|
126
|
-
|
|
127
|
-
```typescript
|
|
128
|
-
shouldStopAfterTurn?: (context: ShouldStopAfterTurnContext) => boolean | Promise<boolean>;
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
Called after each turn completes. Return `true` to gracefully stop after the current turn (without starting another LLM call).
|
|
132
|
-
|
|
133
|
-
**pi-crew relevance:** Could be used to implement turn-count-based task completion (instead of relying on `maxTurns` in child-pi).
|
|
134
|
-
|
|
135
|
-
---
|
|
136
|
-
|
|
137
|
-
## 5. New `transformContext` API
|
|
138
|
-
|
|
139
|
-
```typescript
|
|
140
|
-
transformContext?: (messages: AgentMessage[], signal?: AbortSignal) => Promise<AgentMessage[]>;
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
Applied to context before `convertToLlm` at each turn. For context window management or external context injection.
|
|
144
|
-
|
|
145
|
-
**pi-crew relevance:** Could replace the current approach of rewriting prompts in `before_agent_start` — instead, transform the full context between turns.
|
|
146
|
-
|
|
147
|
-
---
|
|
148
|
-
|
|
149
|
-
## 6. Result Type System
|
|
150
|
-
|
|
151
|
-
```typescript
|
|
152
|
-
// packages/agent/src/harness/types.ts
|
|
153
|
-
export type Result<TValue, TError> =
|
|
154
|
-
| { ok: true; value: TValue }
|
|
155
|
-
| { ok: false; error: TError };
|
|
156
|
-
|
|
157
|
-
export function ok<TValue, TError>(value: TValue): Result<TValue, TError>
|
|
158
|
-
export function err<TValue, TError>(error: TError): Result<TValue, TError>
|
|
159
|
-
export function getOrThrow<TValue, TError>(result: Result<TValue, TError>): TValue
|
|
160
|
-
```
|
|
161
|
-
|
|
162
|
-
Formal result type for all harness filesystem and execution operations. Prevents thrown exceptions for expected failures.
|
|
163
|
-
|
|
164
|
-
**pi-crew relevance:** No current use. If pi-crew ever uses `AgentHarness` directly, this would be the expected error-handling pattern.
|
|
165
|
-
|
|
166
|
-
---
|
|
167
|
-
|
|
168
|
-
## 7. Image Generation API (`@earendil-works/pi-ai`)
|
|
169
|
-
|
|
170
|
-
```typescript
|
|
171
|
-
// packages/ai/src/images.ts
|
|
172
|
-
export async function generateImages<TApi extends ImagesApi>(
|
|
173
|
-
model: ImagesModel<TApi>,
|
|
174
|
-
context: ImagesGenerationContext,
|
|
175
|
-
options?: ImagesGenerationOptions
|
|
176
|
-
): Promise<ImageResult[]>
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
New image generation capability. Providers: OpenRouter images, Flux, DALL-E, etc.
|
|
180
|
-
|
|
181
|
-
**pi-crew relevance:** Tasks can now use image generation. No API change needed — pi handles it.
|
|
182
|
-
|
|
183
|
-
---
|
|
184
|
-
|
|
185
|
-
## 8. Explicit Session ID Naming
|
|
186
|
-
|
|
187
|
-
```typescript
|
|
188
|
-
// packages/coding-agent/src/core/session-manager.ts
|
|
189
|
-
this.sessionId = options?.id ?? createSessionId();
|
|
190
|
-
```
|
|
191
|
-
|
|
192
|
-
Users can now specify a custom session ID on startup.
|
|
193
|
-
|
|
194
|
-
**pi-crew relevance:** Could enhance `inheritContext` feature — pass a named session instead of raw JSON.
|
|
195
|
-
|
|
196
|
-
---
|
|
197
|
-
|
|
198
|
-
## 9. Stream Options Patch System
|
|
199
|
-
|
|
200
|
-
```typescript
|
|
201
|
-
// AgentHarnessStreamOptionsPatch — returned by before_provider_request hooks
|
|
202
|
-
export interface AgentHarnessStreamOptionsPatch {
|
|
203
|
-
transport?: Transport;
|
|
204
|
-
timeoutMs?: number;
|
|
205
|
-
maxRetries?: number;
|
|
206
|
-
headers?: Record<string, string | undefined>; // undefined = delete
|
|
207
|
-
metadata?: Record<string, unknown | undefined>;
|
|
208
|
-
}
|
|
209
|
-
```
|
|
210
|
-
|
|
211
|
-
Hooks can now **modify stream options** before each LLM call (per-turn patching).
|
|
212
|
-
|
|
213
|
-
**pi-crew relevance:** Could enable per-task timeout/retries via hooks instead of process-level limits.
|
|
214
|
-
|
|
215
|
-
---
|
|
216
|
-
|
|
217
|
-
## 10. Bug Fixes Affecting pi-crew
|
|
218
|
-
|
|
219
|
-
### Tool Preflight Abort (`b9448276`)
|
|
220
|
-
|
|
221
|
-
**Before:** When a run was aborted, sibling tool calls kept preparing in parallel.
|
|
222
|
-
|
|
223
|
-
**After:** `signal?.aborted` check breaks the tool execution loop immediately.
|
|
224
|
-
|
|
225
|
-
```typescript
|
|
226
|
-
// agent-loop.ts
|
|
227
|
-
if (signal?.aborted) {
|
|
228
|
-
break; // Stop preparing sibling tool calls
|
|
229
|
-
}
|
|
230
|
-
```
|
|
231
|
-
|
|
232
|
-
**pi-crew relevance:** When pi-crew calls `cancel` on a running task, pi now correctly stops tool preflight immediately. Previously, pending tool calls could continue executing even after cancellation.
|
|
233
|
-
|
|
234
|
-
### RPC Child Process Exit (`e007fcd0`)
|
|
235
|
-
|
|
236
|
-
RPC now rejects pending requests when child process exits. Affects `child-pi.ts` communication.
|
|
237
|
-
|
|
238
|
-
---
|
|
239
|
-
|
|
240
|
-
## 11. AgentHarness Key Source Files
|
|
241
|
-
|
|
242
|
-
| File | Lines | Purpose |
|
|
243
|
-
|------|-------|---------|
|
|
244
|
-
| `harness/agent-harness.ts` | ~950 | Main orchestrator |
|
|
245
|
-
| `harness/types.ts` | ~817 | All types, hooks, error codes |
|
|
246
|
-
| `harness/session/session.ts` | 252 | Session abstraction |
|
|
247
|
-
| `harness/session/jsonl-storage.ts` | 293 | JSONL persistence |
|
|
248
|
-
| `harness/session/session-repo.ts` | 231 | Session CRUD |
|
|
249
|
-
| `harness/skills.ts` | 375 | Skill loading + formatting |
|
|
250
|
-
| `harness/prompt-templates.ts` | 267 | Prompt template processing |
|
|
251
|
-
| `harness/compaction/compaction.ts` | 842 | Transcript compaction |
|
|
252
|
-
| `harness/compaction/branch-summarization.ts` | 355 | Branch summarization |
|
|
253
|
-
| `harness/env/nodejs.ts` | 370+ | Node.js execution environment |
|
|
254
|
-
| `harness/execution-env.ts` | Abstract | FS + shell abstraction |
|
|
255
|
-
|
|
256
|
-
---
|
|
257
|
-
|
|
258
|
-
## 12. Opportunities for pi-crew Enhancement
|
|
259
|
-
|
|
260
|
-
> **Full plans:** [`docs/pi-mono-opportunities.md`](./pi-mono-opportunities.md)
|
|
261
|
-
|
|
262
|
-
### High Priority
|
|
263
|
-
|
|
264
|
-
**BM25 Semantic Reranking** — Fix `recommendTeam()` keyword failures by integrating existing BM25 search.
|
|
265
|
-
|
|
266
|
-
### Medium Priority
|
|
267
|
-
|
|
268
|
-
**Extended Hook Phases** — `before_turn`/`after_turn` hooks using existing `turn_end` tracking in `child-pi.ts`.
|
|
269
|
-
|
|
270
|
-
**Hook Lifecycle Tests** — Cover untested hooks: `task_result`, `before_retry`, `before_publish`, `session_before_switch`, `run_recovery`.
|
|
271
|
-
|
|
272
|
-
### Future (6+ months)
|
|
273
|
-
|
|
274
|
-
**AgentHarness Migration** — When `AgentHarness` stabilizes (removes `Agent` dependency), pi-crew could replace `child-pi.ts` spawning with harness-based in-process execution. **Not a current concern.**
|
|
275
|
-
|
|
276
|
-
---
|
|
277
|
-
|
|
278
|
-
## 13. Summary
|
|
279
|
-
|
|
280
|
-
| Check | Result |
|
|
281
|
-
|-------|--------|
|
|
282
|
-
| Breaking API changes | **None** |
|
|
283
|
-
| `Agent` class API | **Unchanged** — pi-crew compatible |
|
|
284
|
-
| `AgentHarness` class | **New** — additive, not used by pi-crew |
|
|
285
|
-
| New hooks | `context`, `resources_update`, `model_select`, `thinking_level_select` |
|
|
286
|
-
| New lifecycle APIs | `prepareNextTurn`, `shouldStopAfterTurn`, `transformContext` |
|
|
287
|
-
| New providers/features | Together AI, Xiaomi MiMo, Image generation, Codex websocket |
|
|
288
|
-
| Bug fixes affecting pi-crew | Tool preflight abort, RPC child exit |
|
|
289
|
-
| Migration path | AgentHarness (6+ months out, not urgent) |
|
|
290
|
-
|
|
291
|
-
**Conclusion:** pi-crew is fully compatible with the latest pi source. The `AgentHarness` refactor is substantial but additive — it coexists with the legacy `Agent` class that pi-crew uses. Focus on pi-crew-specific enhancements. Monitor `AgentHarness` stabilization for future migration.
|
|
@@ -1,261 +0,0 @@
|
|
|
1
|
-
# pi-subagent4 vs pi-crew: Comparative Analysis
|
|
2
|
-
|
|
3
|
-
## Overview
|
|
4
|
-
|
|
5
|
-
| Aspect | pi-subagent4 | pi-crew |
|
|
6
|
-
|--------|--------------|---------|
|
|
7
|
-
| **Size** | ~560 lines (single file) | ~50+ files, 10K+ lines |
|
|
8
|
-
| **Architecture** | Single `subagent` tool | Full team orchestration system |
|
|
9
|
-
| **Agent Model** | 3 built-in (scout, researcher, worker) | Configurable, extensible |
|
|
10
|
-
| **Concurrency** | Semaphore (default 4) | DAG scheduler with phases |
|
|
11
|
-
| **Context** | No inheritance (must be in task) | Full context preservation |
|
|
12
|
-
|
|
13
|
-
---
|
|
14
|
-
|
|
15
|
-
## 1. Extension & Registration
|
|
16
|
-
|
|
17
|
-
### pi-subagent4
|
|
18
|
-
```typescript
|
|
19
|
-
// Dynamic agent registration via globalThis bridge
|
|
20
|
-
(globalThis as any).__pi_subagents = { registerAgent, unregisterAgent };
|
|
21
|
-
|
|
22
|
-
export function registerAgent(config: AgentConfig): void {
|
|
23
|
-
agents.push(config);
|
|
24
|
-
}
|
|
25
|
-
```
|
|
26
|
-
- **File-based**: Loads agents from `.md` files at startup
|
|
27
|
-
- **Global bridge**: Uses `globalThis.__pi_subagents` for cross-module registration
|
|
28
|
-
- **Frontmatter config**: YAML frontmatter in `.md` files define agents
|
|
29
|
-
|
|
30
|
-
### pi-crew
|
|
31
|
-
- **Manifest-based**: Teams/workflows defined in `.team.md`/`.workflow.md` files
|
|
32
|
-
- **Skills system**: Extensible skill system for agents
|
|
33
|
-
- **No dynamic registration API**: Static configuration
|
|
34
|
-
|
|
35
|
-
---
|
|
36
|
-
|
|
37
|
-
## 2. Child Process Spawning
|
|
38
|
-
|
|
39
|
-
### pi-subagent4
|
|
40
|
-
```typescript
|
|
41
|
-
const args = [
|
|
42
|
-
...piBin.baseArgs,
|
|
43
|
-
"--mode", "json",
|
|
44
|
-
"-p",
|
|
45
|
-
"--no-session",
|
|
46
|
-
"--no-skills",
|
|
47
|
-
"--no-extensions",
|
|
48
|
-
"--tools", allowlist.join(","),
|
|
49
|
-
// ... custom tools, model, thinking level
|
|
50
|
-
];
|
|
51
|
-
|
|
52
|
-
const child = spawn(command, spawnArgs, { stdio: ["ignore", "pipe", "pipe"] });
|
|
53
|
-
```
|
|
54
|
-
- **JSON mode**: `--mode json` for structured output
|
|
55
|
-
- **Heavy isolation**: `--no-session --no-skills --no-extensions`
|
|
56
|
-
- **Tool allowlist**: `--tools` for fine-grained control
|
|
57
|
-
- **PI_SUBAGENT_ALLOWED**: Env var restricts nested subagents
|
|
58
|
-
|
|
59
|
-
### pi-crew
|
|
60
|
-
```typescript
|
|
61
|
-
const child = spawn(spawnSpec.command, spawnSpec.args, buildChildPiSpawnOptions(...));
|
|
62
|
-
```
|
|
63
|
-
- **Similar isolation**: Filters env vars, preserves essentials
|
|
64
|
-
- **More complex args**: Based on task config
|
|
65
|
-
- **No direct env restriction**: Uses runtime mode instead
|
|
66
|
-
|
|
67
|
-
---
|
|
68
|
-
|
|
69
|
-
## 3. Concurrency Control
|
|
70
|
-
|
|
71
|
-
### pi-subagent4
|
|
72
|
-
```typescript
|
|
73
|
-
class Semaphore {
|
|
74
|
-
constructor(private readonly max: number) {}
|
|
75
|
-
|
|
76
|
-
async run<T>(fn: () => Promise<T>): Promise<T> {
|
|
77
|
-
// Simple acquire/release pattern
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
const semaphore = new Semaphore(config.maxConcurrency ?? 4);
|
|
82
|
-
```
|
|
83
|
-
- **Per-parent semaphore**: Default 4, configurable via `config.json`
|
|
84
|
-
- **Promise.all fan-out**: Parallel subagent calls in one turn
|
|
85
|
-
|
|
86
|
-
### pi-crew
|
|
87
|
-
```typescript
|
|
88
|
-
// DAG scheduler with phase-based concurrency
|
|
89
|
-
resolveBatchConcurrency({
|
|
90
|
-
workflowMaxConcurrency,
|
|
91
|
-
teamMaxConcurrency,
|
|
92
|
-
maxConcurrentWorkers,
|
|
93
|
-
workspaceMode,
|
|
94
|
-
});
|
|
95
|
-
|
|
96
|
-
// Tasks in same phase run concurrently
|
|
97
|
-
```
|
|
98
|
-
- **Phase-based**: Tasks grouped by workflow phase
|
|
99
|
-
- **DAG dependency**: Respects task dependencies
|
|
100
|
-
- **Configurable limits**: Per-workflow and per-team
|
|
101
|
-
|
|
102
|
-
---
|
|
103
|
-
|
|
104
|
-
## 4. Input Handling
|
|
105
|
-
|
|
106
|
-
### pi-subagent4
|
|
107
|
-
```typescript
|
|
108
|
-
// Long tasks written to temp file
|
|
109
|
-
if (task.length > 8000) {
|
|
110
|
-
const tempFile = createTempFile(task);
|
|
111
|
-
args.push("@" + tempFile);
|
|
112
|
-
} else {
|
|
113
|
-
args.push("--task", task);
|
|
114
|
-
}
|
|
115
|
-
```
|
|
116
|
-
- **8K char threshold**: Uses temp file for large tasks
|
|
117
|
-
- **Single task format**: `--task <text>` or `@<file>`
|
|
118
|
-
|
|
119
|
-
### pi-crew
|
|
120
|
-
```typescript
|
|
121
|
-
// Prompt builder with system prompt, context, task
|
|
122
|
-
const built = await buildPrompt({ task, role, goal, cwd, ... });
|
|
123
|
-
// Args built from task configuration
|
|
124
|
-
```
|
|
125
|
-
- **Prompt builder**: Constructs full prompt with context
|
|
126
|
-
- **File-based context**: Can read from workspace files
|
|
127
|
-
|
|
128
|
-
---
|
|
129
|
-
|
|
130
|
-
## 5. Output Handling
|
|
131
|
-
|
|
132
|
-
### pi-subagent4
|
|
133
|
-
```typescript
|
|
134
|
-
// JSON event stream on stdout
|
|
135
|
-
child.stdout.on("data", (data) => {
|
|
136
|
-
const lines = data.toString().split("\n");
|
|
137
|
-
for (const line of lines) {
|
|
138
|
-
if (line.startsWith("{")) {
|
|
139
|
-
const event = JSON.parse(line);
|
|
140
|
-
// tool_execution_start/end, message_end
|
|
141
|
-
}
|
|
142
|
-
}
|
|
143
|
-
});
|
|
144
|
-
```
|
|
145
|
-
- **JSON event stream**: Structured events from child process
|
|
146
|
-
- **Event types**: `tool_execution_start`, `tool_execution_end`, `message_end`
|
|
147
|
-
- **Streaming**: Real-time event processing
|
|
148
|
-
|
|
149
|
-
### pi-crew
|
|
150
|
-
```typescript
|
|
151
|
-
// JSON output mode + structured response
|
|
152
|
-
const output = await runChildPi({
|
|
153
|
-
onLifecycleEvent: (event) => { ... },
|
|
154
|
-
// ...
|
|
155
|
-
});
|
|
156
|
-
```
|
|
157
|
-
- **Lifecycle events**: spawn, spawn_error, response_timeout, etc.
|
|
158
|
-
- **Structured result**: `{ content, details, usage }`
|
|
159
|
-
|
|
160
|
-
---
|
|
161
|
-
|
|
162
|
-
## 6. Safety Features
|
|
163
|
-
|
|
164
|
-
### pi-subagent4
|
|
165
|
-
```typescript
|
|
166
|
-
// tools/safe-bash.ts
|
|
167
|
-
const DANGEROUS_PATTERNS = [
|
|
168
|
-
/\brm\s+(-[a-zA-Z]*f[a-zA-Z]*\s+)?(-[a-zA-Z]*r[a-zA-Z]*\s+)?(\/|~\/?\s|~\/?\b)/,
|
|
169
|
-
/\bsudo\b/,
|
|
170
|
-
/\bmkfs\b/,
|
|
171
|
-
// ... 15+ patterns
|
|
172
|
-
];
|
|
173
|
-
```
|
|
174
|
-
- **Regex blocklist**: 15+ dangerous command patterns
|
|
175
|
-
- **Safe bash wrapper**: Wraps built-in bash tool
|
|
176
|
-
|
|
177
|
-
### pi-crew
|
|
178
|
-
- **Env var filtering**: Strips secrets before spawning
|
|
179
|
-
- **No built-in safe bash**: Trust-based (user config required)
|
|
180
|
-
- **Sandbox modes**: scaffold, child-process, live-session
|
|
181
|
-
|
|
182
|
-
---
|
|
183
|
-
|
|
184
|
-
## 7. UI/Rendering
|
|
185
|
-
|
|
186
|
-
### pi-subagent4
|
|
187
|
-
```typescript
|
|
188
|
-
// Throttled live rendering
|
|
189
|
-
const updateThrottle = 150; // ms
|
|
190
|
-
// Context window meter for depth >= 1 subagents
|
|
191
|
-
// Tool preview extraction
|
|
192
|
-
```
|
|
193
|
-
- **150ms throttle**: Prevents UI thrashing
|
|
194
|
-
- **Context gauge**: Shows token usage
|
|
195
|
-
- **Tool preview**: Single-line argument preview
|
|
196
|
-
|
|
197
|
-
### pi-crew
|
|
198
|
-
- **Rich UI widget**: Live status, progress, model/token display
|
|
199
|
-
- **Dashboard**: Full run dashboard
|
|
200
|
-
- **Event bus**: Real-time updates
|
|
201
|
-
|
|
202
|
-
---
|
|
203
|
-
|
|
204
|
-
## 8. Agent Hierarchy
|
|
205
|
-
|
|
206
|
-
### pi-subagent4
|
|
207
|
-
```
|
|
208
|
-
worker (depth 2)
|
|
209
|
-
├─ scout (depth 1)
|
|
210
|
-
└─ researcher (depth 1)
|
|
211
|
-
```
|
|
212
|
-
- **Depth-2 cap**: Worker can spawn scout/researcher
|
|
213
|
-
- **PI_SUBAGENT_ALLOWED**: Enforces restriction
|
|
214
|
-
|
|
215
|
-
### pi-crew
|
|
216
|
-
- **No nested subagent**: Each task is independent
|
|
217
|
-
- **Team roles**: explorer, planner, executor, etc.
|
|
218
|
-
- **Phase-based**: Sequential phases with parallel within
|
|
219
|
-
|
|
220
|
-
---
|
|
221
|
-
|
|
222
|
-
## Key Insights
|
|
223
|
-
|
|
224
|
-
### What pi-subagent4 does better:
|
|
225
|
-
1. **Simpler API**: Single tool, minimal config
|
|
226
|
-
2. **Dynamic registration**: `registerAgent()` for runtime changes
|
|
227
|
-
3. **JSON event stream**: Real-time structured events
|
|
228
|
-
4. **Safe bash**: Built-in dangerous command blocking
|
|
229
|
-
5. **Context gauge**: Token monitoring per turn
|
|
230
|
-
|
|
231
|
-
### What pi-crew does better:
|
|
232
|
-
1. **Complex workflows**: DAG scheduler, phases, dependencies
|
|
233
|
-
2. **Durable state**: Manifest, events, artifacts persisted
|
|
234
|
-
3. **Worktree isolation**: Safe parallel edits
|
|
235
|
-
4. **Async runs**: Background execution with notifications
|
|
236
|
-
5. **Rich UI**: Full dashboard and widget system
|
|
237
|
-
6. **Multiple teams**: Built-in teams for different use cases
|
|
238
|
-
|
|
239
|
-
---
|
|
240
|
-
|
|
241
|
-
## Potential Improvements for pi-crew
|
|
242
|
-
|
|
243
|
-
1. **Dynamic agent registration API**
|
|
244
|
-
- Add `registerAgent(config)` similar to subagent4
|
|
245
|
-
- Allow runtime agent creation
|
|
246
|
-
|
|
247
|
-
2. **Safe bash tool**
|
|
248
|
-
- Port dangerous pattern blocklist from subagent4
|
|
249
|
-
- Configurable via project config
|
|
250
|
-
|
|
251
|
-
3. **JSON event stream parsing**
|
|
252
|
-
- Extract real-time tool events from child process
|
|
253
|
-
- Display tool progress in UI
|
|
254
|
-
|
|
255
|
-
4. **Context window monitoring**
|
|
256
|
-
- Show token usage per task
|
|
257
|
-
- Alert when approaching limits
|
|
258
|
-
|
|
259
|
-
5. **Simpler single-agent mode**
|
|
260
|
-
- Maybe a `subagent` tool for simple delegation?
|
|
261
|
-
- Current API is team/workflow based, could be heavy for simple cases
|