peaks-loop 4.1.3 → 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 +2 -2
- package/CHANGELOG.md +56 -0
- package/README-en.md +1 -1
- package/README.md +1 -1
- 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/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-emit-handoff-command.js +40 -3
- package/dist/cli/commands/code-gate-step-08-command.js +25 -9
- 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/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/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-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-from-dag.d.ts +27 -0
- package/dist/cli/commands/dispatch-from-dag.js +87 -257
- 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/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/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-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/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/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/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-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-terminalize-command.d.ts +3 -0
- package/dist/cli/commands/workflow-terminalize-command.js +56 -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/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 -657
- 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 +5 -5
|
@@ -1,281 +1,38 @@
|
|
|
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
|
|
17
|
+
*/
|
|
18
|
+
import { registerClassifyDowngradeCommand } from './classify-downgrade-command.js';
|
|
19
|
+
import { registerClassifyRunCommand } from './classify-run-command.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.
|
|
14
31
|
*/
|
|
15
|
-
// ===========================================================================
|
|
16
|
-
// Shared imports (consolidated; both originals pulled names from these
|
|
17
|
-
// same modules — `cli-helpers.ts` re-exports `getErrorMessage` from
|
|
18
|
-
// `peaks-loop-shared/result`, so the single canonical import is
|
|
19
|
-
// functionally identical to either original line.)
|
|
20
|
-
// ===========================================================================
|
|
21
|
-
import { existsSync, mkdirSync, readFileSync, writeFileSync } from 'node:fs';
|
|
22
|
-
import { join } from 'node:path';
|
|
23
|
-
import { fail, ok, getErrorMessage } from 'peaks-loop-shared/result';
|
|
24
|
-
import { addJsonOption, printResult } from '../cli-helpers.js';
|
|
25
|
-
import { writeContract } from '../../services/dispatch/contract-store.js';
|
|
26
|
-
import { getCurrentSessionId } from '../../services/skills/skill-presence-service.js';
|
|
27
|
-
import { classifyTask } from '../../services/classify/classify-service.js';
|
|
28
|
-
import { TASK_LEVELS } from '../../services/classify/classify-types.js';
|
|
29
|
-
import { loadPreferences } from '../../services/preferences/preferences-service.js';
|
|
30
|
-
// ===========================================================================
|
|
31
|
-
// Section 1: `peaks contract` CLI commands (was contract-commands.ts).
|
|
32
|
-
// ===========================================================================
|
|
33
|
-
const INPUT_LIMIT_BYTES = 256 * 1024;
|
|
34
|
-
/** Split a comma-separated flag value into a trimmed string array. */
|
|
35
|
-
function splitCsv(value) {
|
|
36
|
-
if (value === undefined)
|
|
37
|
-
return [];
|
|
38
|
-
return value
|
|
39
|
-
.split(',')
|
|
40
|
-
.map((s) => s.trim())
|
|
41
|
-
.filter((s) => s.length > 0);
|
|
42
|
-
}
|
|
43
|
-
export function registerContractCommands(program, io) {
|
|
44
|
-
const contract = program
|
|
45
|
-
.command('contract')
|
|
46
|
-
.description('Slice contract store (skill-first / CLI-auxiliary). These commands ' +
|
|
47
|
-
'are primitives that peaks-code / peaks-rd SKILL.md compose. The LLM-side ' +
|
|
48
|
-
'runner (the IDE-resident sub-agent that finished a slice) calls ' +
|
|
49
|
-
"`peaks contract write` to persist the slice's public surface; the " +
|
|
50
|
-
'orchestrator picks it up on the next dispatch run via listContracts() ' +
|
|
51
|
-
'and splices it into downstream prompts via formatContractInjection().');
|
|
52
|
-
// ─────────────────────────────────────────────────────────────────
|
|
53
|
-
// peaks contract write --project <root> --session-id <sid>
|
|
54
|
-
// --slice-id <id> --exports <a,b> --types <x,y> --signatures <s1,s2>
|
|
55
|
-
// [--broadcast-to <b1,b2>] [--completed-at <iso>]
|
|
56
|
-
// ─────────────────────────────────────────────────────────────────
|
|
57
|
-
addJsonOption(contract
|
|
58
|
-
.command('write')
|
|
59
|
-
.description("2.7.0 slice-dag-dispatcher MVP: persist a finished slice's public " +
|
|
60
|
-
'surface (exports / types / publicSignatures) to disk at ' +
|
|
61
|
-
'.peaks/_runtime/<sessionId>/dispatch/contracts/<slice-id>.json. ' +
|
|
62
|
-
'The orchestrator picks it up on the next dispatch run. Idempotent: ' +
|
|
63
|
-
're-running with the same inputs overwrites in place; the SHA-256 ' +
|
|
64
|
-
'contractHash is content-derived so a contract write from a different ' +
|
|
65
|
-
'runner (re-execution) is detected as a content change.')
|
|
66
|
-
.option('--project <path>', 'target project root (defaults to cwd)')
|
|
67
|
-
.option('--session-id <sid>', 'session id (default: resolve from .peaks/_runtime/session.json; falls back to PEAKS_SESSION_ID env var; final fallback "unknown-sid")')
|
|
68
|
-
.requiredOption('--slice-id <id>', 'slice id; must be non-empty; used as the contract filename basename')
|
|
69
|
-
.option('--exports <list>', 'comma-separated public export names (e.g. "validateDag,topologicalLevels")')
|
|
70
|
-
.option('--types <list>', 'comma-separated public type names (e.g. "SliceDag,SliceNode")')
|
|
71
|
-
.option('--signatures <list>', 'comma-separated public function/method signatures (e.g. "validateDag(dag: SliceDag): void")')
|
|
72
|
-
.option('--broadcast-to <list>', 'comma-separated downstream slice ids that should auto-inherit this contract (e.g. "B,C")')
|
|
73
|
-
.option('--completed-at <iso>', 'ISO 8601 timestamp; defaults to now()')).action((options) => {
|
|
74
|
-
const asJson = options.json === true;
|
|
75
|
-
const projectRoot = options.project ?? process.cwd();
|
|
76
|
-
const sid = options.sessionId ??
|
|
77
|
-
process.env.PEAKS_SESSION_ID ??
|
|
78
|
-
getCurrentSessionId(projectRoot) ??
|
|
79
|
-
'unknown-sid';
|
|
80
|
-
const sliceId = options.sliceId;
|
|
81
|
-
if (sliceId === undefined || sliceId.length === 0) {
|
|
82
|
-
printResult(io, fail('contract.write', 'MISSING_SLICE_ID', '--slice-id is required', { path: null, contract: null }, [
|
|
83
|
-
'Re-run with --slice-id <id> (must be non-empty; used as the contract filename basename).'
|
|
84
|
-
]), asJson);
|
|
85
|
-
process.exitCode = 1;
|
|
86
|
-
return;
|
|
87
|
-
}
|
|
88
|
-
const exports = splitCsv(options.exports);
|
|
89
|
-
const types = splitCsv(options.types);
|
|
90
|
-
const signatures = splitCsv(options.signatures);
|
|
91
|
-
const broadcastTo = splitCsv(options.broadcastTo);
|
|
92
|
-
// Cap the combined input to protect the file IO from runaway values
|
|
93
|
-
// (e.g. a 10MB comma-separated --signatures flag).
|
|
94
|
-
const inputSize = sliceId.length +
|
|
95
|
-
sid.length +
|
|
96
|
-
exports.join(',').length +
|
|
97
|
-
types.join(',').length +
|
|
98
|
-
signatures.join(',').length +
|
|
99
|
-
broadcastTo.join(',').length +
|
|
100
|
-
(options.completedAt?.length ?? 0);
|
|
101
|
-
if (inputSize > INPUT_LIMIT_BYTES) {
|
|
102
|
-
printResult(io, fail('contract.write', 'INPUT_TOO_LARGE', `combined input size ${inputSize} bytes exceeds ${INPUT_LIMIT_BYTES} (likely oversized --exports/--types/--signatures lists)`, { path: null, contract: null }, ['Split the slice into smaller surfaces or omit optional fields.']), asJson);
|
|
103
|
-
process.exitCode = 1;
|
|
104
|
-
return;
|
|
105
|
-
}
|
|
106
|
-
try {
|
|
107
|
-
const input = {
|
|
108
|
-
sliceId,
|
|
109
|
-
sessionId: sid,
|
|
110
|
-
exports,
|
|
111
|
-
types,
|
|
112
|
-
publicSignatures: signatures,
|
|
113
|
-
...(broadcastTo.length > 0 ? { broadcastTo } : {}),
|
|
114
|
-
...(options.completedAt !== undefined ? { completedAt: options.completedAt } : {})
|
|
115
|
-
};
|
|
116
|
-
const result = writeContract(projectRoot, sid, input);
|
|
117
|
-
printResult(io, ok('contract.write', {
|
|
118
|
-
path: result.path,
|
|
119
|
-
contractHash: result.contract.contractHash,
|
|
120
|
-
sliceId: result.contract.sliceId,
|
|
121
|
-
sessionId: result.contract.sessionId,
|
|
122
|
-
completedAt: result.contract.completedAt,
|
|
123
|
-
exportCount: result.contract.exports.length,
|
|
124
|
-
typeCount: result.contract.types.length,
|
|
125
|
-
signatureCount: result.contract.publicSignatures.length,
|
|
126
|
-
broadcastTo: result.contract.broadcastTo ?? []
|
|
127
|
-
}, [], [
|
|
128
|
-
`Contract written; orchestrator will pick it up on the next \`peaks sub-agent dispatch --from-dag\` run.`,
|
|
129
|
-
`Re-running with the same inputs is idempotent (overwrites in place).`
|
|
130
|
-
]), asJson);
|
|
131
|
-
}
|
|
132
|
-
catch (err) {
|
|
133
|
-
printResult(io, fail('contract.write', 'WRITE_ERROR', getErrorMessage(err), { path: null, contract: null }, [
|
|
134
|
-
'See error message; check that --project is a writable directory and --slice-id is a valid filename basename (no path separators).'
|
|
135
|
-
]), asJson);
|
|
136
|
-
process.exitCode = 1;
|
|
137
|
-
}
|
|
138
|
-
});
|
|
139
|
-
}
|
|
140
|
-
const CLASSIFY_AUDIT_FILE = 'classify-audit.jsonl';
|
|
141
|
-
function getSignalsFromGitDiff(projectRoot) {
|
|
142
|
-
// Use git diff --stat to extract file count + line count. Fall back to
|
|
143
|
-
// zeros if git is unavailable (e.g. fresh repo with no commits).
|
|
144
|
-
let stdout;
|
|
145
|
-
try {
|
|
146
|
-
const { execFileSync } = require('node:child_process');
|
|
147
|
-
stdout = execFileSync('git', ['diff', '--shortstat', 'HEAD'], {
|
|
148
|
-
cwd: projectRoot,
|
|
149
|
-
stdio: ['ignore', 'pipe', 'ignore'],
|
|
150
|
-
maxBuffer: 32 * 1024 * 1024,
|
|
151
|
-
windowsHide: true
|
|
152
|
-
}).toString('utf8');
|
|
153
|
-
}
|
|
154
|
-
catch {
|
|
155
|
-
return {
|
|
156
|
-
filesChanged: 0,
|
|
157
|
-
linesChanged: 0,
|
|
158
|
-
touchesDependencies: false,
|
|
159
|
-
touchesMigrationScripts: false,
|
|
160
|
-
isPureRefactor: true,
|
|
161
|
-
keywords: []
|
|
162
|
-
};
|
|
163
|
-
}
|
|
164
|
-
const lines = stdout.split('\n').filter((l) => l.trim().length > 0);
|
|
165
|
-
const filesChanged = lines.length;
|
|
166
|
-
let added = 0;
|
|
167
|
-
let removed = 0;
|
|
168
|
-
let touchesDependencies = false;
|
|
169
|
-
let touchesMigrationScripts = false;
|
|
170
|
-
for (const line of lines) {
|
|
171
|
-
const match = /(\d+)\s+insertion.*?(\d+)\s+deletion/.exec(line);
|
|
172
|
-
if (match) {
|
|
173
|
-
added += Number(match[1]);
|
|
174
|
-
removed += Number(match[2]);
|
|
175
|
-
}
|
|
176
|
-
if (/(package\.json|pnpm-lock\.yaml|yarn\.lock|requirements\.txt|go\.mod)/.test(line)) {
|
|
177
|
-
touchesDependencies = true;
|
|
178
|
-
}
|
|
179
|
-
if (/(migrate|codemod|backfill|schema)/.test(line)) {
|
|
180
|
-
touchesMigrationScripts = true;
|
|
181
|
-
}
|
|
182
|
-
}
|
|
183
|
-
// isPureRefactor: heuristic — if added lines / removed lines < 0.1 OR
|
|
184
|
-
// no new exports were added, treat as refactor. For L2.2 the signal is
|
|
185
|
-
// binary (true/false). Default: true (no behavior change is the safe
|
|
186
|
-
// assumption; flip to false when keyword 'add' / 'new' / 'feature' present).
|
|
187
|
-
const isPureRefactor = true;
|
|
188
|
-
return {
|
|
189
|
-
filesChanged,
|
|
190
|
-
linesChanged: added + removed,
|
|
191
|
-
touchesDependencies,
|
|
192
|
-
touchesMigrationScripts,
|
|
193
|
-
isPureRefactor,
|
|
194
|
-
keywords: []
|
|
195
|
-
};
|
|
196
|
-
}
|
|
197
|
-
function appendAuditEntry(projectRoot, entry) {
|
|
198
|
-
const auditDir = join(projectRoot, '.peaks/_runtime');
|
|
199
|
-
if (!existsSync(auditDir)) {
|
|
200
|
-
try {
|
|
201
|
-
mkdirSync(auditDir, { recursive: true });
|
|
202
|
-
}
|
|
203
|
-
catch {
|
|
204
|
-
/* ignore */
|
|
205
|
-
} // TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
206
|
-
}
|
|
207
|
-
const auditPath = join(auditDir, CLASSIFY_AUDIT_FILE);
|
|
208
|
-
let body = '';
|
|
209
|
-
try {
|
|
210
|
-
if (existsSync(auditPath)) {
|
|
211
|
-
body = readFileSync(auditPath, 'utf8');
|
|
212
|
-
}
|
|
213
|
-
}
|
|
214
|
-
catch {
|
|
215
|
-
/* ignore */
|
|
216
|
-
} // TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
217
|
-
body += JSON.stringify(entry) + '\n';
|
|
218
|
-
try {
|
|
219
|
-
writeFileSync(auditPath, body);
|
|
220
|
-
}
|
|
221
|
-
catch {
|
|
222
|
-
/* best-effort */
|
|
223
|
-
} // TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
224
|
-
}
|
|
225
|
-
function isTaskLevel(value) {
|
|
226
|
-
return TASK_LEVELS.includes(value);
|
|
227
|
-
}
|
|
228
32
|
export function registerClassifyCommands(program, io) {
|
|
229
33
|
const classify = program
|
|
230
34
|
.command('classify')
|
|
231
35
|
.description('L1a task classification: 5-level heuristic (typo/bug/feature/refactor/migration) + override/upgrade + audit log');
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
.description('Classify the current diff (git diff HEAD) into one of 5 task levels')
|
|
235
|
-
.requiredOption('--project <path>', 'target project root')
|
|
236
|
-
.option('--override <level>', 'force a level (one of typo|bug|feature|refactor|migration); requires --reason')
|
|
237
|
-
.option('--reason <text>', 'reason for the override (mandatory when --override is set)')).action(async (options) => {
|
|
238
|
-
try {
|
|
239
|
-
const prefs = await loadPreferences(options.project);
|
|
240
|
-
const signals = getSignalsFromGitDiff(options.project);
|
|
241
|
-
let override;
|
|
242
|
-
if (options.override !== undefined) {
|
|
243
|
-
if (!isTaskLevel(options.override)) {
|
|
244
|
-
printResult(io, fail('classify.run', 'INVALID_LEVEL', `level must be one of: ${TASK_LEVELS.join(', ')}`, { provided: options.override }, ['Pass one of typo, bug, feature, refactor, migration']), options.json);
|
|
245
|
-
process.exitCode = 1;
|
|
246
|
-
return;
|
|
247
|
-
}
|
|
248
|
-
if (options.reason === undefined || options.reason.length === 0) {
|
|
249
|
-
printResult(io, fail('classify.run', 'REASON_REQUIRED', '--reason is required when --override is set', {}, ['Provide a non-empty reason for the override']), options.json);
|
|
250
|
-
process.exitCode = 1;
|
|
251
|
-
return;
|
|
252
|
-
}
|
|
253
|
-
override = { level: options.override, reason: options.reason };
|
|
254
|
-
}
|
|
255
|
-
const result = classifyTask(override !== undefined
|
|
256
|
-
? { signals, conservatism: prefs.classifyConservatism, override }
|
|
257
|
-
: { signals, conservatism: prefs.classifyConservatism }, prefs.classifyRules.feature_threshold_files, prefs.classifyRules.feature_threshold_lines);
|
|
258
|
-
appendAuditEntry(options.project, result.audit);
|
|
259
|
-
printResult(io, ok('classify.run', result, [], [
|
|
260
|
-
`gate set for level "${result.level}": ${result.gateSet.stages.join(', ')}`,
|
|
261
|
-
`audit log: .peaks/_runtime/${CLASSIFY_AUDIT_FILE}`
|
|
262
|
-
]), options.json);
|
|
263
|
-
}
|
|
264
|
-
catch (error) {
|
|
265
|
-
printResult(io, fail('classify.run', 'CLASSIFY_RUN_FAILED', getErrorMessage(error), { projectRoot: options.project }, ['Run peaks classify --help for usage']), options.json);
|
|
266
|
-
process.exitCode = 1;
|
|
267
|
-
}
|
|
268
|
-
});
|
|
269
|
-
// Downgrade is REFUSED per spec §4. Surface this as a hard fail.
|
|
270
|
-
classify
|
|
271
|
-
.command('downgrade')
|
|
272
|
-
.description('REFUSED per spec §4 — peaks-loop never downgrades a classification; ask the user to override explicitly')
|
|
273
|
-
.requiredOption('--level <level>', 'attempted level')
|
|
274
|
-
.requiredOption('--reason <text>', 'reason for the attempt (always rejected)')
|
|
275
|
-
.requiredOption('--project <path>', 'target project root')
|
|
276
|
-
.option('--json', 'print machine-readable JSON envelope')
|
|
277
|
-
.action((options) => {
|
|
278
|
-
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);
|
|
279
|
-
process.exitCode = 2;
|
|
280
|
-
});
|
|
36
|
+
registerClassifyRunCommand(classify, io);
|
|
37
|
+
registerClassifyDowngradeCommand(classify, io);
|
|
281
38
|
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { IdeId } from '../../services/ide/ide-types.js';
|
|
2
|
+
import type { HookScope } from '../../services/skills/hooks-settings-service.js';
|
|
3
|
+
export type HookCliOptions = {
|
|
4
|
+
global?: boolean;
|
|
5
|
+
project?: string;
|
|
6
|
+
dryRun?: boolean;
|
|
7
|
+
json?: boolean;
|
|
8
|
+
ide?: string;
|
|
9
|
+
progress?: boolean;
|
|
10
|
+
};
|
|
11
|
+
/** What a hook-script copy reported back: whether it landed, and where from / to. */
|
|
12
|
+
export type HookScriptCopy = {
|
|
13
|
+
copied: boolean;
|
|
14
|
+
source: string;
|
|
15
|
+
target: string;
|
|
16
|
+
};
|
|
17
|
+
/** Both copies one install makes, for whichever scope it was asked about. */
|
|
18
|
+
export type HookScriptCopies = {
|
|
19
|
+
bridgeCopy: HookScriptCopy;
|
|
20
|
+
codeGateCopy: HookScriptCopy;
|
|
21
|
+
};
|
|
22
|
+
/** Everything the install verb derived once and hands to both of its envelopes. */
|
|
23
|
+
export type InstallContext = {
|
|
24
|
+
scope: HookScope;
|
|
25
|
+
projectRoot: string | undefined;
|
|
26
|
+
ide: IdeId;
|
|
27
|
+
skipProgress: boolean;
|
|
28
|
+
};
|
|
29
|
+
export declare function resolveScope(options: {
|
|
30
|
+
global?: boolean;
|
|
31
|
+
}): HookScope;
|
|
32
|
+
export declare function resolveProjectRoot(scope: HookScope, project: string | undefined): string | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Resolve the IDE the install should target. The CLI user can override with
|
|
35
|
+
* `--ide <id>`. Otherwise we delegate to `detectIdeFromContext` which checks
|
|
36
|
+
* `process.env[adapter.envVar]` → stdin shape → cwd `.trae`/`.claude` →
|
|
37
|
+
* fallback `'claude-code'`. Pass `parsedStdin: null` since `peaks hooks
|
|
38
|
+
* install` is not invoked from inside an IDE hook — there's no stdin payload.
|
|
39
|
+
*/
|
|
40
|
+
export declare function resolveIdeForCommand(options: {
|
|
41
|
+
ide?: string;
|
|
42
|
+
}, projectRoot: string | undefined): IdeId;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
// src/cli/commands/hooks-command-shared.ts
|
|
2
|
+
//
|
|
3
|
+
// What every `peaks hooks *` verb shares: the option bag, the scope switch and
|
|
4
|
+
// the project-root / IDE resolution. Split out of `hooks-commands.ts`; the
|
|
5
|
+
// defaults and the detection order are unchanged.
|
|
6
|
+
import { findProjectRoot } from '../../services/config/config-safety.js';
|
|
7
|
+
import { detectIdeFromContext } from '../../services/ide/hook-translator.js';
|
|
8
|
+
export function resolveScope(options) {
|
|
9
|
+
return options.global ? 'global' : 'project';
|
|
10
|
+
}
|
|
11
|
+
export function resolveProjectRoot(scope, project) {
|
|
12
|
+
return scope === 'project'
|
|
13
|
+
? (project ?? findProjectRoot(process.cwd()) ?? process.cwd())
|
|
14
|
+
: undefined;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Resolve the IDE the install should target. The CLI user can override with
|
|
18
|
+
* `--ide <id>`. Otherwise we delegate to `detectIdeFromContext` which checks
|
|
19
|
+
* `process.env[adapter.envVar]` → stdin shape → cwd `.trae`/`.claude` →
|
|
20
|
+
* fallback `'claude-code'`. Pass `parsedStdin: null` since `peaks hooks
|
|
21
|
+
* install` is not invoked from inside an IDE hook — there's no stdin payload.
|
|
22
|
+
*/
|
|
23
|
+
export function resolveIdeForCommand(options, projectRoot) {
|
|
24
|
+
if (options.ide !== undefined && options.ide.length > 0) {
|
|
25
|
+
return options.ide;
|
|
26
|
+
}
|
|
27
|
+
return detectIdeFromContext({
|
|
28
|
+
env: process.env,
|
|
29
|
+
cwd: projectRoot ?? process.cwd(),
|
|
30
|
+
parsedStdin: null
|
|
31
|
+
});
|
|
32
|
+
}
|
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `peaks hooks *` — the Peaks-managed hook entry in the adapter's settings.json.
|
|
3
|
+
*
|
|
4
|
+
* The `install` verb and the hook-script distribution stay in this file because
|
|
5
|
+
* three source-scanning guards pin file-level facts to this exact path:
|
|
6
|
+
*
|
|
7
|
+
* - `tests/unit/cli/ide-option-help-lists-the-registry.test.ts` needs an
|
|
8
|
+
* `--ide` option declaration here whose help is derived from the registry;
|
|
9
|
+
* - `tests/unit/runtime/vendor-neutral-identity-guard.test.ts` pins the two
|
|
10
|
+
* user-global Claude Code skill-bridge copy targets to this file
|
|
11
|
+
* (`settingsPaths: 2` in its `KNOWN_DEBT` census);
|
|
12
|
+
* - `tests/unit/hooks/gate-enforce-machine-local-shell.test.ts` scans this
|
|
13
|
+
* file for the CJS module-directory global, because this is where the hook
|
|
14
|
+
* script sources are resolved.
|
|
15
|
+
*
|
|
16
|
+
* The other verbs live beside it: `hooks-uninstall-command.ts`,
|
|
17
|
+
* `hooks-status-command.ts`, the two install envelopes in
|
|
18
|
+
* `hooks-install-envelopes.ts`, and the scope / IDE resolution in
|
|
19
|
+
* `hooks-command-shared.ts`.
|
|
20
|
+
*/
|
|
1
21
|
import type { Command } from 'commander';
|
|
2
22
|
import { type ProgramIO } from '../cli-helpers.js';
|
|
3
23
|
export declare function registerHooksCommands(program: Command, io: ProgramIO): void;
|