peaks-loop 4.1.2 → 4.1.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude-plugin/marketplace.json +136 -47
- package/CHANGELOG.md +112 -0
- package/README-en.md +1 -1
- package/README.md +1 -1
- package/contracts/readonly-argv-whitelist.json +211 -0
- package/dist/cli/commands/asset-command-shared.d.ts +12 -0
- package/dist/cli/commands/asset-command-shared.js +45 -0
- package/dist/cli/commands/asset-commands.d.ts +6 -1
- package/dist/cli/commands/asset-commands.js +11 -372
- package/dist/cli/commands/asset-crystallize-command.d.ts +3 -0
- package/dist/cli/commands/asset-crystallize-command.js +60 -0
- package/dist/cli/commands/asset-crystallize-payload.d.ts +47 -0
- package/dist/cli/commands/asset-crystallize-payload.js +85 -0
- package/dist/cli/commands/asset-crystallize-runner.d.ts +3 -0
- package/dist/cli/commands/asset-crystallize-runner.js +133 -0
- package/dist/cli/commands/asset-dispose-command.d.ts +3 -0
- package/dist/cli/commands/asset-dispose-command.js +99 -0
- package/dist/cli/commands/asset-status-command.d.ts +3 -0
- package/dist/cli/commands/asset-status-command.js +100 -0
- package/dist/cli/commands/audit-artifact-runners.d.ts +16 -0
- package/dist/cli/commands/audit-artifact-runners.js +170 -0
- package/dist/cli/commands/audit-command-shared.d.ts +97 -0
- package/dist/cli/commands/audit-command-shared.js +60 -0
- package/dist/cli/commands/audit-commands.d.ts +7 -31
- package/dist/cli/commands/audit-commands.js +64 -473
- package/dist/cli/commands/audit-goal-runners.d.ts +17 -0
- package/dist/cli/commands/audit-goal-runners.js +114 -0
- package/dist/cli/commands/audit-red-lines-runners.d.ts +11 -0
- package/dist/cli/commands/audit-red-lines-runners.js +43 -0
- package/dist/cli/commands/audit-refusal-data.d.ts +23 -0
- package/dist/cli/commands/audit-refusal-data.js +69 -0
- package/dist/cli/commands/audit-static-runners.d.ts +13 -0
- package/dist/cli/commands/audit-static-runners.js +139 -0
- package/dist/cli/commands/await-runners.d.ts +11 -0
- package/dist/cli/commands/await-runners.js +148 -0
- package/dist/cli/commands/baseline-audit-command.d.ts +3 -0
- package/dist/cli/commands/baseline-audit-command.js +64 -0
- package/dist/cli/commands/baseline-command-shared.d.ts +23 -0
- package/dist/cli/commands/baseline-command-shared.js +39 -0
- package/dist/cli/commands/baseline-commands.js +33 -313
- package/dist/cli/commands/baseline-freeze-commands.d.ts +4 -0
- package/dist/cli/commands/baseline-freeze-commands.js +81 -0
- package/dist/cli/commands/baseline-guard-command.d.ts +3 -0
- package/dist/cli/commands/baseline-guard-command.js +52 -0
- package/dist/cli/commands/baseline-read-commands.d.ts +5 -0
- package/dist/cli/commands/baseline-read-commands.js +72 -0
- package/dist/cli/commands/baseline-rollback-commands.d.ts +4 -0
- package/dist/cli/commands/baseline-rollback-commands.js +88 -0
- package/dist/cli/commands/classify-downgrade-command.d.ts +9 -0
- package/dist/cli/commands/classify-downgrade-command.js +21 -0
- package/dist/cli/commands/classify-run-command.d.ts +9 -0
- package/dist/cli/commands/classify-run-command.js +73 -0
- package/dist/cli/commands/classify-signals.d.ts +5 -0
- package/dist/cli/commands/classify-signals.js +104 -0
- package/dist/cli/commands/code-auto-compact-command.d.ts +3 -0
- package/dist/cli/commands/code-auto-compact-command.js +124 -0
- package/dist/cli/commands/code-auto-compact-envelope.d.ts +22 -0
- package/dist/cli/commands/code-auto-compact-envelope.js +39 -0
- package/dist/cli/commands/code-context-audit-command.d.ts +3 -0
- package/dist/cli/commands/code-context-audit-command.js +68 -0
- package/dist/cli/commands/code-context-now-command.d.ts +3 -0
- package/dist/cli/commands/code-context-now-command.js +124 -0
- package/dist/cli/commands/code-context-now-envelope.d.ts +66 -0
- package/dist/cli/commands/code-context-now-envelope.js +136 -0
- package/dist/cli/commands/code-context-now-mapping.d.ts +27 -0
- package/dist/cli/commands/code-context-now-mapping.js +43 -0
- package/dist/cli/commands/code-emit-handoff-command.d.ts +3 -0
- package/dist/cli/commands/code-emit-handoff-command.js +136 -0
- package/dist/cli/commands/code-gate-step-08-command.d.ts +3 -0
- package/dist/cli/commands/code-gate-step-08-command.js +155 -0
- package/dist/cli/commands/code-post-compact-detect-command.d.ts +3 -0
- package/dist/cli/commands/code-post-compact-detect-command.js +50 -0
- package/dist/cli/commands/code-runtime-commands.d.ts +9 -43
- package/dist/cli/commands/code-runtime-commands.js +20 -672
- package/dist/cli/commands/code-runtime-session.d.ts +1 -0
- package/dist/cli/commands/code-runtime-session.js +15 -0
- package/dist/cli/commands/codegraph-command-options.d.ts +22 -0
- package/dist/cli/commands/codegraph-command-options.js +22 -0
- package/dist/cli/commands/codegraph-commands.d.ts +2 -2
- package/dist/cli/commands/codegraph-commands.js +14 -397
- package/dist/cli/commands/codegraph-config-restore-command.d.ts +3 -0
- package/dist/cli/commands/codegraph-config-restore-command.js +200 -0
- package/dist/cli/commands/codegraph-proxy-commands.d.ts +10 -0
- package/dist/cli/commands/codegraph-proxy-commands.js +159 -0
- package/dist/cli/commands/codegraph-repair-commands.d.ts +3 -0
- package/dist/cli/commands/codegraph-repair-commands.js +94 -0
- package/dist/cli/commands/codegraph-status-command.d.ts +1 -1
- package/dist/cli/commands/codegraph-status-command.js +27 -214
- package/dist/cli/commands/codegraph-status-integrity.d.ts +44 -0
- package/dist/cli/commands/codegraph-status-integrity.js +121 -0
- package/dist/cli/commands/codegraph-status-json.d.ts +5 -0
- package/dist/cli/commands/codegraph-status-json.js +127 -0
- package/dist/cli/commands/compact-command.d.ts +6 -2
- package/dist/cli/commands/compact-command.js +12 -559
- package/dist/cli/commands/compact-dry-run-command.d.ts +3 -0
- package/dist/cli/commands/compact-dry-run-command.js +87 -0
- package/dist/cli/commands/compact-force-command.d.ts +3 -0
- package/dist/cli/commands/compact-force-command.js +98 -0
- package/dist/cli/commands/compact-harness-window-command.d.ts +3 -0
- package/dist/cli/commands/compact-harness-window-command.js +174 -0
- package/dist/cli/commands/compact-history-command.d.ts +3 -0
- package/dist/cli/commands/compact-history-command.js +89 -0
- package/dist/cli/commands/compact-read-commands.d.ts +3 -0
- package/dist/cli/commands/compact-read-commands.js +123 -0
- package/dist/cli/commands/compact-settle-command.d.ts +3 -0
- package/dist/cli/commands/compact-settle-command.js +130 -0
- package/dist/cli/commands/compact-shared.d.ts +9 -0
- package/dist/cli/commands/compact-shared.js +26 -0
- package/dist/cli/commands/container-command-shared.d.ts +60 -0
- package/dist/cli/commands/container-command-shared.js +52 -0
- package/dist/cli/commands/container-commands.d.ts +1 -1
- package/dist/cli/commands/container-commands.js +4 -216
- package/dist/cli/commands/container-release-command.d.ts +3 -0
- package/dist/cli/commands/container-release-command.js +105 -0
- package/dist/cli/commands/container-spawn-command.d.ts +3 -0
- package/dist/cli/commands/container-spawn-command.js +148 -0
- package/dist/cli/commands/context-check-command.d.ts +3 -0
- package/dist/cli/commands/context-check-command.js +81 -0
- package/dist/cli/commands/context-commands.d.ts +2 -7
- package/dist/cli/commands/context-commands.js +6 -276
- package/dist/cli/commands/context-layer-command.d.ts +3 -0
- package/dist/cli/commands/context-layer-command.js +34 -0
- package/dist/cli/commands/context-layer-fetchers.d.ts +15 -0
- package/dist/cli/commands/context-layer-fetchers.js +162 -0
- package/dist/cli/commands/context-status-command.d.ts +17 -0
- package/dist/cli/commands/context-status-command.js +41 -0
- package/dist/cli/commands/contract-write-command.d.ts +3 -0
- package/dist/cli/commands/contract-write-command.js +144 -0
- package/dist/cli/commands/core/doctor-bindings.d.ts +17 -0
- package/dist/cli/commands/core/doctor-bindings.js +30 -0
- package/dist/cli/commands/core/doctor-command.d.ts +4 -18
- package/dist/cli/commands/core/doctor-command.js +2 -323
- package/dist/cli/commands/core/doctor-logs.d.ts +8 -0
- package/dist/cli/commands/core/doctor-logs.js +32 -0
- package/dist/cli/commands/core/doctor-probes.d.ts +3 -0
- package/dist/cli/commands/core/doctor-probes.js +55 -0
- package/dist/cli/commands/core/doctor-run-command.d.ts +12 -0
- package/dist/cli/commands/core/doctor-run-command.js +172 -0
- package/dist/cli/commands/core/doctor-summary.d.ts +7 -0
- package/dist/cli/commands/core/doctor-summary.js +39 -0
- package/dist/cli/commands/core/memory-command-shared.d.ts +25 -0
- package/dist/cli/commands/core/memory-command-shared.js +20 -0
- package/dist/cli/commands/core/memory-command.d.ts +1 -1
- package/dist/cli/commands/core/memory-command.js +6 -227
- package/dist/cli/commands/core/memory-delegated-verbs.d.ts +4 -0
- package/dist/cli/commands/core/memory-delegated-verbs.js +178 -0
- package/dist/cli/commands/core/memory-extract-command.d.ts +3 -0
- package/dist/cli/commands/core/memory-extract-command.js +90 -0
- package/dist/cli/commands/core/memory-sync-command.d.ts +3 -0
- package/dist/cli/commands/core/memory-sync-command.js +38 -0
- package/dist/cli/commands/core/session-command.d.ts +1 -1
- package/dist/cli/commands/core/session-command.js +12 -206
- package/dist/cli/commands/core/session-info-command.d.ts +3 -0
- package/dist/cli/commands/core/session-info-command.js +142 -0
- package/dist/cli/commands/core/session-verb-commands.d.ts +5 -0
- package/dist/cli/commands/core/session-verb-commands.js +58 -0
- package/dist/cli/commands/core/skill-command.d.ts +1 -44
- package/dist/cli/commands/core/skill-command.js +13 -541
- package/dist/cli/commands/core/skill-context-verdict.d.ts +38 -0
- package/dist/cli/commands/core/skill-context-verdict.js +63 -0
- package/dist/cli/commands/core/skill-generated-config-notice.d.ts +41 -0
- package/dist/cli/commands/core/skill-generated-config-notice.js +75 -0
- package/dist/cli/commands/core/skill-heartbeat-commands.d.ts +3 -0
- package/dist/cli/commands/core/skill-heartbeat-commands.js +50 -0
- package/dist/cli/commands/core/skill-presence-commands.d.ts +3 -0
- package/dist/cli/commands/core/skill-presence-commands.js +123 -0
- package/dist/cli/commands/core/skill-presence-housekeeping-commands.d.ts +3 -0
- package/dist/cli/commands/core/skill-presence-housekeeping-commands.js +165 -0
- package/dist/cli/commands/core/skill-registry-commands.d.ts +3 -0
- package/dist/cli/commands/core/skill-registry-commands.js +117 -0
- package/dist/cli/commands/core/skill-runbook-command.d.ts +3 -0
- package/dist/cli/commands/core/skill-runbook-command.js +29 -0
- package/dist/cli/commands/core/standards-command.d.ts +1 -24
- package/dist/cli/commands/core/standards-command.js +33 -201
- package/dist/cli/commands/core/standards-init-command.d.ts +3 -0
- package/dist/cli/commands/core/standards-init-command.js +87 -0
- package/dist/cli/commands/core/standards-lint.d.ts +24 -0
- package/dist/cli/commands/core/standards-lint.js +57 -0
- package/dist/cli/commands/core/standards-migrate-command.d.ts +3 -0
- package/dist/cli/commands/core/standards-migrate-command.js +57 -0
- package/dist/cli/commands/cron-scheduler-commands.d.ts +5 -1
- package/dist/cli/commands/cron-scheduler-commands.js +36 -206
- package/dist/cli/commands/cron-scheduler-run-once-command.d.ts +7 -0
- package/dist/cli/commands/cron-scheduler-run-once-command.js +35 -0
- package/dist/cli/commands/cron-scheduler-shared.d.ts +6 -0
- package/dist/cli/commands/cron-scheduler-shared.js +48 -0
- package/dist/cli/commands/cron-scheduler-start-command.d.ts +7 -0
- package/dist/cli/commands/cron-scheduler-start-command.js +65 -0
- package/dist/cli/commands/cron-scheduler-status-command.d.ts +7 -0
- package/dist/cli/commands/cron-scheduler-status-command.js +46 -0
- package/dist/cli/commands/cron-scheduler-stop-command.d.ts +7 -0
- package/dist/cli/commands/cron-scheduler-stop-command.js +61 -0
- package/dist/cli/commands/dispatch-command-spec.d.ts +2 -0
- package/dist/cli/commands/dispatch-command-spec.js +62 -0
- package/dist/cli/commands/dispatch-commands.js +159 -775
- package/dist/cli/commands/dispatch-dag-envelope.d.ts +41 -0
- package/dist/cli/commands/dispatch-dag-envelope.js +49 -0
- package/dist/cli/commands/dispatch-dag-failure.d.ts +18 -0
- package/dist/cli/commands/dispatch-dag-failure.js +16 -0
- package/dist/cli/commands/dispatch-dag-preflight.d.ts +51 -0
- package/dist/cli/commands/dispatch-dag-preflight.js +105 -0
- package/dist/cli/commands/dispatch-dag-runners.d.ts +48 -0
- package/dist/cli/commands/dispatch-dag-runners.js +73 -0
- package/dist/cli/commands/dispatch-detached-branch.d.ts +3 -0
- package/dist/cli/commands/dispatch-detached-branch.js +58 -0
- package/dist/cli/commands/dispatch-envelope.d.ts +36 -0
- package/dist/cli/commands/dispatch-envelope.js +104 -0
- package/dist/cli/commands/dispatch-from-dag.d.ts +27 -0
- package/dist/cli/commands/dispatch-from-dag.js +87 -257
- package/dist/cli/commands/dispatch-isolation-lease.d.ts +17 -0
- package/dist/cli/commands/dispatch-isolation-lease.js +149 -0
- package/dist/cli/commands/dispatch-preflight.d.ts +7 -0
- package/dist/cli/commands/dispatch-preflight.js +105 -0
- package/dist/cli/commands/dispatch-prompt-blocks.d.ts +10 -0
- package/dist/cli/commands/dispatch-prompt-blocks.js +56 -0
- package/dist/cli/commands/dispatch-prompt-composition.d.ts +30 -0
- package/dist/cli/commands/dispatch-prompt-composition.js +171 -0
- package/dist/cli/commands/dispatch-record-write.d.ts +24 -0
- package/dist/cli/commands/dispatch-record-write.js +96 -0
- package/dist/cli/commands/dispatch-tool-call.d.ts +15 -0
- package/dist/cli/commands/dispatch-tool-call.js +128 -0
- package/dist/cli/commands/evolution-command-shared.d.ts +78 -0
- package/dist/cli/commands/evolution-command-shared.js +107 -0
- package/dist/cli/commands/evolution-commands.d.ts +11 -1
- package/dist/cli/commands/evolution-commands.js +19 -350
- package/dist/cli/commands/evolution-evaluate-command.d.ts +24 -0
- package/dist/cli/commands/evolution-evaluate-command.js +138 -0
- package/dist/cli/commands/evolution-propose-command.d.ts +23 -0
- package/dist/cli/commands/evolution-propose-command.js +145 -0
- package/dist/cli/commands/evolution-status-command.d.ts +17 -0
- package/dist/cli/commands/evolution-status-command.js +41 -0
- package/dist/cli/commands/evolution-verdict-commands.d.ts +30 -0
- package/dist/cli/commands/evolution-verdict-commands.js +100 -0
- package/dist/cli/commands/final-review-command-envelopes.d.ts +44 -0
- package/dist/cli/commands/final-review-command-envelopes.js +100 -0
- package/dist/cli/commands/final-review-command-shared.d.ts +52 -0
- package/dist/cli/commands/final-review-command-shared.js +35 -0
- package/dist/cli/commands/final-review-commands.d.ts +7 -27
- package/dist/cli/commands/final-review-commands.js +13 -240
- package/dist/cli/commands/final-review-prepare-command.d.ts +3 -0
- package/dist/cli/commands/final-review-prepare-command.js +200 -0
- package/dist/cli/commands/finalize-accumulator.d.ts +44 -0
- package/dist/cli/commands/finalize-accumulator.js +55 -0
- package/dist/cli/commands/finalize-branches.d.ts +34 -0
- package/dist/cli/commands/finalize-branches.js +119 -0
- package/dist/cli/commands/finalize-runners.d.ts +3 -0
- package/dist/cli/commands/finalize-runners.js +92 -0
- package/dist/cli/commands/finalize-selection.d.ts +65 -0
- package/dist/cli/commands/finalize-selection.js +35 -0
- package/dist/cli/commands/gate-commands.js +26 -8
- package/dist/cli/commands/governance-classify-contract-commands.d.ts +23 -9
- package/dist/cli/commands/governance-classify-contract-commands.js +26 -269
- package/dist/cli/commands/hooks-command-shared.d.ts +42 -0
- package/dist/cli/commands/hooks-command-shared.js +32 -0
- package/dist/cli/commands/hooks-commands.d.ts +20 -0
- package/dist/cli/commands/hooks-commands.js +75 -309
- package/dist/cli/commands/hooks-install-envelopes.d.ts +6 -0
- package/dist/cli/commands/hooks-install-envelopes.js +144 -0
- package/dist/cli/commands/hooks-status-command.d.ts +3 -0
- package/dist/cli/commands/hooks-status-command.js +93 -0
- package/dist/cli/commands/hooks-uninstall-command.d.ts +3 -0
- package/dist/cli/commands/hooks-uninstall-command.js +43 -0
- package/dist/cli/commands/job-checkpoint-commands.d.ts +3 -0
- package/dist/cli/commands/job-checkpoint-commands.js +157 -0
- package/dist/cli/commands/job-command-shared.d.ts +109 -0
- package/dist/cli/commands/job-command-shared.js +72 -0
- package/dist/cli/commands/job-commands.d.ts +4 -64
- package/dist/cli/commands/job-commands.js +42 -552
- package/dist/cli/commands/job-cost-check-command.d.ts +3 -0
- package/dist/cli/commands/job-cost-check-command.js +41 -0
- package/dist/cli/commands/job-init-status-commands.d.ts +3 -0
- package/dist/cli/commands/job-init-status-commands.js +149 -0
- package/dist/cli/commands/job-run-commands.d.ts +3 -0
- package/dist/cli/commands/job-run-commands.js +97 -0
- package/dist/cli/commands/job-state-root.d.ts +35 -0
- package/dist/cli/commands/job-state-root.js +76 -0
- package/dist/cli/commands/loop-command-shared.d.ts +31 -0
- package/dist/cli/commands/loop-command-shared.js +15 -0
- package/dist/cli/commands/loop-commands.d.ts +12 -17
- package/dist/cli/commands/loop-commands.js +56 -238
- package/dist/cli/commands/loop-eval-capture-index.d.ts +4 -0
- package/dist/cli/commands/loop-eval-capture-index.js +44 -0
- package/dist/cli/commands/loop-eval-commands.d.ts +8 -5
- package/dist/cli/commands/loop-eval-commands.js +12 -626
- package/dist/cli/commands/loop-eval-eval-command.d.ts +3 -0
- package/dist/cli/commands/loop-eval-eval-command.js +168 -0
- package/dist/cli/commands/loop-eval-monotonic-command.d.ts +3 -0
- package/dist/cli/commands/loop-eval-monotonic-command.js +90 -0
- package/dist/cli/commands/loop-eval-parents.d.ts +7 -0
- package/dist/cli/commands/loop-eval-parents.js +20 -0
- package/dist/cli/commands/loop-eval-run-code.d.ts +7 -0
- package/dist/cli/commands/loop-eval-run-code.js +40 -0
- package/dist/cli/commands/loop-eval-run-command.d.ts +3 -0
- package/dist/cli/commands/loop-eval-run-command.js +113 -0
- package/dist/cli/commands/loop-eval-spec-commands.d.ts +3 -0
- package/dist/cli/commands/loop-eval-spec-commands.js +165 -0
- package/dist/cli/commands/loop-eval-spec-lint-command.d.ts +3 -0
- package/dist/cli/commands/loop-eval-spec-lint-command.js +42 -0
- package/dist/cli/commands/loop-eval-workflow-commands.d.ts +3 -0
- package/dist/cli/commands/loop-eval-workflow-commands.js +141 -0
- package/dist/cli/commands/loop-export-command.d.ts +3 -0
- package/dist/cli/commands/loop-export-command.js +73 -0
- package/dist/cli/commands/loop-goal-compose-command.d.ts +3 -0
- package/dist/cli/commands/loop-goal-compose-command.js +36 -0
- package/dist/cli/commands/loop-import-command.d.ts +3 -0
- package/dist/cli/commands/loop-import-command.js +86 -0
- package/dist/cli/commands/loop-placeholder-commands.d.ts +3 -0
- package/dist/cli/commands/loop-placeholder-commands.js +52 -0
- package/dist/cli/commands/mcp-commands.d.ts +10 -0
- package/dist/cli/commands/mcp-commands.js +157 -0
- package/dist/cli/commands/memory-command-shared.d.ts +59 -0
- package/dist/cli/commands/memory-command-shared.js +39 -0
- package/dist/cli/commands/memory-commands.d.ts +6 -79
- package/dist/cli/commands/memory-commands.js +19 -309
- package/dist/cli/commands/memory-ingest-command.d.ts +3 -0
- package/dist/cli/commands/memory-ingest-command.js +50 -0
- package/dist/cli/commands/memory-list-command.d.ts +16 -0
- package/dist/cli/commands/memory-list-command.js +129 -0
- package/dist/cli/commands/memory-reindex-command.d.ts +9 -0
- package/dist/cli/commands/memory-reindex-command.js +78 -0
- package/dist/cli/commands/memory-rotate-command.d.ts +3 -0
- package/dist/cli/commands/memory-rotate-command.js +55 -0
- package/dist/cli/commands/memory-search-command.d.ts +7 -0
- package/dist/cli/commands/memory-search-command.js +46 -0
- package/dist/cli/commands/openspec-archive-command.d.ts +3 -0
- package/dist/cli/commands/openspec-archive-command.js +55 -0
- package/dist/cli/commands/openspec-command-shared.d.ts +62 -0
- package/dist/cli/commands/openspec-command-shared.js +135 -0
- package/dist/cli/commands/openspec-commands.d.ts +1 -1
- package/dist/cli/commands/openspec-commands.js +33 -306
- package/dist/cli/commands/openspec-from-doctor-command.d.ts +3 -0
- package/dist/cli/commands/openspec-from-doctor-command.js +66 -0
- package/dist/cli/commands/openspec-init-command.d.ts +3 -0
- package/dist/cli/commands/openspec-init-command.js +49 -0
- package/dist/cli/commands/openspec-list-command.d.ts +3 -0
- package/dist/cli/commands/openspec-list-command.js +27 -0
- package/dist/cli/commands/openspec-render-command.d.ts +3 -0
- package/dist/cli/commands/openspec-render-command.js +33 -0
- package/dist/cli/commands/openspec-show-command.d.ts +3 -0
- package/dist/cli/commands/openspec-show-command.js +33 -0
- package/dist/cli/commands/openspec-to-rd-command.d.ts +3 -0
- package/dist/cli/commands/openspec-to-rd-command.js +33 -0
- package/dist/cli/commands/openspec-validate-command.d.ts +3 -0
- package/dist/cli/commands/openspec-validate-command.js +45 -0
- package/dist/cli/commands/playwright-browser-command.d.ts +8 -0
- package/dist/cli/commands/playwright-browser-command.js +61 -0
- package/dist/cli/commands/playwright-commands.d.ts +10 -62
- package/dist/cli/commands/playwright-commands.js +77 -400
- package/dist/cli/commands/playwright-envelope.d.ts +8 -0
- package/dist/cli/commands/playwright-envelope.js +29 -0
- package/dist/cli/commands/playwright-ls-stop-commands.d.ts +4 -0
- package/dist/cli/commands/playwright-ls-stop-commands.js +74 -0
- package/dist/cli/commands/playwright-session-store.d.ts +65 -0
- package/dist/cli/commands/playwright-session-store.js +189 -0
- package/dist/cli/commands/project-commands.d.ts +19 -0
- package/dist/cli/commands/project-commands.js +98 -259
- package/dist/cli/commands/project-context-command.d.ts +3 -0
- package/dist/cli/commands/project-context-command.js +44 -0
- package/dist/cli/commands/project-dashboard-command.d.ts +3 -0
- package/dist/cli/commands/project-dashboard-command.js +74 -0
- package/dist/cli/commands/project-knowledge-command.d.ts +3 -0
- package/dist/cli/commands/project-knowledge-command.js +48 -0
- package/dist/cli/commands/project-memories-show-command.d.ts +3 -0
- package/dist/cli/commands/project-memories-show-command.js +87 -0
- package/dist/cli/commands/project-memory-index-command.d.ts +3 -0
- package/dist/cli/commands/project-memory-index-command.js +31 -0
- package/dist/cli/commands/qa-archive-screenshots-command.d.ts +3 -0
- package/dist/cli/commands/qa-archive-screenshots-command.js +53 -0
- package/dist/cli/commands/qa-commands.d.ts +14 -87
- package/dist/cli/commands/qa-commands.js +17 -315
- package/dist/cli/commands/qa-context-prestep.d.ts +1 -0
- package/dist/cli/commands/qa-context-prestep.js +34 -0
- package/dist/cli/commands/qa-run-command.d.ts +3 -0
- package/dist/cli/commands/qa-run-command.js +105 -0
- package/dist/cli/commands/qa-run-options.d.ts +23 -0
- package/dist/cli/commands/qa-run-options.js +31 -0
- package/dist/cli/commands/qa-run-slice.d.ts +41 -0
- package/dist/cli/commands/qa-run-slice.js +145 -0
- package/dist/cli/commands/release-canary-command.d.ts +28 -0
- package/dist/cli/commands/release-canary-command.js +129 -0
- package/dist/cli/commands/release-command-shared.d.ts +13 -0
- package/dist/cli/commands/release-command-shared.js +18 -0
- package/dist/cli/commands/release-commands.d.ts +10 -18
- package/dist/cli/commands/release-commands.js +25 -298
- package/dist/cli/commands/release-done-command.d.ts +3 -0
- package/dist/cli/commands/release-done-command.js +64 -0
- package/dist/cli/commands/release-hotfix-command.d.ts +3 -0
- package/dist/cli/commands/release-hotfix-command.js +50 -0
- package/dist/cli/commands/release-plan-command.d.ts +3 -0
- package/dist/cli/commands/release-plan-command.js +33 -0
- package/dist/cli/commands/release-precheck-command.d.ts +3 -0
- package/dist/cli/commands/release-precheck-command.js +28 -0
- package/dist/cli/commands/release-promote-command.d.ts +3 -0
- package/dist/cli/commands/release-promote-command.js +34 -0
- package/dist/cli/commands/release-rollback-command.d.ts +3 -0
- package/dist/cli/commands/release-rollback-command.js +33 -0
- package/dist/cli/commands/release-watch-command.d.ts +3 -0
- package/dist/cli/commands/release-watch-command.js +44 -0
- package/dist/cli/commands/request-command-options.d.ts +49 -0
- package/dist/cli/commands/request-command-options.js +1 -0
- package/dist/cli/commands/request-commands.d.ts +3 -9
- package/dist/cli/commands/request-commands.js +17 -522
- package/dist/cli/commands/request-init-command.d.ts +3 -0
- package/dist/cli/commands/request-init-command.js +100 -0
- package/dist/cli/commands/request-lint-command.d.ts +3 -0
- package/dist/cli/commands/request-lint-command.js +50 -0
- package/dist/cli/commands/request-list-command.d.ts +10 -0
- package/dist/cli/commands/request-list-command.js +53 -0
- package/dist/cli/commands/request-repair-status-command.d.ts +3 -0
- package/dist/cli/commands/request-repair-status-command.js +61 -0
- package/dist/cli/commands/request-show-command.d.ts +3 -0
- package/dist/cli/commands/request-show-command.js +56 -0
- package/dist/cli/commands/request-transition-command.d.ts +3 -0
- package/dist/cli/commands/request-transition-command.js +122 -0
- package/dist/cli/commands/request-transition-failures.d.ts +8 -0
- package/dist/cli/commands/request-transition-failures.js +90 -0
- package/dist/cli/commands/request-transition-hooks.d.ts +50 -0
- package/dist/cli/commands/request-transition-hooks.js +115 -0
- package/dist/cli/commands/request-transition-preflight.d.ts +10 -0
- package/dist/cli/commands/request-transition-preflight.js +107 -0
- package/dist/cli/commands/scan-command-shared.d.ts +96 -0
- package/dist/cli/commands/scan-command-shared.js +83 -0
- package/dist/cli/commands/scan-commands.d.ts +3 -2
- package/dist/cli/commands/scan-commands.js +23 -463
- package/dist/cli/commands/scan-inventory-commands.d.ts +3 -0
- package/dist/cli/commands/scan-inventory-commands.js +96 -0
- package/dist/cli/commands/scan-project-commands.d.ts +3 -0
- package/dist/cli/commands/scan-project-commands.js +65 -0
- package/dist/cli/commands/scan-scope-commands.d.ts +3 -0
- package/dist/cli/commands/scan-scope-commands.js +149 -0
- package/dist/cli/commands/scan-scope-helpers.d.ts +8 -0
- package/dist/cli/commands/scan-scope-helpers.js +54 -0
- package/dist/cli/commands/scan-structural-commands.d.ts +3 -0
- package/dist/cli/commands/scan-structural-commands.js +113 -0
- package/dist/cli/commands/sediment-argv-flags.d.ts +54 -0
- package/dist/cli/commands/sediment-argv-flags.js +116 -0
- package/dist/cli/commands/sediment-command-shared.d.ts +15 -0
- package/dist/cli/commands/sediment-command-shared.js +5 -0
- package/dist/cli/commands/sediment-commands.d.ts +35 -59
- package/dist/cli/commands/sediment-commands.js +36 -590
- package/dist/cli/commands/sediment-pool-commands.d.ts +9 -0
- package/dist/cli/commands/sediment-pool-commands.js +185 -0
- package/dist/cli/commands/sediment-query-commands.d.ts +4 -0
- package/dist/cli/commands/sediment-query-commands.js +94 -0
- package/dist/cli/commands/sediment-release-commands.d.ts +8 -0
- package/dist/cli/commands/sediment-release-commands.js +232 -0
- package/dist/cli/commands/share-commands.d.ts +12 -68
- package/dist/cli/commands/share-commands.js +47 -556
- package/dist/cli/commands/share-error-hints.d.ts +14 -0
- package/dist/cli/commands/share-error-hints.js +38 -0
- package/dist/cli/commands/share-identity.d.ts +13 -0
- package/dist/cli/commands/share-identity.js +22 -0
- package/dist/cli/commands/share-record-paths.d.ts +37 -0
- package/dist/cli/commands/share-record-paths.js +68 -0
- package/dist/cli/commands/share-runners.d.ts +3 -0
- package/dist/cli/commands/share-runners.js +158 -0
- package/dist/cli/commands/shared-read-runners.d.ts +3 -0
- package/dist/cli/commands/shared-read-runners.js +51 -0
- package/dist/cli/commands/slice-check-command.d.ts +3 -0
- package/dist/cli/commands/slice-check-command.js +54 -0
- package/dist/cli/commands/slice-commands.d.ts +2 -22
- package/dist/cli/commands/slice-commands.js +18 -517
- package/dist/cli/commands/slice-decompose-artifacts.d.ts +18 -0
- package/dist/cli/commands/slice-decompose-artifacts.js +79 -0
- package/dist/cli/commands/slice-decompose-command.d.ts +3 -0
- package/dist/cli/commands/slice-decompose-command.js +123 -0
- package/dist/cli/commands/slice-list-commands.d.ts +3 -0
- package/dist/cli/commands/slice-list-commands.js +182 -0
- package/dist/cli/commands/slice-pick-command.d.ts +3 -0
- package/dist/cli/commands/slice-pick-command.js +60 -0
- package/dist/cli/commands/slice-plan-command.d.ts +24 -0
- package/dist/cli/commands/slice-plan-command.js +111 -0
- package/dist/cli/commands/sop-advance-command.d.ts +3 -0
- package/dist/cli/commands/sop-advance-command.js +160 -0
- package/dist/cli/commands/sop-check-command.d.ts +3 -0
- package/dist/cli/commands/sop-check-command.js +44 -0
- package/dist/cli/commands/sop-command-shared.d.ts +23 -0
- package/dist/cli/commands/sop-command-shared.js +18 -0
- package/dist/cli/commands/sop-commands.d.ts +15 -1
- package/dist/cli/commands/sop-commands.js +26 -240
- package/dist/cli/commands/sop-init-command.d.ts +3 -0
- package/dist/cli/commands/sop-init-command.js +51 -0
- package/dist/cli/commands/sop-lint-command.d.ts +3 -0
- package/dist/cli/commands/sop-lint-command.js +64 -0
- package/dist/cli/commands/sop-register-command.d.ts +3 -0
- package/dist/cli/commands/sop-register-command.js +48 -0
- package/dist/cli/commands/sop-registry-command.d.ts +3 -0
- package/dist/cli/commands/sop-registry-command.js +30 -0
- package/dist/cli/commands/statusline-command-shared.d.ts +73 -0
- package/dist/cli/commands/statusline-command-shared.js +90 -0
- package/dist/cli/commands/statusline-commands.d.ts +1 -19
- package/dist/cli/commands/statusline-commands.js +48 -287
- package/dist/cli/commands/statusline-compact-command.d.ts +4 -0
- package/dist/cli/commands/statusline-compact-command.js +54 -0
- package/dist/cli/commands/statusline-install-command.d.ts +3 -0
- package/dist/cli/commands/statusline-install-command.js +48 -0
- package/dist/cli/commands/statusline-render-command.d.ts +9 -0
- package/dist/cli/commands/statusline-render-command.js +55 -0
- package/dist/cli/commands/statusline-status-command.d.ts +3 -0
- package/dist/cli/commands/statusline-status-command.js +23 -0
- package/dist/cli/commands/statusline-uninstall-command.d.ts +3 -0
- package/dist/cli/commands/statusline-uninstall-command.js +23 -0
- package/dist/cli/commands/test-command-run-helpers.d.ts +27 -0
- package/dist/cli/commands/test-command-run-helpers.js +73 -0
- package/dist/cli/commands/test-command-runner-resolution.d.ts +57 -0
- package/dist/cli/commands/test-command-runner-resolution.js +183 -0
- package/dist/cli/commands/test-commands.d.ts +8 -56
- package/dist/cli/commands/test-commands.js +26 -249
- package/dist/cli/commands/vm-command-shared.d.ts +23 -0
- package/dist/cli/commands/vm-command-shared.js +23 -0
- package/dist/cli/commands/vm-commands.d.ts +1 -28
- package/dist/cli/commands/vm-commands.js +36 -270
- package/dist/cli/commands/vm-hypervisor-runtime.d.ts +15 -0
- package/dist/cli/commands/vm-hypervisor-runtime.js +64 -0
- package/dist/cli/commands/vm-release-command.d.ts +5 -0
- package/dist/cli/commands/vm-release-command.js +101 -0
- package/dist/cli/commands/vm-spawn-command.d.ts +5 -0
- package/dist/cli/commands/vm-spawn-command.js +177 -0
- package/dist/cli/commands/web-command-shared.d.ts +12 -0
- package/dist/cli/commands/web-command-shared.js +30 -0
- package/dist/cli/commands/web-commands.d.ts +7 -14
- package/dist/cli/commands/web-commands.js +6 -314
- package/dist/cli/commands/web-install-command.d.ts +10 -0
- package/dist/cli/commands/web-install-command.js +116 -0
- package/dist/cli/commands/web-lifecycle-commands.d.ts +9 -30
- package/dist/cli/commands/web-lifecycle-commands.js +14 -322
- package/dist/cli/commands/web-login-command.d.ts +14 -0
- package/dist/cli/commands/web-login-command.js +189 -0
- package/dist/cli/commands/web-op-payload.d.ts +22 -0
- package/dist/cli/commands/web-op-payload.js +89 -0
- package/dist/cli/commands/web-op-refusals.d.ts +37 -0
- package/dist/cli/commands/web-op-refusals.js +73 -0
- package/dist/cli/commands/web-op-runner.d.ts +14 -0
- package/dist/cli/commands/web-op-runner.js +166 -0
- package/dist/cli/commands/web-status-command.d.ts +4 -0
- package/dist/cli/commands/web-status-command.js +32 -0
- package/dist/cli/commands/web-stop-command.d.ts +10 -0
- package/dist/cli/commands/web-stop-command.js +59 -0
- package/dist/cli/commands/web-verb-specs.d.ts +18 -0
- package/dist/cli/commands/web-verb-specs.js +66 -0
- package/dist/cli/commands/workflow-command-shared.d.ts +102 -0
- package/dist/cli/commands/workflow-command-shared.js +74 -0
- package/dist/cli/commands/workflow-commands.d.ts +10 -1
- package/dist/cli/commands/workflow-commands.js +6 -594
- package/dist/cli/commands/workflow-gate-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-gate-commands.js +116 -0
- package/dist/cli/commands/workflow-graph-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-graph-commands.js +73 -0
- package/dist/cli/commands/workflow-init-command.d.ts +3 -0
- package/dist/cli/commands/workflow-init-command.js +68 -0
- package/dist/cli/commands/workflow-lifecycle-commands.d.ts +9 -59
- package/dist/cli/commands/workflow-lifecycle-commands.js +14 -348
- package/dist/cli/commands/workflow-node-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-node-commands.js +154 -0
- package/dist/cli/commands/workflow-plan-helpers.d.ts +48 -0
- package/dist/cli/commands/workflow-plan-helpers.js +103 -0
- package/dist/cli/commands/workflow-planning-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-planning-commands.js +56 -0
- package/dist/cli/commands/workflow-swarm-actions.d.ts +7 -0
- package/dist/cli/commands/workflow-swarm-actions.js +109 -0
- package/dist/cli/commands/workflow-swarm-commands.d.ts +3 -0
- package/dist/cli/commands/workflow-swarm-commands.js +138 -0
- package/dist/cli/commands/workflow-tech-actions.d.ts +10 -0
- package/dist/cli/commands/workflow-tech-actions.js +150 -0
- package/dist/cli/commands/workflow-terminalize-command.d.ts +3 -0
- package/dist/cli/commands/workflow-terminalize-command.js +56 -0
- package/dist/cli/commands/workspace/init-actions.d.ts +10 -0
- package/dist/cli/commands/workspace/init-actions.js +199 -0
- package/dist/cli/commands/workspace/init-codegraph-stake.d.ts +10 -0
- package/dist/cli/commands/workspace/init-codegraph-stake.js +54 -0
- package/dist/cli/commands/workspace/init-command.d.ts +8 -124
- package/dist/cli/commands/workspace/init-command.js +59 -623
- package/dist/cli/commands/workspace/init-context.d.ts +58 -0
- package/dist/cli/commands/workspace/init-context.js +121 -0
- package/dist/cli/commands/workspace/init-envelope.d.ts +3 -0
- package/dist/cli/commands/workspace/init-envelope.js +34 -0
- package/dist/cli/commands/workspace/init-failures.d.ts +3 -0
- package/dist/cli/commands/workspace/init-failures.js +84 -0
- package/dist/cli/commands/workspace/init-hooks-decision.d.ts +24 -0
- package/dist/cli/commands/workspace/init-hooks-decision.js +189 -0
- package/dist/cli/commands/workspace/init-options.d.ts +102 -0
- package/dist/cli/commands/workspace/init-options.js +1 -0
- package/dist/cli/commands/worktree-lease-commands.d.ts +10 -6
- package/dist/cli/commands/worktree-lease-commands.js +42 -512
- package/dist/cli/commands/worktree-lease-gc-command.d.ts +12 -0
- package/dist/cli/commands/worktree-lease-gc-command.js +117 -0
- package/dist/cli/commands/worktree-lease-git.d.ts +22 -0
- package/dist/cli/commands/worktree-lease-git.js +48 -0
- package/dist/cli/commands/worktree-lease-list-command.d.ts +12 -0
- package/dist/cli/commands/worktree-lease-list-command.js +100 -0
- package/dist/cli/commands/worktree-lease-load.d.ts +37 -0
- package/dist/cli/commands/worktree-lease-load.js +28 -0
- package/dist/cli/commands/worktree-lease-release-command.d.ts +13 -0
- package/dist/cli/commands/worktree-lease-release-command.js +105 -0
- package/dist/cli/commands/worktree-lease-renew-command.d.ts +11 -0
- package/dist/cli/commands/worktree-lease-renew-command.js +99 -0
- package/dist/cli/commands/worktree-lease-session.d.ts +22 -0
- package/dist/cli/commands/worktree-lease-session.js +29 -0
- package/dist/cli/commands/worktree-lease-spawn-command.d.ts +11 -0
- package/dist/cli/commands/worktree-lease-spawn-command.js +119 -0
- package/dist/cli/commands/worktree-lease-status-command.d.ts +11 -0
- package/dist/cli/commands/worktree-lease-status-command.js +86 -0
- package/dist/cli/commands/worktree-lease-store.d.ts +19 -0
- package/dist/cli/commands/worktree-lease-store.js +24 -0
- package/dist/cli/program.js +5 -0
- package/dist/services/code/auto-compact-artifacts.d.ts +54 -0
- package/dist/services/code/auto-compact-artifacts.js +135 -0
- package/dist/services/code/auto-compact-attempt.d.ts +46 -0
- package/dist/services/code/auto-compact-attempt.js +88 -0
- package/dist/services/code/auto-compact-decision.d.ts +74 -0
- package/dist/services/code/auto-compact-decision.js +149 -0
- package/dist/services/code/auto-compact-dispatch-gate.d.ts +36 -0
- package/dist/services/code/auto-compact-dispatch-gate.js +86 -0
- package/dist/services/code/auto-compact-envelopes.d.ts +33 -0
- package/dist/services/code/auto-compact-envelopes.js +134 -0
- package/dist/services/code/auto-compact-history.d.ts +46 -0
- package/dist/services/code/auto-compact-history.js +17 -0
- package/dist/services/code/auto-compact-orchestrator.d.ts +11 -240
- package/dist/services/code/auto-compact-orchestrator.js +165 -686
- package/dist/services/code/auto-compact-run-types.d.ts +123 -0
- package/dist/services/code/auto-compact-run-types.js +1 -0
- package/dist/services/code/emit-handoff.d.ts +35 -1
- package/dist/services/code/emit-handoff.js +128 -7
- package/dist/services/code/step-08-gate.d.ts +28 -19
- package/dist/services/code/step-08-gate.js +92 -35
- package/dist/services/config/config-coercion.d.ts +7 -0
- package/dist/services/config/config-coercion.js +156 -0
- package/dist/services/config/config-file-io.d.ts +11 -0
- package/dist/services/config/config-file-io.js +61 -0
- package/dist/services/config/config-get.d.ts +2 -0
- package/dist/services/config/config-get.js +36 -0
- package/dist/services/config/config-global-loader.d.ts +15 -0
- package/dist/services/config/config-global-loader.js +111 -0
- package/dist/services/config/config-nested-path.d.ts +3 -0
- package/dist/services/config/config-nested-path.js +53 -0
- package/dist/services/config/config-primitives.d.ts +16 -0
- package/dist/services/config/config-primitives.js +24 -0
- package/dist/services/config/config-service.d.ts +9 -33
- package/dist/services/config/config-service.js +16 -665
- package/dist/services/config/config-validation.d.ts +19 -0
- package/dist/services/config/config-validation.js +152 -0
- package/dist/services/config/config-workspace.d.ts +10 -0
- package/dist/services/config/config-workspace.js +158 -0
- package/dist/services/distribution/mcp-install-runner.d.ts +21 -0
- package/dist/services/distribution/mcp-install-runner.js +59 -0
- package/dist/services/distribution/mcp-install.d.ts +95 -0
- package/dist/services/distribution/mcp-install.js +179 -0
- package/dist/services/distribution/plugin-manifest.d.ts +97 -0
- package/dist/services/distribution/plugin-manifest.js +126 -0
- package/dist/services/hooks/mcp-surface-gate.d.ts +19 -0
- package/dist/services/hooks/mcp-surface-gate.js +87 -0
- package/dist/services/ide/adapters/claude-code-adapter.d.ts +4 -35
- package/dist/services/ide/adapters/claude-code-adapter.js +48 -171
- package/dist/services/ide/adapters/claude-code-local-state.d.ts +28 -0
- package/dist/services/ide/adapters/claude-code-local-state.js +112 -0
- package/dist/services/ide/adapters/claude-code-model-window.d.ts +37 -0
- package/dist/services/ide/adapters/claude-code-model-window.js +113 -0
- package/dist/services/ide/ide-mcp-install-types.d.ts +78 -0
- package/dist/services/ide/ide-mcp-install-types.js +104 -0
- package/dist/services/ide/ide-types.d.ts +45 -1
- package/dist/services/ide/mcp-tool-matcher.d.ts +34 -0
- package/dist/services/ide/mcp-tool-matcher.js +84 -0
- package/dist/services/lint/npx-resolver.js +7 -0
- package/dist/services/mcp/cli-executor.d.ts +36 -0
- package/dist/services/mcp/cli-executor.js +97 -0
- package/dist/services/mcp/json-rpc.d.ts +81 -0
- package/dist/services/mcp/json-rpc.js +116 -0
- package/dist/services/mcp/memory-tool.d.ts +3 -0
- package/dist/services/mcp/memory-tool.js +62 -0
- package/dist/services/mcp/server-main.d.ts +1 -0
- package/dist/services/mcp/server-main.js +66 -0
- package/dist/services/mcp/server.d.ts +22 -0
- package/dist/services/mcp/server.js +152 -0
- package/dist/services/mcp/surface.d.ts +62 -0
- package/dist/services/mcp/surface.js +198 -0
- package/dist/services/mcp/tool-core.d.ts +42 -0
- package/dist/services/mcp/tool-core.js +137 -0
- package/dist/services/mcp/tools.d.ts +13 -0
- package/dist/services/mcp/tools.js +58 -0
- package/dist/services/readonly-surface/argv-guard.d.ts +32 -0
- package/dist/services/readonly-surface/argv-guard.js +164 -0
- package/dist/services/readonly-surface/readonly-whitelist.d.ts +147 -0
- package/dist/services/readonly-surface/readonly-whitelist.js +107 -0
- package/dist/services/readonly-surface/whitelist-generator.d.ts +64 -0
- package/dist/services/readonly-surface/whitelist-generator.js +212 -0
- package/dist/services/skills/hooks-codegate-superpowers.d.ts +1 -0
- package/dist/services/skills/hooks-codegate-superpowers.js +26 -0
- package/dist/services/skills/hooks-settings-deny-list.d.ts +61 -0
- package/dist/services/skills/hooks-settings-deny-list.js +173 -0
- package/dist/services/skills/hooks-settings-envelopes.d.ts +20 -0
- package/dist/services/skills/hooks-settings-envelopes.js +79 -0
- package/dist/services/skills/hooks-settings-file-shape.d.ts +43 -0
- package/dist/services/skills/hooks-settings-file-shape.js +207 -0
- package/dist/services/skills/hooks-settings-paths.d.ts +34 -0
- package/dist/services/skills/hooks-settings-paths.js +75 -0
- package/dist/services/skills/hooks-settings-read-installed.d.ts +39 -0
- package/dist/services/skills/hooks-settings-read-installed.js +60 -0
- package/dist/services/skills/hooks-settings-service.d.ts +12 -212
- package/dist/services/skills/hooks-settings-service.js +71 -649
- package/dist/services/skills/hooks-settings-types.d.ts +139 -0
- package/dist/services/skills/hooks-settings-types.js +1 -0
- package/dist/services/workspace/claude-settings-template-merge.d.ts +89 -0
- package/dist/services/workspace/claude-settings-template-merge.js +243 -0
- package/dist/services/workspace/claude-settings-template.d.ts +29 -87
- package/dist/services/workspace/claude-settings-template.js +81 -236
- package/package.json +17 -6
- package/scripts/install-skills-bundles.mjs +233 -0
- package/scripts/install-skills-fs.mjs +148 -0
- package/scripts/install-skills-ide.mjs +279 -0
- package/scripts/install-skills-output-style-default.mjs +196 -0
- package/scripts/install-skills-output-styles.mjs +121 -0
- package/scripts/install-skills-report.mjs +42 -0
- package/scripts/install-skills-user-config.mjs +198 -0
- package/scripts/install-skills.mjs +36 -1066
- package/scripts/watch-tree.mjs +140 -0
- package/scripts/watch.mjs +4 -126
- package/skills/peaks-status/SKILL.md +31 -13
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Coercion of untrusted JSON into the typed config shapes.
|
|
3
|
+
*
|
|
4
|
+
* Split out of `config-service.ts` (file-size cap campaign). The service
|
|
5
|
+
* re-exports every name declared here, so existing importers keep using
|
|
6
|
+
* `./config-service.js` unchanged.
|
|
7
|
+
*/
|
|
8
|
+
import { isRecord, isSafeConfigSegment } from './config-primitives.js';
|
|
9
|
+
import { isValidProxyUrl } from './config-validation.js';
|
|
10
|
+
function toArtifactRemoteRepoConfig(value) {
|
|
11
|
+
if (!isRecord(value) ||
|
|
12
|
+
(value.provider !== 'github' && value.provider !== 'gitlab') ||
|
|
13
|
+
typeof value.owner !== 'string' ||
|
|
14
|
+
typeof value.name !== 'string') {
|
|
15
|
+
return null;
|
|
16
|
+
}
|
|
17
|
+
if (!isSafeConfigSegment(value.owner) || !isSafeConfigSegment(value.name)) {
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
return { provider: value.provider, owner: value.owner, name: value.name };
|
|
21
|
+
}
|
|
22
|
+
function toArtifactStorageConfig(value) {
|
|
23
|
+
if (!isRecord(value))
|
|
24
|
+
return null;
|
|
25
|
+
const localPath = typeof value.localPath === 'string' ? { localPath: value.localPath } : {};
|
|
26
|
+
if (value.mode === 'local') {
|
|
27
|
+
return { mode: 'local', ...localPath };
|
|
28
|
+
}
|
|
29
|
+
const remote = toArtifactRemoteRepoConfig(value.remote);
|
|
30
|
+
if (value.mode === 'local-with-remote-sync' && remote) {
|
|
31
|
+
return { mode: 'local-with-remote-sync', ...localPath, remote };
|
|
32
|
+
}
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
function toWorkspaceConfig(value) {
|
|
36
|
+
if (!isRecord(value))
|
|
37
|
+
return null;
|
|
38
|
+
const { workspaceId, name, rootPath, installedCapabilityIds } = value;
|
|
39
|
+
if (typeof workspaceId !== 'string' ||
|
|
40
|
+
!isSafeConfigSegment(workspaceId) ||
|
|
41
|
+
typeof name !== 'string' ||
|
|
42
|
+
typeof rootPath !== 'string' ||
|
|
43
|
+
!Array.isArray(installedCapabilityIds) ||
|
|
44
|
+
!installedCapabilityIds.every((id) => typeof id === 'string')) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
const artifactRepo = toArtifactRemoteRepoConfig(value.artifactRepo);
|
|
48
|
+
const artifactStorage = toArtifactStorageConfig(value.artifactStorage);
|
|
49
|
+
return {
|
|
50
|
+
workspaceId,
|
|
51
|
+
name,
|
|
52
|
+
rootPath,
|
|
53
|
+
installedCapabilityIds,
|
|
54
|
+
...(artifactRepo ? { artifactRepo } : {}),
|
|
55
|
+
...(artifactStorage ? { artifactStorage } : {})
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
export function toWorkspaceConfigs(value) {
|
|
59
|
+
return Array.isArray(value)
|
|
60
|
+
? value
|
|
61
|
+
.map(toWorkspaceConfig)
|
|
62
|
+
.filter((workspace) => workspace !== null)
|
|
63
|
+
: [];
|
|
64
|
+
}
|
|
65
|
+
export function toProviderModelConfig(value) {
|
|
66
|
+
if (!isRecord(value))
|
|
67
|
+
return {};
|
|
68
|
+
return {
|
|
69
|
+
...(typeof value.model === 'string' && value.model.trim().length > 0
|
|
70
|
+
? { model: value.model.trim() }
|
|
71
|
+
: {}),
|
|
72
|
+
...(typeof value.baseUrl === 'string' ? { baseUrl: value.baseUrl } : {}),
|
|
73
|
+
...(typeof value.apiKey === 'string' ? { apiKey: value.apiKey } : {})
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
const TOKEN_CONFIG_KEYS = new Set([
|
|
77
|
+
'AnthropicApiKey',
|
|
78
|
+
'OpenAiApiKey',
|
|
79
|
+
'GitHubToken',
|
|
80
|
+
'GitLabToken'
|
|
81
|
+
]);
|
|
82
|
+
function toTokenRef(value) {
|
|
83
|
+
if (!isRecord(value))
|
|
84
|
+
return null;
|
|
85
|
+
const env = typeof value.env === 'string' ? value.env.trim() : '';
|
|
86
|
+
const keychain = typeof value.keychain === 'string' ? value.keychain.trim() : '';
|
|
87
|
+
if (env.length > 0) {
|
|
88
|
+
return { env };
|
|
89
|
+
}
|
|
90
|
+
if (keychain.length > 0) {
|
|
91
|
+
return { keychain };
|
|
92
|
+
}
|
|
93
|
+
if (value.ghCli === true) {
|
|
94
|
+
return { ghCli: true };
|
|
95
|
+
}
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
export function toTokenConfig(value) {
|
|
99
|
+
if (!isRecord(value))
|
|
100
|
+
return {};
|
|
101
|
+
const tokens = {};
|
|
102
|
+
for (const [key, entry] of Object.entries(value)) {
|
|
103
|
+
if (!TOKEN_CONFIG_KEYS.has(key))
|
|
104
|
+
continue;
|
|
105
|
+
const tokenRef = toTokenRef(entry);
|
|
106
|
+
if (tokenRef) {
|
|
107
|
+
tokens[key] = tokenRef;
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
return tokens;
|
|
111
|
+
}
|
|
112
|
+
export function toModelProviderConfig(value) {
|
|
113
|
+
if (!isRecord(value))
|
|
114
|
+
return {};
|
|
115
|
+
return Object.fromEntries(Object.entries(value).map(([providerId, providerConfig]) => [
|
|
116
|
+
providerId,
|
|
117
|
+
toProviderModelConfig(providerConfig)
|
|
118
|
+
]));
|
|
119
|
+
}
|
|
120
|
+
function toProxyConfig(value) {
|
|
121
|
+
if (!isRecord(value))
|
|
122
|
+
return null;
|
|
123
|
+
return typeof value.httpProxy === 'string' && isValidProxyUrl(value.httpProxy)
|
|
124
|
+
? { httpProxy: value.httpProxy }
|
|
125
|
+
: null;
|
|
126
|
+
}
|
|
127
|
+
export function inferHumanLanguage(value) {
|
|
128
|
+
const normalized = value.trim();
|
|
129
|
+
if (!normalized) {
|
|
130
|
+
throw new Error('Language must be non-empty');
|
|
131
|
+
}
|
|
132
|
+
if (/^zh(?:-|$)/i.test(normalized) || /[㐀-鿿]/u.test(normalized)) {
|
|
133
|
+
return 'zh-CN';
|
|
134
|
+
}
|
|
135
|
+
if (/^en(?:-|$)/i.test(normalized)) {
|
|
136
|
+
return 'en';
|
|
137
|
+
}
|
|
138
|
+
return 'en';
|
|
139
|
+
}
|
|
140
|
+
export function toPeaksConfig(value) {
|
|
141
|
+
if (!isRecord(value))
|
|
142
|
+
return {};
|
|
143
|
+
const proxy = toProxyConfig(value.proxy);
|
|
144
|
+
return {
|
|
145
|
+
...(typeof value.version === 'string' ? { version: value.version } : {}),
|
|
146
|
+
...(typeof value.language === 'string' ? { language: value.language } : {}),
|
|
147
|
+
...(typeof value.model === 'string' && ['haiku', 'sonnet', 'opus'].includes(value.model)
|
|
148
|
+
? { model: value.model }
|
|
149
|
+
: {}),
|
|
150
|
+
...(typeof value.economyMode === 'boolean' ? { economyMode: value.economyMode } : {}),
|
|
151
|
+
...(typeof value.swarmMode === 'boolean' ? { swarmMode: value.swarmMode } : {}),
|
|
152
|
+
...(isRecord(value.tokens) ? { tokens: toTokenConfig(value.tokens) } : {}),
|
|
153
|
+
...(isRecord(value.providers) ? { providers: toModelProviderConfig(value.providers) } : {}),
|
|
154
|
+
...(proxy ? { proxy } : {})
|
|
155
|
+
};
|
|
156
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { PeaksConfig } from './config-types.js';
|
|
2
|
+
export declare function readJsonFile(path: string | null, validateBeforeRead?: () => void, errorMessage?: string): Partial<PeaksConfig> | null;
|
|
3
|
+
export declare function readExistingJsonFile(path: string, errorMessage: string, validateBeforeRead?: () => void): Partial<PeaksConfig> | null;
|
|
4
|
+
export declare function readUserJsonFile(): Partial<PeaksConfig> | null;
|
|
5
|
+
export declare function readProjectJsonFile(projectRoot: string | null): Partial<PeaksConfig> | null;
|
|
6
|
+
export declare function ensureDir(dirPath: string): void;
|
|
7
|
+
export declare function getProjectWriteTarget(): {
|
|
8
|
+
projectRoot: string;
|
|
9
|
+
configPath: string;
|
|
10
|
+
};
|
|
11
|
+
export declare function removeProjectSensitiveConfig(config: Partial<PeaksConfig>): Partial<PeaksConfig>;
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Safe config-file reads/writes and the project-layer write target.
|
|
3
|
+
*
|
|
4
|
+
* Split out of `config-service.ts` (file-size cap campaign). The service
|
|
5
|
+
* re-exports every name declared here, so existing importers keep using
|
|
6
|
+
* `./config-service.js` unchanged.
|
|
7
|
+
*/
|
|
8
|
+
import { existsSync, mkdirSync } from 'node:fs';
|
|
9
|
+
import { findProjectRoot, getProjectConfigPath, getUserConfigPath, readConfigFileSafely, validateProjectBootstrapConfigPathForWrite, validateUserConfigPathForWrite } from './config-safety.js';
|
|
10
|
+
import { containsSensitiveConfigValue, isSecretKey } from './config-validation.js';
|
|
11
|
+
export function readJsonFile(path, validateBeforeRead, errorMessage = 'Config path must stay inside the config root') {
|
|
12
|
+
if (!path || !existsSync(path))
|
|
13
|
+
return null;
|
|
14
|
+
validateBeforeRead?.();
|
|
15
|
+
const content = readConfigFileSafely(path, errorMessage);
|
|
16
|
+
try {
|
|
17
|
+
return JSON.parse(content);
|
|
18
|
+
}
|
|
19
|
+
catch {
|
|
20
|
+
// TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
21
|
+
return null;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
export function readExistingJsonFile(path, errorMessage, validateBeforeRead) {
|
|
25
|
+
if (!existsSync(path))
|
|
26
|
+
return null;
|
|
27
|
+
validateBeforeRead?.();
|
|
28
|
+
try {
|
|
29
|
+
return JSON.parse(readConfigFileSafely(path, errorMessage));
|
|
30
|
+
}
|
|
31
|
+
catch {
|
|
32
|
+
throw new Error(errorMessage);
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
export function readUserJsonFile() {
|
|
36
|
+
const userPath = getUserConfigPath();
|
|
37
|
+
return readJsonFile(userPath, () => validateUserConfigPathForWrite(userPath), 'User config path must stay inside the user root');
|
|
38
|
+
}
|
|
39
|
+
export function readProjectJsonFile(projectRoot) {
|
|
40
|
+
const projectPath = getProjectConfigPath(projectRoot);
|
|
41
|
+
return readJsonFile(projectPath, projectRoot && projectPath
|
|
42
|
+
? () => validateProjectBootstrapConfigPathForWrite(projectRoot, projectPath)
|
|
43
|
+
: undefined, 'Project config path must stay inside the project root');
|
|
44
|
+
}
|
|
45
|
+
export function ensureDir(dirPath) {
|
|
46
|
+
if (!existsSync(dirPath)) {
|
|
47
|
+
mkdirSync(dirPath, { recursive: true });
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
export function getProjectWriteTarget() {
|
|
51
|
+
const projectRoot = findProjectRoot(process.cwd());
|
|
52
|
+
const configPath = getProjectConfigPath(projectRoot);
|
|
53
|
+
if (!projectRoot || !configPath) {
|
|
54
|
+
throw new Error('Project config not found');
|
|
55
|
+
}
|
|
56
|
+
return { projectRoot, configPath };
|
|
57
|
+
}
|
|
58
|
+
export function removeProjectSensitiveConfig(config) {
|
|
59
|
+
const OMITTED_KEYS = new Set(['providers', 'proxy', 'tokens']);
|
|
60
|
+
return Object.fromEntries(Object.entries(config).filter(([key, value]) => !OMITTED_KEYS.has(key) && !isSecretKey(key) && !containsSensitiveConfigValue(value)));
|
|
61
|
+
}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The layered `peaks config get` reader.
|
|
3
|
+
*
|
|
4
|
+
* Split out of `config-service.ts` (file-size cap campaign). The service
|
|
5
|
+
* re-exports every name declared here, so existing importers keep using
|
|
6
|
+
* `./config-service.js` unchanged.
|
|
7
|
+
*/
|
|
8
|
+
import { findProjectRoot } from './config-safety.js';
|
|
9
|
+
import { getNestedValue } from './config-nested-path.js';
|
|
10
|
+
import { isRecord, omitProxy } from './config-primitives.js';
|
|
11
|
+
import { toTokenConfig } from './config-coercion.js';
|
|
12
|
+
import { readProjectJsonFile, readUserJsonFile, removeProjectSensitiveConfig } from './config-file-io.js';
|
|
13
|
+
export function getConfig(options = {}) {
|
|
14
|
+
const projectRoot = findProjectRoot(process.cwd());
|
|
15
|
+
const userConfig = readUserJsonFile() ?? {};
|
|
16
|
+
const projectConfig = removeProjectSensitiveConfig(readProjectJsonFile(projectRoot) ?? {});
|
|
17
|
+
const projectConfigWithoutProxy = omitProxy(projectConfig);
|
|
18
|
+
const source = options.layer === 'user'
|
|
19
|
+
? userConfig
|
|
20
|
+
: options.layer === 'project'
|
|
21
|
+
? projectConfig
|
|
22
|
+
: {
|
|
23
|
+
...userConfig,
|
|
24
|
+
...projectConfigWithoutProxy
|
|
25
|
+
};
|
|
26
|
+
const config = isRecord(source)
|
|
27
|
+
? {
|
|
28
|
+
...source,
|
|
29
|
+
...(source.tokens !== undefined ? { tokens: toTokenConfig(source.tokens) } : {})
|
|
30
|
+
}
|
|
31
|
+
: source;
|
|
32
|
+
if (options.key !== undefined) {
|
|
33
|
+
return getNestedValue(config, options.key);
|
|
34
|
+
}
|
|
35
|
+
return config;
|
|
36
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type ConfigV2 } from './config-types.js';
|
|
2
|
+
/**
|
|
3
|
+
* Load the slim 2.0 `~/.peaks/config.json` file. Returns the parsed
|
|
4
|
+
* object when the file is at schema 2.0.0; returns null when the
|
|
5
|
+
* file is absent (fresh install, no global config yet).
|
|
6
|
+
*
|
|
7
|
+
* Throws `CONFIG_LEGACY_VERSION` when the file exists at a 1.x
|
|
8
|
+
* schema version — the caller is expected to run
|
|
9
|
+
* `peaks config migrate --apply` to bring it forward before
|
|
10
|
+
* continuing. This gate is intentional: a slim 2.0 reader must
|
|
11
|
+
* not silently pass through a 1.x shape, because every field it
|
|
12
|
+
* ignores is a field the caller is going to look for elsewhere
|
|
13
|
+
* (preferences.json, .bak, _state/).
|
|
14
|
+
*/
|
|
15
|
+
export declare function loadGlobalConfig(): ConfigV2 | null;
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The slim 2.0 `~/.peaks/config.json` loader and its legacy promotion.
|
|
3
|
+
*
|
|
4
|
+
* Split out of `config-service.ts` (file-size cap campaign). The service
|
|
5
|
+
* re-exports every name declared here, so existing importers keep using
|
|
6
|
+
* `./config-service.js` unchanged.
|
|
7
|
+
*/
|
|
8
|
+
import { existsSync } from 'node:fs';
|
|
9
|
+
import { CONFIG_SCHEMA_VERSION_V2, globalConfigPath } from './config-migration.js';
|
|
10
|
+
import { readConfigFileSafely, writeUserConfigFile } from './config-safety.js';
|
|
11
|
+
import { isRecord } from './config-primitives.js';
|
|
12
|
+
import { SIDECAR_SCHEMA_VERSION, providersConfigPath, proxyConfigPath, readSidecarJson, sidecarExists, workspacesConfigPath, writeSidecarJson } from './sidecar-store.js';
|
|
13
|
+
import { isConfigV2 } from './config-types.js';
|
|
14
|
+
/**
|
|
15
|
+
* Load the slim 2.0 `~/.peaks/config.json` file. Returns the parsed
|
|
16
|
+
* object when the file is at schema 2.0.0; returns null when the
|
|
17
|
+
* file is absent (fresh install, no global config yet).
|
|
18
|
+
*
|
|
19
|
+
* Throws `CONFIG_LEGACY_VERSION` when the file exists at a 1.x
|
|
20
|
+
* schema version — the caller is expected to run
|
|
21
|
+
* `peaks config migrate --apply` to bring it forward before
|
|
22
|
+
* continuing. This gate is intentional: a slim 2.0 reader must
|
|
23
|
+
* not silently pass through a 1.x shape, because every field it
|
|
24
|
+
* ignores is a field the caller is going to look for elsewhere
|
|
25
|
+
* (preferences.json, .bak, _state/).
|
|
26
|
+
*/
|
|
27
|
+
export function loadGlobalConfig() {
|
|
28
|
+
const path = globalConfigPath();
|
|
29
|
+
if (!existsSync(path))
|
|
30
|
+
return null;
|
|
31
|
+
const content = readConfigFileSafely(path, 'Global config path must stay inside the user root');
|
|
32
|
+
const raw = JSON.parse(content);
|
|
33
|
+
if (isConfigV2(raw)) {
|
|
34
|
+
if (hasLegacyGlobalFields(raw)) {
|
|
35
|
+
promoteLegacyGlobalFieldsToSidecars(raw);
|
|
36
|
+
rewriteSlimGlobalConfig();
|
|
37
|
+
}
|
|
38
|
+
return readSlimGlobalConfig();
|
|
39
|
+
}
|
|
40
|
+
const detected = typeof raw.version === 'string' ? raw.version : 'unknown';
|
|
41
|
+
throw new Error(`CONFIG_LEGACY_VERSION: ~/.peaks/config.json is at version "${detected}", expected ${CONFIG_SCHEMA_VERSION_V2}. Run \`peaks config migrate --apply\`.`);
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Slim 2.0 schema allows `version` + `ocr`. Any other top-level
|
|
45
|
+
* field is a legacy artifact that needs to be promoted to a
|
|
46
|
+
* sidecar file.
|
|
47
|
+
*/
|
|
48
|
+
function hasLegacyGlobalFields(raw) {
|
|
49
|
+
const allowed = new Set(['version', 'ocr']);
|
|
50
|
+
return Object.keys(raw).some((k) => !allowed.has(k));
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* One-shot promotion of legacy fields into their dedicated sidecar
|
|
54
|
+
* files. Idempotent: if the sidecar already has the field, the
|
|
55
|
+
* legacy value is dropped (sidecar is the new source of truth).
|
|
56
|
+
*/
|
|
57
|
+
function promoteLegacyGlobalFieldsToSidecars(raw) {
|
|
58
|
+
if (isRecord(raw.providers)) {
|
|
59
|
+
const existing = readSidecarJson(providersConfigPath(), {
|
|
60
|
+
version: SIDECAR_SCHEMA_VERSION,
|
|
61
|
+
providers: {}
|
|
62
|
+
});
|
|
63
|
+
const mergedProviders = {
|
|
64
|
+
...(existing.providers ?? {}),
|
|
65
|
+
...raw.providers
|
|
66
|
+
};
|
|
67
|
+
writeSidecarJson(providersConfigPath(), {
|
|
68
|
+
version: SIDECAR_SCHEMA_VERSION,
|
|
69
|
+
providers: mergedProviders
|
|
70
|
+
});
|
|
71
|
+
}
|
|
72
|
+
if (isRecord(raw.proxy) && typeof raw.proxy.httpProxy === 'string') {
|
|
73
|
+
const httpProxy = raw.proxy.httpProxy;
|
|
74
|
+
if (!sidecarExists(proxyConfigPath())) {
|
|
75
|
+
writeSidecarJson(proxyConfigPath(), { version: SIDECAR_SCHEMA_VERSION, httpProxy });
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if (Array.isArray(raw.workspaces) || typeof raw.currentWorkspace === 'string') {
|
|
79
|
+
if (!sidecarExists(workspacesConfigPath())) {
|
|
80
|
+
writeSidecarJson(workspacesConfigPath(), {
|
|
81
|
+
version: SIDECAR_SCHEMA_VERSION,
|
|
82
|
+
workspaces: Array.isArray(raw.workspaces) ? raw.workspaces : [],
|
|
83
|
+
currentWorkspace: typeof raw.currentWorkspace === 'string' ? raw.currentWorkspace : null
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
function readSlimGlobalConfig() {
|
|
89
|
+
const path = globalConfigPath();
|
|
90
|
+
if (!existsSync(path)) {
|
|
91
|
+
return { version: CONFIG_SCHEMA_VERSION_V2 };
|
|
92
|
+
}
|
|
93
|
+
const content = readConfigFileSafely(path, 'Global config path must stay inside the user root');
|
|
94
|
+
return JSON.parse(content);
|
|
95
|
+
}
|
|
96
|
+
function rewriteSlimGlobalConfig() {
|
|
97
|
+
const path = globalConfigPath();
|
|
98
|
+
const ocr = readOcrFromRawConfigFile();
|
|
99
|
+
const slim = { version: CONFIG_SCHEMA_VERSION_V2 };
|
|
100
|
+
if (ocr !== null)
|
|
101
|
+
slim['ocr'] = ocr;
|
|
102
|
+
writeUserConfigFile(path, JSON.stringify(slim, null, 2) + '\n');
|
|
103
|
+
}
|
|
104
|
+
function readOcrFromRawConfigFile() {
|
|
105
|
+
const path = globalConfigPath();
|
|
106
|
+
if (!existsSync(path))
|
|
107
|
+
return null;
|
|
108
|
+
const content = readConfigFileSafely(path, 'Global config path must stay inside the user root');
|
|
109
|
+
const raw = JSON.parse(content);
|
|
110
|
+
return isRecord(raw.ocr) ? raw.ocr : null;
|
|
111
|
+
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Dotted-path access into a raw config object, with prototype-pollution guards.
|
|
3
|
+
*
|
|
4
|
+
* Split out of `config-service.ts` (file-size cap campaign). The service
|
|
5
|
+
* re-exports every name declared here, so existing importers keep using
|
|
6
|
+
* `./config-service.js` unchanged.
|
|
7
|
+
*/
|
|
8
|
+
const UNSAFE_NESTED_PATH_SEGMENTS = new Set(['__proto__', 'constructor', 'prototype']);
|
|
9
|
+
export function getNestedPathParts(path) {
|
|
10
|
+
return path
|
|
11
|
+
.replace(/\[(\d+)\]/g, '.$1')
|
|
12
|
+
.split('.')
|
|
13
|
+
.filter(Boolean);
|
|
14
|
+
}
|
|
15
|
+
function hasUnsafeNestedPathSegment(parts) {
|
|
16
|
+
return parts.some((part) => UNSAFE_NESTED_PATH_SEGMENTS.has(part));
|
|
17
|
+
}
|
|
18
|
+
export function getNestedValue(obj, path) {
|
|
19
|
+
const parts = getNestedPathParts(path);
|
|
20
|
+
if (parts.length === 0 || hasUnsafeNestedPathSegment(parts)) {
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
let current = obj;
|
|
24
|
+
for (const part of parts) {
|
|
25
|
+
if (current === null ||
|
|
26
|
+
current === undefined ||
|
|
27
|
+
typeof current !== 'object' ||
|
|
28
|
+
!Object.prototype.hasOwnProperty.call(current, part)) {
|
|
29
|
+
return undefined;
|
|
30
|
+
}
|
|
31
|
+
current = current[part];
|
|
32
|
+
}
|
|
33
|
+
return current;
|
|
34
|
+
}
|
|
35
|
+
export function setNestedValue(obj, path, value) {
|
|
36
|
+
const parts = getNestedPathParts(path);
|
|
37
|
+
if (parts.length === 0 || hasUnsafeNestedPathSegment(parts)) {
|
|
38
|
+
throw new Error('Unsafe config path');
|
|
39
|
+
}
|
|
40
|
+
let current = obj;
|
|
41
|
+
for (let i = 0; i < parts.length - 1; i++) {
|
|
42
|
+
const part = parts[i];
|
|
43
|
+
if (!Object.prototype.hasOwnProperty.call(current, part) ||
|
|
44
|
+
typeof current[part] !== 'object' ||
|
|
45
|
+
current[part] === null ||
|
|
46
|
+
Array.isArray(current[part])) {
|
|
47
|
+
current[part] = {};
|
|
48
|
+
}
|
|
49
|
+
current = current[part];
|
|
50
|
+
}
|
|
51
|
+
const last = parts[parts.length - 1];
|
|
52
|
+
current[last] = value;
|
|
53
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shape predicates shared by the config reader/writer family.
|
|
3
|
+
*
|
|
4
|
+
* Split out of `config-service.ts` (file-size cap campaign). The service
|
|
5
|
+
* re-exports every name declared here, so existing importers keep using
|
|
6
|
+
* `./config-service.js` unchanged.
|
|
7
|
+
*/
|
|
8
|
+
export declare function isRecord(value: unknown): value is Record<string, unknown>;
|
|
9
|
+
export declare function isSafeConfigSegment(value: string): boolean;
|
|
10
|
+
/**
|
|
11
|
+
* A shallow copy of `value` with the `proxy` key removed. The project layer's
|
|
12
|
+
* config is always consumed without its `proxy` (the proxy belongs to the user
|
|
13
|
+
* layer), and spreading around a named rest sibling left a binding no reader
|
|
14
|
+
* needs.
|
|
15
|
+
*/
|
|
16
|
+
export declare function omitProxy<T extends object>(value: T): Omit<T, 'proxy'>;
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shape predicates shared by the config reader/writer family.
|
|
3
|
+
*
|
|
4
|
+
* Split out of `config-service.ts` (file-size cap campaign). The service
|
|
5
|
+
* re-exports every name declared here, so existing importers keep using
|
|
6
|
+
* `./config-service.js` unchanged.
|
|
7
|
+
*/
|
|
8
|
+
export function isRecord(value) {
|
|
9
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
10
|
+
}
|
|
11
|
+
export function isSafeConfigSegment(value) {
|
|
12
|
+
return (/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(value) && !value.includes('..') && !value.endsWith('.'));
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* A shallow copy of `value` with the `proxy` key removed. The project layer's
|
|
16
|
+
* config is always consumed without its `proxy` (the proxy belongs to the user
|
|
17
|
+
* layer), and spreading around a named rest sibling left a binding no reader
|
|
18
|
+
* needs.
|
|
19
|
+
*/
|
|
20
|
+
export function omitProxy(value) {
|
|
21
|
+
const copy = { ...value };
|
|
22
|
+
delete copy['proxy'];
|
|
23
|
+
return copy;
|
|
24
|
+
}
|
|
@@ -1,19 +1,12 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type ConfigLayer, type ConfigSetOptions, type PeaksConfig, type TokenRef, type WorkspaceConfig } from './config-types.js';
|
|
2
|
+
import { getUserConfigPath } from './config-safety.js';
|
|
3
|
+
import { containsSensitiveConfigValue, isLegacyConfigKey, isSensitiveConfigPath, redactConfigSecrets, type RedactedConfigValue } from './config-validation.js';
|
|
2
4
|
export { resolveProjectRootForConfig, resolveCanonicalProjectRoot } from './config-safety.js';
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
* Throws `CONFIG_LEGACY_VERSION` when the file exists at a 1.x
|
|
9
|
-
* schema version — the caller is expected to run
|
|
10
|
-
* `peaks config migrate --apply` to bring it forward before
|
|
11
|
-
* continuing. This gate is intentional: a slim 2.0 reader must
|
|
12
|
-
* not silently pass through a 1.x shape, because every field it
|
|
13
|
-
* ignores is a field the caller is going to look for elsewhere
|
|
14
|
-
* (preferences.json, .bak, _state/).
|
|
15
|
-
*/
|
|
16
|
-
export declare function loadGlobalConfig(): ConfigV2 | null;
|
|
5
|
+
export { getConfig } from './config-get.js';
|
|
6
|
+
export { loadGlobalConfig } from './config-global-loader.js';
|
|
7
|
+
export { addWorkspace, ensureWorkspaceConfigForCurrentPath, ensureWorkspaceConfigForPath, getCurrentWorkspaceConfig, getWorkspaceConfig, getWorkspaceConfigForCurrentPath, getWorkspaceConfigForPath, removeWorkspace, setCurrentWorkspace } from './config-workspace.js';
|
|
8
|
+
export { containsSensitiveConfigValue, isLegacyConfigKey, isSensitiveConfigPath, redactConfigSecrets };
|
|
9
|
+
export type { RedactedConfigValue };
|
|
17
10
|
export declare function isConfigLayer(value: string): value is ConfigLayer;
|
|
18
11
|
/**
|
|
19
12
|
* Machine-scoped context-window override key, the config twin of the
|
|
@@ -31,27 +24,10 @@ export declare const CONTEXT_WINDOW_TOKENS_CONFIG_KEY = "context.windowTokens";
|
|
|
31
24
|
* never throws (a corrupt config must not crash a context probe).
|
|
32
25
|
*/
|
|
33
26
|
export declare function readContextWindowTokensOverride(projectRoot?: string | null): unknown;
|
|
34
|
-
export declare function isSensitiveConfigPath(path: string): boolean;
|
|
35
|
-
export declare function isLegacyConfigKey(path: string): boolean;
|
|
36
|
-
export declare function containsSensitiveConfigValue(value: unknown): boolean;
|
|
37
|
-
export type RedactedConfigValue = string | number | boolean | null | RedactedConfigValue[] | {
|
|
38
|
-
[key: string]: RedactedConfigValue;
|
|
39
|
-
};
|
|
40
|
-
export declare function redactConfigSecrets(value: unknown, path?: string): RedactedConfigValue;
|
|
41
27
|
export declare function bootstrapProjectLanguageConfig(projectRoot: string, language: string): void;
|
|
42
28
|
export declare function readConfig(projectRoot?: string | null): PeaksConfig;
|
|
43
29
|
export declare function writeConfig(partial: Partial<PeaksConfig>, layer?: ConfigLayer): void;
|
|
44
|
-
export declare function getConfig(options?: ConfigGetOptions): unknown;
|
|
45
30
|
export declare function setConfig(options: ConfigSetOptions): void;
|
|
46
|
-
export declare function getWorkspaceConfig(workspaceId: string, _projectRoot?: string | null): WorkspaceConfig | null;
|
|
47
|
-
export declare function addWorkspace(workspace: WorkspaceConfig, layer?: ConfigLayer): void;
|
|
48
|
-
export declare function removeWorkspace(workspaceId: string, layer?: ConfigLayer): boolean;
|
|
49
|
-
export declare function setCurrentWorkspace(workspaceId: string, layer?: ConfigLayer): boolean;
|
|
50
|
-
export declare function getCurrentWorkspaceConfig(): WorkspaceConfig | null;
|
|
51
|
-
export declare function getWorkspaceConfigForPath(path?: string): WorkspaceConfig | null;
|
|
52
|
-
export declare function ensureWorkspaceConfigForPath(path?: string): WorkspaceConfig | null;
|
|
53
|
-
export declare function getWorkspaceConfigForCurrentPath(): WorkspaceConfig | null;
|
|
54
|
-
export declare function ensureWorkspaceConfigForCurrentPath(): WorkspaceConfig | null;
|
|
55
31
|
export type { TokenRef, WorkspaceConfig, PeaksConfig, ConfigLayer };
|
|
56
|
-
export { getUserConfigPath }
|
|
32
|
+
export { getUserConfigPath };
|
|
57
33
|
export { globalConfigPath } from './config-migration.js';
|