peaks-loop 4.1.2 → 4.1.4
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 +112 -0
- package/README-en.md +1 -1
- package/README.md +1 -1
- package/contracts/readonly-argv-whitelist.json +211 -0
- package/dist/cli/commands/asset-command-shared.d.ts +12 -0
- package/dist/cli/commands/asset-command-shared.js +45 -0
- package/dist/cli/commands/asset-commands.d.ts +6 -1
- package/dist/cli/commands/asset-commands.js +11 -372
- package/dist/cli/commands/asset-crystallize-command.d.ts +3 -0
- package/dist/cli/commands/asset-crystallize-command.js +60 -0
- package/dist/cli/commands/asset-crystallize-payload.d.ts +47 -0
- package/dist/cli/commands/asset-crystallize-payload.js +85 -0
- package/dist/cli/commands/asset-crystallize-runner.d.ts +3 -0
- package/dist/cli/commands/asset-crystallize-runner.js +133 -0
- package/dist/cli/commands/asset-dispose-command.d.ts +3 -0
- package/dist/cli/commands/asset-dispose-command.js +99 -0
- package/dist/cli/commands/asset-status-command.d.ts +3 -0
- package/dist/cli/commands/asset-status-command.js +100 -0
- 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 +64 -473
- 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/await-runners.d.ts +11 -0
- package/dist/cli/commands/await-runners.js +148 -0
- package/dist/cli/commands/baseline-audit-command.d.ts +3 -0
- package/dist/cli/commands/baseline-audit-command.js +64 -0
- package/dist/cli/commands/baseline-command-shared.d.ts +23 -0
- package/dist/cli/commands/baseline-command-shared.js +39 -0
- package/dist/cli/commands/baseline-commands.js +33 -313
- package/dist/cli/commands/baseline-freeze-commands.d.ts +4 -0
- package/dist/cli/commands/baseline-freeze-commands.js +81 -0
- package/dist/cli/commands/baseline-guard-command.d.ts +3 -0
- package/dist/cli/commands/baseline-guard-command.js +52 -0
- package/dist/cli/commands/baseline-read-commands.d.ts +5 -0
- package/dist/cli/commands/baseline-read-commands.js +72 -0
- package/dist/cli/commands/baseline-rollback-commands.d.ts +4 -0
- package/dist/cli/commands/baseline-rollback-commands.js +88 -0
- package/dist/cli/commands/classify-downgrade-command.d.ts +9 -0
- package/dist/cli/commands/classify-downgrade-command.js +21 -0
- package/dist/cli/commands/classify-run-command.d.ts +9 -0
- package/dist/cli/commands/classify-run-command.js +73 -0
- package/dist/cli/commands/classify-signals.d.ts +5 -0
- package/dist/cli/commands/classify-signals.js +104 -0
- 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-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 +136 -0
- package/dist/cli/commands/code-gate-step-08-command.d.ts +3 -0
- package/dist/cli/commands/code-gate-step-08-command.js +155 -0
- 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-runtime-commands.d.ts +9 -43
- package/dist/cli/commands/code-runtime-commands.js +20 -672
- 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-options.d.ts +22 -0
- package/dist/cli/commands/codegraph-command-options.js +22 -0
- package/dist/cli/commands/codegraph-commands.d.ts +2 -2
- package/dist/cli/commands/codegraph-commands.js +14 -397
- package/dist/cli/commands/codegraph-config-restore-command.d.ts +3 -0
- package/dist/cli/commands/codegraph-config-restore-command.js +200 -0
- package/dist/cli/commands/codegraph-proxy-commands.d.ts +10 -0
- package/dist/cli/commands/codegraph-proxy-commands.js +159 -0
- package/dist/cli/commands/codegraph-repair-commands.d.ts +3 -0
- package/dist/cli/commands/codegraph-repair-commands.js +94 -0
- package/dist/cli/commands/codegraph-status-command.d.ts +1 -1
- package/dist/cli/commands/codegraph-status-command.js +27 -214
- package/dist/cli/commands/codegraph-status-integrity.d.ts +44 -0
- package/dist/cli/commands/codegraph-status-integrity.js +121 -0
- package/dist/cli/commands/codegraph-status-json.d.ts +5 -0
- package/dist/cli/commands/codegraph-status-json.js +127 -0
- package/dist/cli/commands/compact-command.d.ts +6 -2
- package/dist/cli/commands/compact-command.js +12 -559
- 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-command-shared.d.ts +60 -0
- package/dist/cli/commands/container-command-shared.js +52 -0
- package/dist/cli/commands/container-commands.d.ts +1 -1
- package/dist/cli/commands/container-commands.js +4 -216
- package/dist/cli/commands/container-release-command.d.ts +3 -0
- package/dist/cli/commands/container-release-command.js +105 -0
- package/dist/cli/commands/container-spawn-command.d.ts +3 -0
- package/dist/cli/commands/container-spawn-command.js +148 -0
- package/dist/cli/commands/context-check-command.d.ts +3 -0
- package/dist/cli/commands/context-check-command.js +81 -0
- package/dist/cli/commands/context-commands.d.ts +2 -7
- package/dist/cli/commands/context-commands.js +6 -276
- package/dist/cli/commands/context-layer-command.d.ts +3 -0
- package/dist/cli/commands/context-layer-command.js +34 -0
- package/dist/cli/commands/context-layer-fetchers.d.ts +15 -0
- package/dist/cli/commands/context-layer-fetchers.js +162 -0
- package/dist/cli/commands/context-status-command.d.ts +17 -0
- package/dist/cli/commands/context-status-command.js +41 -0
- package/dist/cli/commands/contract-write-command.d.ts +3 -0
- package/dist/cli/commands/contract-write-command.js +144 -0
- package/dist/cli/commands/core/doctor-bindings.d.ts +17 -0
- package/dist/cli/commands/core/doctor-bindings.js +30 -0
- package/dist/cli/commands/core/doctor-command.d.ts +4 -18
- package/dist/cli/commands/core/doctor-command.js +2 -323
- package/dist/cli/commands/core/doctor-logs.d.ts +8 -0
- package/dist/cli/commands/core/doctor-logs.js +32 -0
- package/dist/cli/commands/core/doctor-probes.d.ts +3 -0
- package/dist/cli/commands/core/doctor-probes.js +55 -0
- package/dist/cli/commands/core/doctor-run-command.d.ts +12 -0
- package/dist/cli/commands/core/doctor-run-command.js +172 -0
- package/dist/cli/commands/core/doctor-summary.d.ts +7 -0
- package/dist/cli/commands/core/doctor-summary.js +39 -0
- package/dist/cli/commands/core/memory-command-shared.d.ts +25 -0
- package/dist/cli/commands/core/memory-command-shared.js +20 -0
- package/dist/cli/commands/core/memory-command.d.ts +1 -1
- package/dist/cli/commands/core/memory-command.js +6 -227
- package/dist/cli/commands/core/memory-delegated-verbs.d.ts +4 -0
- package/dist/cli/commands/core/memory-delegated-verbs.js +178 -0
- package/dist/cli/commands/core/memory-extract-command.d.ts +3 -0
- package/dist/cli/commands/core/memory-extract-command.js +90 -0
- package/dist/cli/commands/core/memory-sync-command.d.ts +3 -0
- package/dist/cli/commands/core/memory-sync-command.js +38 -0
- package/dist/cli/commands/core/session-command.d.ts +1 -1
- package/dist/cli/commands/core/session-command.js +12 -206
- package/dist/cli/commands/core/session-info-command.d.ts +3 -0
- package/dist/cli/commands/core/session-info-command.js +142 -0
- package/dist/cli/commands/core/session-verb-commands.d.ts +5 -0
- package/dist/cli/commands/core/session-verb-commands.js +58 -0
- package/dist/cli/commands/core/skill-command.d.ts +1 -44
- package/dist/cli/commands/core/skill-command.js +13 -541
- 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/standards-command.d.ts +1 -24
- package/dist/cli/commands/core/standards-command.js +33 -201
- package/dist/cli/commands/core/standards-init-command.d.ts +3 -0
- package/dist/cli/commands/core/standards-init-command.js +87 -0
- package/dist/cli/commands/core/standards-lint.d.ts +24 -0
- package/dist/cli/commands/core/standards-lint.js +57 -0
- package/dist/cli/commands/core/standards-migrate-command.d.ts +3 -0
- package/dist/cli/commands/core/standards-migrate-command.js +57 -0
- package/dist/cli/commands/cron-scheduler-commands.d.ts +5 -1
- package/dist/cli/commands/cron-scheduler-commands.js +36 -206
- package/dist/cli/commands/cron-scheduler-run-once-command.d.ts +7 -0
- package/dist/cli/commands/cron-scheduler-run-once-command.js +35 -0
- package/dist/cli/commands/cron-scheduler-shared.d.ts +6 -0
- package/dist/cli/commands/cron-scheduler-shared.js +48 -0
- package/dist/cli/commands/cron-scheduler-start-command.d.ts +7 -0
- package/dist/cli/commands/cron-scheduler-start-command.js +65 -0
- package/dist/cli/commands/cron-scheduler-status-command.d.ts +7 -0
- package/dist/cli/commands/cron-scheduler-status-command.js +46 -0
- package/dist/cli/commands/cron-scheduler-stop-command.d.ts +7 -0
- package/dist/cli/commands/cron-scheduler-stop-command.js +61 -0
- 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.js +159 -775
- package/dist/cli/commands/dispatch-dag-envelope.d.ts +41 -0
- package/dist/cli/commands/dispatch-dag-envelope.js +49 -0
- package/dist/cli/commands/dispatch-dag-failure.d.ts +18 -0
- package/dist/cli/commands/dispatch-dag-failure.js +16 -0
- package/dist/cli/commands/dispatch-dag-preflight.d.ts +51 -0
- package/dist/cli/commands/dispatch-dag-preflight.js +105 -0
- package/dist/cli/commands/dispatch-dag-runners.d.ts +48 -0
- package/dist/cli/commands/dispatch-dag-runners.js +73 -0
- 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.d.ts +27 -0
- package/dist/cli/commands/dispatch-from-dag.js +87 -257
- 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/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 -1
- package/dist/cli/commands/evolution-commands.js +19 -350
- 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/final-review-command-envelopes.d.ts +44 -0
- package/dist/cli/commands/final-review-command-envelopes.js +100 -0
- package/dist/cli/commands/final-review-command-shared.d.ts +52 -0
- package/dist/cli/commands/final-review-command-shared.js +35 -0
- package/dist/cli/commands/final-review-commands.d.ts +7 -27
- package/dist/cli/commands/final-review-commands.js +13 -240
- package/dist/cli/commands/final-review-prepare-command.d.ts +3 -0
- package/dist/cli/commands/final-review-prepare-command.js +200 -0
- 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/gate-commands.js +26 -8
- package/dist/cli/commands/governance-classify-contract-commands.d.ts +23 -9
- package/dist/cli/commands/governance-classify-contract-commands.js +26 -269
- package/dist/cli/commands/hooks-command-shared.d.ts +42 -0
- package/dist/cli/commands/hooks-command-shared.js +32 -0
- package/dist/cli/commands/hooks-commands.d.ts +20 -0
- package/dist/cli/commands/hooks-commands.js +75 -309
- package/dist/cli/commands/hooks-install-envelopes.d.ts +6 -0
- package/dist/cli/commands/hooks-install-envelopes.js +144 -0
- package/dist/cli/commands/hooks-status-command.d.ts +3 -0
- package/dist/cli/commands/hooks-status-command.js +93 -0
- package/dist/cli/commands/hooks-uninstall-command.d.ts +3 -0
- package/dist/cli/commands/hooks-uninstall-command.js +43 -0
- 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 -552
- 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/loop-command-shared.d.ts +31 -0
- package/dist/cli/commands/loop-command-shared.js +15 -0
- package/dist/cli/commands/loop-commands.d.ts +12 -17
- package/dist/cli/commands/loop-commands.js +56 -238
- 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 -626
- 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/loop-export-command.d.ts +3 -0
- package/dist/cli/commands/loop-export-command.js +73 -0
- package/dist/cli/commands/loop-goal-compose-command.d.ts +3 -0
- package/dist/cli/commands/loop-goal-compose-command.js +36 -0
- package/dist/cli/commands/loop-import-command.d.ts +3 -0
- package/dist/cli/commands/loop-import-command.js +86 -0
- package/dist/cli/commands/loop-placeholder-commands.d.ts +3 -0
- package/dist/cli/commands/loop-placeholder-commands.js +52 -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-command-shared.d.ts +59 -0
- package/dist/cli/commands/memory-command-shared.js +39 -0
- package/dist/cli/commands/memory-commands.d.ts +6 -79
- package/dist/cli/commands/memory-commands.js +19 -309
- package/dist/cli/commands/memory-ingest-command.d.ts +3 -0
- package/dist/cli/commands/memory-ingest-command.js +50 -0
- package/dist/cli/commands/memory-list-command.d.ts +16 -0
- package/dist/cli/commands/memory-list-command.js +129 -0
- package/dist/cli/commands/memory-reindex-command.d.ts +9 -0
- package/dist/cli/commands/memory-reindex-command.js +78 -0
- package/dist/cli/commands/memory-rotate-command.d.ts +3 -0
- package/dist/cli/commands/memory-rotate-command.js +55 -0
- package/dist/cli/commands/memory-search-command.d.ts +7 -0
- package/dist/cli/commands/memory-search-command.js +46 -0
- package/dist/cli/commands/openspec-archive-command.d.ts +3 -0
- package/dist/cli/commands/openspec-archive-command.js +55 -0
- package/dist/cli/commands/openspec-command-shared.d.ts +62 -0
- package/dist/cli/commands/openspec-command-shared.js +135 -0
- package/dist/cli/commands/openspec-commands.d.ts +1 -1
- package/dist/cli/commands/openspec-commands.js +33 -306
- package/dist/cli/commands/openspec-from-doctor-command.d.ts +3 -0
- package/dist/cli/commands/openspec-from-doctor-command.js +66 -0
- package/dist/cli/commands/openspec-init-command.d.ts +3 -0
- package/dist/cli/commands/openspec-init-command.js +49 -0
- package/dist/cli/commands/openspec-list-command.d.ts +3 -0
- package/dist/cli/commands/openspec-list-command.js +27 -0
- package/dist/cli/commands/openspec-render-command.d.ts +3 -0
- package/dist/cli/commands/openspec-render-command.js +33 -0
- package/dist/cli/commands/openspec-show-command.d.ts +3 -0
- package/dist/cli/commands/openspec-show-command.js +33 -0
- package/dist/cli/commands/openspec-to-rd-command.d.ts +3 -0
- package/dist/cli/commands/openspec-to-rd-command.js +33 -0
- package/dist/cli/commands/openspec-validate-command.d.ts +3 -0
- package/dist/cli/commands/openspec-validate-command.js +45 -0
- package/dist/cli/commands/playwright-browser-command.d.ts +8 -0
- package/dist/cli/commands/playwright-browser-command.js +61 -0
- package/dist/cli/commands/playwright-commands.d.ts +10 -62
- package/dist/cli/commands/playwright-commands.js +77 -400
- package/dist/cli/commands/playwright-envelope.d.ts +8 -0
- package/dist/cli/commands/playwright-envelope.js +29 -0
- package/dist/cli/commands/playwright-ls-stop-commands.d.ts +4 -0
- package/dist/cli/commands/playwright-ls-stop-commands.js +74 -0
- package/dist/cli/commands/playwright-session-store.d.ts +65 -0
- package/dist/cli/commands/playwright-session-store.js +189 -0
- package/dist/cli/commands/project-commands.d.ts +19 -0
- package/dist/cli/commands/project-commands.js +98 -259
- package/dist/cli/commands/project-context-command.d.ts +3 -0
- package/dist/cli/commands/project-context-command.js +44 -0
- package/dist/cli/commands/project-dashboard-command.d.ts +3 -0
- package/dist/cli/commands/project-dashboard-command.js +74 -0
- package/dist/cli/commands/project-knowledge-command.d.ts +3 -0
- package/dist/cli/commands/project-knowledge-command.js +48 -0
- package/dist/cli/commands/project-memories-show-command.d.ts +3 -0
- package/dist/cli/commands/project-memories-show-command.js +87 -0
- package/dist/cli/commands/project-memory-index-command.d.ts +3 -0
- package/dist/cli/commands/project-memory-index-command.js +31 -0
- package/dist/cli/commands/qa-archive-screenshots-command.d.ts +3 -0
- package/dist/cli/commands/qa-archive-screenshots-command.js +53 -0
- package/dist/cli/commands/qa-commands.d.ts +14 -87
- package/dist/cli/commands/qa-commands.js +17 -315
- package/dist/cli/commands/qa-context-prestep.d.ts +1 -0
- package/dist/cli/commands/qa-context-prestep.js +34 -0
- package/dist/cli/commands/qa-run-command.d.ts +3 -0
- package/dist/cli/commands/qa-run-command.js +105 -0
- package/dist/cli/commands/qa-run-options.d.ts +23 -0
- package/dist/cli/commands/qa-run-options.js +31 -0
- package/dist/cli/commands/qa-run-slice.d.ts +41 -0
- package/dist/cli/commands/qa-run-slice.js +145 -0
- package/dist/cli/commands/release-canary-command.d.ts +28 -0
- package/dist/cli/commands/release-canary-command.js +129 -0
- package/dist/cli/commands/release-command-shared.d.ts +13 -0
- package/dist/cli/commands/release-command-shared.js +18 -0
- package/dist/cli/commands/release-commands.d.ts +10 -18
- package/dist/cli/commands/release-commands.js +25 -298
- package/dist/cli/commands/release-done-command.d.ts +3 -0
- package/dist/cli/commands/release-done-command.js +64 -0
- package/dist/cli/commands/release-hotfix-command.d.ts +3 -0
- package/dist/cli/commands/release-hotfix-command.js +50 -0
- package/dist/cli/commands/release-plan-command.d.ts +3 -0
- package/dist/cli/commands/release-plan-command.js +33 -0
- package/dist/cli/commands/release-precheck-command.d.ts +3 -0
- package/dist/cli/commands/release-precheck-command.js +28 -0
- package/dist/cli/commands/release-promote-command.d.ts +3 -0
- package/dist/cli/commands/release-promote-command.js +34 -0
- package/dist/cli/commands/release-rollback-command.d.ts +3 -0
- package/dist/cli/commands/release-rollback-command.js +33 -0
- package/dist/cli/commands/release-watch-command.d.ts +3 -0
- package/dist/cli/commands/release-watch-command.js +44 -0
- 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 -9
- package/dist/cli/commands/request-commands.js +17 -522
- 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/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/sediment-argv-flags.d.ts +54 -0
- package/dist/cli/commands/sediment-argv-flags.js +116 -0
- package/dist/cli/commands/sediment-command-shared.d.ts +15 -0
- package/dist/cli/commands/sediment-command-shared.js +5 -0
- package/dist/cli/commands/sediment-commands.d.ts +35 -59
- package/dist/cli/commands/sediment-commands.js +36 -590
- package/dist/cli/commands/sediment-pool-commands.d.ts +9 -0
- package/dist/cli/commands/sediment-pool-commands.js +185 -0
- package/dist/cli/commands/sediment-query-commands.d.ts +4 -0
- package/dist/cli/commands/sediment-query-commands.js +94 -0
- package/dist/cli/commands/sediment-release-commands.d.ts +8 -0
- package/dist/cli/commands/sediment-release-commands.js +232 -0
- package/dist/cli/commands/share-commands.d.ts +12 -68
- package/dist/cli/commands/share-commands.js +47 -556
- 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/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 -517
- 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-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/sop-advance-command.d.ts +3 -0
- package/dist/cli/commands/sop-advance-command.js +160 -0
- package/dist/cli/commands/sop-check-command.d.ts +3 -0
- package/dist/cli/commands/sop-check-command.js +44 -0
- package/dist/cli/commands/sop-command-shared.d.ts +23 -0
- package/dist/cli/commands/sop-command-shared.js +18 -0
- package/dist/cli/commands/sop-commands.d.ts +15 -1
- package/dist/cli/commands/sop-commands.js +26 -240
- package/dist/cli/commands/sop-init-command.d.ts +3 -0
- package/dist/cli/commands/sop-init-command.js +51 -0
- package/dist/cli/commands/sop-lint-command.d.ts +3 -0
- package/dist/cli/commands/sop-lint-command.js +64 -0
- package/dist/cli/commands/sop-register-command.d.ts +3 -0
- package/dist/cli/commands/sop-register-command.js +48 -0
- package/dist/cli/commands/sop-registry-command.d.ts +3 -0
- package/dist/cli/commands/sop-registry-command.js +30 -0
- package/dist/cli/commands/statusline-command-shared.d.ts +73 -0
- package/dist/cli/commands/statusline-command-shared.js +90 -0
- package/dist/cli/commands/statusline-commands.d.ts +1 -19
- package/dist/cli/commands/statusline-commands.js +48 -287
- package/dist/cli/commands/statusline-compact-command.d.ts +4 -0
- package/dist/cli/commands/statusline-compact-command.js +54 -0
- package/dist/cli/commands/statusline-install-command.d.ts +3 -0
- package/dist/cli/commands/statusline-install-command.js +48 -0
- package/dist/cli/commands/statusline-render-command.d.ts +9 -0
- package/dist/cli/commands/statusline-render-command.js +55 -0
- package/dist/cli/commands/statusline-status-command.d.ts +3 -0
- package/dist/cli/commands/statusline-status-command.js +23 -0
- package/dist/cli/commands/statusline-uninstall-command.d.ts +3 -0
- package/dist/cli/commands/statusline-uninstall-command.js +23 -0
- package/dist/cli/commands/test-command-run-helpers.d.ts +27 -0
- package/dist/cli/commands/test-command-run-helpers.js +73 -0
- package/dist/cli/commands/test-command-runner-resolution.d.ts +57 -0
- package/dist/cli/commands/test-command-runner-resolution.js +183 -0
- package/dist/cli/commands/test-commands.d.ts +8 -56
- package/dist/cli/commands/test-commands.js +26 -249
- package/dist/cli/commands/vm-command-shared.d.ts +23 -0
- package/dist/cli/commands/vm-command-shared.js +23 -0
- package/dist/cli/commands/vm-commands.d.ts +1 -28
- package/dist/cli/commands/vm-commands.js +36 -270
- package/dist/cli/commands/vm-hypervisor-runtime.d.ts +15 -0
- package/dist/cli/commands/vm-hypervisor-runtime.js +64 -0
- package/dist/cli/commands/vm-release-command.d.ts +5 -0
- package/dist/cli/commands/vm-release-command.js +101 -0
- package/dist/cli/commands/vm-spawn-command.d.ts +5 -0
- package/dist/cli/commands/vm-spawn-command.js +177 -0
- package/dist/cli/commands/web-command-shared.d.ts +12 -0
- package/dist/cli/commands/web-command-shared.js +30 -0
- package/dist/cli/commands/web-commands.d.ts +7 -14
- package/dist/cli/commands/web-commands.js +6 -314
- package/dist/cli/commands/web-install-command.d.ts +10 -0
- package/dist/cli/commands/web-install-command.js +116 -0
- package/dist/cli/commands/web-lifecycle-commands.d.ts +9 -30
- package/dist/cli/commands/web-lifecycle-commands.js +14 -322
- package/dist/cli/commands/web-login-command.d.ts +14 -0
- package/dist/cli/commands/web-login-command.js +189 -0
- package/dist/cli/commands/web-op-payload.d.ts +22 -0
- package/dist/cli/commands/web-op-payload.js +89 -0
- package/dist/cli/commands/web-op-refusals.d.ts +37 -0
- package/dist/cli/commands/web-op-refusals.js +73 -0
- package/dist/cli/commands/web-op-runner.d.ts +14 -0
- package/dist/cli/commands/web-op-runner.js +166 -0
- package/dist/cli/commands/web-status-command.d.ts +4 -0
- package/dist/cli/commands/web-status-command.js +32 -0
- package/dist/cli/commands/web-stop-command.d.ts +10 -0
- package/dist/cli/commands/web-stop-command.js +59 -0
- package/dist/cli/commands/web-verb-specs.d.ts +18 -0
- package/dist/cli/commands/web-verb-specs.js +66 -0
- package/dist/cli/commands/workflow-command-shared.d.ts +102 -0
- package/dist/cli/commands/workflow-command-shared.js +74 -0
- package/dist/cli/commands/workflow-commands.d.ts +10 -1
- package/dist/cli/commands/workflow-commands.js +6 -594
- 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-graph-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-graph-commands.js +73 -0
- package/dist/cli/commands/workflow-init-command.d.ts +3 -0
- package/dist/cli/commands/workflow-init-command.js +68 -0
- package/dist/cli/commands/workflow-lifecycle-commands.d.ts +9 -59
- package/dist/cli/commands/workflow-lifecycle-commands.js +14 -348
- package/dist/cli/commands/workflow-node-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-node-commands.js +154 -0
- 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/workflow-terminalize-command.d.ts +3 -0
- package/dist/cli/commands/workflow-terminalize-command.js +56 -0
- 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 -124
- package/dist/cli/commands/workspace/init-command.js +59 -623
- 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/worktree-lease-commands.d.ts +10 -6
- package/dist/cli/commands/worktree-lease-commands.js +42 -512
- 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 -0
- package/dist/services/code/auto-compact-artifacts.d.ts +54 -0
- package/dist/services/code/auto-compact-artifacts.js +135 -0
- package/dist/services/code/auto-compact-attempt.d.ts +46 -0
- package/dist/services/code/auto-compact-attempt.js +88 -0
- package/dist/services/code/auto-compact-decision.d.ts +74 -0
- package/dist/services/code/auto-compact-decision.js +149 -0
- package/dist/services/code/auto-compact-dispatch-gate.d.ts +36 -0
- package/dist/services/code/auto-compact-dispatch-gate.js +86 -0
- package/dist/services/code/auto-compact-envelopes.d.ts +33 -0
- package/dist/services/code/auto-compact-envelopes.js +134 -0
- package/dist/services/code/auto-compact-history.d.ts +46 -0
- package/dist/services/code/auto-compact-history.js +17 -0
- package/dist/services/code/auto-compact-orchestrator.d.ts +11 -240
- package/dist/services/code/auto-compact-orchestrator.js +165 -686
- package/dist/services/code/auto-compact-run-types.d.ts +123 -0
- package/dist/services/code/auto-compact-run-types.js +1 -0
- package/dist/services/code/emit-handoff.d.ts +35 -1
- package/dist/services/code/emit-handoff.js +128 -7
- package/dist/services/code/step-08-gate.d.ts +28 -19
- package/dist/services/code/step-08-gate.js +92 -35
- package/dist/services/config/config-coercion.d.ts +7 -0
- package/dist/services/config/config-coercion.js +156 -0
- package/dist/services/config/config-file-io.d.ts +11 -0
- package/dist/services/config/config-file-io.js +61 -0
- package/dist/services/config/config-get.d.ts +2 -0
- package/dist/services/config/config-get.js +36 -0
- package/dist/services/config/config-global-loader.d.ts +15 -0
- package/dist/services/config/config-global-loader.js +111 -0
- package/dist/services/config/config-nested-path.d.ts +3 -0
- package/dist/services/config/config-nested-path.js +53 -0
- package/dist/services/config/config-primitives.d.ts +16 -0
- package/dist/services/config/config-primitives.js +24 -0
- package/dist/services/config/config-service.d.ts +9 -33
- package/dist/services/config/config-service.js +16 -665
- package/dist/services/config/config-validation.d.ts +19 -0
- package/dist/services/config/config-validation.js +152 -0
- package/dist/services/config/config-workspace.d.ts +10 -0
- package/dist/services/config/config-workspace.js +158 -0
- 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/hooks/mcp-surface-gate.d.ts +19 -0
- package/dist/services/hooks/mcp-surface-gate.js +87 -0
- package/dist/services/ide/adapters/claude-code-adapter.d.ts +4 -35
- package/dist/services/ide/adapters/claude-code-adapter.js +48 -171
- 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/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 -1
- package/dist/services/ide/mcp-tool-matcher.d.ts +34 -0
- package/dist/services/ide/mcp-tool-matcher.js +84 -0
- package/dist/services/lint/npx-resolver.js +7 -0
- 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/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/skills/hooks-codegate-superpowers.d.ts +1 -0
- package/dist/services/skills/hooks-codegate-superpowers.js +26 -0
- package/dist/services/skills/hooks-settings-deny-list.d.ts +61 -0
- package/dist/services/skills/hooks-settings-deny-list.js +173 -0
- package/dist/services/skills/hooks-settings-envelopes.d.ts +20 -0
- package/dist/services/skills/hooks-settings-envelopes.js +79 -0
- package/dist/services/skills/hooks-settings-file-shape.d.ts +43 -0
- package/dist/services/skills/hooks-settings-file-shape.js +207 -0
- package/dist/services/skills/hooks-settings-paths.d.ts +34 -0
- package/dist/services/skills/hooks-settings-paths.js +75 -0
- package/dist/services/skills/hooks-settings-read-installed.d.ts +39 -0
- package/dist/services/skills/hooks-settings-read-installed.js +60 -0
- package/dist/services/skills/hooks-settings-service.d.ts +12 -212
- package/dist/services/skills/hooks-settings-service.js +71 -649
- package/dist/services/skills/hooks-settings-types.d.ts +139 -0
- package/dist/services/skills/hooks-settings-types.js +1 -0
- package/dist/services/workspace/claude-settings-template-merge.d.ts +89 -0
- package/dist/services/workspace/claude-settings-template-merge.js +243 -0
- package/dist/services/workspace/claude-settings-template.d.ts +29 -87
- package/dist/services/workspace/claude-settings-template.js +81 -236
- package/package.json +17 -6
- 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 +36 -1066
- package/scripts/watch-tree.mjs +140 -0
- package/scripts/watch.mjs +4 -126
- package/skills/peaks-status/SKILL.md +31 -13
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The finalize sweep's counters and the two pure helpers that read them, split
|
|
3
|
+
* out of `finalize-runners.ts` to keep each module under the line cap. The
|
|
4
|
+
* accumulator object replaces the mutable arrays the pre-split action closed
|
|
5
|
+
* over: it is created once and threaded explicitly through every branch.
|
|
6
|
+
*/
|
|
7
|
+
import { getErrorMessage } from 'peaks-loop-shared/result';
|
|
8
|
+
// map outcome -> (status, outcome)
|
|
9
|
+
export const OUTCOME_MAP = {
|
|
10
|
+
done: { status: 'done', outcome: 'success' },
|
|
11
|
+
failed: { status: 'failed', outcome: 'failed' },
|
|
12
|
+
cancelled: { status: 'cancelled', outcome: 'cancelled' }
|
|
13
|
+
};
|
|
14
|
+
export function makeAccumulator() {
|
|
15
|
+
return { finalized: [], skipped: [], errors: [] };
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* N2 — one unreadable record must not abort the sweep.
|
|
19
|
+
*
|
|
20
|
+
* Skipping `active-dispatches.json` and `batch-*.counter.json` by FILENAME
|
|
21
|
+
* removed the two non-record files that happened to be in the directory, but a
|
|
22
|
+
* single stale or foreign `dispatch-*.json` (an old `version`, hand-edited
|
|
23
|
+
* JSON, a truncated write) still made `readRecord` throw from OUTSIDE any
|
|
24
|
+
* try/catch — and the throw escaped to the action's outer handler, so
|
|
25
|
+
* `--request-id` AND `--batch` both died with `FINALIZE_ERROR` and exit 1
|
|
26
|
+
* without touching a single healthy record.
|
|
27
|
+
*
|
|
28
|
+
* A record that cannot be read is now reported in `errors[]` and skipped;
|
|
29
|
+
* every other record is processed as before.
|
|
30
|
+
*/
|
|
31
|
+
export function tryReadRecord(recordPath, readRecord, acc) {
|
|
32
|
+
try {
|
|
33
|
+
return readRecord(recordPath);
|
|
34
|
+
}
|
|
35
|
+
catch (e) {
|
|
36
|
+
acc.errors.push({ recordPath, error: getErrorMessage(e) });
|
|
37
|
+
return null;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
export function buildFinalizeHints(acc, selection) {
|
|
41
|
+
const hints = [];
|
|
42
|
+
if (acc.errors.length > 0) {
|
|
43
|
+
hints.push('Re-run after fixing; unreadable records are listed in errors[] and were skipped, not fatal.');
|
|
44
|
+
}
|
|
45
|
+
else if (acc.finalized.length === 0 && acc.skipped.length > 0) {
|
|
46
|
+
hints.push("Nothing was finalized: every matching record had already left `queued`. See skipped[] for each record's status.");
|
|
47
|
+
}
|
|
48
|
+
else {
|
|
49
|
+
hints.push('All targeted records transitioned out of queued.');
|
|
50
|
+
}
|
|
51
|
+
if (selection !== null) {
|
|
52
|
+
hints.push(`--request-id selection (${selection.rule}): chose ${selection.chosen ?? '(none)'} of ${selection.matched} matching record(s); ${selection.rejected.length} rejected.`);
|
|
53
|
+
}
|
|
54
|
+
return hints;
|
|
55
|
+
}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { type ProgramIO } from '../cli-helpers.js';
|
|
2
|
+
import type { ActiveDispatchEntry, DispatchRecord } from '../../services/dispatch/dispatch-record-writer.js';
|
|
3
|
+
import { type FinalizeSelection } from './finalize-selection.js';
|
|
4
|
+
import type { FinalizeAccumulator } from './finalize-accumulator.js';
|
|
5
|
+
export declare function finalizeAllStale(input: {
|
|
6
|
+
readActiveDispatchIndex: (projectRoot: string, sessionId: string) => Record<string, ActiveDispatchEntry>;
|
|
7
|
+
projectRoot: string;
|
|
8
|
+
sessionId: string;
|
|
9
|
+
apply: (recordPath: string, rid: string) => void;
|
|
10
|
+
acc: FinalizeAccumulator;
|
|
11
|
+
}): void;
|
|
12
|
+
export declare function finalizeByRequestId(input: {
|
|
13
|
+
projectRoot: string;
|
|
14
|
+
sessionId: string;
|
|
15
|
+
requestId: string;
|
|
16
|
+
io: ProgramIO;
|
|
17
|
+
asJson: boolean;
|
|
18
|
+
readOne: (recordPath: string) => DispatchRecord | null;
|
|
19
|
+
apply: (recordPath: string, rid: string) => void;
|
|
20
|
+
acc: FinalizeAccumulator;
|
|
21
|
+
}): Promise<{
|
|
22
|
+
kind: 'not-found';
|
|
23
|
+
} | {
|
|
24
|
+
kind: 'ok';
|
|
25
|
+
selection: FinalizeSelection;
|
|
26
|
+
}>;
|
|
27
|
+
export declare function finalizeByBatch(input: {
|
|
28
|
+
projectRoot: string;
|
|
29
|
+
sessionId: string;
|
|
30
|
+
batchId: string | undefined;
|
|
31
|
+
readOne: (recordPath: string) => DispatchRecord | null;
|
|
32
|
+
apply: (recordPath: string, rid: string) => void;
|
|
33
|
+
acc: FinalizeAccumulator;
|
|
34
|
+
}): Promise<void>;
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The three finalize sweep branches — `--all-stale`, `--request-id` and
|
|
3
|
+
* `--batch` — split out of `finalize-runners.ts` to keep each module under the
|
|
4
|
+
* line cap. Each branch reads records, decides which to act on, and records
|
|
5
|
+
* the outcome in the shared accumulator; the runner owns the envelope.
|
|
6
|
+
*/
|
|
7
|
+
import { fail, getErrorMessage } from 'peaks-loop-shared/result';
|
|
8
|
+
import { printResult } from '../cli-helpers.js';
|
|
9
|
+
import { FINALIZE_SELECTION_RULE, describeFinalizeRejection, selectFinalizeTarget } from './finalize-selection.js';
|
|
10
|
+
import { safeRecordPath } from './share-record-paths.js';
|
|
11
|
+
export function finalizeAllStale(input) {
|
|
12
|
+
const index = input.readActiveDispatchIndex(input.projectRoot, input.sessionId);
|
|
13
|
+
for (const [recordPath, entry] of Object.entries(index)) {
|
|
14
|
+
if (entry.status !== 'queued') {
|
|
15
|
+
input.acc.skipped.push({ recordPath, reason: 'status is ' + entry.status });
|
|
16
|
+
continue;
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
input.apply(recordPath, entry.requestId);
|
|
20
|
+
}
|
|
21
|
+
catch (e) {
|
|
22
|
+
input.acc.errors.push({ recordPath, error: getErrorMessage(e) });
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
export async function finalizeByRequestId(input) {
|
|
27
|
+
const candidates = await collectRequestIdCandidates(input);
|
|
28
|
+
if (candidates.length === 0) {
|
|
29
|
+
printResult(input.io, fail('sub-agent.finalize', 'RECORD_NOT_FOUND', 'No dispatch record for requestId=' + input.requestId, { ok: false }, ['Check --request-id matches the dispatch envelope.']), input.asJson);
|
|
30
|
+
process.exitCode = 1;
|
|
31
|
+
return { kind: 'not-found' };
|
|
32
|
+
}
|
|
33
|
+
// N3: same rule as `--batch` — see `selectFinalizeTarget`.
|
|
34
|
+
const { selection, chosen } = buildRequestIdSelection(candidates, input.requestId);
|
|
35
|
+
for (const rejected of selection.rejected) {
|
|
36
|
+
input.acc.skipped.push({ recordPath: rejected.recordPath, reason: rejected.reason });
|
|
37
|
+
}
|
|
38
|
+
if (chosen !== null) {
|
|
39
|
+
try {
|
|
40
|
+
input.apply(chosen.recordPath, chosen.requestId);
|
|
41
|
+
}
|
|
42
|
+
catch (e) {
|
|
43
|
+
input.acc.errors.push({ recordPath: chosen.recordPath, error: getErrorMessage(e) });
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
return { kind: 'ok', selection };
|
|
47
|
+
}
|
|
48
|
+
async function collectRequestIdCandidates(input) {
|
|
49
|
+
const fs2 = await import('node:fs');
|
|
50
|
+
const path2 = await import('node:path');
|
|
51
|
+
const dir = path2.resolve(input.projectRoot, '.peaks', '_sub_agents', input.sessionId);
|
|
52
|
+
const candidates = [];
|
|
53
|
+
if (fs2.existsSync(dir)) {
|
|
54
|
+
for (const f of fs2.readdirSync(dir)) {
|
|
55
|
+
// Only dispatch records are readable records. The session directory also
|
|
56
|
+
// holds `active-dispatches.json` (an index) and `batch-<uuid>.counter.json`
|
|
57
|
+
// (batch counters); neither carries a `version` field, so `readRecord` on
|
|
58
|
+
// them throws `Dispatch record version mismatch ... got undefined`. The
|
|
59
|
+
// `--batch` branch below has always used this same filter.
|
|
60
|
+
if (!f.startsWith('dispatch-') || !f.endsWith('.json'))
|
|
61
|
+
continue;
|
|
62
|
+
const p = safeRecordPath(path2.join(dir, f));
|
|
63
|
+
const r = input.readOne(p);
|
|
64
|
+
if (r === null || r.requestId !== input.requestId)
|
|
65
|
+
continue;
|
|
66
|
+
candidates.push({
|
|
67
|
+
recordPath: p,
|
|
68
|
+
requestId: r.requestId,
|
|
69
|
+
status: r.status,
|
|
70
|
+
createdAt: r.createdAt
|
|
71
|
+
});
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return candidates;
|
|
75
|
+
}
|
|
76
|
+
function buildRequestIdSelection(candidates, requestId) {
|
|
77
|
+
const chosen = selectFinalizeTarget(candidates);
|
|
78
|
+
const selection = {
|
|
79
|
+
requestId,
|
|
80
|
+
rule: FINALIZE_SELECTION_RULE,
|
|
81
|
+
matched: candidates.length,
|
|
82
|
+
chosen: chosen?.recordPath ?? null,
|
|
83
|
+
rejected: candidates
|
|
84
|
+
.filter((candidate) => candidate !== chosen)
|
|
85
|
+
.map((candidate) => ({
|
|
86
|
+
recordPath: candidate.recordPath,
|
|
87
|
+
status: candidate.status,
|
|
88
|
+
reason: describeFinalizeRejection(candidate, chosen)
|
|
89
|
+
}))
|
|
90
|
+
};
|
|
91
|
+
return { selection, chosen };
|
|
92
|
+
}
|
|
93
|
+
export async function finalizeByBatch(input) {
|
|
94
|
+
const fs2 = await import('node:fs');
|
|
95
|
+
const path2 = await import('node:path');
|
|
96
|
+
const dir = path2.resolve(input.projectRoot, '.peaks', '_sub_agents', input.sessionId);
|
|
97
|
+
if (!fs2.existsSync(dir))
|
|
98
|
+
return;
|
|
99
|
+
for (const f of fs2.readdirSync(dir)) {
|
|
100
|
+
if (!f.startsWith('dispatch-') || !f.endsWith('.json'))
|
|
101
|
+
continue;
|
|
102
|
+
const p = safeRecordPath(path2.join(dir, f));
|
|
103
|
+
const r = input.readOne(p);
|
|
104
|
+
if (r === null)
|
|
105
|
+
continue;
|
|
106
|
+
if (r.batchId !== input.batchId)
|
|
107
|
+
continue;
|
|
108
|
+
if (r.status !== 'queued') {
|
|
109
|
+
input.acc.skipped.push({ recordPath: p, reason: 'status is ' + r.status });
|
|
110
|
+
continue;
|
|
111
|
+
}
|
|
112
|
+
try {
|
|
113
|
+
input.apply(p, r.requestId);
|
|
114
|
+
}
|
|
115
|
+
catch (e) {
|
|
116
|
+
input.acc.errors.push({ recordPath: p, error: getErrorMessage(e) });
|
|
117
|
+
}
|
|
118
|
+
}
|
|
119
|
+
}
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The `finalize` action body for `peaks sub-agent`, split out of
|
|
3
|
+
* `share-commands.ts` so that registrar file stays under the line cap. The
|
|
4
|
+
* registrar fires this runner without awaiting it (the original fired a
|
|
5
|
+
* floating async IIFE in the same way).
|
|
6
|
+
*
|
|
7
|
+
* `runFinalizeSweep` builds the accumulator, applies the outcome mapping and
|
|
8
|
+
* prints the envelope; the three selection branches live in
|
|
9
|
+
* `finalize-branches.ts` and the selection rule itself in
|
|
10
|
+
* `finalize-selection.ts`.
|
|
11
|
+
*/
|
|
12
|
+
import { resolve } from 'node:path';
|
|
13
|
+
import { fail, getErrorMessage, ok } from 'peaks-loop-shared/result';
|
|
14
|
+
import { printResult } from '../cli-helpers.js';
|
|
15
|
+
import { getCurrentSessionId } from '../../services/skills/skill-presence-service.js';
|
|
16
|
+
import { OUTCOME_MAP, buildFinalizeHints, makeAccumulator, tryReadRecord } from './finalize-accumulator.js';
|
|
17
|
+
import { finalizeAllStale, finalizeByBatch, finalizeByRequestId } from './finalize-branches.js';
|
|
18
|
+
export async function runFinalize(options, io) {
|
|
19
|
+
const asJson = options.json === true;
|
|
20
|
+
try {
|
|
21
|
+
const projectRoot = resolve(options.project ?? process.cwd());
|
|
22
|
+
const sessionId = options.sessionId ?? getCurrentSessionId(projectRoot) ?? 'unknown-sid';
|
|
23
|
+
if (!options.allStale && !options.requestId && !options.batch) {
|
|
24
|
+
printResult(io, fail('sub-agent.finalize', 'MISSING_TARGET', 'Pass --request-id or --batch (or --all-stale)', { ok: false }, ['Call finalize after each Task completes.']), asJson);
|
|
25
|
+
process.exitCode = 1;
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
await runFinalizeSweep({ options, io, asJson, projectRoot, sessionId });
|
|
29
|
+
}
|
|
30
|
+
catch (error) {
|
|
31
|
+
printResult(io, fail('sub-agent.finalize', 'FINALIZE_ERROR', getErrorMessage(error), { ok: false }, [
|
|
32
|
+
'Inspect the error.'
|
|
33
|
+
]), asJson);
|
|
34
|
+
process.exitCode = 1;
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
async function runFinalizeSweep(input) {
|
|
38
|
+
const { options, io, asJson, projectRoot, sessionId } = input;
|
|
39
|
+
const outcome = (options.outcome ?? 'done');
|
|
40
|
+
const writerMod = await import('../../services/dispatch/dispatch-record-writer.js');
|
|
41
|
+
const { readRecord, markCompleted, readActiveDispatchIndex } = writerMod;
|
|
42
|
+
const mapped = OUTCOME_MAP[outcome] ?? OUTCOME_MAP['done'];
|
|
43
|
+
const acc = makeAccumulator();
|
|
44
|
+
const readOne = (recordPath) => tryReadRecord(recordPath, readRecord, acc);
|
|
45
|
+
const apply = (recordPath, rid) => {
|
|
46
|
+
markCompleted({
|
|
47
|
+
recordPath,
|
|
48
|
+
now: () => new Date(),
|
|
49
|
+
status: mapped.status,
|
|
50
|
+
outcome: mapped.outcome,
|
|
51
|
+
projectRoot
|
|
52
|
+
});
|
|
53
|
+
acc.finalized.push({ recordPath, requestId: rid, status: mapped.status });
|
|
54
|
+
};
|
|
55
|
+
let selection = null;
|
|
56
|
+
if (options.allStale) {
|
|
57
|
+
finalizeAllStale({ readActiveDispatchIndex, projectRoot, sessionId, apply, acc });
|
|
58
|
+
}
|
|
59
|
+
else if (options.requestId) {
|
|
60
|
+
const result = await finalizeByRequestId({
|
|
61
|
+
projectRoot,
|
|
62
|
+
sessionId,
|
|
63
|
+
requestId: options.requestId,
|
|
64
|
+
io,
|
|
65
|
+
asJson,
|
|
66
|
+
readOne,
|
|
67
|
+
apply,
|
|
68
|
+
acc
|
|
69
|
+
});
|
|
70
|
+
if (result.kind === 'not-found')
|
|
71
|
+
return;
|
|
72
|
+
selection = result.selection;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
await finalizeByBatch({ projectRoot, sessionId, batchId: options.batch, readOne, apply, acc });
|
|
76
|
+
}
|
|
77
|
+
printFinalizeResult({ io, asJson, sessionId, outcome, acc, selection });
|
|
78
|
+
if (acc.errors.length > 0)
|
|
79
|
+
process.exitCode = 1;
|
|
80
|
+
}
|
|
81
|
+
/** Print the `sub-agent.finalize` envelope and its hints. */
|
|
82
|
+
function printFinalizeResult(input) {
|
|
83
|
+
const { acc } = input;
|
|
84
|
+
printResult(input.io, ok('sub-agent.finalize', {
|
|
85
|
+
finalized: acc.finalized,
|
|
86
|
+
skipped: acc.skipped,
|
|
87
|
+
errors: acc.errors,
|
|
88
|
+
selection: input.selection,
|
|
89
|
+
sessionId: input.sessionId,
|
|
90
|
+
outcome: input.outcome
|
|
91
|
+
}, acc.errors.length > 0 ? [acc.errors.length + ' failed'] : [], buildFinalizeHints(acc, input.selection)), input.asJson);
|
|
92
|
+
}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The pure `--request-id` selection contract for `peaks sub-agent finalize`, plus
|
|
3
|
+
* the option shape the command registers. Extracted from `share-commands.ts` so
|
|
4
|
+
* that file stays under the line cap; these are the pieces the finalize tests
|
|
5
|
+
* import directly, and none of them touches the filesystem.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* A `dispatch-*.json` candidate for `finalize --request-id`, as read off disk.
|
|
9
|
+
* The record's own `createdAt` is carried as the recency key — NOT the file's
|
|
10
|
+
* mtime, which any heartbeat or finalize rewrites, so a `done` record can look
|
|
11
|
+
* newer than the `queued` one that superseded it. Keeping the key on the
|
|
12
|
+
* candidate makes the selection rule a pure function of the records and
|
|
13
|
+
* testable without a filesystem.
|
|
14
|
+
*/
|
|
15
|
+
export interface FinalizeCandidate {
|
|
16
|
+
readonly recordPath: string;
|
|
17
|
+
readonly requestId: string;
|
|
18
|
+
readonly status: string;
|
|
19
|
+
readonly createdAt: string;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* What `--request-id` actually did, reported in the envelope. N3: the branch
|
|
23
|
+
* used to resolve silently and could not say WHY a record was or was not the
|
|
24
|
+
* one finalized.
|
|
25
|
+
*/
|
|
26
|
+
export interface FinalizeSelection {
|
|
27
|
+
readonly requestId: string;
|
|
28
|
+
readonly rule: string;
|
|
29
|
+
readonly matched: number;
|
|
30
|
+
readonly chosen: string | null;
|
|
31
|
+
readonly rejected: readonly {
|
|
32
|
+
readonly recordPath: string;
|
|
33
|
+
readonly status: string;
|
|
34
|
+
readonly reason: string;
|
|
35
|
+
}[];
|
|
36
|
+
}
|
|
37
|
+
/** The one selection rule `--request-id` and `--batch` now share. */
|
|
38
|
+
export declare const FINALIZE_SELECTION_RULE: string;
|
|
39
|
+
/** The options `peaks sub-agent finalize` accepts. */
|
|
40
|
+
export interface FinalizeOptions {
|
|
41
|
+
batch?: string;
|
|
42
|
+
requestId?: string;
|
|
43
|
+
outcome?: string;
|
|
44
|
+
error?: string;
|
|
45
|
+
allStale?: boolean;
|
|
46
|
+
project?: string;
|
|
47
|
+
sessionId?: string;
|
|
48
|
+
json?: boolean;
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* N3 — pick the record `finalize --request-id` should act on.
|
|
52
|
+
*
|
|
53
|
+
* The branch this replaces `break`ed on the FIRST file whose record carried
|
|
54
|
+
* the requestId and never looked at `status`. With a re-dispatched request
|
|
55
|
+
* always resolved to the OLDEST one — the already-`done` RD record — so
|
|
56
|
+
* finalizing reported success while the newer `queued` QA record stayed
|
|
57
|
+
* queued forever. `--batch` never had that bug: it filters on `queued`.
|
|
58
|
+
*
|
|
59
|
+
* Both branches are now the same rule. Return `null` when nothing is queued:
|
|
60
|
+
* a record that already left `queued` is precisely the one that must NOT be
|
|
61
|
+
* re-finalized, so the caller reports the survivors instead of touching one.
|
|
62
|
+
*/
|
|
63
|
+
export declare function selectFinalizeTarget(candidates: readonly FinalizeCandidate[]): FinalizeCandidate | null;
|
|
64
|
+
/** Why a candidate was not the chosen one — reported, never guessed at. */
|
|
65
|
+
export declare function describeFinalizeRejection(candidate: FinalizeCandidate, chosen: FinalizeCandidate | null): string;
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The pure `--request-id` selection contract for `peaks sub-agent finalize`, plus
|
|
3
|
+
* the option shape the command registers. Extracted from `share-commands.ts` so
|
|
4
|
+
* that file stays under the line cap; these are the pieces the finalize tests
|
|
5
|
+
* import directly, and none of them touches the filesystem.
|
|
6
|
+
*/
|
|
7
|
+
/** The one selection rule `--request-id` and `--batch` now share. */
|
|
8
|
+
export const FINALIZE_SELECTION_RULE = 'prefer status=queued; among those, newest by record createdAt (then filename); ' +
|
|
9
|
+
'no queued match means nothing is finalized';
|
|
10
|
+
/**
|
|
11
|
+
* N3 — pick the record `finalize --request-id` should act on.
|
|
12
|
+
*
|
|
13
|
+
* The branch this replaces `break`ed on the FIRST file whose record carried
|
|
14
|
+
* the requestId and never looked at `status`. With a re-dispatched request
|
|
15
|
+
* always resolved to the OLDEST one — the already-`done` RD record — so
|
|
16
|
+
* finalizing reported success while the newer `queued` QA record stayed
|
|
17
|
+
* queued forever. `--batch` never had that bug: it filters on `queued`.
|
|
18
|
+
*
|
|
19
|
+
* Both branches are now the same rule. Return `null` when nothing is queued:
|
|
20
|
+
* a record that already left `queued` is precisely the one that must NOT be
|
|
21
|
+
* re-finalized, so the caller reports the survivors instead of touching one.
|
|
22
|
+
*/
|
|
23
|
+
export function selectFinalizeTarget(candidates) {
|
|
24
|
+
const queued = candidates.filter((candidate) => candidate.status === 'queued');
|
|
25
|
+
if (queued.length === 0)
|
|
26
|
+
return null;
|
|
27
|
+
return [...queued].sort((a, b) => b.createdAt.localeCompare(a.createdAt) || b.recordPath.localeCompare(a.recordPath))[0];
|
|
28
|
+
}
|
|
29
|
+
/** Why a candidate was not the chosen one — reported, never guessed at. */
|
|
30
|
+
export function describeFinalizeRejection(candidate, chosen) {
|
|
31
|
+
if (candidate.status !== 'queued' || chosen === null) {
|
|
32
|
+
return 'status is ' + candidate.status;
|
|
33
|
+
}
|
|
34
|
+
return 'superseded by the newer queued record ' + chosen.recordPath;
|
|
35
|
+
}
|
|
@@ -4,6 +4,7 @@ import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
|
|
|
4
4
|
import { emitHint } from '../../services/hooks/output.js';
|
|
5
5
|
import { parseClaudeShapeStdin } from '../../services/ide/hook-translator.js';
|
|
6
6
|
import { classifyTool, emitAllowSkipped, emitAllowWorktree, emitSopAllow, emitSopDeny, emitSopWarnings, handleWorktreeGate, parseHookStdin, resolveToolMatcher } from './gate-commands-enforce.js';
|
|
7
|
+
import { handleMcpSurfaceGate } from '../../services/hooks/mcp-surface-gate.js';
|
|
7
8
|
export function registerGateCommands(program, io) {
|
|
8
9
|
const gate = program
|
|
9
10
|
.command('gate')
|
|
@@ -53,6 +54,19 @@ function exitWhenRealCliHook() {
|
|
|
53
54
|
process.exit(process.exitCode || 0);
|
|
54
55
|
}
|
|
55
56
|
}
|
|
57
|
+
/** Read the payload's surface out of the tool name, the adapter's matcher and the command. */
|
|
58
|
+
function classifySurface(parsedStdin) {
|
|
59
|
+
const toolMatcher = resolveToolMatcher(parsedStdin);
|
|
60
|
+
const { toolName, command } = parseClaudeShapeStdin(parsedStdin);
|
|
61
|
+
const toolKind = classifyTool(toolName);
|
|
62
|
+
const isBash = toolName === toolMatcher && typeof command === 'string' && command.trim().length > 0;
|
|
63
|
+
return {
|
|
64
|
+
toolKind,
|
|
65
|
+
command,
|
|
66
|
+
bashCommand: isBash ? command : null,
|
|
67
|
+
isWorktreeToolSurface: toolKind === 'Agent' || toolKind === 'EnterWorktree'
|
|
68
|
+
};
|
|
69
|
+
}
|
|
56
70
|
/**
|
|
57
71
|
* Body of the `gate enforce` PreToolUse handler. The worktree-then-SOP ordering and every early
|
|
58
72
|
* return / exit-code path are documented on the helpers this delegates to in `gate-commands-enforce`.
|
|
@@ -63,23 +77,27 @@ async function runGateEnforceAction(io, options) {
|
|
|
63
77
|
try {
|
|
64
78
|
const raw = await readHookPayload();
|
|
65
79
|
const parsedStdin = parseHookStdin(raw);
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
80
|
+
// The MCP branch runs FIRST and is fail-CLOSED, so it must not sit behind
|
|
81
|
+
// the "not a guarded surface" early return below — an MCP tool name matches
|
|
82
|
+
// neither the Bash matcher nor a worktree tool, so everything after this
|
|
83
|
+
// point would wave it through. A block here has already been emitted.
|
|
84
|
+
if (handleMcpSurfaceGate(io, parsedStdin)) {
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const surface = classifySurface(parsedStdin);
|
|
88
|
+
const { toolKind, command } = surface;
|
|
89
|
+
if (surface.bashCommand === null && !surface.isWorktreeToolSurface) {
|
|
72
90
|
emitAllowSkipped(io, options);
|
|
73
91
|
return;
|
|
74
92
|
}
|
|
75
93
|
if (handleWorktreeGate(io, options, toolKind, { command, parsedStdin })) {
|
|
76
94
|
return;
|
|
77
95
|
}
|
|
78
|
-
if (
|
|
96
|
+
if (surface.bashCommand === null) {
|
|
79
97
|
emitAllowWorktree(io, options);
|
|
80
98
|
return;
|
|
81
99
|
}
|
|
82
|
-
const decision = await enforceBashCommand(options.project,
|
|
100
|
+
const decision = await enforceBashCommand(options.project, surface.bashCommand);
|
|
83
101
|
if (decision.decision === 'deny') {
|
|
84
102
|
emitSopDeny(io, options, decision);
|
|
85
103
|
return;
|
|
@@ -1,18 +1,32 @@
|
|
|
1
1
|
/**
|
|
2
|
+
* The `peaks contract` / `peaks classify` entry point.
|
|
2
3
|
*
|
|
3
4
|
* Pre-merge originals (now deleted):
|
|
4
|
-
* - src/cli/commands/contract-commands.ts
|
|
5
|
+
* - src/cli/commands/contract-commands.ts (167 lines)
|
|
5
6
|
* - src/cli/commands/classify-classify-commands.ts (190 lines)
|
|
6
7
|
*
|
|
7
|
-
* Both
|
|
8
|
-
*
|
|
9
|
-
*
|
|
10
|
-
*
|
|
8
|
+
* Both `register*Commands` functions are preserved **verbatim** (function name,
|
|
9
|
+
* signature, body). The merge was a structural refactor only — no behavior
|
|
10
|
+
* change — and `autoRegisterAllCommands` discovers both exports from this single
|
|
11
|
+
* file. This module is now the entry point and no longer holds the verbs:
|
|
11
12
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
13
|
+
* `contract-write-command.ts` `peaks contract write`
|
|
14
|
+
* `classify-run-command.ts` `peaks classify run`
|
|
15
|
+
* `classify-downgrade-command.ts` `peaks classify downgrade` (always refused)
|
|
16
|
+
* `classify-signals.ts` the diff signals + the audit log
|
|
14
17
|
*/
|
|
15
18
|
import type { Command } from 'commander';
|
|
16
|
-
import {
|
|
17
|
-
export
|
|
19
|
+
import type { ProgramIO } from '../cli-helpers.js';
|
|
20
|
+
export { registerContractCommands } from './contract-write-command.js';
|
|
21
|
+
/**
|
|
22
|
+
* peaks classify CLI (Slice L1a + L1b).
|
|
23
|
+
*
|
|
24
|
+
* Subcommands:
|
|
25
|
+
* - peaks classify run --project <path> [--override <level> --reason "<text>"]
|
|
26
|
+
* Classify the current diff via the heuristic + return a JSON envelope
|
|
27
|
+
* with the chosen level, gate set, and audit log.
|
|
28
|
+
* - peaks classify downgrade --level <level> --reason "<text>" --project <path>
|
|
29
|
+
* Always refused (per spec §4: "peaks classify downgrade" always errors
|
|
30
|
+
* out). LLM may ask; the CLI never grants.
|
|
31
|
+
*/
|
|
18
32
|
export declare function registerClassifyCommands(program: Command, io: ProgramIO): void;
|