peaks-loop 4.1.1 → 4.1.3
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/.claude-plugin/marketplace.json +136 -47
- package/CHANGELOG.md +106 -0
- package/README-en.md +4 -4
- package/README.md +25 -4
- package/bin/node-floor.mjs +59 -0
- package/bin/peaks.js +13 -0
- package/config/eslint/tsconfig.lint.json +2 -1
- package/contracts/readonly-argv-whitelist.json +211 -0
- package/dist/cli/cli-helpers.d.ts +0 -1
- package/dist/cli/cli-helpers.js +0 -1
- package/dist/cli/commands/_cli-error-envelope.js +0 -3
- package/dist/cli/commands/adapter-commands-s2a.d.ts +0 -1
- package/dist/cli/commands/adapter-commands.d.ts +0 -1
- package/dist/cli/commands/api-diff-commands.d.ts +0 -1
- package/dist/cli/commands/api-diff-commands.js +0 -1
- package/dist/cli/commands/audit-artifact-runners.d.ts +16 -0
- package/dist/cli/commands/audit-artifact-runners.js +170 -0
- package/dist/cli/commands/audit-command-shared.d.ts +97 -0
- package/dist/cli/commands/audit-command-shared.js +60 -0
- package/dist/cli/commands/audit-commands.d.ts +7 -31
- package/dist/cli/commands/audit-commands.js +65 -477
- package/dist/cli/commands/audit-goal-runners.d.ts +17 -0
- package/dist/cli/commands/audit-goal-runners.js +114 -0
- package/dist/cli/commands/audit-red-lines-runners.d.ts +11 -0
- package/dist/cli/commands/audit-red-lines-runners.js +43 -0
- package/dist/cli/commands/audit-refusal-data.d.ts +23 -0
- package/dist/cli/commands/audit-refusal-data.js +69 -0
- package/dist/cli/commands/audit-static-runners.d.ts +13 -0
- package/dist/cli/commands/audit-static-runners.js +139 -0
- package/dist/cli/commands/autonomous-swarm-commands.js +0 -1
- package/dist/cli/commands/await-runners.d.ts +11 -0
- package/dist/cli/commands/await-runners.js +148 -0
- package/dist/cli/commands/bee-commands.d.ts +0 -2
- package/dist/cli/commands/bee-commands.js +0 -2
- package/dist/cli/commands/best-practice-scan-command.d.ts +0 -1
- package/dist/cli/commands/best-practice-scan-helpers.js +0 -1
- package/dist/cli/commands/changeset-commands.d.ts +0 -2
- package/dist/cli/commands/changeset-commands.js +0 -2
- package/dist/cli/commands/code-auto-compact-command.d.ts +3 -0
- package/dist/cli/commands/code-auto-compact-command.js +124 -0
- package/dist/cli/commands/code-auto-compact-envelope.d.ts +22 -0
- package/dist/cli/commands/code-auto-compact-envelope.js +39 -0
- package/dist/cli/commands/code-commands.d.ts +0 -3
- package/dist/cli/commands/code-commands.js +0 -3
- package/dist/cli/commands/code-context-audit-command.d.ts +3 -0
- package/dist/cli/commands/code-context-audit-command.js +68 -0
- package/dist/cli/commands/code-context-now-command.d.ts +3 -0
- package/dist/cli/commands/code-context-now-command.js +124 -0
- package/dist/cli/commands/code-context-now-envelope.d.ts +66 -0
- package/dist/cli/commands/code-context-now-envelope.js +136 -0
- package/dist/cli/commands/code-context-now-mapping.d.ts +27 -0
- package/dist/cli/commands/code-context-now-mapping.js +43 -0
- package/dist/cli/commands/code-emit-handoff-command.d.ts +3 -0
- package/dist/cli/commands/code-emit-handoff-command.js +99 -0
- package/dist/cli/commands/code-gate-command.d.ts +0 -1
- package/dist/cli/commands/code-gate-command.js +0 -1
- package/dist/cli/commands/code-gate-step-08-command.d.ts +3 -0
- package/dist/cli/commands/code-gate-step-08-command.js +139 -0
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.d.ts +0 -1
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.js +0 -1
- package/dist/cli/commands/code-job-shape-commands.d.ts +0 -2
- package/dist/cli/commands/code-job-shape-commands.js +0 -3
- package/dist/cli/commands/code-mode-gate-commands.d.ts +0 -2
- package/dist/cli/commands/code-mode-gate-commands.js +0 -3
- package/dist/cli/commands/code-mode-gate-should-pause-command.js +0 -4
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.d.ts +0 -1
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.js +0 -2
- package/dist/cli/commands/code-mode-status-command.d.ts +0 -1
- package/dist/cli/commands/code-mode-status-command.js +0 -1
- package/dist/cli/commands/code-orchestrator-can-do.d.ts +0 -1
- package/dist/cli/commands/code-orchestrator-can-do.js +0 -1
- package/dist/cli/commands/code-post-compact-detect-command.d.ts +3 -0
- package/dist/cli/commands/code-post-compact-detect-command.js +50 -0
- package/dist/cli/commands/code-run-command.js +0 -1
- package/dist/cli/commands/code-runtime-commands.d.ts +9 -46
- package/dist/cli/commands/code-runtime-commands.js +20 -687
- package/dist/cli/commands/code-runtime-session.d.ts +1 -0
- package/dist/cli/commands/code-runtime-session.js +15 -0
- package/dist/cli/commands/codegraph-command-runtime.d.ts +6 -0
- package/dist/cli/commands/codegraph-command-runtime.js +19 -7
- package/dist/cli/commands/codegraph-commands.js +20 -193
- package/dist/cli/commands/codegraph-init-command.d.ts +8 -0
- package/dist/cli/commands/codegraph-init-command.js +162 -0
- package/dist/cli/commands/codegraph-status-command.js +5 -6
- package/dist/cli/commands/compact-command.d.ts +6 -3
- package/dist/cli/commands/compact-command.js +12 -563
- package/dist/cli/commands/compact-dry-run-command.d.ts +3 -0
- package/dist/cli/commands/compact-dry-run-command.js +87 -0
- package/dist/cli/commands/compact-force-command.d.ts +3 -0
- package/dist/cli/commands/compact-force-command.js +98 -0
- package/dist/cli/commands/compact-harness-window-command.d.ts +3 -0
- package/dist/cli/commands/compact-harness-window-command.js +174 -0
- package/dist/cli/commands/compact-history-command.d.ts +3 -0
- package/dist/cli/commands/compact-history-command.js +89 -0
- package/dist/cli/commands/compact-read-commands.d.ts +3 -0
- package/dist/cli/commands/compact-read-commands.js +123 -0
- package/dist/cli/commands/compact-settle-command.d.ts +3 -0
- package/dist/cli/commands/compact-settle-command.js +130 -0
- package/dist/cli/commands/compact-shared.d.ts +9 -0
- package/dist/cli/commands/compact-shared.js +26 -0
- package/dist/cli/commands/container-commands.d.ts +0 -1
- package/dist/cli/commands/container-commands.js +0 -1
- package/dist/cli/commands/context-commands.d.ts +0 -1
- package/dist/cli/commands/context-commands.js +0 -1
- package/dist/cli/commands/core/doctor-command.d.ts +0 -1
- package/dist/cli/commands/core/doctor-command.js +0 -9
- package/dist/cli/commands/core/memory-command.js +0 -1
- package/dist/cli/commands/core/session-command.js +0 -14
- package/dist/cli/commands/core/skill-command.d.ts +1 -44
- package/dist/cli/commands/core/skill-command.js +13 -550
- package/dist/cli/commands/core/skill-context-verdict.d.ts +38 -0
- package/dist/cli/commands/core/skill-context-verdict.js +63 -0
- package/dist/cli/commands/core/skill-generated-config-notice.d.ts +41 -0
- package/dist/cli/commands/core/skill-generated-config-notice.js +75 -0
- package/dist/cli/commands/core/skill-heartbeat-commands.d.ts +3 -0
- package/dist/cli/commands/core/skill-heartbeat-commands.js +50 -0
- package/dist/cli/commands/core/skill-presence-commands.d.ts +3 -0
- package/dist/cli/commands/core/skill-presence-commands.js +123 -0
- package/dist/cli/commands/core/skill-presence-housekeeping-commands.d.ts +3 -0
- package/dist/cli/commands/core/skill-presence-housekeeping-commands.js +165 -0
- package/dist/cli/commands/core/skill-registry-commands.d.ts +3 -0
- package/dist/cli/commands/core/skill-registry-commands.js +117 -0
- package/dist/cli/commands/core/skill-runbook-command.d.ts +3 -0
- package/dist/cli/commands/core/skill-runbook-command.js +29 -0
- package/dist/cli/commands/core-artifact-commands.d.ts +0 -1
- package/dist/cli/commands/core-artifact-commands.js +0 -1
- package/dist/cli/commands/cron-commands-actions.d.ts +0 -1
- package/dist/cli/commands/cron-commands-actions.js +0 -2
- package/dist/cli/commands/cron-commands-schedule.d.ts +0 -3
- package/dist/cli/commands/cron-commands-schedule.js +0 -1
- package/dist/cli/commands/cron-commands.d.ts +0 -1
- package/dist/cli/commands/cron-commands.js +0 -2
- package/dist/cli/commands/cron-scheduler-commands.d.ts +0 -1
- package/dist/cli/commands/cron-scheduler-commands.js +0 -1
- package/dist/cli/commands/cron-scheduler-persist.d.ts +0 -5
- package/dist/cli/commands/cron-scheduler-persist.js +0 -5
- package/dist/cli/commands/dashboard-summary.d.ts +0 -1
- package/dist/cli/commands/dispatch-command-spec.d.ts +2 -0
- package/dist/cli/commands/dispatch-command-spec.js +62 -0
- package/dist/cli/commands/dispatch-commands.d.ts +0 -1
- package/dist/cli/commands/dispatch-commands.js +159 -802
- package/dist/cli/commands/dispatch-detached-branch.d.ts +3 -0
- package/dist/cli/commands/dispatch-detached-branch.js +58 -0
- package/dist/cli/commands/dispatch-envelope.d.ts +36 -0
- package/dist/cli/commands/dispatch-envelope.js +104 -0
- package/dist/cli/commands/dispatch-from-dag.js +0 -4
- package/dist/cli/commands/dispatch-isolation-lease.d.ts +17 -0
- package/dist/cli/commands/dispatch-isolation-lease.js +149 -0
- package/dist/cli/commands/dispatch-preflight.d.ts +7 -0
- package/dist/cli/commands/dispatch-preflight.js +105 -0
- package/dist/cli/commands/dispatch-prompt-blocks.d.ts +10 -0
- package/dist/cli/commands/dispatch-prompt-blocks.js +56 -0
- package/dist/cli/commands/dispatch-prompt-composition.d.ts +30 -0
- package/dist/cli/commands/dispatch-prompt-composition.js +171 -0
- package/dist/cli/commands/dispatch-record-write.d.ts +24 -0
- package/dist/cli/commands/dispatch-record-write.js +96 -0
- package/dist/cli/commands/dispatch-tool-call.d.ts +15 -0
- package/dist/cli/commands/dispatch-tool-call.js +128 -0
- package/dist/cli/commands/doctor/invoke-from-code.js +0 -1
- package/dist/cli/commands/e2e-verify.d.ts +0 -1
- package/dist/cli/commands/ecc-commands.d.ts +0 -1
- package/dist/cli/commands/evolution-command-shared.d.ts +78 -0
- package/dist/cli/commands/evolution-command-shared.js +107 -0
- package/dist/cli/commands/evolution-commands.d.ts +11 -2
- package/dist/cli/commands/evolution-commands.js +19 -351
- package/dist/cli/commands/evolution-evaluate-command.d.ts +24 -0
- package/dist/cli/commands/evolution-evaluate-command.js +138 -0
- package/dist/cli/commands/evolution-propose-command.d.ts +23 -0
- package/dist/cli/commands/evolution-propose-command.js +145 -0
- package/dist/cli/commands/evolution-status-command.d.ts +17 -0
- package/dist/cli/commands/evolution-status-command.js +41 -0
- package/dist/cli/commands/evolution-verdict-commands.d.ts +30 -0
- package/dist/cli/commands/evolution-verdict-commands.js +100 -0
- package/dist/cli/commands/feedback-commands.d.ts +0 -1
- package/dist/cli/commands/feedback-commands.js +0 -2
- package/dist/cli/commands/finalize-accumulator.d.ts +44 -0
- package/dist/cli/commands/finalize-accumulator.js +55 -0
- package/dist/cli/commands/finalize-branches.d.ts +34 -0
- package/dist/cli/commands/finalize-branches.js +119 -0
- package/dist/cli/commands/finalize-runners.d.ts +3 -0
- package/dist/cli/commands/finalize-runners.js +92 -0
- package/dist/cli/commands/finalize-selection.d.ts +65 -0
- package/dist/cli/commands/finalize-selection.js +35 -0
- package/dist/cli/commands/fixture-commands.d.ts +0 -2
- package/dist/cli/commands/fresh-context-commands.d.ts +0 -1
- package/dist/cli/commands/gate-commands-enforce.d.ts +0 -3
- package/dist/cli/commands/gate-commands-enforce.js +0 -4
- package/dist/cli/commands/gate-commands.js +26 -10
- package/dist/cli/commands/governance-classify-contract-commands.d.ts +0 -3
- package/dist/cli/commands/governance-classify-contract-commands.js +0 -4
- package/dist/cli/commands/heartbeat-commands-action.js +0 -6
- package/dist/cli/commands/heartbeat-commands-validation.d.ts +0 -2
- package/dist/cli/commands/heartbeat-commands-validation.js +0 -2
- package/dist/cli/commands/heartbeat-commands.d.ts +0 -1
- package/dist/cli/commands/heartbeat-commands.js +0 -1
- package/dist/cli/commands/hooks-commands.js +0 -11
- package/dist/cli/commands/ide-commands.d.ts +0 -1
- package/dist/cli/commands/job-add-slice-command.d.ts +0 -2
- package/dist/cli/commands/job-add-slice-command.js +0 -2
- package/dist/cli/commands/job-checkpoint-commands.d.ts +3 -0
- package/dist/cli/commands/job-checkpoint-commands.js +157 -0
- package/dist/cli/commands/job-command-shared.d.ts +109 -0
- package/dist/cli/commands/job-command-shared.js +72 -0
- package/dist/cli/commands/job-commands.d.ts +4 -64
- package/dist/cli/commands/job-commands.js +42 -556
- package/dist/cli/commands/job-cost-check-command.d.ts +3 -0
- package/dist/cli/commands/job-cost-check-command.js +41 -0
- package/dist/cli/commands/job-init-status-commands.d.ts +3 -0
- package/dist/cli/commands/job-init-status-commands.js +149 -0
- package/dist/cli/commands/job-run-commands.d.ts +3 -0
- package/dist/cli/commands/job-run-commands.js +97 -0
- package/dist/cli/commands/job-state-root.d.ts +35 -0
- package/dist/cli/commands/job-state-root.js +76 -0
- package/dist/cli/commands/lease-metrics-commands.d.ts +0 -1
- package/dist/cli/commands/lease-metrics-commands.js +0 -1
- package/dist/cli/commands/lease-stats-commands.d.ts +0 -1
- package/dist/cli/commands/lease-stats-commands.js +0 -1
- package/dist/cli/commands/log-commands.d.ts +0 -2
- package/dist/cli/commands/log-commands.js +0 -3
- package/dist/cli/commands/loop-eval-capture-index.d.ts +4 -0
- package/dist/cli/commands/loop-eval-capture-index.js +44 -0
- package/dist/cli/commands/loop-eval-commands.d.ts +8 -5
- package/dist/cli/commands/loop-eval-commands.js +12 -629
- package/dist/cli/commands/loop-eval-eval-command.d.ts +3 -0
- package/dist/cli/commands/loop-eval-eval-command.js +168 -0
- package/dist/cli/commands/loop-eval-monotonic-command.d.ts +3 -0
- package/dist/cli/commands/loop-eval-monotonic-command.js +90 -0
- package/dist/cli/commands/loop-eval-parents.d.ts +7 -0
- package/dist/cli/commands/loop-eval-parents.js +20 -0
- package/dist/cli/commands/loop-eval-run-code.d.ts +7 -0
- package/dist/cli/commands/loop-eval-run-code.js +40 -0
- package/dist/cli/commands/loop-eval-run-command.d.ts +3 -0
- package/dist/cli/commands/loop-eval-run-command.js +113 -0
- package/dist/cli/commands/loop-eval-spec-commands.d.ts +3 -0
- package/dist/cli/commands/loop-eval-spec-commands.js +165 -0
- package/dist/cli/commands/loop-eval-spec-lint-command.d.ts +3 -0
- package/dist/cli/commands/loop-eval-spec-lint-command.js +42 -0
- package/dist/cli/commands/loop-eval-workflow-commands.d.ts +3 -0
- package/dist/cli/commands/loop-eval-workflow-commands.js +141 -0
- package/dist/cli/commands/mcp-commands.d.ts +10 -0
- package/dist/cli/commands/mcp-commands.js +157 -0
- package/dist/cli/commands/memory-commands.d.ts +0 -1
- package/dist/cli/commands/memory-commands.js +0 -1
- package/dist/cli/commands/observability-commands.d.ts +0 -6
- package/dist/cli/commands/observability-commands.js +0 -6
- package/dist/cli/commands/outer-cache-commands.js +0 -2
- package/dist/cli/commands/playwright-commands.d.ts +0 -1
- package/dist/cli/commands/playwright-commands.js +0 -1
- package/dist/cli/commands/polyrepo-commands.d.ts +0 -1
- package/dist/cli/commands/prd-commands.d.ts +0 -1
- package/dist/cli/commands/prd-commands.js +0 -2
- package/dist/cli/commands/preferences-commands.js +0 -2
- package/dist/cli/commands/primer-command.d.ts +0 -1
- package/dist/cli/commands/primer-command.js +0 -1
- package/dist/cli/commands/project-commands.js +0 -1
- package/dist/cli/commands/qa-commands.d.ts +0 -1
- package/dist/cli/commands/qa-commands.js +0 -2
- package/dist/cli/commands/release-commands.js +0 -9
- package/dist/cli/commands/request-command-options.d.ts +49 -0
- package/dist/cli/commands/request-command-options.js +1 -0
- package/dist/cli/commands/request-commands.d.ts +3 -10
- package/dist/cli/commands/request-commands.js +17 -532
- package/dist/cli/commands/request-format-helpers.d.ts +0 -1
- package/dist/cli/commands/request-format-helpers.js +0 -2
- package/dist/cli/commands/request-init-command.d.ts +3 -0
- package/dist/cli/commands/request-init-command.js +100 -0
- package/dist/cli/commands/request-lint-command.d.ts +3 -0
- package/dist/cli/commands/request-lint-command.js +50 -0
- package/dist/cli/commands/request-list-command.d.ts +10 -0
- package/dist/cli/commands/request-list-command.js +53 -0
- package/dist/cli/commands/request-repair-status-command.d.ts +3 -0
- package/dist/cli/commands/request-repair-status-command.js +61 -0
- package/dist/cli/commands/request-show-command.d.ts +3 -0
- package/dist/cli/commands/request-show-command.js +56 -0
- package/dist/cli/commands/request-transition-command.d.ts +3 -0
- package/dist/cli/commands/request-transition-command.js +122 -0
- package/dist/cli/commands/request-transition-failures.d.ts +8 -0
- package/dist/cli/commands/request-transition-failures.js +90 -0
- package/dist/cli/commands/request-transition-hooks.d.ts +50 -0
- package/dist/cli/commands/request-transition-hooks.js +115 -0
- package/dist/cli/commands/request-transition-preflight.d.ts +10 -0
- package/dist/cli/commands/request-transition-preflight.js +107 -0
- package/dist/cli/commands/runtime-commands.d.ts +0 -1
- package/dist/cli/commands/sc-commands.js +0 -1
- package/dist/cli/commands/scan-command-shared.d.ts +96 -0
- package/dist/cli/commands/scan-command-shared.js +83 -0
- package/dist/cli/commands/scan-commands.d.ts +3 -2
- package/dist/cli/commands/scan-commands.js +23 -463
- package/dist/cli/commands/scan-inventory-commands.d.ts +3 -0
- package/dist/cli/commands/scan-inventory-commands.js +96 -0
- package/dist/cli/commands/scan-project-commands.d.ts +3 -0
- package/dist/cli/commands/scan-project-commands.js +65 -0
- package/dist/cli/commands/scan-scope-commands.d.ts +3 -0
- package/dist/cli/commands/scan-scope-commands.js +149 -0
- package/dist/cli/commands/scan-scope-helpers.d.ts +8 -0
- package/dist/cli/commands/scan-scope-helpers.js +54 -0
- package/dist/cli/commands/scan-structural-commands.d.ts +3 -0
- package/dist/cli/commands/scan-structural-commands.js +113 -0
- package/dist/cli/commands/session-24h-mode.d.ts +0 -1
- package/dist/cli/commands/session-24h-mode.js +0 -2
- package/dist/cli/commands/session-checkpoint-command.d.ts +0 -1
- package/dist/cli/commands/session-checkpoint-command.js +0 -1
- package/dist/cli/commands/session-resume-command.d.ts +0 -1
- package/dist/cli/commands/session-resume-command.js +0 -1
- package/dist/cli/commands/shadcn-commands.js +0 -2
- package/dist/cli/commands/share-commands.d.ts +12 -71
- package/dist/cli/commands/share-commands.js +47 -569
- package/dist/cli/commands/share-error-hints.d.ts +14 -0
- package/dist/cli/commands/share-error-hints.js +38 -0
- package/dist/cli/commands/share-identity.d.ts +13 -0
- package/dist/cli/commands/share-identity.js +22 -0
- package/dist/cli/commands/share-record-paths.d.ts +37 -0
- package/dist/cli/commands/share-record-paths.js +68 -0
- package/dist/cli/commands/share-runners.d.ts +3 -0
- package/dist/cli/commands/share-runners.js +158 -0
- package/dist/cli/commands/shared-read-runners.d.ts +3 -0
- package/dist/cli/commands/shared-read-runners.js +51 -0
- package/dist/cli/commands/skill-search-commands.d.ts +0 -2
- package/dist/cli/commands/slice-check-command.d.ts +3 -0
- package/dist/cli/commands/slice-check-command.js +54 -0
- package/dist/cli/commands/slice-commands.d.ts +2 -22
- package/dist/cli/commands/slice-commands.js +18 -519
- package/dist/cli/commands/slice-decompose-artifacts.d.ts +18 -0
- package/dist/cli/commands/slice-decompose-artifacts.js +79 -0
- package/dist/cli/commands/slice-decompose-command.d.ts +3 -0
- package/dist/cli/commands/slice-decompose-command.js +123 -0
- package/dist/cli/commands/slice-integrate-commands.js +0 -1
- package/dist/cli/commands/slice-list-commands.d.ts +3 -0
- package/dist/cli/commands/slice-list-commands.js +182 -0
- package/dist/cli/commands/slice-pick-command.d.ts +3 -0
- package/dist/cli/commands/slice-pick-command.js +60 -0
- package/dist/cli/commands/slice-plan-command.d.ts +24 -0
- package/dist/cli/commands/slice-plan-command.js +111 -0
- package/dist/cli/commands/spill-demo-command.d.ts +0 -1
- package/dist/cli/commands/statusline-commands.js +0 -4
- package/dist/cli/commands/sub-agent/detached.js +0 -2
- package/dist/cli/commands/sub-agent-commands.d.ts +0 -3
- package/dist/cli/commands/sub-agent-shared.d.ts +0 -8
- package/dist/cli/commands/sub-agent-shared.js +0 -5
- package/dist/cli/commands/sub-agent-shutdown-commands.d.ts +0 -1
- package/dist/cli/commands/tech-commands.d.ts +0 -4
- package/dist/cli/commands/tech-commands.js +0 -4
- package/dist/cli/commands/vendor-detect.d.ts +0 -3
- package/dist/cli/commands/vendor-detect.js +0 -2
- package/dist/cli/commands/verdict-aggregate-command.d.ts +0 -1
- package/dist/cli/commands/verdict-aggregate-command.js +0 -7
- package/dist/cli/commands/vm-commands.d.ts +0 -1
- package/dist/cli/commands/vm-commands.js +5 -29
- package/dist/cli/commands/vm-hypervisor-probe.d.ts +27 -0
- package/dist/cli/commands/vm-hypervisor-probe.js +78 -0
- package/dist/cli/commands/vm-status-command.d.ts +3 -0
- package/dist/cli/commands/vm-status-command.js +50 -0
- package/dist/cli/commands/wave-plan-commands.d.ts +0 -1
- package/dist/cli/commands/web-lifecycle-commands.d.ts +0 -1
- package/dist/cli/commands/workflow-commands.d.ts +10 -1
- package/dist/cli/commands/workflow-commands.js +6 -608
- package/dist/cli/commands/workflow-gate-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-gate-commands.js +116 -0
- package/dist/cli/commands/workflow-plan-commands-actions.js +0 -2
- package/dist/cli/commands/workflow-plan-commands-session.js +0 -2
- package/dist/cli/commands/workflow-plan-commands.d.ts +0 -1
- package/dist/cli/commands/workflow-plan-helpers.d.ts +48 -0
- package/dist/cli/commands/workflow-plan-helpers.js +103 -0
- package/dist/cli/commands/workflow-planning-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-planning-commands.js +56 -0
- package/dist/cli/commands/workflow-swarm-actions.d.ts +7 -0
- package/dist/cli/commands/workflow-swarm-actions.js +109 -0
- package/dist/cli/commands/workflow-swarm-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-swarm-commands.js +138 -0
- package/dist/cli/commands/workflow-tech-actions.d.ts +10 -0
- package/dist/cli/commands/workflow-tech-actions.js +150 -0
- package/dist/cli/commands/workspace/clean-command.d.ts +0 -1
- package/dist/cli/commands/workspace/clean-command.js +0 -1
- package/dist/cli/commands/workspace/helpers.d.ts +0 -1
- package/dist/cli/commands/workspace/helpers.js +0 -1
- package/dist/cli/commands/workspace/init-actions.d.ts +10 -0
- package/dist/cli/commands/workspace/init-actions.js +199 -0
- package/dist/cli/commands/workspace/init-codegraph-stake.d.ts +10 -0
- package/dist/cli/commands/workspace/init-codegraph-stake.js +54 -0
- package/dist/cli/commands/workspace/init-command.d.ts +8 -130
- package/dist/cli/commands/workspace/init-command.js +59 -640
- package/dist/cli/commands/workspace/init-context.d.ts +58 -0
- package/dist/cli/commands/workspace/init-context.js +121 -0
- package/dist/cli/commands/workspace/init-envelope.d.ts +3 -0
- package/dist/cli/commands/workspace/init-envelope.js +34 -0
- package/dist/cli/commands/workspace/init-failures.d.ts +3 -0
- package/dist/cli/commands/workspace/init-failures.js +84 -0
- package/dist/cli/commands/workspace/init-hooks-decision.d.ts +24 -0
- package/dist/cli/commands/workspace/init-hooks-decision.js +189 -0
- package/dist/cli/commands/workspace/init-options.d.ts +102 -0
- package/dist/cli/commands/workspace/init-options.js +1 -0
- package/dist/cli/commands/workspace/migrate-command.d.ts +0 -2
- package/dist/cli/commands/workspace/migrate-command.js +0 -2
- package/dist/cli/commands/workspace/reconcile-command.d.ts +0 -2
- package/dist/cli/commands/workspace/reconcile-command.js +0 -3
- package/dist/cli/commands/workspace-commands.d.ts +0 -2
- package/dist/cli/commands/workspace-commands.js +0 -4
- package/dist/cli/commands/worktree-auth-commands.d.ts +0 -1
- package/dist/cli/commands/worktree-auth-commands.js +0 -1
- package/dist/cli/commands/worktree-auth-grant-command.d.ts +0 -1
- package/dist/cli/commands/worktree-auth-grant-command.js +0 -1
- package/dist/cli/commands/worktree-auth-manage-commands.d.ts +0 -1
- package/dist/cli/commands/worktree-auth-manage-commands.js +0 -1
- package/dist/cli/commands/worktree-lease-commands.d.ts +10 -6
- package/dist/cli/commands/worktree-lease-commands.js +42 -513
- package/dist/cli/commands/worktree-lease-gc-command.d.ts +12 -0
- package/dist/cli/commands/worktree-lease-gc-command.js +117 -0
- package/dist/cli/commands/worktree-lease-git.d.ts +22 -0
- package/dist/cli/commands/worktree-lease-git.js +48 -0
- package/dist/cli/commands/worktree-lease-list-command.d.ts +12 -0
- package/dist/cli/commands/worktree-lease-list-command.js +100 -0
- package/dist/cli/commands/worktree-lease-load.d.ts +37 -0
- package/dist/cli/commands/worktree-lease-load.js +28 -0
- package/dist/cli/commands/worktree-lease-release-command.d.ts +13 -0
- package/dist/cli/commands/worktree-lease-release-command.js +105 -0
- package/dist/cli/commands/worktree-lease-renew-command.d.ts +11 -0
- package/dist/cli/commands/worktree-lease-renew-command.js +99 -0
- package/dist/cli/commands/worktree-lease-session.d.ts +22 -0
- package/dist/cli/commands/worktree-lease-session.js +29 -0
- package/dist/cli/commands/worktree-lease-spawn-command.d.ts +11 -0
- package/dist/cli/commands/worktree-lease-spawn-command.js +119 -0
- package/dist/cli/commands/worktree-lease-status-command.d.ts +11 -0
- package/dist/cli/commands/worktree-lease-status-command.js +86 -0
- package/dist/cli/commands/worktree-lease-store.d.ts +19 -0
- package/dist/cli/commands/worktree-lease-store.js +24 -0
- package/dist/cli/program.js +5 -7
- package/dist/reporters/bdd-reporter.js +0 -1
- package/dist/services/24h-mode/auto-engage.d.ts +0 -1
- package/dist/services/24h-mode/auto-engage.js +0 -1
- package/dist/services/24h-mode/decider.d.ts +0 -3
- package/dist/services/24h-mode/decider.js +0 -3
- package/dist/services/24h-mode/index.d.ts +0 -2
- package/dist/services/24h-mode/index.js +0 -2
- package/dist/services/24h-mode/state.d.ts +0 -1
- package/dist/services/24h-mode/state.js +0 -1
- package/dist/services/24h-mode/store.d.ts +0 -1
- package/dist/services/24h-mode/store.js +0 -1
- package/dist/services/adapter/adapter-registry.js +0 -1
- package/dist/services/artifacts/artifact-prerequisites.d.ts +0 -5
- package/dist/services/artifacts/artifact-prerequisites.js +0 -19
- package/dist/services/artifacts/artifact-templates.d.ts +0 -1
- package/dist/services/artifacts/artifact-templates.js +0 -1
- package/dist/services/artifacts/request-artifact-service.d.ts +0 -5
- package/dist/services/artifacts/request-artifact-service.js +0 -12
- package/dist/services/artifacts/request-artifact-state-helpers.d.ts +0 -1
- package/dist/services/artifacts/request-artifact-state-helpers.js +0 -1
- package/dist/services/audit/artifact-writer.d.ts +0 -1
- package/dist/services/audit/artifact-writer.js +0 -1
- package/dist/services/audit/decision-writer.js +3 -1
- package/dist/services/audit/enforcer-liveness.js +0 -1
- package/dist/services/audit/enforcers/active-skill-resolver.d.ts +0 -2
- package/dist/services/audit/enforcers/active-skill-resolver.js +0 -2
- package/dist/services/audit/red-line-audit-input.d.ts +11 -0
- package/dist/services/audit/red-line-audit-input.js +103 -0
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.d.ts +0 -1
- package/dist/services/audit/red-line-catalog-p2-a.js +0 -9
- package/dist/services/audit/types.d.ts +0 -2
- package/dist/services/audit/types.js +0 -2
- package/dist/services/audit-independent/perf-audit-service.d.ts +0 -2
- package/dist/services/audit-independent/security-audit-service.d.ts +0 -5
- package/dist/services/audit-independent/security-audit-service.js +0 -2
- package/dist/services/autonomous-swarm/autonomous-swarm-service.d.ts +0 -5
- package/dist/services/autonomous-swarm/autonomous-swarm-service.js +0 -5
- package/dist/services/best-practice/language-detector.js +0 -1
- package/dist/services/best-practice/output-formatter.d.ts +0 -1
- package/dist/services/best-practice/scan-orchestrator.d.ts +0 -1
- package/dist/services/capability-audit-service/types.d.ts +1 -3
- package/dist/services/capability-guard-runner/contracts/J08.js +2 -2
- package/dist/services/changeset/changeset-check-service.d.ts +0 -3
- package/dist/services/changeset/changeset-check-service.js +0 -3
- package/dist/services/classify/classify-service.d.ts +0 -1
- package/dist/services/classify/classify-service.js +0 -1
- package/dist/services/classify/classify-types.d.ts +0 -1
- package/dist/services/classify/classify-types.js +0 -1
- package/dist/services/code/auto-compact-lifecycle.d.ts +0 -11
- package/dist/services/code/auto-compact-lifecycle.js +0 -10
- package/dist/services/code/auto-compact-modes.d.ts +0 -3
- package/dist/services/code/auto-compact-modes.js +0 -3
- package/dist/services/code/auto-compact-orchestrator.d.ts +0 -9
- package/dist/services/code/auto-compact-orchestrator.js +0 -29
- package/dist/services/code/batch-heartbeat-poller.js +0 -1
- package/dist/services/code/compact-event-settle.js +0 -1
- package/dist/services/code/dag-orchestrator.d.ts +0 -1
- package/dist/services/code/dag-orchestrator.js +0 -1
- package/dist/services/code/mode-gate-types.d.ts +0 -2
- package/dist/services/code/mode-gate-types.js +0 -1
- package/dist/services/code/mode-gate.d.ts +0 -5
- package/dist/services/code/mode-gate.js +0 -5
- package/dist/services/code/orchestrator-can-do-advisories.d.ts +0 -2
- package/dist/services/code/orchestrator-can-do-advisories.js +0 -5
- package/dist/services/code/orchestrator-can-do.d.ts +0 -4
- package/dist/services/code/orchestrator-can-do.js +0 -3
- package/dist/services/code/status-line-renderer.js +0 -1
- package/dist/services/code-review/ecc-bridge.d.ts +0 -1
- package/dist/services/codegraph/codegraph-autorefresh.js +6 -4
- package/dist/services/codegraph/codegraph-backend-advice.d.ts +26 -0
- package/dist/services/codegraph/codegraph-backend-advice.js +166 -0
- package/dist/services/codegraph/codegraph-config-repair-writer.d.ts +0 -24
- package/dist/services/codegraph/codegraph-config-repair-writer.js +32 -73
- package/dist/services/codegraph/codegraph-exclude-integrity.d.ts +14 -6
- package/dist/services/codegraph/codegraph-exclude-integrity.js +24 -14
- package/dist/services/codegraph/codegraph-exclude-reconciler.d.ts +9 -2
- package/dist/services/codegraph/codegraph-exclude-reconciler.js +87 -18
- package/dist/services/codegraph/codegraph-exclude-repair.d.ts +9 -61
- package/dist/services/codegraph/codegraph-exclude-repair.js +67 -139
- package/dist/services/codegraph/codegraph-foreign-removal.d.ts +21 -0
- package/dist/services/codegraph/codegraph-foreign-removal.js +77 -0
- package/dist/services/codegraph/codegraph-index-integrity.d.ts +12 -25
- package/dist/services/codegraph/codegraph-index-integrity.js +84 -23
- package/dist/services/codegraph/codegraph-preflight-service.js +15 -6
- package/dist/services/codegraph/codegraph-project-config.d.ts +35 -0
- package/dist/services/codegraph/codegraph-project-config.js +90 -0
- package/dist/services/codegraph/codegraph-service.d.ts +1 -2
- package/dist/services/codegraph/codegraph-service.js +11 -11
- package/dist/services/codegraph/codegraph-upstream-layout.d.ts +24 -0
- package/dist/services/codegraph/codegraph-upstream-layout.js +85 -0
- package/dist/services/comments/comment-audit.d.ts +15 -4
- package/dist/services/comments/comment-audit.js +25 -4
- package/dist/services/comments/comment-citations.d.ts +8 -2
- package/dist/services/comments/comment-citations.js +31 -33
- package/dist/services/comments/comment-hygiene.d.ts +29 -3
- package/dist/services/comments/comment-hygiene.js +40 -3
- package/dist/services/comments/comment-prune.js +52 -4
- package/dist/services/comments/comment-spans.d.ts +30 -0
- package/dist/services/comments/comment-spans.js +266 -0
- package/dist/services/comments/prune-apply.d.ts +22 -0
- package/dist/services/comments/prune-apply.js +69 -2
- package/dist/services/compact/decision-tables.d.ts +0 -2
- package/dist/services/compact/decision-tables.js +0 -2
- package/dist/services/compact/request-transition-hook.js +0 -2
- package/dist/services/compact-history/compact-history-service.d.ts +0 -2
- package/dist/services/compact-history/compact-history-service.js +0 -1
- package/dist/services/compact-statusline/compact-lifecycle-store.js +0 -2
- package/dist/services/compact-statusline/compact-lifecycle-types.d.ts +0 -1
- package/dist/services/compact-statusline/compact-statusline-service.js +0 -4
- package/dist/services/config/config-rollback.js +0 -1
- package/dist/services/config/config-safety.d.ts +0 -1
- package/dist/services/config/config-safety.js +0 -1
- package/dist/services/config/config-service.d.ts +0 -1
- package/dist/services/config/config-service.js +0 -1
- package/dist/services/config/model-routing.d.ts +0 -3
- package/dist/services/config/model-routing.js +0 -5
- package/dist/services/container/container-lease.d.ts +0 -1
- package/dist/services/container/container-lease.js +0 -1
- package/dist/services/context/artifact-meta.js +0 -1
- package/dist/services/context/auto-compact-dispatcher-input.d.ts +0 -3
- package/dist/services/context/auto-compact-dispatcher.js +0 -14
- package/dist/services/context/auto-compact-reader-input.d.ts +0 -1
- package/dist/services/context/auto-compact-reader.d.ts +0 -2
- package/dist/services/context/auto-compact-reader.js +0 -7
- package/dist/services/context/auto-compact-types.d.ts +0 -11
- package/dist/services/context/auto-compact-types.js +0 -1
- package/dist/services/context/build-dispatch-system-prompt.d.ts +11 -29
- package/dist/services/context/build-dispatch-system-prompt.js +8 -27
- package/dist/services/context/codegraph-unavailable-block.d.ts +38 -0
- package/dist/services/context/codegraph-unavailable-block.js +77 -0
- package/dist/services/context/context-audit-hint.d.ts +0 -1
- package/dist/services/context/context-audit-hint.js +0 -1
- package/dist/services/context/context-audit.d.ts +0 -1
- package/dist/services/context/context-audit.js +0 -1
- package/dist/services/context/harness-window-config.d.ts +0 -4
- package/dist/services/context/harness-window-config.js +0 -4
- package/dist/services/context/main-session-monitor.d.ts +0 -2
- package/dist/services/context/main-session-monitor.js +0 -2
- package/dist/services/context/memory-index-reader.d.ts +0 -2
- package/dist/services/context/memory-index-reader.js +0 -1
- package/dist/services/context/memory-preflight-config.d.ts +0 -1
- package/dist/services/context/memory-preflight-service.d.ts +0 -1
- package/dist/services/context/memory-preflight-service.js +0 -3
- package/dist/services/context/memory-preflight-support.d.ts +0 -5
- package/dist/services/context/post-compact-reinjection.d.ts +0 -1
- package/dist/services/context/post-compact-reinjection.js +0 -1
- package/dist/services/context/summary-view.d.ts +0 -1
- package/dist/services/context/summary-view.js +0 -1
- package/dist/services/crystallization/crystallization-service.d.ts +5 -11
- package/dist/services/crystallization/crystallization-service.js +3 -11
- package/dist/services/crystallization/crystallization-store.d.ts +6 -6
- package/dist/services/dispatch/await-batch-helpers.js +0 -3
- package/dist/services/dispatch/await-batch.d.ts +0 -1
- package/dist/services/dispatch/await-batch.js +0 -4
- package/dist/services/dispatch/batch-counter.js +0 -1
- package/dist/services/dispatch/conflict-replay.d.ts +0 -1
- package/dist/services/dispatch/conflict-replay.js +0 -1
- package/dist/services/dispatch/contract-store.d.ts +0 -2
- package/dist/services/dispatch/contract-store.js +0 -2
- package/dist/services/dispatch/dispatch-record-input-types.d.ts +0 -2
- package/dist/services/dispatch/dispatch-record-types.d.ts +0 -10
- package/dist/services/dispatch/dispatch-record-upgrade-fields.js +0 -7
- package/dist/services/dispatch/dispatch-record-upgrade-guards.js +0 -2
- package/dist/services/dispatch/dispatch-record-writer.d.ts +0 -5
- package/dist/services/dispatch/dispatch-record-writer.js +0 -21
- package/dist/services/dispatch/dispatch-sub-agent.d.ts +0 -1
- package/dist/services/dispatch/dispatch-sub-agent.js +0 -1
- package/dist/services/dispatch/e2e-fixtures.js +0 -1
- package/dist/services/dispatch/file-overlap-wave-planner.d.ts +0 -1
- package/dist/services/dispatch/file-overlap-wave-planner.js +0 -1
- package/dist/services/dispatch/isolation-lease.d.ts +0 -2
- package/dist/services/dispatch/isolation-lease.js +0 -2
- package/dist/services/dispatch/service-shutdown.js +0 -1
- package/dist/services/dispatch/session-capsule.js +0 -1
- package/dist/services/dispatch/slice-dag-types.d.ts +0 -1
- package/dist/services/dispatch/slice-dag.js +0 -2
- package/dist/services/dispatch/stage-enum.d.ts +0 -1
- package/dist/services/dispatch/stage-enum.js +0 -1
- package/dist/services/dispatch/startup-timeout.d.ts +0 -1
- package/dist/services/dispatch/sub-agent-batch-await.js +0 -3
- package/dist/services/dispatch/sub-agent-dispatcher-types.d.ts +0 -1
- package/dist/services/dispatch/sub-agent-dispatcher.js +0 -2
- package/dist/services/dispatch/test-tool-detection.d.ts +0 -3
- package/dist/services/dispatch/test-tool-detection.js +0 -2
- package/dist/services/distribution/mcp-install-runner.d.ts +21 -0
- package/dist/services/distribution/mcp-install-runner.js +59 -0
- package/dist/services/distribution/mcp-install.d.ts +95 -0
- package/dist/services/distribution/mcp-install.js +179 -0
- package/dist/services/distribution/plugin-manifest.d.ts +97 -0
- package/dist/services/distribution/plugin-manifest.js +126 -0
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +19 -12
- package/dist/services/doctor/doctor-service/checks/codegraph-index-integrity.js +1 -2
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.d.ts +0 -2
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +0 -2
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.d.ts +0 -1
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +0 -1
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.d.ts +0 -1
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.js +0 -3
- package/dist/services/doctor/doctor-service/checks/workspace-layout.js +0 -2
- package/dist/services/doctor/doctor-service/index.d.ts +0 -1
- package/dist/services/doctor/doctor-service/index.js +0 -1
- package/dist/services/doctor/doctor-service/plugin-registry.d.ts +0 -2
- package/dist/services/doctor/doctor-service/plugin-registry.js +0 -2
- package/dist/services/doctor/doctor-service/probe-types.d.ts +0 -4
- package/dist/services/doctor/doctor-service/report/final-summary.d.ts +0 -1
- package/dist/services/doctor/doctor-service/report/final-summary.js +0 -1
- package/dist/services/doctor/doctor-service/types.d.ts +0 -5
- package/dist/services/doctor/doctor-service/types.js +0 -1
- package/dist/services/doctor/doctor-service.d.ts +0 -1
- package/dist/services/doctor/doctor-service.js +0 -2
- package/dist/services/env/shell-probe.js +0 -1
- package/dist/services/evidence/evidence-generator.js +0 -8
- package/dist/services/evolution/evolution-constraints.d.ts +0 -2
- package/dist/services/evolution/evolution-constraints.js +0 -2
- package/dist/services/evolution/evolution-service.d.ts +2 -12
- package/dist/services/evolution/evolution-service.js +0 -9
- package/dist/services/evolution/evolution-store.d.ts +6 -8
- package/dist/services/evolution/evolution-store.js +1 -3
- package/dist/services/evolution/evolution-types.d.ts +0 -2
- package/dist/services/evolution/evolution-types.js +0 -6
- package/dist/services/evolution/independent-evaluator-runner.d.ts +0 -3
- package/dist/services/evolution/independent-evaluator-runner.js +0 -1
- package/dist/services/evolution/regression-skeptic-runner.d.ts +0 -1
- package/dist/services/feedback/feedback-promotion-service.d.ts +0 -8
- package/dist/services/feedback/feedback-promotion-service.js +0 -10
- package/dist/services/feedback/promotion-artifact-evidence.d.ts +0 -1
- package/dist/services/feedback/promotion-artifact-evidence.js +0 -1
- package/dist/services/final-review/final-review-evidence-budget.d.ts +0 -3
- package/dist/services/final-review/final-review-evidence-budget.js +0 -5
- package/dist/services/final-review/final-review-evidence-sources.d.ts +0 -1
- package/dist/services/final-review/final-review-evidence-sources.js +0 -1
- package/dist/services/final-review/final-review-output-budget.d.ts +0 -1
- package/dist/services/final-review/final-review-output-budget.js +0 -3
- package/dist/services/final-review/final-review-service.d.ts +0 -1
- package/dist/services/final-review/final-review-service.js +0 -1
- package/dist/services/fixture/fixture-capture-service.js +0 -1
- package/dist/services/fixture/fixture-sanitize-service.d.ts +0 -3
- package/dist/services/fixture/fixture-sanitize-service.js +0 -3
- package/dist/services/fresh-context/config.js +0 -1
- package/dist/services/fresh-context/fresh-context-block.js +0 -1
- package/dist/services/fresh-context/trigger-scan.d.ts +0 -1
- package/dist/services/fresh-context/trigger-scan.js +0 -1
- package/dist/services/fuzzy-matching/fzf-pick-service.d.ts +0 -1
- package/dist/services/fuzzy-matching/fzf-pick-service.js +0 -1
- package/dist/services/handoff/handoff-parser.d.ts +0 -1
- package/dist/services/handoff/handoff-parser.js +0 -1
- package/dist/services/handoff/handoff-types.d.ts +0 -1
- package/dist/services/handoff/handoff-types.js +0 -1
- package/dist/services/handoff/handoff-writer.d.ts +0 -1
- package/dist/services/handoff/handoff-writer.js +0 -1
- package/dist/services/hooks/auto-compact-hook-install.d.ts +0 -1
- package/dist/services/hooks/auto-compact-hook-install.js +0 -1
- package/dist/services/hooks/mcp-surface-gate.d.ts +19 -0
- package/dist/services/hooks/mcp-surface-gate.js +87 -0
- package/dist/services/hooks/output.d.ts +0 -1
- package/dist/services/hooks/output.js +0 -1
- package/dist/services/hooks/pre-tool-code-gate.d.ts +0 -1
- package/dist/services/hooks/pre-tool-code-gate.js +0 -1
- package/dist/services/hooks/presence-marker-detector.js +0 -1
- package/dist/services/hooks/worktree-authorization-gate.d.ts +0 -3
- package/dist/services/hooks/worktree-authorization-gate.js +0 -1
- package/dist/services/ide/adapters/claude-code-adapter.d.ts +4 -40
- package/dist/services/ide/adapters/claude-code-adapter.js +48 -182
- package/dist/services/ide/adapters/claude-code-local-state.d.ts +28 -0
- package/dist/services/ide/adapters/claude-code-local-state.js +112 -0
- package/dist/services/ide/adapters/claude-code-model-window.d.ts +37 -0
- package/dist/services/ide/adapters/claude-code-model-window.js +113 -0
- package/dist/services/ide/adapters/qoder-adapter.d.ts +0 -3
- package/dist/services/ide/adapters/qoder-adapter.js +0 -5
- package/dist/services/ide/adapters/tongyi-lingma-adapter.d.ts +0 -2
- package/dist/services/ide/adapters/tongyi-lingma-adapter.js +0 -2
- package/dist/services/ide/adapters/trae-adapter.d.ts +0 -3
- package/dist/services/ide/adapters/trae-adapter.js +3 -6
- package/dist/services/ide/adapters/zcode-adapter.js +0 -2
- package/dist/services/ide/current-model-detector.js +0 -1
- package/dist/services/ide/hook-protocol.d.ts +0 -2
- package/dist/services/ide/hook-protocol.js +0 -2
- package/dist/services/ide/ide-compact-types.d.ts +0 -7
- package/dist/services/ide/ide-mcp-install-types.d.ts +78 -0
- package/dist/services/ide/ide-mcp-install-types.js +104 -0
- package/dist/services/ide/ide-types.d.ts +45 -13
- package/dist/services/ide/mcp-tool-matcher.d.ts +34 -0
- package/dist/services/ide/mcp-tool-matcher.js +84 -0
- package/dist/services/ide/resource-profile.d.ts +0 -1
- package/dist/services/job/job-commit-verification.d.ts +0 -2
- package/dist/services/job/job-commit-verification.js +0 -2
- package/dist/services/job/job-orchestrator.d.ts +0 -1
- package/dist/services/job/job-orchestrator.js +0 -1
- package/dist/services/job/job-progress-store.d.ts +0 -2
- package/dist/services/job/job-progress-store.js +0 -3
- package/dist/services/job/job-types.js +0 -1
- package/dist/services/job-snapshot/snapshot.js +0 -1
- package/dist/services/karpathy-cost/karpathy-cost-check-service.js +0 -1
- package/dist/services/legacy/legacy-detector.js +0 -1
- package/dist/services/lint/npx-resolver.js +7 -0
- package/dist/services/log/log-commands-service.d.ts +0 -2
- package/dist/services/log/log-commands-service.js +0 -2
- package/dist/services/log/logger.d.ts +0 -1
- package/dist/services/log/logger.js +0 -1
- package/dist/services/log/redact.d.ts +0 -1
- package/dist/services/log/redact.js +0 -1
- package/dist/services/log/retention.d.ts +0 -1
- package/dist/services/log/retention.js +0 -1
- package/dist/services/loop/loop-bee-relation-service.d.ts +3 -3
- package/dist/services/loop/loop-bee-relation-service.js +14 -13
- package/dist/services/loop/loop-bee-relation-store.d.ts +9 -10
- package/dist/services/loop/loop-bee-relation-store.js +1 -2
- package/dist/services/loop/loop-bee-relation-types.d.ts +1 -1
- package/dist/services/loop/loop-bee-relation-types.js +1 -1
- package/dist/services/loop/loop-release-service.d.ts +3 -3
- package/dist/services/loop/loop-release-service.js +1 -1
- package/dist/services/loop/loop-release-store.d.ts +6 -7
- package/dist/services/loop/loop-release-store.js +0 -1
- package/dist/services/loop/monotonic-guard.d.ts +0 -1
- package/dist/services/loop/monotonic-guard.js +0 -1
- package/dist/services/mcp/cli-executor.d.ts +36 -0
- package/dist/services/mcp/cli-executor.js +97 -0
- package/dist/services/mcp/json-rpc.d.ts +81 -0
- package/dist/services/mcp/json-rpc.js +116 -0
- package/dist/services/mcp/memory-tool.d.ts +3 -0
- package/dist/services/mcp/memory-tool.js +62 -0
- package/dist/services/mcp/server-main.d.ts +1 -0
- package/dist/services/mcp/server-main.js +66 -0
- package/dist/services/mcp/server.d.ts +22 -0
- package/dist/services/mcp/server.js +152 -0
- package/dist/services/mcp/surface.d.ts +62 -0
- package/dist/services/mcp/surface.js +198 -0
- package/dist/services/mcp/tool-core.d.ts +42 -0
- package/dist/services/mcp/tool-core.js +137 -0
- package/dist/services/mcp/tools.d.ts +13 -0
- package/dist/services/mcp/tools.js +58 -0
- package/dist/services/memory/memory-ingest-service.js +0 -1
- package/dist/services/memory/project-context-service.d.ts +0 -1
- package/dist/services/memory/project-context-service.js +0 -1
- package/dist/services/memory/project-memory-service/index/reindex.d.ts +0 -2
- package/dist/services/memory/project-memory-service/index/reindex.js +0 -1
- package/dist/services/memory/project-memory-service/index/search.d.ts +0 -1
- package/dist/services/memory/project-memory-service/index/search.js +0 -1
- package/dist/services/memory/project-memory-service/memory-kinds.d.ts +0 -1
- package/dist/services/memory/project-memory-service/memory-kinds.js +0 -1
- package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +0 -1
- package/dist/services/memory/project-memory-service/parsers/frontmatter.js +0 -1
- package/dist/services/memory/project-memory-service.js +0 -1
- package/dist/services/mode/mode-enforcement.js +0 -1
- package/dist/services/mode/mode-status-service.d.ts +0 -2
- package/dist/services/mode/mode-status-service.js +0 -2
- package/dist/services/observability/aggregation.d.ts +0 -4
- package/dist/services/observability/aggregation.js +0 -6
- package/dist/services/observability/observability-schema.js +0 -1
- package/dist/services/observability/observability-service.d.ts +0 -5
- package/dist/services/observability/observability-service.js +0 -4
- package/dist/services/observability/report-formatter.d.ts +0 -2
- package/dist/services/observability/report-formatter.js +0 -2
- package/dist/services/openspec/artifact-boundary.d.ts +0 -4
- package/dist/services/openspec/artifact-boundary.js +0 -4
- package/dist/services/openspec/coverage-evidence-reader.d.ts +0 -1
- package/dist/services/openspec/coverage-evidence-reader.js +0 -1
- package/dist/services/polyrepo/polyrepo-dispatcher.js +0 -1
- package/dist/services/polyrepo/polyrepo-scanner.js +0 -1
- package/dist/services/polyrepo/polyrepo-service.js +0 -1
- package/dist/services/polyrepo/polyrepo-types.d.ts +0 -1
- package/dist/services/prd/best-practice-auto-trigger.d.ts +0 -2
- package/dist/services/prd/best-practice-auto-trigger.js +0 -2
- package/dist/services/prd/gate-evidence-derivation.d.ts +0 -4
- package/dist/services/prd/gate-evidence-derivation.js +0 -5
- package/dist/services/prd/handoff-auto-regen.js +0 -5
- package/dist/services/prd/handoff-frontmatter-shape.d.ts +0 -2
- package/dist/services/prd/handoff-frontmatter-shape.js +0 -2
- package/dist/services/prd/handoff-frontmatter.d.ts +0 -1
- package/dist/services/prd/handoff-frontmatter.js +0 -2
- package/dist/services/prd/handoff-gate-evidence.d.ts +0 -1
- package/dist/services/prd/handoff-gate-evidence.js +0 -4
- package/dist/services/prd/handoff-path-resolution.d.ts +0 -7
- package/dist/services/prd/handoff-path-resolution.js +0 -10
- package/dist/services/prd/handoff-service.d.ts +0 -2
- package/dist/services/prd/handoff-service.js +0 -2
- package/dist/services/prd/handoff-types.d.ts +0 -2
- package/dist/services/prd/handoff-types.js +0 -1
- package/dist/services/prd/project-scan-bootstrap-service.d.ts +0 -1
- package/dist/services/prd/project-scan-bootstrap-service.js +0 -4
- package/dist/services/prd/project-scan-types.d.ts +0 -1
- package/dist/services/prd/project-scan-types.js +0 -1
- package/dist/services/preferences/preferences-service.d.ts +0 -1
- package/dist/services/preferences/preferences-service.js +0 -5
- package/dist/services/preferences/preferences-types.d.ts +0 -14
- package/dist/services/preferences/preferences-types.js +0 -4
- package/dist/services/progress/progress-service.js +0 -1
- package/dist/services/qa/bdd-test-style-verifier.d.ts +0 -1
- package/dist/services/qa/bdd-test-style-verifier.js +0 -1
- package/dist/services/qa/browser-event-logger.d.ts +0 -1
- package/dist/services/qa/browser-event-logger.js +0 -1
- package/dist/services/qa/browser-restart-detector.d.ts +0 -1
- package/dist/services/qa/browser-restart-detector.js +0 -1
- package/dist/services/qa/browser-reuse-hint.d.ts +0 -1
- package/dist/services/qa/browser-reuse-hint.js +0 -1
- package/dist/services/qa/qa-business-review-state.js +0 -2
- package/dist/services/qa/screenshot-archive-service.d.ts +0 -1
- package/dist/services/qa/screenshot-archive-service.js +0 -1
- package/dist/services/rd/impl.js +0 -1
- package/dist/services/rd/rd-service.d.ts +0 -5
- package/dist/services/rd/rd-service.js +0 -5
- package/dist/services/rd/reviewer-dispatch-policy.d.ts +0 -4
- package/dist/services/rd/reviewer-dispatch-policy.js +0 -4
- package/dist/services/rd/standards-diagnostic.js +0 -1
- package/dist/services/rd/tactical-stage.js +0 -1
- package/dist/services/rd-swarm/rd-swarm-types.d.ts +0 -1
- package/dist/services/rd-swarm/rd-swarm-types.js +0 -1
- package/dist/services/readonly-surface/argv-guard.d.ts +32 -0
- package/dist/services/readonly-surface/argv-guard.js +164 -0
- package/dist/services/readonly-surface/readonly-whitelist.d.ts +147 -0
- package/dist/services/readonly-surface/readonly-whitelist.js +107 -0
- package/dist/services/readonly-surface/whitelist-generator.d.ts +64 -0
- package/dist/services/readonly-surface/whitelist-generator.js +212 -0
- package/dist/services/recommendations/installed-capability-detector.d.ts +0 -1
- package/dist/services/recommendations/installed-capability-detector.js +0 -1
- package/dist/services/release/version-precheck-service.d.ts +0 -2
- package/dist/services/release/version-precheck-service.js +0 -3
- package/dist/services/retrospective/retrospective-index.d.ts +0 -1
- package/dist/services/retrospective/retrospective-index.js +0 -1
- package/dist/services/retrospective/retrospective-show.d.ts +0 -1
- package/dist/services/retrospective/retrospective-show.js +0 -1
- package/dist/services/reviewer/model-family.js +0 -1
- package/dist/services/reviewer/reviewer-config.js +0 -1
- package/dist/services/reviewer/reviewer-service.d.ts +0 -1
- package/dist/services/reviewer/reviewer-service.js +0 -3
- package/dist/services/reviewer/selection-strategies.js +0 -1
- package/dist/services/runtime/runtime-detector.js +0 -1
- package/dist/services/runtime/runtime-service.d.ts +0 -2
- package/dist/services/runtime/vendor-adapter.d.ts +0 -7
- package/dist/services/runtime/vendors/claude-code.js +0 -1
- package/dist/services/runtime/vendors/codex.js +0 -1
- package/dist/services/runtime/vendors/copilot.js +0 -1
- package/dist/services/sc/sc-service.js +0 -6
- package/dist/services/scan/acceptance-coverage-service.js +0 -2
- package/dist/services/scan/api-diff-recorded.d.ts +0 -1
- package/dist/services/scan/api-diff-recorded.js +0 -1
- package/dist/services/scan/api-diff-service.d.ts +0 -1
- package/dist/services/scan/api-diff-service.js +0 -1
- package/dist/services/scan/api-diff-types.d.ts +0 -1
- package/dist/services/scan/api-diff-types.js +0 -1
- package/dist/services/scan/archetype-service.js +0 -1
- package/dist/services/scan/file-size-policy.d.ts +0 -1
- package/dist/services/scan/file-size-policy.js +0 -5
- package/dist/services/scan/file-size-scan.d.ts +0 -1
- package/dist/services/security/safe-settings-path.js +0 -1
- package/dist/services/session/binding-store.d.ts +0 -4
- package/dist/services/session/binding-store.js +0 -7
- package/dist/services/session/caller-binding-service.d.ts +0 -6
- package/dist/services/session/caller-binding-service.js +0 -4
- package/dist/services/session/caller-id-types.d.ts +0 -3
- package/dist/services/session/caller-id-types.js +0 -2
- package/dist/services/session/getSessionDir.js +0 -1
- package/dist/services/session/index.js +0 -1
- package/dist/services/session/platform-fallbacks.d.ts +0 -3
- package/dist/services/session/platform-fallbacks.js +0 -3
- package/dist/services/session/resolve-caller-id.d.ts +0 -2
- package/dist/services/session/resolve-caller-id.js +0 -2
- package/dist/services/session/session-binding-bridge.d.ts +0 -2
- package/dist/services/session/session-binding-bridge.js +0 -15
- package/dist/services/session/session-checkpoint-service.d.ts +0 -1
- package/dist/services/session/session-checkpoint-service.js +0 -1
- package/dist/services/session/session-manager.d.ts +0 -8
- package/dist/services/session/session-manager.js +0 -19
- package/dist/services/session/session-resume-service.d.ts +0 -1
- package/dist/services/session/session-resume-service.js +0 -1
- package/dist/services/share/bundle-reader.d.ts +2 -5
- package/dist/services/share/bundle-reader.js +6 -8
- package/dist/services/share/bundle-writer.d.ts +2 -2
- package/dist/services/skill/resume-detector.js +0 -3
- package/dist/services/skill/skill-scheduler.d.ts +0 -1
- package/dist/services/skill/skill-scheduler.js +0 -1
- package/dist/services/skill/skill-search-service.d.ts +0 -2
- package/dist/services/skill/skill-search-service.js +0 -2
- package/dist/services/skillhub/release-diff.d.ts +2 -2
- package/dist/services/skillhub/release-export.d.ts +2 -2
- package/dist/services/skillhub/release-gc-blobs.d.ts +2 -2
- package/dist/services/skillhub/release-import.d.ts +2 -2
- package/dist/services/skillhub/release-import.js +2 -1
- package/dist/services/skillhub/release-retain.d.ts +2 -2
- package/dist/services/skillhub/release-retain.js +2 -1
- package/dist/services/skillhub/sqlite-store.d.ts +3 -3
- package/dist/services/skillhub/sqlite-store.js +4 -5
- package/dist/services/skills/hooks-codegate-superpowers.d.ts +1 -3
- package/dist/services/skills/hooks-codegate-superpowers.js +26 -14
- package/dist/services/skills/hooks-settings-service.d.ts +0 -2
- package/dist/services/skills/hooks-settings-service.js +10 -8
- package/dist/services/skills/presence-lease-service.d.ts +0 -1
- package/dist/services/skills/presence-lease-service.js +0 -1
- package/dist/services/skills/session-start-hook-constants.d.ts +0 -4
- package/dist/services/skills/session-start-hook-constants.js +0 -4
- package/dist/services/skills/skill-presence-service.d.ts +0 -8
- package/dist/services/skills/skill-presence-service.js +0 -13
- package/dist/services/skills/skill-statusline-model.d.ts +0 -6
- package/dist/services/skills/skill-statusline-model.js +1 -4
- package/dist/services/skills/skill-statusline-renderer.d.ts +0 -1
- package/dist/services/skills/skill-statusline-renderer.js +0 -12
- package/dist/services/skills/skill-statusline-service.js +0 -6
- package/dist/services/skills/skill-statusline-sid-suffix.d.ts +0 -2
- package/dist/services/skills/skill-statusline-sid-suffix.js +0 -2
- package/dist/services/skills/statusline-palette.d.ts +0 -2
- package/dist/services/skills/statusline-palette.js +0 -3
- package/dist/services/slice/slice-archive-service.js +0 -1
- package/dist/services/slice/slice-benchmark-service.d.ts +0 -1
- package/dist/services/slice/slice-benchmark-service.js +0 -1
- package/dist/services/slice/slice-check-service.js +0 -6
- package/dist/services/slice/slice-check-types.d.ts +0 -1
- package/dist/services/slice/slice-pick-service.d.ts +0 -1
- package/dist/services/slice/slice-pick-service.js +0 -1
- package/dist/services/slice/slice-review-state.js +0 -2
- package/dist/services/sqlite/sqlite-driver.d.ts +118 -0
- package/dist/services/sqlite/sqlite-driver.js +159 -0
- package/dist/services/standards/ide-aware-standards-service.d.ts +0 -2
- package/dist/services/standards/ide-aware-standards-service.js +0 -1
- package/dist/services/standards/loop-engineering-readiness-lint.d.ts +0 -1
- package/dist/services/standards/loop-engineering-readiness-lint.js +0 -1
- package/dist/services/standards/migrate-claude-rules-service.js +0 -3
- package/dist/services/standards/migrate-service.d.ts +0 -1
- package/dist/services/standards/migrate-service.js +0 -1
- package/dist/services/standards/missing-standards-detector.d.ts +0 -2
- package/dist/services/standards/missing-standards-detector.js +0 -3
- package/dist/services/standards/project-standards-service.d.ts +0 -1
- package/dist/services/standards/project-standards-service.js +0 -1
- package/dist/services/standards/standards-render.d.ts +0 -1
- package/dist/services/standards/standards-render.js +0 -1
- package/dist/services/standards/ui-library-dispatch-block.d.ts +0 -1
- package/dist/services/standards/ui-library-dispatch-block.js +0 -1
- package/dist/services/tech/tech-change-id-service.d.ts +0 -7
- package/dist/services/tech/tech-change-id-service.js +0 -7
- package/dist/services/tech/tech-service.js +0 -5
- package/dist/services/verdict/envelope-parsers.d.ts +0 -2
- package/dist/services/verdict/envelope-parsers.js +0 -2
- package/dist/services/verdict/envelopes.d.ts +0 -1
- package/dist/services/vm/vm-lease.js +0 -1
- package/dist/services/web/aria-node.d.ts +0 -1
- package/dist/services/web/bounded-output.d.ts +0 -1
- package/dist/services/web/bounded-output.js +0 -1
- package/dist/services/web/browser-acquire.js +0 -1
- package/dist/services/web/browser-cache-probe.js +0 -1
- package/dist/services/web/browser-session-manager.js +0 -1
- package/dist/services/web/daemon-entry.js +0 -1
- package/dist/services/web/daemon-registry.js +0 -1
- package/dist/services/web/daemon-supervisor.d.ts +4 -3
- package/dist/services/web/daemon-supervisor.js +4 -4
- package/dist/services/web/playwright-loader.js +0 -1
- package/dist/services/web/playwright-types.d.ts +0 -1
- package/dist/services/web/snapshot-pruner.js +0 -1
- package/dist/services/web/untrusted-envelope.d.ts +0 -1
- package/dist/services/web/web-artifact-paths.js +0 -1
- package/dist/services/web/web-client.d.ts +0 -1
- package/dist/services/web/web-daemon-service.js +0 -1
- package/dist/services/web/web-fallback.d.ts +0 -1
- package/dist/services/web/web-fallback.js +0 -1
- package/dist/services/web/web-install-service.js +0 -1
- package/dist/services/web/web-login-profile.js +0 -1
- package/dist/services/web/web-protocol.d.ts +0 -1
- package/dist/services/web/web-protocol.js +0 -1
- package/dist/services/web/web-status-report.js +0 -1
- package/dist/services/workflow/artifact-paths.js +0 -3
- package/dist/services/workflow/autonomous-resume-writer.js +0 -2
- package/dist/services/workflow/pipeline-verify-gate-support.d.ts +0 -5
- package/dist/services/workflow/pipeline-verify-gate-support.js +0 -11
- package/dist/services/workflow/pipeline-verify-service.d.ts +0 -2
- package/dist/services/workflow/pipeline-verify-service.js +0 -15
- package/dist/services/workflow/pipeline-verify-types.d.ts +0 -10
- package/dist/services/workflow/pipeline-verify-types.js +0 -2
- package/dist/services/workflow/plan-reader.d.ts +0 -1
- package/dist/services/workflow/plan-reader.js +0 -5
- package/dist/services/workflow/plan-refresher.js +0 -2
- package/dist/services/workflow/plan-trigger-detector.d.ts +0 -2
- package/dist/services/workflow/plan-trigger-detector.js +0 -3
- package/dist/services/workflow/workflow-autonomous-resume-helpers.js +0 -5
- package/dist/services/workflow/workflow-autonomous-service.js +0 -2
- package/dist/services/workflow/workflow-autonomous-types.d.ts +0 -2
- package/dist/services/workflow/workflow-autonomous-types.js +0 -2
- package/dist/services/workflow/workflow-graph-types.d.ts +0 -1
- package/dist/services/workflow/workflow-graph-types.js +0 -1
- package/dist/services/workflow/workflow-router-service.js +0 -4
- package/dist/services/workflow/workflow-skip-service.d.ts +0 -1
- package/dist/services/workflow/workflow-skip-service.js +0 -1
- package/dist/services/workflow/workflow-spec-lint.d.ts +0 -2
- package/dist/services/workflow/workflow-spec-lint.js +0 -2
- package/dist/services/workflow/workflow-spec-types.d.ts +0 -1
- package/dist/services/workflow/workflow-spec-types.js +0 -1
- package/dist/services/workflow/workflow-spec-yaml.d.ts +0 -2
- package/dist/services/workflow/workflow-spec-yaml.js +0 -2
- package/dist/services/workflow/workflow-spec.js +0 -1
- package/dist/services/workflow/workflow-state-store.js +0 -1
- package/dist/services/workspace/claude-settings-template.d.ts +0 -4
- package/dist/services/workspace/claude-settings-template.js +0 -4
- package/dist/services/workspace/migrate-1-4-1-service.d.ts +0 -1
- package/dist/services/workspace/migrate-1-4-1-service.js +0 -1
- package/dist/services/workspace/migrate-service.js +0 -8
- package/dist/services/workspace/migrate-types.d.ts +0 -4
- package/dist/services/workspace/migrate-types.js +0 -1
- package/dist/services/workspace/reconcile-migrate.d.ts +0 -3
- package/dist/services/workspace/reconcile-migrate.js +0 -5
- package/dist/services/workspace/reconcile-service.d.ts +0 -3
- package/dist/services/workspace/reconcile-service.js +0 -7
- package/dist/services/workspace/reconcile-types.d.ts +0 -5
- package/dist/services/workspace/sid-naming-guard.d.ts +0 -1
- package/dist/services/workspace/sid-naming-guard.js +0 -1
- package/dist/services/workspace/templates/project-scan/index.d.ts +0 -3
- package/dist/services/workspace/templates/project-scan/index.js +0 -3
- package/dist/services/workspace/workspace-claude-settings-materializer.d.ts +0 -1
- package/dist/services/workspace/workspace-claude-settings-materializer.js +0 -4
- package/dist/services/workspace/workspace-service.d.ts +0 -7
- package/dist/services/workspace/workspace-service.js +0 -16
- package/dist/services/worktree/playwright-profile.js +0 -1
- package/dist/services/worktree/worktree-lease-types.d.ts +0 -1
- package/dist/services/worktree/worktree-lease-types.js +0 -1
- package/dist/services/worktree/worktree-lease.d.ts +0 -2
- package/dist/services/worktree/worktree-lease.js +0 -2
- package/dist/shared/format-md-compact.d.ts +0 -2
- package/dist/shared/format-md-compact.js +0 -2
- package/dist/shared/incrementing-number.d.ts +0 -1
- package/dist/shared/incrementing-number.js +0 -1
- package/dist/shared/path-utils.d.ts +0 -1
- package/dist/shared/path-utils.js +0 -1
- package/dist/shared/runtime-root.d.ts +0 -1
- package/dist/shared/runtime-root.js +0 -1
- package/dist/shared/stale-policy.d.ts +0 -1
- package/dist/shared/stale-policy.js +0 -1
- package/package.json +24 -11
- package/scripts/canonical-store-link.mjs +296 -0
- package/scripts/canonical-store-prune.mjs +131 -0
- package/scripts/canonical-store.mjs +298 -0
- package/scripts/install-skills-bundles.mjs +233 -0
- package/scripts/install-skills-fs.mjs +148 -0
- package/scripts/install-skills-ide.mjs +279 -0
- package/scripts/install-skills-output-style-default.mjs +196 -0
- package/scripts/install-skills-output-styles.mjs +121 -0
- package/scripts/install-skills-report.mjs +42 -0
- package/scripts/install-skills-user-config.mjs +198 -0
- package/scripts/install-skills.mjs +41 -1279
- package/scripts/watch-tree.mjs +140 -0
- package/scripts/watch.mjs +4 -126
- package/skills/peaks-audit/SKILL.md +3 -3
- package/skills/peaks-status/SKILL.md +31 -13
- package/dist/services/codegraph/codegraph-include-reconciler.d.ts +0 -10
- package/dist/services/codegraph/codegraph-include-reconciler.js +0 -160
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
// src/services/mcp/surface.ts
|
|
2
|
+
//
|
|
3
|
+
// The tool surface, DERIVED from the generated read-only whitelist rather than
|
|
4
|
+
// restated beside it.
|
|
5
|
+
//
|
|
6
|
+
// WHY DERIVED. "Every argv a tool can run is whitelisted" is only checkable if
|
|
7
|
+
// there is no second list to disagree with. So the tools ARE the whitelist's
|
|
8
|
+
// entries grouped by their `tool` field: adding a tool means editing
|
|
9
|
+
// `contracts/readonly-surface.json` and regenerating, and a tool whose argv was
|
|
10
|
+
// never proven read-only cannot be declared here at all.
|
|
11
|
+
//
|
|
12
|
+
// `validateSurface` is spec §6's L4 — the startup check. L1 ("the server only
|
|
13
|
+
// runs whitelisted argv") is a property of the code; L4 turns "someone put a
|
|
14
|
+
// write argv into the surface" from a silent hole into a refusal to start. Its
|
|
15
|
+
// unit is the ARGV, not the tool: a composite tool carries several, and checking
|
|
16
|
+
// per tool would wave through all but one of them.
|
|
17
|
+
//
|
|
18
|
+
// JSON SCHEMA, NOT COMMANDER. The parameter constraints below come from the
|
|
19
|
+
// whitelist's `params`, which the generator introspected out of the live
|
|
20
|
+
// Commander registry when it wrote the artifact (`constraintSource` marks the
|
|
21
|
+
// few that were hand-written). One build of latency is the price of not loading
|
|
22
|
+
// the whole CLI command registry into a read-only server process; the artifact
|
|
23
|
+
// is regenerated in the build and CI fails on a diff, so it cannot drift.
|
|
24
|
+
import { loadReadOnlyWhitelist } from '../readonly-surface/readonly-whitelist.js';
|
|
25
|
+
/**
|
|
26
|
+
* LLM-facing prose, per tool name. Every tool the whitelist declares must have
|
|
27
|
+
* an entry here or `validateSurface` refuses to start — spec §8.4 rule 2 asks
|
|
28
|
+
* the description to state the precondition, and a tool that silently has none
|
|
29
|
+
* is how an LLM ends up calling it outside a peaks project.
|
|
30
|
+
*/
|
|
31
|
+
const TOOL_DESCRIPTIONS = {
|
|
32
|
+
peaks_status: 'Where a Peaks-Loop workflow currently is. Read-only. Composes `peaks skill presence --json`, ' +
|
|
33
|
+
'`peaks session list --json` and, when both `rid` and `role` are given, `peaks request show ' +
|
|
34
|
+
'<rid> --role <role> --json --project <project>`. Each CLI result is returned verbatim under ' +
|
|
35
|
+
'its own key; a key is absent when that call was not run. Requires a Peaks-Loop project ' +
|
|
36
|
+
'(a `.peaks/` directory) as the working directory.',
|
|
37
|
+
peaks_memory_search: 'Search this project’s durable memory for a term, and get back NAMES and short excerpts — ' +
|
|
38
|
+
'never note bodies. Read-only. Use it to answer "has this project settled anything about X?" ' +
|
|
39
|
+
'Requires a Peaks-Loop project (a `.peaks/` directory) as the working directory.'
|
|
40
|
+
};
|
|
41
|
+
/** Per-parameter prose, by placeholder name. Absent names simply carry no description. */
|
|
42
|
+
const PARAM_DESCRIPTIONS = {
|
|
43
|
+
rid: 'The id of the request to read.',
|
|
44
|
+
role: 'Role whose artifact to read. One of the declared enum values.',
|
|
45
|
+
project: 'Absolute path of the Peaks-Loop project. Defaults to the server’s working directory.',
|
|
46
|
+
query: 'The term to search project memory for.',
|
|
47
|
+
limit: 'Maximum number of matching notes to return.'
|
|
48
|
+
};
|
|
49
|
+
const TYPE_SHAPES = {
|
|
50
|
+
slug: (spec) => spec.pattern === undefined ? { type: 'string' } : { type: 'string', pattern: spec.pattern },
|
|
51
|
+
enum: (spec) => ({ type: 'string', enum: spec.values ?? [] }),
|
|
52
|
+
integer: (spec) => ({
|
|
53
|
+
type: 'integer',
|
|
54
|
+
minimum: spec.min ?? 0,
|
|
55
|
+
maximum: spec.max ?? Number.MAX_SAFE_INTEGER,
|
|
56
|
+
...(spec.default === undefined ? {} : { default: spec.default })
|
|
57
|
+
}),
|
|
58
|
+
token: () => ({ type: 'string' }),
|
|
59
|
+
path: () => ({ type: 'string' })
|
|
60
|
+
};
|
|
61
|
+
function propertyFor(name, spec) {
|
|
62
|
+
const description = PARAM_DESCRIPTIONS[name];
|
|
63
|
+
const described = description === undefined ? {} : { description };
|
|
64
|
+
return { ...TYPE_SHAPES[spec.type](spec), ...described };
|
|
65
|
+
}
|
|
66
|
+
function inputSchemaOf(entries) {
|
|
67
|
+
const properties = {};
|
|
68
|
+
for (const entry of entries) {
|
|
69
|
+
for (const [name, spec] of Object.entries(entry.params)) {
|
|
70
|
+
properties[name] = propertyFor(name, spec);
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
// Nothing is `required` at the tool level. A tool whose entries all take no
|
|
74
|
+
// parameter is callable with `{}`, and a tool with several entries (three
|
|
75
|
+
// argv behind `peaks_status`) runs the subset whose parameters the caller
|
|
76
|
+
// actually supplied. Requiring the union would make the two parameterless
|
|
77
|
+
// argv unreachable.
|
|
78
|
+
return { type: 'object', properties, required: [], additionalProperties: false };
|
|
79
|
+
}
|
|
80
|
+
/** Group the whitelist's entries into tools, preserving first-appearance order. */
|
|
81
|
+
export function buildToolDefinitions(whitelist) {
|
|
82
|
+
const byTool = new Map();
|
|
83
|
+
for (const entry of whitelist.entries) {
|
|
84
|
+
const bucket = byTool.get(entry.tool);
|
|
85
|
+
if (bucket === undefined) {
|
|
86
|
+
byTool.set(entry.tool, [entry]);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
bucket.push(entry);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return [...byTool].map(([name, entries]) => ({
|
|
93
|
+
name,
|
|
94
|
+
description: TOOL_DESCRIPTIONS[name] ?? '',
|
|
95
|
+
inputSchema: inputSchemaOf(entries),
|
|
96
|
+
entries
|
|
97
|
+
}));
|
|
98
|
+
}
|
|
99
|
+
/** Load the whitelist artifact and build the surface from it. */
|
|
100
|
+
export function loadToolDefinitions() {
|
|
101
|
+
return buildToolDefinitions(loadReadOnlyWhitelist());
|
|
102
|
+
}
|
|
103
|
+
/** Why a surface was refused. Named so the server can print it and exit non-zero. */
|
|
104
|
+
export class McpSurfaceError extends Error {
|
|
105
|
+
constructor(message) {
|
|
106
|
+
super(message);
|
|
107
|
+
this.name = 'McpSurfaceError';
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
/** An entry's argv as a comparable template key: literals literal, placeholders `{name}`. */
|
|
111
|
+
export function argvTemplateOf(entry) {
|
|
112
|
+
return entry.argv
|
|
113
|
+
.map((segment) => (segment.kind === 'literal' ? segment.value : `{${segment.name}}`))
|
|
114
|
+
.join(' ');
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Refuse a whitelist artifact that is not internally coherent.
|
|
118
|
+
*
|
|
119
|
+
* WHO THIS IS FOR. The artifact is generated and CI re-generates it, so the
|
|
120
|
+
* shape below holds on a clean checkout. The failure it exists for is the one
|
|
121
|
+
* that leaves no other trace: the file is edited by hand, or an entry is
|
|
122
|
+
* half-written, and a server starts up happily serving a surface nothing proved.
|
|
123
|
+
* Every rule here is a property the generator establishes and a hand-edit
|
|
124
|
+
* breaks, so a violated rule means "this is not the generated artifact".
|
|
125
|
+
*/
|
|
126
|
+
export function validateWhitelist(whitelist) {
|
|
127
|
+
const seenIds = new Set();
|
|
128
|
+
for (const entry of whitelist.entries) {
|
|
129
|
+
if (seenIds.has(entry.id)) {
|
|
130
|
+
throw new McpSurfaceError(`Whitelist entry id '${entry.id}' is declared twice; refusing to start.`);
|
|
131
|
+
}
|
|
132
|
+
seenIds.add(entry.id);
|
|
133
|
+
const literals = entry.argv
|
|
134
|
+
.filter((segment) => segment.kind === 'literal')
|
|
135
|
+
.map((segment) => (segment.kind === 'literal' ? segment.value : ''));
|
|
136
|
+
// The command path must open the argv: an entry whose template does not
|
|
137
|
+
// begin with the command it claims to be is an entry about something else.
|
|
138
|
+
const prefix = literals.slice(0, entry.commandPath.length).join(' ');
|
|
139
|
+
if (prefix !== entry.commandPath.join(' ')) {
|
|
140
|
+
throw new McpSurfaceError(`Whitelist entry '${entry.id}' declares commandPath '${entry.commandPath.join(' ')}' but its argv starts '${prefix}'; refusing to start.`);
|
|
141
|
+
}
|
|
142
|
+
const used = entry.argv.flatMap((segment) => (segment.kind === 'param' ? [segment.name] : []));
|
|
143
|
+
for (const name of used) {
|
|
144
|
+
if (!(name in entry.params)) {
|
|
145
|
+
throw new McpSurfaceError(`Whitelist entry '${entry.id}' uses placeholder '${name}' that it does not declare; refusing to start.`);
|
|
146
|
+
}
|
|
147
|
+
if (used.filter((candidate) => candidate === name).length !== 1) {
|
|
148
|
+
throw new McpSurfaceError(`Whitelist entry '${entry.id}' uses placeholder '${name}' more than once; refusing to start.`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
for (const name of Object.keys(entry.params)) {
|
|
152
|
+
if (!used.includes(name)) {
|
|
153
|
+
throw new McpSurfaceError(`Whitelist entry '${entry.id}' declares parameter '${name}' that its argv never uses; refusing to start.`);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
/**
|
|
159
|
+
* L4 (spec §6): refuse to start when the tool surface and the proven whitelist do
|
|
160
|
+
* not describe the same thing.
|
|
161
|
+
*
|
|
162
|
+
* Two properties, each meant to fail loudly rather than degrade:
|
|
163
|
+
*
|
|
164
|
+
* 1. Every argv a tool can run is a whitelisted argv, by template. The surface
|
|
165
|
+
* is derived from the same artifact today, so on the production path this
|
|
166
|
+
* reads as "nothing unproven got in" — but it is the boundary that has to
|
|
167
|
+
* hold the moment a tool is authored rather than derived, and the test
|
|
168
|
+
* proves it can fail by handing it a surface that names an unproven argv.
|
|
169
|
+
* 2. Every whitelisted entry is reachable from some tool. This one DOES have a
|
|
170
|
+
* live trigger: an entry added to `readonly-surface.json` whose tool name is
|
|
171
|
+
* mistyped is proven read-only and then never served.
|
|
172
|
+
*/
|
|
173
|
+
export function validateSurface(whitelist, tools) {
|
|
174
|
+
validateWhitelist(whitelist);
|
|
175
|
+
if (tools.length === 0) {
|
|
176
|
+
throw new McpSurfaceError('MCP surface declares no tools; refusing to start.');
|
|
177
|
+
}
|
|
178
|
+
const whitelistedTemplates = new Set(whitelist.entries.map((entry) => argvTemplateOf(entry)));
|
|
179
|
+
const servedTemplates = new Set();
|
|
180
|
+
for (const tool of tools) {
|
|
181
|
+
if (tool.description.trim().length === 0) {
|
|
182
|
+
throw new McpSurfaceError(`MCP tool '${tool.name}' has no description; refusing to start (spec §8.4 rule 2).`);
|
|
183
|
+
}
|
|
184
|
+
for (const entry of tool.entries) {
|
|
185
|
+
const template = argvTemplateOf(entry);
|
|
186
|
+
if (!whitelistedTemplates.has(template)) {
|
|
187
|
+
throw new McpSurfaceError(`MCP tool '${tool.name}' carries argv '${template}' that is not in the read-only whitelist; refusing to start.`);
|
|
188
|
+
}
|
|
189
|
+
servedTemplates.add(template);
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
for (const entry of whitelist.entries) {
|
|
193
|
+
const template = argvTemplateOf(entry);
|
|
194
|
+
if (!servedTemplates.has(template)) {
|
|
195
|
+
throw new McpSurfaceError(`Whitelist entry '${entry.id}' ('${template}') is reachable from no MCP tool; refusing to start.`);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { ReadOnlyWhitelistEntry } from '../readonly-surface/readonly-whitelist.js';
|
|
2
|
+
import { type CliExecution } from './cli-executor.js';
|
|
3
|
+
/** How much of one memory note's description travels back. */
|
|
4
|
+
export declare const MEMORY_EXCERPT_CHARS = 120;
|
|
5
|
+
/** Hard ceiling on matches returned, independent of what the CLI was asked for. */
|
|
6
|
+
export declare const MEMORY_MAX_RETURNED = 50;
|
|
7
|
+
export interface ToolTextContent {
|
|
8
|
+
readonly type: 'text';
|
|
9
|
+
readonly text: string;
|
|
10
|
+
}
|
|
11
|
+
export interface ToolCallResult {
|
|
12
|
+
readonly content: readonly ToolTextContent[];
|
|
13
|
+
/** Present and `true` only when something failed. Absent means success. */
|
|
14
|
+
readonly isError?: boolean;
|
|
15
|
+
}
|
|
16
|
+
/** Injectable execution, so a test can drive a handler without a CLI. */
|
|
17
|
+
export type CliExecutor = (argv: readonly string[]) => Promise<CliExecution>;
|
|
18
|
+
export interface ToolCallContext {
|
|
19
|
+
readonly execute?: CliExecutor;
|
|
20
|
+
/** Directory the CLI runs in. Defaults to the server process's own. */
|
|
21
|
+
readonly cwd?: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* The values to render one entry with, or `undefined` when the caller did not
|
|
25
|
+
* supply enough for this entry to run. A value the caller DID supply is always
|
|
26
|
+
* present — it is handed to the guard, which is what decides whether it is
|
|
27
|
+
* allowed, so nothing supplied can be silently skipped.
|
|
28
|
+
*/
|
|
29
|
+
export declare function valuesForEntry(entry: ReadOnlyWhitelistEntry, args: Readonly<Record<string, unknown>>, context: ToolCallContext): Record<string, string> | undefined;
|
|
30
|
+
/** One argv's outcome, kept whole so the caller can see every envelope. */
|
|
31
|
+
export interface EntryOutcome {
|
|
32
|
+
readonly key: string;
|
|
33
|
+
readonly execution: CliExecution;
|
|
34
|
+
readonly envelope: unknown;
|
|
35
|
+
readonly failure?: string;
|
|
36
|
+
}
|
|
37
|
+
/** Render the outcomes as a tool result, failing the call when any argv failed. */
|
|
38
|
+
export declare function resultOf(outcomes: readonly EntryOutcome[]): ToolCallResult;
|
|
39
|
+
/** A refused call: the parameter guard said no, before anything was executed. */
|
|
40
|
+
export declare function rejectedResult(entry: ReadOnlyWhitelistEntry, reason: string): ToolCallResult;
|
|
41
|
+
/** Execute one already-validated argv and keep its whole outcome. */
|
|
42
|
+
export declare function runArgv(key: string, argv: readonly string[], context: ToolCallContext): Promise<EntryOutcome>;
|
|
@@ -0,0 +1,137 @@
|
|
|
1
|
+
// src/services/mcp/tool-core.ts
|
|
2
|
+
//
|
|
3
|
+
// What both tool handlers are made of: the result shape, the argument-to-argv
|
|
4
|
+
// step, and the one place a CLI execution becomes an outcome. Split out of
|
|
5
|
+
// `tools.ts` because that file had grown past the repo's 300-line cap, and the
|
|
6
|
+
// cap is measured per file rather than per concept.
|
|
7
|
+
//
|
|
8
|
+
// ERRORS ARE NEVER FLATTENED HERE, either. A CLI failure becomes a `failure`
|
|
9
|
+
// string on the outcome, never an absent value: a read tool that answers
|
|
10
|
+
// "nothing there" when it actually failed is worse than one that errors, because
|
|
11
|
+
// the reader believes the empty answer (spec §9 rule 3).
|
|
12
|
+
import { executeCliArgv } from './cli-executor.js';
|
|
13
|
+
/** How much of one memory note's description travels back. */
|
|
14
|
+
export const MEMORY_EXCERPT_CHARS = 120;
|
|
15
|
+
/** Hard ceiling on matches returned, independent of what the CLI was asked for. */
|
|
16
|
+
export const MEMORY_MAX_RETURNED = 50;
|
|
17
|
+
/**
|
|
18
|
+
* Hand-written parameter defaults — the one place this module can drift from the
|
|
19
|
+
* whitelist (spec §8.1 asks such places to be visible). `project` is a MANDATORY
|
|
20
|
+
* option of `peaks request show`, and a status caller should not have to repeat
|
|
21
|
+
* the directory the server already runs in. Nothing else is defaulted: every
|
|
22
|
+
* other placeholder is either required by the caller or defaulted in the data.
|
|
23
|
+
*/
|
|
24
|
+
function defaultFor(param, context) {
|
|
25
|
+
return param === 'project' ? (context.cwd ?? process.cwd()) : undefined;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* A transported argument as the guard's input. The JSON transport carries
|
|
29
|
+
* numbers for integer parameters and the guard can only judge a string, so
|
|
30
|
+
* coercion happens here, at the boundary — and a wrong JSON type is NOT
|
|
31
|
+
* stringified into something that looks like data: it becomes the empty string,
|
|
32
|
+
* which the guard already refuses by name (`EMPTY`).
|
|
33
|
+
*/
|
|
34
|
+
function asGuardInput(supplied) {
|
|
35
|
+
if (typeof supplied === 'string')
|
|
36
|
+
return supplied;
|
|
37
|
+
if (typeof supplied === 'number')
|
|
38
|
+
return String(supplied);
|
|
39
|
+
return '';
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* The values to render one entry with, or `undefined` when the caller did not
|
|
43
|
+
* supply enough for this entry to run. A value the caller DID supply is always
|
|
44
|
+
* present — it is handed to the guard, which is what decides whether it is
|
|
45
|
+
* allowed, so nothing supplied can be silently skipped.
|
|
46
|
+
*/
|
|
47
|
+
export function valuesForEntry(entry, args, context) {
|
|
48
|
+
const values = {};
|
|
49
|
+
for (const [name, spec] of Object.entries(entry.params)) {
|
|
50
|
+
const supplied = args[name];
|
|
51
|
+
if (supplied !== undefined) {
|
|
52
|
+
values[name] = asGuardInput(supplied);
|
|
53
|
+
continue;
|
|
54
|
+
}
|
|
55
|
+
const fallback = spec.default === undefined ? defaultFor(name, context) : String(spec.default);
|
|
56
|
+
if (fallback === undefined)
|
|
57
|
+
return undefined;
|
|
58
|
+
values[name] = fallback;
|
|
59
|
+
}
|
|
60
|
+
return values;
|
|
61
|
+
}
|
|
62
|
+
/** True when the CLI process itself failed, or its stdout was not a JSON envelope. */
|
|
63
|
+
function failureReasonOf(execution, envelope) {
|
|
64
|
+
const called = `peaks ${execution.argv.join(' ')}`;
|
|
65
|
+
if (execution.launchError !== undefined) {
|
|
66
|
+
return `The peaks CLI could not be started: ${execution.launchError}`;
|
|
67
|
+
}
|
|
68
|
+
if (execution.timedOut) {
|
|
69
|
+
return `The peaks CLI did not finish in time and was killed: ${called}`;
|
|
70
|
+
}
|
|
71
|
+
if (execution.exitCode !== 0) {
|
|
72
|
+
return `The peaks CLI exited with code ${String(execution.exitCode)}: ${called}`;
|
|
73
|
+
}
|
|
74
|
+
if (envelope === undefined) {
|
|
75
|
+
return `The peaks CLI printed no JSON on stdout: ${called}`;
|
|
76
|
+
}
|
|
77
|
+
if (isFailedEnvelope(envelope)) {
|
|
78
|
+
return `The peaks CLI reported failure: ${called}`;
|
|
79
|
+
}
|
|
80
|
+
return undefined;
|
|
81
|
+
}
|
|
82
|
+
function isFailedEnvelope(value) {
|
|
83
|
+
return typeof value === 'object' && value !== null && 'ok' in value && value.ok === false;
|
|
84
|
+
}
|
|
85
|
+
function parseStdout(stdout) {
|
|
86
|
+
try {
|
|
87
|
+
return { parsed: true, value: JSON.parse(stdout) };
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return { parsed: false };
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
/** Render the outcomes as a tool result, failing the call when any argv failed. */
|
|
94
|
+
export function resultOf(outcomes) {
|
|
95
|
+
const payload = {};
|
|
96
|
+
for (const outcome of outcomes) {
|
|
97
|
+
payload[outcome.key] =
|
|
98
|
+
outcome.envelope === undefined
|
|
99
|
+
? { ok: false, message: outcome.failure ?? 'no output', argv: outcome.execution.argv }
|
|
100
|
+
: outcome.envelope;
|
|
101
|
+
}
|
|
102
|
+
const failures = outcomes.filter((outcome) => outcome.failure !== undefined);
|
|
103
|
+
if (failures.length === 0) {
|
|
104
|
+
return { content: [{ type: 'text', text: JSON.stringify(payload) }] };
|
|
105
|
+
}
|
|
106
|
+
return {
|
|
107
|
+
content: [
|
|
108
|
+
{
|
|
109
|
+
type: 'text',
|
|
110
|
+
text: JSON.stringify({
|
|
111
|
+
...payload,
|
|
112
|
+
failures: failures.map((outcome) => ({ key: outcome.key, reason: outcome.failure }))
|
|
113
|
+
})
|
|
114
|
+
}
|
|
115
|
+
],
|
|
116
|
+
isError: true
|
|
117
|
+
};
|
|
118
|
+
}
|
|
119
|
+
/** A refused call: the parameter guard said no, before anything was executed. */
|
|
120
|
+
export function rejectedResult(entry, reason) {
|
|
121
|
+
return {
|
|
122
|
+
content: [{ type: 'text', text: JSON.stringify({ entry: entry.id, reason }) }],
|
|
123
|
+
isError: true
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/** Execute one already-validated argv and keep its whole outcome. */
|
|
127
|
+
export async function runArgv(key, argv, context) {
|
|
128
|
+
const execute = context.execute ??
|
|
129
|
+
((args) => executeCliArgv(args, context.cwd === undefined ? {} : { cwd: context.cwd }));
|
|
130
|
+
const execution = await execute(argv);
|
|
131
|
+
const parsed = parseStdout(execution.stdout);
|
|
132
|
+
const envelope = parsed.parsed ? parsed.value : undefined;
|
|
133
|
+
const failure = failureReasonOf(execution, envelope);
|
|
134
|
+
return failure === undefined
|
|
135
|
+
? { key, execution, envelope }
|
|
136
|
+
: { key, execution, envelope, failure };
|
|
137
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
import type { McpToolDefinition } from './surface.js';
|
|
2
|
+
import { type ToolCallContext, type ToolCallResult } from './tool-core.js';
|
|
3
|
+
/**
|
|
4
|
+
* `peaks_status`: run every argv the caller supplied enough for, and return each
|
|
5
|
+
* CLI envelope verbatim under the id of the whitelist entry that produced it.
|
|
6
|
+
*/
|
|
7
|
+
export declare function callStatusTool(tool: McpToolDefinition, args: Readonly<Record<string, unknown>>, context: ToolCallContext): Promise<ToolCallResult>;
|
|
8
|
+
type ToolHandler = (tool: McpToolDefinition, args: Readonly<Record<string, unknown>>, context: ToolCallContext) => Promise<ToolCallResult>;
|
|
9
|
+
/** Tools the surface declares that no handler can serve. Non-empty = refuse to start. */
|
|
10
|
+
export declare function missingHandlers(tools: readonly McpToolDefinition[]): readonly string[];
|
|
11
|
+
/** Route a `tools/call` to its handler, or `undefined` for a tool nobody serves. */
|
|
12
|
+
export declare function handlerFor(name: string): ToolHandler | undefined;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// src/services/mcp/tools.ts
|
|
2
|
+
//
|
|
3
|
+
// `peaks_status`, and the table that routes a `tools/call` to its handler. The
|
|
4
|
+
// result shape, the argument-to-argv step and the outcome rendering live in
|
|
5
|
+
// `tool-core.ts`; the bounded memory tool lives in `memory-tool.ts`.
|
|
6
|
+
//
|
|
7
|
+
// The composite is a pipe with a shape, never a judge (spec §3.2): "a composite
|
|
8
|
+
// tool may arrange and reshape; it may not CONCLUDE." Each CLI envelope is
|
|
9
|
+
// embedded VERBATIM under the whitelist entry id that produced it, so the whole
|
|
10
|
+
// result is an identity transform of the calls it ran. A key is absent when its
|
|
11
|
+
// argv did not run — exactly "subset"; no branch fabricates a value no argv
|
|
12
|
+
// returned.
|
|
13
|
+
import { buildArgv } from '../readonly-surface/argv-guard.js';
|
|
14
|
+
import { callMemorySearchTool } from './memory-tool.js';
|
|
15
|
+
import { rejectedResult, resultOf, runArgv, valuesForEntry } from './tool-core.js';
|
|
16
|
+
/**
|
|
17
|
+
* `peaks_status`: run every argv the caller supplied enough for, and return each
|
|
18
|
+
* CLI envelope verbatim under the id of the whitelist entry that produced it.
|
|
19
|
+
*/
|
|
20
|
+
export async function callStatusTool(tool, args, context) {
|
|
21
|
+
// Every argv is BUILT before any is run. Executing as we go meant a refused
|
|
22
|
+
// placeholder left the earlier argv of the same call already executed — a
|
|
23
|
+
// caller's malformed input would have reached the CLI's read path anyway.
|
|
24
|
+
const plan = [];
|
|
25
|
+
for (const entry of tool.entries) {
|
|
26
|
+
const values = valuesForEntry(entry, args, context);
|
|
27
|
+
if (values === undefined)
|
|
28
|
+
continue;
|
|
29
|
+
const built = buildArgv(entry, values);
|
|
30
|
+
if (!built.ok) {
|
|
31
|
+
return rejectedResult(entry, `Parameter ${built.param} was refused: ${built.message}`);
|
|
32
|
+
}
|
|
33
|
+
plan.push({ id: entry.id, argv: built.argv });
|
|
34
|
+
}
|
|
35
|
+
const outcomes = [];
|
|
36
|
+
for (const step of plan) {
|
|
37
|
+
outcomes.push(await runArgv(step.id, step.argv, context));
|
|
38
|
+
}
|
|
39
|
+
return resultOf(outcomes);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Tool name -> handler, spelled out rather than derived. A tool the whitelist
|
|
43
|
+
* declares but this table does not name cannot be served, and `missingHandlers`
|
|
44
|
+
* below turns that into a refusal to start instead of a call that answers with
|
|
45
|
+
* whatever the fallback branch happened to do.
|
|
46
|
+
*/
|
|
47
|
+
const TOOL_HANDLERS = {
|
|
48
|
+
peaks_status: callStatusTool,
|
|
49
|
+
peaks_memory_search: callMemorySearchTool
|
|
50
|
+
};
|
|
51
|
+
/** Tools the surface declares that no handler can serve. Non-empty = refuse to start. */
|
|
52
|
+
export function missingHandlers(tools) {
|
|
53
|
+
return tools.map((tool) => tool.name).filter((name) => !(name in TOOL_HANDLERS));
|
|
54
|
+
}
|
|
55
|
+
/** Route a `tools/call` to its handler, or `undefined` for a tool nobody serves. */
|
|
56
|
+
export function handlerFor(name) {
|
|
57
|
+
return TOOL_HANDLERS[name];
|
|
58
|
+
}
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
// `peaks memory ingest` — pull memories written by the IDE-side agent into
|
|
3
3
|
// the peaks-owned store.
|
|
4
4
|
//
|
|
5
|
-
// Slice 2026-09-09-memory-system-overhaul (A). Before this, "沉淀记忆" in a
|
|
6
5
|
// peaks-code workflow landed in Claude Code's own per-project memory dir
|
|
7
6
|
// (`~/.claude/projects/<hash>/memory/`) and never reached `.peaks/memory/`
|
|
8
7
|
// — a split-brain write path with no single authority.
|
|
@@ -4,7 +4,6 @@ export type ProjectContextSection = {
|
|
|
4
4
|
body: string;
|
|
5
5
|
};
|
|
6
6
|
/**
|
|
7
|
-
* Slice 2026-07-15-project-scan-bootstrap (G1 + G2):
|
|
8
7
|
* generateProjectContext now also bootstraps the project-level
|
|
9
8
|
* `.peaks/project-scan/` artifact set. The envelope is returned
|
|
10
9
|
* alongside the context so `peaks project context` can surface
|
|
@@ -151,7 +151,6 @@ export async function generateProjectContext(projectRoot) {
|
|
|
151
151
|
content = header + '\n' + sessionHistory + '\n';
|
|
152
152
|
}
|
|
153
153
|
writeFileSync(contextPath, content, 'utf8');
|
|
154
|
-
// Slice 2026-07-15-project-scan-bootstrap (G1 + G2):
|
|
155
154
|
// After writing PROJECT.md, also bootstrap `.peaks/project-scan/`
|
|
156
155
|
// (project-scan.md + 4 bundled audit/business templates). Idempotent
|
|
157
156
|
// — re-running this call does not overwrite existing files (unless
|
|
@@ -20,7 +20,6 @@ export interface ReindexUnclassified {
|
|
|
20
20
|
export interface ReindexOrphanEntry {
|
|
21
21
|
name: string;
|
|
22
22
|
kind: string;
|
|
23
|
-
/** The `sourcePath` recorded in the previous index that no longer exists on disk. */
|
|
24
23
|
sourcePath: string;
|
|
25
24
|
}
|
|
26
25
|
/**
|
|
@@ -49,7 +48,6 @@ export interface MemoryReindexReport {
|
|
|
49
48
|
unclassified: ReindexUnclassified[];
|
|
50
49
|
/** Distinct files that resolve to the same index name — reported, never overwritten. */
|
|
51
50
|
nameConflicts: ReindexNameConflict[];
|
|
52
|
-
/** Previous index entries whose `sourcePath` no longer exists (error-class drift). */
|
|
53
51
|
orphanIndex: ReindexOrphanEntry[];
|
|
54
52
|
/** Files on disk that the rebuilt index does not contain (warn-class drift). */
|
|
55
53
|
orphanDisk: string[];
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
// the markdown files on disk, plus regeneration of the human/LLM-facing
|
|
4
4
|
// `MEMORY.md` index and a drift report.
|
|
5
5
|
//
|
|
6
|
-
// Why this exists (slice 2026-09-09-memory-system-overhaul, B):
|
|
7
6
|
// - `peaks memory extract` only ever wrote memories FROM artifacts; it
|
|
8
7
|
// never re-scanned files already on disk, and there was no rebuild
|
|
9
8
|
// command. 78 top-level files were absent from index.json.
|
|
@@ -29,6 +29,5 @@ export declare function readProjectMemories(projectRoot: string): ProjectMemoryR
|
|
|
29
29
|
* Read a single project memory's full body by name. Returns null when
|
|
30
30
|
* the memory does not exist. The on-disk body is returned verbatim
|
|
31
31
|
* (pretty). The CLI layer applies `formatMdCompact` when `format: 'compact'`
|
|
32
|
-
* is requested. Slice 023 (R3).
|
|
33
32
|
*/
|
|
34
33
|
export declare function readProjectMemoryBody(projectRoot: string, name: string): ProjectMemoryShowResult | null;
|
|
@@ -145,7 +145,6 @@ export function readProjectMemories(projectRoot) {
|
|
|
145
145
|
* Read a single project memory's full body by name. Returns null when
|
|
146
146
|
* the memory does not exist. The on-disk body is returned verbatim
|
|
147
147
|
* (pretty). The CLI layer applies `formatMdCompact` when `format: 'compact'`
|
|
148
|
-
* is requested. Slice 023 (R3).
|
|
149
148
|
*/
|
|
150
149
|
export function readProjectMemoryBody(projectRoot, name) {
|
|
151
150
|
const normalizedRoot = normalizeRoot(projectRoot);
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
* `--kind` help text all derive from this tuple. Adding a kind here is the
|
|
7
7
|
* only edit required; TypeScript then forces `MEMORY_KIND_TIER` to cover it.
|
|
8
8
|
*
|
|
9
|
-
* Slice 2026-09-10-memory-vocab-and-rotate (E): the original 8 kinds are
|
|
10
9
|
* unchanged. The 13 appended kinds were observed on disk with real values
|
|
11
10
|
* that the index schema rejected (`peaks memory reindex` reported them as
|
|
12
11
|
* `unrecognized kind value`). Accepting them moves those files into the
|
|
@@ -17,7 +17,6 @@
|
|
|
17
17
|
* `--kind` help text all derive from this tuple. Adding a kind here is the
|
|
18
18
|
* only edit required; TypeScript then forces `MEMORY_KIND_TIER` to cover it.
|
|
19
19
|
*
|
|
20
|
-
* Slice 2026-09-10-memory-vocab-and-rotate (E): the original 8 kinds are
|
|
21
20
|
* unchanged. The 13 appended kinds were observed on disk with real values
|
|
22
21
|
* that the index schema rejected (`peaks memory reindex` reported them as
|
|
23
22
|
* `unrecognized kind value`). Accepting them moves those files into the
|
|
@@ -36,7 +36,6 @@ export interface ParsedMemoryFrontmatter {
|
|
|
36
36
|
* 3. top-level `type:` — tolerated by the pre-existing trim-based reader
|
|
37
37
|
* 4. `none` — reported as unclassified; never invented
|
|
38
38
|
*
|
|
39
|
-
* Slice 2026-09-09-memory-system-overhaul (B): before this helper, files
|
|
40
39
|
* using a top-level `kind:` were silently dropped by the reader (defect
|
|
41
40
|
* #2). Falling through to `kind:` / `type:` is a strict superset of the
|
|
42
41
|
* old behaviour — no previously-indexed file changes kind.
|
|
@@ -35,7 +35,6 @@ export { parseBlock, parseBlockResult, renderMemoryFile, slugify, VALID_MEMORY_K
|
|
|
35
35
|
* 3. top-level `type:` — tolerated by the pre-existing trim-based reader
|
|
36
36
|
* 4. `none` — reported as unclassified; never invented
|
|
37
37
|
*
|
|
38
|
-
* Slice 2026-09-09-memory-system-overhaul (B): before this helper, files
|
|
39
38
|
* using a top-level `kind:` were silently dropped by the reader (defect
|
|
40
39
|
* #2). Falling through to `kind:` / `type:` is a strict superset of the
|
|
41
40
|
* old behaviour — no previously-indexed file changes kind.
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
// Thin back-compat shim.
|
|
3
3
|
//
|
|
4
4
|
// The original 1032-line project-memory-service.ts was split on 2026-07-26
|
|
5
|
-
// (rid-003) into the `./project-memory-service/` submodule:
|
|
6
5
|
//
|
|
7
6
|
// - parsers/frontmatter.ts — YAML frontmatter parse + render
|
|
8
7
|
// - parsers/markdown-pure.ts — extract / summarize (pure)
|
|
@@ -5,7 +5,6 @@ const ASSISTED_CONFIRM_TRANSITIONS = new Set([
|
|
|
5
5
|
'qa:verdict-issued'
|
|
6
6
|
]);
|
|
7
7
|
export function requiresConfirmation(mode, transitionKey) {
|
|
8
|
-
// Slice 2026-09-09-mode-consolidation: `swarm` removed as a mode; the
|
|
9
8
|
// two auto-proceed peers are `full-auto` and `24h`.
|
|
10
9
|
if (mode === 'full-auto' || mode === '24h') {
|
|
11
10
|
return false;
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Slice 2026-09-09-mode-consolidation (Slice D): one read for the whole
|
|
3
2
|
* stacked mode picture.
|
|
4
3
|
*
|
|
5
4
|
* The autonomy model has two layers that used to be read by nothing in
|
|
@@ -82,7 +81,6 @@ export declare function resolvePresenceMode(projectRoot: string): ResolvedPresen
|
|
|
82
81
|
* documented contract.
|
|
83
82
|
*
|
|
84
83
|
* The union is a superset of both the pre-2026-09-09 mapping (state
|
|
85
|
-
* machine) and the 2026-09-09-mode-consolidation mapping (presence
|
|
86
84
|
* mode): keep partial while the mode says `24h` even in
|
|
87
85
|
* `WAITING_USER`, and keep it when only the state machine knows.
|
|
88
86
|
* Nothing that resolved to `partial` before resolves to `standard`
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Slice 2026-09-09-mode-consolidation (Slice D): one read for the whole
|
|
3
2
|
* stacked mode picture.
|
|
4
3
|
*
|
|
5
4
|
* The autonomy model has two layers that used to be read by nothing in
|
|
@@ -95,7 +94,6 @@ function is24hRunEngaged(projectRoot) {
|
|
|
95
94
|
* documented contract.
|
|
96
95
|
*
|
|
97
96
|
* The union is a superset of both the pre-2026-09-09 mapping (state
|
|
98
|
-
* machine) and the 2026-09-09-mode-consolidation mapping (presence
|
|
99
97
|
* mode): keep partial while the mode says `24h` even in
|
|
100
98
|
* `WAITING_USER`, and keep it when only the state machine knows.
|
|
101
99
|
* Nothing that resolved to `partial` before resolves to `standard`
|
|
@@ -7,10 +7,6 @@
|
|
|
7
7
|
* them in. Tests pass synthetic events directly.
|
|
8
8
|
*
|
|
9
9
|
* Aggregations:
|
|
10
|
-
* - `aggregateStatus(events)` → AC-1
|
|
11
|
-
* - `aggregateSlices(events)` → AC-2
|
|
12
|
-
* - `aggregateFanout(events)` → AC-3
|
|
13
|
-
* - `aggregateRepairCycles(events)` → AC-4
|
|
14
10
|
*
|
|
15
11
|
* The dispatch / mode-gate / context / post-compact categories land
|
|
16
12
|
* in Slice C (more hooks); for Slice B only `slice-transition` events
|
|
@@ -7,10 +7,6 @@
|
|
|
7
7
|
* them in. Tests pass synthetic events directly.
|
|
8
8
|
*
|
|
9
9
|
* Aggregations:
|
|
10
|
-
* - `aggregateStatus(events)` → AC-1
|
|
11
|
-
* - `aggregateSlices(events)` → AC-2
|
|
12
|
-
* - `aggregateFanout(events)` → AC-3
|
|
13
|
-
* - `aggregateRepairCycles(events)` → AC-4
|
|
14
10
|
*
|
|
15
11
|
* The dispatch / mode-gate / context / post-compact categories land
|
|
16
12
|
* in Slice C (more hooks); for Slice B only `slice-transition` events
|
|
@@ -129,7 +125,6 @@ export function aggregateRepairCycles(events) {
|
|
|
129
125
|
perSlice
|
|
130
126
|
};
|
|
131
127
|
}
|
|
132
|
-
// ----- period rollup (AC-5 — Slice D, but helpers live here) -----
|
|
133
128
|
export function periodStartIso(period, now = () => new Date()) {
|
|
134
129
|
const d = now();
|
|
135
130
|
if (period === 'day') {
|
|
@@ -151,7 +146,6 @@ export function filterByPeriod(events, period, now) {
|
|
|
151
146
|
const start = periodStartIso(period, now);
|
|
152
147
|
return events.filter((e) => e.ts >= start);
|
|
153
148
|
}
|
|
154
|
-
// ----- rid-030 F-direction: 5-metric dashboard summary -----
|
|
155
149
|
/**
|
|
156
150
|
* Aggregate the 5 dashboard metric classes for a single session, filtered
|
|
157
151
|
* to events with `ts >= since`. Events with unparseable timestamps are
|
|
@@ -25,7 +25,6 @@ export const OBSERVABILITY_CATEGORIES = [
|
|
|
25
25
|
'cycle',
|
|
26
26
|
'token-usage',
|
|
27
27
|
'monotonic-trigger',
|
|
28
|
-
// Slice 2026-07-29-worktree-l2-extended Part 4.A: lease lifecycle
|
|
29
28
|
// metrics. Emitted by `peaks worktree spawn / renew / release /
|
|
30
29
|
// gc` and by the auto-release hook in dispatch finalization (Part
|
|
31
30
|
// 3.A). Read by `peaks lease metrics`. The `detail.kind` field
|