pi-crew 0.9.16 → 0.9.18
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 +130 -0
- package/README.md +19 -0
- package/dist/build-meta.json +21784 -0
- package/dist/index.mjs +83169 -0
- package/dist/index.mjs.map +7 -0
- package/docs/A +358 -0
- package/docs/M-A +357 -0
- package/docs/REVIEW-FINDINGS-2026-06 +357 -0
- package/docs/Y +357 -0
- package/docs/a +357 -0
- package/docs/aA +358 -0
- package/docs/archive/README.md +91 -0
- package/docs/migration/atomic-write-v2-migration.md +297 -0
- package/docs/patterns/command-agent-skill.md +1 -1
- package/docs/perf/performance-review-2026-07.md +287 -0
- package/docs/skills/REFERENCE.md +0 -17
- package/docs//303/242mmaAAA/303/242 +357 -0
- package/index.bundle.ts +25 -0
- package/index.ts +95 -4
- package/package.json +15 -4
- package/skills/iterative-audit/SKILL.md +0 -1
- package/skills/widget-rendering/SKILL.md +17 -0
- package/src/adapters/claude-adapter.ts +1 -3
- package/src/adapters/export-util.ts +16 -16
- package/src/adapters/index.ts +5 -5
- package/src/agents/agent-config.ts +20 -14
- package/src/agents/agent-serializer.ts +1 -1
- package/src/agents/discover-agents.ts +83 -39
- package/src/benchmark/benchmark-runner.ts +51 -51
- package/src/benchmark/feedback-loop.ts +1 -1
- package/src/config/config.ts +303 -591
- package/src/config/defaults.ts +28 -2
- package/src/config/drift-detector.ts +11 -14
- package/src/config/markers.ts +201 -203
- package/src/config/resilient-parser.ts +14 -6
- package/src/config/role-tools.ts +3 -3
- package/src/config/suggestions.ts +5 -12
- package/src/config/types.ts +9 -25
- package/src/errors.ts +151 -157
- package/src/extension/action-suggestions.ts +54 -9
- package/src/extension/async-notifier.ts +43 -13
- package/src/extension/autonomous-policy.ts +77 -37
- package/src/extension/command-completions.ts +9 -8
- package/src/extension/context-status-injection.ts +14 -12
- package/src/extension/crew-autocomplete.ts +8 -16
- package/src/extension/crew-cleanup.ts +2 -1
- package/src/extension/crew-shortcuts.ts +9 -6
- package/src/extension/cross-extension-rpc.ts +136 -42
- package/src/extension/help.ts +1 -1
- package/src/extension/import-index.ts +10 -5
- package/src/extension/knowledge-injection.ts +88 -15
- package/src/extension/management.ts +89 -349
- package/src/extension/message-renderers.ts +3 -4
- package/src/extension/notification-router.ts +22 -5
- package/src/extension/notification-sink.ts +6 -3
- package/src/extension/pi-api.ts +17 -8
- package/src/extension/plan-orchestrate.ts +8 -27
- package/src/extension/project-init.ts +21 -6
- package/src/extension/register.ts +329 -975
- package/src/extension/registration/artifact-cleanup.ts +9 -4
- package/src/extension/registration/command-utils.ts +5 -1
- package/src/extension/registration/commands.ts +806 -314
- package/src/extension/registration/compaction-guard.ts +15 -15
- package/src/extension/registration/lifecycle.ts +259 -0
- package/src/extension/registration/observability.ts +293 -0
- package/src/extension/registration/subagent-helpers.ts +29 -7
- package/src/extension/registration/subagent-tools.ts +253 -44
- package/src/extension/registration/team-tool.ts +19 -84
- package/src/extension/registration/ui.ts +168 -0
- package/src/extension/registration/viewers.ts +64 -24
- package/src/extension/result-watcher.ts +18 -7
- package/src/extension/run-bundle-schema.ts +21 -6
- package/src/extension/run-export.ts +15 -6
- package/src/extension/run-import.ts +64 -29
- package/src/extension/run-index.ts +28 -9
- package/src/extension/run-maintenance.ts +32 -12
- package/src/extension/session-summary.ts +1 -1
- package/src/extension/team-manager-command.ts +64 -7
- package/src/extension/team-onboard.ts +149 -150
- package/src/extension/team-recommendation.ts +121 -21
- package/src/extension/team-tool/anchor.ts +31 -64
- package/src/extension/team-tool/api.ts +929 -141
- package/src/extension/team-tool/auto-summarize.ts +14 -26
- package/src/extension/team-tool/cache-control.ts +1 -5
- package/src/extension/team-tool/cancel.ts +138 -38
- package/src/extension/team-tool/chain-dispatch.ts +5 -13
- package/src/extension/team-tool/chain-executor.ts +29 -51
- package/src/extension/team-tool/config-patch.ts +1 -1
- package/src/extension/team-tool/context.ts +40 -20
- package/src/extension/team-tool/destructive-gate.ts +10 -5
- package/src/extension/team-tool/doctor.ts +170 -51
- package/src/extension/team-tool/explain.ts +228 -214
- package/src/extension/team-tool/failure-patterns.ts +3 -9
- package/src/extension/team-tool/goal-wrap.ts +71 -29
- package/src/extension/team-tool/goal.ts +185 -35
- package/src/extension/team-tool/handle-schedule.ts +34 -15
- package/src/extension/team-tool/handle-settings.ts +94 -56
- package/src/extension/team-tool/health-monitor.ts +27 -108
- package/src/extension/team-tool/inspect.ts +42 -9
- package/src/extension/team-tool/intent-policy.ts +4 -1
- package/src/extension/team-tool/lifecycle-actions.ts +244 -48
- package/src/extension/team-tool/orchestrate.ts +7 -18
- package/src/extension/team-tool/parallel-dispatch.ts +51 -29
- package/src/extension/team-tool/plan.ts +29 -5
- package/src/extension/team-tool/respond.ts +49 -16
- package/src/extension/team-tool/run-not-found.ts +3 -8
- package/src/extension/team-tool/run.ts +80 -317
- package/src/extension/team-tool/status.ts +135 -43
- package/src/extension/team-tool/workflow-manage.ts +92 -25
- package/src/extension/team-tool-types.ts +8 -1
- package/src/extension/team-tool.ts +142 -551
- package/src/extension/validate-resources.ts +39 -8
- package/src/hooks/registry.ts +66 -17
- package/src/hooks/types.ts +1 -1
- package/src/i18n.ts +25 -11
- package/src/observability/correlation.ts +17 -3
- package/src/observability/event-bus.ts +51 -56
- package/src/observability/event-to-metric.ts +117 -15
- package/src/observability/exporters/otlp-exporter.ts +56 -17
- package/src/observability/exporters/prometheus-exporter.ts +1 -1
- package/src/observability/metric-registry.ts +16 -4
- package/src/observability/metric-retention.ts +8 -2
- package/src/observability/metric-sink.ts +11 -3
- package/src/observability/metrics-primitives.ts +42 -9
- package/src/plugins/plugin-define.ts +2 -2
- package/src/plugins/plugin-registry.ts +25 -25
- package/src/plugins/plugins/index.ts +1 -1
- package/src/plugins/plugins/nextjs.ts +16 -16
- package/src/plugins/plugins/vite.ts +7 -11
- package/src/plugins/plugins/vitest.ts +6 -11
- package/src/runtime/adaptive-plan.ts +225 -40
- package/src/runtime/agent-control.ts +58 -15
- package/src/runtime/agent-memory.ts +15 -9
- package/src/runtime/agent-observability.ts +10 -2
- package/src/runtime/anchor-manager.ts +27 -25
- package/src/runtime/async-marker.ts +7 -1
- package/src/runtime/async-runner.ts +39 -24
- package/src/runtime/auto-summarize.ts +7 -13
- package/src/runtime/background-runner.ts +189 -251
- package/src/runtime/batch-barrier.ts +18 -16
- package/src/runtime/cancellation-token.ts +16 -6
- package/src/runtime/cancellation.ts +46 -8
- package/src/runtime/capability-inventory.ts +6 -4
- package/src/runtime/chain-parser.ts +44 -11
- package/src/runtime/chain-runner.ts +63 -69
- package/src/runtime/checkpoint.ts +12 -56
- package/src/runtime/child-pi.ts +344 -79
- package/src/runtime/coalesce-tasks.ts +268 -0
- package/src/runtime/code-summary.ts +71 -26
- package/src/runtime/compact-stages/index.ts +15 -5
- package/src/runtime/compact-stages/tail-capture-stage.ts +7 -2
- package/src/runtime/compact-stages/truncation-stage.ts +4 -1
- package/src/runtime/compaction-summary.ts +17 -10
- package/src/runtime/completion-guard.ts +33 -16
- package/src/runtime/crash-classification.ts +28 -7
- package/src/runtime/crash-recovery.ts +177 -37
- package/src/runtime/crew-agent-records.ts +145 -47
- package/src/runtime/crew-hooks.ts +9 -24
- package/src/runtime/cross-extension-rpc.ts +25 -23
- package/src/runtime/custom-tools/irc-tool.ts +43 -15
- package/src/runtime/custom-tools/submit-result-tool.ts +16 -5
- package/src/runtime/delivery-coordinator.ts +34 -7
- package/src/runtime/delta-conflict.ts +9 -21
- package/src/runtime/deterministic-ast.ts +1 -1
- package/src/runtime/diagnostic-export.ts +53 -20
- package/src/runtime/direct-run.ts +12 -2
- package/src/runtime/dwf-state-store.ts +1 -1
- package/src/runtime/dynamic-workflow-context.ts +187 -59
- package/src/runtime/dynamic-workflow-runner.ts +42 -20
- package/src/runtime/effectiveness.ts +16 -8
- package/src/runtime/errors/crew-errors.ts +7 -11
- package/src/runtime/event-stream-bridge.ts +9 -3
- package/src/runtime/foreground-control.ts +54 -14
- package/src/runtime/foreground-watchdog.ts +9 -6
- package/src/runtime/goal-achievement.ts +27 -10
- package/src/runtime/goal-evaluator.ts +54 -19
- package/src/runtime/goal-loop-runner.ts +280 -99
- package/src/runtime/goal-state-store.ts +27 -17
- package/src/runtime/green-contract.ts +11 -2
- package/src/runtime/group-join.ts +64 -31
- package/src/runtime/handoff-manager.ts +37 -42
- package/src/runtime/heartbeat-gradient.ts +10 -2
- package/src/runtime/heartbeat-watcher.ts +32 -6
- package/src/runtime/hidden-handoff.ts +13 -31
- package/src/runtime/important-line-classifier.ts +12 -2
- package/src/runtime/iteration-hooks.ts +25 -15
- package/src/runtime/live-agent-control.ts +55 -7
- package/src/runtime/live-agent-manager.ts +130 -27
- package/src/runtime/live-control-realtime.ts +23 -3
- package/src/runtime/live-irc.ts +4 -1
- package/src/runtime/live-session-health.ts +12 -4
- package/src/runtime/live-session-runtime.ts +379 -117
- package/src/runtime/manifest-cache.ts +28 -12
- package/src/runtime/mcp-proxy.ts +10 -18
- package/src/runtime/metric-parser.ts +1 -5
- package/src/runtime/model-fallback.ts +55 -18
- package/src/runtime/model-resolver.ts +2 -6
- package/src/runtime/model-scope.ts +19 -3
- package/src/runtime/notebook-helpers.ts +60 -62
- package/src/runtime/orphan-worker-registry.ts +37 -26
- package/src/runtime/output-validator.ts +18 -3
- package/src/runtime/overflow-recovery.ts +5 -4
- package/src/runtime/parallel-research.ts +29 -5
- package/src/runtime/parallel-utils.ts +9 -11
- package/src/runtime/path-overlap.ts +150 -0
- package/src/runtime/peer-dep.ts +12 -17
- package/src/runtime/per-write-validator.ts +1 -3
- package/src/runtime/phase-tracker.ts +342 -330
- package/src/runtime/pi-args.ts +26 -8
- package/src/runtime/pi-json-output.ts +1 -1
- package/src/runtime/pi-spawn.ts +30 -19
- package/src/runtime/pipeline-runner.ts +56 -55
- package/src/runtime/plan-templates.ts +5 -6
- package/src/runtime/policy-engine.ts +43 -7
- package/src/runtime/post-checks.ts +12 -4
- package/src/runtime/post-exit-stdio-guard.ts +2 -2
- package/src/runtime/process-lifecycle.ts +20 -10
- package/src/runtime/process-status.ts +16 -5
- package/src/runtime/progress-event-coalescer.ts +2 -1
- package/src/runtime/progress-tracker.ts +103 -103
- package/src/runtime/prose-compressor.ts +9 -11
- package/src/runtime/recovery-recipes.ts +118 -24
- package/src/runtime/replace.ts +25 -10
- package/src/runtime/resilient-edit.ts +10 -25
- package/src/runtime/result-extractor.ts +2 -6
- package/src/runtime/retry-executor.ts +20 -4
- package/src/runtime/retry-runner.ts +27 -51
- package/src/runtime/role-permission.ts +6 -1
- package/src/runtime/run-coalesced-task-group.ts +256 -0
- package/src/runtime/run-drift.ts +14 -15
- package/src/runtime/run-tracker.ts +6 -28
- package/src/runtime/runtime-policy.ts +1 -6
- package/src/runtime/runtime-resolver.ts +80 -15
- package/src/runtime/scheduler.ts +47 -18
- package/src/runtime/semaphore.ts +5 -7
- package/src/runtime/sensitive-paths.ts +2 -1
- package/src/runtime/session-usage.ts +1 -1
- package/src/runtime/settings-store.ts +16 -12
- package/src/runtime/sidechain-output.ts +6 -2
- package/src/runtime/single-agent-compose.ts +1 -4
- package/src/runtime/skill-effectiveness.ts +29 -97
- package/src/runtime/skill-instructions.ts +40 -83
- package/src/runtime/stale-reconciler.ts +73 -197
- package/src/runtime/stream-preview.ts +1 -1
- package/src/runtime/streaming-output.ts +1 -1
- package/src/runtime/subagent-manager.ts +44 -169
- package/src/runtime/subprocess-tool-registry.ts +4 -1
- package/src/runtime/supervisor-contact.ts +10 -5
- package/src/runtime/task-display.ts +19 -5
- package/src/runtime/task-graph-scheduler.ts +95 -21
- package/src/runtime/task-graph.ts +5 -11
- package/src/runtime/task-health.ts +54 -47
- package/src/runtime/task-id.ts +12 -19
- package/src/runtime/task-output-context.ts +265 -81
- package/src/runtime/task-packet.ts +12 -20
- package/src/runtime/task-quality.ts +6 -14
- package/src/runtime/task-runner/context-retrieval.ts +4 -13
- package/src/runtime/task-runner/live-executor.ts +114 -36
- package/src/runtime/task-runner/output-splitter.ts +152 -0
- package/src/runtime/task-runner/progress.ts +50 -12
- package/src/runtime/task-runner/prompt-builder.ts +31 -7
- package/src/runtime/task-runner/prompt-pipeline.ts +31 -7
- package/src/runtime/task-runner/result-utils.ts +3 -1
- package/src/runtime/task-runner/retrieval-orchestrator.ts +310 -0
- package/src/runtime/task-runner/run-projection.ts +27 -8
- package/src/runtime/task-runner/state-helpers.ts +50 -14
- package/src/runtime/task-runner/tail-read.ts +2 -6
- package/src/runtime/task-runner.ts +180 -326
- package/src/runtime/team-runner-artifacts.ts +13 -0
- package/src/runtime/team-runner.ts +456 -974
- package/src/runtime/tool-output-pruner.ts +6 -9
- package/src/runtime/tool-progress.ts +11 -21
- package/src/runtime/verification-gates.ts +33 -24
- package/src/runtime/verification-integrity.ts +2 -7
- package/src/runtime/verification-worktree.ts +62 -12
- package/src/runtime/worker-heartbeat.ts +5 -1
- package/src/runtime/worker-startup.ts +29 -5
- package/src/runtime/workflow-state.ts +17 -9
- package/src/runtime/workspace-lock.ts +30 -35
- package/src/runtime/workspace-tree.ts +20 -32
- package/src/runtime/yield-handler.ts +43 -9
- package/src/runtime/zombie-scanner.ts +5 -4
- package/src/schema/config-schema.ts +266 -172
- package/src/schema/team-tool-schema.ts +29 -74
- package/src/schema/validation-types.ts +25 -17
- package/src/skills/discover-skills.ts +35 -10
- package/src/skills/skill-templates.ts +109 -27
- package/src/skills/validate.ts +26 -8
- package/src/state/active-run-registry.ts +87 -28
- package/src/state/artifact-store.ts +9 -5
- package/src/state/atomic-write-v2.ts +85 -63
- package/src/state/atomic-write.ts +106 -27
- package/src/state/blob-store.ts +47 -20
- package/src/state/contracts.ts +20 -5
- package/src/state/crew-init.ts +5 -22
- package/src/state/decision-ledger.ts +19 -73
- package/src/state/event-log-rotation.ts +41 -15
- package/src/state/event-log.ts +168 -53
- package/src/state/event-reconstructor.ts +11 -1
- package/src/state/gitignore-manager.ts +2 -8
- package/src/state/health-store.ts +57 -57
- package/src/state/hook-instinct-bridge.ts +1 -1
- package/src/state/hook-integrations.ts +1 -1
- package/src/state/instinct-store.ts +17 -5
- package/src/state/jsonl-writer.ts +1 -1
- package/src/state/locks.ts +23 -9
- package/src/state/mailbox.ts +151 -28
- package/src/state/observation-store.ts +20 -14
- package/src/state/run-cache.ts +142 -135
- package/src/state/run-graph.ts +6 -15
- package/src/state/run-metrics.ts +5 -18
- package/src/state/schedule.ts +15 -9
- package/src/state/state-store.ts +137 -47
- package/src/state/task-claims.ts +12 -2
- package/src/state/tiered-eval.ts +52 -43
- package/src/state/types-eval.ts +2 -2
- package/src/state/types.ts +24 -20
- package/src/state/usage.ts +20 -4
- package/src/state/worker-atomic-writer.ts +6 -3
- package/src/subagents/index.ts +2 -2
- package/src/teams/discover-teams.ts +21 -6
- package/src/tools/safe-bash-extension.ts +5 -6
- package/src/tools/safe-bash.ts +10 -11
- package/src/types/new-api-types.ts +6 -10
- package/src/ui/agent-management-overlay.ts +52 -40
- package/src/ui/card-colors.ts +13 -4
- package/src/ui/crew-footer.ts +8 -7
- package/src/ui/crew-select-list.ts +1 -1
- package/src/ui/dashboard-panes/agents-pane.ts +41 -25
- package/src/ui/dashboard-panes/cancellation-pane.ts +1 -1
- package/src/ui/dashboard-panes/capability-pane.ts +32 -15
- package/src/ui/dashboard-panes/health-pane.ts +2 -1
- package/src/ui/dashboard-panes/metrics-pane.ts +4 -1
- package/src/ui/dashboard-panes/progress-pane.ts +12 -9
- package/src/ui/heartbeat-aggregator.ts +15 -4
- package/src/ui/keybinding-map.ts +40 -7
- package/src/ui/live-conversation-overlay.ts +36 -20
- package/src/ui/live-duration.ts +1 -4
- package/src/ui/live-run-sidebar.ts +88 -25
- package/src/ui/loaders.ts +2 -8
- package/src/ui/mascot.ts +20 -36
- package/src/ui/overlays/agent-picker-overlay.ts +11 -3
- package/src/ui/overlays/confirm-overlay.ts +4 -2
- package/src/ui/overlays/help-overlay.ts +25 -14
- package/src/ui/overlays/mailbox-compose-overlay.ts +48 -11
- package/src/ui/overlays/mailbox-compose-preview.ts +20 -5
- package/src/ui/overlays/mailbox-detail-overlay.ts +27 -6
- package/src/ui/pi-ui-compat.ts +7 -7
- package/src/ui/powerbar-publisher.ts +120 -42
- package/src/ui/render-diff.ts +10 -3
- package/src/ui/render-scheduler.ts +12 -4
- package/src/ui/run-action-dispatcher.ts +81 -18
- package/src/ui/run-dashboard.ts +172 -76
- package/src/ui/run-event-bus.ts +59 -37
- package/src/ui/run-snapshot-cache.ts +276 -86
- package/src/ui/settings-overlay.ts +361 -74
- package/src/ui/status-colors.ts +12 -1
- package/src/ui/syntax-highlight.ts +1 -1
- package/src/ui/terminal-status.ts +1 -3
- package/src/ui/theme-adapter.ts +16 -14
- package/src/ui/theme-discovery.ts +13 -2
- package/src/ui/tool-progress-formatter.ts +7 -7
- package/src/ui/tool-render.ts +128 -56
- package/src/ui/tool-renderers/brief-mode.ts +45 -27
- package/src/ui/tool-renderers/index.ts +109 -43
- package/src/ui/transcript-cache.ts +32 -6
- package/src/ui/transcript-entries.ts +25 -23
- package/src/ui/transcript-viewer.ts +78 -29
- package/src/ui/widget/index.ts +99 -40
- package/src/ui/widget/widget-formatters.ts +13 -6
- package/src/ui/widget/widget-model.ts +19 -8
- package/src/ui/widget/widget-renderer.ts +23 -13
- package/src/ui/widget/widget-types.ts +1 -1
- package/src/utils/bm25-search.ts +199 -199
- package/src/utils/conflict-detect.ts +22 -21
- package/src/utils/env-filter.ts +14 -7
- package/src/utils/file-coalescer.ts +5 -1
- package/src/utils/fingerprint.ts +3 -6
- package/src/utils/frontmatter.ts +3 -1
- package/src/utils/fs-watch.ts +2 -6
- package/src/utils/gh-protocol.ts +119 -44
- package/src/utils/git.ts +13 -15
- package/src/utils/guards.ts +2 -5
- package/src/utils/ids.ts +9 -2
- package/src/utils/incremental-reader.ts +14 -3
- package/src/utils/internal-error.ts +2 -1
- package/src/utils/names.ts +12 -3
- package/src/utils/paths.ts +49 -5
- package/src/utils/project-detector.ts +2 -2
- package/src/utils/redaction.ts +29 -19
- package/src/utils/resolve-shell.ts +9 -7
- package/src/utils/run-watcher-registry.ts +19 -31
- package/src/utils/safe-paths.ts +46 -29
- package/src/utils/scan-cache.ts +9 -2
- package/src/utils/session-utils.ts +2 -4
- package/src/utils/sleep.ts +12 -5
- package/src/utils/sse-parser.ts +5 -17
- package/src/utils/visual.ts +52 -32
- package/src/workflows/discover-workflows.ts +41 -109
- package/src/workflows/intermediate-store.ts +5 -21
- package/src/workflows/preflight-validator.ts +6 -33
- package/src/workflows/topology-analyzer.ts +5 -21
- package/src/workflows/workflow-config.ts +7 -6
- package/src/worktree/branch-freshness.ts +66 -8
- package/src/worktree/cleanup.ts +130 -20
- package/src/worktree/worktree-manager.ts +212 -69
- package/skills/artifact-analysis-loop/SKILL.md +0 -303
- package/skills/detection-pipeline-design/SKILL.md +0 -286
- package/skills/hunting-investigation-loop/SKILL.md +0 -402
- package/skills/incident-playbook-construction/SKILL.md +0 -384
- package/skills/security-review/SKILL.md +0 -561
- package/skills/threat-hypothesis-framework/SKILL.md +0 -176
- package/skills/ui-render-performance/SKILL.md +0 -58
- /package/docs/{followup-review-round3-2026-05-12.md → archive/followup-review-round3-2026-05-12.md} +0 -0
- /package/docs/{followup-review-round4-2026-05-13.md → archive/followup-review-round4-2026-05-13.md} +0 -0
- /package/docs/{pi-crew-bugs.md → archive/pi-crew-bugs.md} +0 -0
- /package/docs/{pi-crew-test-final.md → archive/pi-crew-test-final.md} +0 -0
- /package/docs/{pi-crew-test-results.md → archive/pi-crew-test-results.md} +0 -0
- /package/docs/{pi-crew-test-round2.md → archive/pi-crew-test-round2.md} +0 -0
- /package/docs/{pi-crew-test-round4.md → archive/pi-crew-test-round4.md} +0 -0
- /package/docs/{pi-crew-test-round5.md → archive/pi-crew-test-round5.md} +0 -0
- /package/docs/{pi-crew-test-round6.md → archive/pi-crew-test-round6.md} +0 -0
- /package/docs/{pi-crew-v0.5.10-audit-fix-plan.md → archive/pi-crew-v0.5.10-audit-fix-plan.md} +0 -0
- /package/docs/{pi-crew-v0.5.11-audit-fix-plan.md → archive/pi-crew-v0.5.11-audit-fix-plan.md} +0 -0
- /package/docs/{pi-crew-v0.5.12-audit-fix-plan.md → archive/pi-crew-v0.5.12-audit-fix-plan.md} +0 -0
- /package/docs/{pi-crew-v0.5.13-audit-fix-plan.md → archive/pi-crew-v0.5.13-audit-fix-plan.md} +0 -0
- /package/docs/{pi-crew-v0.5.14-audit-fix-plan.md → archive/pi-crew-v0.5.14-audit-fix-plan.md} +0 -0
- /package/docs/{pi-crew-v0.5.16-audit-fix-plan.md → archive/pi-crew-v0.5.16-audit-fix-plan.md} +0 -0
- /package/docs/{pi-crew-v0.5.17-audit-fix-plan.md → archive/pi-crew-v0.5.17-audit-fix-plan.md} +0 -0
- /package/docs/{pi-crew-v0.5.5-audit-fix-plan.md → archive/pi-crew-v0.5.5-audit-fix-plan.md} +0 -0
- /package/docs/{pi-crew-v0.5.9-audit-fix-plan.md → archive/pi-crew-v0.5.9-audit-fix-plan.md} +0 -0
- /package/docs/{pi-mono-opportunities.md → archive/pi-mono-opportunities.md} +0 -0
- /package/docs/{pi-mono-review.md → archive/pi-mono-review.md} +0 -0
- /package/docs/{pi-subagent4-comparison.md → archive/pi-subagent4-comparison.md} +0 -0
- /package/docs/{pi-subagents3-deep-analysis.md → archive/pi-subagents3-deep-analysis.md} +0 -0
|
@@ -10,13 +10,13 @@ const MAX_HANDOFFS_PER_ANCHOR = 100;
|
|
|
10
10
|
|
|
11
11
|
/**
|
|
12
12
|
* AnchorManager - Creates shared summary points where multiple handoffs accumulate.
|
|
13
|
-
*
|
|
13
|
+
*
|
|
14
14
|
* Based on pi-boomerang's anchorMode pattern:
|
|
15
15
|
* - setAnchor() creates a shared summary point for a session
|
|
16
16
|
* - accumulateHandoff() adds handoffs to the anchor
|
|
17
17
|
* - clearAnchor() finalizes and returns accumulated summaries
|
|
18
18
|
* - getAnchorHandoff() retrieves accumulated summary without clearing
|
|
19
|
-
*
|
|
19
|
+
*
|
|
20
20
|
* @see docs/pi-boomerang-integration-plan.md
|
|
21
21
|
*/
|
|
22
22
|
|
|
@@ -89,7 +89,7 @@ export class AnchorManager {
|
|
|
89
89
|
/**
|
|
90
90
|
* Set an anchor point for a session.
|
|
91
91
|
* All subsequent handoffs will accumulate to this anchor.
|
|
92
|
-
*
|
|
92
|
+
*
|
|
93
93
|
* @param sessionId - The session ID to create anchor for
|
|
94
94
|
* @param context - Initial context for the anchor
|
|
95
95
|
* @returns The anchor ID
|
|
@@ -121,7 +121,7 @@ export class AnchorManager {
|
|
|
121
121
|
|
|
122
122
|
/**
|
|
123
123
|
* Get the current anchor for a session.
|
|
124
|
-
*
|
|
124
|
+
*
|
|
125
125
|
* @param sessionId - The session ID
|
|
126
126
|
* @returns The anchor if exists, null otherwise
|
|
127
127
|
*/
|
|
@@ -134,7 +134,7 @@ export class AnchorManager {
|
|
|
134
134
|
|
|
135
135
|
/**
|
|
136
136
|
* Get the anchor ID for a session.
|
|
137
|
-
*
|
|
137
|
+
*
|
|
138
138
|
* @param sessionId - The session ID
|
|
139
139
|
* @returns The anchor ID if exists, undefined otherwise
|
|
140
140
|
*/
|
|
@@ -145,7 +145,7 @@ export class AnchorManager {
|
|
|
145
145
|
/**
|
|
146
146
|
* Clear an anchor and return the accumulated handoff summary.
|
|
147
147
|
* This removes the anchor and returns merged handoffs.
|
|
148
|
-
*
|
|
148
|
+
*
|
|
149
149
|
* @param anchorId - The anchor ID to clear
|
|
150
150
|
* @returns The accumulated handoff summary
|
|
151
151
|
* @throws Error if anchor not found or no handoffs accumulated
|
|
@@ -163,14 +163,17 @@ export class AnchorManager {
|
|
|
163
163
|
this.sessionAnchors.delete(anchor.sessionId);
|
|
164
164
|
this.anchors.delete(anchorId);
|
|
165
165
|
|
|
166
|
-
this.options.eventEmitter?.emit("anchor:cleared", {
|
|
166
|
+
this.options.eventEmitter?.emit("anchor:cleared", {
|
|
167
|
+
anchorId,
|
|
168
|
+
accumulated,
|
|
169
|
+
});
|
|
167
170
|
|
|
168
171
|
return accumulated;
|
|
169
172
|
}
|
|
170
173
|
|
|
171
174
|
/**
|
|
172
175
|
* Clear anchor by session ID.
|
|
173
|
-
*
|
|
176
|
+
*
|
|
174
177
|
* @param sessionId - The session ID
|
|
175
178
|
* @returns The accumulated handoff summary
|
|
176
179
|
*/
|
|
@@ -183,7 +186,7 @@ export class AnchorManager {
|
|
|
183
186
|
/**
|
|
184
187
|
* Accumulate a handoff to an anchor.
|
|
185
188
|
* If anchor doesn't exist, creates an implicit anchor.
|
|
186
|
-
*
|
|
189
|
+
*
|
|
187
190
|
* @param anchorId - The anchor ID
|
|
188
191
|
* @param handoff - The handoff summary to accumulate
|
|
189
192
|
*/
|
|
@@ -224,7 +227,7 @@ export class AnchorManager {
|
|
|
224
227
|
|
|
225
228
|
/**
|
|
226
229
|
* Accumulate handoff by session ID.
|
|
227
|
-
*
|
|
230
|
+
*
|
|
228
231
|
* @param sessionId - The session ID
|
|
229
232
|
* @param handoff - The handoff summary to accumulate
|
|
230
233
|
*/
|
|
@@ -241,7 +244,7 @@ export class AnchorManager {
|
|
|
241
244
|
|
|
242
245
|
/**
|
|
243
246
|
* Get the accumulated handoff for an anchor without clearing it.
|
|
244
|
-
*
|
|
247
|
+
*
|
|
245
248
|
* @param anchorId - The anchor ID
|
|
246
249
|
* @returns The accumulated handoff summary, or null if anchor not found or no handoffs
|
|
247
250
|
*/
|
|
@@ -254,7 +257,7 @@ export class AnchorManager {
|
|
|
254
257
|
|
|
255
258
|
/**
|
|
256
259
|
* Get accumulated handoff by session ID.
|
|
257
|
-
*
|
|
260
|
+
*
|
|
258
261
|
* @param sessionId - The session ID
|
|
259
262
|
* @returns The accumulated handoff summary, or null if no anchor or handoffs
|
|
260
263
|
*/
|
|
@@ -266,7 +269,7 @@ export class AnchorManager {
|
|
|
266
269
|
|
|
267
270
|
/**
|
|
268
271
|
* Get status information for an anchor.
|
|
269
|
-
*
|
|
272
|
+
*
|
|
270
273
|
* @param anchorId - The anchor ID
|
|
271
274
|
* @returns Status object or null if anchor not found
|
|
272
275
|
*/
|
|
@@ -279,21 +282,15 @@ export class AnchorManager {
|
|
|
279
282
|
sessionId: anchor.sessionId,
|
|
280
283
|
createdAt: anchor.createdAt,
|
|
281
284
|
handoffCount: anchor.handoffs.length,
|
|
282
|
-
totalTokens: anchor.handoffs.reduce(
|
|
283
|
-
|
|
284
|
-
0,
|
|
285
|
-
),
|
|
286
|
-
totalDuration: anchor.handoffs.reduce(
|
|
287
|
-
(sum, h) => sum + h.metrics.duration,
|
|
288
|
-
0,
|
|
289
|
-
),
|
|
285
|
+
totalTokens: anchor.handoffs.reduce((sum, h) => sum + h.metrics.tokensUsed, 0),
|
|
286
|
+
totalDuration: anchor.handoffs.reduce((sum, h) => sum + h.metrics.duration, 0),
|
|
290
287
|
context: anchor.context,
|
|
291
288
|
};
|
|
292
289
|
}
|
|
293
290
|
|
|
294
291
|
/**
|
|
295
292
|
* Get status by session ID.
|
|
296
|
-
*
|
|
293
|
+
*
|
|
297
294
|
* @param sessionId - The session ID
|
|
298
295
|
* @returns Status object or null if no anchor
|
|
299
296
|
*/
|
|
@@ -305,7 +302,7 @@ export class AnchorManager {
|
|
|
305
302
|
|
|
306
303
|
/**
|
|
307
304
|
* Check if an anchor has handoffs accumulated.
|
|
308
|
-
*
|
|
305
|
+
*
|
|
309
306
|
* @param anchorId - The anchor ID
|
|
310
307
|
* @returns True if anchor has handoffs
|
|
311
308
|
*/
|
|
@@ -316,7 +313,7 @@ export class AnchorManager {
|
|
|
316
313
|
|
|
317
314
|
/**
|
|
318
315
|
* Get all anchors.
|
|
319
|
-
*
|
|
316
|
+
*
|
|
320
317
|
* @returns Array of all anchors
|
|
321
318
|
*/
|
|
322
319
|
getAllAnchors(): Anchor[] {
|
|
@@ -347,7 +344,12 @@ export class AnchorManager {
|
|
|
347
344
|
iterations: acc.iterations + h.metrics.iterations,
|
|
348
345
|
toolsUsed: [...acc.toolsUsed, ...h.metrics.toolsUsed],
|
|
349
346
|
}),
|
|
350
|
-
{
|
|
347
|
+
{
|
|
348
|
+
tokensUsed: 0,
|
|
349
|
+
duration: 0,
|
|
350
|
+
iterations: 0,
|
|
351
|
+
toolsUsed: [] as string[],
|
|
352
|
+
},
|
|
351
353
|
);
|
|
352
354
|
|
|
353
355
|
// Deduplicate tools
|
|
@@ -19,7 +19,13 @@ export function writeAsyncStartMarker(manifest: Pick<TeamRunManifest, "stateRoot
|
|
|
19
19
|
export function hasAsyncStartMarker(manifest: Pick<TeamRunManifest, "stateRoot">): boolean {
|
|
20
20
|
try {
|
|
21
21
|
const raw = JSON.parse(fs.readFileSync(asyncStartMarkerPath(manifest), "utf-8")) as Partial<AsyncStartMarker>;
|
|
22
|
-
return
|
|
22
|
+
return (
|
|
23
|
+
typeof raw.pid === "number" &&
|
|
24
|
+
Number.isInteger(raw.pid) &&
|
|
25
|
+
raw.pid > 0 &&
|
|
26
|
+
typeof raw.startedAt === "string" &&
|
|
27
|
+
raw.startedAt.length > 0
|
|
28
|
+
);
|
|
23
29
|
} catch {
|
|
24
30
|
return false;
|
|
25
31
|
}
|
|
@@ -1,19 +1,16 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { createRequire } from "node:module";
|
|
1
|
+
import { type SpawnOptions, spawn } from "node:child_process";
|
|
3
2
|
import * as fs from "node:fs";
|
|
3
|
+
import { createRequire } from "node:module";
|
|
4
4
|
import * as path from "node:path";
|
|
5
5
|
import { fileURLToPath, pathToFileURL } from "node:url";
|
|
6
|
-
import { WINDOWS_ESSENTIAL_ENV_VARS } from "../utils/env-allowlist.ts";
|
|
7
|
-
import { logInternalError } from "../utils/internal-error.ts";
|
|
8
6
|
import { appendEvent } from "../state/event-log.ts";
|
|
9
|
-
import { sanitizeEnvSecrets } from "../utils/env-filter.ts";
|
|
10
|
-
import { resolvePeerDepDir, PEER_DEP_DIR_ENV } from "./peer-dep.ts";
|
|
11
|
-
import {
|
|
12
|
-
registerWorker,
|
|
13
|
-
unregisterWorker,
|
|
14
|
-
} from "./orphan-worker-registry.ts";
|
|
15
7
|
import type { TeamRunManifest } from "../state/types.ts";
|
|
16
|
-
|
|
8
|
+
import { WINDOWS_ESSENTIAL_ENV_VARS } from "../utils/env-allowlist.ts";
|
|
9
|
+
import { sanitizeEnvSecrets } from "../utils/env-filter.ts";
|
|
10
|
+
import { logInternalError } from "../utils/internal-error.ts";
|
|
11
|
+
import { packageRoot } from "../utils/paths.ts";
|
|
12
|
+
import { registerWorker, unregisterWorker } from "./orphan-worker-registry.ts";
|
|
13
|
+
import { PEER_DEP_DIR_ENV, resolvePeerDepDir } from "./peer-dep.ts";
|
|
17
14
|
|
|
18
15
|
export type FileExists = (filePath: string) => boolean;
|
|
19
16
|
|
|
@@ -23,9 +20,7 @@ const requireFromHere = createRequire(import.meta.url);
|
|
|
23
20
|
const STRIP_TYPES_MIN_MAJOR = 22;
|
|
24
21
|
const STRIP_TYPES_MIN_MINOR = 6;
|
|
25
22
|
|
|
26
|
-
export type LoaderSpec =
|
|
27
|
-
| { kind: "jiti"; path: string }
|
|
28
|
-
| { kind: "strip-types" };
|
|
23
|
+
export type LoaderSpec = { kind: "jiti"; path: string } | { kind: "strip-types" };
|
|
29
24
|
|
|
30
25
|
type LoaderInput = LoaderSpec | string | false | undefined;
|
|
31
26
|
|
|
@@ -130,12 +125,21 @@ export function getBackgroundRunnerCommand(
|
|
|
130
125
|
// don't want report files can opt out with PI_CREW_BG_REPORT_ON_FATAL=0.
|
|
131
126
|
const reportOn = !(process.env.PI_CREW_BG_REPORT_ON_FATAL === "0" || process.env.PI_TEAMS_BG_REPORT_ON_FATAL === "0");
|
|
132
127
|
const reportDir = reportDirectory ?? path.dirname(runnerPath);
|
|
133
|
-
const reportFlags = reportOn
|
|
134
|
-
? ["--report-on-fatalerror", "--report-compact", `--report-directory=${reportDir}`]
|
|
135
|
-
: [];
|
|
128
|
+
const reportFlags = reportOn ? ["--report-on-fatalerror", "--report-compact", `--report-directory=${reportDir}`] : [];
|
|
136
129
|
if (loader.kind === "jiti") {
|
|
137
130
|
return {
|
|
138
|
-
args: [
|
|
131
|
+
args: [
|
|
132
|
+
memoryLimit,
|
|
133
|
+
...reportFlags,
|
|
134
|
+
"--trace-uncaught",
|
|
135
|
+
"--import",
|
|
136
|
+
pathToFileURL(loader.path).href,
|
|
137
|
+
runnerPath,
|
|
138
|
+
"--cwd",
|
|
139
|
+
cwd,
|
|
140
|
+
"--run-id",
|
|
141
|
+
runId,
|
|
142
|
+
],
|
|
139
143
|
loader: "jiti",
|
|
140
144
|
};
|
|
141
145
|
}
|
|
@@ -220,7 +224,17 @@ export const BACKGROUND_RUNNER_ENV_ALLOWLIST: string[] = [
|
|
|
220
224
|
];
|
|
221
225
|
|
|
222
226
|
export async function spawnBackgroundTeamRun(manifest: TeamRunManifest): Promise<SpawnBackgroundTeamRunResult> {
|
|
223
|
-
|
|
227
|
+
// FIX (2026-07-02, perf review F-critical): use packageRoot() instead of
|
|
228
|
+
// import.meta.url-relative path. The previous path.resolve walks
|
|
229
|
+
// <bundleDir>/background-runner.ts, which is correct in src/ but BROKEN
|
|
230
|
+
// in the bundle: esbuild's __esm helper does not preserve per-module
|
|
231
|
+
// import.meta.url, so the resolve lands at <pi-crew>/background-runner.ts
|
|
232
|
+
// (missing `src/runtime/`). The background-runner then ENOENTs at spawn
|
|
233
|
+
// and 3 explorer agents failed during the verification run. packageRoot()
|
|
234
|
+
// walks up to find pi-crew's package.json and works correctly from both
|
|
235
|
+
// src/ and dist/ entry points. Mirrors the fix in pi-args.ts:10 (commit
|
|
236
|
+
// 0dd93e0).
|
|
237
|
+
const runnerPath = path.join(packageRoot(), "src", "runtime", "background-runner.ts");
|
|
224
238
|
const logPath = path.join(manifest.stateRoot, "background.log");
|
|
225
239
|
fs.mkdirSync(manifest.stateRoot, { recursive: true });
|
|
226
240
|
|
|
@@ -238,14 +252,16 @@ export async function spawnBackgroundTeamRun(manifest: TeamRunManifest): Promise
|
|
|
238
252
|
// `npm root -g` probe. No-op when pi-crew and pi are co-located. See
|
|
239
253
|
// src/runtime/peer-dep.ts.
|
|
240
254
|
const peerDepDir = resolvePeerDepDir();
|
|
241
|
-
const childEnv = peerDepDir
|
|
242
|
-
? { ...filteredEnv, [PEER_DEP_DIR_ENV]: peerDepDir }
|
|
243
|
-
: filteredEnv;
|
|
255
|
+
const childEnv = peerDepDir ? { ...filteredEnv, [PEER_DEP_DIR_ENV]: peerDepDir } : filteredEnv;
|
|
244
256
|
|
|
245
257
|
const loader = resolveTypeScriptLoader();
|
|
246
258
|
if (!loader) {
|
|
247
259
|
const message = buildLoaderUnavailableMessage(packageRootFromRuntime());
|
|
248
|
-
appendEvent(manifest.eventsPath, {
|
|
260
|
+
appendEvent(manifest.eventsPath, {
|
|
261
|
+
type: "async.failed",
|
|
262
|
+
runId: manifest.runId,
|
|
263
|
+
message,
|
|
264
|
+
});
|
|
249
265
|
throw new Error(message);
|
|
250
266
|
}
|
|
251
267
|
// Pass manifest.stateRoot as report-directory so V8 fatal reports land
|
|
@@ -345,4 +361,3 @@ export async function spawnBackgroundTeamRun(manifest: TeamRunManifest): Promise
|
|
|
345
361
|
|
|
346
362
|
return { pid: child.pid, logPath };
|
|
347
363
|
}
|
|
348
|
-
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* AutoSummarizeService - Enables auto-summarization with token/tool thresholds.
|
|
3
|
-
*
|
|
3
|
+
*
|
|
4
4
|
* Based on pi-boomerang's autoBoomerang pattern:
|
|
5
5
|
* - toggle() enables/disables auto-summarization
|
|
6
6
|
* - shouldAutoSummarize() checks if task should auto-summarize
|
|
7
7
|
* - Token and tool thresholds control when summarization triggers
|
|
8
|
-
*
|
|
8
|
+
*
|
|
9
9
|
* @see docs/pi-boomerang-integration-plan.md
|
|
10
10
|
*/
|
|
11
11
|
|
|
@@ -72,11 +72,7 @@ export interface AutoSummarizeTriggeredEventData {
|
|
|
72
72
|
/**
|
|
73
73
|
* What triggered the auto-summarize.
|
|
74
74
|
*/
|
|
75
|
-
export type AutoSummarizeTrigger =
|
|
76
|
-
| "token_threshold"
|
|
77
|
-
| "tools_threshold"
|
|
78
|
-
| "manual"
|
|
79
|
-
| "high_usage";
|
|
75
|
+
export type AutoSummarizeTrigger = "token_threshold" | "tools_threshold" | "manual" | "high_usage";
|
|
80
76
|
|
|
81
77
|
/**
|
|
82
78
|
* AutoSummarizeService enables automatic summarization based on configurable thresholds.
|
|
@@ -143,7 +139,7 @@ export class AutoSummarizeService {
|
|
|
143
139
|
|
|
144
140
|
/**
|
|
145
141
|
* Check if a task should auto-summarize.
|
|
146
|
-
*
|
|
142
|
+
*
|
|
147
143
|
* @param packet - The task packet
|
|
148
144
|
* @param result - The task result
|
|
149
145
|
* @returns True if the task should auto-summarize
|
|
@@ -180,7 +176,7 @@ export class AutoSummarizeService {
|
|
|
180
176
|
|
|
181
177
|
/**
|
|
182
178
|
* Get the reason why a task should (or should not) auto-summarize.
|
|
183
|
-
*
|
|
179
|
+
*
|
|
184
180
|
* @param packet - The task packet
|
|
185
181
|
* @param result - The task result
|
|
186
182
|
* @returns Object with shouldSummarize flag and reason
|
|
@@ -343,8 +339,6 @@ export interface AutoSummarizeDecision {
|
|
|
343
339
|
/**
|
|
344
340
|
* Create an AutoSummarizeService with default options.
|
|
345
341
|
*/
|
|
346
|
-
export function createAutoSummarizeService(
|
|
347
|
-
options?: AutoSummarizeServiceOptions,
|
|
348
|
-
): AutoSummarizeService {
|
|
342
|
+
export function createAutoSummarizeService(options?: AutoSummarizeServiceOptions): AutoSummarizeService {
|
|
349
343
|
return new AutoSummarizeService(options);
|
|
350
|
-
}
|
|
344
|
+
}
|