pi-crew 0.9.50 → 0.9.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +150 -0
- package/README.md +216 -20
- package/dist/build-meta.json +2222 -1761
- package/dist/index.mjs +18636 -17603
- package/docs/actions-reference.md +431 -1
- package/package.json +19 -9
- package/schema.json +41 -0
- package/scripts/check-bundle-size.mjs +38 -0
- package/scripts/test-runner.mjs +11 -1
- package/skills/distill-software/SKILL.md +24 -1
- package/dist/index.mjs.map +0 -7
- package/docs/FEATURE_INTAKE.md +0 -126
- package/docs/HARNESS.md +0 -87
- package/docs/HARNESS_BACKLOG.md +0 -89
- package/docs/PROJECT_REVIEW.md +0 -270
- package/docs/PROJECT_REVIEW_FIXES.md +0 -342
- package/docs/PROJECT_REVIEW_ROUND4.md +0 -156
- package/docs/PROJECT_REVIEW_ROUND5.md +0 -86
- package/docs/REVIEW-FINDINGS-2026-06 +0 -357
- package/docs/REVIEW-FINDINGS-2026-07-CORE.md +0 -139
- package/docs/REVIEW-FINDINGS-2026-07.md +0 -125
- package/docs/TEST_MATRIX.md +0 -51
- package/docs/archive/README.md +0 -91
- package/docs/archive/followup-review-round3-2026-05-12.md +0 -342
- package/docs/archive/followup-review-round4-2026-05-13.md +0 -107
- package/docs/archive/pi-crew-bugs.md +0 -961
- package/docs/archive/pi-crew-test-final.md +0 -120
- package/docs/archive/pi-crew-test-results.md +0 -260
- package/docs/archive/pi-crew-test-round2.md +0 -136
- package/docs/archive/pi-crew-test-round4.md +0 -100
- package/docs/archive/pi-crew-test-round5.md +0 -70
- package/docs/archive/pi-crew-test-round6.md +0 -110
- package/docs/archive/pi-crew-v0.5.10-audit-fix-plan.md +0 -60
- package/docs/archive/pi-crew-v0.5.11-audit-fix-plan.md +0 -92
- package/docs/archive/pi-crew-v0.5.12-audit-fix-plan.md +0 -76
- package/docs/archive/pi-crew-v0.5.13-audit-fix-plan.md +0 -75
- package/docs/archive/pi-crew-v0.5.14-audit-fix-plan.md +0 -75
- package/docs/archive/pi-crew-v0.5.16-audit-fix-plan.md +0 -35
- package/docs/archive/pi-crew-v0.5.17-audit-fix-plan.md +0 -80
- package/docs/archive/pi-crew-v0.5.5-audit-fix-plan.md +0 -133
- package/docs/archive/pi-crew-v0.5.9-audit-fix-plan.md +0 -88
- package/docs/archive/pi-mono-opportunities.md +0 -969
- package/docs/archive/pi-mono-review.md +0 -291
- package/docs/archive/pi-subagent4-comparison.md +0 -261
- package/docs/archive/pi-subagents3-deep-analysis.md +0 -508
- package/docs/bugs/bug-021-notification-badge-counter-misleading.md +0 -293
- package/docs/bugs/bug-023-chain-windows-path-resolution.md +0 -106
- package/docs/bugs/bug-quota-display-truncation.md +0 -223
- package/docs/bugs/cross-session-notification-leakage.md +0 -82
- package/docs/code-review-2026-05-11.md +0 -592
- package/docs/coding-agent-optimization.md +0 -268
- package/docs/comparison-pi-subagents-vs-pi-crew.md +0 -303
- package/docs/decisions/0001-durable-state.md +0 -41
- package/docs/decisions/0002-child-process-for-async.md +0 -42
- package/docs/decisions/0003-depth-guard.md +0 -36
- package/docs/decisions/0004-execfile-over-exec.md +0 -34
- package/docs/decisions/0005-no-parameter-properties.md +0 -49
- package/docs/decisions/0006-publish-bundled-esm.md +0 -63
- package/docs/decisions/0007-active-run-binary-index.md +0 -54
- package/docs/decisions/0008-child-pi-warm-pool.md +0 -61
- package/docs/decisions/2026-07-21-broker-phase4-default-on.md +0 -77
- package/docs/decisions/2026-07-21-broker-windows-perms.md +0 -91
- package/docs/decisions/2026-07-22-broker-phase4-gated-on.md +0 -99
- package/docs/decisions/2026-07-24-oidc-trusted-publishing.md +0 -112
- package/docs/decisions/README.md +0 -26
- package/docs/deep-review-report.md +0 -384
- package/docs/distillation/cybersecurity-patterns.md +0 -294
- package/docs/feature-analysis-subagent4.md +0 -305
- package/docs/fix-plan-disabletools-exit-null.md +0 -219
- package/docs/fixes/BATCH_A_H1_H2.md +0 -86
- package/docs/fixes/bug-006-foreground-cancel-concurrent.md +0 -78
- package/docs/fixes/bug-007-async-notifier-stale-ctx.md +0 -112
- package/docs/fixes/bug-008-child-process-silent-timeout.md +0 -100
- package/docs/fixes/bug-009-executor-yield-limit-needs-attention.md +0 -75
- package/docs/fixes/bug-010-child-process-api-key-filtered.md +0 -109
- package/docs/fixes/bug-011-spawn-pi-enoent.md +0 -92
- package/docs/fixes/bug-012-essential-env-stripped.md +0 -89
- package/docs/fixes/bug-013-background-runner-death.md +0 -84
- package/docs/fixes/bug-014-infinite-retry-loop-needs-attention.md +0 -82
- package/docs/fixes/bug-015-background-runner-sigterm.md +0 -65
- package/docs/fixes/bug-017-background-runner-session-shutdown.md +0 -66
- package/docs/fixes/bug-017-background-runner-sigkill-double-fork.md +0 -28
- package/docs/fixes/bug-018-child-pi-worker-stdin-hang.md +0 -61
- package/docs/fixes/bug-019-phantom-runs-temp-workspace.md +0 -52
- package/docs/fixes/bug-020-infinite-retry-loop-needs-attention.md +0 -47
- package/docs/fixes/v0.9.10/locks-fix-verify.md +0 -3
- package/docs/fixes/v0.9.10/smoke-test.md +0 -12
- package/docs/followup-plan-2026-05-12.md +0 -463
- package/docs/followup-review-2026-05-12.md +0 -297
- package/docs/goals.md +0 -59
- package/docs/implementation-plan-top3.md +0 -333
- package/docs/issue-29-analysis.md +0 -189
- package/docs/live-mailbox-runtime.md +0 -36
- package/docs/migration/atomic-write-v2-migration.md +0 -299
- package/docs/next-upgrade-roadmap.md +0 -808
- package/docs/oh-my-pi-research.md +0 -509
- package/docs/optimization-plan-2026-07.md +0 -366
- package/docs/optimization-plan.md +0 -644
- package/docs/patterns/command-agent-skill.md +0 -71
- package/docs/perf/baseline-2026-05.md +0 -113
- package/docs/perf/final-report-2026-05.md +0 -206
- package/docs/perf/optimization-plan-2026-07-verified.md +0 -396
- package/docs/perf/performance-audit-report-2026-07.md +0 -948
- package/docs/perf/performance-review-2026-07.md +0 -287
- package/docs/perf/sprint-1-report.md +0 -71
- package/docs/perf/sprint-2-report.md +0 -81
- package/docs/perf/sprint-2.5-report.md +0 -53
- package/docs/perf/sprint-3-report.md +0 -36
- package/docs/perf/sprint-4-report.md +0 -47
- package/docs/perf/sprint-5-report.md +0 -51
- package/docs/perf/sprint-6-report.md +0 -94
- package/docs/perf/sprint-7-report.md +0 -74
- package/docs/perf/upgrade-plan-2026-05.md +0 -147
- package/docs/performance-optimization-execution-plan.md +0 -520
- package/docs/phase4-triage.md +0 -58
- package/docs/pi-crew-investigation-report.md +0 -411
- package/docs/product/README.md +0 -31
- package/docs/product/platform.md +0 -27
- package/docs/product/runtime-safety.md +0 -37
- package/docs/product/team-run.md +0 -39
- package/docs/product/team-tool.md +0 -37
- package/docs/runtime-analysis-child-vs-live.md +0 -171
- package/docs/runtime-migration-in-process-analysis.md +0 -250
- package/docs/skills/REFERENCE.md +0 -138
- package/docs/stories/README.md +0 -32
- package/docs/stories/US-DEPS-major-upgrade.md +0 -62
- package/docs/stories/backlog.md +0 -36
- package/docs/superpowers/plans/2026-06-09-fallow-patterns-adoption.md +0 -1270
- package/docs/templates/decision.md +0 -27
- package/docs/templates/story.md +0 -44
- package/docs/templates/validation-report.md +0 -32
- package/docs/ui-optimization-plan.md +0 -447
- package/src/adapters/claude-adapter.ts +0 -23
- package/src/adapters/codex-adapter.ts +0 -21
- package/src/adapters/cursor-adapter.ts +0 -17
- package/src/adapters/export-util.ts +0 -143
- package/src/adapters/index.ts +0 -15
- package/src/adapters/registry.ts +0 -18
- package/src/adapters/types.ts +0 -23
- package/src/agents/agent-config.ts +0 -194
- package/src/agents/agent-search.ts +0 -98
- package/src/agents/agent-serializer.ts +0 -38
- package/src/agents/discover-agents.ts +0 -623
- package/src/benchmark/benchmark-runner.ts +0 -313
- package/src/benchmark/feedback-loop.ts +0 -73
- package/src/config/config.ts +0 -1269
- package/src/config/defaults.ts +0 -193
- package/src/config/drift-detector.ts +0 -290
- package/src/config/markers.ts +0 -330
- package/src/config/resilient-parser.ts +0 -117
- package/src/config/role-tools.ts +0 -118
- package/src/config/suggestions.ts +0 -75
- package/src/config/types.ts +0 -278
- package/src/errors.ts +0 -194
- package/src/extension/action-suggestions.ts +0 -117
- package/src/extension/async-notifier.ts +0 -179
- package/src/extension/autonomous-policy.ts +0 -209
- package/src/extension/command-completions.ts +0 -120
- package/src/extension/context-status-injection.ts +0 -185
- package/src/extension/crew-autocomplete.ts +0 -131
- package/src/extension/crew-cleanup.ts +0 -168
- package/src/extension/crew-input-router.ts +0 -93
- package/src/extension/crew-shortcuts.ts +0 -87
- package/src/extension/crew-vibes/cat-frames.ts +0 -18
- package/src/extension/crew-vibes/config.ts +0 -195
- package/src/extension/crew-vibes/figures.ts +0 -101
- package/src/extension/crew-vibes/font-detect.ts +0 -71
- package/src/extension/crew-vibes/footer.ts +0 -292
- package/src/extension/crew-vibes/index.ts +0 -432
- package/src/extension/crew-vibes/provider-usage.ts +0 -396
- package/src/extension/crew-vibes/render.ts +0 -206
- package/src/extension/crew-vibes/speed.ts +0 -286
- package/src/extension/cross-extension-rpc.ts +0 -350
- package/src/extension/help.ts +0 -62
- package/src/extension/import-index.ts +0 -74
- package/src/extension/knowledge-injection.ts +0 -402
- package/src/extension/management.ts +0 -571
- package/src/extension/message-renderers.ts +0 -108
- package/src/extension/notification-router.ts +0 -152
- package/src/extension/notification-sink.ts +0 -54
- package/src/extension/pi-api.ts +0 -56
- package/src/extension/plan-orchestrate.ts +0 -302
- package/src/extension/project-init.ts +0 -170
- package/src/extension/register.ts +0 -113
- package/src/extension/registration/artifact-cleanup.ts +0 -20
- package/src/extension/registration/command-registration.ts +0 -58
- package/src/extension/registration/command-utils.ts +0 -58
- package/src/extension/registration/commands.ts +0 -1228
- package/src/extension/registration/compaction-guard.ts +0 -333
- package/src/extension/registration/context-builder.ts +0 -135
- package/src/extension/registration/crash-recovery-cache.ts +0 -54
- package/src/extension/registration/foreground-run-controller.ts +0 -238
- package/src/extension/registration/hook-registration.ts +0 -119
- package/src/extension/registration/lazy-configurers.ts +0 -124
- package/src/extension/registration/lifecycle-handlers.ts +0 -923
- package/src/extension/registration/lifecycle.ts +0 -259
- package/src/extension/registration/observability.ts +0 -322
- package/src/extension/registration/registration-types.ts +0 -158
- package/src/extension/registration/runtime-cleanup.ts +0 -230
- package/src/extension/registration/subagent-helpers.ts +0 -125
- package/src/extension/registration/subagent-manager-setup.ts +0 -330
- package/src/extension/registration/subagent-tools.ts +0 -456
- package/src/extension/registration/team-tool.ts +0 -220
- package/src/extension/registration/tool-registration.ts +0 -50
- package/src/extension/registration/ui.ts +0 -172
- package/src/extension/registration/viewers.ts +0 -121
- package/src/extension/registration/wire-cross-extension.ts +0 -37
- package/src/extension/result-watcher.ts +0 -139
- package/src/extension/rpc-hmac.ts +0 -256
- package/src/extension/run-bundle-schema.ts +0 -104
- package/src/extension/run-export.ts +0 -97
- package/src/extension/run-import.ts +0 -168
- package/src/extension/run-index.ts +0 -131
- package/src/extension/run-maintenance.ts +0 -190
- package/src/extension/session-summary.ts +0 -18
- package/src/extension/team-manager-command.ts +0 -153
- package/src/extension/team-onboard.ts +0 -177
- package/src/extension/team-recommendation.ts +0 -288
- package/src/extension/team-tool/anchor.ts +0 -172
- package/src/extension/team-tool/api.ts +0 -1244
- package/src/extension/team-tool/auto-summarize.ts +0 -142
- package/src/extension/team-tool/cache-control.ts +0 -19
- package/src/extension/team-tool/cancel.ts +0 -337
- package/src/extension/team-tool/chain-dispatch.ts +0 -95
- package/src/extension/team-tool/chain-executor.ts +0 -379
- package/src/extension/team-tool/config-patch.ts +0 -50
- package/src/extension/team-tool/context.ts +0 -149
- package/src/extension/team-tool/destructive-gate.ts +0 -52
- package/src/extension/team-tool/doctor.ts +0 -431
- package/src/extension/team-tool/explain.ts +0 -282
- package/src/extension/team-tool/failure-patterns.ts +0 -118
- package/src/extension/team-tool/goal-wrap.ts +0 -330
- package/src/extension/team-tool/goal.ts +0 -556
- package/src/extension/team-tool/handle-schedule.ts +0 -332
- package/src/extension/team-tool/handle-settings.ts +0 -520
- package/src/extension/team-tool/health-monitor.ts +0 -481
- package/src/extension/team-tool/inspect.ts +0 -88
- package/src/extension/team-tool/intent-policy.ts +0 -45
- package/src/extension/team-tool/lifecycle-actions.ts +0 -615
- package/src/extension/team-tool/orchestrate.ts +0 -98
- package/src/extension/team-tool/parallel-dispatch.ts +0 -183
- package/src/extension/team-tool/plan.ts +0 -50
- package/src/extension/team-tool/respond.ts +0 -150
- package/src/extension/team-tool/run-not-found.ts +0 -49
- package/src/extension/team-tool/run.ts +0 -1035
- package/src/extension/team-tool/status.ts +0 -260
- package/src/extension/team-tool/workflow-manage.ts +0 -261
- package/src/extension/team-tool-types.ts +0 -26
- package/src/extension/team-tool.ts +0 -1116
- package/src/extension/tool-result.ts +0 -16
- package/src/extension/validate-resources.ts +0 -108
- package/src/hooks/registry.ts +0 -200
- package/src/hooks/types.ts +0 -69
- package/src/i18n.ts +0 -212
- package/src/observability/correlation.ts +0 -50
- package/src/observability/event-bus.ts +0 -86
- package/src/observability/event-to-metric.ts +0 -170
- package/src/observability/exporters/adapter.ts +0 -27
- package/src/observability/exporters/otlp-exporter.ts +0 -356
- package/src/observability/exporters/prometheus-exporter.ts +0 -54
- package/src/observability/metric-registry.ts +0 -100
- package/src/observability/metric-retention.ts +0 -64
- package/src/observability/metric-sink.ts +0 -99
- package/src/observability/metrics-primitives.ts +0 -219
- package/src/plugins/plugin-define.ts +0 -6
- package/src/plugins/plugin-registry.ts +0 -32
- package/src/plugins/plugins/index.ts +0 -3
- package/src/plugins/plugins/nextjs.ts +0 -19
- package/src/plugins/plugins/vite.ts +0 -10
- package/src/plugins/plugins/vitest.ts +0 -9
- package/src/prompt/prompt-runtime.ts +0 -380
- package/src/runtime/adaptive-plan.ts +0 -563
- package/src/runtime/agent-control.ts +0 -215
- package/src/runtime/agent-memory.ts +0 -81
- package/src/runtime/agent-observability.ts +0 -122
- package/src/runtime/anchor-manager.ts +0 -475
- package/src/runtime/async-marker.ts +0 -32
- package/src/runtime/async-runner.ts +0 -381
- package/src/runtime/attention-events.ts +0 -28
- package/src/runtime/auto-summarize.ts +0 -344
- package/src/runtime/background-runner.ts +0 -837
- package/src/runtime/batch-barrier.ts +0 -147
- package/src/runtime/broker-issuer.ts +0 -37
- package/src/runtime/cancellation-token.ts +0 -99
- package/src/runtime/cancellation.ts +0 -99
- package/src/runtime/capability-inventory.ts +0 -137
- package/src/runtime/chain-parser.ts +0 -237
- package/src/runtime/chain-runner.ts +0 -606
- package/src/runtime/checkpoint.ts +0 -291
- package/src/runtime/child-pi-constants.ts +0 -42
- package/src/runtime/child-pi-kill.ts +0 -180
- package/src/runtime/child-pi-pool.ts +0 -68
- package/src/runtime/child-pi-spawn.ts +0 -287
- package/src/runtime/child-pi-steering.ts +0 -128
- package/src/runtime/child-pi-streams.ts +0 -296
- package/src/runtime/child-pi-transcript.ts +0 -169
- package/src/runtime/child-pi.ts +0 -1105
- package/src/runtime/coalesce-tasks.ts +0 -268
- package/src/runtime/code-summary.ts +0 -292
- package/src/runtime/command-trace.ts +0 -105
- package/src/runtime/compact-pipeline.ts +0 -56
- package/src/runtime/compact-stages/ansi-strip-stage.ts +0 -25
- package/src/runtime/compact-stages/blank-collapse-stage.ts +0 -31
- package/src/runtime/compact-stages/deduplicate-stage.ts +0 -34
- package/src/runtime/compact-stages/head-snap-stage.ts +0 -57
- package/src/runtime/compact-stages/index.ts +0 -23
- package/src/runtime/compact-stages/tail-capture-stage.ts +0 -77
- package/src/runtime/compact-stages/truncation-stage.ts +0 -74
- package/src/runtime/compaction-summary.ts +0 -278
- package/src/runtime/completion-guard.ts +0 -207
- package/src/runtime/concurrency.ts +0 -58
- package/src/runtime/crash-classification.ts +0 -229
- package/src/runtime/crash-recovery.ts +0 -577
- package/src/runtime/crew-agent-records.ts +0 -593
- package/src/runtime/crew-agent-runtime.ts +0 -62
- package/src/runtime/crew-broker-child.ts +0 -88
- package/src/runtime/crew-broker-client.ts +0 -673
- package/src/runtime/crew-broker-tokens.ts +0 -84
- package/src/runtime/crew-broker.ts +0 -1276
- package/src/runtime/crew-hooks.ts +0 -227
- package/src/runtime/cross-extension-rpc.ts +0 -143
- package/src/runtime/custom-tools/irc-tool.ts +0 -282
- package/src/runtime/custom-tools/submit-result-tool.ts +0 -102
- package/src/runtime/deadletter.ts +0 -47
- package/src/runtime/delivery-coordinator.ts +0 -211
- package/src/runtime/delta-conflict.ts +0 -348
- package/src/runtime/deterministic-ast.ts +0 -161
- package/src/runtime/diagnostic-export.ts +0 -171
- package/src/runtime/direct-run.ts +0 -45
- package/src/runtime/dwf-state-store.ts +0 -102
- package/src/runtime/dynamic-workflow-context.ts +0 -1016
- package/src/runtime/dynamic-workflow-runner.ts +0 -310
- package/src/runtime/effectiveness.ts +0 -90
- package/src/runtime/errors/crew-errors.ts +0 -162
- package/src/runtime/event-stream-bridge.ts +0 -98
- package/src/runtime/foreground-control.ts +0 -193
- package/src/runtime/foreground-watchdog.ts +0 -132
- package/src/runtime/global-worker-cap.ts +0 -96
- package/src/runtime/goal-achievement.ts +0 -148
- package/src/runtime/goal-evaluator.ts +0 -361
- package/src/runtime/goal-loop-runner.ts +0 -828
- package/src/runtime/goal-state-store.ts +0 -219
- package/src/runtime/green-contract.ts +0 -55
- package/src/runtime/group-join.ts +0 -267
- package/src/runtime/handoff-manager.ts +0 -598
- package/src/runtime/heartbeat-gradient.ts +0 -36
- package/src/runtime/heartbeat-watcher.ts +0 -239
- package/src/runtime/hidden-handoff.ts +0 -407
- package/src/runtime/important-line-classifier.ts +0 -140
- package/src/runtime/intercom-bridge.ts +0 -187
- package/src/runtime/iteration-hooks.ts +0 -305
- package/src/runtime/live-agent-control.ts +0 -136
- package/src/runtime/live-agent-manager.ts +0 -704
- package/src/runtime/live-control-realtime.ts +0 -56
- package/src/runtime/live-extension-bridge.ts +0 -148
- package/src/runtime/live-irc.ts +0 -97
- package/src/runtime/live-session-health.ts +0 -108
- package/src/runtime/live-session-runtime.ts +0 -1139
- package/src/runtime/loop-gates.ts +0 -128
- package/src/runtime/manifest-cache.ts +0 -375
- package/src/runtime/mcp-proxy.ts +0 -105
- package/src/runtime/metric-parser.ts +0 -36
- package/src/runtime/model-fallback.ts +0 -409
- package/src/runtime/model-resolver.ts +0 -126
- package/src/runtime/model-scope.ts +0 -158
- package/src/runtime/orphan-worker-registry.ts +0 -465
- package/src/runtime/output-validator.ts +0 -202
- package/src/runtime/overflow-recovery.ts +0 -206
- package/src/runtime/parallel-research.ts +0 -68
- package/src/runtime/parallel-utils.ts +0 -160
- package/src/runtime/parent-guard.ts +0 -134
- package/src/runtime/path-overlap.ts +0 -150
- package/src/runtime/peer-dep.ts +0 -292
- package/src/runtime/per-write-validator.ts +0 -181
- package/src/runtime/phase-progress.ts +0 -217
- package/src/runtime/phase-tracker.ts +0 -385
- package/src/runtime/pi-args.ts +0 -655
- package/src/runtime/pi-json-output.ts +0 -170
- package/src/runtime/pi-spawn.ts +0 -273
- package/src/runtime/pipeline-runner.ts +0 -523
- package/src/runtime/plan-templates.ts +0 -201
- package/src/runtime/policy-engine.ts +0 -115
- package/src/runtime/post-checks.ts +0 -142
- package/src/runtime/post-exit-stdio-guard.ts +0 -104
- package/src/runtime/process-lifecycle.ts +0 -491
- package/src/runtime/process-status.ts +0 -154
- package/src/runtime/progress-event-coalescer.ts +0 -44
- package/src/runtime/progress-tracker.ts +0 -124
- package/src/runtime/prose-compressor.ts +0 -162
- package/src/runtime/recovery-recipes.ts +0 -203
- package/src/runtime/replace.ts +0 -570
- package/src/runtime/resilient-edit.ts +0 -153
- package/src/runtime/result-extractor.ts +0 -213
- package/src/runtime/retry-executor.ts +0 -100
- package/src/runtime/retry-runner.ts +0 -336
- package/src/runtime/role-permission.ts +0 -59
- package/src/runtime/run-coalesced-task-group.ts +0 -308
- package/src/runtime/run-drift.ts +0 -219
- package/src/runtime/run-tracker.ts +0 -116
- package/src/runtime/runtime-policy.ts +0 -29
- package/src/runtime/runtime-resolver.ts +0 -172
- package/src/runtime/runtime-warmup.ts +0 -160
- package/src/runtime/scheduler.ts +0 -353
- package/src/runtime/semaphore.ts +0 -141
- package/src/runtime/sensitive-paths.ts +0 -93
- package/src/runtime/session-resources.ts +0 -25
- package/src/runtime/session-snapshot.ts +0 -59
- package/src/runtime/session-usage.ts +0 -79
- package/src/runtime/settings-store.ts +0 -155
- package/src/runtime/sidechain-output.ts +0 -35
- package/src/runtime/single-agent-compose.ts +0 -84
- package/src/runtime/skill-effectiveness.ts +0 -524
- package/src/runtime/skill-instructions.ts +0 -391
- package/src/runtime/stale-reconciler.ts +0 -680
- package/src/runtime/stream-preview.ts +0 -184
- package/src/runtime/streaming-output.ts +0 -50
- package/src/runtime/subagent-manager.ts +0 -561
- package/src/runtime/subprocess-tool-registry.ts +0 -70
- package/src/runtime/supervisor-contact.ts +0 -64
- package/src/runtime/task-display.ts +0 -52
- package/src/runtime/task-graph-scheduler.ts +0 -227
- package/src/runtime/task-graph.ts +0 -290
- package/src/runtime/task-health.ts +0 -83
- package/src/runtime/task-id.ts +0 -161
- package/src/runtime/task-output-context.ts +0 -602
- package/src/runtime/task-packet.ts +0 -268
- package/src/runtime/task-quality.ts +0 -199
- package/src/runtime/task-runner/capabilities.ts +0 -78
- package/src/runtime/task-runner/context-retrieval.ts +0 -163
- package/src/runtime/task-runner/live-executor.ts +0 -227
- package/src/runtime/task-runner/output-splitter.ts +0 -152
- package/src/runtime/task-runner/progress.ts +0 -157
- package/src/runtime/task-runner/prompt-builder.ts +0 -278
- package/src/runtime/task-runner/prompt-pipeline.ts +0 -88
- package/src/runtime/task-runner/result-utils.ts +0 -16
- package/src/runtime/task-runner/retrieval-orchestrator.ts +0 -310
- package/src/runtime/task-runner/run-projection.ts +0 -125
- package/src/runtime/task-runner/state-helpers.ts +0 -176
- package/src/runtime/task-runner/tail-read.ts +0 -34
- package/src/runtime/task-runner.ts +0 -1420
- package/src/runtime/team-runner-artifacts.ts +0 -13
- package/src/runtime/team-runner.ts +0 -1993
- package/src/runtime/tool-output-pruner.ts +0 -333
- package/src/runtime/tool-progress.ts +0 -278
- package/src/runtime/usage-tracker.ts +0 -73
- package/src/runtime/verification-gates.ts +0 -571
- package/src/runtime/verification-integrity.ts +0 -105
- package/src/runtime/verification-worktree.ts +0 -186
- package/src/runtime/worker-heartbeat.ts +0 -25
- package/src/runtime/worker-startup.ts +0 -83
- package/src/runtime/workflow-state.ts +0 -195
- package/src/runtime/workspace-lock.ts +0 -443
- package/src/runtime/workspace-tree.ts +0 -312
- package/src/runtime/yield-handler.ts +0 -224
- package/src/runtime/zombie-scanner.ts +0 -298
- package/src/schema/config-schema.ts +0 -327
- package/src/schema/team-tool-schema.ts +0 -415
- package/src/schema/validation-types.ts +0 -159
- package/src/skills/discover-skills.ts +0 -197
- package/src/skills/skill-templates.ts +0 -456
- package/src/skills/validate.ts +0 -285
- package/src/state/active-run-registry.ts +0 -439
- package/src/state/artifact-store.ts +0 -176
- package/src/state/atomic-write.ts +0 -903
- package/src/state/blob-store.ts +0 -308
- package/src/state/contracts.ts +0 -158
- package/src/state/crew-init.ts +0 -269
- package/src/state/decision-ledger.ts +0 -345
- package/src/state/event-log-rotation.ts +0 -342
- package/src/state/event-log.ts +0 -1311
- package/src/state/event-reconstructor.ts +0 -229
- package/src/state/gitignore-manager.ts +0 -46
- package/src/state/health-store.ts +0 -79
- package/src/state/hook-instinct-bridge.ts +0 -94
- package/src/state/hook-integrations.ts +0 -51
- package/src/state/instinct-store.ts +0 -275
- package/src/state/jsonl-writer.ts +0 -107
- package/src/state/locks.ts +0 -562
- package/src/state/mailbox.ts +0 -916
- package/src/state/observation-store.ts +0 -176
- package/src/state/run-cache.ts +0 -193
- package/src/state/run-graph.ts +0 -183
- package/src/state/run-metrics.ts +0 -165
- package/src/state/schedule.ts +0 -166
- package/src/state/session-state-map.ts +0 -51
- package/src/state/state-store.ts +0 -958
- package/src/state/task-claims.ts +0 -61
- package/src/state/tiered-eval.ts +0 -480
- package/src/state/types-eval.ts +0 -58
- package/src/state/types.ts +0 -440
- package/src/state/usage.ts +0 -138
- package/src/state/worker-atomic-writer.ts +0 -194
- package/src/subagents/async-entry.ts +0 -1
- package/src/subagents/index.ts +0 -3
- package/src/subagents/live/control.ts +0 -1
- package/src/subagents/live/manager.ts +0 -1
- package/src/subagents/live/realtime.ts +0 -1
- package/src/subagents/live/session-runtime.ts +0 -1
- package/src/subagents/manager.ts +0 -1
- package/src/subagents/spawn.ts +0 -1
- package/src/teams/discover-teams.ts +0 -187
- package/src/teams/team-config.ts +0 -27
- package/src/teams/team-serializer.ts +0 -38
- package/src/tools/safe-bash-extension.ts +0 -54
- package/src/tools/safe-bash.ts +0 -505
- package/src/types/diff.d.ts +0 -18
- package/src/types/new-api-types.ts +0 -35
- package/src/ui/agent-management-overlay.ts +0 -160
- package/src/ui/card-colors.ts +0 -139
- package/src/ui/crew-footer.ts +0 -102
- package/src/ui/crew-select-list.ts +0 -111
- package/src/ui/dashboard-panes/agents-pane.ts +0 -164
- package/src/ui/dashboard-panes/cancellation-pane.ts +0 -66
- package/src/ui/dashboard-panes/capability-pane.ts +0 -77
- package/src/ui/dashboard-panes/health-pane.ts +0 -31
- package/src/ui/dashboard-panes/mailbox-pane.ts +0 -35
- package/src/ui/dashboard-panes/metrics-pane.ts +0 -37
- package/src/ui/dashboard-panes/progress-pane.ts +0 -38
- package/src/ui/dashboard-panes/transcript-pane.ts +0 -10
- package/src/ui/deploy-bundled-themes.ts +0 -71
- package/src/ui/dwf-phase-display.ts +0 -151
- package/src/ui/dynamic-border.ts +0 -35
- package/src/ui/heartbeat-aggregator.ts +0 -74
- package/src/ui/key-utils.ts +0 -42
- package/src/ui/keybinding-map.ts +0 -248
- package/src/ui/layout-primitives.ts +0 -106
- package/src/ui/live-conversation-overlay.ts +0 -183
- package/src/ui/live-duration.ts +0 -55
- package/src/ui/live-run-sidebar.ts +0 -301
- package/src/ui/loaders.ts +0 -176
- package/src/ui/mascot.ts +0 -436
- package/src/ui/overlays/agent-picker-overlay.ts +0 -65
- package/src/ui/overlays/confirm-overlay.ts +0 -60
- package/src/ui/overlays/help-overlay.ts +0 -177
- package/src/ui/overlays/mailbox-compose-overlay.ts +0 -181
- package/src/ui/overlays/mailbox-compose-preview.ts +0 -78
- package/src/ui/overlays/mailbox-detail-overlay.ts +0 -154
- package/src/ui/pi-ui-compat.ts +0 -68
- package/src/ui/powerbar-publisher.ts +0 -459
- package/src/ui/render-coalescer.ts +0 -101
- package/src/ui/render-diff.ts +0 -160
- package/src/ui/render-scheduler.ts +0 -224
- package/src/ui/run-action-dispatcher.ts +0 -182
- package/src/ui/run-dashboard.ts +0 -913
- package/src/ui/run-event-bus.ts +0 -381
- package/src/ui/run-snapshot-cache.ts +0 -1057
- package/src/ui/settings-overlay.ts +0 -1067
- package/src/ui/snapshot-types.ts +0 -90
- package/src/ui/spinner.ts +0 -17
- package/src/ui/status-colors.ts +0 -143
- package/src/ui/syntax-highlight.ts +0 -136
- package/src/ui/terminal-status.ts +0 -269
- package/src/ui/theme-adapter.ts +0 -271
- package/src/ui/theme-discovery.ts +0 -199
- package/src/ui/tool-progress-formatter.ts +0 -93
- package/src/ui/tool-render.ts +0 -453
- package/src/ui/tool-renderers/brief-mode.ts +0 -225
- package/src/ui/tool-renderers/index.ts +0 -726
- package/src/ui/transcript-cache.ts +0 -128
- package/src/ui/transcript-entries.ts +0 -256
- package/src/ui/transcript-viewer.ts +0 -424
- package/src/ui/widget/index.ts +0 -357
- package/src/ui/widget/widget-formatters.ts +0 -182
- package/src/ui/widget/widget-model.ts +0 -110
- package/src/ui/widget/widget-renderer.ts +0 -182
- package/src/ui/widget/widget-types.ts +0 -36
- package/src/utils/bm25-search.ts +0 -235
- package/src/utils/completion-dedupe.ts +0 -63
- package/src/utils/conflict-detect.ts +0 -668
- package/src/utils/env-allowlist.ts +0 -30
- package/src/utils/env-filter.ts +0 -155
- package/src/utils/file-coalescer.ts +0 -98
- package/src/utils/fingerprint.ts +0 -180
- package/src/utils/frontmatter.ts +0 -70
- package/src/utils/fs-watch.ts +0 -37
- package/src/utils/gh-protocol.ts +0 -556
- package/src/utils/git.ts +0 -260
- package/src/utils/guards.ts +0 -107
- package/src/utils/ids.ts +0 -24
- package/src/utils/incremental-reader.ts +0 -220
- package/src/utils/internal-error.ts +0 -10
- package/src/utils/names.ts +0 -36
- package/src/utils/ndjson.ts +0 -115
- package/src/utils/paths.ts +0 -227
- package/src/utils/project-detector.ts +0 -160
- package/src/utils/redaction.ts +0 -347
- package/src/utils/resolve-shell.ts +0 -36
- package/src/utils/run-watcher-registry.ts +0 -152
- package/src/utils/safe-paths.ts +0 -383
- package/src/utils/scan-cache.ts +0 -144
- package/src/utils/session-utils.ts +0 -110
- package/src/utils/sleep.ts +0 -54
- package/src/utils/socket-path.ts +0 -127
- package/src/utils/sse-parser.ts +0 -129
- package/src/utils/task-name-generator.ts +0 -337
- package/src/utils/timings.ts +0 -33
- package/src/utils/token-counter.ts +0 -200
- package/src/utils/visual.ts +0 -207
- package/src/workflows/cost-estimator.ts +0 -34
- package/src/workflows/discover-workflows.ts +0 -290
- package/src/workflows/intermediate-store.ts +0 -166
- package/src/workflows/preflight-validator.ts +0 -168
- package/src/workflows/topology-analyzer.ts +0 -203
- package/src/workflows/validate-workflow.ts +0 -50
- package/src/workflows/workflow-config.ts +0 -70
- package/src/workflows/workflow-serializer.ts +0 -32
- package/src/worktree/branch-freshness.ts +0 -112
- package/src/worktree/cleanup.ts +0 -341
- package/src/worktree/worktree-manager.ts +0 -1200
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
import type { AgentConfig } from "../agents/agent-config.ts";
|
|
2
|
-
import type { SkillDescriptor } from "../skills/discover-skills.ts";
|
|
3
|
-
import type { TeamConfig } from "../teams/team-config.ts";
|
|
4
|
-
import { resolveContainedPath } from "../utils/safe-paths.ts";
|
|
5
|
-
import type { WorkflowConfig } from "../workflows/workflow-config.ts";
|
|
6
|
-
import { adapterRegistry } from "./registry.ts";
|
|
7
|
-
import type { ExportContent } from "./types.ts";
|
|
8
|
-
|
|
9
|
-
function slugify(value: string): string {
|
|
10
|
-
return value
|
|
11
|
-
.toLowerCase()
|
|
12
|
-
.replace(/[^a-z0-9]+/g, "-")
|
|
13
|
-
.replace(/^-+|-+$/g, "");
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
export function agentToExportContent(agent: AgentConfig): ExportContent {
|
|
17
|
-
const category = agent.routing?.category ?? "agent";
|
|
18
|
-
const tags = agent.routing?.triggers ?? [];
|
|
19
|
-
return {
|
|
20
|
-
id: slugify(agent.name),
|
|
21
|
-
name: agent.name,
|
|
22
|
-
description: agent.description,
|
|
23
|
-
category,
|
|
24
|
-
tags,
|
|
25
|
-
body: agent.systemPrompt,
|
|
26
|
-
source: { type: "agent", name: agent.name },
|
|
27
|
-
};
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
export function teamToExportContent(team: TeamConfig): ExportContent {
|
|
31
|
-
const category = team.routing?.category ?? "team";
|
|
32
|
-
const tags = team.routing?.triggers ?? [];
|
|
33
|
-
const rolesDesc = team.roles.map((role) => `- **${role.name}**: ${role.description ?? role.agent}`).join("\n");
|
|
34
|
-
const body = `${team.description}\n\n### Roles\n${rolesDesc}`;
|
|
35
|
-
return {
|
|
36
|
-
id: slugify(team.name),
|
|
37
|
-
name: team.name,
|
|
38
|
-
description: team.description,
|
|
39
|
-
category,
|
|
40
|
-
tags,
|
|
41
|
-
body,
|
|
42
|
-
source: { type: "team", name: team.name },
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
export function workflowToExportContent(workflow: WorkflowConfig): ExportContent {
|
|
47
|
-
const stepsDesc = workflow.steps.map((step) => `- **${step.id}** (${step.role}): ${step.task}`).join("\n");
|
|
48
|
-
const body = `${workflow.description}\n\n### Steps\n${stepsDesc}`;
|
|
49
|
-
return {
|
|
50
|
-
id: slugify(workflow.name),
|
|
51
|
-
name: workflow.name,
|
|
52
|
-
description: workflow.description,
|
|
53
|
-
category: "workflow",
|
|
54
|
-
tags: [],
|
|
55
|
-
body,
|
|
56
|
-
source: { type: "workflow", name: workflow.name },
|
|
57
|
-
};
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export function skillToExportContent(skill: SkillDescriptor): ExportContent {
|
|
61
|
-
return {
|
|
62
|
-
id: slugify(skill.name),
|
|
63
|
-
name: skill.name,
|
|
64
|
-
description: skill.description || `Skill: ${skill.name}`,
|
|
65
|
-
category: "skill",
|
|
66
|
-
tags: [],
|
|
67
|
-
body: `Skill loaded from ${skill.source}: ${skill.path}`,
|
|
68
|
-
source: { type: "skill", name: skill.name },
|
|
69
|
-
};
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export type ExportableResource =
|
|
73
|
-
| { kind: "agent"; config: AgentConfig }
|
|
74
|
-
| { kind: "team"; config: TeamConfig }
|
|
75
|
-
| { kind: "workflow"; config: WorkflowConfig }
|
|
76
|
-
| { kind: "skill"; config: SkillDescriptor };
|
|
77
|
-
|
|
78
|
-
export function resourcesToExportContent(resources: ExportableResource[]): ExportContent[] {
|
|
79
|
-
const results: ExportContent[] = [];
|
|
80
|
-
for (const resource of resources) {
|
|
81
|
-
switch (resource.kind) {
|
|
82
|
-
case "agent":
|
|
83
|
-
results.push(agentToExportContent(resource.config));
|
|
84
|
-
break;
|
|
85
|
-
case "team":
|
|
86
|
-
results.push(teamToExportContent(resource.config));
|
|
87
|
-
break;
|
|
88
|
-
case "workflow":
|
|
89
|
-
results.push(workflowToExportContent(resource.config));
|
|
90
|
-
break;
|
|
91
|
-
case "skill":
|
|
92
|
-
results.push(skillToExportContent(resource.config));
|
|
93
|
-
break;
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
return results;
|
|
97
|
-
}
|
|
98
|
-
|
|
99
|
-
export interface ToolExportResult {
|
|
100
|
-
toolId: string;
|
|
101
|
-
files: Array<{ path: string; content: string }>;
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
export function generateToolExport(toolId: string, resources: ExportableResource[], projectRoot?: string): ToolExportResult {
|
|
105
|
-
const adapter = adapterRegistry.get(toolId);
|
|
106
|
-
if (!adapter) {
|
|
107
|
-
throw new Error(
|
|
108
|
-
`Unknown export adapter: ${toolId}. Available: ${adapterRegistry
|
|
109
|
-
.getAll()
|
|
110
|
-
.map((a) => a.toolId)
|
|
111
|
-
.join(", ")}`,
|
|
112
|
-
);
|
|
113
|
-
}
|
|
114
|
-
const contents = resourcesToExportContent(resources);
|
|
115
|
-
const files = contents.map((content): { path: string; content: string } => {
|
|
116
|
-
const filePath = adapter.getFilePath(content);
|
|
117
|
-
// Validate path containment when a project root is provided
|
|
118
|
-
if (projectRoot) {
|
|
119
|
-
try {
|
|
120
|
-
resolveContainedPath(projectRoot, filePath);
|
|
121
|
-
} catch (e) {
|
|
122
|
-
throw new Error(
|
|
123
|
-
`Export path '${filePath}' escapes project root '${projectRoot}': ${e instanceof Error ? e.message : String(e)}`,
|
|
124
|
-
);
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
return {
|
|
128
|
-
path: filePath,
|
|
129
|
-
content: adapter.formatFile(content),
|
|
130
|
-
};
|
|
131
|
-
});
|
|
132
|
-
// Merge duplicate file paths (e.g., codex adapter maps everything to AGENTS.md)
|
|
133
|
-
const merged = new Map<string, string>();
|
|
134
|
-
for (const f of files) {
|
|
135
|
-
const existing = merged.get(f.path);
|
|
136
|
-
merged.set(f.path, existing ? `${existing}\n\n${f.content}` : f.content);
|
|
137
|
-
}
|
|
138
|
-
const mergedFiles = [...merged.entries()].map(([p, content]) => ({
|
|
139
|
-
path: p,
|
|
140
|
-
content,
|
|
141
|
-
}));
|
|
142
|
-
return { toolId, files: mergedFiles };
|
|
143
|
-
}
|
package/src/adapters/index.ts
DELETED
|
@@ -1,15 +0,0 @@
|
|
|
1
|
-
export { claudeAdapter } from "./claude-adapter.ts";
|
|
2
|
-
export { codexAdapter } from "./codex-adapter.ts";
|
|
3
|
-
export { cursorAdapter } from "./cursor-adapter.ts";
|
|
4
|
-
export { generateToolExport, resourcesToExportContent } from "./export-util.ts";
|
|
5
|
-
export { adapterRegistry, createAdapterRegistry } from "./registry.ts";
|
|
6
|
-
export type { AdapterRegistry, ExportAdapter, ExportContent } from "./types.ts";
|
|
7
|
-
|
|
8
|
-
import { claudeAdapter } from "./claude-adapter.ts";
|
|
9
|
-
import { codexAdapter } from "./codex-adapter.ts";
|
|
10
|
-
import { cursorAdapter } from "./cursor-adapter.ts";
|
|
11
|
-
import { adapterRegistry } from "./registry.ts";
|
|
12
|
-
|
|
13
|
-
adapterRegistry.register(claudeAdapter);
|
|
14
|
-
adapterRegistry.register(cursorAdapter);
|
|
15
|
-
adapterRegistry.register(codexAdapter);
|
package/src/adapters/registry.ts
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
import type { AdapterRegistry, ExportAdapter } from "./types.ts";
|
|
2
|
-
|
|
3
|
-
export function createAdapterRegistry(): AdapterRegistry {
|
|
4
|
-
const adapters = new Map<string, ExportAdapter>();
|
|
5
|
-
return {
|
|
6
|
-
get(toolId: string): ExportAdapter | undefined {
|
|
7
|
-
return adapters.get(toolId);
|
|
8
|
-
},
|
|
9
|
-
getAll(): ExportAdapter[] {
|
|
10
|
-
return [...adapters.values()];
|
|
11
|
-
},
|
|
12
|
-
register(adapter: ExportAdapter): void {
|
|
13
|
-
adapters.set(adapter.toolId, adapter);
|
|
14
|
-
},
|
|
15
|
-
};
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
export const adapterRegistry: AdapterRegistry = createAdapterRegistry();
|
package/src/adapters/types.ts
DELETED
|
@@ -1,23 +0,0 @@
|
|
|
1
|
-
export interface ExportContent {
|
|
2
|
-
id: string;
|
|
3
|
-
name: string;
|
|
4
|
-
description: string;
|
|
5
|
-
category: string;
|
|
6
|
-
tags: string[];
|
|
7
|
-
body: string;
|
|
8
|
-
source: { type: "agent" | "team" | "workflow" | "skill"; name: string };
|
|
9
|
-
}
|
|
10
|
-
|
|
11
|
-
export interface ExportAdapter {
|
|
12
|
-
readonly toolId: string;
|
|
13
|
-
readonly toolName: string;
|
|
14
|
-
readonly fileExtension: string;
|
|
15
|
-
getFilePath(content: ExportContent): string;
|
|
16
|
-
formatFile(content: ExportContent): string;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export interface AdapterRegistry {
|
|
20
|
-
get(toolId: string): ExportAdapter | undefined;
|
|
21
|
-
getAll(): ExportAdapter[];
|
|
22
|
-
register(adapter: ExportAdapter): void;
|
|
23
|
-
}
|
|
@@ -1,194 +0,0 @@
|
|
|
1
|
-
import type { RoleToolConfig } from "../config/role-tools.ts";
|
|
2
|
-
import { getToolConfig } from "../config/role-tools.ts";
|
|
3
|
-
|
|
4
|
-
/**
|
|
5
|
-
* F1 (v0.7.9): canonical built-in tool name list. Used by `parseToolsField`
|
|
6
|
-
* to expand wildcard `*` / `all` patterns in agent frontmatter. Matches
|
|
7
|
-
* pi-subagents' `BUILTIN_TOOL_NAMES` (derived from pi's `createCodingTools` /
|
|
8
|
-
* `createReadOnlyTools`). If pi adds a new built-in, update this list and
|
|
9
|
-
* the wildcard expansion will pick it up. The 7 names below are stable
|
|
10
|
-
* across pi v0.77+ and cover read, edit, write, bash, grep, find, ls.
|
|
11
|
-
*/
|
|
12
|
-
export const BUILTIN_TOOL_NAMES: readonly string[] = ["read", "edit", "write", "bash", "grep", "find", "ls"];
|
|
13
|
-
|
|
14
|
-
/**
|
|
15
|
-
* F1 (v0.7.9): normalize the raw `tools:` frontmatter CSV into a `string[]`.
|
|
16
|
-
* Semantics (matching pi-subagents' `parseToolsField`):
|
|
17
|
-
* - omitted / undefined → returns `undefined` (back-compat: use the
|
|
18
|
-
* runtime default — today this is the role-tools default; tomorrow this
|
|
19
|
-
* could become the wildcard expansion if the user opts in).
|
|
20
|
-
* - `*` or `all` (case-insensitive) → returns the full BUILTIN_TOOL_NAMES
|
|
21
|
-
* list (no duplicates).
|
|
22
|
-
* - `none` or empty string → returns `[]` (zero built-ins; extension
|
|
23
|
-
* tools via `ext:` can still be added, though pi-crew doesn't parse
|
|
24
|
-
* `ext:` selectors yet — see F1 sub-gap).
|
|
25
|
-
* - CSV → returns the parsed entries (trimmed, empty entries dropped).
|
|
26
|
-
* Plain tool names (no `*`) pass through unchanged so existing agent
|
|
27
|
-
* files keep working with no edits.
|
|
28
|
-
*/
|
|
29
|
-
export function parseToolsField(raw: unknown): string[] | undefined {
|
|
30
|
-
if (raw === undefined || raw === null) return undefined;
|
|
31
|
-
const s = typeof raw === "string" ? raw.trim() : String(raw).trim();
|
|
32
|
-
if (!s) return [];
|
|
33
|
-
const lowered = s.toLowerCase();
|
|
34
|
-
if (lowered === "none" || lowered === "[]") return [];
|
|
35
|
-
if (lowered === "*" || lowered === "all") return [...BUILTIN_TOOL_NAMES];
|
|
36
|
-
const items = s
|
|
37
|
-
.split(",")
|
|
38
|
-
.map((t) => t.trim())
|
|
39
|
-
.filter(Boolean);
|
|
40
|
-
return items;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
export type ResourceSource = "builtin" | "user" | "project" | "git" | "dynamic" | "project-pi";
|
|
44
|
-
|
|
45
|
-
export interface RoutingMetadata {
|
|
46
|
-
triggers?: string[];
|
|
47
|
-
useWhen?: string[];
|
|
48
|
-
avoidWhen?: string[];
|
|
49
|
-
cost?: "free" | "cheap" | "expensive";
|
|
50
|
-
category?: string;
|
|
51
|
-
}
|
|
52
|
-
|
|
53
|
-
export interface AgentConfig {
|
|
54
|
-
name: string;
|
|
55
|
-
description: string;
|
|
56
|
-
source: ResourceSource;
|
|
57
|
-
filePath: string;
|
|
58
|
-
systemPrompt: string;
|
|
59
|
-
model?: string;
|
|
60
|
-
fallbackModels?: string[];
|
|
61
|
-
thinking?: string;
|
|
62
|
-
tools?: string[];
|
|
63
|
-
extensions?: string[];
|
|
64
|
-
/**
|
|
65
|
-
* F1 (v0.7.9): extension denylist (case-insensitive plain names). Applied
|
|
66
|
-
* AFTER `extensions:` (which lists the allowed set) — an excluded
|
|
67
|
-
* extension is removed from the allowlist and never loads. Plain names
|
|
68
|
-
* only (no paths, no `*`); an unknown name logs a warning but is
|
|
69
|
-
* tolerated. Back-compat: omitted = no exclusion.
|
|
70
|
-
*/
|
|
71
|
-
excludeExtensions?: string[];
|
|
72
|
-
skills?: string[];
|
|
73
|
-
systemPromptMode?: "replace" | "append";
|
|
74
|
-
inheritProjectContext?: boolean;
|
|
75
|
-
inheritSkills?: boolean;
|
|
76
|
-
routing?: RoutingMetadata;
|
|
77
|
-
memory?: "user" | "project" | "local";
|
|
78
|
-
/** Tool loading strategy: "essential" = always load all tools, "lean" = only load tools in defaultTools list */
|
|
79
|
-
loadMode?: "essential" | "lean";
|
|
80
|
-
/** Explicit tool list when loadMode is "lean". null means all available tools. */
|
|
81
|
-
defaultTools?: string[] | null;
|
|
82
|
-
/** Context mode: "fresh" = clean start, "fork" = inherit parent session context */
|
|
83
|
-
contextMode?: "fresh" | "fork";
|
|
84
|
-
/** Maximum turns for this agent. Overrides runtime config if set. */
|
|
85
|
-
maxTurns?: number;
|
|
86
|
-
/** Cap on output tokens per API call. Set via PI_CREW_MAX_OUTPUT env in child. */
|
|
87
|
-
maxTokens?: number;
|
|
88
|
-
/** Effort level for this agent. Controls how much work the agent puts in. */
|
|
89
|
-
effort?: "low" | "medium" | "high";
|
|
90
|
-
/** Tools to explicitly forbid for this agent. Takes precedence over allowedTools. */
|
|
91
|
-
disallowedTools?: string[];
|
|
92
|
-
/** Disable ALL tools (Pi `--no-tools`). Used by capability-locked agents like the goal-judge (P1)
|
|
93
|
-
* that must have NO agency — only emit a verdict. §0c C6: an empty `tools:[]` is INSUFFICIENT
|
|
94
|
-
* because pi-args.ts skips empty arrays, leaving default tools enabled. */
|
|
95
|
-
disableTools?: boolean;
|
|
96
|
-
disabled?: boolean;
|
|
97
|
-
override?: { source: "config"; path: string };
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
/**
|
|
101
|
-
* Get session options (tools/excludeTools) for a specific role.
|
|
102
|
-
* Used by child-pi to apply role-based tool restrictions.
|
|
103
|
-
*/
|
|
104
|
-
export function getAgentSessionOptions(role: string): {
|
|
105
|
-
tools?: string[];
|
|
106
|
-
excludeTools?: string[];
|
|
107
|
-
} {
|
|
108
|
-
const config: RoleToolConfig = getToolConfig(role);
|
|
109
|
-
|
|
110
|
-
if (config.tools || config.excludeTools) {
|
|
111
|
-
return {
|
|
112
|
-
tools: config.tools,
|
|
113
|
-
excludeTools: config.excludeTools,
|
|
114
|
-
};
|
|
115
|
-
}
|
|
116
|
-
|
|
117
|
-
return {};
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* F1 unify (v0.8.0): the single source of truth for a worker's tool policy,
|
|
122
|
-
* used by BOTH spawn paths (child-pi `pi-args.ts` and live-session
|
|
123
|
-
* `live-session-runtime.ts`). Before this, the two paths disagreed:
|
|
124
|
-
* - child-pi: `roleConfig.tools ?? agent.tools` (role authoritative)
|
|
125
|
-
* - live-session: `agent.tools` only (frontmatter authoritative, role ignored)
|
|
126
|
-
* so the same agent behaved differently depending on the runtime. A user
|
|
127
|
-
* defining `tools:` or `disallowed_tools:` in a custom agent's frontmatter
|
|
128
|
-
* saw it honored on one path and ignored on the other.
|
|
129
|
-
*
|
|
130
|
-
* Unified semantics (stable across both paths):
|
|
131
|
-
* - **allowlist precedence is source-aware**:
|
|
132
|
-
* - `source === "builtin"` → role-config authoritative (security: a
|
|
133
|
-
* builtin explorer MUST stay read-only even if its frontmatter is
|
|
134
|
-
* loose). Frontmatter is the fallback when the role has no allowlist.
|
|
135
|
-
* - `source !== "builtin"` (user / project) → frontmatter `tools:`
|
|
136
|
-
* authoritative (user intent). Role-config is the fallback.
|
|
137
|
-
* - **denylist is additive**: `roleConfig.excludeTools` and
|
|
138
|
-
* `agent.disallowedTools` are MERGED (dedup, order-insensitive). It is
|
|
139
|
-
* always safe to forbid more, and merging means a security exclude
|
|
140
|
-
* from the role can never be weakened by a frontmatter omission.
|
|
141
|
-
*
|
|
142
|
-
* Returns `{ tools, excludeTools }` where each is `undefined` when no
|
|
143
|
-
* restriction of that kind applies (so callers no-op cleanly).
|
|
144
|
-
*/
|
|
145
|
-
export interface ResolvedToolPolicy {
|
|
146
|
-
/** Allowlist; undefined = no allowlist restriction (all built-ins allowed). */
|
|
147
|
-
tools?: string[];
|
|
148
|
-
/** Denylist (additive); undefined = no denylist. */
|
|
149
|
-
excludeTools?: string[];
|
|
150
|
-
}
|
|
151
|
-
|
|
152
|
-
function uniqueToolMerge(...lists: Array<string[] | undefined>): string[] | undefined {
|
|
153
|
-
const merged = [...new Set(lists.flatMap((list) => list ?? []))];
|
|
154
|
-
return merged.length > 0 ? merged : undefined;
|
|
155
|
-
}
|
|
156
|
-
|
|
157
|
-
export function resolveToolPolicy(agent: AgentConfig, role?: string): ResolvedToolPolicy {
|
|
158
|
-
const roleConfig = role ? getToolConfig(role) : {};
|
|
159
|
-
// allowlist: source-aware precedence (see doc above).
|
|
160
|
-
const explicitTools = agent.source === "builtin" ? (roleConfig.tools ?? agent.tools) : (agent.tools ?? roleConfig.tools);
|
|
161
|
-
// L5: when the agent opts into `loadMode: "lean"` AND provides a
|
|
162
|
-
// non-empty `defaultTools` list, merge that list into the resolved
|
|
163
|
-
// allowlist. The merge is additive (union, dedup, order-preserving) so
|
|
164
|
-
// the existing source-aware precedence is preserved and a lean agent
|
|
165
|
-
// gets a focused-but-non-empty tool set. Signal flow:
|
|
166
|
-
// agent YAML frontmatter (loadMode, defaultTools)
|
|
167
|
-
// → parsed into AgentConfig
|
|
168
|
-
// → resolveToolPolicy(agent, role) here
|
|
169
|
-
// → policy.tools returned to buildPiWorkerArgs
|
|
170
|
-
// → `args.push("--tools", policy.tools.join(","))` in pi-args.ts
|
|
171
|
-
// → child pi process sees the merged allowlist
|
|
172
|
-
const tools =
|
|
173
|
-
agent.loadMode === "lean" && agent.defaultTools?.length ? uniqueToolMerge(explicitTools, agent.defaultTools) : explicitTools;
|
|
174
|
-
// denylist: additive merge of role excludeTools + agent disallowedTools.
|
|
175
|
-
const excludeTools = uniqueToolMerge(roleConfig.excludeTools, agent.disallowedTools);
|
|
176
|
-
return { tools, excludeTools };
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
/**
|
|
180
|
-
* Build agent session options including role-based tool restrictions.
|
|
181
|
-
* @param agent - The agent configuration
|
|
182
|
-
* @param role - The role name to use for tool restrictions (defaults to agent.name)
|
|
183
|
-
*/
|
|
184
|
-
/** @internal */
|
|
185
|
-
function buildAgentSessionOptions(
|
|
186
|
-
agent: AgentConfig,
|
|
187
|
-
role?: string,
|
|
188
|
-
): {
|
|
189
|
-
tools?: string[];
|
|
190
|
-
excludeTools?: string[];
|
|
191
|
-
} {
|
|
192
|
-
const effectiveRole = role ?? agent.name;
|
|
193
|
-
return getAgentSessionOptions(effectiveRole);
|
|
194
|
-
}
|
|
@@ -1,98 +0,0 @@
|
|
|
1
|
-
import type { AgentConfig } from "./agent-config.ts";
|
|
2
|
-
|
|
3
|
-
// ─── BM25 Agent Search ──────────────────────────────────────────────────────
|
|
4
|
-
// Lightweight BM25 search over agent descriptors for task-to-agent matching.
|
|
5
|
-
// Based on the same BM25 algorithm used in oh-my-pi's tool-index.ts.
|
|
6
|
-
|
|
7
|
-
export interface AgentSearchDocument {
|
|
8
|
-
agent: AgentConfig;
|
|
9
|
-
termFrequencies: Map<string, number>;
|
|
10
|
-
length: number;
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
export interface AgentSearchIndex {
|
|
14
|
-
documents: AgentSearchDocument[];
|
|
15
|
-
averageLength: number;
|
|
16
|
-
documentFrequencies: Map<string, number>;
|
|
17
|
-
}
|
|
18
|
-
|
|
19
|
-
export interface AgentSearchResult {
|
|
20
|
-
agent: AgentConfig;
|
|
21
|
-
score: number;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
const BM25_K1 = 1.2;
|
|
25
|
-
const BM25_B = 0.75;
|
|
26
|
-
const FIELD_WEIGHTS = {
|
|
27
|
-
name: 6,
|
|
28
|
-
description: 2,
|
|
29
|
-
role: 3,
|
|
30
|
-
} as const;
|
|
31
|
-
|
|
32
|
-
function tokenize(value: string): string[] {
|
|
33
|
-
return value
|
|
34
|
-
.replace(/([a-z0-9])([A-Z])/g, "$1 $2")
|
|
35
|
-
.replace(/[^a-zA-Z0-9]+/g, " ")
|
|
36
|
-
.toLowerCase()
|
|
37
|
-
.trim()
|
|
38
|
-
.split(/\s+/)
|
|
39
|
-
.filter((token) => token.length > 0);
|
|
40
|
-
}
|
|
41
|
-
|
|
42
|
-
function addWeightedTokens(termFrequencies: Map<string, number>, value: string | undefined, weight: number): void {
|
|
43
|
-
if (!value) return;
|
|
44
|
-
for (const token of tokenize(value)) {
|
|
45
|
-
termFrequencies.set(token, (termFrequencies.get(token) ?? 0) + weight);
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
|
|
49
|
-
function buildAgentSearchDocument(agent: AgentConfig): AgentSearchDocument {
|
|
50
|
-
const termFrequencies = new Map<string, number>();
|
|
51
|
-
addWeightedTokens(termFrequencies, agent.name, FIELD_WEIGHTS.name);
|
|
52
|
-
addWeightedTokens(termFrequencies, agent.description, FIELD_WEIGHTS.description);
|
|
53
|
-
// Role from agent name heuristic
|
|
54
|
-
const roleHint = agent.name?.replace(/[-_]/g, " ") ?? "";
|
|
55
|
-
addWeightedTokens(termFrequencies, roleHint, FIELD_WEIGHTS.role);
|
|
56
|
-
const length = Array.from(termFrequencies.values()).reduce((sum, value) => sum + value, 0);
|
|
57
|
-
return { agent, termFrequencies, length };
|
|
58
|
-
}
|
|
59
|
-
|
|
60
|
-
export function buildAgentSearchIndex(agents: Iterable<AgentConfig>): AgentSearchIndex {
|
|
61
|
-
const documents = Array.from(agents, buildAgentSearchDocument);
|
|
62
|
-
const averageLength = documents.reduce((sum, document) => sum + document.length, 0) / documents.length || 1;
|
|
63
|
-
const documentFrequencies = new Map<string, number>();
|
|
64
|
-
for (const document of documents) {
|
|
65
|
-
for (const token of new Set(document.termFrequencies.keys())) {
|
|
66
|
-
documentFrequencies.set(token, (documentFrequencies.get(token) ?? 0) + 1);
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
return { documents, averageLength, documentFrequencies };
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
export function searchAgents(index: AgentSearchIndex, query: string, limit: number): AgentSearchResult[] {
|
|
73
|
-
const queryTokens = tokenize(query);
|
|
74
|
-
if (queryTokens.length === 0) return [];
|
|
75
|
-
if (index.documents.length === 0) return [];
|
|
76
|
-
|
|
77
|
-
const queryTermCounts = new Map<string, number>();
|
|
78
|
-
for (const token of queryTokens) {
|
|
79
|
-
queryTermCounts.set(token, (queryTermCounts.get(token) ?? 0) + 1);
|
|
80
|
-
}
|
|
81
|
-
|
|
82
|
-
return index.documents
|
|
83
|
-
.map((document) => {
|
|
84
|
-
let score = 0;
|
|
85
|
-
for (const [token, queryTermCount] of queryTermCounts) {
|
|
86
|
-
const termFrequency = document.termFrequencies.get(token) ?? 0;
|
|
87
|
-
if (termFrequency === 0) continue;
|
|
88
|
-
const documentFrequency = index.documentFrequencies.get(token) ?? 0;
|
|
89
|
-
const idf = Math.log(1 + (index.documents.length - documentFrequency + 0.5) / (documentFrequency + 0.5));
|
|
90
|
-
const normalization = BM25_K1 * (1 - BM25_B + BM25_B * (document.length / index.averageLength));
|
|
91
|
-
score += queryTermCount * idf * ((termFrequency * (BM25_K1 + 1)) / (termFrequency + normalization));
|
|
92
|
-
}
|
|
93
|
-
return { agent: document.agent, score };
|
|
94
|
-
})
|
|
95
|
-
.filter((result) => result.score > 0)
|
|
96
|
-
.sort((left, right) => right.score - left.score || left.agent.name.localeCompare(right.agent.name))
|
|
97
|
-
.slice(0, limit);
|
|
98
|
-
}
|
|
@@ -1,38 +0,0 @@
|
|
|
1
|
-
import type { AgentConfig } from "./agent-config.ts";
|
|
2
|
-
|
|
3
|
-
function line(key: string, value: string | boolean | string[] | undefined): string | undefined {
|
|
4
|
-
if (value === undefined) return undefined;
|
|
5
|
-
if (Array.isArray(value)) return `${key}: ${value.join(", ")}`;
|
|
6
|
-
return `${key}: ${String(value)}`;
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
export function serializeAgent(agent: AgentConfig): string {
|
|
10
|
-
const lines = [
|
|
11
|
-
"---",
|
|
12
|
-
`name: ${agent.name}`,
|
|
13
|
-
`description: ${agent.description}`,
|
|
14
|
-
line("model", agent.model),
|
|
15
|
-
line("fallbackModels", agent.fallbackModels),
|
|
16
|
-
line("thinking", agent.thinking),
|
|
17
|
-
line("tools", agent.tools),
|
|
18
|
-
agent.extensions !== undefined ? (line("extensions", agent.extensions) ?? "extensions:") : undefined,
|
|
19
|
-
line("skills", agent.skills),
|
|
20
|
-
line("systemPromptMode", agent.systemPromptMode),
|
|
21
|
-
line("inheritProjectContext", agent.inheritProjectContext),
|
|
22
|
-
line("inheritSkills", agent.inheritSkills),
|
|
23
|
-
line("memory", agent.memory),
|
|
24
|
-
line("loadMode", agent.loadMode),
|
|
25
|
-
line("defaultTools", agent.defaultTools ?? undefined),
|
|
26
|
-
line("contextMode", agent.contextMode),
|
|
27
|
-
line("triggers", agent.routing?.triggers),
|
|
28
|
-
line("useWhen", agent.routing?.useWhen),
|
|
29
|
-
line("avoidWhen", agent.routing?.avoidWhen),
|
|
30
|
-
line("cost", agent.routing?.cost),
|
|
31
|
-
line("category", agent.routing?.category),
|
|
32
|
-
"---",
|
|
33
|
-
"",
|
|
34
|
-
agent.systemPrompt.trim(),
|
|
35
|
-
"",
|
|
36
|
-
].filter((entry): entry is string => entry !== undefined);
|
|
37
|
-
return lines.join("\n");
|
|
38
|
-
}
|