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,171 +1,31 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
import {
|
|
1
|
+
// src/cli/commands/statusline-commands.ts
|
|
2
|
+
//
|
|
3
|
+
// `peaks statusline` and its subcommands. The option chains are declared here —
|
|
4
|
+
// this is the file `tests/unit/cli/ide-option-help-lists-the-registry.test.ts`
|
|
5
|
+
// scans for `--ide` declarations — and the verb bodies live beside it, one
|
|
6
|
+
// module per verb, over the stdin seam and the scope/IDE resolution in
|
|
7
|
+
// `statusline-command-shared.ts`.
|
|
8
|
+
import { addJsonOption } from '../cli-helpers.js';
|
|
9
9
|
import { resolveIdeOptionHelp } from '../../services/ide/ide-registry.js';
|
|
10
|
-
import {
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
|
|
10
|
+
import { runDefaultStatuslineRender } from './statusline-render-command.js';
|
|
11
|
+
import { runStatuslineInstall } from './statusline-install-command.js';
|
|
12
|
+
import { runStatuslineUninstall } from './statusline-uninstall-command.js';
|
|
13
|
+
import { runStatuslineStatus } from './statusline-status-command.js';
|
|
14
|
+
import { runStatuslineCompact } from './statusline-compact-command.js';
|
|
14
15
|
/**
|
|
15
|
-
*
|
|
16
|
+
* The bare `peaks statusline` invocation plus the hidden `render` subcommand.
|
|
17
|
+
* This pattern is required by commander 12.x: when a command has both an
|
|
18
|
+
* action AND subcommands, commander's option parser conflates the parent's
|
|
19
|
+
* options with the subcommand's and drops flags. Routing through a subcommand
|
|
20
|
+
* (even one that's hidden) avoids the option-shadowing bug.
|
|
16
21
|
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
19
|
-
* carries the harness's own context numbers, and a test that cannot supply one
|
|
20
|
-
* cannot verify the capture at all.
|
|
21
|
-
*
|
|
22
|
-
* WHY THIS SEAM IS ACCEPTABLE ON A DIFFERENT ARGUMENT (repair cycle 3). The
|
|
23
|
-
* precedent does not transfer by itself: `PEAKS_HOOK_STDIN` is defended in
|
|
24
|
-
* `.peaks/memory/peaks-hook-stdin-test-seam-pattern.md` because its payload
|
|
25
|
-
* still routes through the `enforceBashCommand` SOP gate. This payload is
|
|
26
|
-
* routed through no gate — it is PERSISTED verbatim as the record the witness
|
|
27
|
-
* guard then reads. So the compensating control is different, not absent: the
|
|
28
|
-
* record is observation-only and one-way. It reaches only `data` and the
|
|
29
|
-
* `warnings` / `nextActions` arrays of `peaks code context-now`; the compact
|
|
30
|
-
* `action` there is computed from `probe.ratio` alone, before and independently
|
|
31
|
-
* of the witness. A forged payload can therefore make the instrument lie —
|
|
32
|
-
* measured: a hand-written record yields a confident false `agree`, or a
|
|
33
|
-
* self-contradictory false `disagree` — and can do nothing else. What it cannot
|
|
34
|
-
* do is fire, block or delay a compact. Unconditional rather than NODE_ENV-
|
|
35
|
-
* gated, for the reason already recorded for the sibling seam.
|
|
22
|
+
* Without the default action, commander falls back to printing usage (Bug-02,
|
|
23
|
+
* ice-cola surface check 2026-07-22).
|
|
36
24
|
*/
|
|
37
|
-
function
|
|
38
|
-
const override = process.env['PEAKS_STATUSLINE_STDIN'];
|
|
39
|
-
if (override !== undefined) {
|
|
40
|
-
return Promise.resolve(override);
|
|
41
|
-
}
|
|
42
|
-
return new Promise((resolve) => {
|
|
43
|
-
if (process.stdin.isTTY) {
|
|
44
|
-
resolve('');
|
|
45
|
-
return;
|
|
46
|
-
}
|
|
47
|
-
let data = '';
|
|
48
|
-
let settled = false;
|
|
49
|
-
const finish = () => {
|
|
50
|
-
if (settled)
|
|
51
|
-
return;
|
|
52
|
-
settled = true;
|
|
53
|
-
resolve(data);
|
|
54
|
-
};
|
|
55
|
-
const timer = setTimeout(finish, STDIN_READ_TIMEOUT_MS);
|
|
56
|
-
timer.unref?.();
|
|
57
|
-
process.stdin.setEncoding('utf8');
|
|
58
|
-
process.stdin.on('data', (chunk) => {
|
|
59
|
-
data += chunk;
|
|
60
|
-
});
|
|
61
|
-
process.stdin.on('end', () => {
|
|
62
|
-
clearTimeout(timer);
|
|
63
|
-
finish();
|
|
64
|
-
});
|
|
65
|
-
process.stdin.on('error', () => {
|
|
66
|
-
clearTimeout(timer);
|
|
67
|
-
finish();
|
|
68
|
-
});
|
|
69
|
-
});
|
|
70
|
-
}
|
|
71
|
-
function resolveScope(options) {
|
|
72
|
-
return options.global ? 'global' : 'project';
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Resolve the IDE the install should target. The CLI user can override with
|
|
76
|
-
* `--ide <id>`. Otherwise we delegate to `detectIdeFromContext` which checks
|
|
77
|
-
* `process.env[adapter.envVar]` → stdin shape → cwd `.trae`/`.claude` →
|
|
78
|
-
* fallback `'claude-code'`. Pass `parsedStdin: null` since `peaks statusline
|
|
79
|
-
* install` is not invoked from inside an IDE hook — there's no stdin payload.
|
|
80
|
-
*/
|
|
81
|
-
function resolveIdeForCommand(options, projectRoot) {
|
|
82
|
-
if (options.ide !== undefined && options.ide.length > 0) {
|
|
83
|
-
return options.ide;
|
|
84
|
-
}
|
|
85
|
-
return detectIdeFromContext({
|
|
86
|
-
env: process.env,
|
|
87
|
-
cwd: projectRoot ?? process.cwd(),
|
|
88
|
-
parsedStdin: null
|
|
89
|
-
});
|
|
90
|
-
}
|
|
91
|
-
/**
|
|
92
|
-
* Default-statusline render body. Reused by both the top-level default
|
|
93
|
-
* action (Bug-02 dispatch) and the explicit `render` subcommand. Exported
|
|
94
|
-
* so a unit test can exercise the JSON / text output paths without going
|
|
95
|
-
* through commander.
|
|
96
|
-
*
|
|
97
|
-
* Capability resolution is delegated to {@link resolveStatusLineCapability}
|
|
98
|
-
* with only `env` and `isTTY` — the env-driven path is the single first-
|
|
99
|
-
* version source of truth. No CLI flag widens the surface. The model
|
|
100
|
-
* itself is read-only: `buildStatusLineModel` is the sole I/O boundary,
|
|
101
|
-
* and it now also resolves compact state.
|
|
102
|
-
*/
|
|
103
|
-
export async function runDefaultStatuslineRender(options, io) {
|
|
104
|
-
const raw = await readStdin();
|
|
105
|
-
const stdin = parseStatusLineStdin(raw);
|
|
106
|
-
const seeded = options.project
|
|
107
|
-
? { ...(stdin ?? {}), workspace: { current_dir: options.project } }
|
|
108
|
-
: stdin;
|
|
109
|
-
// `Date.now()` for deterministic lifecycle-window checks under full-
|
|
110
|
-
// suite concurrency. The integration test passes a test-time `now`
|
|
111
|
-
// pinned at the moment `seedLifecycle` was called so the completed-
|
|
112
|
-
// expiry window stays in-range regardless of how long the spawned
|
|
113
|
-
// subprocess sat descheduled. Production callers omit the flag.
|
|
114
|
-
const now = options.now !== undefined ? Number(options.now) : Date.now();
|
|
115
|
-
const model = buildStatusLineModel(seeded, now);
|
|
116
|
-
// context numbers from the payload it just piped in. The project root and the
|
|
117
|
-
// canonical session id are taken from the model that was JUST built, so the
|
|
118
|
-
// witness lands under the same session this render already resolved — a second
|
|
119
|
-
// resolution here could disagree with it. Never throws; never changes the
|
|
120
|
-
// rendered line.
|
|
121
|
-
writeHarnessWitness({
|
|
122
|
-
projectRoot: model.projectRoot,
|
|
123
|
-
sessionId: model.sessionId,
|
|
124
|
-
stdin,
|
|
125
|
-
nowMs: now
|
|
126
|
-
});
|
|
127
|
-
const capability = resolveStatusLineCapability({
|
|
128
|
-
env: process.env,
|
|
129
|
-
isTTY: Boolean(process.stdout.isTTY)
|
|
130
|
-
});
|
|
131
|
-
const text = renderStatusLine(model, { capability }, process.env);
|
|
132
|
-
if (options.json === true) {
|
|
133
|
-
io.stdout(JSON.stringify({ ok: true, command: 'statusline.render', data: { text } }, null, 2));
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
io.stdout(text);
|
|
137
|
-
}
|
|
138
|
-
export function registerStatusLineCommands(program, io) {
|
|
139
|
-
// Top-level `peaks statusline` — register as a group with subcommands
|
|
140
|
-
// (install | uninstall | status). When the user runs `peaks statusline` with
|
|
141
|
-
// no subcommand, commander falls back to a hidden render subcommand so the
|
|
142
|
-
// status line still renders. This pattern is required by commander 12.x:
|
|
143
|
-
// when a command has both an action AND subcommands, commander's option
|
|
144
|
-
// parser conflates the parent's options with the subcommand's and drops
|
|
145
|
-
// flags. Routing through a subcommand (even one that's hidden) avoids the
|
|
146
|
-
// option-shadowing bug.
|
|
147
|
-
const statusline = addJsonOption(program
|
|
148
|
-
.command('statusline')
|
|
149
|
-
.description('Render the Peaks skill status line for the current session, or manage the adapter-driven statusLine entry. Run with no subcommand to render; with a subcommand (install | uninstall | status) to manage.')
|
|
150
|
-
.option('--project <path>', 'project root path (used to label the status line when stdin is absent; applies to the default render path)')
|
|
151
|
-
.option('--now <ms>', 'override current time (epoch ms) — for testing / deterministic rendering of the lifecycle expiry window'));
|
|
152
|
-
// Default behavior: when the user types `peaks statusline` with no
|
|
153
|
-
// subcommand, render the status line. Without this default action,
|
|
154
|
-
// commander falls back to printing usage (Bug-02, ice-cola surface check
|
|
155
|
-
// 2026-07-22). The hidden `render` subcommand is preserved so callers
|
|
156
|
-
// can still invoke it explicitly.
|
|
157
|
-
//
|
|
158
|
-
// Note (commander 12.x): when both a top-level `.action(...)` and
|
|
159
|
-
// subcommands exist, commander's option parser can conflate parent and
|
|
160
|
-
// child flags. We therefore parse `process.argv` for the bare `statusline`
|
|
161
|
-
// invocation here, and otherwise let the subcommand machinery handle the
|
|
162
|
-
// rest. The implementation is wrapped in `peekDefaultStatuslineRender` so
|
|
163
|
-
// it can be exercised in isolation by unit tests.
|
|
25
|
+
function registerRenderVerbs(statusline, io) {
|
|
164
26
|
statusline.action(async (_parentOptions, command) => {
|
|
165
27
|
await runDefaultStatuslineRender(command.opts(), io);
|
|
166
28
|
});
|
|
167
|
-
// Hidden render subcommand. Preserved for callers that want to invoke
|
|
168
|
-
// render explicitly without going through the default-action dispatch.
|
|
169
29
|
statusline
|
|
170
30
|
.command('render', { hidden: true })
|
|
171
31
|
.description('Render the Peaks skill status line for the current session (reads session JSON on stdin; honors --project for the project label).')
|
|
@@ -173,6 +33,8 @@ export function registerStatusLineCommands(program, io) {
|
|
|
173
33
|
.action(async (options) => {
|
|
174
34
|
await runDefaultStatuslineRender(options, io);
|
|
175
35
|
});
|
|
36
|
+
}
|
|
37
|
+
function registerInstallVerb(statusline, io) {
|
|
176
38
|
addJsonOption(statusline
|
|
177
39
|
.command('install')
|
|
178
40
|
.description("Install the Peaks status line into the adapter's settings.json (project scope by default).")
|
|
@@ -180,97 +42,25 @@ export function registerStatusLineCommands(program, io) {
|
|
|
180
42
|
.option('--project <path>', 'project root path (auto-detected from cwd when omitted)')
|
|
181
43
|
.option('--ide <id>', resolveIdeOptionHelp())
|
|
182
44
|
.option('--force', 'overwrite an existing non-Peaks statusLine entry')
|
|
183
|
-
.option('--dry-run', 'show what would change without writing')).action((options) =>
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
? (options.project ?? findProjectRoot(process.cwd()) ?? process.cwd())
|
|
187
|
-
: undefined;
|
|
188
|
-
const ide = resolveIdeForCommand(options, projectRoot);
|
|
189
|
-
try {
|
|
190
|
-
if (options.dryRun) {
|
|
191
|
-
const plan = planStatusLineInstall(scope, projectRoot, { ide });
|
|
192
|
-
const warnings = plan.conflict
|
|
193
|
-
? [
|
|
194
|
-
`An existing statusLine command is set: ${plan.conflictCommand}. Rerun with --force to overwrite.`
|
|
195
|
-
]
|
|
196
|
-
: [];
|
|
197
|
-
printResult(io, ok('statusline.install', { ...plan, ide, applied: false, dryRun: true }, warnings), options.json);
|
|
198
|
-
return;
|
|
199
|
-
}
|
|
200
|
-
const result = applyStatusLineInstall(scope, projectRoot, {
|
|
201
|
-
force: options.force === true,
|
|
202
|
-
ide
|
|
203
|
-
});
|
|
204
|
-
const warnings = result.conflict && !result.applied
|
|
205
|
-
? [
|
|
206
|
-
`An existing statusLine command is set: ${result.conflictCommand}. Rerun with --force to overwrite.`
|
|
207
|
-
]
|
|
208
|
-
: [];
|
|
209
|
-
const nextActions = result.applied
|
|
210
|
-
? ['Restart the IDE (or reload the workspace) so the status line takes effect']
|
|
211
|
-
: [];
|
|
212
|
-
printResult(io, ok('statusline.install', { ...result, ide, dryRun: false }, warnings, nextActions), options.json);
|
|
213
|
-
}
|
|
214
|
-
catch (error) {
|
|
215
|
-
const message = getErrorMessage(error);
|
|
216
|
-
printResult(io, fail('statusline.install', 'STATUSLINE_INSTALL_FAILED', message, { scope, ide, applied: false }, [message]), options.json);
|
|
217
|
-
process.exitCode = 1;
|
|
218
|
-
}
|
|
219
|
-
});
|
|
45
|
+
.option('--dry-run', 'show what would change without writing')).action((options) => runStatuslineInstall(io, options));
|
|
46
|
+
}
|
|
47
|
+
function registerUninstallVerb(statusline, io) {
|
|
220
48
|
addJsonOption(statusline
|
|
221
49
|
.command('uninstall')
|
|
222
50
|
.description("Remove the Peaks status line from the adapter's settings.json.")
|
|
223
51
|
.option('--global', 'remove from the user-level ~/.claude/settings.json instead of the project')
|
|
224
52
|
.option('--project <path>', 'project root path (auto-detected from cwd when omitted)')
|
|
225
|
-
.option('--ide <id>', resolveIdeOptionHelp())).action((options) =>
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
? (options.project ?? findProjectRoot(process.cwd()) ?? process.cwd())
|
|
229
|
-
: undefined;
|
|
230
|
-
const ide = resolveIdeForCommand(options, projectRoot);
|
|
231
|
-
try {
|
|
232
|
-
const result = removeStatusLineInstall(scope, projectRoot, { ide });
|
|
233
|
-
printResult(io, ok('statusline.uninstall', { ...result, ide }), options.json);
|
|
234
|
-
}
|
|
235
|
-
catch (error) {
|
|
236
|
-
const message = getErrorMessage(error);
|
|
237
|
-
printResult(io, fail('statusline.uninstall', 'STATUSLINE_UNINSTALL_FAILED', message, { scope, ide, removed: false }, [message]), options.json);
|
|
238
|
-
process.exitCode = 1;
|
|
239
|
-
}
|
|
240
|
-
});
|
|
53
|
+
.option('--ide <id>', resolveIdeOptionHelp())).action((options) => runStatuslineUninstall(io, options));
|
|
54
|
+
}
|
|
55
|
+
function registerStatusVerb(statusline, io) {
|
|
241
56
|
addJsonOption(statusline
|
|
242
57
|
.command('status')
|
|
243
58
|
.description('Report whether the Peaks status line is installed in the adapter settings.json.')
|
|
244
59
|
.option('--global', 'inspect the user-level ~/.claude/settings.json instead of the project')
|
|
245
60
|
.option('--project <path>', 'project root path (auto-detected from cwd when omitted)')
|
|
246
|
-
.option('--ide <id>', resolveIdeOptionHelp())).action((options) =>
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
? (options.project ?? findProjectRoot(process.cwd()) ?? process.cwd())
|
|
250
|
-
: undefined;
|
|
251
|
-
const ide = resolveIdeForCommand(options, projectRoot);
|
|
252
|
-
try {
|
|
253
|
-
const status = readSettingsStatus(scope, projectRoot, { ide });
|
|
254
|
-
printResult(io, ok('statusline.status', { ...status, ide, command: 'peaks statusline' }), options.json);
|
|
255
|
-
}
|
|
256
|
-
catch (error) {
|
|
257
|
-
const message = getErrorMessage(error);
|
|
258
|
-
printResult(io, fail('statusline.status', 'STATUSLINE_STATUS_FAILED', message, { scope, ide }, [message]), options.json);
|
|
259
|
-
process.exitCode = 1;
|
|
260
|
-
}
|
|
261
|
-
});
|
|
262
|
-
//
|
|
263
|
-
// --session-id contract: this flag is registered on the compact
|
|
264
|
-
// subcommand but NOT on the default `peaks statusline` render path.
|
|
265
|
-
// The flag is the internal-supported surface for the QA / LLM layer
|
|
266
|
-
// (the integration test, the QA criteria, and any future
|
|
267
|
-
// peaks-loop-internal tool that wants to read a non-canonical session's
|
|
268
|
-
// compact state). The IDE consumer (Claude Code) does NOT need this
|
|
269
|
-
// flag — its primary-line path binds to the canonical session via
|
|
270
|
-
// `getSessionIdCanonical(projectRoot)`. Documenting both paths here
|
|
271
|
-
// keeps the surface small and consistent: the compact subcommand is
|
|
272
|
-
// the "I have a specific session id in mind" surface; the default
|
|
273
|
-
// render is the "use the canonical binding" surface.
|
|
61
|
+
.option('--ide <id>', resolveIdeOptionHelp())).action((options) => runStatuslineStatus(io, options));
|
|
62
|
+
}
|
|
63
|
+
function registerCompactVerb(statusline, io) {
|
|
274
64
|
addJsonOption(statusline
|
|
275
65
|
.command('compact')
|
|
276
66
|
.description('Render the single-line auto-compact indicator the LLM embeds ' +
|
|
@@ -281,49 +71,20 @@ export function registerStatusLineCommands(program, io) {
|
|
|
281
71
|
'--session-id to target a non-canonical session explicitly.')
|
|
282
72
|
.option('--project <path>', 'project root (auto-detected from cwd when omitted)')
|
|
283
73
|
.option('--session-id <sid>', 'override the active session id (defaults to the canonical binding; supported for QA / internal tooling)')
|
|
284
|
-
.option('--now <ms>', 'override current time (epoch ms) — for testing / deterministic rendering of the lifecycle expiry window')
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
};
|
|
298
|
-
try {
|
|
299
|
-
const projectRoot = merged.project !== undefined
|
|
300
|
-
? merged.project
|
|
301
|
-
: (findProjectRoot(process.cwd()) ?? process.cwd());
|
|
302
|
-
const sid = merged.sessionId ?? getSessionIdCanonical(projectRoot) ?? null;
|
|
303
|
-
// when present so deterministic lifecycle-window checks stay
|
|
304
|
-
// in-range under full-suite concurrency. See `--now` doc on
|
|
305
|
-
// the parent `statusline` command.
|
|
306
|
-
const now = merged.now !== undefined ? Number(merged.now) : Date.now();
|
|
307
|
-
const state = decideCompactStatusline({
|
|
308
|
-
projectRoot,
|
|
309
|
-
sessionId: sid,
|
|
310
|
-
now
|
|
311
|
-
});
|
|
312
|
-
const label = renderCompactStatusline(state);
|
|
313
|
-
// For non-JSON mode we print the LABEL DIRECTLY to stdout
|
|
314
|
-
// (no envelope wrapping) because the consumer is the IDE
|
|
315
|
-
// statusline, not a peaks-Loop caller.
|
|
316
|
-
if (merged.json === true) {
|
|
317
|
-
printResult(io, ok('statusline.compact', { label, state }), merged.json);
|
|
318
|
-
}
|
|
319
|
-
else {
|
|
320
|
-
process.stdout.write(`${label}\n`);
|
|
321
|
-
}
|
|
322
|
-
}
|
|
323
|
-
catch (error) {
|
|
324
|
-
const message = getErrorMessage(error);
|
|
325
|
-
printResult(io, fail('statusline.compact', 'STATUSLINE_COMPACT_FAILED', message, {}, [message]), merged.json);
|
|
326
|
-
process.exitCode = 1;
|
|
327
|
-
}
|
|
328
|
-
}));
|
|
74
|
+
.option('--now <ms>', 'override current time (epoch ms) — for testing / deterministic rendering of the lifecycle expiry window')).action((options, command) => runStatuslineCompact(io, options, command));
|
|
75
|
+
}
|
|
76
|
+
export function registerStatusLineCommands(program, io) {
|
|
77
|
+
const statusline = addJsonOption(program
|
|
78
|
+
.command('statusline')
|
|
79
|
+
.description('Render the Peaks skill status line for the current session, or manage the adapter-driven statusLine entry. Run with no subcommand to render; with a subcommand (install | uninstall | status) to manage.')
|
|
80
|
+
.option('--project <path>', 'project root path (used to label the status line when stdin is absent; applies to the default render path)')
|
|
81
|
+
.option('--now <ms>', 'override current time (epoch ms) — for testing / deterministic rendering of the lifecycle expiry window'));
|
|
82
|
+
registerRenderVerbs(statusline, io);
|
|
83
|
+
registerInstallVerb(statusline, io);
|
|
84
|
+
registerUninstallVerb(statusline, io);
|
|
85
|
+
registerStatusVerb(statusline, io);
|
|
86
|
+
registerCompactVerb(statusline, io);
|
|
329
87
|
}
|
|
88
|
+
// Re-export for tests / external consumers: the render body is driven directly
|
|
89
|
+
// by `tests/unit/cli/statusline-witness-capture.test.ts`.
|
|
90
|
+
export { runDefaultStatuslineRender } from './statusline-render-command.js';
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
|
+
import { type ProgramIO } from '../cli-helpers.js';
|
|
3
|
+
import { type CompactOptions } from './statusline-command-shared.js';
|
|
4
|
+
export declare function runStatuslineCompact(io: ProgramIO, options: CompactOptions, command: Command): void;
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
// src/cli/commands/statusline-compact-command.ts
|
|
2
|
+
//
|
|
3
|
+
// `peaks statusline compact` — the single-line auto-compact indicator.
|
|
4
|
+
// Split out of `statusline-commands.ts`; the label, the JSON envelope and the
|
|
5
|
+
// option-merge order are unchanged.
|
|
6
|
+
//
|
|
7
|
+
// --session-id contract: the flag is registered on this subcommand but NOT on
|
|
8
|
+
// the default `peaks statusline` render path. It is the internal-supported
|
|
9
|
+
// surface for the QA / LLM layer (the integration test, the QA criteria, and
|
|
10
|
+
// any future peaks-loop-internal tool that wants to read a non-canonical
|
|
11
|
+
// session's compact state). The IDE consumer (Claude Code) does NOT need it —
|
|
12
|
+
// its primary-line path binds to the canonical session via
|
|
13
|
+
// `getSessionIdCanonical(projectRoot)`. The compact subcommand is the "I have a
|
|
14
|
+
// specific session id in mind" surface; the default render is the "use the
|
|
15
|
+
// canonical binding" surface.
|
|
16
|
+
import { getErrorMessage, printResult } from '../cli-helpers.js';
|
|
17
|
+
import { fail, ok } from 'peaks-loop-shared/result';
|
|
18
|
+
import { decideCompactStatusline, renderCompactStatusline } from '../../services/compact-statusline/compact-statusline-service.js';
|
|
19
|
+
import { getSessionIdCanonical } from '../../services/session/session-manager.js';
|
|
20
|
+
import { resolveProjectRoot } from './statusline-command-shared.js';
|
|
21
|
+
export function runStatuslineCompact(io, options, command) {
|
|
22
|
+
// Re-resolve options via `command.optsWithGlobals()` (Commander 12.x
|
|
23
|
+
// compatibility): when the parent `statusline` command has its own `--json`
|
|
24
|
+
// registered AND the user types `peaks statusline compact --json`,
|
|
25
|
+
// commander's parent-vs-child option parser can land `--json` on the parent
|
|
26
|
+
// scope only. `optsWithGlobals()` merges parent + child options so the JSON
|
|
27
|
+
// branch fires regardless of which scope commander assigned the flag to.
|
|
28
|
+
// Verified by the `compact --json emits the documented envelope` test.
|
|
29
|
+
const merged = { ...options, ...command.optsWithGlobals?.() };
|
|
30
|
+
try {
|
|
31
|
+
const projectRoot = resolveProjectRoot(merged.project);
|
|
32
|
+
const sid = merged.sessionId ?? getSessionIdCanonical(projectRoot) ?? null;
|
|
33
|
+
// `--now` is passed through when present so deterministic lifecycle-window
|
|
34
|
+
// checks stay in-range under full-suite concurrency. See `--now` doc on the
|
|
35
|
+
// parent `statusline` command.
|
|
36
|
+
const now = merged.now !== undefined ? Number(merged.now) : Date.now();
|
|
37
|
+
const state = decideCompactStatusline({ projectRoot, sessionId: sid, now });
|
|
38
|
+
const label = renderCompactStatusline(state);
|
|
39
|
+
// For non-JSON mode we print the LABEL DIRECTLY to stdout (no envelope
|
|
40
|
+
// wrapping) because the consumer is the IDE statusline, not a peaks-Loop
|
|
41
|
+
// caller.
|
|
42
|
+
if (merged.json === true) {
|
|
43
|
+
printResult(io, ok('statusline.compact', { label, state }), merged.json);
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
process.stdout.write(`${label}\n`);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch (error) {
|
|
50
|
+
const message = getErrorMessage(error);
|
|
51
|
+
printResult(io, fail('statusline.compact', 'STATUSLINE_COMPACT_FAILED', message, {}, [message]), merged.json ?? false);
|
|
52
|
+
process.exitCode = 1;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
// src/cli/commands/statusline-install-command.ts
|
|
2
|
+
//
|
|
3
|
+
// `peaks statusline install` — write the statusLine entry into the adapter's
|
|
4
|
+
// settings.json. Split out of `statusline-commands.ts`; the scope resolution,
|
|
5
|
+
// the warnings, the next-action string and the failure envelope are unchanged.
|
|
6
|
+
import { getErrorMessage, printResult } from '../cli-helpers.js';
|
|
7
|
+
import { fail, ok } from 'peaks-loop-shared/result';
|
|
8
|
+
import { applyStatusLineInstall, planStatusLineInstall } from '../../services/skills/statusline-settings-service.js';
|
|
9
|
+
import { resolveIdeForCommand, resolveProjectRoot, resolveScope } from './statusline-command-shared.js';
|
|
10
|
+
function emitInstall(io, options, target) {
|
|
11
|
+
const { scope, projectRoot, ide } = target;
|
|
12
|
+
if (options.dryRun) {
|
|
13
|
+
const plan = planStatusLineInstall(scope, projectRoot, { ide });
|
|
14
|
+
const warnings = plan.conflict
|
|
15
|
+
? [
|
|
16
|
+
`An existing statusLine command is set: ${plan.conflictCommand}. Rerun with --force to overwrite.`
|
|
17
|
+
]
|
|
18
|
+
: [];
|
|
19
|
+
printResult(io, ok('statusline.install', { ...plan, ide, applied: false, dryRun: true }, warnings), options.json ?? false);
|
|
20
|
+
return;
|
|
21
|
+
}
|
|
22
|
+
const result = applyStatusLineInstall(scope, projectRoot, {
|
|
23
|
+
force: options.force === true,
|
|
24
|
+
ide
|
|
25
|
+
});
|
|
26
|
+
const warnings = result.conflict && !result.applied
|
|
27
|
+
? [
|
|
28
|
+
`An existing statusLine command is set: ${result.conflictCommand}. Rerun with --force to overwrite.`
|
|
29
|
+
]
|
|
30
|
+
: [];
|
|
31
|
+
const nextActions = result.applied
|
|
32
|
+
? ['Restart the IDE (or reload the workspace) so the status line takes effect']
|
|
33
|
+
: [];
|
|
34
|
+
printResult(io, ok('statusline.install', { ...result, ide, dryRun: false }, warnings, nextActions), options.json ?? false);
|
|
35
|
+
}
|
|
36
|
+
export function runStatuslineInstall(io, options) {
|
|
37
|
+
const scope = resolveScope(options);
|
|
38
|
+
const projectRoot = scope === 'project' ? resolveProjectRoot(options.project) : undefined;
|
|
39
|
+
const ide = resolveIdeForCommand(options, projectRoot);
|
|
40
|
+
try {
|
|
41
|
+
emitInstall(io, options, { scope, projectRoot, ide });
|
|
42
|
+
}
|
|
43
|
+
catch (error) {
|
|
44
|
+
const message = getErrorMessage(error);
|
|
45
|
+
printResult(io, fail('statusline.install', 'STATUSLINE_INSTALL_FAILED', message, { scope, ide, applied: false }, [message]), options.json ?? false);
|
|
46
|
+
process.exitCode = 1;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import type { ProgramIO } from '../cli-helpers.js';
|
|
2
|
+
import { type RenderOptions } from './statusline-command-shared.js';
|
|
3
|
+
/**
|
|
4
|
+
* Default-statusline render body. Reused by both the top-level default
|
|
5
|
+
* action (Bug-02 dispatch) and the explicit `render` subcommand. Exported
|
|
6
|
+
* so a unit test can exercise the JSON / text output paths without going
|
|
7
|
+
* through commander.
|
|
8
|
+
*/
|
|
9
|
+
export declare function runDefaultStatuslineRender(options: RenderOptions, io: ProgramIO): Promise<void>;
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// src/cli/commands/statusline-render-command.ts
|
|
2
|
+
//
|
|
3
|
+
// The default-statusline render body. Split out of `statusline-commands.ts`;
|
|
4
|
+
// the rendered line, the JSON envelope and the witness write are unchanged.
|
|
5
|
+
//
|
|
6
|
+
// Capability resolution is delegated to `resolveStatusLineCapability` with only
|
|
7
|
+
// `env` and `isTTY` — the env-driven path is the single first-version source of
|
|
8
|
+
// truth. No CLI flag widens the surface. The model itself is read-only:
|
|
9
|
+
// `buildStatusLineModel` is the sole I/O boundary, and it also resolves compact
|
|
10
|
+
// state.
|
|
11
|
+
import { buildStatusLineModel, parseStatusLineStdin } from '../../services/skills/skill-statusline-service.js';
|
|
12
|
+
import { renderStatusLine, resolveStatusLineCapability } from '../../services/skills/skill-statusline-renderer.js';
|
|
13
|
+
import { writeHarnessWitness } from '../../services/context/harness-context-witness.js';
|
|
14
|
+
import { readStdin } from './statusline-command-shared.js';
|
|
15
|
+
/**
|
|
16
|
+
* Default-statusline render body. Reused by both the top-level default
|
|
17
|
+
* action (Bug-02 dispatch) and the explicit `render` subcommand. Exported
|
|
18
|
+
* so a unit test can exercise the JSON / text output paths without going
|
|
19
|
+
* through commander.
|
|
20
|
+
*/
|
|
21
|
+
export async function runDefaultStatuslineRender(options, io) {
|
|
22
|
+
const raw = await readStdin();
|
|
23
|
+
const stdin = parseStatusLineStdin(raw);
|
|
24
|
+
const seeded = options.project
|
|
25
|
+
? { ...(stdin ?? {}), workspace: { current_dir: options.project } }
|
|
26
|
+
: stdin;
|
|
27
|
+
// `Date.now()` for deterministic lifecycle-window checks under full-
|
|
28
|
+
// suite concurrency. The integration test passes a test-time `now`
|
|
29
|
+
// pinned at the moment `seedLifecycle` was called so the completed-
|
|
30
|
+
// expiry window stays in-range regardless of how long the spawned
|
|
31
|
+
// subprocess sat descheduled. Production callers omit the flag.
|
|
32
|
+
const now = options.now !== undefined ? Number(options.now) : Date.now();
|
|
33
|
+
const model = buildStatusLineModel(seeded, now);
|
|
34
|
+
// context numbers from the payload it just piped in. The project root and the
|
|
35
|
+
// canonical session id are taken from the model that was JUST built, so the
|
|
36
|
+
// witness lands under the same session this render already resolved — a second
|
|
37
|
+
// resolution here could disagree with it. Never throws; never changes the
|
|
38
|
+
// rendered line.
|
|
39
|
+
writeHarnessWitness({
|
|
40
|
+
projectRoot: model.projectRoot,
|
|
41
|
+
sessionId: model.sessionId,
|
|
42
|
+
stdin,
|
|
43
|
+
nowMs: now
|
|
44
|
+
});
|
|
45
|
+
const capability = resolveStatusLineCapability({
|
|
46
|
+
env: process.env,
|
|
47
|
+
isTTY: Boolean(process.stdout.isTTY)
|
|
48
|
+
});
|
|
49
|
+
const text = renderStatusLine(model, { capability }, process.env);
|
|
50
|
+
if (options.json === true) {
|
|
51
|
+
io.stdout(JSON.stringify({ ok: true, command: 'statusline.render', data: { text } }, null, 2));
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
io.stdout(text);
|
|
55
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// src/cli/commands/statusline-status-command.ts
|
|
2
|
+
//
|
|
3
|
+
// `peaks statusline status` — report whether the status line is installed.
|
|
4
|
+
// Split out of `statusline-commands.ts`; the scope resolution and both
|
|
5
|
+
// envelopes are unchanged.
|
|
6
|
+
import { getErrorMessage, printResult } from '../cli-helpers.js';
|
|
7
|
+
import { fail, ok } from 'peaks-loop-shared/result';
|
|
8
|
+
import { readHookStatus as readSettingsStatus } from '../../services/skills/hooks-settings-service.js';
|
|
9
|
+
import { resolveIdeForCommand, resolveProjectRoot, resolveScope } from './statusline-command-shared.js';
|
|
10
|
+
export function runStatuslineStatus(io, options) {
|
|
11
|
+
const scope = resolveScope(options);
|
|
12
|
+
const projectRoot = scope === 'project' ? resolveProjectRoot(options.project) : undefined;
|
|
13
|
+
const ide = resolveIdeForCommand(options, projectRoot);
|
|
14
|
+
try {
|
|
15
|
+
const status = readSettingsStatus(scope, projectRoot, { ide });
|
|
16
|
+
printResult(io, ok('statusline.status', { ...status, ide, command: 'peaks statusline' }), options.json ?? false);
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
const message = getErrorMessage(error);
|
|
20
|
+
printResult(io, fail('statusline.status', 'STATUSLINE_STATUS_FAILED', message, { scope, ide }, [message]), options.json ?? false);
|
|
21
|
+
process.exitCode = 1;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
// src/cli/commands/statusline-uninstall-command.ts
|
|
2
|
+
//
|
|
3
|
+
// `peaks statusline uninstall` — remove the statusLine entry from the
|
|
4
|
+
// adapter's settings.json. Split out of `statusline-commands.ts`; the scope
|
|
5
|
+
// resolution and both envelopes are unchanged.
|
|
6
|
+
import { getErrorMessage, printResult } from '../cli-helpers.js';
|
|
7
|
+
import { fail, ok } from 'peaks-loop-shared/result';
|
|
8
|
+
import { removeStatusLineInstall } from '../../services/skills/statusline-settings-service.js';
|
|
9
|
+
import { resolveIdeForCommand, resolveProjectRoot, resolveScope } from './statusline-command-shared.js';
|
|
10
|
+
export function runStatuslineUninstall(io, options) {
|
|
11
|
+
const scope = resolveScope(options);
|
|
12
|
+
const projectRoot = scope === 'project' ? resolveProjectRoot(options.project) : undefined;
|
|
13
|
+
const ide = resolveIdeForCommand(options, projectRoot);
|
|
14
|
+
try {
|
|
15
|
+
const result = removeStatusLineInstall(scope, projectRoot, { ide });
|
|
16
|
+
printResult(io, ok('statusline.uninstall', { ...result, ide }), options.json ?? false);
|
|
17
|
+
}
|
|
18
|
+
catch (error) {
|
|
19
|
+
const message = getErrorMessage(error);
|
|
20
|
+
printResult(io, fail('statusline.uninstall', 'STATUSLINE_UNINSTALL_FAILED', message, { scope, ide, removed: false }, [message]), options.json ?? false);
|
|
21
|
+
process.exitCode = 1;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { type TestFramework } from '../../services/test-cache/test-cache-service.js';
|
|
2
|
+
export type TestOptions = {
|
|
3
|
+
all?: boolean;
|
|
4
|
+
changed?: boolean;
|
|
5
|
+
clearCache?: boolean;
|
|
6
|
+
noCacheResult?: boolean;
|
|
7
|
+
/** Whether the test runner's --cache should be enabled. Commander maps
|
|
8
|
+
* `--no-cache` to `cache = false` (BASE name); default `true`. */
|
|
9
|
+
cache?: boolean;
|
|
10
|
+
passthrough?: boolean;
|
|
11
|
+
framework?: string;
|
|
12
|
+
project?: string;
|
|
13
|
+
json?: boolean;
|
|
14
|
+
};
|
|
15
|
+
/** A refused run, on the stream and in the shape the caller asked for. */
|
|
16
|
+
export declare function emitTestFailure(options: TestOptions, message: string): void;
|
|
17
|
+
/** The `--clear-cache` short circuit. */
|
|
18
|
+
export declare function clearCacheAndReport(options: TestOptions, projectRoot: string): void;
|
|
19
|
+
/** The framework to run, or null after the matching refusal was emitted. */
|
|
20
|
+
export declare function resolveFramework(options: TestOptions, projectRoot: string): TestFramework | null;
|
|
21
|
+
/** Stream the runner's output to the user, then emit the JSON envelope. */
|
|
22
|
+
export declare function reportRunResult(options: TestOptions, framework: TestFramework, argv: string[], result: {
|
|
23
|
+
code: number;
|
|
24
|
+
stdout: string;
|
|
25
|
+
stderr: string;
|
|
26
|
+
notice: string | null;
|
|
27
|
+
}): void;
|