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,88 @@
|
|
|
1
|
+
// src/cli/commands/baseline-rollback-commands.ts
|
|
2
|
+
//
|
|
3
|
+
// `peaks baseline rollback` and `peaks baseline reset` — the two destructive
|
|
4
|
+
// baseline operations, both gated behind `--confirm`. Split out of
|
|
5
|
+
// `baseline-commands.ts`; every refusal code, message and data field is
|
|
6
|
+
// unchanged.
|
|
7
|
+
import { copyFileSync, existsSync, mkdirSync, rmSync } from 'node:fs';
|
|
8
|
+
import { join } from 'node:path';
|
|
9
|
+
import { readBaselineFile } from '../../services/capability-baseline/store.js';
|
|
10
|
+
import { CURRENT_DIR, fail, HISTORY_DIR, ok } from './baseline-command-shared.js';
|
|
11
|
+
function runRollback(io, opts) {
|
|
12
|
+
const projectRoot = opts.project ?? '.';
|
|
13
|
+
if (opts.confirm !== true) {
|
|
14
|
+
fail(io, 'HUMAN_NL_DECISION_REQUIRED', 'rollback requires the user to approve via AskUserQuestion. The LLM must surface a multi-choice prompt, then re-run with --confirm.');
|
|
15
|
+
return;
|
|
16
|
+
}
|
|
17
|
+
if (!opts.to) {
|
|
18
|
+
fail(io, 'MISSING_ARG', '--to is required');
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
const source = HISTORY_DIR(projectRoot, opts.to);
|
|
22
|
+
const from = join(source, 'capability-baseline.json');
|
|
23
|
+
const fromLock = join(source, 'capability-baseline.lock');
|
|
24
|
+
if (!existsSync(from) || !existsSync(fromLock)) {
|
|
25
|
+
fail(io, 'BASELINE_HISTORY_GAP', `no frozen baseline recorded for version ${opts.to}`);
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
const r = readBaselineFile(projectRoot);
|
|
29
|
+
if (!r.ok) {
|
|
30
|
+
fail(io, r.error.code, r.error.message);
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
mkdirSync(CURRENT_DIR(projectRoot), { recursive: true });
|
|
34
|
+
copyFileSync(from, join(CURRENT_DIR(projectRoot), 'capability-baseline.json'));
|
|
35
|
+
copyFileSync(fromLock, join(CURRENT_DIR(projectRoot), 'capability-baseline.lock'));
|
|
36
|
+
// Re-read through the locked store so a tampered history entry cannot be
|
|
37
|
+
// installed: the copy is only reported successful if it verifies.
|
|
38
|
+
const after = readBaselineFile(projectRoot);
|
|
39
|
+
if (!after.ok) {
|
|
40
|
+
fail(io, after.error.code, after.error.message);
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
ok(io, 'baseline.rollback', {
|
|
44
|
+
fromVersion: r.file.version,
|
|
45
|
+
toVersion: after.file.version,
|
|
46
|
+
historyPath: source
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
function runReset(io, opts) {
|
|
50
|
+
const projectRoot = opts.project ?? '.';
|
|
51
|
+
if (opts.confirm !== true) {
|
|
52
|
+
fail(io, 'HUMAN_NL_DECISION_REQUIRED', 'reset requires the user to approve via AskUserQuestion. The LLM must surface a multi-choice prompt, then re-run with --confirm.');
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
const r = readBaselineFile(projectRoot);
|
|
56
|
+
// A missing baseline is already "wiped" — but an unreadable one (hash
|
|
57
|
+
// mismatch / unsigned lock) must not be silently discarded.
|
|
58
|
+
if (!r.ok && r.error.code !== 'BASELINE_NOT_FOUND') {
|
|
59
|
+
fail(io, r.error.code, r.error.message);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
const wipedVersion = r.ok ? r.file.version : null;
|
|
63
|
+
rmSync(join(CURRENT_DIR(projectRoot), 'capability-baseline.json'), { force: true });
|
|
64
|
+
rmSync(join(CURRENT_DIR(projectRoot), 'capability-baseline.lock'), { force: true });
|
|
65
|
+
ok(io, 'baseline.reset', {
|
|
66
|
+
wipedVersion,
|
|
67
|
+
nextAction: 're-freeze with `baseline freeze --from <path>`'
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
export function registerBaselineRollbackCommand(baseline, io) {
|
|
71
|
+
baseline
|
|
72
|
+
.command('rollback')
|
|
73
|
+
.description("Roll the baseline back to a historical version. --confirm records the user's approval.")
|
|
74
|
+
.option('--to <version>', 'Historical version to roll back to')
|
|
75
|
+
.option('--confirm', "Record the user's approval (collected via AskUserQuestion) for this rollback")
|
|
76
|
+
.option('--project <path>', 'Project root', '.')
|
|
77
|
+
.option('--json', 'Emit JSON envelope')
|
|
78
|
+
.action((opts) => runRollback(io, opts));
|
|
79
|
+
}
|
|
80
|
+
export function registerBaselineResetCommand(baseline, io) {
|
|
81
|
+
baseline
|
|
82
|
+
.command('reset')
|
|
83
|
+
.description("Wipe the current baseline and require a re-freeze. --confirm records the user's approval.")
|
|
84
|
+
.option('--confirm', "Record the user's approval (collected via AskUserQuestion) for the wipe")
|
|
85
|
+
.option('--project <path>', 'Project root', '.')
|
|
86
|
+
.option('--json', 'Emit JSON envelope')
|
|
87
|
+
.action((opts) => runReset(io, opts));
|
|
88
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
import { type ProgramIO } from '../cli-helpers.js';
|
|
3
|
+
export type ClassifyDowngradeOptions = {
|
|
4
|
+
project: string;
|
|
5
|
+
level: string;
|
|
6
|
+
reason: string;
|
|
7
|
+
json?: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare function registerClassifyDowngradeCommand(classify: Command, io: ProgramIO): void;
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// src/cli/commands/classify-downgrade-command.ts
|
|
2
|
+
//
|
|
3
|
+
// `peaks classify downgrade` — REFUSED per spec §4: the CLI never downgrades a
|
|
4
|
+
// classification unilaterally. Extracted from
|
|
5
|
+
// `governance-classify-contract-commands.ts`; the registered name, description,
|
|
6
|
+
// options, refusal code and exit code (2) are unchanged.
|
|
7
|
+
import { fail } from 'peaks-loop-shared/result';
|
|
8
|
+
import { printResult } from '../cli-helpers.js';
|
|
9
|
+
export function registerClassifyDowngradeCommand(classify, io) {
|
|
10
|
+
classify
|
|
11
|
+
.command('downgrade')
|
|
12
|
+
.description('REFUSED per spec §4 — peaks-loop never downgrades a classification; ask the user to override explicitly')
|
|
13
|
+
.requiredOption('--level <level>', 'attempted level')
|
|
14
|
+
.requiredOption('--reason <text>', 'reason for the attempt (always rejected)')
|
|
15
|
+
.requiredOption('--project <path>', 'target project root')
|
|
16
|
+
.option('--json', 'print machine-readable JSON envelope')
|
|
17
|
+
.action((options) => {
|
|
18
|
+
printResult(io, fail('classify.downgrade', 'DOWNGRADE_REFUSED', 'peaks classify downgrade is refused per spec §4. Use --override (with reason) on `classify run` to force a level; the CLI never downgrades a classification unilaterally.', { attemptedLevel: options.level, reason: options.reason }, ['Use `peaks classify run --override <level> --reason "<text>"` instead']), options.json);
|
|
19
|
+
process.exitCode = 2;
|
|
20
|
+
});
|
|
21
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
import { type ProgramIO } from '../cli-helpers.js';
|
|
3
|
+
export type ClassifyRunOptions = {
|
|
4
|
+
project: string;
|
|
5
|
+
override?: string;
|
|
6
|
+
reason?: string;
|
|
7
|
+
json?: boolean;
|
|
8
|
+
};
|
|
9
|
+
export declare function registerClassifyRunCommand(classify: Command, io: ProgramIO): void;
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
// src/cli/commands/classify-run-command.ts
|
|
2
|
+
//
|
|
3
|
+
// `peaks classify run` — classify the current diff (git diff HEAD) into one of
|
|
4
|
+
// the 5 task levels, with an optional `--override` + `--reason`. Extracted from
|
|
5
|
+
// `governance-classify-contract-commands.ts`; the registered name, description,
|
|
6
|
+
// options, refusal codes, audit write and envelope are unchanged.
|
|
7
|
+
//
|
|
8
|
+
// `loadPreferences` is synchronous, so the action is too — the merged file said
|
|
9
|
+
// `await loadPreferences(...)`, which `@typescript-eslint/await-thenable`
|
|
10
|
+
// flagged as an await of a non-Promise. Dropping the keyword pair changes no
|
|
11
|
+
// byte of the envelope (the equivalence harness re-measured it).
|
|
12
|
+
import { fail, getErrorMessage, ok } from 'peaks-loop-shared/result';
|
|
13
|
+
import { classifyTask } from '../../services/classify/classify-service.js';
|
|
14
|
+
import { TASK_LEVELS } from '../../services/classify/classify-types.js';
|
|
15
|
+
import { loadPreferences } from '../../services/preferences/preferences-service.js';
|
|
16
|
+
import { addJsonOption, printResult } from '../cli-helpers.js';
|
|
17
|
+
import { appendAuditEntry, CLASSIFY_AUDIT_FILE, getSignalsFromGitDiff, isTaskLevel } from './classify-signals.js';
|
|
18
|
+
export function registerClassifyRunCommand(classify, io) {
|
|
19
|
+
addJsonOption(classify
|
|
20
|
+
.command('run')
|
|
21
|
+
.description('Classify the current diff (git diff HEAD) into one of 5 task levels')
|
|
22
|
+
.requiredOption('--project <path>', 'target project root')
|
|
23
|
+
.option('--override <level>', 'force a level (one of typo|bug|feature|refactor|migration); requires --reason')
|
|
24
|
+
.option('--reason <text>', 'reason for the override (mandatory when --override is set)')).action((options) => {
|
|
25
|
+
const envelope = classifyRunEnvelope(options);
|
|
26
|
+
printResult(io, envelope, options.json);
|
|
27
|
+
if (!envelope.ok)
|
|
28
|
+
process.exitCode = 1;
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
function classifyRunEnvelope(options) {
|
|
32
|
+
try {
|
|
33
|
+
const prefs = loadPreferences(options.project);
|
|
34
|
+
const signals = getSignalsFromGitDiff(options.project);
|
|
35
|
+
const override = readOverride(options);
|
|
36
|
+
if (override.envelope !== null)
|
|
37
|
+
return override.envelope;
|
|
38
|
+
const result = classifyTask(override.level === undefined
|
|
39
|
+
? { signals, conservatism: prefs.classifyConservatism }
|
|
40
|
+
: {
|
|
41
|
+
signals,
|
|
42
|
+
conservatism: prefs.classifyConservatism,
|
|
43
|
+
override: { level: override.level, reason: override.reason }
|
|
44
|
+
}, prefs.classifyRules.feature_threshold_files, prefs.classifyRules.feature_threshold_lines);
|
|
45
|
+
appendAuditEntry(options.project, result.audit);
|
|
46
|
+
return ok('classify.run', result, [], [
|
|
47
|
+
`gate set for level "${result.level}": ${result.gateSet.stages.join(', ')}`,
|
|
48
|
+
`audit log: .peaks/_runtime/${CLASSIFY_AUDIT_FILE}`
|
|
49
|
+
]);
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
return fail('classify.run', 'CLASSIFY_RUN_FAILED', getErrorMessage(error), { projectRoot: options.project }, ['Run peaks classify --help for usage']);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
/** The two refusals `--override` / `--reason` can earn, in the order they fire. */
|
|
56
|
+
function readOverride(options) {
|
|
57
|
+
const empty = { level: undefined, reason: '', envelope: null };
|
|
58
|
+
if (options.override === undefined)
|
|
59
|
+
return empty;
|
|
60
|
+
if (!isTaskLevel(options.override)) {
|
|
61
|
+
return {
|
|
62
|
+
...empty,
|
|
63
|
+
envelope: fail('classify.run', 'INVALID_LEVEL', `level must be one of: ${TASK_LEVELS.join(', ')}`, { provided: options.override }, ['Pass one of typo, bug, feature, refactor, migration'])
|
|
64
|
+
};
|
|
65
|
+
}
|
|
66
|
+
if (options.reason === undefined || options.reason.length === 0) {
|
|
67
|
+
return {
|
|
68
|
+
...empty,
|
|
69
|
+
envelope: fail('classify.run', 'REASON_REQUIRED', '--reason is required when --override is set', {}, ['Provide a non-empty reason for the override'])
|
|
70
|
+
};
|
|
71
|
+
}
|
|
72
|
+
return { level: options.override, reason: options.reason, envelope: null };
|
|
73
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { type ClassifySignals, type TaskLevel } from '../../services/classify/classify-types.js';
|
|
2
|
+
export declare const CLASSIFY_AUDIT_FILE = "classify-audit.jsonl";
|
|
3
|
+
export declare function getSignalsFromGitDiff(projectRoot: string): ClassifySignals;
|
|
4
|
+
export declare function appendAuditEntry(projectRoot: string, entry: unknown): void;
|
|
5
|
+
export declare function isTaskLevel(value: string): value is TaskLevel;
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
// src/cli/commands/classify-signals.ts
|
|
2
|
+
//
|
|
3
|
+
// What `peaks classify` reads and writes outside its own envelope: the diff
|
|
4
|
+
// signals the heuristic classifies, the audit-log append, and the task-level
|
|
5
|
+
// guard. Extracted from `governance-classify-contract-commands.ts` (which had
|
|
6
|
+
// merged `classify-classify-commands.ts` verbatim); the parsing, the audit file
|
|
7
|
+
// name and the level guard are unchanged.
|
|
8
|
+
//
|
|
9
|
+
// `child_process` is a static import here rather than the CJS `require` the
|
|
10
|
+
// merged file used inside `getSignalsFromGitDiff`: the module specifier is a
|
|
11
|
+
// Node builtin, so a top-level import cannot fail where the `require` could, and
|
|
12
|
+
// the call itself — arguments, `windowsHide`, and the zeros fallback when git is
|
|
13
|
+
// unavailable — is byte-for-byte the same.
|
|
14
|
+
import { execFileSync } from 'node:child_process';
|
|
15
|
+
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
16
|
+
import { join } from 'node:path';
|
|
17
|
+
import { TASK_LEVELS } from '../../services/classify/classify-types.js';
|
|
18
|
+
export const CLASSIFY_AUDIT_FILE = 'classify-audit.jsonl';
|
|
19
|
+
export function getSignalsFromGitDiff(projectRoot) {
|
|
20
|
+
// Use git diff --stat to extract file count + line count. Fall back to
|
|
21
|
+
// zeros if git is unavailable (e.g. fresh repo with no commits).
|
|
22
|
+
let stdout;
|
|
23
|
+
try {
|
|
24
|
+
stdout = execFileSync('git', ['diff', '--shortstat', 'HEAD'], {
|
|
25
|
+
cwd: projectRoot,
|
|
26
|
+
stdio: ['ignore', 'pipe', 'ignore'],
|
|
27
|
+
maxBuffer: 32 * 1024 * 1024,
|
|
28
|
+
windowsHide: true
|
|
29
|
+
}).toString('utf8');
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
return {
|
|
33
|
+
filesChanged: 0,
|
|
34
|
+
linesChanged: 0,
|
|
35
|
+
touchesDependencies: false,
|
|
36
|
+
touchesMigrationScripts: false,
|
|
37
|
+
isPureRefactor: true,
|
|
38
|
+
keywords: []
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
const lines = stdout.split('\n').filter((l) => l.trim().length > 0);
|
|
42
|
+
const filesChanged = lines.length;
|
|
43
|
+
let added = 0;
|
|
44
|
+
let removed = 0;
|
|
45
|
+
let touchesDependencies = false;
|
|
46
|
+
let touchesMigrationScripts = false;
|
|
47
|
+
for (const line of lines) {
|
|
48
|
+
const match = /(\d+)\s+insertion.*?(\d+)\s+deletion/.exec(line);
|
|
49
|
+
if (match) {
|
|
50
|
+
added += Number(match[1]);
|
|
51
|
+
removed += Number(match[2]);
|
|
52
|
+
}
|
|
53
|
+
if (/(package\.json|pnpm-lock\.yaml|yarn\.lock|requirements\.txt|go\.mod)/.test(line)) {
|
|
54
|
+
touchesDependencies = true;
|
|
55
|
+
}
|
|
56
|
+
if (/(migrate|codemod|backfill|schema)/.test(line)) {
|
|
57
|
+
touchesMigrationScripts = true;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// isPureRefactor: heuristic — if added lines / removed lines < 0.1 OR
|
|
61
|
+
// no new exports were added, treat as refactor. For L2.2 the signal is
|
|
62
|
+
// binary (true/false). Default: true (no behavior change is the safe
|
|
63
|
+
// assumption; flip to false when keyword 'add' / 'new' / 'feature' present).
|
|
64
|
+
const isPureRefactor = true;
|
|
65
|
+
return {
|
|
66
|
+
filesChanged,
|
|
67
|
+
linesChanged: added + removed,
|
|
68
|
+
touchesDependencies,
|
|
69
|
+
touchesMigrationScripts,
|
|
70
|
+
isPureRefactor,
|
|
71
|
+
keywords: []
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
export function appendAuditEntry(projectRoot, entry) {
|
|
75
|
+
const auditDir = join(projectRoot, '.peaks/_runtime');
|
|
76
|
+
if (!existsSync(auditDir)) {
|
|
77
|
+
try {
|
|
78
|
+
mkdirSync(auditDir, { recursive: true });
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
/* ignore */
|
|
82
|
+
} // TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
83
|
+
}
|
|
84
|
+
const auditPath = join(auditDir, CLASSIFY_AUDIT_FILE);
|
|
85
|
+
let body = '';
|
|
86
|
+
try {
|
|
87
|
+
if (existsSync(auditPath)) {
|
|
88
|
+
body = readFileSync(auditPath, 'utf8');
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
catch {
|
|
92
|
+
/* ignore */
|
|
93
|
+
} // TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
94
|
+
body += JSON.stringify(entry) + '\n';
|
|
95
|
+
try {
|
|
96
|
+
writeFileSync(auditPath, body);
|
|
97
|
+
}
|
|
98
|
+
catch {
|
|
99
|
+
/* best-effort */
|
|
100
|
+
} // TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
101
|
+
}
|
|
102
|
+
export function isTaskLevel(value) {
|
|
103
|
+
return TASK_LEVELS.includes(value);
|
|
104
|
+
}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
|
|
2
|
+
import { fail } from 'peaks-loop-shared/result';
|
|
3
|
+
import { runAutoCompact } from '../../services/code/auto-compact-orchestrator.js';
|
|
4
|
+
import { probeInFlightBatch } from '../../services/workflow/workflow-inflight-probe.js';
|
|
5
|
+
import { readActiveSid } from './code-runtime-session.js';
|
|
6
|
+
import { buildAutoCompactEnvelope } from './code-auto-compact-envelope.js';
|
|
7
|
+
const AUTO_COMPACT_DESCRIPTION = 'v2.13.0 AC-4: zero-human-intervention auto-compact. Probes current ' +
|
|
8
|
+
'context-fill % via the active IDE adapter; ≥ 0.85 writes a pre-compact ' +
|
|
9
|
+
'checkpoint + convergence plan + auto-decisions log; ≥ 0.95 ASKS the ' +
|
|
10
|
+
'harness to compact and reports that it is waiting for it — no ratio ' +
|
|
11
|
+
'blocks sub-agent dispatch, because peaks-loop has no way to compact a ' +
|
|
12
|
+
'running session and a gate nobody can satisfy gates nothing. The LLM / ' +
|
|
13
|
+
'runner keeps working at any ratio without human intervention. Pair with `peaks code ' +
|
|
14
|
+
'context-now` (AC-1), the read-only probe that reports the ratio this ' +
|
|
15
|
+
'command acts on. This command is also fired by the installed ' +
|
|
16
|
+
'PreToolUse hook, which passes `--project .` — without that argument ' +
|
|
17
|
+
'the hook could never run at all. rid-027 ' +
|
|
18
|
+
'adds `--mode <mode>`: `standard` (0.85/0.95) or `partial` (0.70/0.85 ' +
|
|
19
|
+
'for 24h long-run mode).';
|
|
20
|
+
/** The invalid-`--mode` branch, lifted verbatim out of the action body. */
|
|
21
|
+
function reportInvalidAutoCompactMode(io, modeName, json) {
|
|
22
|
+
printResult(io, fail('code.auto-compact', 'AUTO_COMPACT_INVALID_MODE', `Invalid --mode '${modeName}'. Valid values: standard | partial.`, null, ['Re-run with --mode standard or --mode partial.']), json);
|
|
23
|
+
process.exitCode = 1;
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The `runAutoCompact` input object, lifted verbatim: it reads only its two
|
|
27
|
+
* parameters, so it has no ordering dependency on the call site.
|
|
28
|
+
*/
|
|
29
|
+
function buildAutoCompactInput(opts, modeName) {
|
|
30
|
+
// Slice 4.0.8 (D4d): production `inFlightBatch` MUST come from
|
|
31
|
+
// the workflow graph probe. The legacy `--in-flight-batch`
|
|
32
|
+
// boolean CLI flag is a TEST-ONLY seam (gated by
|
|
33
|
+
// `PEAKS_TEST_SEAM === '1'`). When the env flag is unset
|
|
34
|
+
// (the production case), we wire `probeInflightBatch` to the
|
|
35
|
+
// canonical `workflow-inflight-probe.ts` service so the
|
|
36
|
+
// production decision is graph-backed, not lease-age.
|
|
37
|
+
const isTestSeam = process.env.PEAKS_TEST_SEAM === '1';
|
|
38
|
+
return {
|
|
39
|
+
projectRoot: opts.project,
|
|
40
|
+
sessionId: opts.sessionId ?? readActiveSid(opts.project) ?? undefined,
|
|
41
|
+
...(isTestSeam && opts.inFlightBatch === true
|
|
42
|
+
? { inFlightBatch: { hasInFlightBatch: true } }
|
|
43
|
+
: {}),
|
|
44
|
+
...(!isTestSeam
|
|
45
|
+
? {
|
|
46
|
+
probeInflightBatch: () => {
|
|
47
|
+
// Synchronous probe: the workflow-inflight-probe
|
|
48
|
+
// service is pure / synchronous (no I/O). The
|
|
49
|
+
// empty `graphs` array is the production CLI
|
|
50
|
+
// default — callers that want a richer fixture
|
|
51
|
+
// (e.g. `peaks session 24h-mode`) should hand-roll
|
|
52
|
+
// a probe and pass it via the orchestrator's
|
|
53
|
+
// input. When no graph is materialized, the
|
|
54
|
+
// probe returns `inFlightBatch: false`, matching
|
|
55
|
+
// the 4.0.7 zero-pause contract for stock
|
|
56
|
+
// projects.
|
|
57
|
+
const out = probeInFlightBatch({ now: new Date().toISOString(), graphs: [] });
|
|
58
|
+
return out.inFlightBatch === true;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
: {}),
|
|
62
|
+
force: opts.force === true,
|
|
63
|
+
bypassRedLine: opts.bypassRedLine === true,
|
|
64
|
+
// Forward the FLAG verbatim — `undefined` when the user named no
|
|
65
|
+
// mode — so the orchestrator's fallback to the presence-derived
|
|
66
|
+
// mode can actually run. Forwarding the validated `modeName` is
|
|
67
|
+
// what disabled 24h → partial.
|
|
68
|
+
mode: opts.mode === undefined ? undefined : modeName
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
/** The catch branch, lifted verbatim out of the action body. */
|
|
72
|
+
function reportAutoCompactFailure(io, err, json) {
|
|
73
|
+
printResult(io, fail('code.auto-compact', 'AUTO_COMPACT_FAILED', getErrorMessage(err), null, [
|
|
74
|
+
'Verify the project path + session id and try again'
|
|
75
|
+
]), json);
|
|
76
|
+
process.exitCode = 1;
|
|
77
|
+
}
|
|
78
|
+
/** The action body, lifted to a module-level function so both it and the registrar fit in 50 lines. */
|
|
79
|
+
async function runAutoCompactAction(opts, io) {
|
|
80
|
+
try {
|
|
81
|
+
const { isValidMode } = await import('../../services/code/auto-compact-modes.js');
|
|
82
|
+
const modeName = opts.mode ?? 'standard';
|
|
83
|
+
if (!isValidMode(modeName)) {
|
|
84
|
+
reportInvalidAutoCompactMode(io, modeName, opts.json);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
const result = await runAutoCompact(buildAutoCompactInput(opts, modeName));
|
|
88
|
+
const code = result.code;
|
|
89
|
+
const exitOk = result.ok || code === 'AUTO_COMPACT_SKIP' || code === 'AUTO_COMPACT_WAIT';
|
|
90
|
+
// Adapt AutoCompactResult → ResultEnvelope so printResult's
|
|
91
|
+
// generic accepts it. The orchestrator envelope carries
|
|
92
|
+
// `data` on success-path and `nextActions` on the error
|
|
93
|
+
// path; surface both directly to the user.
|
|
94
|
+
printResult(io, buildAutoCompactEnvelope(result), opts.json);
|
|
95
|
+
if (!exitOk)
|
|
96
|
+
process.exitCode = 1;
|
|
97
|
+
}
|
|
98
|
+
catch (err) {
|
|
99
|
+
reportAutoCompactFailure(io, err, opts.json);
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
export function registerCodeAutoCompactCommand(code, io) {
|
|
103
|
+
addJsonOption(code
|
|
104
|
+
.command('auto-compact')
|
|
105
|
+
.description(AUTO_COMPACT_DESCRIPTION)
|
|
106
|
+
.requiredOption('--project <path>', 'target project root')
|
|
107
|
+
.option('--session-id <sid>', 'override session id (default: read from active presence)')
|
|
108
|
+
.option('--in-flight-batch', 'defer if a sub-agent batch is in flight (D6.e)')
|
|
109
|
+
.option('--force', 'force compact at any ratio (test seam)')
|
|
110
|
+
// Accepted and inert. There is no longer a 95% gate to skip: peaks-loop
|
|
111
|
+
// cannot compact a running session, so the red line never blocked
|
|
112
|
+
// dispatch and `bypassRedLine` is read by nothing (slice
|
|
113
|
+
// rather than deleted because it is a published CLI surface — deleting it
|
|
114
|
+
// would make an existing caller fail on an unknown option, which is a
|
|
115
|
+
// harder break than a no-op — and because the honest fix here is to stop
|
|
116
|
+
// advertising it, not to change its meaning.
|
|
117
|
+
.option('--bypass-red-line', 'no-op: the 95% red line no longer gates dispatch, so there is nothing to bypass (accepted for backward compatibility)')
|
|
118
|
+
// No commander default here, deliberately. A declared default makes
|
|
119
|
+
// `opts.mode` permanently defined, which defeats the orchestrator's
|
|
120
|
+
// `input.mode ?? resolveAutoCompactMode(projectRoot)` fallback and
|
|
121
|
+
// silently disables "24h mode auto-selects partial" — the help text
|
|
122
|
+
// below promises it. Absence must stay absent.
|
|
123
|
+
.option('--mode <mode>', 'auto-compact mode (standard | partial). Default: standard. 24h mode auto-selects partial.')).action((opts) => runAutoCompactAction(opts, io));
|
|
124
|
+
}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { type ResultEnvelope } from 'peaks-loop-shared/result';
|
|
2
|
+
import { type AutoCompactResult } from '../../services/code/auto-compact-orchestrator.js';
|
|
3
|
+
/**
|
|
4
|
+
* Adapt `runAutoCompact`'s domain result to a `ResultEnvelope`.
|
|
5
|
+
*
|
|
6
|
+
* Extracted and exported so the CHANNEL each fact chooses can be asserted
|
|
7
|
+
* directly, without a real red-line probe.
|
|
8
|
+
*
|
|
9
|
+
* The harness-window CONFLICT ("peaks-loop divided this ratio by N but the
|
|
10
|
+
* settings file pins M") is a fact about the STATE, not an instruction, so it
|
|
11
|
+
* rides `warnings` — the very channel `peaks code context-now` already puts it
|
|
12
|
+
* on, via the same `harnessWindowSyncWarning`. Before this, the shim hard-coded
|
|
13
|
+
* `warnings: []`, so the identical fact reached a consumer as a sentence inside
|
|
14
|
+
* `nextActions` on this command and as a `warnings` entry on the other one. One
|
|
15
|
+
* fact, two shapes, depending on which of the two syncing commands a consumer
|
|
16
|
+
* happened to read: two parsers for one mechanism.
|
|
17
|
+
*
|
|
18
|
+
* The prose description (`describeHarnessWindowSync`) stays in `nextActions` on
|
|
19
|
+
* BOTH commands — that half is advice ("what to do about it") and both already
|
|
20
|
+
* agree on it.
|
|
21
|
+
*/
|
|
22
|
+
export declare function buildAutoCompactEnvelope(result: AutoCompactResult): ResultEnvelope<unknown>;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// The `peaks code auto-compact` result adapter, on its own so the CHANNEL each
|
|
2
|
+
// fact chooses can be asserted directly, without a real red-line probe.
|
|
3
|
+
import { fail, ok } from 'peaks-loop-shared/result';
|
|
4
|
+
import { harnessWindowSyncWarning } from '../../services/context/harness-window-config.js';
|
|
5
|
+
/**
|
|
6
|
+
* Adapt `runAutoCompact`'s domain result to a `ResultEnvelope`.
|
|
7
|
+
*
|
|
8
|
+
* Extracted and exported so the CHANNEL each fact chooses can be asserted
|
|
9
|
+
* directly, without a real red-line probe.
|
|
10
|
+
*
|
|
11
|
+
* The harness-window CONFLICT ("peaks-loop divided this ratio by N but the
|
|
12
|
+
* settings file pins M") is a fact about the STATE, not an instruction, so it
|
|
13
|
+
* rides `warnings` — the very channel `peaks code context-now` already puts it
|
|
14
|
+
* on, via the same `harnessWindowSyncWarning`. Before this, the shim hard-coded
|
|
15
|
+
* `warnings: []`, so the identical fact reached a consumer as a sentence inside
|
|
16
|
+
* `nextActions` on this command and as a `warnings` entry on the other one. One
|
|
17
|
+
* fact, two shapes, depending on which of the two syncing commands a consumer
|
|
18
|
+
* happened to read: two parsers for one mechanism.
|
|
19
|
+
*
|
|
20
|
+
* The prose description (`describeHarnessWindowSync`) stays in `nextActions` on
|
|
21
|
+
* BOTH commands — that half is advice ("what to do about it") and both already
|
|
22
|
+
* agree on it.
|
|
23
|
+
*/
|
|
24
|
+
export function buildAutoCompactEnvelope(result) {
|
|
25
|
+
const data = 'data' in result ? result.data : null;
|
|
26
|
+
const nextActions = 'nextActions' in result ? result.nextActions : [];
|
|
27
|
+
const warning = harnessWindowSyncWarning(data?.harnessWindow ?? null);
|
|
28
|
+
const warnings = warning === null ? [] : [warning];
|
|
29
|
+
if (result.ok) {
|
|
30
|
+
return ok('code.auto-compact', data ?? {}, warnings, [result.message, ...nextActions]);
|
|
31
|
+
}
|
|
32
|
+
// `fail()` hard-codes `warnings: []`, so the warning is spread back over it —
|
|
33
|
+
// a refused write can disagree with the ratio just as easily on the failure
|
|
34
|
+
// path, and the state does not become less true because the dispatch failed.
|
|
35
|
+
return {
|
|
36
|
+
...fail('code.auto-compact', result.code, result.message, data, [...nextActions]),
|
|
37
|
+
warnings
|
|
38
|
+
};
|
|
39
|
+
}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
|
|
2
|
+
import { ok } from 'peaks-loop-shared/result';
|
|
3
|
+
import { auditContext } from '../../services/context/context-audit.js';
|
|
4
|
+
import { resolveOuterSessionId } from '../../services/session/binding-status-service.js';
|
|
5
|
+
import { readActiveSid } from './code-runtime-session.js';
|
|
6
|
+
const CONTEXT_AUDIT_DESCRIPTION = "Slice 2026-09-10 Slice A: report what fills the current session's " +
|
|
7
|
+
'context window, grouped by tool + short input key (command line / ' +
|
|
8
|
+
"path tail / pattern), sorted by bytes. Locates the CURRENT session's " +
|
|
9
|
+
"IDE transcript through the active adapter's " +
|
|
10
|
+
'`compact.resolveTranscriptPath` (vendor-neutral); emits total bytes, ' +
|
|
11
|
+
'entry count, and the top-N groups ' +
|
|
12
|
+
'(`{tool, key, bytes, pctOfTotal, count}`). Read-only and fail-soft — ' +
|
|
13
|
+
'a missing/oversized/corrupt transcript returns `available:false` ' +
|
|
14
|
+
'with a reason and never blocks. Never dumps tool result content.';
|
|
15
|
+
/** The catch branch, lifted verbatim out of the action body (fail-soft, exit code untouched). */
|
|
16
|
+
function reportContextAuditFailure(io, err, json) {
|
|
17
|
+
printResult(io, ok('code.context-audit', {
|
|
18
|
+
available: false,
|
|
19
|
+
reason: `audit-failed: ${getErrorMessage(err)}`,
|
|
20
|
+
transcriptPath: null,
|
|
21
|
+
totalBytes: 0,
|
|
22
|
+
entryCount: 0,
|
|
23
|
+
groupCount: 0,
|
|
24
|
+
topN: 0,
|
|
25
|
+
entries: []
|
|
26
|
+
}, [], ['context-audit is a read-only probe; continue without it.']), json);
|
|
27
|
+
}
|
|
28
|
+
/** The action body, lifted to a module-level function so both it and the registrar fit in 50 lines. */
|
|
29
|
+
function runCodeContextAudit(opts, io) {
|
|
30
|
+
try {
|
|
31
|
+
// `resolveOuterSessionId` checks the env signal FIRST, so the peaks
|
|
32
|
+
// session id is only a fallback lookup key — mirror context-now's
|
|
33
|
+
// 'unknown' default so an unbound presence still resolves via env.
|
|
34
|
+
const sessionId = opts.sessionId ?? readActiveSid(opts.project) ?? 'unknown';
|
|
35
|
+
const outerSessionId = resolveOuterSessionId(opts.project, sessionId);
|
|
36
|
+
const result = auditContext({
|
|
37
|
+
outerSessionId: outerSessionId ?? null,
|
|
38
|
+
...(opts.top !== undefined ? { topN: opts.top } : {}),
|
|
39
|
+
...(opts.transcript !== undefined ? { transcriptPath: opts.transcript } : {})
|
|
40
|
+
});
|
|
41
|
+
// Fail-soft contract: unavailability is DATA, not an error. The exit
|
|
42
|
+
// code stays 0 so a `context-audit` call can never block a workflow.
|
|
43
|
+
const nextActions = result.available
|
|
44
|
+
? [
|
|
45
|
+
`${result.entryCount} tool result(s) across ${result.groupCount} group(s); showing top ${result.entries.length}.`
|
|
46
|
+
]
|
|
47
|
+
: [
|
|
48
|
+
`context-audit unavailable: ${result.reason ?? 'unknown'} — continue without it (read-only probe).`
|
|
49
|
+
];
|
|
50
|
+
printResult(io, ok('code.context-audit', { ...result }, [], nextActions), opts.json);
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
reportContextAuditFailure(io, err, opts.json);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
export function registerCodeContextAuditCommand(code, io) {
|
|
57
|
+
// WHAT fills the orchestrator window. `context-now` returns a ratio; this
|
|
58
|
+
// returns the grouped byte breakdown of tool results from the live
|
|
59
|
+
// transcript. Read-only + fail-soft: an unavailable transcript reports
|
|
60
|
+
// `available:false` with a reason and NEVER sets a non-zero exit code.
|
|
61
|
+
addJsonOption(code
|
|
62
|
+
.command('context-audit')
|
|
63
|
+
.description(CONTEXT_AUDIT_DESCRIPTION)
|
|
64
|
+
.requiredOption('--project <path>', 'target project root')
|
|
65
|
+
.option('--session-id <sid>', 'override session id (default: read from active presence)')
|
|
66
|
+
.option('--top <n>', 'number of top entries to emit (default 15, max 100)', (value) => Number(value))
|
|
67
|
+
.option('--transcript <path>', 'override the transcript jsonl path (test seam)')).action((opts) => runCodeContextAudit(opts, io));
|
|
68
|
+
}
|