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
|
@@ -1,10 +1,3 @@
|
|
|
1
|
-
import { existsSync } from 'node:fs';
|
|
2
|
-
import { join } from 'node:path';
|
|
3
|
-
import { getSessionMeta, rotateSessionBinding, setSessionTitle, listSessionMetas } from '../../../services/session/session-manager.js';
|
|
4
|
-
import { resolveCanonicalProjectRoot } from '../../../services/config/config-service.js';
|
|
5
|
-
import { findProjectRoot } from '../../../services/config/config-safety.js';
|
|
6
|
-
import { fail, ok } from 'peaks-loop-shared/result';
|
|
7
|
-
import { addJsonOption, getErrorMessage, printResult } from '../../cli-helpers.js';
|
|
8
1
|
// `peaks session checkpoint` and `peaks session resume` subcommands
|
|
9
2
|
// EAGERLY so they appear in `peaks session --help` output. The
|
|
10
3
|
// previous lazy import ran AFTER commander had already produced
|
|
@@ -22,174 +15,20 @@ import { registerSessionMigrateSkillNameCommand } from '../session-migrate-skill
|
|
|
22
15
|
// appear in `peaks session --help` for LLM `<TAB>`-discovery.
|
|
23
16
|
import { registerSession24hModeCommand } from '../session-24h-mode.js';
|
|
24
17
|
import { registerSpillDemoCommand } from '../spill-demo-command.js';
|
|
18
|
+
import { registerSessionInfoCommand } from './session-info-command.js';
|
|
19
|
+
import { registerSessionListCommand, registerSessionRotateCommand, registerSessionTitleCommand } from './session-verb-commands.js';
|
|
25
20
|
export function registerSessionCommand(program, io) {
|
|
26
21
|
const session = program.command('session').description('Manage Peaks session directories');
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
printResult(io, ok('session.list', { sessions: metas, total: metas.length }), options.json);
|
|
31
|
-
});
|
|
32
|
-
addJsonOption(session
|
|
33
|
-
.command('info [sessionId]')
|
|
34
|
-
.description('Show full metadata for a session directory. Pass --active to resolve the canonical binding from .peaks/_runtime/session.json (the "one command a sub-agent runs to find the parent\'s sid" primitive). Slice 021: --active is the SOLE authoritative way to look up the active session id; the on-disk file path is internal and must NOT be `cat`-ed directly.')
|
|
35
|
-
.option('--active', 'resolve the canonical session id from .peaks/_runtime/session.json (ignores [sessionId] when set)')
|
|
36
|
-
.option('--project <path>', 'target project root (defaults to git root or cwd). Slice 021: lets sub-agents skip the cwd heuristic and look up the binding for a specific repo.')
|
|
37
|
-
// overrides the per-process PEAKS_CALLER_ID env var and the
|
|
38
|
-
// PLATFORM_FALLBACKS table (D4 priority). The resolved callerId is
|
|
39
|
-
// surfaced in the JSON envelope so callers can confirm what was
|
|
40
|
-
// resolved without re-deriving it.
|
|
41
|
-
.option('--caller-id <id>', 'Override the caller id for this invocation (D4 priority: flag beats env beats platform fallback). When set, the response envelope includes the resolved callerId.')).action(async (sessionId, options) => {
|
|
42
|
-
// (matches the pre-021 behaviour so the existing slice-020 / slice-007
|
|
43
|
-
// sub-agent flow keeps working unchanged).
|
|
44
|
-
const projectRoot = options.project !== undefined
|
|
45
|
-
? resolveCanonicalProjectRoot(options.project)
|
|
46
|
-
: (findProjectRoot(process.cwd()) ?? process.cwd());
|
|
47
|
-
// We use `resolveCallerId` for D1/D5 validation; an invalid flag
|
|
48
|
-
// throws CallerIdError (D5 → exit 65). A missing flag and no env
|
|
49
|
-
// and no fallback also throws (D2 → exit 64). The resolved id is
|
|
50
|
-
// surfaced in the envelope so the caller can audit.
|
|
51
|
-
if (options.callerId !== undefined) {
|
|
52
|
-
const { resolveCallerId, CallerIdError } = await import('../../../services/session/resolve-caller-id.js');
|
|
53
|
-
let callerId;
|
|
54
|
-
try {
|
|
55
|
-
callerId = resolveCallerId({ flagValue: options.callerId });
|
|
56
|
-
}
|
|
57
|
-
catch (error) {
|
|
58
|
-
if (error instanceof CallerIdError) {
|
|
59
|
-
const code = error.code === 'EX_USAGE' ? 64 : 65;
|
|
60
|
-
printResult(io, fail('session.info', 'CALLER_ID_INVALID', error.message, { source: error.source }, [
|
|
61
|
-
`Set --caller-id to a value matching ^[a-zA-Z0-9._-]{1,200}$`,
|
|
62
|
-
'Or set PEAKS_CALLER_ID env var (or CLAUDE_CODE_SESSION_ID for Claude Code)'
|
|
63
|
-
]), options.json);
|
|
64
|
-
process.exitCode = code;
|
|
65
|
-
return;
|
|
66
|
-
}
|
|
67
|
-
throw error;
|
|
68
|
-
}
|
|
69
|
-
// Surface the resolved id in the envelope. When --active is also
|
|
70
|
-
// passed, look up the binding for this callerId; otherwise
|
|
71
|
-
// just emit the resolved id so the caller knows what was used.
|
|
72
|
-
if (options.active === true) {
|
|
73
|
-
const { getSessionIdCanonical } = await import('../../../services/session/session-manager.js');
|
|
74
|
-
const { getCallerBinding } = await import('../../../services/session/caller-binding-service.js');
|
|
75
|
-
const activeSid = getSessionIdCanonical(projectRoot);
|
|
76
|
-
const callerBinding = getCallerBinding(projectRoot, callerId);
|
|
77
|
-
// reports. Callers / migration tooling can detect pre-migration trees
|
|
78
|
-
// by inspecting `source === 'legacy'`.
|
|
79
|
-
const bindingSource = existsSync(join(projectRoot, '.peaks', '_runtime', 'session.json'))
|
|
80
|
-
? 'canonical'
|
|
81
|
-
: 'legacy';
|
|
82
|
-
printResult(io, ok('session.info', {
|
|
83
|
-
active: true,
|
|
84
|
-
sessionId: activeSid,
|
|
85
|
-
callerId,
|
|
86
|
-
callerBindingPeakSessionId: callerBinding?.peakSessionId ?? null,
|
|
87
|
-
source: bindingSource
|
|
88
|
-
}), options.json);
|
|
89
|
-
return;
|
|
90
|
-
}
|
|
91
|
-
printResult(io, ok('session.info', {
|
|
92
|
-
callerId,
|
|
93
|
-
note: '--caller-id resolved; pass --active to also look up the bound peak session'
|
|
94
|
-
}), options.json);
|
|
95
|
-
return;
|
|
96
|
-
}
|
|
97
|
-
// does not know the parent's sid reads it from the binding via
|
|
98
|
-
// SOLE authoritative discovery primitive: it composes on
|
|
99
|
-
// getSessionIdCanonical (canonicalize-on-read; handles the stored
|
|
100
|
-
// "projectRoot: '.'" vs caller-passed absolute realpath mismatch
|
|
101
|
-
// that the F22 fix addressed) AND falls through to getSessionId
|
|
102
|
-
// (strict-equality) for callers on the original contract. NEITHER
|
|
103
|
-
// path may call ensureSession() — that would side-effect-create a
|
|
104
|
-
// fresh binding on miss, erasing the "no active session" signal
|
|
105
|
-
// sub-agents rely on.
|
|
106
|
-
if (options.active === true) {
|
|
107
|
-
// Import lazily to avoid a cycle with workspace-commands.
|
|
108
|
-
const { getSessionIdCanonical, getSessionId } = await import('../../../services/session/session-manager.js');
|
|
109
|
-
// 1. Canonicalize-on-read first.
|
|
110
|
-
let activeSid = getSessionIdCanonical(projectRoot);
|
|
111
|
-
// 2. Fall through to the strict-equality reader if the canonical
|
|
112
|
-
// miss is a projectRoot-form mismatch (e.g. the binding was
|
|
113
|
-
// written with the absolute realpath but the caller's form
|
|
114
|
-
// normalizes differently). The 2-read fan-out mirrors the
|
|
115
|
-
// fallback ensureSession() uses.
|
|
116
|
-
if (activeSid === null) {
|
|
117
|
-
activeSid = getSessionId(projectRoot);
|
|
118
|
-
}
|
|
119
|
-
if (activeSid === null) {
|
|
120
|
-
// 3. No binding at all — fail loudly, NO crash, NO side-effect,
|
|
121
|
-
// exit 1, message must point at `peaks workspace init`
|
|
122
|
-
// (the canonical "first action" command, not the legacy
|
|
123
|
-
// "or `peaks skill presence:set`" hedge that the pre-021
|
|
124
|
-
// wording used — presence:set would also need a binding to
|
|
125
|
-
// resolve the parent sid, so it's not actually a bootstrap
|
|
126
|
-
// path).
|
|
127
|
-
printResult(io, fail('session.info', 'NO_ACTIVE_SESSION', 'No session bound. Run `peaks workspace init --project <repo> --json` to bind one.', { projectRoot }, [`peaks workspace init --project ${projectRoot} --json`]), options.json);
|
|
128
|
-
process.exitCode = 1;
|
|
129
|
-
return;
|
|
130
|
-
}
|
|
131
|
-
// 4. Determine the on-disk source so callers (and future
|
|
132
|
-
// migration tooling) can detect pre-migration trees. The
|
|
133
|
-
// contract).
|
|
134
|
-
const bindingSource = existsSync(join(projectRoot, '.peaks', '_runtime', 'session.json'))
|
|
135
|
-
? 'canonical'
|
|
136
|
-
: 'legacy';
|
|
137
|
-
// surface a warning so callers (and humans tailing the JSON)
|
|
138
|
-
// see "this tree has not been reconciled to the canonical
|
|
139
|
-
// home yet". The warning is informational; the binding is
|
|
140
|
-
// contract). `warnings` is a top-level envelope field, not a
|
|
141
|
-
// data field, so it goes through ok()'s 3rd positional arg.
|
|
142
|
-
const legacyWarnings = bindingSource === 'legacy'
|
|
143
|
-
? [
|
|
144
|
-
'Read from legacy back-compat path .peaks/.session.json. Run `peaks workspace reconcile --apply` to migrate to the canonical home (.peaks/_runtime/session.json).'
|
|
145
|
-
]
|
|
146
|
-
: [];
|
|
147
|
-
printResult(io, ok('session.info', {
|
|
148
|
-
active: true,
|
|
149
|
-
sessionId: activeSid,
|
|
150
|
-
bindingPath: bindingSource === 'canonical'
|
|
151
|
-
? join(projectRoot, '.peaks', '_runtime', 'session.json')
|
|
152
|
-
: join(projectRoot, '.peaks', '.session.json'),
|
|
153
|
-
projectRoot,
|
|
154
|
-
source: bindingSource
|
|
155
|
-
}, legacyWarnings), options.json);
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
if (sessionId === undefined) {
|
|
159
|
-
printResult(io, fail('session.info', 'SESSION_ID_REQUIRED', 'session.info requires a <sessionId> or --active', {}, ['Pass a <sessionId> argument, or use --active to resolve the canonical binding']), options.json);
|
|
160
|
-
process.exitCode = 1;
|
|
161
|
-
return;
|
|
162
|
-
}
|
|
163
|
-
const meta = getSessionMeta(projectRoot, sessionId);
|
|
164
|
-
if (meta === null) {
|
|
165
|
-
printResult(io, fail('session.info', 'SESSION_NOT_FOUND', `Session "${sessionId}" not found or has no metadata`, { sessionId }, ['Use `peaks session list` to see available sessions']), options.json);
|
|
166
|
-
process.exitCode = 1;
|
|
167
|
-
return;
|
|
168
|
-
}
|
|
169
|
-
printResult(io, ok('session.info', meta), options.json);
|
|
170
|
-
});
|
|
171
|
-
addJsonOption(session
|
|
172
|
-
.command('title <sessionId> <title>')
|
|
173
|
-
.description('Set a human-readable title for a session directory')).action((sessionId, title, options) => {
|
|
174
|
-
const projectRoot = findProjectRoot(process.cwd()) ?? process.cwd();
|
|
175
|
-
try {
|
|
176
|
-
const meta = setSessionTitle(projectRoot, sessionId, title);
|
|
177
|
-
printResult(io, ok('session.title', meta), options.json);
|
|
178
|
-
}
|
|
179
|
-
catch (error) {
|
|
180
|
-
printResult(io, fail('session.title', 'SESSION_TITLE_FAILED', getErrorMessage(error), { sessionId }, [
|
|
181
|
-
'Verify the sessionId exists under .peaks/'
|
|
182
|
-
]), options.json);
|
|
183
|
-
process.exitCode = 1;
|
|
184
|
-
}
|
|
185
|
-
});
|
|
22
|
+
registerSessionListCommand(session, io);
|
|
23
|
+
registerSessionInfoCommand(session, io);
|
|
24
|
+
registerSessionTitleCommand(session, io);
|
|
186
25
|
// Skill-level primitives — the LLM is the decision-maker; CLI is the muscle.
|
|
187
|
-
// via `void (async () => …)`) so
|
|
188
|
-
//
|
|
189
|
-
// `checkpoint` and `resume`. The
|
|
190
|
-
// them on a microtask tick AFTER the
|
|
191
|
-
// had already serialised its output, so they
|
|
192
|
-
// `<TAB>`-discovery and the LLM never saw them.
|
|
26
|
+
// Registered synchronously (rather than via `void (async () => …)`) so
|
|
27
|
+
// commander walks the subcommand tree synchronously and
|
|
28
|
+
// `peaks session --help` includes both `checkpoint` and `resume`. The
|
|
29
|
+
// previous async-IIFE registered them on a microtask tick AFTER the
|
|
30
|
+
// program-level help builder had already serialised its output, so they
|
|
31
|
+
// were hidden from `<TAB>`-discovery and the LLM never saw them.
|
|
193
32
|
registerSessionCheckpointCommand(session, io);
|
|
194
33
|
registerSessionResumeCommand(session, io);
|
|
195
34
|
// Slice 2 of the peaks-code → peaks-code rename plan:
|
|
@@ -200,38 +39,5 @@ export function registerSessionCommand(program, io) {
|
|
|
200
39
|
registerSessionMigrateSkillNameCommand(session);
|
|
201
40
|
registerSession24hModeCommand(session, io);
|
|
202
41
|
registerSpillDemoCommand(session, io);
|
|
203
|
-
|
|
204
|
-
.command('rotate')
|
|
205
|
-
.description('Drop the project-level session binding so the next peaks call auto-generates a fresh session id. The on-disk session directory is left intact — only .peaks/.session.json is removed.')
|
|
206
|
-
.option('--project <path>', 'target project root (defaults to git root or cwd)')
|
|
207
|
-
.option('--reason <text>', 'human-readable reason for the rotation, recorded in the response data')).action((options) => {
|
|
208
|
-
try {
|
|
209
|
-
// Canonicalise the project root before touching the binding.
|
|
210
|
-
// `peaks workspace init` writes the binding with the
|
|
211
|
-
// realpath-resolved projectRoot; if the caller passes a path
|
|
212
|
-
// through a symlink (notably /tmp on macOS, which is a
|
|
213
|
-
// symlink to /private/tmp) without canonicalising here,
|
|
214
|
-
// readSessionFile's strict projectRoot equality check fails
|
|
215
|
-
// and the rotate call reports "no prior binding" even
|
|
216
|
-
// though one exists. The same fix as `workspace init`
|
|
217
|
-
// (b193714): promote the path to the git root, falling back
|
|
218
|
-
// to the heuristic, falling back to cwd verbatim.
|
|
219
|
-
const projectRoot = options.project !== undefined
|
|
220
|
-
? options.project
|
|
221
|
-
: (findProjectRoot(process.cwd()) ?? process.cwd());
|
|
222
|
-
const canonical = resolveCanonicalProjectRoot(projectRoot);
|
|
223
|
-
const previousSessionId = rotateSessionBinding(canonical);
|
|
224
|
-
printResult(io, ok('session.rotate', {
|
|
225
|
-
previousSessionId,
|
|
226
|
-
...(options.reason !== undefined ? { reason: options.reason } : {}),
|
|
227
|
-
note: previousSessionId === null
|
|
228
|
-
? 'No prior binding was present; the project is already unbound.'
|
|
229
|
-
: 'Next ensureSession() call will auto-generate a fresh id. The previous session directory is still on disk at .peaks/_runtime/<previousSessionId>/.'
|
|
230
|
-
}), options.json);
|
|
231
|
-
}
|
|
232
|
-
catch (error) {
|
|
233
|
-
printResult(io, fail('session.rotate', 'SESSION_ROTATE_FAILED', getErrorMessage(error), { projectRoot: options.project }, ['Verify the project path exists and is writable']), options.json);
|
|
234
|
-
process.exitCode = 1;
|
|
235
|
-
}
|
|
236
|
-
});
|
|
42
|
+
registerSessionRotateCommand(session, io);
|
|
237
43
|
}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
import { existsSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
import { getSessionMeta } from '../../../services/session/session-manager.js';
|
|
4
|
+
import { resolveCanonicalProjectRoot } from '../../../services/config/config-service.js';
|
|
5
|
+
import { findProjectRoot } from '../../../services/config/config-safety.js';
|
|
6
|
+
import { fail, ok } from 'peaks-loop-shared/result';
|
|
7
|
+
import { addJsonOption, printResult } from '../../cli-helpers.js';
|
|
8
|
+
/** Exit codes for a rejected `--caller-id`, by the resolver's own errno. */
|
|
9
|
+
const EXIT_USAGE = 64;
|
|
10
|
+
const EXIT_DATAERR = 65;
|
|
11
|
+
/** The advisory that rides every read off the pre-canonical binding dotfile. */
|
|
12
|
+
const LEGACY_WARNING = 'Read from legacy back-compat path .peaks/.session.json. Run `peaks workspace reconcile --apply` to migrate to the canonical home (.peaks/_runtime/session.json).';
|
|
13
|
+
/** `canonical` = `.peaks/_runtime/session.json`; `legacy` = `.peaks/.session.json`. */
|
|
14
|
+
function bindingSourceOf(projectRoot) {
|
|
15
|
+
return existsSync(join(projectRoot, '.peaks', '_runtime', 'session.json'))
|
|
16
|
+
? 'canonical'
|
|
17
|
+
: 'legacy';
|
|
18
|
+
}
|
|
19
|
+
function bindingPathOf(projectRoot, source) {
|
|
20
|
+
return source === 'canonical'
|
|
21
|
+
? join(projectRoot, '.peaks', '_runtime', 'session.json')
|
|
22
|
+
: join(projectRoot, '.peaks', '.session.json');
|
|
23
|
+
}
|
|
24
|
+
/** A `--caller-id` the resolver rejected (D5 → exit 65; EX_USAGE → exit 64). */
|
|
25
|
+
function emitCallerIdInvalid(io, options, error) {
|
|
26
|
+
printResult(io, fail('session.info', 'CALLER_ID_INVALID', error.message, { source: error.source }, [
|
|
27
|
+
`Set --caller-id to a value matching ^[a-zA-Z0-9._-]{1,200}$`,
|
|
28
|
+
'Or set PEAKS_CALLER_ID env var (or CLAUDE_CODE_SESSION_ID for Claude Code)'
|
|
29
|
+
]), options.json);
|
|
30
|
+
process.exitCode = error.code === 'EX_USAGE' ? EXIT_USAGE : EXIT_DATAERR;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* `--caller-id` together with `--active`: look up the binding this callerId
|
|
34
|
+
* holds, so the envelope carries both the resolved id and its peak session.
|
|
35
|
+
*/
|
|
36
|
+
async function emitCallerBinding(io, options, projectRoot, callerId) {
|
|
37
|
+
const { getSessionIdCanonical } = await import('../../../services/session/session-manager.js');
|
|
38
|
+
const { getCallerBinding } = await import('../../../services/session/caller-binding-service.js');
|
|
39
|
+
const callerBinding = getCallerBinding(projectRoot, callerId);
|
|
40
|
+
printResult(io, ok('session.info', {
|
|
41
|
+
active: true,
|
|
42
|
+
sessionId: getSessionIdCanonical(projectRoot),
|
|
43
|
+
callerId,
|
|
44
|
+
callerBindingPeakSessionId: callerBinding?.peakSessionId ?? null,
|
|
45
|
+
source: bindingSourceOf(projectRoot)
|
|
46
|
+
}), options.json);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Resolve `--caller-id` (D1/D5 validation) and report it. An invalid flag
|
|
50
|
+
* throws `CallerIdError`, which is surfaced as `CALLER_ID_INVALID`; anything
|
|
51
|
+
* else propagates.
|
|
52
|
+
*/
|
|
53
|
+
async function emitCallerIdPath(io, options, projectRoot, flagValue) {
|
|
54
|
+
const { resolveCallerId, CallerIdError } = await import('../../../services/session/resolve-caller-id.js');
|
|
55
|
+
let callerId;
|
|
56
|
+
try {
|
|
57
|
+
callerId = resolveCallerId({ flagValue });
|
|
58
|
+
}
|
|
59
|
+
catch (error) {
|
|
60
|
+
if (error instanceof CallerIdError) {
|
|
61
|
+
emitCallerIdInvalid(io, options, error);
|
|
62
|
+
return;
|
|
63
|
+
}
|
|
64
|
+
throw error;
|
|
65
|
+
}
|
|
66
|
+
if (options.active === true) {
|
|
67
|
+
await emitCallerBinding(io, options, projectRoot, callerId);
|
|
68
|
+
return;
|
|
69
|
+
}
|
|
70
|
+
printResult(io, ok('session.info', {
|
|
71
|
+
callerId,
|
|
72
|
+
note: '--caller-id resolved; pass --active to also look up the bound peak session'
|
|
73
|
+
}), options.json);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* `--active` without `--caller-id`: the SOLE authoritative lookup of the
|
|
77
|
+
* active session id — composes on `getSessionIdCanonical`
|
|
78
|
+
* (canonicalize-on-read) and falls through to `getSessionId`
|
|
79
|
+
* (strict-equality) for callers on the original contract. NEITHER path calls
|
|
80
|
+
* `ensureSession()` — that would side-effect-create a fresh binding on miss,
|
|
81
|
+
* erasing the "no active session" signal sub-agents rely on.
|
|
82
|
+
*/
|
|
83
|
+
async function emitActiveBinding(io, options, projectRoot) {
|
|
84
|
+
const { getSessionIdCanonical, getSessionId } = await import('../../../services/session/session-manager.js');
|
|
85
|
+
let activeSid = getSessionIdCanonical(projectRoot);
|
|
86
|
+
if (activeSid === null)
|
|
87
|
+
activeSid = getSessionId(projectRoot);
|
|
88
|
+
if (activeSid === null) {
|
|
89
|
+
printResult(io, fail('session.info', 'NO_ACTIVE_SESSION', 'No session bound. Run `peaks workspace init --project <repo> --json` to bind one.', { projectRoot }, [`peaks workspace init --project ${projectRoot} --json`]), options.json);
|
|
90
|
+
process.exitCode = 1;
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
const source = bindingSourceOf(projectRoot);
|
|
94
|
+
printResult(io, ok('session.info', {
|
|
95
|
+
active: true,
|
|
96
|
+
sessionId: activeSid,
|
|
97
|
+
bindingPath: bindingPathOf(projectRoot, source),
|
|
98
|
+
projectRoot,
|
|
99
|
+
source
|
|
100
|
+
}, source === 'legacy' ? [LEGACY_WARNING] : []), options.json);
|
|
101
|
+
}
|
|
102
|
+
/** Explicit `<sessionId>`: read that session's metadata, or refuse. */
|
|
103
|
+
function emitSessionById(io, sessionId, options, projectRoot) {
|
|
104
|
+
if (sessionId === undefined) {
|
|
105
|
+
printResult(io, fail('session.info', 'SESSION_ID_REQUIRED', 'session.info requires a <sessionId> or --active', {}, ['Pass a <sessionId> argument, or use --active to resolve the canonical binding']), options.json);
|
|
106
|
+
process.exitCode = 1;
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const meta = getSessionMeta(projectRoot, sessionId);
|
|
110
|
+
if (meta === null) {
|
|
111
|
+
printResult(io, fail('session.info', 'SESSION_NOT_FOUND', `Session "${sessionId}" not found or has no metadata`, { sessionId }, ['Use `peaks session list` to see available sessions']), options.json);
|
|
112
|
+
process.exitCode = 1;
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
printResult(io, ok('session.info', meta), options.json);
|
|
116
|
+
}
|
|
117
|
+
async function runSessionInfo(io, sessionId, options) {
|
|
118
|
+
const projectRoot = options.project !== undefined
|
|
119
|
+
? resolveCanonicalProjectRoot(options.project)
|
|
120
|
+
: (findProjectRoot(process.cwd()) ?? process.cwd());
|
|
121
|
+
if (options.callerId !== undefined) {
|
|
122
|
+
await emitCallerIdPath(io, options, projectRoot, options.callerId);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
if (options.active === true) {
|
|
126
|
+
await emitActiveBinding(io, options, projectRoot);
|
|
127
|
+
return;
|
|
128
|
+
}
|
|
129
|
+
emitSessionById(io, sessionId, options, projectRoot);
|
|
130
|
+
}
|
|
131
|
+
export function registerSessionInfoCommand(session, io) {
|
|
132
|
+
addJsonOption(session
|
|
133
|
+
.command('info [sessionId]')
|
|
134
|
+
.description('Show full metadata for a session directory. Pass --active to resolve the canonical binding from .peaks/_runtime/session.json (the "one command a sub-agent runs to find the parent\'s sid" primitive). Slice 021: --active is the SOLE authoritative way to look up the active session id; the on-disk file path is internal and must NOT be `cat`-ed directly.')
|
|
135
|
+
.option('--active', 'resolve the canonical session id from .peaks/_runtime/session.json (ignores [sessionId] when set)')
|
|
136
|
+
.option('--project <path>', 'target project root (defaults to git root or cwd). Slice 021: lets sub-agents skip the cwd heuristic and look up the binding for a specific repo.')
|
|
137
|
+
// overrides the per-process PEAKS_CALLER_ID env var and the
|
|
138
|
+
// PLATFORM_FALLBACKS table (D4 priority). The resolved callerId is
|
|
139
|
+
// surfaced in the JSON envelope so callers can confirm what was
|
|
140
|
+
// resolved without re-deriving it.
|
|
141
|
+
.option('--caller-id <id>', 'Override the caller id for this invocation (D4 priority: flag beats env beats platform fallback). When set, the response envelope includes the resolved callerId.')).action((sessionId, options) => runSessionInfo(io, sessionId, options));
|
|
142
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
import { type ProgramIO } from '../../cli-helpers.js';
|
|
3
|
+
export declare function registerSessionListCommand(session: Command, io: ProgramIO): void;
|
|
4
|
+
export declare function registerSessionTitleCommand(session: Command, io: ProgramIO): void;
|
|
5
|
+
export declare function registerSessionRotateCommand(session: Command, io: ProgramIO): void;
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import { listSessionMetas, rotateSessionBinding, setSessionTitle } from '../../../services/session/session-manager.js';
|
|
2
|
+
import { resolveCanonicalProjectRoot } from '../../../services/config/config-service.js';
|
|
3
|
+
import { findProjectRoot } from '../../../services/config/config-safety.js';
|
|
4
|
+
import { fail, ok } from 'peaks-loop-shared/result';
|
|
5
|
+
import { addJsonOption, getErrorMessage, printResult } from '../../cli-helpers.js';
|
|
6
|
+
export function registerSessionListCommand(session, io) {
|
|
7
|
+
addJsonOption(session.command('list').description('List all session directories with titles and metadata')).action((options) => {
|
|
8
|
+
const projectRoot = findProjectRoot(process.cwd()) ?? process.cwd();
|
|
9
|
+
const metas = listSessionMetas(projectRoot);
|
|
10
|
+
printResult(io, ok('session.list', { sessions: metas, total: metas.length }), options.json);
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
export function registerSessionTitleCommand(session, io) {
|
|
14
|
+
addJsonOption(session
|
|
15
|
+
.command('title <sessionId> <title>')
|
|
16
|
+
.description('Set a human-readable title for a session directory')).action((sessionId, title, options) => {
|
|
17
|
+
const projectRoot = findProjectRoot(process.cwd()) ?? process.cwd();
|
|
18
|
+
try {
|
|
19
|
+
const meta = setSessionTitle(projectRoot, sessionId, title);
|
|
20
|
+
printResult(io, ok('session.title', meta), options.json);
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
printResult(io, fail('session.title', 'SESSION_TITLE_FAILED', getErrorMessage(error), { sessionId }, [
|
|
24
|
+
'Verify the sessionId exists under .peaks/'
|
|
25
|
+
]), options.json);
|
|
26
|
+
process.exitCode = 1;
|
|
27
|
+
}
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
export function registerSessionRotateCommand(session, io) {
|
|
31
|
+
addJsonOption(session
|
|
32
|
+
.command('rotate')
|
|
33
|
+
.description('Drop the project-level session binding so the next peaks call auto-generates a fresh session id. The on-disk session directory is left intact — only .peaks/.session.json is removed.')
|
|
34
|
+
.option('--project <path>', 'target project root (defaults to git root or cwd)')
|
|
35
|
+
.option('--reason <text>', 'human-readable reason for the rotation, recorded in the response data')).action((options) => {
|
|
36
|
+
try {
|
|
37
|
+
// Canonicalise the project root before touching the binding: `peaks
|
|
38
|
+
// workspace init` writes it realpath-resolved, and readSessionFile's
|
|
39
|
+
// strict projectRoot equality check would otherwise miss a path that
|
|
40
|
+
// came through a symlink (notably /tmp on macOS).
|
|
41
|
+
const projectRoot = options.project !== undefined
|
|
42
|
+
? options.project
|
|
43
|
+
: (findProjectRoot(process.cwd()) ?? process.cwd());
|
|
44
|
+
const previousSessionId = rotateSessionBinding(resolveCanonicalProjectRoot(projectRoot));
|
|
45
|
+
printResult(io, ok('session.rotate', {
|
|
46
|
+
previousSessionId,
|
|
47
|
+
...(options.reason !== undefined ? { reason: options.reason } : {}),
|
|
48
|
+
note: previousSessionId === null
|
|
49
|
+
? 'No prior binding was present; the project is already unbound.'
|
|
50
|
+
: 'Next ensureSession() call will auto-generate a fresh id. The previous session directory is still on disk at .peaks/_runtime/<previousSessionId>/.'
|
|
51
|
+
}), options.json);
|
|
52
|
+
}
|
|
53
|
+
catch (error) {
|
|
54
|
+
printResult(io, fail('session.rotate', 'SESSION_ROTATE_FAILED', getErrorMessage(error), { projectRoot: options.project }, ['Verify the project path exists and is writable']), options.json);
|
|
55
|
+
process.exitCode = 1;
|
|
56
|
+
}
|
|
57
|
+
});
|
|
58
|
+
}
|
|
@@ -1,47 +1,4 @@
|
|
|
1
1
|
import type { Command } from 'commander';
|
|
2
|
-
import type { AutoCompactMode } from '../../../services/code/auto-compact-modes.js';
|
|
3
|
-
/**
|
|
4
|
-
* Canonicalize a user-supplied `--project <path>` value.
|
|
5
|
-
*
|
|
6
|
-
* Git Bash on Windows hands us forward-slash paths
|
|
7
|
-
* (`C:/Users/.../peaks-loop`) while `peaks workspace init` writes the
|
|
8
|
-
* backslash form, and either side may carry a trailing separator or
|
|
9
|
-
* differing case. Resolving to the real path here means every
|
|
10
|
-
* downstream consumer (`getSessionId`, `setSessionMeta`,
|
|
11
|
-
* `setSkillPresence`) sees one stable form.
|
|
12
|
-
*
|
|
13
|
-
* Returns the input unchanged when it cannot be resolved (path does
|
|
14
|
-
* not exist yet, or is not readable) so a bad `--project` still
|
|
15
|
-
* reaches the existing error handling rather than throwing here.
|
|
16
|
-
*/
|
|
17
|
-
/**
|
|
18
|
-
* The loop-hygiene verdict attached to every ACTIVE `skill.presence` read.
|
|
19
|
-
*
|
|
20
|
-
* Why it lives here instead of only in a SKILL.md body: the zero-pause
|
|
21
|
-
* contract ("auto-compact is the skill's own action, never the user's")
|
|
22
|
-
* was already written into `peaks-code/SKILL.md`, including an explicit
|
|
23
|
-
* ban on the exact phrasing "prompt the user to run `/compact`" — and it
|
|
24
|
-
* was still violated. A SKILL.md body is loaded once and is then
|
|
25
|
-
* compacted away, so the rule stops governing at precisely the moment
|
|
26
|
-
* context pressure makes it matter. `skill.presence` is the one call
|
|
27
|
-
* EVERY skill makes on EVERY turn, in EVERY consumer project and EVERY
|
|
28
|
-
* mode, so a value carried here cannot be forgotten, and no skill has to
|
|
29
|
-
* be edited for the obligation to reach the model.
|
|
30
|
-
*
|
|
31
|
-
* READ-ONLY by contract. It probes and reports; it never compacts.
|
|
32
|
-
* Executing `peaks code auto-compact` stays the skill's own action — a
|
|
33
|
-
* side effect here would fire on every single turn.
|
|
34
|
-
*
|
|
35
|
-
* Failure swallows to `null`: the hygiene verdict is advisory and must
|
|
36
|
-
* never be able to break the presence read itself.
|
|
37
|
-
*/
|
|
38
|
-
export declare function buildContextVerdict(ratio: number, mode: AutoCompactMode): {
|
|
39
|
-
context: {
|
|
40
|
-
ratioPct: string;
|
|
41
|
-
action: string;
|
|
42
|
-
mode: string;
|
|
43
|
-
};
|
|
44
|
-
nextActions: string[];
|
|
45
|
-
};
|
|
46
2
|
import { type ProgramIO } from '../../cli-helpers.js';
|
|
3
|
+
export { buildContextVerdict } from './skill-context-verdict.js';
|
|
47
4
|
export declare function registerSkillCommand(program: Command, io: ProgramIO): void;
|