peaks-loop 4.0.0-beta.9 → 4.0.1
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/CHANGELOG.md +910 -141
- package/README-en.md +26 -7
- package/README.md +75 -6
- package/agents/karpathy-reviewer.md +33 -0
- package/bin/peaks.js +0 -0
- package/dist/cli/cli-helpers.d.ts +31 -6
- package/dist/cli/cli-helpers.js +48 -25
- package/dist/cli/commands/_register.d.ts +3 -0
- package/dist/cli/commands/_register.js +139 -0
- package/dist/cli/commands/_super.d.ts +10 -0
- package/dist/cli/commands/_super.js +97 -0
- package/dist/cli/commands/adapter-commands-s2a.js +1 -1
- package/dist/cli/commands/asset-commands.js +33 -16
- package/dist/cli/commands/audit-commands.js +2 -2
- package/dist/cli/commands/autonomous-swarm-commands.d.ts +12 -0
- package/dist/cli/commands/autonomous-swarm-commands.js +120 -0
- package/dist/cli/commands/bee-commands.js +1 -1
- package/dist/cli/commands/capability-commands.js +1 -1
- package/dist/cli/commands/capability-worker-config-sc-commands.js +0 -2
- package/dist/cli/commands/changeset-commands.d.ts +13 -0
- package/dist/cli/commands/changeset-commands.js +46 -0
- package/dist/cli/commands/code-commands.d.ts +11 -1
- package/dist/cli/commands/code-commands.js +19 -699
- package/dist/cli/commands/code-job-shape-commands.d.ts +9 -0
- package/dist/cli/commands/code-job-shape-commands.js +164 -0
- package/dist/cli/commands/code-mode-gate-commands.d.ts +9 -0
- package/dist/cli/commands/code-mode-gate-commands.js +223 -0
- package/dist/cli/commands/code-review-commands.js +2 -2
- package/dist/cli/commands/code-run-command.d.ts +12 -0
- package/dist/cli/commands/code-run-command.js +68 -0
- package/dist/cli/commands/code-runtime-commands.d.ts +11 -0
- package/dist/cli/commands/code-runtime-commands.js +391 -0
- package/dist/cli/commands/codegraph-commands.js +1 -1
- package/dist/cli/commands/compact-command.js +53 -1
- package/dist/cli/commands/complexity-commands.js +1 -1
- package/dist/cli/commands/config-commands.js +4 -75
- package/dist/cli/commands/container-commands.d.ts +28 -0
- package/dist/cli/commands/container-commands.js +221 -0
- package/dist/cli/commands/context-commands.js +3 -2
- package/dist/cli/commands/core/artifacts-command.js +1 -1
- package/dist/cli/commands/core/binding-commands.js +1 -1
- package/dist/cli/commands/core/doctor-command.js +63 -3
- package/dist/cli/commands/core/memory-command.js +1 -1
- package/dist/cli/commands/core/profile-command.js +1 -1
- package/dist/cli/commands/core/proxy-command.js +1 -1
- package/dist/cli/commands/core/session-command.js +9 -7
- package/dist/cli/commands/core/skill-command.js +7 -4
- package/dist/cli/commands/core/standards-command.js +1 -1
- package/dist/cli/commands/cron-commands.d.ts +57 -0
- package/dist/cli/commands/cron-commands.js +257 -0
- package/dist/cli/commands/cron-scheduler-commands.d.ts +47 -0
- package/dist/cli/commands/cron-scheduler-commands.js +284 -0
- package/dist/cli/commands/dashboard-commands.d.ts +4 -0
- package/dist/cli/commands/dashboard-commands.js +10 -0
- package/dist/cli/commands/dashboard-long-run.d.ts +25 -0
- package/dist/cli/commands/dashboard-long-run.js +122 -0
- package/dist/cli/commands/dashboard-summary.d.ts +12 -0
- package/dist/cli/commands/dashboard-summary.js +58 -0
- package/dist/cli/commands/dispatch-commands.d.ts +0 -7
- package/dist/cli/commands/dispatch-commands.js +372 -8
- package/dist/cli/commands/dispatch-from-dag.js +4 -1
- package/dist/cli/commands/doc-commands.js +1 -1
- package/dist/cli/commands/ecc-commands.d.ts +30 -0
- package/dist/cli/commands/ecc-commands.js +119 -0
- package/dist/cli/commands/evolution-commands.js +1 -1
- package/dist/cli/commands/feedback-commands.js +1 -1
- package/dist/cli/commands/final-review-commands.js +1 -1
- package/dist/cli/commands/fixture-commands.js +1 -1
- package/dist/cli/commands/fork-commands.js +1 -1
- package/dist/cli/commands/gate-commands.js +128 -6
- package/dist/cli/commands/governance-classify-contract-commands.d.ts +21 -0
- package/dist/cli/commands/governance-classify-contract-commands.js +273 -0
- package/dist/cli/commands/heartbeat-commands.js +76 -5
- package/dist/cli/commands/heartbeat-watch-command.d.ts +31 -0
- package/dist/cli/commands/heartbeat-watch-command.js +146 -0
- package/dist/cli/commands/hook-handle.js +1 -1
- package/dist/cli/commands/hooks-commands.js +126 -10
- package/dist/cli/commands/ide-commands.js +1 -1
- package/dist/cli/commands/impact-commands.js +1 -1
- package/dist/cli/commands/job-commands.js +34 -1
- package/dist/cli/commands/lease-metrics-commands.d.ts +67 -0
- package/dist/cli/commands/lease-metrics-commands.js +231 -0
- package/dist/cli/commands/lease-stats-commands.d.ts +65 -0
- package/dist/cli/commands/lease-stats-commands.js +107 -0
- package/dist/cli/commands/legacy-commands.js +1 -1
- package/dist/cli/commands/log-commands.js +1 -1
- package/dist/cli/commands/loop-commands.js +1 -1
- package/dist/cli/commands/loop-eval-commands.js +1 -1
- package/dist/cli/commands/memory-commands.js +1 -1
- package/dist/cli/commands/migrate-1-4-1-command.js +1 -1
- package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +1 -1
- package/dist/cli/commands/mut-commands.d.ts +1 -1
- package/dist/cli/commands/mut-commands.js +1 -5
- package/dist/cli/commands/observability-commands.js +1 -1
- package/dist/cli/commands/openspec-commands.js +65 -4
- package/dist/cli/commands/perf-audit-commands.js +3 -3
- package/dist/cli/commands/perf-commands.js +1 -1
- package/dist/cli/commands/polyrepo-commands.js +1 -1
- package/dist/cli/commands/prd-blocks-commands.js +1 -1
- package/dist/cli/commands/prd-commands.js +4 -2
- package/dist/cli/commands/preferences-commands.js +23 -3
- package/dist/cli/commands/project-commands.js +1 -1
- package/dist/cli/commands/qa-business-review-commands.js +1 -1
- package/dist/cli/commands/qa-commands.d.ts +1 -1
- package/dist/cli/commands/qa-commands.js +39 -3
- package/dist/cli/commands/release-commands.d.ts +15 -0
- package/dist/cli/commands/release-commands.js +113 -21
- package/dist/cli/commands/request-commands.js +1 -1
- package/dist/cli/commands/retrospective-commands.js +1 -1
- package/dist/cli/commands/reviewer-commands.js +1 -1
- package/dist/cli/commands/role-commands.js +1 -1
- package/dist/cli/commands/runtime-commands-helpers.d.ts +7 -0
- package/dist/cli/commands/runtime-commands-helpers.js +24 -0
- package/dist/cli/commands/runtime-commands.js +1 -2
- package/dist/cli/commands/sc-commands.js +4 -2
- package/dist/cli/commands/scan-commands.js +1 -1
- package/dist/cli/commands/security-audit-commands.js +3 -3
- package/dist/cli/commands/sediment-commands.js +10 -1
- package/dist/cli/commands/session-24h-mode.d.ts +26 -0
- package/dist/cli/commands/session-24h-mode.js +196 -0
- package/dist/cli/commands/share-commands.d.ts +19 -0
- package/dist/cli/commands/share-commands.js +121 -2
- package/dist/cli/commands/skill-conformance-commands.js +1 -1
- package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +1 -1
- package/dist/cli/commands/skill-search-commands.js +4 -1
- package/dist/cli/commands/slice-commands.js +1 -1
- package/dist/cli/commands/slice-integrate-commands.js +1 -1
- package/dist/cli/commands/slice-review-commands.js +1 -1
- package/dist/cli/commands/smoke-commands.js +1 -1
- package/dist/cli/commands/sop-commands.js +1 -1
- package/dist/cli/commands/spill-demo-command.d.ts +7 -0
- package/dist/cli/commands/spill-demo-command.js +29 -0
- package/dist/cli/commands/statusline-commands.d.ts +12 -0
- package/dist/cli/commands/statusline-commands.js +79 -17
- package/dist/cli/commands/sub-agent-commands.js +2 -1
- package/dist/cli/commands/sub-agent-shared.d.ts +10 -0
- package/dist/cli/commands/sub-agent-shared.js +24 -1
- package/dist/cli/commands/swarm-commands.d.ts +13 -0
- package/dist/cli/commands/swarm-commands.js +77 -0
- package/dist/cli/commands/tech-commands.d.ts +64 -0
- package/dist/cli/commands/tech-commands.js +195 -0
- package/dist/cli/commands/understand-commands.js +1 -1
- package/dist/cli/commands/upgrade-commands.d.ts +2 -0
- package/dist/cli/commands/upgrade-commands.js +40 -5
- package/dist/cli/commands/user-touchpoint-commands.js +1 -1
- package/dist/cli/commands/verdict-aggregate-command.js +1 -1
- package/dist/cli/commands/vm-commands.d.ts +31 -0
- package/dist/cli/commands/vm-commands.js +274 -0
- package/dist/cli/commands/workflow-commands.js +24 -1
- package/dist/cli/commands/workflow-plan-commands.js +1 -1
- package/dist/cli/commands/workspace/init-command.js +1 -1
- package/dist/cli/commands/workspace/migrate-command.js +1 -1
- package/dist/cli/commands/workspace/reconcile-command.js +1 -1
- package/dist/cli/commands/worktree-auth-commands.d.ts +29 -0
- package/dist/cli/commands/worktree-auth-commands.js +652 -0
- package/dist/cli/index.js +58 -13
- package/dist/cli/program.d.ts +2 -2
- package/dist/cli/program.js +86 -281
- package/dist/services/24h-mode/decider.d.ts +103 -0
- package/dist/services/24h-mode/decider.js +144 -0
- package/dist/services/24h-mode/index.d.ts +12 -0
- package/dist/services/24h-mode/index.js +12 -0
- package/dist/services/24h-mode/state.d.ts +48 -0
- package/dist/services/24h-mode/state.js +51 -0
- package/dist/services/24h-mode/store.d.ts +27 -0
- package/dist/services/24h-mode/store.js +119 -0
- package/dist/services/artifacts/artifact-prerequisites.js +1 -1
- package/dist/services/artifacts/request-artifact-service.js +1 -1
- package/dist/services/artifacts/workspace-service.js +1 -1
- package/dist/services/audit/enforcers/lint-bee-runtime-contract.d.ts +25 -0
- package/dist/services/audit/enforcers/lint-bee-runtime-contract.js +91 -0
- package/dist/services/audit/enforcers/lint-peaks-code-runtime.d.ts +16 -0
- package/dist/services/audit/enforcers/lint-peaks-code-runtime.js +31 -0
- package/dist/services/audit/enforcers/lint-peaks-skill-runtime.d.ts +23 -0
- package/dist/services/audit/enforcers/lint-peaks-skill-runtime.js +59 -0
- package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.d.ts +28 -0
- package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.js +86 -0
- package/dist/services/audit/enforcers/lint-prd-artifact-handoff.d.ts +16 -0
- package/dist/services/audit/enforcers/lint-prd-artifact-handoff.js +41 -0
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.d.ts +27 -0
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.js +47 -0
- package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.d.ts +19 -0
- package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.js +47 -0
- package/dist/services/audit/enforcers/lint-rd-handoff-coverage.d.ts +18 -0
- package/dist/services/audit/enforcers/lint-rd-handoff-coverage.js +70 -0
- package/dist/services/audit/enforcers/lint-skill-presence-mandatory.d.ts +25 -0
- package/dist/services/audit/enforcers/lint-skill-presence-mandatory.js +53 -0
- package/dist/services/audit/red-line-catalog-p2-a.d.ts +0 -6
- package/dist/services/audit/red-line-catalog-p2-a.js +230 -1
- package/dist/services/audit/static-service.d.ts +32 -25
- package/dist/services/audit/static-service.js +30 -109
- package/dist/services/audit-independent/index.d.ts +2 -0
- package/dist/services/audit-independent/index.js +2 -0
- package/dist/services/autonomous-swarm/autonomous-swarm-service.d.ts +127 -0
- package/dist/services/autonomous-swarm/autonomous-swarm-service.js +446 -0
- package/dist/services/changeset/changeset-check-service.d.ts +22 -0
- package/dist/services/changeset/changeset-check-service.js +47 -0
- package/dist/services/code/auto-compact-modes.d.ts +30 -0
- package/dist/services/code/auto-compact-modes.js +38 -0
- package/dist/services/code/auto-compact-orchestrator.d.ts +43 -5
- package/dist/services/code/auto-compact-orchestrator.js +101 -21
- package/dist/services/code/dag-orchestrator.d.ts +30 -1
- package/dist/services/code/dag-orchestrator.js +106 -1
- package/dist/services/code/status-line-renderer.d.ts +2 -0
- package/dist/services/code/status-line-renderer.js +21 -3
- package/dist/services/code-review/ocr-service.d.ts +1 -1
- package/dist/services/code-review/ocr-service.js +6 -3
- package/dist/services/compact-history/compact-history-service.d.ts +41 -0
- package/dist/services/compact-history/compact-history-service.js +62 -0
- package/dist/services/compact-statusline/compact-statusline-service.d.ts +16 -0
- package/dist/services/compact-statusline/compact-statusline-service.js +83 -0
- package/dist/services/config/config-service.d.ts +1 -12
- package/dist/services/config/config-service.js +3 -72
- package/dist/services/config/config-types.d.ts +2 -4
- package/dist/services/config/config-types.js +1 -1
- package/dist/services/container/container-lease.d.ts +67 -0
- package/dist/services/container/container-lease.js +135 -0
- package/dist/services/context/auto-compact-dispatcher.d.ts +40 -5
- package/dist/services/context/auto-compact-dispatcher.js +32 -102
- package/dist/services/context/auto-compact-reader.js +1 -1
- package/dist/services/context/auto-compact-types.d.ts +27 -2
- package/dist/services/context/auto-compact-types.js +8 -1
- package/dist/services/context/build-dispatch-system-prompt.d.ts +75 -0
- package/dist/services/context/build-dispatch-system-prompt.js +117 -0
- package/dist/services/context/collector.d.ts +2 -2
- package/dist/services/context/context-builder.d.ts +4 -4
- package/dist/services/context/context-schema.d.ts +48 -48
- package/dist/services/context/ide-detect.d.ts +4 -0
- package/dist/services/context/ide-detect.js +24 -0
- package/dist/services/context/main-session-monitor.d.ts +1 -4
- package/dist/services/context/main-session-monitor.js +1 -24
- package/dist/services/context/memory-index-reader.d.ts +8 -0
- package/dist/services/context/memory-index-reader.js +57 -0
- package/dist/services/context/memory-lru-cache.d.ts +12 -0
- package/dist/services/context/memory-lru-cache.js +60 -0
- package/dist/services/context/memory-preflight-config.d.ts +19 -0
- package/dist/services/context/memory-preflight-config.js +25 -0
- package/dist/services/context/memory-preflight-service.d.ts +19 -0
- package/dist/services/context/memory-preflight-service.js +120 -0
- package/dist/services/context/spillover-store.d.ts +23 -0
- package/dist/services/context/spillover-store.js +155 -0
- package/dist/services/context/spillover-types.d.ts +18 -0
- package/dist/services/context/spillover-types.js +1 -0
- package/dist/services/crystallization/crystallization-service.d.ts +22 -5
- package/dist/services/crystallization/crystallization-service.js +8 -14
- package/dist/services/crystallization/crystallization-types.d.ts +6 -6
- package/dist/services/crystallization/evidence-brief-builder.d.ts +1 -1
- package/dist/services/crystallization/index.d.ts +13 -0
- package/dist/services/crystallization/index.js +13 -0
- package/dist/services/dashboard/project-dashboard-service.js +2 -2
- package/dist/services/dispatch/await-batch.d.ts +70 -0
- package/dist/services/dispatch/await-batch.js +272 -0
- package/dist/services/dispatch/batch-counter.js +1 -1
- package/dist/services/dispatch/dispatch-record-writer.d.ts +126 -4
- package/dist/services/dispatch/dispatch-record-writer.js +239 -9
- package/dist/services/dispatch/slice-dag.d.ts +46 -0
- package/dist/services/dispatch/slice-dag.js +6 -0
- package/dist/services/dispatch/stage-enum.d.ts +27 -0
- package/dist/services/dispatch/stage-enum.js +48 -0
- package/dist/services/dispatch/startup-timeout.d.ts +86 -0
- package/dist/services/dispatch/startup-timeout.js +97 -0
- package/dist/services/dispatch/sub-agent-dispatcher.js +40 -89
- package/dist/services/dispatch/test-tool-detection.d.ts +25 -1
- package/dist/services/dispatch/test-tool-detection.js +80 -0
- package/dist/services/doctor/doctor-service/checks/check-id-schema.d.ts +18 -0
- package/dist/services/doctor/doctor-service/checks/check-id-schema.js +64 -0
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.d.ts +14 -0
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +69 -0
- package/dist/services/doctor/doctor-service/checks/dist-source-version.d.ts +32 -0
- package/dist/services/doctor/doctor-service/checks/dist-source-version.js +110 -0
- package/dist/services/doctor/doctor-service/checks/gateguard-conflict.d.ts +24 -0
- package/dist/services/doctor/doctor-service/checks/gateguard-conflict.js +164 -0
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.d.ts +16 -0
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +57 -0
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.d.ts +19 -0
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +66 -0
- package/dist/services/doctor/doctor-service/checks/schema-validity.d.ts +10 -0
- package/dist/services/doctor/doctor-service/checks/schema-validity.js +33 -0
- package/dist/services/doctor/doctor-service/checks/skill-apply-note.d.ts +20 -0
- package/dist/services/doctor/doctor-service/checks/skill-apply-note.js +85 -0
- package/dist/services/doctor/doctor-service/checks/skill-existence.d.ts +13 -0
- package/dist/services/doctor/doctor-service/checks/skill-existence.js +30 -0
- package/dist/services/doctor/doctor-service/checks/skill-name-match.d.ts +10 -0
- package/dist/services/doctor/doctor-service/checks/skill-name-match.js +25 -0
- package/dist/services/doctor/doctor-service/checks/skill-parse.d.ts +10 -0
- package/dist/services/doctor/doctor-service/checks/skill-parse.js +19 -0
- package/dist/services/doctor/doctor-service/checks/skill-presence.d.ts +21 -0
- package/dist/services/doctor/doctor-service/checks/skill-presence.js +75 -0
- package/dist/services/doctor/doctor-service/checks/skill-runbook.d.ts +14 -0
- package/dist/services/doctor/doctor-service/checks/skill-runbook.js +47 -0
- package/dist/services/doctor/doctor-service/checks/statusline-install.d.ts +14 -0
- package/dist/services/doctor/doctor-service/checks/statusline-install.js +32 -0
- package/dist/services/doctor/doctor-service/checks/statusline-runtime.d.ts +13 -0
- package/dist/services/doctor/doctor-service/checks/statusline-runtime.js +30 -0
- package/dist/services/doctor/doctor-service/checks/user-config.d.ts +11 -0
- package/dist/services/doctor/doctor-service/checks/user-config.js +27 -0
- package/dist/services/doctor/doctor-service/checks/workspace-init.d.ts +16 -0
- package/dist/services/doctor/doctor-service/checks/workspace-init.js +34 -0
- package/dist/services/doctor/doctor-service/checks/workspace-layout.d.ts +33 -0
- package/dist/services/doctor/doctor-service/checks/workspace-layout.js +180 -0
- package/dist/services/doctor/doctor-service/index.d.ts +48 -0
- package/dist/services/doctor/doctor-service/index.js +254 -0
- package/dist/services/doctor/doctor-service/plugin-registry.d.ts +41 -0
- package/dist/services/doctor/doctor-service/plugin-registry.js +77 -0
- package/dist/services/doctor/doctor-service/report/final-summary.d.ts +20 -0
- package/dist/services/doctor/doctor-service/report/final-summary.js +29 -0
- package/dist/services/doctor/doctor-service/types.d.ts +245 -0
- package/dist/services/doctor/doctor-service/types.js +15 -0
- package/dist/services/doctor/doctor-service.d.ts +15 -146
- package/dist/services/doctor/doctor-service.js +22 -926
- package/dist/services/doctor/index.d.ts +22 -0
- package/dist/services/doctor/index.js +22 -0
- package/dist/services/env/shell-probe.d.ts +71 -0
- package/dist/services/env/shell-probe.js +161 -0
- package/dist/services/evolution/evolution-types.d.ts +39 -39
- package/dist/services/final-review/final-review-service.d.ts +11 -1
- package/dist/services/final-review/index.d.ts +2 -0
- package/dist/services/final-review/index.js +1 -0
- package/dist/services/hooks/auto-compact-hook-install.d.ts +4 -5
- package/dist/services/hooks/auto-compact-hook-install.js +4 -5
- package/dist/services/hooks/worktree-authorization-gate.d.ts +205 -0
- package/dist/services/hooks/worktree-authorization-gate.js +492 -0
- package/dist/services/ide/adapters/claude-code-adapter.js +2 -2
- package/dist/services/ide/adapters/qoder-adapter.d.ts +25 -0
- package/dist/services/ide/adapters/qoder-adapter.js +57 -0
- package/dist/services/ide/adapters/tongyi-lingma-adapter.d.ts +16 -0
- package/dist/services/ide/adapters/tongyi-lingma-adapter.js +45 -0
- package/dist/services/ide/ide-registry.js +6 -0
- package/dist/services/ide/ide-types.d.ts +1 -1
- package/dist/services/job/job-types.d.ts +56 -56
- package/dist/services/job-snapshot/index.d.ts +8 -0
- package/dist/services/job-snapshot/index.js +7 -0
- package/dist/services/{job/job-resource-snapshot.d.ts → job-snapshot/snapshot.d.ts} +1 -1
- package/dist/services/job-snapshot/types.d.ts +7 -0
- package/dist/services/job-snapshot/types.js +1 -0
- package/dist/services/karpathy-cost/karpathy-cost-check-service.d.ts +67 -0
- package/dist/services/karpathy-cost/karpathy-cost-check-service.js +108 -0
- package/dist/services/log/retention.d.ts +16 -0
- package/dist/services/log/retention.js +17 -0
- package/dist/services/loop/loop-bee-relation-types.d.ts +6 -6
- package/dist/services/loop/loop-release-types.d.ts +24 -24
- package/dist/services/loop/monotonic-runner.d.ts +17 -11
- package/dist/services/loop/monotonic-runner.js +118 -79
- package/dist/services/memory/project-memory-service/index/kind-dispatch.d.ts +8 -0
- package/dist/services/memory/project-memory-service/index/kind-dispatch.js +253 -0
- package/dist/services/memory/project-memory-service/index/ranking.d.ts +6 -0
- package/dist/services/memory/project-memory-service/index/ranking.js +171 -0
- package/dist/services/memory/project-memory-service/index/search.d.ts +34 -0
- package/dist/services/memory/project-memory-service/index/search.js +194 -0
- package/dist/services/memory/project-memory-service/index.d.ts +9 -0
- package/dist/services/memory/project-memory-service/index.js +24 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +9 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter.js +106 -0
- package/dist/services/memory/project-memory-service/parsers/markdown-pure.d.ts +7 -0
- package/dist/services/memory/project-memory-service/parsers/markdown-pure.js +96 -0
- package/dist/services/memory/project-memory-service/store/atomic-write.d.ts +5 -0
- package/dist/services/memory/project-memory-service/store/atomic-write.js +56 -0
- package/dist/services/memory/project-memory-service/store/paths.d.ts +8 -0
- package/dist/services/memory/project-memory-service/store/paths.js +116 -0
- package/dist/services/memory/project-memory-service/types.d.ts +128 -0
- package/dist/services/memory/project-memory-service/types.js +9 -0
- package/dist/services/memory/project-memory-service.d.ts +1 -167
- package/dist/services/memory/project-memory-service.js +19 -816
- package/dist/services/migrate-skill-name/schema.d.ts +2 -2
- package/dist/services/observability/aggregation.d.ts +27 -0
- package/dist/services/observability/aggregation.js +72 -0
- package/dist/services/observability/observability-service.d.ts +73 -7
- package/dist/services/observability/observability-service.js +87 -1
- package/dist/services/openspec/artifact-boundary.d.ts +138 -0
- package/dist/services/openspec/artifact-boundary.js +150 -0
- package/dist/services/openspec/coverage-evidence-reader.d.ts +191 -0
- package/dist/services/openspec/coverage-evidence-reader.js +386 -0
- package/dist/services/openspec/openspec-archive-service.d.ts +70 -0
- package/dist/services/openspec/openspec-archive-service.js +320 -8
- package/dist/services/openspec/openspec-bridge-service.js +1 -1
- package/dist/services/openspec/openspec-init-service.js +1 -1
- package/dist/services/openspec/openspec-propose-from-doctor-service.js +1 -1
- package/dist/services/openspec/openspec-render-service.js +7 -4
- package/dist/services/openspec/openspec-scan-service.js +1 -1
- package/dist/services/openspec/openspec-validate-service.js +5 -4
- package/dist/services/preferences/preferences-service.js +10 -0
- package/dist/services/preferences/preferences-types.d.ts +13 -0
- package/dist/services/preferences/preferences-types.js +11 -0
- package/dist/services/qa/screenshot-archive-service.d.ts +51 -0
- package/dist/services/qa/screenshot-archive-service.js +134 -0
- package/dist/services/rd/rd-service.js +10 -11
- package/dist/services/rd/types.d.ts +32 -32
- package/dist/services/rd-swarm/rd-swarm-service.d.ts +60 -0
- package/dist/services/rd-swarm/rd-swarm-service.js +93 -0
- package/dist/services/recommendations/capability-seed-items.js +0 -1
- package/dist/services/recommendations/capability-seed-mappings.js +0 -1
- package/dist/services/recommendations/capability-seed-sources.js +0 -1
- package/dist/services/release/version-precheck-service.d.ts +51 -0
- package/dist/services/release/version-precheck-service.js +257 -0
- package/dist/services/scan/acceptance-coverage-service.js +1 -1
- package/dist/services/scan/archetype-service.js +1 -1
- package/dist/services/scan/existing-system-service.js +1 -1
- package/dist/services/scan/libraries-service.js +1 -1
- package/dist/services/sediment/json-schema.d.ts +40 -40
- package/dist/services/share/bundle-types.d.ts +12 -12
- package/dist/services/share/run-state-contract.d.ts +2 -2
- package/dist/services/skill/skill-search-service.d.ts +12 -7
- package/dist/services/skill/skill-search-service.js +8 -4
- package/dist/services/skillhub/migrations/001-initial.sql +71 -0
- package/dist/services/skillhub/migrations/002-loop-release.sql +32 -0
- package/dist/services/skillhub/migrations/003-loop-bee-relation.sql +35 -0
- package/dist/services/skillhub/migrations/004-loop-bee-extension.sql +65 -0
- package/dist/services/skillhub/migrations/005-evolution-evaluation.sql +81 -0
- package/dist/services/skillhub/migrations/006-crystallization-event.sql +92 -0
- package/dist/services/skills/hooks-settings-service.d.ts +75 -0
- package/dist/services/skills/hooks-settings-service.js +230 -2
- package/dist/services/skills/skill-registry.d.ts +1 -0
- package/dist/services/skills/skill-registry.js +6 -4
- package/dist/services/skills/skill-runbook-service.js +1 -1
- package/dist/services/slice/slice-check-service.js +1 -1
- package/dist/services/standards/main-session-monitor-ban-hook.d.ts +14 -0
- package/dist/services/standards/main-session-monitor-ban-hook.js +19 -0
- package/dist/services/standards/missing-standards-detector.d.ts +25 -0
- package/dist/services/standards/missing-standards-detector.js +43 -12
- package/dist/services/tech/tech-change-id-service.d.ts +82 -0
- package/dist/services/tech/tech-change-id-service.js +117 -0
- package/dist/services/understand/understand-hybrid-service.js +1 -1
- package/dist/services/understand/understand-scan-service.js +2 -2
- package/dist/services/upgrade/upgrade-service.js +4 -3
- package/dist/services/verdict/envelopes.d.ts +2 -2
- package/dist/services/verdict/envelopes.js +2 -2
- package/dist/services/verdict/verdict-aggregator.d.ts +3 -3
- package/dist/services/vm/vm-lease.d.ts +40 -0
- package/dist/services/vm/vm-lease.js +137 -0
- package/dist/services/workflow/autonomous-resume-writer.js +1 -1
- package/dist/services/workflow/pipeline-verify-gate-support.d.ts +47 -0
- package/dist/services/workflow/pipeline-verify-gate-support.js +194 -0
- package/dist/services/workflow/pipeline-verify-service.d.ts +17 -81
- package/dist/services/workflow/pipeline-verify-service.js +42 -218
- package/dist/services/workflow/pipeline-verify-types.d.ts +90 -0
- package/dist/services/workflow/pipeline-verify-types.js +10 -0
- package/dist/services/workflow/plan-reader.d.ts +1 -1
- package/dist/services/workflow/plan-reader.js +1 -1
- package/dist/services/workflow/plan-refresher.d.ts +1 -1
- package/dist/services/workflow/plan-refresher.js +1 -1
- package/dist/services/workflow/plan-trigger-detector.d.ts +1 -1
- package/dist/services/workflow/plan-trigger-detector.js +1 -1
- package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +1 -1
- package/dist/services/workflow/workflow-autonomous-service.d.ts +2 -98
- package/dist/services/workflow/workflow-autonomous-types.d.ts +114 -0
- package/dist/services/workflow/workflow-autonomous-types.js +21 -0
- package/dist/services/workflow/workflow-router-service.js +18 -16
- package/dist/services/workflow/workflow-spec-lint.d.ts +13 -0
- package/dist/services/workflow/workflow-spec-lint.js +75 -0
- package/dist/services/workflow/workflow-spec-types.d.ts +100 -0
- package/dist/services/workflow/workflow-spec-types.js +13 -0
- package/dist/services/workflow/workflow-spec-yaml.d.ts +17 -0
- package/dist/services/workflow/workflow-spec-yaml.js +88 -0
- package/dist/services/workflow/workflow-spec.d.ts +11 -91
- package/dist/services/workflow/workflow-spec.js +16 -145
- package/dist/services/workspace/migrate-service.js +1 -1
- package/dist/services/workspace/workspace-service.js +1 -1
- package/dist/services/worktree/worktree-lease.d.ts +170 -0
- package/dist/services/worktree/worktree-lease.js +242 -0
- package/package.json +47 -51
- package/scripts/clean-dist.mjs +31 -1
- package/scripts/copy-templates.mjs +16 -0
- package/scripts/sync-version.mjs +53 -2
- package/skills/bee/peaks-perf-audit/SKILL.md +17 -0
- package/skills/bee/peaks-prd/SKILL.md +16 -0
- package/skills/bee/peaks-prd/test-prompts.json +12 -0
- package/skills/bee/peaks-qa/SKILL.md +16 -1
- package/skills/bee/peaks-qa/references/qa-sub-agent-dispatch.md +22 -0
- package/skills/bee/peaks-qa/test-prompts.json +12 -0
- package/skills/bee/peaks-rd/SKILL.md +29 -20
- package/skills/bee/peaks-rd/references/rd-sub-agent-dispatch.md +39 -0
- package/skills/bee/peaks-rd/test-prompts.json +12 -0
- package/skills/bee/peaks-reviewer/SKILL.md +17 -0
- package/skills/bee/peaks-sc/SKILL.md +16 -0
- package/skills/bee/peaks-security-audit/SKILL.md +17 -0
- package/skills/bee/peaks-txt/SKILL.md +16 -0
- package/skills/bee/peaks-txt/test-prompts.json +12 -0
- package/skills/bee/peaks-ui/SKILL.md +49 -43
- package/skills/bee/peaks-ui/test-prompts.json +12 -0
- package/skills/peaks-code/SKILL.md +54 -109
- package/skills/peaks-code/references/boundaries.md +15 -1
- package/skills/peaks-code/references/cron-scheduler-deployment.md +313 -0
- package/skills/peaks-code/references/external-skill-invocation.md +27 -0
- package/skills/peaks-code/references/lease-dashboard.html +224 -0
- package/skills/peaks-code/references/lease-stats.sample.json +26 -0
- package/skills/peaks-code/references/peaks-worktree-l2-enforcers.md +208 -0
- package/skills/peaks-code/references/periodic-checkpoint.md +4 -4
- package/skills/peaks-code/references/runbook.md +63 -1
- package/skills/peaks-code/references/startup-sequence.md +110 -0
- package/skills/peaks-code/references/step-0-8-gate.md +1 -1
- package/skills/peaks-code/references/sub-agent-dispatch.md +92 -1
- package/skills/peaks-code/references/worktree-governance.md +123 -0
- package/skills/peaks-code/test-prompts.json +12 -0
- package/skills/peaks-doctor/SKILL.md +1 -1
- package/skills/peaks-ide/SKILL.md +1 -1
- package/skills/peaks-solo/SKILL.md +21 -0
- package/skills/peaks-solo/references/triage-decision-table.md +6 -0
- package/skills/peaks-sop/test-prompts.json +17 -0
- package/dist/cli/commands/agent-commands.d.ts +0 -20
- package/dist/cli/commands/agent-commands.js +0 -48
- package/dist/cli/commands/classify-classify-commands.d.ts +0 -19
- package/dist/cli/commands/classify-classify-commands.js +0 -151
- package/dist/cli/commands/contract-commands.d.ts +0 -26
- package/dist/cli/commands/contract-commands.js +0 -114
- package/dist/cli/commands/session-auto-compact-hook-command.d.ts +0 -37
- package/dist/cli/commands/session-auto-compact-hook-command.js +0 -127
- package/dist/cli/commands/worker-commands.d.ts +0 -3
- package/dist/cli/commands/worker-commands.js +0 -52
- package/dist/services/agent/ecc-agent-service.d.ts +0 -47
- package/dist/services/agent/ecc-agent-service.js +0 -143
- package/dist/services/config/provider-service.d.ts +0 -48
- package/dist/services/config/provider-service.js +0 -143
- package/dist/services/context/dispatch-context-guard.d.ts +0 -27
- package/dist/services/context/dispatch-context-guard.js +0 -192
- package/dist/services/context/shared-channel.d.ts +0 -93
- package/dist/services/context/shared-channel.js +0 -308
- package/dist/services/filesystem/file-lock.d.ts +0 -11
- package/dist/services/filesystem/file-lock.js +0 -152
- package/dist/services/mut/assert-scanner.d.ts +0 -6
- package/dist/services/mut/assert-scanner.js +0 -116
- package/dist/services/mut/index.d.ts +0 -8
- package/dist/services/mut/index.js +0 -7
- package/dist/services/mut/mut-runner.d.ts +0 -39
- package/dist/services/mut/mut-runner.js +0 -29
- package/dist/services/mut/production-stryker.d.ts +0 -2
- package/dist/services/mut/production-stryker.js +0 -75
- package/dist/services/mut/report-builder.d.ts +0 -11
- package/dist/services/mut/report-builder.js +0 -110
- package/dist/services/mut/report-loader.d.ts +0 -31
- package/dist/services/mut/report-loader.js +0 -78
- package/dist/services/mut/thresholds.d.ts +0 -21
- package/dist/services/mut/thresholds.js +0 -22
- package/dist/services/mut/types.d.ts +0 -336
- package/dist/services/mut/types.js +0 -59
- package/dist/services/providers/minimax-provider-service.d.ts +0 -24
- package/dist/services/providers/minimax-provider-service.js +0 -143
- package/dist/services/providers/minimax-worker-service.d.ts +0 -21
- package/dist/services/providers/minimax-worker-service.js +0 -83
- package/dist/shared/fs.d.ts +0 -4
- package/dist/shared/fs.js +0 -26
- package/dist/shared/paths.d.ts +0 -6
- package/dist/shared/paths.js +0 -50
- package/dist/shared/result.d.ts +0 -22
- package/dist/shared/result.js +0 -46
- package/dist/shared/version.d.ts +0 -1
- package/dist/shared/version.js +0 -1
- package/examples/video-demo/README.md +0 -142
- package/examples/video-demo/out/en-closing-960.png +0 -0
- package/examples/video-demo/out/zh-closing-960.png +0 -0
- package/examples/video-demo/preview/peaks-loop-demo-en.mp4 +0 -0
- package/examples/video-demo/preview/peaks-loop-demo.mp4 +0 -0
- /package/dist/services/{job/job-resource-snapshot.js → job-snapshot/snapshot.js} +0 -0
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
const ROUTES = {
|
|
2
|
+
make: [
|
|
3
|
+
{ skill: 'peaks-code', words: ['code', 'implement', 'refactor', 'cli', 'bug', 'feature'] },
|
|
4
|
+
{ skill: 'peaks-content', words: ['blog', 'article', 'post', 'newsletter', 'copy'] },
|
|
5
|
+
{ skill: 'peaks-doctor', words: ['audit', 'health', 'doctor', 'project health'] },
|
|
6
|
+
{ skill: 'peaks-issue-fix-orchestrator', words: ['fix issues', 'open issues', 'issue sweep'] }
|
|
7
|
+
],
|
|
8
|
+
learn: [
|
|
9
|
+
{ skill: 'peaks-sop', words: ['sop', 'procedure', 'checklist', 'runbook'] },
|
|
10
|
+
{ skill: 'peaks-solo sediment', words: ['lesson', 'memory', 'sediment', 'learn from'] }
|
|
11
|
+
],
|
|
12
|
+
check: [
|
|
13
|
+
{ skill: 'peaks-audit', words: ['red-lines', 'red lines', 'audit'] },
|
|
14
|
+
{ skill: 'peaks-doctor', words: ['doctor', 'health', 'health check'] },
|
|
15
|
+
{ skill: 'peaks-security-audit', words: ['security', 'vulnerability', 'vuln', 'secret'] }
|
|
16
|
+
],
|
|
17
|
+
run: [
|
|
18
|
+
{ skill: 'peaks-workflow', words: ['workflow', 'pipeline', 'flow'] },
|
|
19
|
+
{ skill: 'peaks-job', words: ['job', 'slice', 'batch'] },
|
|
20
|
+
{ skill: 'peaks-dispatch', words: ['dispatch', 'sub-agent', 'sub agent', 'agent'] }
|
|
21
|
+
]
|
|
22
|
+
};
|
|
23
|
+
function envelope(command, data) {
|
|
24
|
+
return JSON.stringify({ ok: true, data, warnings: [], nextActions: data.nextActions });
|
|
25
|
+
}
|
|
26
|
+
function route(command, input) {
|
|
27
|
+
const normalized = input.trim().toLowerCase();
|
|
28
|
+
const candidates = ROUTES[command] ?? [];
|
|
29
|
+
const selected = candidates.find((candidate) => candidate.words.some((word) => normalized.includes(word)));
|
|
30
|
+
const chosen = selected ?? candidates[0];
|
|
31
|
+
if (chosen === undefined) {
|
|
32
|
+
return {
|
|
33
|
+
routedSkill: 'peaks-solo',
|
|
34
|
+
confidence: 0,
|
|
35
|
+
alternatives: [],
|
|
36
|
+
rationale: 'No route candidates are configured',
|
|
37
|
+
nextActions: ['LLM: dispatch peaks-solo with this goal']
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
const alternatives = candidates.filter((candidate) => candidate !== chosen).map((candidate) => candidate.skill);
|
|
41
|
+
const confidence = selected === undefined ? 0.25 : 0.92;
|
|
42
|
+
const rationale = selected === undefined
|
|
43
|
+
? 'No route keyword matched; default candidate selected for LLM arbitration'
|
|
44
|
+
: `Natural-language ${command} intent matches the ${chosen.skill} route`;
|
|
45
|
+
return {
|
|
46
|
+
routedSkill: chosen.skill,
|
|
47
|
+
confidence,
|
|
48
|
+
alternatives,
|
|
49
|
+
rationale,
|
|
50
|
+
nextActions: [`LLM: dispatch ${chosen.skill} sub-agent with this goal`]
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
function registerRouted(program, io, name, argument) {
|
|
54
|
+
program.command(`${name} <${argument}>`).description(`Route a natural-language ${argument} to the appropriate Peaks skill`).action((value) => {
|
|
55
|
+
const input = value.trim();
|
|
56
|
+
if (!input) {
|
|
57
|
+
io.stdout(JSON.stringify({ ok: false, command: `super.${name}`, code: 'MISSING_ARG', message: `${argument} must not be blank`, data: {}, warnings: [], nextActions: [] }));
|
|
58
|
+
process.exitCode = 1;
|
|
59
|
+
return;
|
|
60
|
+
}
|
|
61
|
+
const data = route(name, input);
|
|
62
|
+
io.stdout(envelope(`super.${name}`, data));
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
function registerFixed(program, io, name, skill, description) {
|
|
66
|
+
program.command(name).description(description).action(() => {
|
|
67
|
+
const data = {
|
|
68
|
+
routedSkill: skill,
|
|
69
|
+
confidence: 1,
|
|
70
|
+
alternatives: [],
|
|
71
|
+
rationale: `Fixed operator handoff for ${skill}`,
|
|
72
|
+
nextActions: [`LLM: dispatch ${skill} sub-agent`]
|
|
73
|
+
};
|
|
74
|
+
io.stdout(envelope(`super.${name}`, data));
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
function registerAsk(program, io) {
|
|
78
|
+
program.command('ask <question>').description('Route a free-form question to the Peaks solo dispatcher').action((question) => {
|
|
79
|
+
const input = question.trim();
|
|
80
|
+
if (!input) {
|
|
81
|
+
io.stdout(JSON.stringify({ ok: false, command: 'super.ask', code: 'MISSING_ARG', message: 'question must not be blank', data: {}, warnings: [], nextActions: [] }));
|
|
82
|
+
process.exitCode = 1;
|
|
83
|
+
return;
|
|
84
|
+
}
|
|
85
|
+
io.stdout(envelope('super.ask', { routedSkill: 'peaks-solo', confidence: 1, alternatives: [], rationale: 'Free-form question delegated to the Peaks solo dispatcher', nextActions: ['LLM: dispatch peaks-solo with this question'] }));
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
export function registerSuperCommands(program, io) {
|
|
89
|
+
registerRouted(program, io, 'make', 'goal');
|
|
90
|
+
registerRouted(program, io, 'learn', 'kind');
|
|
91
|
+
registerRouted(program, io, 'check', 'target');
|
|
92
|
+
registerRouted(program, io, 'run', 'workflow');
|
|
93
|
+
registerFixed(program, io, 'share', 'peaks-sub-agent-share', 'Hand off a sharing operation');
|
|
94
|
+
registerFixed(program, io, 'version', 'peaks-version', 'Return the current Peaks version');
|
|
95
|
+
registerAsk(program, io);
|
|
96
|
+
registerFixed(program, io, 'status', 'peaks-status', 'Show current Peaks workflow status');
|
|
97
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { existsSync } from 'node:fs';
|
|
2
2
|
import { addJsonOption, printResult } from '../cli-helpers.js';
|
|
3
|
-
import { fail, ok, getErrorMessage } from '
|
|
3
|
+
import { fail, ok, getErrorMessage } from 'peaks-loop-shared/result';
|
|
4
4
|
import { AdapterRegistry } from '../../services/adapter/adapter-registry.js';
|
|
5
5
|
import { registryFileFor } from './runtime-commands.js';
|
|
6
6
|
function resolveProjectRoot(explicit) {
|
|
@@ -43,12 +43,14 @@
|
|
|
43
43
|
import { existsSync, mkdirSync } from "node:fs";
|
|
44
44
|
import { join } from "node:path";
|
|
45
45
|
import { openStateDb } from "../../services/skillhub/sqlite-store.js";
|
|
46
|
-
import { CrystallizationService, CrystallizationIntegrityError, } from "../../services/crystallization/
|
|
47
|
-
import {
|
|
48
|
-
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";
|
|
49
51
|
import { findProjectRoot } from "../../services/config/config-safety.js";
|
|
50
52
|
import { addJsonOption, getErrorMessage, printResult } from "../cli-helpers.js";
|
|
51
|
-
import { fail, ok } from
|
|
53
|
+
import { fail, ok } from 'peaks-loop-shared/result';
|
|
52
54
|
function collectRepeatable(value, previous) {
|
|
53
55
|
if (Array.isArray(previous))
|
|
54
56
|
return [...previous, value];
|
|
@@ -120,7 +122,8 @@ export function registerAssetCommands(program, io) {
|
|
|
120
122
|
}
|
|
121
123
|
catch (err) {
|
|
122
124
|
if (err instanceof BriefSectionError) {
|
|
123
|
-
|
|
125
|
+
const briefErr = err;
|
|
126
|
+
printResult(io, fail("asset.crystallize", "MISSING_BRIEF_SECTION", briefErr.message, { findings: [...briefErr.findings], flagsProvided: Object.keys(candidateBrief) }, [
|
|
124
127
|
"Pass ALL FOUR brief sections via --brief-what-happened / --brief-why-it-matters / --brief-what-learned / --brief-what-action.",
|
|
125
128
|
"The CLI refuses to render a recommendation without a complete 4-section brief (spec §4.7 / RL-7).",
|
|
126
129
|
]), options.json);
|
|
@@ -155,7 +158,12 @@ export function registerAssetCommands(program, io) {
|
|
|
155
158
|
}
|
|
156
159
|
const db = openStateDb(join(projectRoot, ".peaks", "state.db"));
|
|
157
160
|
try {
|
|
158
|
-
const svc = new CrystallizationService(db
|
|
161
|
+
const svc = new CrystallizationService(db, {
|
|
162
|
+
loopReleaseSchema: LoopReleaseSchema,
|
|
163
|
+
loopBeeRelationSchema: LoopBeeRelationSchema,
|
|
164
|
+
insertLoopRelease: insertLoopRelease,
|
|
165
|
+
insertLoopBeeRelation: insertLoopBeeRelation,
|
|
166
|
+
});
|
|
159
167
|
const result = svc.crystallize({
|
|
160
168
|
task: {
|
|
161
169
|
task_id: options.fromTask,
|
|
@@ -217,10 +225,11 @@ export function registerAssetCommands(program, io) {
|
|
|
217
225
|
}
|
|
218
226
|
catch (err) {
|
|
219
227
|
if (err instanceof CrystallizationIntegrityError) {
|
|
220
|
-
|
|
221
|
-
|
|
228
|
+
const integrityErr = err;
|
|
229
|
+
printResult(io, fail("asset.crystallize", integrityErr.code, integrityErr.message, { findings: [...integrityErr.findings] }, [
|
|
230
|
+
integrityErr.code === "CRYSTALLIZATION_PRE_RUN"
|
|
222
231
|
? "Re-shape the candidate task so task_status=completed AND gates_passed=true AND evidence_collected=true (spec §5 / RL-2)."
|
|
223
|
-
:
|
|
232
|
+
: integrityErr.code === "MISSING_BRIEF_SECTION"
|
|
224
233
|
? "Pass ALL FOUR brief sections (RL-7); the CLI refuses to render a recommendation without them."
|
|
225
234
|
: "Inspect the failure findings and re-shape the payload.",
|
|
226
235
|
]), options.json);
|
|
@@ -228,14 +237,12 @@ export function registerAssetCommands(program, io) {
|
|
|
228
237
|
return;
|
|
229
238
|
}
|
|
230
239
|
if (err instanceof BriefSectionError) {
|
|
231
|
-
|
|
240
|
+
const briefErr = err;
|
|
241
|
+
printResult(io, fail("asset.crystallize", "MISSING_BRIEF_SECTION", briefErr.message, { findings: [...briefErr.findings] }, ["Pass all 4 brief sections (RL-7)."]), options.json);
|
|
232
242
|
process.exitCode = 1;
|
|
233
243
|
return;
|
|
234
244
|
}
|
|
235
|
-
|
|
236
|
-
"Verify the brief flags and the loop/bee identifiers are valid.",
|
|
237
|
-
]), options.json);
|
|
238
|
-
process.exitCode = 1;
|
|
245
|
+
throw err;
|
|
239
246
|
}
|
|
240
247
|
});
|
|
241
248
|
// ---------- peaks asset dispose ----------
|
|
@@ -258,7 +265,12 @@ export function registerAssetCommands(program, io) {
|
|
|
258
265
|
}
|
|
259
266
|
const db = openStateDb(join(projectRoot, ".peaks", "state.db"));
|
|
260
267
|
try {
|
|
261
|
-
const svc = new CrystallizationService(db
|
|
268
|
+
const svc = new CrystallizationService(db, {
|
|
269
|
+
loopReleaseSchema: LoopReleaseSchema,
|
|
270
|
+
loopBeeRelationSchema: LoopBeeRelationSchema,
|
|
271
|
+
insertLoopRelease: insertLoopRelease,
|
|
272
|
+
insertLoopBeeRelation: insertLoopBeeRelation,
|
|
273
|
+
});
|
|
262
274
|
const existing = svc.read(options.crystallizationEvent);
|
|
263
275
|
if (!existing) {
|
|
264
276
|
printResult(io, fail("asset.dispose", "ASSET_EVENT_NOT_FOUND", `crystallization event '${options.crystallizationEvent}' not found`, { eventId: options.crystallizationEvent }, ["Verify the event id."]), options.json);
|
|
@@ -331,7 +343,12 @@ export function registerAssetCommands(program, io) {
|
|
|
331
343
|
}
|
|
332
344
|
const db = openStateDb(join(projectRoot, ".peaks", "state.db"));
|
|
333
345
|
try {
|
|
334
|
-
const svc = new CrystallizationService(db
|
|
346
|
+
const svc = new CrystallizationService(db, {
|
|
347
|
+
loopReleaseSchema: LoopReleaseSchema,
|
|
348
|
+
loopBeeRelationSchema: LoopBeeRelationSchema,
|
|
349
|
+
insertLoopRelease: insertLoopRelease,
|
|
350
|
+
insertLoopBeeRelation: insertLoopBeeRelation,
|
|
351
|
+
});
|
|
335
352
|
let events = [];
|
|
336
353
|
if (options.loop) {
|
|
337
354
|
events = [
|
|
@@ -12,7 +12,7 @@ import { resolve } from 'node:path';
|
|
|
12
12
|
import { runRedLinesAudit } from '../../services/audit/red-lines-service.js';
|
|
13
13
|
import { runStaticAudit } from '../../services/audit/static-service.js';
|
|
14
14
|
import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
|
|
15
|
-
import { fail, ok } from '
|
|
15
|
+
import { fail, ok } from 'peaks-loop-shared/result';
|
|
16
16
|
import { writeAuditDecision } from '../../services/audit/decision-writer.js';
|
|
17
17
|
import { computeProseRatio } from '../../services/audit/prose-ratio-calculator.js';
|
|
18
18
|
import { writeMachineOutput, writeNarrative, writePrompt, } from '../../services/audit/artifact-writer.js';
|
|
@@ -49,7 +49,7 @@ function validateProjectRoot(projectArg) {
|
|
|
49
49
|
}
|
|
50
50
|
export function registerAuditCommands(program, io) {
|
|
51
51
|
const audit = program
|
|
52
|
-
.command('audit')
|
|
52
|
+
.command('audit', { hidden: true })
|
|
53
53
|
.description('Audit a project for compliance with peaks-loop red lines (P0 / P1 / P2 tiers)');
|
|
54
54
|
addJsonOption(audit
|
|
55
55
|
.command('red-lines')
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import { type ProgramIO } from '../cli-helpers.js';
|
|
3
|
+
export type AutonomousPlanOptions = {
|
|
4
|
+
mode: string;
|
|
5
|
+
changeId: string;
|
|
6
|
+
goal: string;
|
|
7
|
+
maxWorkers?: string;
|
|
8
|
+
dryRun?: boolean;
|
|
9
|
+
json?: boolean;
|
|
10
|
+
};
|
|
11
|
+
export declare function runAutonomousSwarmPlan(io: ProgramIO, options: AutonomousPlanOptions): void;
|
|
12
|
+
export declare function registerAutonomousSwarmCommands(program: Command, io: ProgramIO): void;
|
|
@@ -0,0 +1,120 @@
|
|
|
1
|
+
import { fail, ok } from 'peaks-loop-shared/result';
|
|
2
|
+
import { getWorkspaceConfigForPath } from '../../services/config/config-service.js';
|
|
3
|
+
import { getLocalArtifactPath } from '../../services/artifacts/workspace-service.js';
|
|
4
|
+
import { findProjectRoot } from '../../services/config/config-safety.js';
|
|
5
|
+
import { planAutonomousRdSwarm, buildAutonomousGoalPackage, buildResumeInstructions, } from '../../services/autonomous-swarm/autonomous-swarm-service.js';
|
|
6
|
+
import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
|
|
7
|
+
import { mapServiceError } from './_cli-error-envelope.js';
|
|
8
|
+
const SUPPORTED_AUTONOMOUS_MODES = ['code', 'team'];
|
|
9
|
+
function isAutonomousMode(value) {
|
|
10
|
+
return SUPPORTED_AUTONOMOUS_MODES.includes(value);
|
|
11
|
+
}
|
|
12
|
+
function projectContext() {
|
|
13
|
+
const projectRoot = findProjectRoot(process.cwd()) ?? process.cwd();
|
|
14
|
+
const workspace = getWorkspaceConfigForPath(projectRoot);
|
|
15
|
+
return {
|
|
16
|
+
workspaceRoot: workspace ? getLocalArtifactPath(workspace) : projectRoot,
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
function autonomousWorkspaceRoot() {
|
|
20
|
+
return projectContext().workspaceRoot;
|
|
21
|
+
}
|
|
22
|
+
export function runAutonomousSwarmPlan(io, options) {
|
|
23
|
+
if (options.dryRun === false) {
|
|
24
|
+
printResult(io, fail('workflow.autonomous', 'NON_DRY_RUN_UNSUPPORTED', 'Only dry-run planning is supported', {}, ['Rerun with --dry-run or omit --no-dry-run']), options.json);
|
|
25
|
+
process.exitCode = 1;
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
if (!isAutonomousMode(options.mode)) {
|
|
29
|
+
printResult(io, fail('workflow.autonomous', 'UNSUPPORTED_AUTONOMOUS_MODE', `Unsupported autonomous mode ${options.mode}`, {}, ['Use --mode code or --mode team']), options.json);
|
|
30
|
+
process.exitCode = 1;
|
|
31
|
+
return;
|
|
32
|
+
}
|
|
33
|
+
const maxWorkers = Number(options.maxWorkers ?? '40');
|
|
34
|
+
if (!Number.isInteger(maxWorkers) || maxWorkers < 1) {
|
|
35
|
+
printResult(io, fail('workflow.autonomous', 'INVALID_MAX_WORKERS', 'max-workers must be a positive integer', {}, ['Use --max-workers with a positive integer value']), options.json);
|
|
36
|
+
process.exitCode = 1;
|
|
37
|
+
return;
|
|
38
|
+
}
|
|
39
|
+
const workspaceRoot = autonomousWorkspaceRoot();
|
|
40
|
+
try {
|
|
41
|
+
// Validate inputs that the service enforces as throws so we surface
|
|
42
|
+
// them as typed envelope codes rather than generic INTERNAL_ERROR.
|
|
43
|
+
if (!options.goal.trim()) {
|
|
44
|
+
throw new Error('Goal must be non-empty');
|
|
45
|
+
}
|
|
46
|
+
const goalPackage = buildAutonomousGoalPackage({
|
|
47
|
+
changeId: options.changeId,
|
|
48
|
+
goal: options.goal,
|
|
49
|
+
mode: options.mode,
|
|
50
|
+
maxWorkers,
|
|
51
|
+
dryRun: true,
|
|
52
|
+
workspaceRoot,
|
|
53
|
+
});
|
|
54
|
+
const plan = planAutonomousRdSwarm({
|
|
55
|
+
changeId: options.changeId,
|
|
56
|
+
goal: options.goal,
|
|
57
|
+
mode: options.mode,
|
|
58
|
+
maxWorkers,
|
|
59
|
+
dryRun: true,
|
|
60
|
+
workspaceRoot,
|
|
61
|
+
requiresTechApproval: false,
|
|
62
|
+
});
|
|
63
|
+
const resumeInstructions = buildResumeInstructions(plan);
|
|
64
|
+
printResult(io, ok('workflow.autonomous', {
|
|
65
|
+
goalPackage,
|
|
66
|
+
capabilityReuse: plan.capabilityReuse,
|
|
67
|
+
checkpoints: plan.checkpoints,
|
|
68
|
+
workerQueue: plan.workerQueue,
|
|
69
|
+
evidence: plan.evidence,
|
|
70
|
+
artifactRoot: plan.artifactRoot,
|
|
71
|
+
gateStatus: plan.gateStatus,
|
|
72
|
+
blockedReasons: plan.blockedReasons,
|
|
73
|
+
nextActions: plan.nextActions,
|
|
74
|
+
resumeInstructions,
|
|
75
|
+
autonomyMode: plan.autonomyMode,
|
|
76
|
+
available: plan.available,
|
|
77
|
+
}), options.json);
|
|
78
|
+
}
|
|
79
|
+
catch (error) {
|
|
80
|
+
const mapping = mapServiceError(error);
|
|
81
|
+
// Re-label change-id validation errors so the envelope code matches
|
|
82
|
+
// the typed `code` we want to surface to the user (rather than the
|
|
83
|
+
// generic INTERNAL_ERROR fallback).
|
|
84
|
+
if (error instanceof Error && /changeId|change-id/.test(error.message)) {
|
|
85
|
+
if (error.message.includes('empty')) {
|
|
86
|
+
printResult(io, fail('workflow.autonomous', 'change-id-empty', error.message, {}, ['Provide a change-id matching [A-Za-z0-9][A-Za-z0-9._-]*']), options.json);
|
|
87
|
+
}
|
|
88
|
+
else {
|
|
89
|
+
printResult(io, fail('workflow.autonomous', 'change-id-format', error.message, {}, ['Provide a change-id matching [A-Za-z0-9][A-Za-z0-9._-]*']), options.json);
|
|
90
|
+
}
|
|
91
|
+
process.exitCode = 1;
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
printResult(io, fail('workflow.autonomous', mapping.code, getErrorMessage(error), {}, [...mapping.nextActions]), options.json);
|
|
95
|
+
process.exitCode = 1;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
function addAutonomousPlanOptions(command) {
|
|
99
|
+
return addJsonOption(command
|
|
100
|
+
.description('Plan an autonomous RD swarm dry-run (slice rid-014).')
|
|
101
|
+
.requiredOption('--mode <mode>', 'autonomous mode: code or team')
|
|
102
|
+
.requiredOption('--change-id <id>', 'change id matching [A-Za-z0-9][A-Za-z0-9._-]*')
|
|
103
|
+
.requiredOption('--goal <goal>', 'planning goal')
|
|
104
|
+
.option('--max-workers <count>', 'maximum worker count', '40')
|
|
105
|
+
.option('--dry-run', 'preview without writing files', true)
|
|
106
|
+
.option('--no-dry-run', 'unsupported: do not execute autonomous planning from this CLI'));
|
|
107
|
+
}
|
|
108
|
+
export function registerAutonomousSwarmCommands(program, io) {
|
|
109
|
+
// Register the new rid-014 dry-run planner under
|
|
110
|
+
// `peaks workflow autonomous-swarm` (the existing `peaks workflow
|
|
111
|
+
// autonomous` registration owns the bare `autonomous` name and is
|
|
112
|
+
// untouched). The legacy `registerSwarmCommands` and
|
|
113
|
+
// `registerTechCommands` calls in `workflow-commands.ts` are
|
|
114
|
+
// byte-for-byte untouched.
|
|
115
|
+
const workflow = program.commands.find((candidate) => candidate.name() === 'workflow');
|
|
116
|
+
if (workflow) {
|
|
117
|
+
addAutonomousPlanOptions(workflow.command('autonomous-swarm')).action((options) => runAutonomousSwarmPlan(io, options));
|
|
118
|
+
}
|
|
119
|
+
addAutonomousPlanOptions(program.command('autonomous-swarm')).action((options) => runAutonomousSwarmPlan(io, options));
|
|
120
|
+
}
|
|
@@ -24,7 +24,7 @@
|
|
|
24
24
|
import { existsSync, mkdirSync } from 'node:fs';
|
|
25
25
|
import { join } from 'node:path';
|
|
26
26
|
import { addJsonOption, getErrorMessage, printResult } from '../cli-helpers.js';
|
|
27
|
-
import { fail, ok } from '
|
|
27
|
+
import { fail, ok } from 'peaks-loop-shared/result';
|
|
28
28
|
import { findProjectRoot } from '../../services/config/config-safety.js';
|
|
29
29
|
import { openStateDb } from '../../services/skillhub/sqlite-store.js';
|
|
30
30
|
import { writeBundle, BundleNotShareableError, BundleAssetNotFoundError, } from '../../services/share/bundle-writer.js';
|
|
@@ -2,7 +2,7 @@ import { readConfig } from '../../services/config/config-service.js';
|
|
|
2
2
|
import { resolveCapabilityAvailability } from '../../services/recommendations/capability-availability.js';
|
|
3
3
|
import { createCapabilityMapPlan } from '../../services/recommendations/capability-map-service.js';
|
|
4
4
|
import { seedCapabilityItems, seedCapabilitySources } from '../../services/recommendations/seed-capability-catalog.js';
|
|
5
|
-
import { fail, ok } from '
|
|
5
|
+
import { fail, ok } from 'peaks-loop-shared/result';
|
|
6
6
|
import { addJsonOption, printResult } from '../cli-helpers.js';
|
|
7
7
|
const CAPABILITY_SOURCE_FILTERS = new Set(['all', 'access-repo', 'mcp-server']);
|
|
8
8
|
export function registerCapabilityCommands(program, io) {
|
|
@@ -1,10 +1,8 @@
|
|
|
1
1
|
import { registerCapabilityCommands } from './capability-commands.js';
|
|
2
2
|
import { registerConfigCommands } from './config-commands.js';
|
|
3
3
|
import { registerSCCommands } from './sc-commands.js';
|
|
4
|
-
import { registerWorkerCommands } from './worker-commands.js';
|
|
5
4
|
export function registerCapabilityWorkerConfigAndSCCommands(program, io) {
|
|
6
5
|
registerCapabilityCommands(program, io);
|
|
7
|
-
registerWorkerCommands(program, io);
|
|
8
6
|
registerConfigCommands(program, io);
|
|
9
7
|
registerSCCommands(program, io);
|
|
10
8
|
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* rid-011 — peaks changeset check (Phase 4 slice 2).
|
|
3
|
+
*
|
|
4
|
+
* - `peaks changeset check` — hard gate, exit non-zero if any staged
|
|
5
|
+
* .changeset/*.md exists. No warning mode, no --strict, no
|
|
6
|
+
* --skip-changeset-check.
|
|
7
|
+
*
|
|
8
|
+
* Wired into `_register.ts` via the rid-007 auto-registration barrel;
|
|
9
|
+
* do NOT add a second registration call in `program.ts`.
|
|
10
|
+
*/
|
|
11
|
+
import type { Command } from 'commander';
|
|
12
|
+
import { type ProgramIO } from '../cli-helpers.js';
|
|
13
|
+
export declare function registerChangesetCommands(program: Command, io: ProgramIO): void;
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* rid-011 — peaks changeset check (Phase 4 slice 2).
|
|
3
|
+
*
|
|
4
|
+
* - `peaks changeset check` — hard gate, exit non-zero if any staged
|
|
5
|
+
* .changeset/*.md exists. No warning mode, no --strict, no
|
|
6
|
+
* --skip-changeset-check.
|
|
7
|
+
*
|
|
8
|
+
* Wired into `_register.ts` via the rid-007 auto-registration barrel;
|
|
9
|
+
* do NOT add a second registration call in `program.ts`.
|
|
10
|
+
*/
|
|
11
|
+
import { findProjectRoot } from '../../services/config/config-safety.js';
|
|
12
|
+
import { runChangesetHardGate } from '../../services/changeset/changeset-check-service.js';
|
|
13
|
+
import { fail, ok } from 'peaks-loop-shared/result';
|
|
14
|
+
import { addJsonOption, printResult } from '../cli-helpers.js';
|
|
15
|
+
export function registerChangesetCommands(program, io) {
|
|
16
|
+
const changeset = program
|
|
17
|
+
.command('changeset')
|
|
18
|
+
.description('rid-011 — changeset hard gate (no warning mode, no skip).');
|
|
19
|
+
addJsonOption(changeset
|
|
20
|
+
.command('check')
|
|
21
|
+
.description('Hard-gate check: exit non-zero if any .changeset/*.md file is staged ' +
|
|
22
|
+
'(excluding README.md). Mirrors publish.yml gate-changeset step.')
|
|
23
|
+
.option('--project <path>', 'project root (default: cwd)')).action((opts) => {
|
|
24
|
+
const projectRoot = opts.project ?? findProjectRoot(process.cwd()) ?? process.cwd();
|
|
25
|
+
const gate = runChangesetHardGate(projectRoot);
|
|
26
|
+
if (gate.ok) {
|
|
27
|
+
printResult(io, ok('changeset.check', {
|
|
28
|
+
root: gate.root,
|
|
29
|
+
state: gate.state,
|
|
30
|
+
stagedFiles: gate.stagedFiles,
|
|
31
|
+
snapshotAt: gate.snapshotAt
|
|
32
|
+
}, [], []), opts.json ?? false);
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
process.exitCode = 1;
|
|
36
|
+
printResult(io, fail('changeset.check', 'CHANGESET_BLOCKED', `${gate.stagedFiles.length} staged .changeset/*.md file(s) — refusing to proceed`, {
|
|
37
|
+
root: gate.root,
|
|
38
|
+
state: gate.state,
|
|
39
|
+
stagedFiles: gate.stagedFiles,
|
|
40
|
+
snapshotAt: gate.snapshotAt
|
|
41
|
+
}, [
|
|
42
|
+
`Drain pending changesets before proceeding: drain `.concat(gate.stagedFiles.join(', '), ' via the coordinating LLM (e.g. `pnpm changeset version` or `peaks changeset publish` if installed).'),
|
|
43
|
+
'Then re-run `peaks changeset check` to confirm a clean state.'
|
|
44
|
+
]), opts.json ?? false);
|
|
45
|
+
});
|
|
46
|
+
}
|
|
@@ -14,9 +14,16 @@
|
|
|
14
14
|
* v2.11.0 Group F (Tier 9) — D5 / D7 additions:
|
|
15
15
|
* - `peaks code should-pause --step <step> --mode <mode>` (D5)
|
|
16
16
|
* - `peaks code post-compact-detect --project <path>` (D7)
|
|
17
|
+
*
|
|
18
|
+
* rid-024: 7 sub-commands extracted into 3 sibling files:
|
|
19
|
+
* - code-mode-gate-commands.ts (plan + should-pause)
|
|
20
|
+
* - code-job-shape-commands.ts (detect-job + read-job-shape)
|
|
21
|
+
* - code-runtime-commands.ts (post-compact-detect + auto-compact + context-now + gate-step-08 + emit-handoff)
|
|
22
|
+
* This file keeps the public API: types, buildCodePlan, runCodeFast,
|
|
23
|
+
* registerCodeCommands (now a thin orchestrator).
|
|
17
24
|
*/
|
|
18
25
|
import type { Command } from 'commander';
|
|
19
|
-
import {
|
|
26
|
+
import type { ProgramIO } from '../cli-helpers.js';
|
|
20
27
|
export type CodeStepKind = 'memory' | 'preflight' | 'rd' | 'qa' | 'emit';
|
|
21
28
|
export interface CodeStep {
|
|
22
29
|
readonly id: 'load-memory' | 'standards-preflight' | 'rd-cycle' | 'qa-cycle' | 'emit-txt';
|
|
@@ -76,5 +83,8 @@ export declare function runCodeFast(opts: {
|
|
|
76
83
|
* LLM-side orchestration is driven by the SKILL.md (LLM-side), so this
|
|
77
84
|
* CLI command is a thin surface that builds the plan and emits a JSON
|
|
78
85
|
* envelope for downstream tooling.
|
|
86
|
+
*
|
|
87
|
+
* rid-024: this function is now a thin orchestrator that delegates to 3
|
|
88
|
+
* sibling register functions + the rid-020b run register.
|
|
79
89
|
*/
|
|
80
90
|
export declare function registerCodeCommands(program: Command, io: ProgramIO): void;
|