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,41 @@
|
|
|
1
|
+
import { fail } from 'peaks-loop-shared/result';
|
|
2
|
+
import { addJsonOption, printResult } from '../cli-helpers.js';
|
|
3
|
+
import { getCurrentSessionId } from '../../services/skills/skill-presence-service.js';
|
|
4
|
+
import { buildCostCheckEnvelope, runKarpathyCostCheck } from '../../services/karpathy-cost/karpathy-cost-check-service.js';
|
|
5
|
+
import { read24hState } from '../../services/24h-mode/store.js';
|
|
6
|
+
import { asJson, failResult, projectRoot } from './job-command-shared.js';
|
|
7
|
+
import { SESSION_ID_HELP } from './job-state-root.js';
|
|
8
|
+
const COST_CHECK_DESCRIPTION = "Read the slice's rd/karpathy-review.md and decide whether to downgrade a block gateAction to warn (slice 2026-07-30-karpathy-cost-self-review).";
|
|
9
|
+
const COST_CHECK_REVIEW_FILE_HELP = 'path to rd/karpathy-review.md (or its .json sibling if the file is JSON)';
|
|
10
|
+
function runJobCostCheck(opts, io) {
|
|
11
|
+
const project = projectRoot(opts);
|
|
12
|
+
const sessionId = opts.sessionId ?? process.env.PEAKS_SESSION_ID ?? getCurrentSessionId(project);
|
|
13
|
+
if (!sessionId) {
|
|
14
|
+
return failResult(io, fail('karpathy-cost-check', 'NO_ACTIVE_SESSION', 'karpathy-cost-check requires --session-id (or an active peaks-code session)', { project }, [
|
|
15
|
+
'Re-run with --session-id <sid>',
|
|
16
|
+
'Or run `peaks workspace init` to create a session first'
|
|
17
|
+
]), opts);
|
|
18
|
+
}
|
|
19
|
+
const is24hModeActive = () => {
|
|
20
|
+
try {
|
|
21
|
+
const snapshot = read24hState(project, sessionId);
|
|
22
|
+
return snapshot.state === '24H_ACTIVE';
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
};
|
|
28
|
+
const out = runKarpathyCostCheck({
|
|
29
|
+
reviewFilePath: opts.reviewFile,
|
|
30
|
+
is24hModeActive
|
|
31
|
+
});
|
|
32
|
+
printResult(io, buildCostCheckEnvelope(out), asJson(opts));
|
|
33
|
+
}
|
|
34
|
+
export function registerJobCostCheckCommand(job, io) {
|
|
35
|
+
addJsonOption(job
|
|
36
|
+
.command('karpathy-cost-check')
|
|
37
|
+
.description(COST_CHECK_DESCRIPTION)
|
|
38
|
+
.requiredOption('--review-file <path>', COST_CHECK_REVIEW_FILE_HELP)
|
|
39
|
+
.option('--project <repo>')
|
|
40
|
+
.option('--session-id <sid>', SESSION_ID_HELP)).action((opts) => runJobCostCheck(opts, io));
|
|
41
|
+
}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { ok, fail } from 'peaks-loop-shared/result';
|
|
2
|
+
import { addJsonOption, printResult } from '../cli-helpers.js';
|
|
3
|
+
import { JobStateStore } from '../../services/job/job-state-store.js';
|
|
4
|
+
import { JobOrchestrator } from '../../services/job/job-orchestrator.js';
|
|
5
|
+
import { emitJobEvent } from '../../services/job/job-event-emitter.js';
|
|
6
|
+
import { JobInitInputSchema } from '../../services/job/job-types.js';
|
|
7
|
+
import { getCurrentSessionId } from '../../services/skills/skill-presence-service.js';
|
|
8
|
+
import { asJson, failResult, projectRoot } from './job-command-shared.js';
|
|
9
|
+
import { SESSION_ID_HELP, resolveJobStateRoot } from './job-state-root.js';
|
|
10
|
+
/**
|
|
11
|
+
* `job init` resolves its own session id (the schema needs it before the state
|
|
12
|
+
* root exists), so it repeats the D6 precedence rather than reusing
|
|
13
|
+
* `resolveJobStateRoot`.
|
|
14
|
+
*/
|
|
15
|
+
function resolveInitSessionId(opts, project) {
|
|
16
|
+
return opts.sessionId ?? process.env.PEAKS_SESSION_ID ?? getCurrentSessionId(project);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* ADVISORY (F1, 2026-09-17) — deliberately exits 0. Event emission is a
|
|
20
|
+
* telemetry side effect; a failed emit does not mean `job init` failed (the
|
|
21
|
+
* state file was already written). This catch must NOT be routed through
|
|
22
|
+
* `failResult`. Pinned by the "advisory stays 0" control in
|
|
23
|
+
* tests/unit/cli/job-exit-code.test.ts.
|
|
24
|
+
*/
|
|
25
|
+
function emitJobStarted(state) {
|
|
26
|
+
try {
|
|
27
|
+
emitJobEvent({
|
|
28
|
+
kind: 'job-started',
|
|
29
|
+
jobId: state.jobId,
|
|
30
|
+
total: state.slices.length,
|
|
31
|
+
strategy: state.mainLoopStrategy
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
catch (e) {
|
|
35
|
+
void e;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
function failInitNoActiveSession(io, opts, project) {
|
|
39
|
+
failResult(io, fail('init', 'NO_ACTIVE_SESSION', 'peaks job init requires --session-id (or an active peaks-code session via peaks workspace init)', { project }, ['Re-run with --session-id <sid>', 'Or run `peaks workspace init` to create a session first']), opts);
|
|
40
|
+
}
|
|
41
|
+
function parseJobInitInput(opts, sessionId, project) {
|
|
42
|
+
return JobInitInputSchema.safeParse({
|
|
43
|
+
jobId: opts.jobId,
|
|
44
|
+
sessionId,
|
|
45
|
+
sliceList: opts.sliceList
|
|
46
|
+
.split(',')
|
|
47
|
+
.map((s) => s.trim())
|
|
48
|
+
.filter(Boolean),
|
|
49
|
+
parallelismHint: opts.parallelismHint,
|
|
50
|
+
exitPolicy: opts.exitPolicy,
|
|
51
|
+
mainLoopStrategy: opts.mainLoopStrategy,
|
|
52
|
+
rotateEvery: Number(opts.rotateEvery),
|
|
53
|
+
project,
|
|
54
|
+
json: opts.json
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
function runJobInit(opts, io) {
|
|
58
|
+
const project = projectRoot(opts);
|
|
59
|
+
// Resolve sessionId: explicit flag > PEAKS_SESSION_ID > caller-first session binding
|
|
60
|
+
// (this caller's binding, else the project-global session.json) > FAIL.
|
|
61
|
+
// Per spec §3.3, Job state lives at .peaks/_runtime/<sessionId>/job/<jobId>/state.json —
|
|
62
|
+
// a random UUID would scatter state across dirs and break resume/auto-compact.
|
|
63
|
+
let sessionId = resolveInitSessionId(opts, project);
|
|
64
|
+
if (!sessionId) {
|
|
65
|
+
failInitNoActiveSession(io, opts, project);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
const parsed = parseJobInitInput(opts, sessionId, project);
|
|
69
|
+
if (!parsed.success)
|
|
70
|
+
return failResult(io, fail('init', 'INVALID_INIT', parsed.error.message, {}), opts);
|
|
71
|
+
const jobRoot = resolveJobStateRoot(opts);
|
|
72
|
+
const store = new JobStateStore(jobRoot.rootDir);
|
|
73
|
+
const orch = new JobOrchestrator(store);
|
|
74
|
+
const state = orch.init({
|
|
75
|
+
jobId: parsed.data.jobId,
|
|
76
|
+
sessionId: parsed.data.sessionId,
|
|
77
|
+
sliceList: parsed.data.sliceList,
|
|
78
|
+
parallelismHint: parsed.data.parallelismHint,
|
|
79
|
+
exitPolicy: parsed.data.exitPolicy,
|
|
80
|
+
mainLoopStrategy: parsed.data.mainLoopStrategy,
|
|
81
|
+
rotateEvery: parsed.data.rotateEvery
|
|
82
|
+
});
|
|
83
|
+
emitJobStarted(state);
|
|
84
|
+
printResult(io, ok('init', {
|
|
85
|
+
jobId: state.jobId,
|
|
86
|
+
sliceCount: state.slices.length,
|
|
87
|
+
statePath: `${jobRoot.rootDir}/${state.jobId}/state.json`
|
|
88
|
+
}), asJson(opts));
|
|
89
|
+
}
|
|
90
|
+
function runJobStatus(opts, io) {
|
|
91
|
+
const store = new JobStateStore(resolveJobStateRoot(opts, opts.jobId).rootDir);
|
|
92
|
+
const orch = new JobOrchestrator(store);
|
|
93
|
+
const s = orch.status(opts.jobId);
|
|
94
|
+
if (opts.watch) {
|
|
95
|
+
const draw = () => {
|
|
96
|
+
const bar = `[${'='.repeat(s.done)}${' '.repeat(s.total - s.done)}]`;
|
|
97
|
+
process.stdout.write(`\rjob ${opts.jobId}: ${bar} ${s.done}/${s.total}${s.currentSlice ? ` next=${s.currentSlice}` : ''} `);
|
|
98
|
+
};
|
|
99
|
+
draw();
|
|
100
|
+
const iv = setInterval(() => {
|
|
101
|
+
const u = orch.status(opts.jobId);
|
|
102
|
+
Object.assign(s, u);
|
|
103
|
+
draw();
|
|
104
|
+
if (u.done + u.failed + u.skipped + u.blocked >= u.total)
|
|
105
|
+
clearInterval(iv);
|
|
106
|
+
}, 3000);
|
|
107
|
+
process.on('SIGINT', () => {
|
|
108
|
+
clearInterval(iv);
|
|
109
|
+
process.stdout.write('\n');
|
|
110
|
+
process.exit(0);
|
|
111
|
+
});
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
try {
|
|
115
|
+
emitJobEvent({
|
|
116
|
+
kind: 'job-progress',
|
|
117
|
+
jobId: opts.jobId,
|
|
118
|
+
done: s.done,
|
|
119
|
+
total: s.total,
|
|
120
|
+
...(s.currentSlice ? { currentSlice: s.currentSlice } : {})
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
catch (e) {
|
|
124
|
+
// ADVISORY (F1, 2026-09-17) — deliberately exits 0. The status itself
|
|
125
|
+
// was already read successfully; the emit is telemetry. Same rule as
|
|
126
|
+
// the `job init` catch above: do NOT route through `failResult`.
|
|
127
|
+
void e;
|
|
128
|
+
}
|
|
129
|
+
printResult(io, ok('status', s), asJson(opts));
|
|
130
|
+
}
|
|
131
|
+
export function registerJobInitStatusCommands(job, io) {
|
|
132
|
+
addJsonOption(job
|
|
133
|
+
.command('init')
|
|
134
|
+
.requiredOption('--job-id <jid>')
|
|
135
|
+
.requiredOption('--slice-list <list>')
|
|
136
|
+
.option('--parallelism-hint <serial|llm-decides>', 'llm-decides')
|
|
137
|
+
.option('--exit-policy <strict|best-effort>', 'strict')
|
|
138
|
+
.option('--main-loop-strategy <single|rotating>', 'rotating')
|
|
139
|
+
.option('--rotate-every <n>', 'rotate every N slices (rotating mode)', '3')
|
|
140
|
+
.option('--session-id <sid>', SESSION_ID_HELP)
|
|
141
|
+
.option('--project <repo>')).action((opts) => runJobInit(opts, io));
|
|
142
|
+
addJsonOption(job
|
|
143
|
+
.command('status')
|
|
144
|
+
.requiredOption('--job-id <jid>')
|
|
145
|
+
.option('--watch', 'poll every 3s')
|
|
146
|
+
.option('--show-cost', 'overlay cost from peaks budget')
|
|
147
|
+
.option('--session-id <sid>', SESSION_ID_HELP)
|
|
148
|
+
.option('--project <repo>')).action((opts) => runJobStatus(opts, io));
|
|
149
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import { ok, fail } from 'peaks-loop-shared/result';
|
|
2
|
+
import { addJsonOption, printResult } from '../cli-helpers.js';
|
|
3
|
+
import { JobStateStore } from '../../services/job/job-state-store.js';
|
|
4
|
+
import { JobOrchestrator } from '../../services/job/job-orchestrator.js';
|
|
5
|
+
import { readJobProgress, tryReadJobProgress, describeNextSlice } from '../../services/job/job-progress-store.js';
|
|
6
|
+
import { asJson, failResult, projectRoot } from './job-command-shared.js';
|
|
7
|
+
import { SESSION_ID_HELP, resolveJobStateRoot } from './job-state-root.js';
|
|
8
|
+
const PROGRESS_DESCRIPTION = 'v3.1.2: read the on-disk slice progress mirror (.peaks/_runtime/<sid>/job/<jid>/progress.json). ' +
|
|
9
|
+
'Returns { jobId, done, total, currentSlice, lastCommitSha, updatedAt }.';
|
|
10
|
+
// "return done=0/total=0 envelope instead of failing when progress.json is
|
|
11
|
+
// absent". No code path has ever returned such an envelope — the option was
|
|
12
|
+
// born in `d9a1a098` with `process.exitCode = 1` on the same branch — so it
|
|
13
|
+
// described a contract that never existed, and `--allow-missing` appeared to
|
|
14
|
+
// be broken. It is not: its job is to pick WHICH structured code reports the
|
|
15
|
+
// absence. The help text was the side that was wrong; it now says what the
|
|
16
|
+
// flag does. See `rd/requests/013-…-exit-code-root-cause.md` for why the
|
|
17
|
+
// alternative reading was rejected (the literal promise is also
|
|
18
|
+
// unimplementable without a new absent-vs-corrupt distinction:
|
|
19
|
+
// `tryReadJobProgress` returns `null` for a corrupt file too, so "done=0"
|
|
20
|
+
// there would report unreadable state as empty state).
|
|
21
|
+
const PROGRESS_ALLOW_MISSING_HELP = 'report an absent progress.json as NO_PROGRESS (expected absence) rather than PROGRESS_READ_FAILED (read error); the command still exits non-zero';
|
|
22
|
+
function runJobContinue(opts, io) {
|
|
23
|
+
const store = new JobStateStore(resolveJobStateRoot(opts, opts.jobId).rootDir);
|
|
24
|
+
const orch = new JobOrchestrator(store);
|
|
25
|
+
const r = orch.continueNow(opts.jobId);
|
|
26
|
+
printResult(io, ok('continue', r), asJson(opts));
|
|
27
|
+
}
|
|
28
|
+
function runJobResume(opts, io) {
|
|
29
|
+
const store = new JobStateStore(resolveJobStateRoot(opts, opts.jobId).rootDir);
|
|
30
|
+
const orch = new JobOrchestrator(store);
|
|
31
|
+
const s = orch.status(opts.jobId);
|
|
32
|
+
printResult(io, ok('resume', { resumed: opts.jobId, ...s }), asJson(opts));
|
|
33
|
+
}
|
|
34
|
+
// v3.1.2: read the on-disk slice progress mirror written by `peaks job
|
|
35
|
+
// checkpoint --state done`; gate-step-08 and Step 0.7 (resume) read it too. The
|
|
36
|
+
// `next:` sentence comes from describeNextSlice, never re-derived from state.json.
|
|
37
|
+
function runJobProgress(opts, io) {
|
|
38
|
+
try {
|
|
39
|
+
const jobRoot = resolveJobStateRoot(opts, opts.jobId);
|
|
40
|
+
const sessId = jobRoot.sessionId;
|
|
41
|
+
const project = projectRoot(opts);
|
|
42
|
+
const progress = opts.allowMissing === true
|
|
43
|
+
? tryReadJobProgress(project, sessId, opts.jobId)
|
|
44
|
+
: readJobProgress(project, sessId, opts.jobId);
|
|
45
|
+
if (progress === null) {
|
|
46
|
+
// F1: this site already set `process.exitCode = 1` by hand; it is
|
|
47
|
+
// routed through `failResult` so all nine failure sites in this file
|
|
48
|
+
// share one rule instead of this one being the lone precedent.
|
|
49
|
+
failResult(io, fail('progress', 'NO_PROGRESS', `No progress.json for job ${opts.jobId} at .peaks/_runtime/${sessId}/job/${opts.jobId}/progress.json`, { jobId: opts.jobId, sessionId: sessId }, [
|
|
50
|
+
'Run `peaks job checkpoint --state done ...` at least once to seed progress.json.',
|
|
51
|
+
// return a zero-progress envelope." That line could only ever be
|
|
52
|
+
// printed when `--allow-missing` had ALREADY been passed — this
|
|
53
|
+
// `progress === null` branch is unreachable otherwise, because the
|
|
54
|
+
// no-flag path throws into the catch below and reports
|
|
55
|
+
// PROGRESS_READ_FAILED. So the CLI was advising the caller to pass
|
|
56
|
+
// the flag they had just passed, to obtain an envelope that does
|
|
57
|
+
// not exist. Replaced with the fact the caller actually needs.
|
|
58
|
+
'--allow-missing selects this NO_PROGRESS envelope over a PROGRESS_READ_FAILED read error; it does not change the exit code.'
|
|
59
|
+
]), opts);
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
printResult(io, ok('progress', progress, [], [`Next: ${describeNextSlice(progress, progress.jobId)}`]), asJson(opts));
|
|
63
|
+
}
|
|
64
|
+
catch (err) {
|
|
65
|
+
failResult(io, fail('progress', 'PROGRESS_READ_FAILED', err instanceof Error ? err.message : String(err), { jobId: opts.jobId }, ['Verify the job id and try again']), opts);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
function runJobHandoff(opts, io) {
|
|
69
|
+
const store = new JobStateStore(resolveJobStateRoot(opts, opts.jobId).rootDir);
|
|
70
|
+
const orch = new JobOrchestrator(store);
|
|
71
|
+
const s = orch.status(opts.jobId);
|
|
72
|
+
printResult(io, ok('handoff', { handoffFor: opts.jobId, ...s }), asJson(opts));
|
|
73
|
+
}
|
|
74
|
+
export function registerJobRunCommands(job, io) {
|
|
75
|
+
addJsonOption(job
|
|
76
|
+
.command('continue')
|
|
77
|
+
.requiredOption('--job-id <jid>')
|
|
78
|
+
.option('--session-id <sid>', SESSION_ID_HELP)
|
|
79
|
+
.option('--project <repo>')).action((opts) => runJobContinue(opts, io));
|
|
80
|
+
addJsonOption(job
|
|
81
|
+
.command('resume')
|
|
82
|
+
.requiredOption('--job-id <jid>')
|
|
83
|
+
.option('--session-id <sid>', SESSION_ID_HELP)
|
|
84
|
+
.option('--project <repo>')).action((opts) => runJobResume(opts, io));
|
|
85
|
+
addJsonOption(job
|
|
86
|
+
.command('progress')
|
|
87
|
+
.description(PROGRESS_DESCRIPTION)
|
|
88
|
+
.requiredOption('--job-id <jid>')
|
|
89
|
+
.option('--session-id <sid>', SESSION_ID_HELP)
|
|
90
|
+
.option('--project <repo>')
|
|
91
|
+
.option('--allow-missing', PROGRESS_ALLOW_MISSING_HELP)).action((opts) => runJobProgress(opts, io));
|
|
92
|
+
addJsonOption(job
|
|
93
|
+
.command('handoff')
|
|
94
|
+
.requiredOption('--job-id <jid>')
|
|
95
|
+
.option('--session-id <sid>', SESSION_ID_HELP)
|
|
96
|
+
.option('--project <repo>')).action((opts) => runJobHandoff(opts, io));
|
|
97
|
+
}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
import { type JobRootOpts } from './job-command-shared.js';
|
|
2
|
+
/**
|
|
3
|
+
* D6: every job subcommand resolves a job root, so every one of them must be
|
|
4
|
+
* able to name the session that holds the job. Same precedence as the rest of
|
|
5
|
+
* the CLI (`peaks sub-agent dispatch`, `peaks web *`, `peaks share *`), except
|
|
6
|
+
* that job state has no "unknown-sid" location to land in — an unresolvable
|
|
7
|
+
* session is an error, not a silent fallback.
|
|
8
|
+
*/
|
|
9
|
+
export declare const SESSION_ID_HELP = "session id (default: resolve from .peaks/_runtime/session.json; falls back to PEAKS_SESSION_ID env var; final fallback: NO_ACTIVE_SESSION error)";
|
|
10
|
+
/**
|
|
11
|
+
* Resolves the on-disk root for Job state files.
|
|
12
|
+
*
|
|
13
|
+
* Per spec §3.3 + §4.5 (2.7.1 single-scope-axis layout), Job state lives at:
|
|
14
|
+
* `<projectRoot>/.peaks/_runtime/<sessionId>/job/<jobId>/state.json`
|
|
15
|
+
*
|
|
16
|
+
* The `JobStateStore` itself only knows its `rootDir` + `jobId` and joins them. We
|
|
17
|
+
* compute the canonical root here (per-call) so the store can stay layout-agnostic.
|
|
18
|
+
*
|
|
19
|
+
* Resolution order (D6 — a job must stay addressable while the single per-project
|
|
20
|
+
* `.peaks/_runtime/session.json` binding points at another session):
|
|
21
|
+
* 1. `--session-id` flag (explicit override)
|
|
22
|
+
* 2. `PEAKS_SESSION_ID` env var
|
|
23
|
+
* 3. `getCurrentSessionId(project)` — this caller's session binding, falling back
|
|
24
|
+
* to `.peaks/_runtime/session.json` when no caller binding is resolvable
|
|
25
|
+
* 4. Error (NO_ACTIVE_SESSION) — must never silently fall back to a random uuid
|
|
26
|
+
*
|
|
27
|
+
* When `jobId` is passed and it is absent from the resolved session, the thrown
|
|
28
|
+
* error names the session that does hold it (if any), instead of leaving the
|
|
29
|
+
* caller with a bare "no state for <job> at <other-sid>" path.
|
|
30
|
+
*/
|
|
31
|
+
export declare function resolveJobStateRoot(opts: JobRootOpts, jobId?: string): {
|
|
32
|
+
rootDir: string;
|
|
33
|
+
sessionId: string;
|
|
34
|
+
projectRoot: string;
|
|
35
|
+
};
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
// Split out of `job-commands.ts`: the D6
|
|
2
|
+
// session-id resolution every `job` subcommand runs before it can address
|
|
3
|
+
// `<project>/.peaks/_runtime/<sessionId>/job/<jobId>/state.json`.
|
|
4
|
+
import { existsSync, readdirSync } from 'node:fs';
|
|
5
|
+
import { join } from 'node:path';
|
|
6
|
+
import { isUnsafePathInput } from '../../shared/path-safety.js';
|
|
7
|
+
import { getCurrentSessionId } from '../../services/skills/skill-presence-service.js';
|
|
8
|
+
import { projectRoot } from './job-command-shared.js';
|
|
9
|
+
/**
|
|
10
|
+
* D6: every job subcommand resolves a job root, so every one of them must be
|
|
11
|
+
* able to name the session that holds the job. Same precedence as the rest of
|
|
12
|
+
* the CLI (`peaks sub-agent dispatch`, `peaks web *`, `peaks share *`), except
|
|
13
|
+
* that job state has no "unknown-sid" location to land in — an unresolvable
|
|
14
|
+
* session is an error, not a silent fallback.
|
|
15
|
+
*/
|
|
16
|
+
export const SESSION_ID_HELP = 'session id (default: resolve from .peaks/_runtime/session.json; falls back to PEAKS_SESSION_ID env var; final fallback: NO_ACTIVE_SESSION error)';
|
|
17
|
+
/**
|
|
18
|
+
* The session (a direct child of `<project>/.peaks/_runtime/`) that holds
|
|
19
|
+
* `jobId`, or null. Only used to explain a miss: a job that lives in another
|
|
20
|
+
* session must be reported by name so the caller can re-run with --session-id.
|
|
21
|
+
*/
|
|
22
|
+
function findSessionHoldingJob(project, jobId) {
|
|
23
|
+
const runtimeDir = join(project, '.peaks', '_runtime');
|
|
24
|
+
if (!existsSync(runtimeDir))
|
|
25
|
+
return null;
|
|
26
|
+
for (const entry of readdirSync(runtimeDir, { withFileTypes: true })) {
|
|
27
|
+
if (entry.isDirectory() &&
|
|
28
|
+
existsSync(join(runtimeDir, entry.name, 'job', jobId, 'state.json'))) {
|
|
29
|
+
return entry.name;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Resolves the on-disk root for Job state files.
|
|
36
|
+
*
|
|
37
|
+
* Per spec §3.3 + §4.5 (2.7.1 single-scope-axis layout), Job state lives at:
|
|
38
|
+
* `<projectRoot>/.peaks/_runtime/<sessionId>/job/<jobId>/state.json`
|
|
39
|
+
*
|
|
40
|
+
* The `JobStateStore` itself only knows its `rootDir` + `jobId` and joins them. We
|
|
41
|
+
* compute the canonical root here (per-call) so the store can stay layout-agnostic.
|
|
42
|
+
*
|
|
43
|
+
* Resolution order (D6 — a job must stay addressable while the single per-project
|
|
44
|
+
* `.peaks/_runtime/session.json` binding points at another session):
|
|
45
|
+
* 1. `--session-id` flag (explicit override)
|
|
46
|
+
* 2. `PEAKS_SESSION_ID` env var
|
|
47
|
+
* 3. `getCurrentSessionId(project)` — this caller's session binding, falling back
|
|
48
|
+
* to `.peaks/_runtime/session.json` when no caller binding is resolvable
|
|
49
|
+
* 4. Error (NO_ACTIVE_SESSION) — must never silently fall back to a random uuid
|
|
50
|
+
*
|
|
51
|
+
* When `jobId` is passed and it is absent from the resolved session, the thrown
|
|
52
|
+
* error names the session that does hold it (if any), instead of leaving the
|
|
53
|
+
* caller with a bare "no state for <job> at <other-sid>" path.
|
|
54
|
+
*/
|
|
55
|
+
export function resolveJobStateRoot(opts, jobId) {
|
|
56
|
+
const project = projectRoot(opts);
|
|
57
|
+
const sessionId = opts.sessionId ?? process.env.PEAKS_SESSION_ID ?? getCurrentSessionId(project);
|
|
58
|
+
if (!sessionId) {
|
|
59
|
+
throw new Error('NO_ACTIVE_SESSION: peaks job requires --session-id or an active peaks-code session via peaks workspace init');
|
|
60
|
+
}
|
|
61
|
+
// Sid axis — the sibling of the jobId guard in `JobStateStore.jobDir`. A
|
|
62
|
+
// caller-supplied `--session-id` reaches this join unmodified, so a
|
|
63
|
+
// traversal value lands `job/<id>/state.json` outside every project root
|
|
64
|
+
// while the envelope still reads `ok: true`.
|
|
65
|
+
if (isUnsafePathInput(sessionId)) {
|
|
66
|
+
throw new Error(`Invalid session id: ${sessionId} (must be a single path segment)`);
|
|
67
|
+
}
|
|
68
|
+
const rootDir = join(project, '.peaks', '_runtime', sessionId, 'job');
|
|
69
|
+
if (jobId && !existsSync(join(rootDir, jobId, 'state.json'))) {
|
|
70
|
+
const other = findSessionHoldingJob(project, jobId);
|
|
71
|
+
throw new Error(other
|
|
72
|
+
? `JOB_NOT_IN_SESSION: no job "${jobId}" in session "${sessionId}"; it lives in session "${other}" — re-run with --session-id ${other}`
|
|
73
|
+
: `JOB_NOT_IN_SESSION: no job "${jobId}" in session "${sessionId}" (and no other session under .peaks/_runtime/ has it)`);
|
|
74
|
+
}
|
|
75
|
+
return { rootDir, sessionId, projectRoot: project };
|
|
76
|
+
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
export type GoalComposeOptions = {
|
|
3
|
+
project: string;
|
|
4
|
+
goal: string;
|
|
5
|
+
json?: boolean;
|
|
6
|
+
};
|
|
7
|
+
export type LoopDistillOptions = {
|
|
8
|
+
project: string;
|
|
9
|
+
apply: boolean;
|
|
10
|
+
json?: boolean;
|
|
11
|
+
};
|
|
12
|
+
export type LoopPlaceholderOptions = {
|
|
13
|
+
project: string;
|
|
14
|
+
json?: boolean;
|
|
15
|
+
};
|
|
16
|
+
export type LoopExportOptions = {
|
|
17
|
+
loop: string;
|
|
18
|
+
out: string;
|
|
19
|
+
project?: string;
|
|
20
|
+
json?: boolean;
|
|
21
|
+
};
|
|
22
|
+
export type LoopImportOptions = {
|
|
23
|
+
in: string;
|
|
24
|
+
as?: string;
|
|
25
|
+
project?: string;
|
|
26
|
+
json?: boolean;
|
|
27
|
+
};
|
|
28
|
+
/** `--project`, else the nearest project root above cwd, else cwd. */
|
|
29
|
+
export declare function resolveLoopProjectRoot(project: string | undefined): string;
|
|
30
|
+
/** `--project` + `--json`, the option chain `loop export` and `loop import` share. */
|
|
31
|
+
export declare const LOOP_EXPORT_IMPORT_OPTS: (cmd: Command) => Command;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
// src/cli/commands/loop-command-shared.ts
|
|
2
|
+
//
|
|
3
|
+
// What the `peaks loop` verbs share: the option types, the `--project` /
|
|
4
|
+
// `--json` chain `export` and `import` both declare, and the project-root
|
|
5
|
+
// resolution. Split out of `loop-commands.ts` so the bundle verbs can live in
|
|
6
|
+
// their own modules without repeating the same eight-line construction.
|
|
7
|
+
import { findProjectRoot } from '../../services/config/config-safety.js';
|
|
8
|
+
/** `--project`, else the nearest project root above cwd, else cwd. */
|
|
9
|
+
export function resolveLoopProjectRoot(project) {
|
|
10
|
+
return project ?? findProjectRoot(process.cwd()) ?? process.cwd();
|
|
11
|
+
}
|
|
12
|
+
/** `--project` + `--json`, the option chain `loop export` and `loop import` share. */
|
|
13
|
+
export const LOOP_EXPORT_IMPORT_OPTS = (cmd) => cmd
|
|
14
|
+
.option('--project <path>', 'target project root (defaults to cwd)')
|
|
15
|
+
.option('--json', 'print machine-readable JSON envelope');
|
|
@@ -1,26 +1,21 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* peaks loop * CLI (Slice #14 + M7 add).
|
|
3
3
|
*
|
|
4
|
-
* Slices:
|
|
5
4
|
* #14 sub-features (L4 Agent Loop integration): distill / preflight /
|
|
6
|
-
* detect-pattern / check-consistency
|
|
5
|
+
* detect-pattern / check-consistency, plus `peaks goal compose`.
|
|
7
6
|
*
|
|
8
|
-
* M7 (2026-07-07 spec §7A.2):
|
|
9
|
-
* peaks loop
|
|
10
|
-
*
|
|
7
|
+
* M7 (2026-07-07 spec §7A.2): `peaks loop export --loop <id> --out <p.tar.gz>`
|
|
8
|
+
* and `peaks loop import --in <p.tar.gz> [--as <loop-id>]`. `export` reads
|
|
9
|
+
* the loop_release + relations + bees + evidence briefs and hard-blocks on
|
|
10
|
+
* `shareable=false`; `import` validates `format_version_major=1` and lands
|
|
11
|
+
* the release as `candidate` (spec §7A.2) — the receiver must run an
|
|
12
|
+
* independent evaluation before promoting to `stable`. M7 only ADDs these
|
|
13
|
+
* two verbs; the existing 14.x surface is not modified.
|
|
11
14
|
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
16
|
-
* `peaks loop import` extracts a bundle, validates
|
|
17
|
-
* format_version_major=1, and lands the release as `candidate`
|
|
18
|
-
* (mandatory landing status per spec §7A.2). The receiver must run
|
|
19
|
-
* an independent evaluation before promoting to `stable`.
|
|
20
|
-
*
|
|
21
|
-
* The existing 14.x commands are kept under the same `loop` parent;
|
|
22
|
-
* M7 only ADDs export / import — it does not modify the existing
|
|
23
|
-
* surface.
|
|
15
|
+
* This module owns the `loop` parent, the registrar order, and `distill` — the
|
|
16
|
+
* one verb that spawns a child process, kept here so the `node:child_process`
|
|
17
|
+
* import stays on the module `tests/unit/spawn-windows-hide-guard.test.ts`
|
|
18
|
+
* pins it to. Every other verb lives beside this file, one module per verb.
|
|
24
19
|
*/
|
|
25
20
|
import type { Command } from 'commander';
|
|
26
21
|
import { type ProgramIO } from '../cli-helpers.js';
|