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,133 @@
|
|
|
1
|
+
// src/cli/commands/asset-crystallize-runner.ts
|
|
2
|
+
//
|
|
3
|
+
// The `asset.crystallize` action body and its failure envelopes. Split out of
|
|
4
|
+
// `asset-crystallize-command.ts`; every error code, message and next-action
|
|
5
|
+
// list is unchanged, including the rethrow of an error class the verb does not
|
|
6
|
+
// handle itself.
|
|
7
|
+
import { CrystallizationIntegrityError, BriefSectionError, safeRenderRecommendationPayload, CRYSTALLIZATION_TRIGGERS, parseEvidenceBrief } from '../../services/crystallization/index.js';
|
|
8
|
+
import { printResult } from '../cli-helpers.js';
|
|
9
|
+
import { fail } from 'peaks-loop-shared/result';
|
|
10
|
+
import { createCrystallizationService, openAssetDb, parseTriggerFlag, resolveAssetProjectRoot } from './asset-command-shared.js';
|
|
11
|
+
import { briefFromOptions, buildCrystallizePayload, printCrystallizeResult } from './asset-crystallize-payload.js';
|
|
12
|
+
function failCrystallize(io, failure) {
|
|
13
|
+
printResult(io, fail('asset.crystallize', failure.code, failure.message, failure.data, failure.nextActions), failure.json);
|
|
14
|
+
process.exitCode = 1;
|
|
15
|
+
}
|
|
16
|
+
function printInvalidTrigger(io, options) {
|
|
17
|
+
failCrystallize(io, {
|
|
18
|
+
code: 'ASSET_INVALID_TRIGGER',
|
|
19
|
+
message: `--trigger must be one of: ${CRYSTALLIZATION_TRIGGERS.join('|')}`,
|
|
20
|
+
data: { trigger: options.trigger },
|
|
21
|
+
nextActions: ['Pass a valid --trigger value.'],
|
|
22
|
+
json: options.json
|
|
23
|
+
});
|
|
24
|
+
}
|
|
25
|
+
function printMissingBrief(io, err, candidateBrief, json) {
|
|
26
|
+
const briefErr = err;
|
|
27
|
+
failCrystallize(io, {
|
|
28
|
+
code: 'MISSING_BRIEF_SECTION',
|
|
29
|
+
message: briefErr.message,
|
|
30
|
+
data: { findings: [...briefErr.findings], flagsProvided: Object.keys(candidateBrief) },
|
|
31
|
+
nextActions: [
|
|
32
|
+
'Pass ALL FOUR brief sections via --brief-what-happened / --brief-why-it-matters / --brief-what-learned / --brief-what-action.',
|
|
33
|
+
'The CLI refuses to render a recommendation without a complete 4-section brief (spec §4.7 / RL-7).'
|
|
34
|
+
],
|
|
35
|
+
json
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
function printRecommendationRejected(io, recommendation, candidateBrief, json) {
|
|
39
|
+
failCrystallize(io, {
|
|
40
|
+
code: recommendation.code ?? 'MISSING_BRIEF_SECTION',
|
|
41
|
+
message: 'recommendation envelope rejected — brief is missing one of its 4 sections',
|
|
42
|
+
data: { findings: recommendation.findings, briefProvided: candidateBrief },
|
|
43
|
+
nextActions: [
|
|
44
|
+
'Pass ALL FOUR brief sections via the matching CLI flags.',
|
|
45
|
+
'Counts in --brief-bullet may support the brief; they do NOT replace it (spec §4.7 / RL-7).'
|
|
46
|
+
],
|
|
47
|
+
json
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
/** Terminal failures from the service. Anything else is rethrown, as before. */
|
|
51
|
+
function handleCrystallizeError(io, err, json) {
|
|
52
|
+
if (err instanceof CrystallizationIntegrityError) {
|
|
53
|
+
const integrityErr = err;
|
|
54
|
+
failCrystallize(io, {
|
|
55
|
+
code: integrityErr.code,
|
|
56
|
+
message: integrityErr.message,
|
|
57
|
+
data: { findings: [...integrityErr.findings] },
|
|
58
|
+
nextActions: [
|
|
59
|
+
integrityErr.code === 'CRYSTALLIZATION_PRE_RUN'
|
|
60
|
+
? 'Re-shape the candidate task so task_status=completed AND gates_passed=true AND evidence_collected=true (spec §5 / RL-2).'
|
|
61
|
+
: integrityErr.code === 'MISSING_BRIEF_SECTION'
|
|
62
|
+
? 'Pass ALL FOUR brief sections (RL-7); the CLI refuses to render a recommendation without them.'
|
|
63
|
+
: 'Inspect the failure findings and re-shape the payload.'
|
|
64
|
+
],
|
|
65
|
+
json
|
|
66
|
+
});
|
|
67
|
+
return;
|
|
68
|
+
}
|
|
69
|
+
if (err instanceof BriefSectionError) {
|
|
70
|
+
const briefErr = err;
|
|
71
|
+
failCrystallize(io, {
|
|
72
|
+
code: 'MISSING_BRIEF_SECTION',
|
|
73
|
+
message: briefErr.message,
|
|
74
|
+
data: { findings: [...briefErr.findings] },
|
|
75
|
+
nextActions: ['Pass all 4 brief sections (RL-7).'],
|
|
76
|
+
json
|
|
77
|
+
});
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
throw err;
|
|
81
|
+
}
|
|
82
|
+
export async function runAssetCrystallize(io, options) {
|
|
83
|
+
try {
|
|
84
|
+
const trigger = parseTriggerFlag(options.trigger);
|
|
85
|
+
if (!trigger) {
|
|
86
|
+
printInvalidTrigger(io, options);
|
|
87
|
+
return;
|
|
88
|
+
}
|
|
89
|
+
// Build the brief from CLI flags and re-validate it through
|
|
90
|
+
// the canonical schema (so a partial brief is caught BEFORE
|
|
91
|
+
// any DB side effects fire).
|
|
92
|
+
const candidateBrief = briefFromOptions(options);
|
|
93
|
+
let brief;
|
|
94
|
+
try {
|
|
95
|
+
brief = parseEvidenceBrief(candidateBrief);
|
|
96
|
+
}
|
|
97
|
+
catch (err) {
|
|
98
|
+
if (err instanceof BriefSectionError) {
|
|
99
|
+
printMissingBrief(io, err, candidateBrief, options.json);
|
|
100
|
+
return;
|
|
101
|
+
}
|
|
102
|
+
throw err;
|
|
103
|
+
}
|
|
104
|
+
// Render the recommendation envelope up-front so the CLI can
|
|
105
|
+
// refuse to write if any brief section is missing. This is
|
|
106
|
+
// the same code path the crystallization service uses.
|
|
107
|
+
const recommendation = safeRenderRecommendationPayload({
|
|
108
|
+
brief,
|
|
109
|
+
bullets: options.briefBullet ?? [],
|
|
110
|
+
source_trace_pointers: options.sourceTrace ?? [],
|
|
111
|
+
evaluator_summary: {
|
|
112
|
+
one_liner: options.evaluatorSummary ?? '',
|
|
113
|
+
risk_tags: []
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
if (!recommendation.ok) {
|
|
117
|
+
printRecommendationRejected(io, recommendation, candidateBrief, options.json);
|
|
118
|
+
return;
|
|
119
|
+
}
|
|
120
|
+
const db = openAssetDb(resolveAssetProjectRoot(options.project));
|
|
121
|
+
try {
|
|
122
|
+
const svc = createCrystallizationService(db);
|
|
123
|
+
const result = svc.crystallize(buildCrystallizePayload(options, brief, trigger));
|
|
124
|
+
printCrystallizeResult(io, recommendation, result, options.json);
|
|
125
|
+
}
|
|
126
|
+
finally {
|
|
127
|
+
db.close();
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
catch (err) {
|
|
131
|
+
handleCrystallizeError(io, err, options.json);
|
|
132
|
+
}
|
|
133
|
+
}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
// src/cli/commands/asset-dispose-command.ts
|
|
2
|
+
//
|
|
3
|
+
// `peaks asset dispose` — trace-only / retain / destroy. Split out of
|
|
4
|
+
// `asset-commands.ts`; the verb name, its options, the envelope shape and
|
|
5
|
+
// every error code are unchanged.
|
|
6
|
+
import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
|
|
7
|
+
import { fail, ok } from 'peaks-loop-shared/result';
|
|
8
|
+
import { DISPOSE_MODES, createCrystallizationService, openAssetDb, resolveAssetProjectRoot } from './asset-command-shared.js';
|
|
9
|
+
function printInvalidDisposeMode(io, options) {
|
|
10
|
+
printResult(io, fail('asset.dispose', 'ASSET_INVALID_MODE', `--mode must be one of: ${DISPOSE_MODES.join('|')}`, { mode: options.mode }, ['Pass --mode trace_only / retain / destroy.']), options.json);
|
|
11
|
+
process.exitCode = 1;
|
|
12
|
+
}
|
|
13
|
+
function printDisposeEventNotFound(io, options) {
|
|
14
|
+
printResult(io, fail('asset.dispose', 'ASSET_EVENT_NOT_FOUND', `crystallization event '${options.crystallizationEvent}' not found`, { eventId: options.crystallizationEvent }, ['Verify the event id.']), options.json);
|
|
15
|
+
process.exitCode = 1;
|
|
16
|
+
}
|
|
17
|
+
/** `retain` → no DB change; the user wants to keep the event as evidence. */
|
|
18
|
+
function printDisposeRetained(io, existing, mode, json) {
|
|
19
|
+
printResult(io, ok('asset.dispose', {
|
|
20
|
+
crystallization_event_id: existing.id,
|
|
21
|
+
mode,
|
|
22
|
+
lifecycle_status: existing.lifecycle_status,
|
|
23
|
+
note: 'no DB change; event retained as-is'
|
|
24
|
+
}, [], ['Run `peaks asset status --loop <id>` to inspect the lifecycle state of the linked assets.']), json);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* `destroy` → retire the created/updated loop_release rows as well. We do NOT
|
|
28
|
+
* delete rows — retirement is a status flip (spec §5.6).
|
|
29
|
+
*/
|
|
30
|
+
function retireLinkedLoops(db, updated) {
|
|
31
|
+
const retireLoop = db.prepare("UPDATE loop_release SET lifecycle_status = 'retired' WHERE id IN (?, ?)");
|
|
32
|
+
const ids = [
|
|
33
|
+
updated.created_loop_release_id ?? null,
|
|
34
|
+
updated.updated_loop_release_id ?? null
|
|
35
|
+
].filter((x) => x !== null);
|
|
36
|
+
for (const id of ids) {
|
|
37
|
+
retireLoop.run(id, id);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
function printDisposeResult(io, outcome, json) {
|
|
41
|
+
printResult(io, ok('asset.dispose', {
|
|
42
|
+
crystallization_event_id: outcome.existing.id,
|
|
43
|
+
mode: outcome.mode,
|
|
44
|
+
lifecycle_status: outcome.updated?.lifecycle_status ?? 'retired',
|
|
45
|
+
retired_assets: outcome.mode === 'destroy' ? 'loop_release retired (no rows deleted)' : 'none',
|
|
46
|
+
nextActions: ['Run `peaks asset status` to confirm the lifecycle transition.']
|
|
47
|
+
}, [], []), json);
|
|
48
|
+
}
|
|
49
|
+
function printDisposeFailure(io, err, options) {
|
|
50
|
+
printResult(io, fail('asset.dispose', 'ASSET_DISPOSE_FAILED', getErrorMessage(err), { eventId: options.crystallizationEvent }, ['Verify the event id and --mode flag.']), options.json);
|
|
51
|
+
process.exitCode = 1;
|
|
52
|
+
}
|
|
53
|
+
async function runAssetDispose(io, options) {
|
|
54
|
+
try {
|
|
55
|
+
if (!DISPOSE_MODES.includes(options.mode)) {
|
|
56
|
+
printInvalidDisposeMode(io, options);
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const mode = options.mode;
|
|
60
|
+
const db = openAssetDb(resolveAssetProjectRoot(options.project));
|
|
61
|
+
try {
|
|
62
|
+
const svc = createCrystallizationService(db);
|
|
63
|
+
const existing = svc.read(options.crystallizationEvent);
|
|
64
|
+
if (!existing) {
|
|
65
|
+
printDisposeEventNotFound(io, options);
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
// trace_only → retire the event row; the source traces are
|
|
69
|
+
// untouched (workflow traces are immutable per spec §4.3).
|
|
70
|
+
// retain → no DB change; the user wants to keep the event
|
|
71
|
+
// as historical evidence.
|
|
72
|
+
// destroy → retire the event + retire the created/updated
|
|
73
|
+
// assets (no asset delete; retirement only).
|
|
74
|
+
if (mode === 'retain') {
|
|
75
|
+
printDisposeRetained(io, existing, mode, options.json);
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
const updated = svc.updateStatus(existing.id, 'retired');
|
|
79
|
+
if (mode === 'destroy' && updated) {
|
|
80
|
+
retireLinkedLoops(db, updated);
|
|
81
|
+
}
|
|
82
|
+
printDisposeResult(io, { existing, mode, updated }, options.json);
|
|
83
|
+
}
|
|
84
|
+
finally {
|
|
85
|
+
db.close();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
printDisposeFailure(io, err, options);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
export function registerAssetDisposeCommand(asset, io) {
|
|
93
|
+
addJsonOption(asset
|
|
94
|
+
.command('dispose')
|
|
95
|
+
.description('M5: dispose a crystallization event. mode=trace_only retires the event but keeps the trace; mode=retain keeps both; mode=destroy retires the event and marks the created/updated assets retired.')
|
|
96
|
+
.requiredOption('--crystallization-event <id>', 'the crystallization event id (returned by `peaks asset crystallize`)')
|
|
97
|
+
.requiredOption('--mode <mode>', `dispose mode (one of: ${DISPOSE_MODES.join('|')}; default: trace_only)`, 'trace_only')
|
|
98
|
+
.option('--project <path>', 'project root (default: cwd)')).action((options) => runAssetDispose(io, options));
|
|
99
|
+
}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
// src/cli/commands/asset-status-command.ts
|
|
2
|
+
//
|
|
3
|
+
// `peaks asset status` — loop + bee lifecycle state plus the crystallization
|
|
4
|
+
// events that reference them. Split out of `asset-commands.ts`; the verb name,
|
|
5
|
+
// its options and the envelope shape are unchanged.
|
|
6
|
+
import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
|
|
7
|
+
import { fail, ok } from 'peaks-loop-shared/result';
|
|
8
|
+
import { createCrystallizationService, openAssetDb, resolveAssetProjectRoot } from './asset-command-shared.js';
|
|
9
|
+
/** The events a `--loop` filter selects, deduplicated by id; all of them otherwise. */
|
|
10
|
+
function collectEvents(svc, loop) {
|
|
11
|
+
if (!loop) {
|
|
12
|
+
return svc.list();
|
|
13
|
+
}
|
|
14
|
+
const events = [
|
|
15
|
+
...svc.list({ created_loop_release_id: loop }),
|
|
16
|
+
...svc.list({ updated_loop_release_id: loop })
|
|
17
|
+
];
|
|
18
|
+
// Deduplicate by id.
|
|
19
|
+
const seen = new Set();
|
|
20
|
+
return events.filter((e) => {
|
|
21
|
+
const key = e?.id ?? '';
|
|
22
|
+
if (!key || seen.has(key))
|
|
23
|
+
return false;
|
|
24
|
+
seen.add(key);
|
|
25
|
+
return true;
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Companion query: loop lifecycle counts. We compute from the DB so the CLI is
|
|
30
|
+
* the single source of truth.
|
|
31
|
+
*/
|
|
32
|
+
function collectLoopCounts(db) {
|
|
33
|
+
const rows = db
|
|
34
|
+
.prepare('SELECT lifecycle_status, COUNT(*) AS n FROM loop_release GROUP BY lifecycle_status')
|
|
35
|
+
.all();
|
|
36
|
+
return rows.reduce((acc, r) => {
|
|
37
|
+
acc[r.lifecycle_status] = r.n;
|
|
38
|
+
return acc;
|
|
39
|
+
}, {});
|
|
40
|
+
}
|
|
41
|
+
/** Companion query: bee lifecycle counts, narrowed by `--bee` when given. */
|
|
42
|
+
function collectBeeCounts(db, bee) {
|
|
43
|
+
const rows = db
|
|
44
|
+
.prepare('SELECT bee_name, COUNT(*) AS n FROM bee_release GROUP BY bee_name ORDER BY bee_name ASC')
|
|
45
|
+
.all();
|
|
46
|
+
return rows.filter((r) => bee === undefined || r.bee_name === bee);
|
|
47
|
+
}
|
|
48
|
+
function statusData(options, events, loopCounts, beeCounts) {
|
|
49
|
+
return {
|
|
50
|
+
filters: {
|
|
51
|
+
...(options.loop !== undefined ? { loop: options.loop } : {}),
|
|
52
|
+
...(options.bee !== undefined ? { bee: options.bee } : {})
|
|
53
|
+
},
|
|
54
|
+
crystallization_events: events.length,
|
|
55
|
+
events: events.map((e) => ({
|
|
56
|
+
id: e?.id,
|
|
57
|
+
trigger: e?.trigger,
|
|
58
|
+
lifecycle_status: e?.lifecycle_status,
|
|
59
|
+
created_loop_release_id: e?.created_loop_release_id,
|
|
60
|
+
created_bee_release_id: e?.created_bee_release_id,
|
|
61
|
+
updated_loop_release_id: e?.updated_loop_release_id,
|
|
62
|
+
updated_bee_release_id: e?.updated_bee_release_id,
|
|
63
|
+
created_at: e?.created_at
|
|
64
|
+
})),
|
|
65
|
+
loop_release_counts_by_lifecycle: loopCounts,
|
|
66
|
+
bee_release_counts_by_name: beeCounts,
|
|
67
|
+
nextActions: [
|
|
68
|
+
options.loop
|
|
69
|
+
? `Run \`peaks loop show --loop ${options.loop}\` for the loop detail view.`
|
|
70
|
+
: "Pass --loop <id> to drill into a specific loop's crystallization history."
|
|
71
|
+
]
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
async function runAssetStatus(io, options) {
|
|
75
|
+
try {
|
|
76
|
+
const db = openAssetDb(resolveAssetProjectRoot(options.project));
|
|
77
|
+
try {
|
|
78
|
+
const svc = createCrystallizationService(db);
|
|
79
|
+
const events = collectEvents(svc, options.loop);
|
|
80
|
+
const loopCounts = collectLoopCounts(db);
|
|
81
|
+
const beeCounts = collectBeeCounts(db, options.bee);
|
|
82
|
+
printResult(io, ok('asset.status', statusData(options, events, loopCounts, beeCounts), [], []), options.json);
|
|
83
|
+
}
|
|
84
|
+
finally {
|
|
85
|
+
db.close();
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
catch (err) {
|
|
89
|
+
printResult(io, fail('asset.status', 'ASSET_STATUS_FAILED', getErrorMessage(err), { loop: options.loop, bee: options.bee }, ['Verify the loop / bee identifiers.']), options.json);
|
|
90
|
+
process.exitCode = 1;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
export function registerAssetStatusCommand(asset, io) {
|
|
94
|
+
addJsonOption(asset
|
|
95
|
+
.command('status')
|
|
96
|
+
.description('M5: list loop + bee lifecycle state. With --loop, returns the loop + all linked bee_releases + all crystallization events referencing them.')
|
|
97
|
+
.option('--loop <id>', 'filter by loop_release id')
|
|
98
|
+
.option('--bee <name>', 'filter by bee_name')
|
|
99
|
+
.option('--project <path>', 'project root (default: cwd)')).action((options) => runAssetStatus(io, options));
|
|
100
|
+
}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `peaks audit artifact` runners — first-class CLI surface for the 4 audit
|
|
3
|
+
* artifact types. Replaces the 2026-06-22 "hand `git add` into
|
|
4
|
+
* .peaks/memory/" anti-pattern that left 4 orphan files. Each kind routes to
|
|
5
|
+
* exactly one writer in artifact-writer.ts; the writer enforces canonical
|
|
6
|
+
* frontmatter, so the memory-shape guard never fires for new writes.
|
|
7
|
+
*
|
|
8
|
+
* The action body moved out of `audit-commands.ts` verbatim; the registrar now
|
|
9
|
+
* only wires the commands and delegates. Every envelope, error code and hint
|
|
10
|
+
* string is unchanged.
|
|
11
|
+
*/
|
|
12
|
+
import { type ProgramIO } from '../cli-helpers.js';
|
|
13
|
+
import { type ArtifactWriteOptions } from './audit-command-shared.js';
|
|
14
|
+
export declare const ARTIFACT_GROUP_DESCRIPTION = "Manage audit artifacts (decision / prompt / machine-output / narrative) under .peaks/memory/";
|
|
15
|
+
export declare const ARTIFACT_WRITE_DESCRIPTION = "Persist a single audit artifact to .peaks/memory/ via the artifact-writer (canonical frontmatter)";
|
|
16
|
+
export declare function runArtifactWrite(options: ArtifactWriteOptions, io: ProgramIO): void;
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `peaks audit artifact` runners — first-class CLI surface for the 4 audit
|
|
3
|
+
* artifact types. Replaces the 2026-06-22 "hand `git add` into
|
|
4
|
+
* .peaks/memory/" anti-pattern that left 4 orphan files. Each kind routes to
|
|
5
|
+
* exactly one writer in artifact-writer.ts; the writer enforces canonical
|
|
6
|
+
* frontmatter, so the memory-shape guard never fires for new writes.
|
|
7
|
+
*
|
|
8
|
+
* The action body moved out of `audit-commands.ts` verbatim; the registrar now
|
|
9
|
+
* only wires the commands and delegates. Every envelope, error code and hint
|
|
10
|
+
* string is unchanged.
|
|
11
|
+
*/
|
|
12
|
+
import { existsSync, readFileSync } from 'node:fs';
|
|
13
|
+
import { resolve } from 'node:path';
|
|
14
|
+
import { fail, ok } from 'peaks-loop-shared/result';
|
|
15
|
+
import { writeDecision, writeMachineOutput, writeNarrative, writePrompt } from '../../services/audit/artifact-writer.js';
|
|
16
|
+
import { parseRedLineAuditInput, RedLineAuditInputError } from '../../services/audit/red-line-audit-input.js';
|
|
17
|
+
import { getErrorMessage, printResult } from '../cli-helpers.js';
|
|
18
|
+
import { isSupportedArtifactKind, PROJECT_PATH_HINT, SUPPORTED_ARTIFACT_KINDS, validateProjectRoot } from './audit-command-shared.js';
|
|
19
|
+
import { emptyArtifactWriteRecord } from './audit-refusal-data.js';
|
|
20
|
+
export const ARTIFACT_GROUP_DESCRIPTION = 'Manage audit artifacts (decision / prompt / machine-output / narrative) under .peaks/memory/';
|
|
21
|
+
export const ARTIFACT_WRITE_DESCRIPTION = 'Persist a single audit artifact to .peaks/memory/ via the artifact-writer (canonical frontmatter)';
|
|
22
|
+
const INPUT_PATH_HINT = 'Verify the --input path is correct (relative paths resolve against cwd)';
|
|
23
|
+
/** Length of the `YYYY-MM-DD` prefix of an ISO timestamp. */
|
|
24
|
+
const ISO_DATE_LENGTH = 10;
|
|
25
|
+
/**
|
|
26
|
+
* Names the unreachable `--kind` without tripping the template-expression rule:
|
|
27
|
+
* by the time the `default` arm runs, the narrowing has reduced `kind` to
|
|
28
|
+
* `never`, so the message is built from a `string` parameter instead.
|
|
29
|
+
*/
|
|
30
|
+
function unreachableKindError(kind) {
|
|
31
|
+
return new Error(`unreachable: kind=${kind}`);
|
|
32
|
+
}
|
|
33
|
+
function refuseArtifactWrite(refusal) {
|
|
34
|
+
printResult(refusal.io, fail('audit.artifact.write', refusal.code, refusal.message, emptyArtifactWriteRecord(refusal.kind), refusal.nextActions), refusal.json);
|
|
35
|
+
process.exitCode = 1;
|
|
36
|
+
}
|
|
37
|
+
function writeByKind(request) {
|
|
38
|
+
const writeOpts = {
|
|
39
|
+
projectRoot: request.projectRoot,
|
|
40
|
+
dryRun: request.dryRun,
|
|
41
|
+
...(request.rid ? { rid: request.rid } : {})
|
|
42
|
+
};
|
|
43
|
+
switch (request.kind) {
|
|
44
|
+
case 'prompt': {
|
|
45
|
+
const body = readFileSync(request.inputAbs, 'utf8');
|
|
46
|
+
return writePrompt({ name: request.baseName, description: request.description, body }, writeOpts);
|
|
47
|
+
}
|
|
48
|
+
case 'machine-output': {
|
|
49
|
+
const json = readFileSync(request.inputAbs, 'utf8');
|
|
50
|
+
return writeMachineOutput({ name: request.baseName, description: request.description, json }, writeOpts);
|
|
51
|
+
}
|
|
52
|
+
case 'narrative': {
|
|
53
|
+
const body = readFileSync(request.inputAbs, 'utf8');
|
|
54
|
+
return writeNarrative({ name: request.baseName, description: request.description, body }, writeOpts);
|
|
55
|
+
}
|
|
56
|
+
case 'decision': {
|
|
57
|
+
// `--input` is a RedLineAudit JSON document — typically
|
|
58
|
+
// an archived `peaks audit static` result — validated field by field
|
|
59
|
+
// before it reaches the writer, because the writer renders whatever
|
|
60
|
+
// it is given into a memory record with no further checks.
|
|
61
|
+
// `--name` and `--description` do not apply: the decision slug and
|
|
62
|
+
// title come from the scan date (and `--rid`), exactly as
|
|
63
|
+
// `peaks audit static --record` derives them.
|
|
64
|
+
const audit = parseRedLineAuditInput(readFileSync(request.inputAbs, 'utf8'));
|
|
65
|
+
return writeDecision(audit, writeOpts);
|
|
66
|
+
}
|
|
67
|
+
default: {
|
|
68
|
+
// Unreachable: isSupportedArtifactKind already filtered.
|
|
69
|
+
throw unreachableKindError(request.kind);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
function artifactWriteNextActions(record) {
|
|
74
|
+
return [
|
|
75
|
+
`Artifact written via ${record.kind} writer.`,
|
|
76
|
+
record.indexSynced
|
|
77
|
+
? 'Memory index regenerated; entry will appear in `peaks project memories` on next read.'
|
|
78
|
+
: 'Memory index NOT regenerated; run `peaks project memories --project <root>` to refresh.'
|
|
79
|
+
];
|
|
80
|
+
}
|
|
81
|
+
function persistArtifact(request) {
|
|
82
|
+
let record;
|
|
83
|
+
try {
|
|
84
|
+
record = writeByKind(request);
|
|
85
|
+
}
|
|
86
|
+
catch (err) {
|
|
87
|
+
// A malformed decision input is the caller's document, not a write
|
|
88
|
+
// failure: name it as input so the remedy reads as "fix the JSON field".
|
|
89
|
+
refuseArtifactWrite({
|
|
90
|
+
io: request.io,
|
|
91
|
+
json: request.json,
|
|
92
|
+
kind: request.kind,
|
|
93
|
+
code: err instanceof RedLineAuditInputError ? 'AUDIT_ARTIFACT_INPUT_INVALID' : 'WRITE_FAILED',
|
|
94
|
+
message: getErrorMessage(err),
|
|
95
|
+
nextActions: err instanceof RedLineAuditInputError
|
|
96
|
+
? [
|
|
97
|
+
'Inspect the named field; --kind decision takes the JSON shape `peaks audit static --json` prints.'
|
|
98
|
+
]
|
|
99
|
+
: ['Inspect the error message; for --kind machine-output ensure --input is valid JSON']
|
|
100
|
+
});
|
|
101
|
+
return;
|
|
102
|
+
}
|
|
103
|
+
printResult(request.io, ok('audit.artifact.write', record, [], artifactWriteNextActions(record)), request.json);
|
|
104
|
+
}
|
|
105
|
+
/**
|
|
106
|
+
* The three refusals `--project`, `--kind` and `--input` can earn, in the
|
|
107
|
+
* order the original action checked them. Prints the envelope and sets the
|
|
108
|
+
* exit code on failure.
|
|
109
|
+
*/
|
|
110
|
+
function precheckArtifactWrite(options, io) {
|
|
111
|
+
const validation = validateProjectRoot(options.project);
|
|
112
|
+
if (!validation.ok) {
|
|
113
|
+
refuseArtifactWrite({
|
|
114
|
+
io,
|
|
115
|
+
json: options.json,
|
|
116
|
+
kind: 'narrative',
|
|
117
|
+
code: validation.code,
|
|
118
|
+
message: validation.message,
|
|
119
|
+
nextActions: [PROJECT_PATH_HINT]
|
|
120
|
+
});
|
|
121
|
+
return { ok: false };
|
|
122
|
+
}
|
|
123
|
+
if (!isSupportedArtifactKind(options.kind)) {
|
|
124
|
+
refuseArtifactWrite({
|
|
125
|
+
io,
|
|
126
|
+
json: options.json,
|
|
127
|
+
kind: 'narrative',
|
|
128
|
+
code: 'INVALID_KIND',
|
|
129
|
+
message: `Unknown --kind "${options.kind}". Supported: ${SUPPORTED_ARTIFACT_KINDS.join(', ')}.`,
|
|
130
|
+
nextActions: [
|
|
131
|
+
`Re-run with --kind <one of ${SUPPORTED_ARTIFACT_KINDS.join(' | ')}>`,
|
|
132
|
+
'See .peaks/memory/audit-artifact-convention.md for the 4 artifact types.'
|
|
133
|
+
]
|
|
134
|
+
});
|
|
135
|
+
return { ok: false };
|
|
136
|
+
}
|
|
137
|
+
const inputAbs = resolve(options.input);
|
|
138
|
+
if (!existsSync(inputAbs)) {
|
|
139
|
+
refuseArtifactWrite({
|
|
140
|
+
io,
|
|
141
|
+
json: options.json,
|
|
142
|
+
kind: options.kind,
|
|
143
|
+
code: 'INPUT_NOT_FOUND',
|
|
144
|
+
message: `--input file not found: ${options.input}`,
|
|
145
|
+
nextActions: [INPUT_PATH_HINT]
|
|
146
|
+
});
|
|
147
|
+
return { ok: false };
|
|
148
|
+
}
|
|
149
|
+
return { ok: true, projectRoot: validation.projectRoot, kind: options.kind, inputAbs };
|
|
150
|
+
}
|
|
151
|
+
export function runArtifactWrite(options, io) {
|
|
152
|
+
const precheck = precheckArtifactWrite(options, io);
|
|
153
|
+
if (!precheck.ok) {
|
|
154
|
+
return;
|
|
155
|
+
}
|
|
156
|
+
const baseName = options.name ?? options.input.split(/[\\/]/).pop() ?? 'untitled';
|
|
157
|
+
const description = options.description ??
|
|
158
|
+
`Audit artifact (${precheck.kind}) archived via peaks audit artifact write on ${new Date().toISOString().slice(0, ISO_DATE_LENGTH)}.`;
|
|
159
|
+
persistArtifact({
|
|
160
|
+
io,
|
|
161
|
+
json: options.json,
|
|
162
|
+
kind: precheck.kind,
|
|
163
|
+
inputAbs: precheck.inputAbs,
|
|
164
|
+
baseName,
|
|
165
|
+
description,
|
|
166
|
+
projectRoot: precheck.projectRoot,
|
|
167
|
+
dryRun: options.dryRun === true,
|
|
168
|
+
...(options.rid ? { rid: options.rid } : {})
|
|
169
|
+
});
|
|
170
|
+
}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared plumbing for the `peaks audit *` command family.
|
|
3
|
+
*
|
|
4
|
+
* Split out of `audit-commands.ts` (file-size cap) so each runner module can
|
|
5
|
+
* read the option shapes, the `--project` validation and the two whitelists
|
|
6
|
+
* without importing the registrar back. Dependency direction is one-way:
|
|
7
|
+
* nothing here imports `audit-commands.ts`.
|
|
8
|
+
*/
|
|
9
|
+
import type { AuditGoalOutput } from '../../services/audit/audit-goal-types.js';
|
|
10
|
+
import type { AgentShieldState } from '../../services/audit/static-service.js';
|
|
11
|
+
import type { ArtifactKind } from '../../services/audit/artifact-writer.js';
|
|
12
|
+
import type { AuditDecisionRecord } from '../../services/audit/decision-writer.js';
|
|
13
|
+
import type { RedLineAudit } from '../../services/audit/types.js';
|
|
14
|
+
export type RedLinesOptions = {
|
|
15
|
+
project: string;
|
|
16
|
+
json?: boolean;
|
|
17
|
+
noColor?: boolean;
|
|
18
|
+
};
|
|
19
|
+
export type StaticAuditOptions = {
|
|
20
|
+
project: string;
|
|
21
|
+
json?: boolean;
|
|
22
|
+
noColor?: boolean;
|
|
23
|
+
record?: boolean;
|
|
24
|
+
rid?: string;
|
|
25
|
+
};
|
|
26
|
+
export type AuditGoalOptions = {
|
|
27
|
+
project: string;
|
|
28
|
+
need: string;
|
|
29
|
+
llmProvider?: string;
|
|
30
|
+
json?: boolean;
|
|
31
|
+
};
|
|
32
|
+
export type ArtifactWriteOptions = {
|
|
33
|
+
project: string;
|
|
34
|
+
kind: string;
|
|
35
|
+
input: string;
|
|
36
|
+
description?: string;
|
|
37
|
+
name?: string;
|
|
38
|
+
rid?: string;
|
|
39
|
+
dryRun?: boolean;
|
|
40
|
+
json?: boolean;
|
|
41
|
+
};
|
|
42
|
+
export type ProseRatioOptions = {
|
|
43
|
+
project: string;
|
|
44
|
+
target: string;
|
|
45
|
+
json?: boolean;
|
|
46
|
+
};
|
|
47
|
+
export declare const SUPPORTED_ARTIFACT_KINDS: readonly ArtifactKind[];
|
|
48
|
+
export declare function isSupportedArtifactKind(value: string): value is ArtifactKind;
|
|
49
|
+
/** Whitelist of supported `--llm-provider` values for `peaks audit goal`. */
|
|
50
|
+
export declare const SUPPORTED_LLM_PROVIDERS: readonly ["anthropic", "stub"];
|
|
51
|
+
export type SupportedLlmProvider = (typeof SUPPORTED_LLM_PROVIDERS)[number];
|
|
52
|
+
/**
|
|
53
|
+
* The real provider is the default: `peaks audit goal` is the entry gate for
|
|
54
|
+
* every peaks-* workflow, so it must audit by default and only scaffold when
|
|
55
|
+
* a caller explicitly asks for `stub`.
|
|
56
|
+
*/
|
|
57
|
+
export declare const DEFAULT_LLM_PROVIDER: SupportedLlmProvider;
|
|
58
|
+
export declare function isSupportedLlmProvider(value: string): value is SupportedLlmProvider;
|
|
59
|
+
/** The one hint every `--project` refusal carries, verbatim. */
|
|
60
|
+
export declare const PROJECT_PATH_HINT = "Verify the project path exists and is a directory";
|
|
61
|
+
/** The one hint every scanner-failure refusal carries, verbatim. */
|
|
62
|
+
export declare const SCANNER_HINT = "Inspect scanner logs and re-run with the same --project path";
|
|
63
|
+
/** `--project` is valid only when it resolves to an existing directory. */
|
|
64
|
+
export type ProjectRootValidation = {
|
|
65
|
+
ok: true;
|
|
66
|
+
projectRoot: string;
|
|
67
|
+
} | {
|
|
68
|
+
ok: false;
|
|
69
|
+
code: string;
|
|
70
|
+
message: string;
|
|
71
|
+
};
|
|
72
|
+
export declare function validateProjectRoot(projectArg: string): ProjectRootValidation;
|
|
73
|
+
/** `audit-failed` is a failure envelope's status — never a scaffold, never a success. */
|
|
74
|
+
export type AuditGoalStatus = 'audit-complete' | 'scaffold-only' | 'audit-failed';
|
|
75
|
+
export interface AuditGoalData {
|
|
76
|
+
readonly status: AuditGoalStatus;
|
|
77
|
+
/** Which LLM produced (or failed to produce) the audit. `unresolved` = rejected before binding. */
|
|
78
|
+
readonly providerBinding: 'anthropic-messages-api' | 'stub' | 'unresolved';
|
|
79
|
+
readonly need: string;
|
|
80
|
+
readonly projectRoot: string;
|
|
81
|
+
/** The validated 6-dimension audit. Present on success only. */
|
|
82
|
+
readonly result?: AuditGoalOutput;
|
|
83
|
+
/** The bound model. Present on a real run only. */
|
|
84
|
+
readonly model?: string;
|
|
85
|
+
/**
|
|
86
|
+
* Environment variables the binding needed and did not find. Present on a
|
|
87
|
+
* binding failure only, and verbatim: `fail()` redacts `message`, so this
|
|
88
|
+
* is the channel that reliably names what the operator must set.
|
|
89
|
+
*/
|
|
90
|
+
readonly missingEnv?: readonly string[];
|
|
91
|
+
}
|
|
92
|
+
export interface StaticAuditData {
|
|
93
|
+
readonly audit: RedLineAudit;
|
|
94
|
+
readonly agentShield: AgentShieldState;
|
|
95
|
+
/** Populated only when `--record` is passed. Persisted decision record path. */
|
|
96
|
+
readonly decision?: AuditDecisionRecord;
|
|
97
|
+
}
|