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
|
@@ -32,180 +32,17 @@
|
|
|
32
32
|
* peaks test --no-cache — pass --no-cache to the framework
|
|
33
33
|
* peaks test --passthrough — do NOT override the consumer's argv
|
|
34
34
|
* peaks test --framework <name> — force a specific framework
|
|
35
|
+
*
|
|
36
|
+
* The runner resolution and this file's spawn site live here; the action body
|
|
37
|
+
* it dispatches to lives in `test-command-run.ts` and the argv/probe rules in
|
|
38
|
+
* `test-command-runner-resolution.ts`.
|
|
35
39
|
*/
|
|
36
40
|
import { spawn } from 'node:child_process';
|
|
37
|
-
import {
|
|
38
|
-
import { dirname, join, resolve } from 'node:path';
|
|
39
|
-
import { resolveCanonicalProjectRoot } from '../../services/config/config-service.js';
|
|
41
|
+
import { join } from 'node:path';
|
|
40
42
|
import { getErrorMessage } from '../cli-helpers.js';
|
|
41
|
-
import {
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
* Build the argv for the underlying test runner. This is the SINGLE
|
|
45
|
-
* source of truth for "peaks test drops --no-cache from the
|
|
46
|
-
* consumer's script" (G7 / NG7). `--cache` is always passed
|
|
47
|
-
* unless the user explicitly opts in to `--no-cache` or `--passthrough`.
|
|
48
|
-
*/
|
|
49
|
-
export function buildRunnerArgv(framework, patterns, options) {
|
|
50
|
-
if (options.passthrough) {
|
|
51
|
-
// Caller has explicitly chosen to honor the consumer's argv;
|
|
52
|
-
// we still pass the patterns so the runner filters to them.
|
|
53
|
-
if (framework === 'jest')
|
|
54
|
-
return [...patterns, '--no-cache'];
|
|
55
|
-
if (framework === 'vitest')
|
|
56
|
-
return ['run', ...patterns];
|
|
57
|
-
return [...patterns];
|
|
58
|
-
}
|
|
59
|
-
if (framework === 'jest') {
|
|
60
|
-
const argv = [...patterns];
|
|
61
|
-
if (options.all)
|
|
62
|
-
argv.push('--passWithNoTests');
|
|
63
|
-
if (options.changed)
|
|
64
|
-
argv.push('--changedSince=HEAD');
|
|
65
|
-
// Commander's `.option('--no-cache')` sets `opts.cache` (BASE name) to
|
|
66
|
-
// `false` when the flag is passed; `opts.cache` is `true` by default.
|
|
67
|
-
// The default-mode invariant (G7/NG7) is `--cache`; the explicit
|
|
68
|
-
// override is `--no-cache`. Inverted from the previous wording
|
|
69
|
-
// because `options = {}` made the read side `!== true` and silently
|
|
70
|
-
// flipped every default-mode jest/vitest run to `--no-cache`.
|
|
71
|
-
if (options.cache === false)
|
|
72
|
-
argv.push('--no-cache');
|
|
73
|
-
else
|
|
74
|
-
argv.push('--cache');
|
|
75
|
-
return argv;
|
|
76
|
-
}
|
|
77
|
-
if (framework === 'vitest') {
|
|
78
|
-
const argv = ['run', ...patterns];
|
|
79
|
-
if (options.changed)
|
|
80
|
-
argv.push('--changed');
|
|
81
|
-
if (options.cache === false)
|
|
82
|
-
argv.push('--no-cache');
|
|
83
|
-
else
|
|
84
|
-
argv.push('--cache');
|
|
85
|
-
return argv;
|
|
86
|
-
}
|
|
87
|
-
// mocha — no built-in --cache flag; we just pass the patterns.
|
|
88
|
-
return [...patterns];
|
|
89
|
-
}
|
|
90
|
-
/** `<pkg>/package.json#bin`, resolved to the absolute JS entry it points at. */
|
|
91
|
-
function readBinEntry(pkgJsonPath, name, read) {
|
|
92
|
-
let pkg = {};
|
|
93
|
-
try {
|
|
94
|
-
pkg = JSON.parse(read(pkgJsonPath));
|
|
95
|
-
}
|
|
96
|
-
catch {
|
|
97
|
-
// Not fatal: fall through to the `.bin` shim below, and the not-found
|
|
98
|
-
// error still names this package.json in `searched`.
|
|
99
|
-
pkg = {};
|
|
100
|
-
}
|
|
101
|
-
const rel = typeof pkg.bin === 'string' ? pkg.bin : pkg.bin?.[name];
|
|
102
|
-
if (typeof rel !== 'string' || rel.length === 0)
|
|
103
|
-
return null;
|
|
104
|
-
return resolve(dirname(pkgJsonPath), rel);
|
|
105
|
-
}
|
|
106
|
-
/**
|
|
107
|
-
* Convert a resolved executable + argv into a form `spawn` can launch with
|
|
108
|
-
* `shell: false`.
|
|
109
|
-
*
|
|
110
|
-
* A Windows `.cmd`/`.bat` shim cannot be spawned directly (spawn → EINVAL).
|
|
111
|
-
* The obvious fix, `spawn(shim, argv, { shell: true })`, re-splits argv inside
|
|
112
|
-
* cmd.exe: a pattern `tests/a b/x.test.ts` arrives as THREE args (measured).
|
|
113
|
-
* Invoking cmd.exe ourselves with `/d /s /c` keeps argv intact.
|
|
114
|
-
*/
|
|
115
|
-
function toSpawnable(exe, argv, platform, env) {
|
|
116
|
-
if (platform === 'win32' && /\.(?:cmd|bat)$/i.test(exe)) {
|
|
117
|
-
return { command: env.ComSpec ?? 'cmd.exe', args: ['/d', '/s', '/c', exe, ...argv] };
|
|
118
|
-
}
|
|
119
|
-
return { command: exe, args: argv };
|
|
120
|
-
}
|
|
121
|
-
/** Spawnable PATH hits, in preference order (`where`/`which` avoided so this
|
|
122
|
-
* stays in-process and testable). */
|
|
123
|
-
function resolveFromPath(name, platform, env, exists) {
|
|
124
|
-
const dirs = (env.PATH ?? '').split(platform === 'win32' ? ';' : ':').filter((d) => d.length > 0);
|
|
125
|
-
const exts = platform === 'win32' ? ['.exe', '.cmd', '.bat', ''] : [''];
|
|
126
|
-
for (const dir of dirs) {
|
|
127
|
-
for (const ext of exts) {
|
|
128
|
-
const candidate = join(dir, name + ext);
|
|
129
|
-
if (exists(candidate))
|
|
130
|
-
return candidate;
|
|
131
|
-
}
|
|
132
|
-
}
|
|
133
|
-
return null;
|
|
134
|
-
}
|
|
135
|
-
/**
|
|
136
|
-
* Resolve the consumer project's LOCAL runner, and the form of it that
|
|
137
|
-
* `spawn` can actually launch on this platform.
|
|
138
|
-
*
|
|
139
|
-
* Probed, in order (every probe is reported when nothing is found):
|
|
140
|
-
* 1. `<root>/node_modules/.bin/<runner>` (+ `.cmd`/`.exe` on Windows) —
|
|
141
|
-
* the project-local runner the command documents.
|
|
142
|
-
* 2. `<root>/node_modules/<runner>/package.json` → its `bin` JS entry.
|
|
143
|
-
* 3. PATH — last resort only; the caller prints a visible notice.
|
|
144
|
-
*
|
|
145
|
-
* Between 1 and 2 the **JS entry** wins: `spawn` runs it as
|
|
146
|
-
* `node <entry> …`, which is identical on Windows and POSIX and never
|
|
147
|
-
* routes argv through a shell. The `.cmd` shim is only a fallback because
|
|
148
|
-
* it needs cmd.exe to launch it (see `toSpawnable`).
|
|
149
|
-
*/
|
|
150
|
-
export function resolveRunner(framework, argv, projectRoot, deps = {}) {
|
|
151
|
-
const platform = deps.platform ?? process.platform;
|
|
152
|
-
const exists = deps.existsSync ?? existsSync;
|
|
153
|
-
const read = deps.readFileSync ?? ((path) => readFileSync(path, 'utf8'));
|
|
154
|
-
const env = deps.env ?? process.env;
|
|
155
|
-
const nodeExec = deps.nodeExecPath ?? process.execPath;
|
|
156
|
-
const searched = [];
|
|
157
|
-
// 1. Project-local `.bin` shim.
|
|
158
|
-
const binDir = join(projectRoot, 'node_modules', '.bin');
|
|
159
|
-
const shimExts = platform === 'win32' ? ['.cmd', '.exe'] : [''];
|
|
160
|
-
let shim = null;
|
|
161
|
-
for (const ext of shimExts) {
|
|
162
|
-
const candidate = join(binDir, framework + ext);
|
|
163
|
-
searched.push(candidate);
|
|
164
|
-
if (shim === null && exists(candidate))
|
|
165
|
-
shim = candidate;
|
|
166
|
-
}
|
|
167
|
-
// 2. Project-local package entry.
|
|
168
|
-
const pkgJsonPath = join(projectRoot, 'node_modules', framework, 'package.json');
|
|
169
|
-
searched.push(pkgJsonPath);
|
|
170
|
-
const entry = exists(pkgJsonPath) ? readBinEntry(pkgJsonPath, framework, read) : null;
|
|
171
|
-
if (entry !== null && exists(entry)) {
|
|
172
|
-
return {
|
|
173
|
-
ok: true,
|
|
174
|
-
command: nodeExec,
|
|
175
|
-
args: [entry, ...argv],
|
|
176
|
-
via: `local ${entry}`,
|
|
177
|
-
fromPath: false
|
|
178
|
-
};
|
|
179
|
-
}
|
|
180
|
-
if (shim !== null) {
|
|
181
|
-
return {
|
|
182
|
-
ok: true,
|
|
183
|
-
...toSpawnable(shim, argv, platform, env),
|
|
184
|
-
via: `local ${shim}`,
|
|
185
|
-
fromPath: false
|
|
186
|
-
};
|
|
187
|
-
}
|
|
188
|
-
// 3. PATH — last resort.
|
|
189
|
-
const onPath = resolveFromPath(framework, platform, env, exists);
|
|
190
|
-
searched.push(`PATH lookup for "${framework}"`);
|
|
191
|
-
if (onPath !== null) {
|
|
192
|
-
return {
|
|
193
|
-
ok: true,
|
|
194
|
-
...toSpawnable(onPath, argv, platform, env),
|
|
195
|
-
via: `PATH: ${onPath}`,
|
|
196
|
-
fromPath: true
|
|
197
|
-
};
|
|
198
|
-
}
|
|
199
|
-
return { ok: false, searched };
|
|
200
|
-
}
|
|
201
|
-
/** Actionable message for the no-runner case — never a raw ENOENT. */
|
|
202
|
-
export function formatRunnerNotFound(framework, searched) {
|
|
203
|
-
return [
|
|
204
|
-
`RUNNER_NOT_FOUND: no ${framework} runner found for this project. Looked for:`,
|
|
205
|
-
...searched.map((p) => ` - ${p}`),
|
|
206
|
-
`Install it (e.g. \`npm i -D ${framework}\`) or pass --framework <name>.`
|
|
207
|
-
].join('\n');
|
|
208
|
-
}
|
|
43
|
+
import { resolveCanonicalProjectRoot } from '../../services/config/config-service.js';
|
|
44
|
+
import { buildRunnerArgv, formatRunnerNotFound, FRAMEWORKS, resolveRunner } from './test-command-runner-resolution.js';
|
|
45
|
+
import { clearCacheAndReport, emitTestFailure, reportRunResult, resolveFramework } from './test-command-run-helpers.js';
|
|
209
46
|
export function runRunner(framework, argv, projectRoot, deps = {}) {
|
|
210
47
|
const resolution = resolveRunner(framework, argv, projectRoot, deps);
|
|
211
48
|
if (!resolution.ok) {
|
|
@@ -237,7 +74,7 @@ export function runRunner(framework, argv, projectRoot, deps = {}) {
|
|
|
237
74
|
});
|
|
238
75
|
}
|
|
239
76
|
export function registerTestCommands(program, _io) {
|
|
240
|
-
|
|
77
|
+
program
|
|
241
78
|
.command('test')
|
|
242
79
|
.description("Wrap the consumer project's test framework (jest/vitest/mocha) " +
|
|
243
80
|
'with a per-test fingerprint cache. Default args: <pattern...> ' +
|
|
@@ -253,91 +90,31 @@ export function registerTestCommands(program, _io) {
|
|
|
253
90
|
.option('--framework <name>', `force a specific framework: ${FRAMEWORKS.join(', ')}`)
|
|
254
91
|
.option('--project <path>', 'project root (defaults to current directory)', process.cwd())
|
|
255
92
|
.option('--json', 'emit a JSON envelope { ok, data } to stdout')
|
|
256
|
-
.action(async (patterns,
|
|
93
|
+
.action(async (patterns, options) => {
|
|
257
94
|
try {
|
|
258
|
-
const projectRoot = resolveCanonicalProjectRoot(
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
const result = clearTestCache(projectRoot);
|
|
262
|
-
if (opts.json === true) {
|
|
263
|
-
process.stdout.write(JSON.stringify({
|
|
264
|
-
ok: true,
|
|
265
|
-
data: { cleared: true, removed: result.removed, dir: '.peaks/_runtime/test-cache/' }
|
|
266
|
-
}) + '\n');
|
|
267
|
-
}
|
|
268
|
-
else {
|
|
269
|
-
process.stdout.write(`cleared ${result.removed} cache file(s) from .peaks/_runtime/test-cache/\n`);
|
|
270
|
-
}
|
|
95
|
+
const projectRoot = resolveCanonicalProjectRoot(options.project ?? process.cwd());
|
|
96
|
+
if (options.clearCache === true) {
|
|
97
|
+
clearCacheAndReport(options, projectRoot);
|
|
271
98
|
return;
|
|
272
99
|
}
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
if (opts.framework) {
|
|
276
|
-
if (!FRAMEWORKS.includes(opts.framework)) {
|
|
277
|
-
const msg = `INVALID_FRAMEWORK: --framework must be one of ${FRAMEWORKS.join(', ')} (got "${opts.framework}")`;
|
|
278
|
-
if (opts.json === true) {
|
|
279
|
-
process.stdout.write(JSON.stringify({ ok: false, error: msg }) + '\n');
|
|
280
|
-
}
|
|
281
|
-
else {
|
|
282
|
-
process.stderr.write(msg + '\n');
|
|
283
|
-
}
|
|
284
|
-
process.exitCode = 1;
|
|
285
|
-
return;
|
|
286
|
-
}
|
|
287
|
-
framework = opts.framework;
|
|
288
|
-
}
|
|
289
|
-
else {
|
|
290
|
-
framework = detectTestFramework(projectRoot);
|
|
291
|
-
}
|
|
292
|
-
if (!framework) {
|
|
293
|
-
const msg = 'NO_TEST_FRAMEWORK: no supported test framework found in package.json (jest, vitest, or mocha). Install one and re-run, or pass --framework <name>.';
|
|
294
|
-
if (opts.json === true) {
|
|
295
|
-
process.stdout.write(JSON.stringify({ ok: false, error: msg }) + '\n');
|
|
296
|
-
}
|
|
297
|
-
else {
|
|
298
|
-
process.stderr.write(msg + '\n');
|
|
299
|
-
}
|
|
300
|
-
process.exitCode = 1;
|
|
100
|
+
const framework = resolveFramework(options, projectRoot);
|
|
101
|
+
if (framework === null)
|
|
301
102
|
return;
|
|
302
|
-
}
|
|
303
103
|
// Pattern argument: --all clears the list, --changed adds --changedSince
|
|
304
|
-
const
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
passthrough: opts.passthrough === true
|
|
104
|
+
const argv = buildRunnerArgv(framework, options.all ? [] : patterns, {
|
|
105
|
+
all: options.all === true,
|
|
106
|
+
changed: options.changed === true,
|
|
107
|
+
cache: options.cache === true,
|
|
108
|
+
passthrough: options.passthrough === true
|
|
310
109
|
});
|
|
311
|
-
|
|
312
|
-
const result = await runRunner(framework, argv, projectRoot);
|
|
313
|
-
if (result.notice !== null)
|
|
314
|
-
process.stderr.write(result.notice);
|
|
315
|
-
process.stdout.write(result.stdout);
|
|
316
|
-
process.stderr.write(result.stderr);
|
|
317
|
-
if (result.code !== 0) {
|
|
318
|
-
process.exitCode = 1;
|
|
319
|
-
}
|
|
320
|
-
if (opts.json === true) {
|
|
321
|
-
process.stdout.write(JSON.stringify({
|
|
322
|
-
ok: result.code === 0,
|
|
323
|
-
data: {
|
|
324
|
-
framework,
|
|
325
|
-
argv,
|
|
326
|
-
exitCode: result.code,
|
|
327
|
-
fingerprintCache: opts.noCacheResult ? 'bypassed' : 'enabled',
|
|
328
|
-
cacheDir: '.peaks/_runtime/test-cache/'
|
|
329
|
-
}
|
|
330
|
-
}) + '\n');
|
|
331
|
-
}
|
|
110
|
+
reportRunResult(options, framework, argv, await runRunner(framework, argv, projectRoot));
|
|
332
111
|
}
|
|
333
112
|
catch (error) {
|
|
334
|
-
|
|
335
|
-
process.stdout.write(JSON.stringify({ ok: false, error: getErrorMessage(error) }) + '\n');
|
|
336
|
-
}
|
|
337
|
-
else {
|
|
338
|
-
process.stderr.write(getErrorMessage(error) + '\n');
|
|
339
|
-
}
|
|
340
|
-
process.exitCode = 1;
|
|
113
|
+
emitTestFailure(options, getErrorMessage(error));
|
|
341
114
|
}
|
|
342
115
|
});
|
|
343
116
|
}
|
|
117
|
+
// Re-export for tests / external consumers: the runner resolver is driven
|
|
118
|
+
// directly (with injected fs / spawn / platform seams) by
|
|
119
|
+
// `tests/unit/cli/commands/test-commands-runner-resolution.test.ts`.
|
|
120
|
+
export { buildRunnerArgv, formatRunnerNotFound, resolveRunner } from './test-command-runner-resolution.js';
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { type VmHypervisor } from '../../services/vm/vm-lease.js';
|
|
2
|
+
export type VmOptions = {
|
|
3
|
+
session?: string;
|
|
4
|
+
project?: string;
|
|
5
|
+
json?: boolean;
|
|
6
|
+
};
|
|
7
|
+
export type SpawnOptions = VmOptions & {
|
|
8
|
+
rid: string;
|
|
9
|
+
role: string;
|
|
10
|
+
purpose: string;
|
|
11
|
+
hypervisor?: VmHypervisor;
|
|
12
|
+
image?: string;
|
|
13
|
+
ttl?: string;
|
|
14
|
+
mount?: string;
|
|
15
|
+
};
|
|
16
|
+
export type ReleaseOptions = VmOptions & {
|
|
17
|
+
leaseId: string;
|
|
18
|
+
};
|
|
19
|
+
/** `--session`, else `PEAKS_SESSION_ID`, else the project's bound session, else `unknown-sid`. */
|
|
20
|
+
export declare function resolveVmSessionId(projectRoot: string, session: string | undefined): string;
|
|
21
|
+
/** `<projectRoot>/.peaks/_runtime/<sessionId>` — trailing separators collapsed. */
|
|
22
|
+
export declare function joinPathSession(projectRoot: string, sessionId: string): string;
|
|
23
|
+
export declare function resolveTtlMs(raw: string | undefined, role: string): number;
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// src/cli/commands/vm-command-shared.ts
|
|
2
|
+
//
|
|
3
|
+
// What `peaks vm` verbs share: the option shapes, the session-id resolution and
|
|
4
|
+
// the role-aware TTL. Split out of `vm-commands.ts`; every resolution order and
|
|
5
|
+
// default is unchanged.
|
|
6
|
+
import { getCurrentSessionId } from '../../services/skills/skill-presence-service.js';
|
|
7
|
+
import { ttlForVmRole } from '../../services/vm/vm-lease.js';
|
|
8
|
+
/** `--session`, else `PEAKS_SESSION_ID`, else the project's bound session, else `unknown-sid`. */
|
|
9
|
+
export function resolveVmSessionId(projectRoot, session) {
|
|
10
|
+
return (session ?? process.env.PEAKS_SESSION_ID ?? getCurrentSessionId(projectRoot) ?? 'unknown-sid');
|
|
11
|
+
}
|
|
12
|
+
/** `<projectRoot>/.peaks/_runtime/<sessionId>` — trailing separators collapsed. */
|
|
13
|
+
export function joinPathSession(projectRoot, sessionId) {
|
|
14
|
+
return `${projectRoot.replace(/[\\/]+$/, '')}/.peaks/_runtime/${sessionId}`;
|
|
15
|
+
}
|
|
16
|
+
export function resolveTtlMs(raw, role) {
|
|
17
|
+
if (typeof raw !== 'string' || raw.length === 0)
|
|
18
|
+
return ttlForVmRole(role);
|
|
19
|
+
const parsed = Number.parseInt(raw, 10);
|
|
20
|
+
if (!Number.isInteger(parsed) || parsed <= 0)
|
|
21
|
+
return ttlForVmRole(role);
|
|
22
|
+
return parsed;
|
|
23
|
+
}
|
|
@@ -1,30 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
*
|
|
3
|
-
* L4 VM isolation runtime. Parallels the design of
|
|
4
|
-
* `container-commands.ts` (Part 12, docker) and
|
|
5
|
-
* `worktree-auth-commands.ts` (Part 1-2, git worktree).
|
|
6
|
-
*
|
|
7
|
-
* Hypervisor dispatch:
|
|
8
|
-
* - `kvm` : `virsh create` + `virsh destroy` (Linux KVM via libvirt)
|
|
9
|
-
* - `hyperkit` : `hvftool create` + `hvftool stop` (macOS HyperKit)
|
|
10
|
-
* - `hyperv` : `hvc create` + `hvftool stop` (Windows Hyper-V via
|
|
11
|
-
* the operator-installed `hvc` shim)
|
|
12
|
-
*
|
|
13
|
-
* The runtime check: which hypervisor binary is on PATH +
|
|
14
|
-
* (for kvm) whether the host kernel exposes /dev/kvm. The
|
|
15
|
-
* spawn is fail-fast: if the requested hypervisor is not
|
|
16
|
-
* available, the CLI returns VM_RUNTIME_UNAVAILABLE with a
|
|
17
|
-
* remediation hint rather than falling through to a different
|
|
18
|
-
* hypervisor (the caller chose a specific mode for a reason).
|
|
19
|
-
*
|
|
20
|
-
* Each spawned VM runs `sleep infinity` as the entrypoint; the
|
|
21
|
-
* VM's working dir is mounted from the host path, and the
|
|
22
|
-
* `peaks.leaseId` / `peaks.rid` labels are propagated via
|
|
23
|
-
* cloud-init metadata. Real workloads are expected to use
|
|
24
|
-
* `peaks vm exec` (a follow-up rid) to run commands inside
|
|
25
|
-
* the VM; Part 35 ships the lease + spawn/release surface
|
|
26
|
-
* only.
|
|
27
|
-
*/
|
|
28
1
|
import type { Command } from 'commander';
|
|
29
|
-
import {
|
|
2
|
+
import type { ProgramIO } from '../cli-helpers.js';
|
|
30
3
|
export declare function registerVmCommand(program: Command, io: ProgramIO): void;
|