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,45 @@
|
|
|
1
|
+
// src/cli/commands/asset-command-shared.ts
|
|
2
|
+
//
|
|
3
|
+
// The flag parsers, project/db bootstrap and service wiring the three
|
|
4
|
+
// `peaks asset` verbs share. Split out of `asset-commands.ts` so each verb can
|
|
5
|
+
// live in its own module without repeating the same twelve-line construction.
|
|
6
|
+
import { existsSync, mkdirSync } from 'node:fs';
|
|
7
|
+
import { join } from 'node:path';
|
|
8
|
+
import { openStateDb } from '../../services/skillhub/sqlite-store.js';
|
|
9
|
+
import { CrystallizationService, CRYSTALLIZATION_TRIGGERS } from '../../services/crystallization/index.js';
|
|
10
|
+
import { LoopReleaseSchema } from '../../services/loop/loop-release-types.js';
|
|
11
|
+
import { insertLoopRelease } from '../../services/loop/loop-release-store.js';
|
|
12
|
+
import { insertLoopBeeRelation } from '../../services/loop/loop-bee-relation-store.js';
|
|
13
|
+
import { LoopBeeRelationSchema } from '../../services/loop/loop-bee-relation-types.js';
|
|
14
|
+
import { findProjectRoot } from '../../services/config/config-safety.js';
|
|
15
|
+
export function collectRepeatable(value, previous) {
|
|
16
|
+
if (Array.isArray(previous))
|
|
17
|
+
return [...previous, value];
|
|
18
|
+
return [value];
|
|
19
|
+
}
|
|
20
|
+
export const DISPOSE_MODES = ['trace_only', 'retain', 'destroy'];
|
|
21
|
+
export function parseTriggerFlag(raw) {
|
|
22
|
+
return CRYSTALLIZATION_TRIGGERS.includes(raw)
|
|
23
|
+
? raw
|
|
24
|
+
: null;
|
|
25
|
+
}
|
|
26
|
+
/** `--project`, else the nearest project root above cwd, else cwd. */
|
|
27
|
+
export function resolveAssetProjectRoot(project) {
|
|
28
|
+
return project ?? findProjectRoot(process.cwd()) ?? process.cwd();
|
|
29
|
+
}
|
|
30
|
+
/** Ensure `<projectRoot>/.peaks/` exists and open its `state.db`. */
|
|
31
|
+
export function openAssetDb(projectRoot) {
|
|
32
|
+
if (!existsSync(join(projectRoot, '.peaks'))) {
|
|
33
|
+
mkdirSync(join(projectRoot, '.peaks'), { recursive: true });
|
|
34
|
+
}
|
|
35
|
+
return openStateDb(join(projectRoot, '.peaks', 'state.db'));
|
|
36
|
+
}
|
|
37
|
+
/** The CrystallizationService wiring every asset verb repeats, built once. */
|
|
38
|
+
export function createCrystallizationService(db) {
|
|
39
|
+
return new CrystallizationService(db, {
|
|
40
|
+
loopReleaseSchema: LoopReleaseSchema,
|
|
41
|
+
loopBeeRelationSchema: LoopBeeRelationSchema,
|
|
42
|
+
insertLoopRelease: insertLoopRelease,
|
|
43
|
+
insertLoopBeeRelation: insertLoopBeeRelation
|
|
44
|
+
});
|
|
45
|
+
}
|
|
@@ -39,7 +39,12 @@
|
|
|
39
39
|
* Defense in depth: the CrystallizationService enforces the
|
|
40
40
|
* pre-run gate and the brief-section guard; the CLI only
|
|
41
41
|
* translates flags into the service payload.
|
|
42
|
+
*
|
|
43
|
+
* The verb implementations live beside this file, one module per verb:
|
|
44
|
+
* `asset-crystallize-command.ts`, `asset-dispose-command.ts`,
|
|
45
|
+
* `asset-status-command.ts`, with their shared bootstrap in
|
|
46
|
+
* `asset-command-shared.ts`.
|
|
42
47
|
*/
|
|
43
48
|
import type { Command } from 'commander';
|
|
44
|
-
import {
|
|
49
|
+
import type { ProgramIO } from '../cli-helpers.js';
|
|
45
50
|
export declare function registerAssetCommands(program: Command, io: ProgramIO): void;
|
|
@@ -39,29 +39,15 @@
|
|
|
39
39
|
* Defense in depth: the CrystallizationService enforces the
|
|
40
40
|
* pre-run gate and the brief-section guard; the CLI only
|
|
41
41
|
* translates flags into the service payload.
|
|
42
|
+
*
|
|
43
|
+
* The verb implementations live beside this file, one module per verb:
|
|
44
|
+
* `asset-crystallize-command.ts`, `asset-dispose-command.ts`,
|
|
45
|
+
* `asset-status-command.ts`, with their shared bootstrap in
|
|
46
|
+
* `asset-command-shared.ts`.
|
|
42
47
|
*/
|
|
43
|
-
import {
|
|
44
|
-
import {
|
|
45
|
-
import {
|
|
46
|
-
import { CrystallizationService, CrystallizationIntegrityError, BriefSectionError, safeRenderRecommendationPayload, CRYSTALLIZATION_TRIGGERS, parseEvidenceBrief } from '../../services/crystallization/index.js';
|
|
47
|
-
import { LoopReleaseSchema } from '../../services/loop/loop-release-types.js';
|
|
48
|
-
import { insertLoopRelease } from '../../services/loop/loop-release-store.js';
|
|
49
|
-
import { insertLoopBeeRelation } from '../../services/loop/loop-bee-relation-store.js';
|
|
50
|
-
import { LoopBeeRelationSchema } from '../../services/loop/loop-bee-relation-types.js';
|
|
51
|
-
import { findProjectRoot } from '../../services/config/config-safety.js';
|
|
52
|
-
import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
|
|
53
|
-
import { fail, ok } from 'peaks-loop-shared/result';
|
|
54
|
-
function collectRepeatable(value, previous) {
|
|
55
|
-
if (Array.isArray(previous))
|
|
56
|
-
return [...previous, value];
|
|
57
|
-
return [value];
|
|
58
|
-
}
|
|
59
|
-
const DISPOSE_MODES = ['trace_only', 'retain', 'destroy'];
|
|
60
|
-
function parseTriggerFlag(raw) {
|
|
61
|
-
return CRYSTALLIZATION_TRIGGERS.includes(raw)
|
|
62
|
-
? raw
|
|
63
|
-
: null;
|
|
64
|
-
}
|
|
48
|
+
import { registerAssetCrystallizeCommand } from './asset-crystallize-command.js';
|
|
49
|
+
import { registerAssetDisposeCommand } from './asset-dispose-command.js';
|
|
50
|
+
import { registerAssetStatusCommand } from './asset-status-command.js';
|
|
65
51
|
export function registerAssetCommands(program, io) {
|
|
66
52
|
// Reuse the existing `asset` parent if one is registered; the
|
|
67
53
|
// add-a-new-subcommand-check-for-existing-top-level-first rule
|
|
@@ -71,354 +57,7 @@ export function registerAssetCommands(program, io) {
|
|
|
71
57
|
program
|
|
72
58
|
.command('asset')
|
|
73
59
|
.description('M5: cross-asset crystallization surface (crystallize / dispose / status — spec §5 / §7.4)');
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
.description('M5: persist a new loop_release + main_bee_release + loop_bee_relation + crystallization_event in a single transaction. Enforces the pre-run gate (task_status=completed AND gates_passed=true AND evidence_collected=true; AC-4 / RL-2) and the brief-section guard (all 4 sections required; AC-15 / RL-7).')
|
|
78
|
-
.requiredOption('--from-task <id>', "the candidate task id (must be 'completed' with gates_passed + evidence_collected)")
|
|
79
|
-
.requiredOption('--loop-id <id>', 'kebab-case loop id, e.g. loop-onboarding-research')
|
|
80
|
-
.requiredOption('--loop-name <name>', 'NL display name')
|
|
81
|
-
.requiredOption('--loop-scenario <text>', 'long-form scenario text (what real problem the loop solves)')
|
|
82
|
-
.requiredOption('--loop-trigger-policy <text>', 'trigger policy (NL intent match)')
|
|
83
|
-
.requiredOption('--loop-interaction-policy <text>', 'interaction policy (Human-NL-Choice-Only is the default)')
|
|
84
|
-
.requiredOption('--loop-feedback-policy <text>', 'feedback policy (what feedback enters long-term memory)')
|
|
85
|
-
.requiredOption('--loop-evolution-policy <text>', 'evolution policy (Darwin-style ratchet rules)')
|
|
86
|
-
.requiredOption('--loop-success-criterion <text>', 'declarative success criterion (repeatable)', collectRepeatable, [])
|
|
87
|
-
.requiredOption('--loop-evaluator-policy <text>', 'evaluator policy line (repeatable)', collectRepeatable, [])
|
|
88
|
-
.requiredOption('--loop-version <semver>', 'loop version (e.g. 0.1.0)')
|
|
89
|
-
.requiredOption('--bee-name <name>', 'main bee name (kebab-case)')
|
|
90
|
-
.requiredOption('--bee-version <semver>', 'bee version (e.g. 0.1.0)')
|
|
91
|
-
.requiredOption('--bee-description <text>', 'main bee description (manifest-level)')
|
|
92
|
-
.requiredOption('--bee-relation-reason <text>', 'NL reason for the main bee relation')
|
|
93
|
-
.requiredOption('--brief-what-happened <text>', 'brief section: what_happened (1-2 sentence factual account)')
|
|
94
|
-
.requiredOption('--brief-why-it-matters <text>', 'brief section: why_it_matters (1-2 sentence explanation)')
|
|
95
|
-
.requiredOption('--brief-what-learned <text>', 'brief section: what_learned (1-2 sentence learning)')
|
|
96
|
-
.requiredOption('--brief-what-action <text>', 'brief section: what_action (1 sentence recommended action)')
|
|
97
|
-
.option('--brief-bullet <bullet>', 'structured bullet supporting the brief (repeatable)', collectRepeatable, [])
|
|
98
|
-
.option('--source-trace <id>', 'workflow trace id backing the brief (repeatable)', collectRepeatable, [])
|
|
99
|
-
.option('--evaluator-summary <text>', 'evaluator one-liner (independent scorers)', '')
|
|
100
|
-
.option('--user-decision-summary <text>', 'user decision summary (NL)', '')
|
|
101
|
-
.option('--bee-intent-raw <text>', 'optional bee user_intent_raw')
|
|
102
|
-
.option('--bee-parent-version <semver>', 'optional parent_version')
|
|
103
|
-
.option('--bee-changelog <text>', 'optional changelog')
|
|
104
|
-
.option('--trigger <name>', `crystallization trigger (one of: ${CRYSTALLIZATION_TRIGGERS.join('|')})`, 'user_explicit')
|
|
105
|
-
.option('--project <path>', 'project root (default: cwd)')).action((options) => {
|
|
106
|
-
try {
|
|
107
|
-
const trigger = parseTriggerFlag(options.trigger);
|
|
108
|
-
if (!trigger) {
|
|
109
|
-
printResult(io, fail('asset.crystallize', 'ASSET_INVALID_TRIGGER', `--trigger must be one of: ${CRYSTALLIZATION_TRIGGERS.join('|')}`, { trigger: options.trigger }, ['Pass a valid --trigger value.']), options.json);
|
|
110
|
-
process.exitCode = 1;
|
|
111
|
-
return;
|
|
112
|
-
}
|
|
113
|
-
// Build the brief from CLI flags and re-validate it through
|
|
114
|
-
// the canonical schema (so a partial brief is caught BEFORE
|
|
115
|
-
// any DB side effects fire).
|
|
116
|
-
const candidateBrief = {
|
|
117
|
-
what_happened: options.briefWhatHappened,
|
|
118
|
-
why_it_matters: options.briefWhyItMatters,
|
|
119
|
-
what_learned: options.briefWhatLearned,
|
|
120
|
-
what_action: options.briefWhatAction
|
|
121
|
-
};
|
|
122
|
-
let brief;
|
|
123
|
-
try {
|
|
124
|
-
brief = parseEvidenceBrief(candidateBrief);
|
|
125
|
-
}
|
|
126
|
-
catch (err) {
|
|
127
|
-
if (err instanceof BriefSectionError) {
|
|
128
|
-
const briefErr = err;
|
|
129
|
-
printResult(io, fail('asset.crystallize', 'MISSING_BRIEF_SECTION', briefErr.message, { findings: [...briefErr.findings], flagsProvided: Object.keys(candidateBrief) }, [
|
|
130
|
-
'Pass ALL FOUR brief sections via --brief-what-happened / --brief-why-it-matters / --brief-what-learned / --brief-what-action.',
|
|
131
|
-
'The CLI refuses to render a recommendation without a complete 4-section brief (spec §4.7 / RL-7).'
|
|
132
|
-
]), options.json);
|
|
133
|
-
process.exitCode = 1;
|
|
134
|
-
return;
|
|
135
|
-
}
|
|
136
|
-
throw err;
|
|
137
|
-
}
|
|
138
|
-
// Render the recommendation envelope up-front so the CLI can
|
|
139
|
-
// refuse to write if any brief section is missing. This is
|
|
140
|
-
// the same code path the crystallization service uses.
|
|
141
|
-
const recommendation = safeRenderRecommendationPayload({
|
|
142
|
-
brief,
|
|
143
|
-
bullets: options.briefBullet ?? [],
|
|
144
|
-
source_trace_pointers: options.sourceTrace ?? [],
|
|
145
|
-
evaluator_summary: {
|
|
146
|
-
one_liner: options.evaluatorSummary ?? '',
|
|
147
|
-
risk_tags: []
|
|
148
|
-
}
|
|
149
|
-
});
|
|
150
|
-
if (!recommendation.ok) {
|
|
151
|
-
printResult(io, fail('asset.crystallize', recommendation.code ?? 'MISSING_BRIEF_SECTION', 'recommendation envelope rejected — brief is missing one of its 4 sections', { findings: recommendation.findings, briefProvided: candidateBrief }, [
|
|
152
|
-
'Pass ALL FOUR brief sections via the matching CLI flags.',
|
|
153
|
-
'Counts in --brief-bullet may support the brief; they do NOT replace it (spec §4.7 / RL-7).'
|
|
154
|
-
]), options.json);
|
|
155
|
-
process.exitCode = 1;
|
|
156
|
-
return;
|
|
157
|
-
}
|
|
158
|
-
const projectRoot = options.project ?? findProjectRoot(process.cwd()) ?? process.cwd();
|
|
159
|
-
if (!existsSync(join(projectRoot, '.peaks'))) {
|
|
160
|
-
mkdirSync(join(projectRoot, '.peaks'), { recursive: true });
|
|
161
|
-
}
|
|
162
|
-
const db = openStateDb(join(projectRoot, '.peaks', 'state.db'));
|
|
163
|
-
try {
|
|
164
|
-
const svc = new CrystallizationService(db, {
|
|
165
|
-
loopReleaseSchema: LoopReleaseSchema,
|
|
166
|
-
loopBeeRelationSchema: LoopBeeRelationSchema,
|
|
167
|
-
insertLoopRelease: insertLoopRelease,
|
|
168
|
-
insertLoopBeeRelation: insertLoopBeeRelation
|
|
169
|
-
});
|
|
170
|
-
const result = svc.crystallize({
|
|
171
|
-
task: {
|
|
172
|
-
task_id: options.fromTask,
|
|
173
|
-
task_status: 'completed',
|
|
174
|
-
gates_passed: true,
|
|
175
|
-
evidence_collected: true
|
|
176
|
-
},
|
|
177
|
-
loop_input: {
|
|
178
|
-
id: options.loopId,
|
|
179
|
-
name: options.loopName,
|
|
180
|
-
scenario: options.loopScenario,
|
|
181
|
-
trigger_policy: options.loopTriggerPolicy,
|
|
182
|
-
success_criteria: options.loopSuccessCriterion,
|
|
183
|
-
interaction_policy: options.loopInteractionPolicy,
|
|
184
|
-
feedback_policy: options.loopFeedbackPolicy,
|
|
185
|
-
evolution_policy: options.loopEvolutionPolicy,
|
|
186
|
-
evaluator_policy: options.loopEvaluatorPolicy,
|
|
187
|
-
linked_bees: [],
|
|
188
|
-
run_history: [],
|
|
189
|
-
crystallization_evidence: [],
|
|
190
|
-
lifecycle_status: 'candidate',
|
|
191
|
-
version: options.loopVersion
|
|
192
|
-
},
|
|
193
|
-
bee_input: {
|
|
194
|
-
bee_name: options.beeName,
|
|
195
|
-
version: options.beeVersion,
|
|
196
|
-
description: options.beeDescription,
|
|
197
|
-
...(options.beeIntentRaw !== undefined
|
|
198
|
-
? { user_intent_raw: options.beeIntentRaw }
|
|
199
|
-
: {}),
|
|
200
|
-
...(options.beeParentVersion !== undefined
|
|
201
|
-
? { parent_version: options.beeParentVersion }
|
|
202
|
-
: {}),
|
|
203
|
-
...(options.beeChangelog !== undefined ? { changelog: options.beeChangelog } : {})
|
|
204
|
-
},
|
|
205
|
-
bee_relation_reason: options.beeRelationReason,
|
|
206
|
-
evidence_brief: brief,
|
|
207
|
-
evidence_bullets: options.briefBullet ?? [],
|
|
208
|
-
source_trace_pointers: options.sourceTrace ?? [],
|
|
209
|
-
...(options.evaluatorSummary !== undefined
|
|
210
|
-
? { evaluator_summary: options.evaluatorSummary }
|
|
211
|
-
: {}),
|
|
212
|
-
...(options.userDecisionSummary !== undefined
|
|
213
|
-
? { user_decision_summary: options.userDecisionSummary }
|
|
214
|
-
: {}),
|
|
215
|
-
trigger
|
|
216
|
-
});
|
|
217
|
-
printResult(io, ok('asset.crystallize', {
|
|
218
|
-
recommendation: {
|
|
219
|
-
brief: recommendation.payload.brief,
|
|
220
|
-
bullets: recommendation.payload.bullets,
|
|
221
|
-
source_trace_pointers: recommendation.payload.source_trace_pointers,
|
|
222
|
-
evaluator_summary: recommendation.payload.evaluator_summary
|
|
223
|
-
},
|
|
224
|
-
result,
|
|
225
|
-
nextActions: [
|
|
226
|
-
`Run \`peaks loop show --loop ${result.loop_release_id}\` to inspect the new loop_release.`,
|
|
227
|
-
`Run \`peaks asset dispose --crystallization-event ${result.crystallization_event_id} --mode trace_only\` to retire the event without touching the asset.`
|
|
228
|
-
]
|
|
229
|
-
}, [], [
|
|
230
|
-
'The CLI has surfaced a complete 4-section brief; the LLM should now drive the user through AskUserQuestion picks (spec §5.3).'
|
|
231
|
-
]), options.json);
|
|
232
|
-
}
|
|
233
|
-
finally {
|
|
234
|
-
db.close();
|
|
235
|
-
}
|
|
236
|
-
}
|
|
237
|
-
catch (err) {
|
|
238
|
-
if (err instanceof CrystallizationIntegrityError) {
|
|
239
|
-
const integrityErr = err;
|
|
240
|
-
printResult(io, fail('asset.crystallize', integrityErr.code, integrityErr.message, { findings: [...integrityErr.findings] }, [
|
|
241
|
-
integrityErr.code === 'CRYSTALLIZATION_PRE_RUN'
|
|
242
|
-
? 'Re-shape the candidate task so task_status=completed AND gates_passed=true AND evidence_collected=true (spec §5 / RL-2).'
|
|
243
|
-
: integrityErr.code === 'MISSING_BRIEF_SECTION'
|
|
244
|
-
? 'Pass ALL FOUR brief sections (RL-7); the CLI refuses to render a recommendation without them.'
|
|
245
|
-
: 'Inspect the failure findings and re-shape the payload.'
|
|
246
|
-
]), options.json);
|
|
247
|
-
process.exitCode = 1;
|
|
248
|
-
return;
|
|
249
|
-
}
|
|
250
|
-
if (err instanceof BriefSectionError) {
|
|
251
|
-
const briefErr = err;
|
|
252
|
-
printResult(io, fail('asset.crystallize', 'MISSING_BRIEF_SECTION', briefErr.message, { findings: [...briefErr.findings] }, ['Pass all 4 brief sections (RL-7).']), options.json);
|
|
253
|
-
process.exitCode = 1;
|
|
254
|
-
return;
|
|
255
|
-
}
|
|
256
|
-
throw err;
|
|
257
|
-
}
|
|
258
|
-
});
|
|
259
|
-
// ---------- peaks asset dispose ----------
|
|
260
|
-
addJsonOption(asset
|
|
261
|
-
.command('dispose')
|
|
262
|
-
.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.')
|
|
263
|
-
.requiredOption('--crystallization-event <id>', 'the crystallization event id (returned by `peaks asset crystallize`)')
|
|
264
|
-
.requiredOption(`--mode <mode>`, `dispose mode (one of: ${DISPOSE_MODES.join('|')}; default: trace_only)`, 'trace_only')
|
|
265
|
-
.option('--project <path>', 'project root (default: cwd)')).action((options) => {
|
|
266
|
-
try {
|
|
267
|
-
if (!DISPOSE_MODES.includes(options.mode)) {
|
|
268
|
-
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);
|
|
269
|
-
process.exitCode = 1;
|
|
270
|
-
return;
|
|
271
|
-
}
|
|
272
|
-
const mode = options.mode;
|
|
273
|
-
const projectRoot = options.project ?? findProjectRoot(process.cwd()) ?? process.cwd();
|
|
274
|
-
if (!existsSync(join(projectRoot, '.peaks'))) {
|
|
275
|
-
mkdirSync(join(projectRoot, '.peaks'), { recursive: true });
|
|
276
|
-
}
|
|
277
|
-
const db = openStateDb(join(projectRoot, '.peaks', 'state.db'));
|
|
278
|
-
try {
|
|
279
|
-
const svc = new CrystallizationService(db, {
|
|
280
|
-
loopReleaseSchema: LoopReleaseSchema,
|
|
281
|
-
loopBeeRelationSchema: LoopBeeRelationSchema,
|
|
282
|
-
insertLoopRelease: insertLoopRelease,
|
|
283
|
-
insertLoopBeeRelation: insertLoopBeeRelation
|
|
284
|
-
});
|
|
285
|
-
const existing = svc.read(options.crystallizationEvent);
|
|
286
|
-
if (!existing) {
|
|
287
|
-
printResult(io, fail('asset.dispose', 'ASSET_EVENT_NOT_FOUND', `crystallization event '${options.crystallizationEvent}' not found`, { eventId: options.crystallizationEvent }, ['Verify the event id.']), options.json);
|
|
288
|
-
process.exitCode = 1;
|
|
289
|
-
return;
|
|
290
|
-
}
|
|
291
|
-
// trace_only → retire the event row; the source traces are
|
|
292
|
-
// untouched (workflow traces are immutable per spec §4.3).
|
|
293
|
-
// retain → no DB change; the user wants to keep the event
|
|
294
|
-
// as historical evidence.
|
|
295
|
-
// destroy → retire the event + retire the created/updated
|
|
296
|
-
// assets (no asset delete; retirement only).
|
|
297
|
-
if (mode === 'retain') {
|
|
298
|
-
printResult(io, ok('asset.dispose', {
|
|
299
|
-
crystallization_event_id: existing.id,
|
|
300
|
-
mode,
|
|
301
|
-
lifecycle_status: existing.lifecycle_status,
|
|
302
|
-
note: 'no DB change; event retained as-is'
|
|
303
|
-
}, [], [
|
|
304
|
-
'Run `peaks asset status --loop <id>` to inspect the lifecycle state of the linked assets.'
|
|
305
|
-
]), options.json);
|
|
306
|
-
return;
|
|
307
|
-
}
|
|
308
|
-
const updated = svc.updateStatus(existing.id, 'retired');
|
|
309
|
-
if (mode === 'destroy' && updated) {
|
|
310
|
-
// Retire the created/updated loop_release rows as well.
|
|
311
|
-
// We do NOT delete rows — retirement is a status flip
|
|
312
|
-
// (spec §5.6).
|
|
313
|
-
const retireLoop = db.prepare("UPDATE loop_release SET lifecycle_status = 'retired' WHERE id IN (?, ?)");
|
|
314
|
-
const ids = [
|
|
315
|
-
updated.created_loop_release_id ?? null,
|
|
316
|
-
updated.updated_loop_release_id ?? null
|
|
317
|
-
].filter((x) => x !== null);
|
|
318
|
-
for (const id of ids) {
|
|
319
|
-
retireLoop.run(id, id);
|
|
320
|
-
}
|
|
321
|
-
}
|
|
322
|
-
printResult(io, ok('asset.dispose', {
|
|
323
|
-
crystallization_event_id: existing.id,
|
|
324
|
-
mode,
|
|
325
|
-
lifecycle_status: updated?.lifecycle_status ?? 'retired',
|
|
326
|
-
retired_assets: mode === 'destroy' ? 'loop_release retired (no rows deleted)' : 'none',
|
|
327
|
-
nextActions: ['Run `peaks asset status` to confirm the lifecycle transition.']
|
|
328
|
-
}, [], []), options.json);
|
|
329
|
-
}
|
|
330
|
-
finally {
|
|
331
|
-
db.close();
|
|
332
|
-
}
|
|
333
|
-
}
|
|
334
|
-
catch (err) {
|
|
335
|
-
printResult(io, fail('asset.dispose', 'ASSET_DISPOSE_FAILED', getErrorMessage(err), { eventId: options.crystallizationEvent }, ['Verify the event id and --mode flag.']), options.json);
|
|
336
|
-
process.exitCode = 1;
|
|
337
|
-
}
|
|
338
|
-
});
|
|
339
|
-
// ---------- peaks asset status ----------
|
|
340
|
-
addJsonOption(asset
|
|
341
|
-
.command('status')
|
|
342
|
-
.description('M5: list loop + bee lifecycle state. With --loop, returns the loop + all linked bee_releases + all crystallization events referencing them.')
|
|
343
|
-
.option('--loop <id>', 'filter by loop_release id')
|
|
344
|
-
.option('--bee <name>', 'filter by bee_name')
|
|
345
|
-
.option('--project <path>', 'project root (default: cwd)')).action((options) => {
|
|
346
|
-
try {
|
|
347
|
-
const projectRoot = options.project ?? findProjectRoot(process.cwd()) ?? process.cwd();
|
|
348
|
-
if (!existsSync(join(projectRoot, '.peaks'))) {
|
|
349
|
-
mkdirSync(join(projectRoot, '.peaks'), { recursive: true });
|
|
350
|
-
}
|
|
351
|
-
const db = openStateDb(join(projectRoot, '.peaks', 'state.db'));
|
|
352
|
-
try {
|
|
353
|
-
const svc = new CrystallizationService(db, {
|
|
354
|
-
loopReleaseSchema: LoopReleaseSchema,
|
|
355
|
-
loopBeeRelationSchema: LoopBeeRelationSchema,
|
|
356
|
-
insertLoopRelease: insertLoopRelease,
|
|
357
|
-
insertLoopBeeRelation: insertLoopBeeRelation
|
|
358
|
-
});
|
|
359
|
-
let events = [];
|
|
360
|
-
if (options.loop) {
|
|
361
|
-
events = [
|
|
362
|
-
...svc.list({ created_loop_release_id: options.loop }),
|
|
363
|
-
...svc.list({ updated_loop_release_id: options.loop })
|
|
364
|
-
];
|
|
365
|
-
// Deduplicate by id.
|
|
366
|
-
const seen = new Set();
|
|
367
|
-
events = events.filter((e) => {
|
|
368
|
-
const key = e?.id ?? '';
|
|
369
|
-
if (!key || seen.has(key))
|
|
370
|
-
return false;
|
|
371
|
-
seen.add(key);
|
|
372
|
-
return true;
|
|
373
|
-
});
|
|
374
|
-
}
|
|
375
|
-
else {
|
|
376
|
-
events = svc.list();
|
|
377
|
-
}
|
|
378
|
-
// Companion queries: loop lifecycle counts + bee lifecycle
|
|
379
|
-
// counts. We compute from the DB so the CLI is the single
|
|
380
|
-
// source of truth.
|
|
381
|
-
const loopCounts = db
|
|
382
|
-
.prepare('SELECT lifecycle_status, COUNT(*) AS n FROM loop_release GROUP BY lifecycle_status')
|
|
383
|
-
.all().reduce((acc, r) => {
|
|
384
|
-
acc[r.lifecycle_status] = r.n;
|
|
385
|
-
return acc;
|
|
386
|
-
}, {});
|
|
387
|
-
const beeCounts = db
|
|
388
|
-
.prepare('SELECT bee_name, COUNT(*) AS n FROM bee_release GROUP BY bee_name ORDER BY bee_name ASC')
|
|
389
|
-
.all().filter((r) => options.bee === undefined || r.bee_name === options.bee);
|
|
390
|
-
printResult(io, ok('asset.status', {
|
|
391
|
-
filters: {
|
|
392
|
-
...(options.loop !== undefined ? { loop: options.loop } : {}),
|
|
393
|
-
...(options.bee !== undefined ? { bee: options.bee } : {})
|
|
394
|
-
},
|
|
395
|
-
crystallization_events: events.length,
|
|
396
|
-
events: events.map((e) => ({
|
|
397
|
-
id: e?.id,
|
|
398
|
-
trigger: e?.trigger,
|
|
399
|
-
lifecycle_status: e?.lifecycle_status,
|
|
400
|
-
created_loop_release_id: e?.created_loop_release_id,
|
|
401
|
-
created_bee_release_id: e?.created_bee_release_id,
|
|
402
|
-
updated_loop_release_id: e?.updated_loop_release_id,
|
|
403
|
-
updated_bee_release_id: e?.updated_bee_release_id,
|
|
404
|
-
created_at: e?.created_at
|
|
405
|
-
})),
|
|
406
|
-
loop_release_counts_by_lifecycle: loopCounts,
|
|
407
|
-
bee_release_counts_by_name: beeCounts,
|
|
408
|
-
nextActions: [
|
|
409
|
-
options.loop
|
|
410
|
-
? `Run \`peaks loop show --loop ${options.loop}\` for the loop detail view.`
|
|
411
|
-
: "Pass --loop <id> to drill into a specific loop's crystallization history."
|
|
412
|
-
]
|
|
413
|
-
}, [], []), options.json);
|
|
414
|
-
}
|
|
415
|
-
finally {
|
|
416
|
-
db.close();
|
|
417
|
-
}
|
|
418
|
-
}
|
|
419
|
-
catch (err) {
|
|
420
|
-
printResult(io, fail('asset.status', 'ASSET_STATUS_FAILED', getErrorMessage(err), { loop: options.loop, bee: options.bee }, ['Verify the loop / bee identifiers.']), options.json);
|
|
421
|
-
process.exitCode = 1;
|
|
422
|
-
}
|
|
423
|
-
});
|
|
60
|
+
registerAssetCrystallizeCommand(asset, io);
|
|
61
|
+
registerAssetDisposeCommand(asset, io);
|
|
62
|
+
registerAssetStatusCommand(asset, io);
|
|
424
63
|
}
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
// src/cli/commands/asset-crystallize-command.ts
|
|
2
|
+
//
|
|
3
|
+
// The commander registration for `peaks asset crystallize` — the parent
|
|
4
|
+
// command, its 28 options in their original order, and the action binding.
|
|
5
|
+
// Split out of `asset-commands.ts`; the verb name, every option's flag and
|
|
6
|
+
// description, and the envelope shape are unchanged. The action body lives in
|
|
7
|
+
// `asset-crystallize-runner.ts` and the payload builders in
|
|
8
|
+
// `asset-crystallize-payload.ts`.
|
|
9
|
+
import { CRYSTALLIZATION_TRIGGERS } from '../../services/crystallization/index.js';
|
|
10
|
+
import { addJsonOption } from '../cli-helpers.js';
|
|
11
|
+
import { collectRepeatable } from './asset-command-shared.js';
|
|
12
|
+
import { runAssetCrystallize } from './asset-crystallize-runner.js';
|
|
13
|
+
const CRYSTALLIZE_DESCRIPTION = 'M5: persist a new loop_release + main_bee_release + loop_bee_relation + crystallization_event in a single transaction. Enforces the pre-run gate (task_status=completed AND gates_passed=true AND evidence_collected=true; AC-4 / RL-2) and the brief-section guard (all 4 sections required; AC-15 / RL-7).';
|
|
14
|
+
/** `--from-task` … `--loop-version`: the task + loop_release half. */
|
|
15
|
+
function addLoopPolicyOptions(cmd) {
|
|
16
|
+
return cmd
|
|
17
|
+
.requiredOption('--from-task <id>', "the candidate task id (must be 'completed' with gates_passed + evidence_collected)")
|
|
18
|
+
.requiredOption('--loop-id <id>', 'kebab-case loop id, e.g. loop-onboarding-research')
|
|
19
|
+
.requiredOption('--loop-name <name>', 'NL display name')
|
|
20
|
+
.requiredOption('--loop-scenario <text>', 'long-form scenario text (what real problem the loop solves)')
|
|
21
|
+
.requiredOption('--loop-trigger-policy <text>', 'trigger policy (NL intent match)')
|
|
22
|
+
.requiredOption('--loop-interaction-policy <text>', 'interaction policy (Human-NL-Choice-Only is the default)')
|
|
23
|
+
.requiredOption('--loop-feedback-policy <text>', 'feedback policy (what feedback enters long-term memory)')
|
|
24
|
+
.requiredOption('--loop-evolution-policy <text>', 'evolution policy (Darwin-style ratchet rules)')
|
|
25
|
+
.requiredOption('--loop-success-criterion <text>', 'declarative success criterion (repeatable)', collectRepeatable, [])
|
|
26
|
+
.requiredOption('--loop-evaluator-policy <text>', 'evaluator policy line (repeatable)', collectRepeatable, [])
|
|
27
|
+
.requiredOption('--loop-version <semver>', 'loop version (e.g. 0.1.0)');
|
|
28
|
+
}
|
|
29
|
+
/** `--bee-name` … `--brief-what-action`: the main bee and the 4 brief sections. */
|
|
30
|
+
function addBeeAndBriefOptions(cmd) {
|
|
31
|
+
return cmd
|
|
32
|
+
.requiredOption('--bee-name <name>', 'main bee name (kebab-case)')
|
|
33
|
+
.requiredOption('--bee-version <semver>', 'bee version (e.g. 0.1.0)')
|
|
34
|
+
.requiredOption('--bee-description <text>', 'main bee description (manifest-level)')
|
|
35
|
+
.requiredOption('--bee-relation-reason <text>', 'NL reason for the main bee relation')
|
|
36
|
+
.requiredOption('--brief-what-happened <text>', 'brief section: what_happened (1-2 sentence factual account)')
|
|
37
|
+
.requiredOption('--brief-why-it-matters <text>', 'brief section: why_it_matters (1-2 sentence explanation)')
|
|
38
|
+
.requiredOption('--brief-what-learned <text>', 'brief section: what_learned (1-2 sentence learning)')
|
|
39
|
+
.requiredOption('--brief-what-action <text>', 'brief section: what_action (1 sentence recommended action)');
|
|
40
|
+
}
|
|
41
|
+
/** `--brief-bullet` … `--project`: the repeatable extras and the trigger. */
|
|
42
|
+
function addCrystallizeExtras(cmd) {
|
|
43
|
+
return cmd
|
|
44
|
+
.option('--brief-bullet <bullet>', 'structured bullet supporting the brief (repeatable)', collectRepeatable, [])
|
|
45
|
+
.option('--source-trace <id>', 'workflow trace id backing the brief (repeatable)', collectRepeatable, [])
|
|
46
|
+
.option('--evaluator-summary <text>', 'evaluator one-liner (independent scorers)', '')
|
|
47
|
+
.option('--user-decision-summary <text>', 'user decision summary (NL)', '')
|
|
48
|
+
.option('--bee-intent-raw <text>', 'optional bee user_intent_raw')
|
|
49
|
+
.option('--bee-parent-version <semver>', 'optional parent_version')
|
|
50
|
+
.option('--bee-changelog <text>', 'optional changelog')
|
|
51
|
+
.option('--trigger <name>', `crystallization trigger (one of: ${CRYSTALLIZATION_TRIGGERS.join('|')})`, 'user_explicit')
|
|
52
|
+
.option('--project <path>', 'project root (default: cwd)');
|
|
53
|
+
}
|
|
54
|
+
export function registerAssetCrystallizeCommand(asset, io) {
|
|
55
|
+
const cmd = asset.command('crystallize').description(CRYSTALLIZE_DESCRIPTION);
|
|
56
|
+
addLoopPolicyOptions(cmd);
|
|
57
|
+
addBeeAndBriefOptions(cmd);
|
|
58
|
+
addCrystallizeExtras(cmd);
|
|
59
|
+
addJsonOption(cmd).action((options) => runAssetCrystallize(io, options));
|
|
60
|
+
}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { CrystallizationService, CrystallizationTrigger, EvidenceBrief } from '../../services/crystallization/index.js';
|
|
2
|
+
import { type ProgramIO } from '../cli-helpers.js';
|
|
3
|
+
export type CrystallizeOptions = {
|
|
4
|
+
fromTask: string;
|
|
5
|
+
loopId: string;
|
|
6
|
+
loopName: string;
|
|
7
|
+
loopScenario: string;
|
|
8
|
+
loopTriggerPolicy: string;
|
|
9
|
+
loopInteractionPolicy: string;
|
|
10
|
+
loopFeedbackPolicy: string;
|
|
11
|
+
loopEvolutionPolicy: string;
|
|
12
|
+
loopSuccessCriterion: string[];
|
|
13
|
+
loopEvaluatorPolicy: string[];
|
|
14
|
+
loopVersion: string;
|
|
15
|
+
beeName: string;
|
|
16
|
+
beeVersion: string;
|
|
17
|
+
beeDescription: string;
|
|
18
|
+
beeRelationReason: string;
|
|
19
|
+
briefWhatHappened: string;
|
|
20
|
+
briefWhyItMatters: string;
|
|
21
|
+
briefWhatLearned: string;
|
|
22
|
+
briefWhatAction: string;
|
|
23
|
+
briefBullet: string[];
|
|
24
|
+
sourceTrace: string[];
|
|
25
|
+
evaluatorSummary?: string;
|
|
26
|
+
userDecisionSummary?: string;
|
|
27
|
+
beeIntentRaw?: string;
|
|
28
|
+
beeParentVersion?: string;
|
|
29
|
+
beeChangelog?: string;
|
|
30
|
+
trigger: string;
|
|
31
|
+
project?: string;
|
|
32
|
+
json?: boolean;
|
|
33
|
+
};
|
|
34
|
+
/** The four brief sections as the caller supplied them. */
|
|
35
|
+
export declare function briefFromOptions(options: CrystallizeOptions): Record<string, string>;
|
|
36
|
+
export declare function buildCrystallizePayload(options: CrystallizeOptions, brief: EvidenceBrief, trigger: CrystallizationTrigger): Parameters<CrystallizationService['crystallize']>[0];
|
|
37
|
+
export declare function printCrystallizeResult(io: ProgramIO, recommendation: {
|
|
38
|
+
payload: {
|
|
39
|
+
brief: unknown;
|
|
40
|
+
bullets: unknown;
|
|
41
|
+
source_trace_pointers: unknown;
|
|
42
|
+
evaluator_summary: unknown;
|
|
43
|
+
};
|
|
44
|
+
}, result: {
|
|
45
|
+
loop_release_id: string;
|
|
46
|
+
crystallization_event_id: string;
|
|
47
|
+
}, json: boolean | undefined): void;
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
// src/cli/commands/asset-crystallize-payload.ts
|
|
2
|
+
//
|
|
3
|
+
// The `asset.crystallize` payload and success envelope: the options shape the
|
|
4
|
+
// verb's registration fills in, the three builders that turn it into the
|
|
5
|
+
// service argument, and the printer for a completed crystallization. Split out
|
|
6
|
+
// of `asset-crystallize-command.ts` so no single module carries both halves.
|
|
7
|
+
import { printResult } from '../cli-helpers.js';
|
|
8
|
+
import { ok } from 'peaks-loop-shared/result';
|
|
9
|
+
/** The four brief sections as the caller supplied them. */
|
|
10
|
+
export function briefFromOptions(options) {
|
|
11
|
+
return {
|
|
12
|
+
what_happened: options.briefWhatHappened,
|
|
13
|
+
why_it_matters: options.briefWhyItMatters,
|
|
14
|
+
what_learned: options.briefWhatLearned,
|
|
15
|
+
what_action: options.briefWhatAction
|
|
16
|
+
};
|
|
17
|
+
}
|
|
18
|
+
function buildLoopInput(options) {
|
|
19
|
+
return {
|
|
20
|
+
id: options.loopId,
|
|
21
|
+
name: options.loopName,
|
|
22
|
+
scenario: options.loopScenario,
|
|
23
|
+
trigger_policy: options.loopTriggerPolicy,
|
|
24
|
+
success_criteria: options.loopSuccessCriterion,
|
|
25
|
+
interaction_policy: options.loopInteractionPolicy,
|
|
26
|
+
feedback_policy: options.loopFeedbackPolicy,
|
|
27
|
+
evolution_policy: options.loopEvolutionPolicy,
|
|
28
|
+
evaluator_policy: options.loopEvaluatorPolicy,
|
|
29
|
+
linked_bees: [],
|
|
30
|
+
run_history: [],
|
|
31
|
+
crystallization_evidence: [],
|
|
32
|
+
lifecycle_status: 'candidate',
|
|
33
|
+
version: options.loopVersion
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
function buildBeeInput(options) {
|
|
37
|
+
return {
|
|
38
|
+
bee_name: options.beeName,
|
|
39
|
+
version: options.beeVersion,
|
|
40
|
+
description: options.beeDescription,
|
|
41
|
+
...(options.beeIntentRaw !== undefined ? { user_intent_raw: options.beeIntentRaw } : {}),
|
|
42
|
+
...(options.beeParentVersion !== undefined ? { parent_version: options.beeParentVersion } : {}),
|
|
43
|
+
...(options.beeChangelog !== undefined ? { changelog: options.beeChangelog } : {})
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export function buildCrystallizePayload(options, brief, trigger) {
|
|
47
|
+
return {
|
|
48
|
+
task: {
|
|
49
|
+
task_id: options.fromTask,
|
|
50
|
+
task_status: 'completed',
|
|
51
|
+
gates_passed: true,
|
|
52
|
+
evidence_collected: true
|
|
53
|
+
},
|
|
54
|
+
loop_input: buildLoopInput(options),
|
|
55
|
+
bee_input: buildBeeInput(options),
|
|
56
|
+
bee_relation_reason: options.beeRelationReason,
|
|
57
|
+
evidence_brief: brief,
|
|
58
|
+
evidence_bullets: options.briefBullet ?? [],
|
|
59
|
+
source_trace_pointers: options.sourceTrace ?? [],
|
|
60
|
+
...(options.evaluatorSummary !== undefined
|
|
61
|
+
? { evaluator_summary: options.evaluatorSummary }
|
|
62
|
+
: {}),
|
|
63
|
+
...(options.userDecisionSummary !== undefined
|
|
64
|
+
? { user_decision_summary: options.userDecisionSummary }
|
|
65
|
+
: {}),
|
|
66
|
+
trigger
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
export function printCrystallizeResult(io, recommendation, result, json) {
|
|
70
|
+
printResult(io, ok('asset.crystallize', {
|
|
71
|
+
recommendation: {
|
|
72
|
+
brief: recommendation.payload.brief,
|
|
73
|
+
bullets: recommendation.payload.bullets,
|
|
74
|
+
source_trace_pointers: recommendation.payload.source_trace_pointers,
|
|
75
|
+
evaluator_summary: recommendation.payload.evaluator_summary
|
|
76
|
+
},
|
|
77
|
+
result,
|
|
78
|
+
nextActions: [
|
|
79
|
+
`Run \`peaks loop show --loop ${result.loop_release_id}\` to inspect the new loop_release.`,
|
|
80
|
+
`Run \`peaks asset dispose --crystallization-event ${result.crystallization_event_id} --mode trace_only\` to retire the event without touching the asset.`
|
|
81
|
+
]
|
|
82
|
+
}, [], [
|
|
83
|
+
'The CLI has surfaced a complete 4-section brief; the LLM should now drive the user through AskUserQuestion picks (spec §5.3).'
|
|
84
|
+
]), json);
|
|
85
|
+
}
|