pi-crew 0.9.51 → 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 +35 -0
- package/README.md +216 -20
- package/dist/build-meta.json +2090 -1638
- package/dist/index.mjs +18057 -17119
- 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/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/2026-07-26-c6-mascot-visibility-not-wired.md +0 -84
- 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 -293
- package/src/ui/loaders.ts +0 -6
- package/src/ui/mascot.ts +0 -449
- 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 -278
- package/src/ui/run-action-dispatcher.ts +0 -182
- package/src/ui/run-dashboard.ts +0 -904
- 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/shared-overlay-scheduler.ts +0 -96
- 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 -391
- 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,171 +0,0 @@
|
|
|
1
|
-
# pi-crew Runtime Analysis: child-process vs live-session
|
|
2
|
-
|
|
3
|
-
> Date: 2026-05-12
|
|
4
|
-
> Status: Performance analysis — proposing a default runtime change
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## 1. Current problem
|
|
9
|
-
|
|
10
|
-
pi-crew's default runtime is **child-process** — each worker spawns its own `pi` CLI child process. This causes:
|
|
11
|
-
|
|
12
|
-
### 1.1 Memory
|
|
13
|
-
|
|
14
|
-
| Scenario | child-process | live-session | Savings |
|
|
15
|
-
|---|---|---|---|
|
|
16
|
-
| 1 worker | ~150 MB added | ~15 MB added | **135 MB** |
|
|
17
|
-
| 4 workers (parallel) | ~600 MB added | ~60 MB added | **540 MB** |
|
|
18
|
-
| 8 workers (max cap) | ~1.2 GB added | ~120 MB added | **~1.1 GB** |
|
|
19
|
-
|
|
20
|
-
**The parent Pi process already consumes ~308 MB.** Adding 4 child-process workers brings the total to **910 MB**, nearly 1 GB just to run a single team. A machine with 8 GB of RAM will start swapping.
|
|
21
|
-
|
|
22
|
-
### 1.2 Startup latency
|
|
23
|
-
|
|
24
|
-
| Stage | child-process | live-session |
|
|
25
|
-
|---|---|---|
|
|
26
|
-
| Process spawn | ~300ms | 0 |
|
|
27
|
-
| Node.js bootstrap | ~500ms | 0 |
|
|
28
|
-
| Pi CLI init + load extensions | ~1-2s | 0 |
|
|
29
|
-
| pi-crew register() (runs again in child) | ~200ms | 0 |
|
|
30
|
-
| createAgentSession() | ~100ms | ~100ms |
|
|
31
|
-
| First LLM token | **2-4s total** | **200-500ms total** |
|
|
32
|
-
|
|
33
|
-
**Each worker takes 2-4s to start.** A team implementation with 3 sequential phases × 2-4s = **6-12s just to spawn processes**, before any work even begins.
|
|
34
|
-
|
|
35
|
-
### 1.3 CPU overhead
|
|
36
|
-
|
|
37
|
-
- Each child process runs a separate V8 isolate → separate JIT compiler, separate GC
|
|
38
|
-
- `pi-crew register()` runs **repeatedly** in each child (load config, register tools, bind extensions)
|
|
39
|
-
- JSON parsing/redaction on child stdout → CPU cost per event
|
|
40
|
-
|
|
41
|
-
### 1.4 Complexity
|
|
42
|
-
|
|
43
|
-
- `child-pi.ts` = 461 lines just to manage the subprocess lifecycle
|
|
44
|
-
- Hard kill timer (3s), post-exit stdio guard (3s), final drain (5s), response timeout (5 min)
|
|
45
|
-
- Process tree kill (`taskkill /t /f` on Windows, `kill -pgid` on Unix)
|
|
46
|
-
- Mock system for testing (`PI_TEAMS_MOCK_CHILD_PI`)
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
## 2. live-session is ready
|
|
51
|
-
|
|
52
|
-
pi-crew **has already implemented** a complete live-session runtime:
|
|
53
|
-
|
|
54
|
-
- `src/runtime/live-session-runtime.ts` — 600 LOC, feature parity with child-process for most use cases
|
|
55
|
-
- `src/runtime/runtime-resolver.ts` — `resolveCrewRuntime()` already handles auto/live-session/child-process
|
|
56
|
-
- Soft turn limit + grace period (default 5) — **already present**, identical to pi-subagents3
|
|
57
|
-
- Tool filtering — `filterActiveTools()` removes recursive tools
|
|
58
|
-
- Yield/submit_result — custom tool + JSON event detection
|
|
59
|
-
- Live agent control — steer, resume, real-time tool activity
|
|
60
|
-
- Extension bridge — `buildExtensionBridge()` for extension-based APIs
|
|
61
|
-
- Health diagnostics — `collectLiveSessionHealth()`, `formatLiveSessionDiagnostics()`
|
|
62
|
-
|
|
63
|
-
### Current configuration must be set manually:
|
|
64
|
-
|
|
65
|
-
```json
|
|
66
|
-
// .pi/crew-config.json
|
|
67
|
-
{
|
|
68
|
-
"runtime": {
|
|
69
|
-
"mode": "live-session"
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
```
|
|
73
|
-
|
|
74
|
-
Or:
|
|
75
|
-
```json
|
|
76
|
-
{
|
|
77
|
-
"runtime": {
|
|
78
|
-
"mode": "auto",
|
|
79
|
-
"preferLiveSession": true
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
```
|
|
83
|
-
|
|
84
|
-
**The current default is `"auto"` WITHOUT `preferLiveSession`** → it always falls back to child-process.
|
|
85
|
-
|
|
86
|
-
---
|
|
87
|
-
|
|
88
|
-
## 3. Proposal
|
|
89
|
-
|
|
90
|
-
### 3.1 Change the default: `preferLiveSession: true` when mode = "auto"
|
|
91
|
-
|
|
92
|
-
Current `resolveCrewRuntime()`:
|
|
93
|
-
|
|
94
|
-
```typescript
|
|
95
|
-
// src/runtime/runtime-resolver.ts
|
|
96
|
-
if (requestedMode === "live-session" || (requestedMode === "auto" && config.runtime?.preferLiveSession === true)) {
|
|
97
|
-
const live = await isLiveSessionRuntimeAvailable(1500, env);
|
|
98
|
-
if (live.available) return liveCaps(requestedMode);
|
|
99
|
-
// fallback to child-process
|
|
100
|
-
}
|
|
101
|
-
return childCaps(requestedMode); // ← default: always child-process
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
**Proposed change:**
|
|
105
|
-
|
|
106
|
-
```typescript
|
|
107
|
-
if (requestedMode === "live-session" || requestedMode === "auto") {
|
|
108
|
-
const live = await isLiveSessionRuntimeAvailable(1500, env);
|
|
109
|
-
if (live.available) return liveCaps(requestedMode);
|
|
110
|
-
if (requestedMode === "live-session" && !config.runtime?.allowChildProcessFallback)
|
|
111
|
-
return scaffoldCaps(requestedMode, live.reason, "blocked");
|
|
112
|
-
return { ...childCaps(requestedMode), fallback: "child-process", reason: live.reason };
|
|
113
|
-
}
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
**In other words:** `"auto"` → try live-session first, fall back to child-process if the SDK is unavailable. Users can still force `child-process` if they want.
|
|
117
|
-
|
|
118
|
-
### 3.2 Add an opt-out for risky tasks
|
|
119
|
-
|
|
120
|
-
A task-level flag to force child-process for specific tasks:
|
|
121
|
-
|
|
122
|
-
```json
|
|
123
|
-
{
|
|
124
|
-
"runtime": {
|
|
125
|
-
"mode": "auto",
|
|
126
|
-
"preferLiveSession": true,
|
|
127
|
-
"riskyIsolation": "child-process"
|
|
128
|
-
}
|
|
129
|
-
}
|
|
130
|
-
```
|
|
131
|
-
|
|
132
|
-
Tasks with the `executor` role, or tasks running in a worktree → automatically use child-process.
|
|
133
|
-
|
|
134
|
-
### 3.3 Expected benefits
|
|
135
|
-
|
|
136
|
-
| Metric | Before (child-process default) | After (live-session default) |
|
|
137
|
-
|---|---|---|
|
|
138
|
-
| **4-worker memory** | ~910 MB | ~370 MB |
|
|
139
|
-
| **First token latency** | 2-4s/worker | 200-500ms/worker |
|
|
140
|
-
| **Total startup (3 phases)** | 6-12s | 0.6-1.5s |
|
|
141
|
-
| **Steering** | ❌ | ✅ |
|
|
142
|
-
| **Resume** | ❌ | ✅ |
|
|
143
|
-
| **Crash isolation** | ✅ | ❌ (fallback available) |
|
|
144
|
-
| **Parent crash risk** | None | Low (session.abort handles most) |
|
|
145
|
-
|
|
146
|
-
### 3.4 Risks and mitigations
|
|
147
|
-
|
|
148
|
-
| Risk | Severity | Mitigation |
|
|
149
|
-
|---|---|---|
|
|
150
|
-
| Agent crash → parent crash | Medium | `try/catch` around `session.prompt()`, `AbortController` per-agent, cleanup on unhandled rejection |
|
|
151
|
-
| Memory pressure (many sessions) | Low | Keep the `maxConcurrent` cap (default 4); the limit is sufficient |
|
|
152
|
-
| Recursive team calls | Low | `filterActiveTools()` already removes recursive tools |
|
|
153
|
-
| SDK unavailable (old Pi version) | Low | Auto-fallback to child-process |
|
|
154
|
-
| Unhandled errors in session | Medium | Global `unhandledRejection` handler per-session |
|
|
155
|
-
|
|
156
|
-
---
|
|
157
|
-
|
|
158
|
-
## 4. Conclusion
|
|
159
|
-
|
|
160
|
-
**pi-crew is using an overly heavy runtime for most use cases.** child-process provides excellent crash isolation, but:
|
|
161
|
-
|
|
162
|
-
- **9× the memory** compared to live-session
|
|
163
|
-
- **8× the startup latency**
|
|
164
|
-
- **No steer/resume** — loses interactive capability
|
|
165
|
-
|
|
166
|
-
live-session **is already implemented**; only the default needs to change. The crash isolation trade-off is acceptable because:
|
|
167
|
-
1. The Pi SDK `createAgentSession()` already handles most errors
|
|
168
|
-
2. A child-process fallback is still available when needed
|
|
169
|
-
3. The benefits (540 MB saved, 3s faster startup, steer/resume) outweigh the risks
|
|
170
|
-
|
|
171
|
-
**Action:** Change the `resolveCrewRuntime()` default so `"auto"` prefers live-session, keeping child-process as a fallback.
|
|
@@ -1,250 +0,0 @@
|
|
|
1
|
-
# Analysis: Migrating pi-crew fully to in-process execution
|
|
2
|
-
|
|
3
|
-
> Date: 2026-05-12
|
|
4
|
-
> Question: What if we move entirely to in-process like pi-subagents3?
|
|
5
|
-
|
|
6
|
-
---
|
|
7
|
-
|
|
8
|
-
## 1. Current state
|
|
9
|
-
|
|
10
|
-
pi-crew has **3 runtime modes**, with child-process as the default:
|
|
11
|
-
|
|
12
|
-
```
|
|
13
|
-
scaffold → no workers run (dry-run)
|
|
14
|
-
child-process → spawn a `pi` CLI subprocess per worker (DEFAULT)
|
|
15
|
-
live-session → createAgentSession() in-process per worker
|
|
16
|
-
```
|
|
17
|
-
|
|
18
|
-
### Code related to child-process
|
|
19
|
-
|
|
20
|
-
| File | LOC | Role |
|
|
21
|
-
|---|---|---|
|
|
22
|
-
| `child-pi.ts` | 461 | Subprocess lifecycle, stdout parsing, kill process tree |
|
|
23
|
-
| `pi-args.ts` | 165 | Build CLI args for the child `pi` process |
|
|
24
|
-
| `pi-spawn.ts` | 167 | Detect the `pi` binary path (local/global) |
|
|
25
|
-
| `post-exit-stdio-guard.ts` | 86 | Drain child stdout after exit, hard kill timer |
|
|
26
|
-
| `async-runner.ts` | 153 | Spawn background team runs (detached process) |
|
|
27
|
-
| **Total** | **1,032** | **Code only used by child-process** |
|
|
28
|
-
|
|
29
|
-
### Code related to live-session (already present)
|
|
30
|
-
|
|
31
|
-
| File | LOC | Role |
|
|
32
|
-
|---|---|---|
|
|
33
|
-
| `live-session-runtime.ts` | 600 | In-process execution, soft turn limit, yield, custom tools |
|
|
34
|
-
| `runtime-resolver.ts` | 92 | Auto-detect available runtime |
|
|
35
|
-
| `task-runner/live-executor.ts` | 95 | Adapter: live-session → task-runner interface |
|
|
36
|
-
|
|
37
|
-
### Files that use the child-process path
|
|
38
|
-
|
|
39
|
-
- `task-runner.ts` — 8 references, ~120 lines of child-process-specific logic (heartbeat, progress, model retry)
|
|
40
|
-
- `register.ts` — `terminateActiveChildPiProcesses()` cleanup
|
|
41
|
-
- `doctor.ts` — diagnose child-process issues
|
|
42
|
-
- `async-runner.ts` — spawn background team runs
|
|
43
|
-
|
|
44
|
-
### Related tests
|
|
45
|
-
|
|
46
|
-
- ~37 test files reference child-process / mock child
|
|
47
|
-
- ~3 test files reference the live-session mock
|
|
48
|
-
- All integration tests use `PI_TEAMS_MOCK_CHILD_PI` — **would need rewriting** if child-process is dropped
|
|
49
|
-
|
|
50
|
-
---
|
|
51
|
-
|
|
52
|
-
## 2. If we move fully to in-process
|
|
53
|
-
|
|
54
|
-
### 2.1 What we GAIN
|
|
55
|
-
|
|
56
|
-
#### Immediate benefits
|
|
57
|
-
|
|
58
|
-
| Metric | child-process | in-process | Improvement |
|
|
59
|
-
|---|---|---|---|
|
|
60
|
-
| Memory / worker | ~150 MB | ~15 MB | **10× lighter** |
|
|
61
|
-
| 4 workers peak | ~600 MB added | ~60 MB added | **540 MB saved** |
|
|
62
|
-
| Startup / worker | 2-4s | 200-500ms | **8× faster** |
|
|
63
|
-
| Team startup (3 phases) | 6-12s overhead | ~1s overhead | **6-12× faster** |
|
|
64
|
-
| Steering | ❌ | ✅ | **New feature** |
|
|
65
|
-
| Resume | ❌ | ✅ | **New feature** |
|
|
66
|
-
| Context inheritance | ❌ | ✅ (parentContext) | **New feature** |
|
|
67
|
-
| Live tool activity | ❌ | ✅ | **New feature** |
|
|
68
|
-
| Yield/submit_result | ✅ (JSON event) | ✅ (custom tool) | Parity |
|
|
69
|
-
| Worktree isolation | ✅ | ✅ | Parity |
|
|
70
|
-
|
|
71
|
-
#### Architectural benefits
|
|
72
|
-
|
|
73
|
-
- **Delete ~1,000 LOC** of subprocess management code
|
|
74
|
-
- Simplify `task-runner.ts` (remove 120 lines of child-process logic)
|
|
75
|
-
- Remove `post-exit-stdio-guard.ts`, `pi-spawn.ts`, `pi-args.ts` subprocess overhead
|
|
76
|
-
- Remove `responseTimeoutMs`, `hardKillMs`, `postExitStdioGuardMs` — no need to kill a process tree
|
|
77
|
-
- **Zero npm dependencies for execution** (currently requires `jiti` for async-runner TypeScript loading)
|
|
78
|
-
|
|
79
|
-
### 2.2 What we LOSE
|
|
80
|
-
|
|
81
|
-
#### ❌ Process isolation — biggest loss
|
|
82
|
-
|
|
83
|
-
```
|
|
84
|
-
child-process: worker crash → worker dies → parent continues
|
|
85
|
-
in-process: worker crash → can crash parent → entire team lost
|
|
86
|
-
```
|
|
87
|
-
|
|
88
|
-
The Pi SDK `createAgentSession()` handles most errors, but:
|
|
89
|
-
- **Unhandled promise rejection** within a session
|
|
90
|
-
- **Infinite loop** inside a custom tool
|
|
91
|
-
- **OOM** — one session consuming all memory affects everything
|
|
92
|
-
- **Node.js segfault** — rare, but when it happens = total death
|
|
93
|
-
|
|
94
|
-
#### ❌ Async background team runs
|
|
95
|
-
|
|
96
|
-
`async-runner.ts` spawns a **detached process** to run a team when the user closes the terminal. In-process cannot do this — the process dies when the terminal closes.
|
|
97
|
-
|
|
98
|
-
**Solution:** Keep `async-runner.ts` specifically for background runs — it spawns the entire team runner, not individual workers.
|
|
99
|
-
|
|
100
|
-
#### ❌ Simple depth guard
|
|
101
|
-
|
|
102
|
-
`checkCrewDepth()` counts the `PI_CREW_PARENT_PID` env var. In-process has no process boundary → counting depth is harder. A global counter or thread-local equivalent is needed.
|
|
103
|
-
|
|
104
|
-
#### ❌ 37+ test files need updating
|
|
105
|
-
|
|
106
|
-
All integration tests use `PI_TEAMS_MOCK_CHILD_PI`. They would need to switch to `PI_CREW_MOCK_LIVE_SESSION` or have new mocks written.
|
|
107
|
-
|
|
108
|
-
#### ❌ `_CrewRuntimeKind` type union
|
|
109
|
-
|
|
110
|
-
`"scaffold" | "child-process" | "live-session"` → if child-process is dropped, only `"scaffold" | "in-process"` remains. Breaking change for config.
|
|
111
|
-
|
|
112
|
-
### 2.3 Specific risks
|
|
113
|
-
|
|
114
|
-
| Risk | Severity | Details |
|
|
115
|
-
|---|---|---|
|
|
116
|
-
| Parent crash | **Medium** | Unhandled error in agent session → parent dies. The Pi SDK wraps most of them but not 100%. |
|
|
117
|
-
| Memory pressure | **Medium** | 4 in-process sessions + context windows can consume >500MB within the same heap. V8 GC pauses. |
|
|
118
|
-
| Extension conflicts | **Low** | In-process extensions can conflict (global state, tool registry). Filtering exists but there are edge cases. |
|
|
119
|
-
| Recursive team calls | **Low** | The `team` tool inside an agent session → infinite recursion. Already filtered but a guarantee is needed. |
|
|
120
|
-
| Background runs | **Solved** | Keep `async-runner.ts` separate; it only spawns 1 detached process for the full team. |
|
|
121
|
-
| Breaking config | **Low** | Users currently setting `mode: "child-process"` → need a migration path. |
|
|
122
|
-
|
|
123
|
-
---
|
|
124
|
-
|
|
125
|
-
## 3. Two directions
|
|
126
|
-
|
|
127
|
-
### Direction A: Drop child-process entirely (like pi-subagents3)
|
|
128
|
-
|
|
129
|
-
```
|
|
130
|
-
┌─────────────────────────┐
|
|
131
|
-
│ task-runner.ts │
|
|
132
|
-
│ runtime = "in-process" │
|
|
133
|
-
├─────────────────────────┤
|
|
134
|
-
│ live-session-runtime.ts │
|
|
135
|
-
│ createAgentSession() │
|
|
136
|
-
│ session.prompt() │
|
|
137
|
-
│ session.steer() │
|
|
138
|
-
├─────────────────────────┤
|
|
139
|
-
│ Pi SDK (shared) │
|
|
140
|
-
└─────────────────────────┘
|
|
141
|
-
```
|
|
142
|
-
|
|
143
|
-
**Delete:** `child-pi.ts`, `pi-args.ts`, `pi-spawn.ts`, `post-exit-stdio-guard.ts` (~879 LOC)
|
|
144
|
-
**Keep:** `async-runner.ts` (for background team runs — spawns 1 process for the whole team, not per-worker)
|
|
145
|
-
**Change:** `task-runner.ts` → drop the child-process branch, use only live-session
|
|
146
|
-
**Change:** All 37+ test files
|
|
147
|
-
|
|
148
|
-
**Pros:** Clean architecture, simplest, lowest maintenance
|
|
149
|
-
**Cons:** Loses per-worker crash isolation; many tests need rewriting
|
|
150
|
-
|
|
151
|
-
### Direction B: Live-session default + child-process opt-in (recommended)
|
|
152
|
-
|
|
153
|
-
```
|
|
154
|
-
┌─────────────────────────────────┐
|
|
155
|
-
│ task-runner.ts │
|
|
156
|
-
│ default: live-session │
|
|
157
|
-
│ opt-in: child-process │
|
|
158
|
-
│ background: async-runner │
|
|
159
|
-
├──────────┬───────────────────────┤
|
|
160
|
-
│ in-proc │ child-process │
|
|
161
|
-
│ (fast) │ (isolated, fallback) │
|
|
162
|
-
└──────────┴───────────────────────┘
|
|
163
|
-
```
|
|
164
|
-
|
|
165
|
-
**Change:** `runtime-resolver.ts` → `"auto"` prefers live-session
|
|
166
|
-
**Keep:** All child-process code (as fallback)
|
|
167
|
-
**Keep:** All tests
|
|
168
|
-
**Add:** Config `"riskyIsolation": true` so the executor role auto-uses child-process
|
|
169
|
-
|
|
170
|
-
**Pros:** Best of both worlds, zero breaking changes
|
|
171
|
-
**Cons:** Still maintaining 2 code paths
|
|
172
|
-
|
|
173
|
-
---
|
|
174
|
-
|
|
175
|
-
## 4. Recommendation: Direction B
|
|
176
|
-
|
|
177
|
-
**Do not drop child-process entirely** — too risky for production. Instead:
|
|
178
|
-
|
|
179
|
-
### Step 1: Change the default runtime (fast, low risk)
|
|
180
|
-
|
|
181
|
-
```typescript
|
|
182
|
-
// runtime-resolver.ts
|
|
183
|
-
// Before: "auto" → always child-process
|
|
184
|
-
// After: "auto" → try live-session, fall back to child-process
|
|
185
|
-
|
|
186
|
-
export async function resolveCrewRuntime(config, env) {
|
|
187
|
-
const requestedMode = config.runtime?.mode ?? "auto";
|
|
188
|
-
if (requestedMode === "auto") {
|
|
189
|
-
const live = await isLiveSessionRuntimeAvailable(1500, env);
|
|
190
|
-
if (live.available) return liveCaps(requestedMode);
|
|
191
|
-
return { ...childCaps(requestedMode), fallback: "child-process", reason: live.reason };
|
|
192
|
-
}
|
|
193
|
-
// Explicit modes still work
|
|
194
|
-
if (requestedMode === "child-process") return childCaps(requestedMode);
|
|
195
|
-
if (requestedMode === "live-session") { /* ... */ }
|
|
196
|
-
// ...
|
|
197
|
-
}
|
|
198
|
-
```
|
|
199
|
-
|
|
200
|
-
### Step 2: Add a per-role isolation policy
|
|
201
|
-
|
|
202
|
-
```json
|
|
203
|
-
// crew-config.json
|
|
204
|
-
{
|
|
205
|
-
"runtime": {
|
|
206
|
-
"mode": "auto",
|
|
207
|
-
"isolationPolicy": {
|
|
208
|
-
"executor": "child-process", // risky code changes → isolated
|
|
209
|
-
"test-engineer": "child-process", // test runs → isolated
|
|
210
|
-
"default": "in-process" // everything else → fast
|
|
211
|
-
}
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
```
|
|
215
|
-
|
|
216
|
-
### Step 3: Observability for in-process errors
|
|
217
|
-
|
|
218
|
-
```typescript
|
|
219
|
-
// Wrap session.prompt() with a global error handler
|
|
220
|
-
process.on('unhandledRejection', (err) => {
|
|
221
|
-
logInternalError('live-session.unhandled', err);
|
|
222
|
-
// Don't crash — attempt recovery
|
|
223
|
-
});
|
|
224
|
-
```
|
|
225
|
-
|
|
226
|
-
### Expected benefits of Direction B
|
|
227
|
-
|
|
228
|
-
| | Current | After Step 1 | After Step 2 |
|
|
229
|
-
|---|---|---|---|
|
|
230
|
-
| **Default runtime** | child-process | live-session (auto) | live-session + per-role |
|
|
231
|
-
| **Memory (4 workers)** | ~910 MB | ~370 MB | ~450 MB (mixed) |
|
|
232
|
-
| **Startup** | 2-4s/worker | 200-500ms/worker | Mixed |
|
|
233
|
-
| **Crash isolation** | ✅ all | ✅ fallback | ✅ risky roles |
|
|
234
|
-
| **Steering** | ❌ | ✅ | ✅ |
|
|
235
|
-
| **Breaking changes** | — | None | None |
|
|
236
|
-
| **Code deleted** | — | 0 | 0 (keep fallback) |
|
|
237
|
-
| **Tests to change** | — | 0 | 0 |
|
|
238
|
-
|
|
239
|
-
---
|
|
240
|
-
|
|
241
|
-
## 5. Conclusion
|
|
242
|
-
|
|
243
|
-
**Do not move 100% to in-process.** Reasons:
|
|
244
|
-
|
|
245
|
-
1. **Crash isolation is too important** for executor/test-engineer roles — these agents run code, write files, and can infinite-loop
|
|
246
|
-
2. **Background runs need a detached process** — impossible in-process
|
|
247
|
-
3. **37+ test files need rewriting** — high migration cost
|
|
248
|
-
4. **Breaking change** for users currently using `mode: "child-process"`
|
|
249
|
-
|
|
250
|
-
**Instead: Change the default to live-session + keep child-process as a fallback/opt-in.** This is precisely the design already built into `resolveCrewRuntime()` — just flip the default in `"auto"` mode. Zero code deleted, zero breaking changes, and users choose isolation when they need it.
|
package/docs/skills/REFERENCE.md
DELETED
|
@@ -1,138 +0,0 @@
|
|
|
1
|
-
# pi-crew Skills Reference
|
|
2
|
-
|
|
3
|
-
## Skill Chains
|
|
4
|
-
|
|
5
|
-
### Bug Investigation
|
|
6
|
-
|
|
7
|
-
```
|
|
8
|
-
systematic-debugging (4 phases with refuse gate)
|
|
9
|
-
↓
|
|
10
|
-
verification-before-done (evidence before claim)
|
|
11
|
-
↓
|
|
12
|
-
post-mortem (RCA documentation)
|
|
13
|
-
```
|
|
14
|
-
|
|
15
|
-
### Multi-phase Work
|
|
16
|
-
|
|
17
|
-
```
|
|
18
|
-
orchestration (phase coordination)
|
|
19
|
-
↓
|
|
20
|
-
delegation-patterns (task splitting)
|
|
21
|
-
↓
|
|
22
|
-
verification-before-done (after each phase)
|
|
23
|
-
```
|
|
24
|
-
|
|
25
|
-
### Code Review (Quick)
|
|
26
|
-
|
|
27
|
-
```
|
|
28
|
-
scrutinize (outsider perspective + simpler alternative)
|
|
29
|
-
```
|
|
30
|
-
|
|
31
|
-
### Code Review (Deep)
|
|
32
|
-
|
|
33
|
-
```
|
|
34
|
-
scrutinize (outsider perspective)
|
|
35
|
-
↓
|
|
36
|
-
multi-perspective-review (8-pass deep review)
|
|
37
|
-
↓
|
|
38
|
-
secure-agent-orchestration-review (security focus)
|
|
39
|
-
```
|
|
40
|
-
|
|
41
|
-
### Multi-Round Audit (5-20 rounds)
|
|
42
|
-
|
|
43
|
-
```
|
|
44
|
-
iterative-audit (round planning, 7 patterns, diminishing-returns)
|
|
45
|
-
↓
|
|
46
|
-
multi-perspective-review (per round, optional)
|
|
47
|
-
↓
|
|
48
|
-
verification-before-done (per round)
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
---
|
|
52
|
-
|
|
53
|
-
## When to Invoke
|
|
54
|
-
|
|
55
|
-
| Situation | Skill |
|
|
56
|
-
|-----------|-------|
|
|
57
|
-
| Bug / test failure / crash | `systematic-debugging` |
|
|
58
|
-
| Before claiming done | `verification-before-done` |
|
|
59
|
-
| Code review (quick) | `scrutinize` |
|
|
60
|
-
| Code review (deep) | `multi-perspective-review` |
|
|
61
|
-
| Multi-round audit (5-20 rounds) | `iterative-audit` |
|
|
62
|
-
| Task delegation | `delegation-patterns` |
|
|
63
|
-
| Complex multi-phase work | `orchestration` |
|
|
64
|
-
| After bug is fixed | `post-mortem` |
|
|
65
|
-
| Workspace safety | `workspace-isolation` |
|
|
66
|
-
| Bash safety | `safe-bash` |
|
|
67
|
-
|
|
68
|
-
---
|
|
69
|
-
|
|
70
|
-
## Skills Inventory
|
|
71
|
-
|
|
72
|
-
### Core Discipline
|
|
73
|
-
|
|
74
|
-
| Skill | Description |
|
|
75
|
-
|-------|-------------|
|
|
76
|
-
| `systematic-debugging` | Four-phase debugging with refuse gates, falsify-first discipline |
|
|
77
|
-
| `verification-before-done` | Evidence before claims |
|
|
78
|
-
| `orchestration` | Multi-phase coordination, 8 rules including "respawn not absorb" |
|
|
79
|
-
|
|
80
|
-
### Documentation
|
|
81
|
-
|
|
82
|
-
| Skill | Description |
|
|
83
|
-
|-------|-------------|
|
|
84
|
-
| `post-mortem` | Engineering RCA record |
|
|
85
|
-
|
|
86
|
-
### Delegation
|
|
87
|
-
|
|
88
|
-
| Skill | Description |
|
|
89
|
-
|-------|-------------|
|
|
90
|
-
| `delegation-patterns` | Task splitting patterns |
|
|
91
|
-
| `requirements-to-task-packet` | Task packet creation |
|
|
92
|
-
|
|
93
|
-
### Runtime/Safety
|
|
94
|
-
|
|
95
|
-
| Skill | Description |
|
|
96
|
-
|-------|-------------|
|
|
97
|
-
| `workspace-isolation` | Security boundary enforcement |
|
|
98
|
-
| `worktree-isolation` | Git worktree safety |
|
|
99
|
-
| `safe-bash` | Bash command safety |
|
|
100
|
-
| `state-mutation-locking` | State mutation protection |
|
|
101
|
-
|
|
102
|
-
### Observability
|
|
103
|
-
|
|
104
|
-
| Skill | Description |
|
|
105
|
-
|-------|-------------|
|
|
106
|
-
| `event-log-tracing` | JSONL event log analysis |
|
|
107
|
-
| `runtime-state-reader` | Runtime state inspection |
|
|
108
|
-
| `observability-reliability` | Reliability patterns |
|
|
109
|
-
|
|
110
|
-
---
|
|
111
|
-
|
|
112
|
-
## Anti-patterns
|
|
113
|
-
|
|
114
|
-
| Anti-pattern | Skill | Rule |
|
|
115
|
-
|--------------|-------|------|
|
|
116
|
-
| Proposing fix before reproducing | `systematic-debugging` | Refuse Gate |
|
|
117
|
-
| Running proof before disproof | `systematic-debugging` | Phase 3 |
|
|
118
|
-
| Claiming "tests pass" without fresh run | `verification-before-done` | Gate Function |
|
|
119
|
-
| Reviewing diff-local without tracing path | `scrutinize` | Trace step |
|
|
120
|
-
| Skipping simpler-alternative pass | `multi-perspective-review` | Pre-review |
|
|
121
|
-
| Editing files yourself as orchestrator | `orchestration` | Rule 1 |
|
|
122
|
-
| Dispatching serially when parallel possible | `orchestration` | Rule 3 |
|
|
123
|
-
| Committing a red tree | `orchestration` | Rule 6 |
|
|
124
|
-
| Absorbing subagent's broken work | `orchestration` | Rule 7 |
|
|
125
|
-
| Rubber-stamp review | `multi-perspective-review` | Rules |
|
|
126
|
-
|
|
127
|
-
---
|
|
128
|
-
|
|
129
|
-
## Key Enforcement Patterns (from 9arm)
|
|
130
|
-
|
|
131
|
-
| Pattern | Implemented In |
|
|
132
|
-
|---------|---------------|
|
|
133
|
-
| **Refuse Gate** | `systematic-debugging` |
|
|
134
|
-
| **Recite Ritual** | `systematic-debugging` (Invocation) |
|
|
135
|
-
| **Falsify Before Proof** | `systematic-debugging` (Phase 3) |
|
|
136
|
-
| **Simpler Alternative Pass** | `scrutinize`, `multi-perspective-review` |
|
|
137
|
-
| **Required Inputs Gate** | `post-mortem` |
|
|
138
|
-
| **Respawn Not Absorb** | `orchestration` (Rule 7) |
|
package/docs/stories/README.md
DELETED
|
@@ -1,32 +0,0 @@
|
|
|
1
|
-
# Stories
|
|
2
|
-
|
|
3
|
-
Story-sized work packets for pi-crew development.
|
|
4
|
-
|
|
5
|
-
## Status Values
|
|
6
|
-
|
|
7
|
-
| Status | Meaning |
|
|
8
|
-
|--------|---------|
|
|
9
|
-
| planned | Accepted, not started |
|
|
10
|
-
| in_progress | Actively being worked |
|
|
11
|
-
| completed | Done with evidence |
|
|
12
|
-
| blocked | Waiting on external input |
|
|
13
|
-
|
|
14
|
-
## Active Stories
|
|
15
|
-
|
|
16
|
-
| ID | Title | Lane | Status |
|
|
17
|
-
|----|-------|------|--------|
|
|
18
|
-
| US-DEPS-major-upgrade | Nâng cấp deps major (diff 5→9, TypeScript 7) | normal | planned |
|
|
19
|
-
|
|
20
|
-
## Completed Stories (from review rounds)
|
|
21
|
-
|
|
22
|
-
| ID | Title | Lane | Result |
|
|
23
|
-
|----|-------|------|--------|
|
|
24
|
-
| RR-001 | Depth guard for nested live-session | normal | commit 2640d5e |
|
|
25
|
-
| RR-002 | Windows EBUSY retry | normal | commit ceb8c60 |
|
|
26
|
-
| RR-003 | Harden live-session resource management | normal | commit c7bd455 |
|
|
27
|
-
| RR-004 | Stale task/agent repair | normal | commit d6d466d |
|
|
28
|
-
| RR-005 | Async runner child-process enforcement | high-risk | commit 2486051 |
|
|
29
|
-
| RR-006 | Live-session resource leak fix | normal | commit 7a25644 |
|
|
30
|
-
| RR-007 | Double cleanupTempDir guard | tiny | commit 5f47e92 |
|
|
31
|
-
| RR-008 | Review round 8 (8 issues) | normal | commit 4e75ba8 |
|
|
32
|
-
| RR-009 | Review round 9 (5 issues) | normal | commit f3d29cc |
|
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
# US-DEPS-major-upgrade — Nâng cấp dependencies major
|
|
2
|
-
|
|
3
|
-
- **Lane:** normal (Dependency) — có thể tách thành 2 patch độc lập
|
|
4
|
-
- **Status:** planned
|
|
5
|
-
- **Nguồn:** `docs/REVIEW-FINDINGS-2026-07.md` (F6)
|
|
6
|
-
- **Ngày tạo:** 2026-07-09
|
|
7
|
-
|
|
8
|
-
## Overview
|
|
9
|
-
|
|
10
|
-
`npm outdated` (Node v22.14.0, v0.9.28) cho thấy 2 gói lệch **major**:
|
|
11
|
-
|
|
12
|
-
| Gói | Current | Latest | Rủi ro |
|
|
13
|
-
|-----|---------|--------|--------|
|
|
14
|
-
| `diff` | 5.2.2 | 9.0.0 | API/ESM breaking |
|
|
15
|
-
| `typescript` | 5.9.3 | 7.0.2 | compiler mới (native) |
|
|
16
|
-
|
|
17
|
-
Cả hai KHÔNG gộp chung; mỗi cái là một patch riêng có validation độc lập.
|
|
18
|
-
|
|
19
|
-
## Phần A — `diff` 5 → 9
|
|
20
|
-
|
|
21
|
-
### Design
|
|
22
|
-
- `diff` v6+ chuyển sang ESM-first và tinh chỉnh chữ ký hàm (`structuredPatch`, `diffLines`, `applyPatch`...). Cần rà soát mọi import.
|
|
23
|
-
- Điểm chạm chính: `src/utils/conflict-detect.ts` (và bất kỳ nơi nào import `diff`).
|
|
24
|
-
|
|
25
|
-
### Exec plan
|
|
26
|
-
1. `git grep -n "from \"diff\"" src test` để liệt kê toàn bộ callsite.
|
|
27
|
-
2. Đọc CHANGELOG của `diff` v6/v7/v8/v9, lập bảng breaking → mapping.
|
|
28
|
-
3. `npm i diff@9`, sửa callsite theo API mới.
|
|
29
|
-
4. Chạy `npm run typecheck` + test liên quan (`conflict-detect.test.ts`, `delta-conflict.test.ts`).
|
|
30
|
-
|
|
31
|
-
### Validation
|
|
32
|
-
- `npm run typecheck` → PASS
|
|
33
|
-
- `node scripts/test-runner.mjs ... test/unit/conflict-detect.test.ts test/unit/delta-conflict.test.ts` → pass
|
|
34
|
-
- `npm run test:unit` full → không hồi quy
|
|
35
|
-
|
|
36
|
-
## Phần B — `typescript` 5.9 → 7.0
|
|
37
|
-
|
|
38
|
-
### Design
|
|
39
|
-
- TS 7.0 là compiler native (tsgo). Cần đánh giá:
|
|
40
|
-
- Tương thích flags trong `tsconfig.json` (`allowImportingTsExtensions`, `NodeNext`, `strict`).
|
|
41
|
-
- Tương thích với `tsx`/strip-types runtime path (index.ts import qua `--experimental-strip-types`).
|
|
42
|
-
- Khả năng phát sinh lỗi type mới do compiler chặt hơn.
|
|
43
|
-
- Rủi ro cao hơn A; cân nhắc chờ hệ sinh thái ổn định (còn sớm giữa 2026).
|
|
44
|
-
|
|
45
|
-
### Exec plan
|
|
46
|
-
1. Thử trên nhánh riêng: `npm i -D typescript@7`.
|
|
47
|
-
2. `npm run typecheck` — thu thập toàn bộ lỗi mới, phân loại.
|
|
48
|
-
3. Nếu lỗi ít/định vị được → sửa; nếu diện rộng → hoãn, ghi decision.
|
|
49
|
-
4. Xác nhận `tsx` + strip-types vẫn chạy (`node --experimental-strip-types -e "await import('./index.ts')"`).
|
|
50
|
-
|
|
51
|
-
### Validation
|
|
52
|
-
- `npm run typecheck` → PASS
|
|
53
|
-
- `npm run test:unit` → không hồi quy
|
|
54
|
-
- Cold-start bench (`npm run bench`) → không xấu đi
|
|
55
|
-
|
|
56
|
-
## Rollback
|
|
57
|
-
- Mỗi phần là 1 commit độc lập; revert commit tương ứng nếu hồi quy.
|
|
58
|
-
- Giữ `package-lock.json` cũ để pin lại nhanh.
|
|
59
|
-
|
|
60
|
-
## Ghi chú quyết định
|
|
61
|
-
- Ưu tiên Phần A trước (rủi ro thấp hơn, phạm vi hẹp).
|
|
62
|
-
- Phần B nên có `docs/decisions/` entry trước khi merge (thay đổi toolchain cốt lõi).
|
package/docs/stories/backlog.md
DELETED
|
@@ -1,36 +0,0 @@
|
|
|
1
|
-
# Story Backlog
|
|
2
|
-
|
|
3
|
-
Candidate stories for future pi-crew development.
|
|
4
|
-
|
|
5
|
-
## Epic: Reliability
|
|
6
|
-
|
|
7
|
-
| ID | Title | Lane | Priority | Status |
|
|
8
|
-
|----|-------|------|----------|--------|
|
|
9
|
-
| US-001 | Lock-free event log rotation | normal | P2 | planned |
|
|
10
|
-
| US-002 | Structured run-level lock cleanup | normal | P2 | planned |
|
|
11
|
-
| US-003 | Dead letter queue for permanently failed tasks | normal | P3 | planned |
|
|
12
|
-
|
|
13
|
-
## Epic: Performance
|
|
14
|
-
|
|
15
|
-
| ID | Title | Lane | Priority | Status |
|
|
16
|
-
|----|-------|------|----------|--------|
|
|
17
|
-
| US-010 | Replace sleepSync busy-wait with proper async | normal | P3 | planned |
|
|
18
|
-
| US-011 | Stream-based event log for large runs | normal | P3 | planned |
|
|
19
|
-
| US-012 | Cache available models across runs | tiny | P3 | planned |
|
|
20
|
-
|
|
21
|
-
## Epic: DX (Developer Experience)
|
|
22
|
-
|
|
23
|
-
| ID | Title | Lane | Priority | Status |
|
|
24
|
-
|----|-------|------|----------|--------|
|
|
25
|
-
| US-020 | Interactive run dashboard in TUI | normal | P2 | planned |
|
|
26
|
-
| US-021 | Run comparison (before/after) | normal | P3 | planned |
|
|
27
|
-
| US-022 | Export run report as markdown | tiny | P3 | planned |
|
|
28
|
-
|
|
29
|
-
## Epic: Integration
|
|
30
|
-
|
|
31
|
-
| ID | Title | Lane | Priority | Status |
|
|
32
|
-
|----|-------|------|----------|--------|
|
|
33
|
-
| US-030 | Webhook notifications on run completion | normal | P3 | planned |
|
|
34
|
-
| US-031 | GitHub Actions integration (report results as PR comment) | normal | P3 | planned |
|
|
35
|
-
|
|
36
|
-
Create story packets from `docs/templates/story.md` when work is selected.
|