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
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `peaks session auto-compact-hook` — slice 2026-07-02-auto-compact-zero-pause.
|
|
3
|
-
*
|
|
4
|
-
* The Bash entrypoint the PreToolUse hook fires on every Bash/Task
|
|
5
|
-
* tool call from the Claude Code runner. Behaviour:
|
|
6
|
-
*
|
|
7
|
-
* 1. Read `CLAUDE_CONTEXT_USAGE_PERCENT` (or any adapter-declared
|
|
8
|
-
* env-var via the registry — claude-code MVP). If ratio is below
|
|
9
|
-
* the red-line threshold (0.95), exit 0 silent — the runner's
|
|
10
|
-
* normal flow continues.
|
|
11
|
-
* 2. If ratio is ≥ 0.95 (red line), write a one-line stderr hint
|
|
12
|
-
* so the human sees what happened, then in-band spawn
|
|
13
|
-
* `claude --compact` so the **current** runner's context
|
|
14
|
-
* window collapses (not a new claude process).
|
|
15
|
-
* 3. Always exit 0. The hook is a probe, not a gate — the gate is
|
|
16
|
-
* `claude --compact` itself returning 0.
|
|
17
|
-
*
|
|
18
|
-
* Idempotency: re-running the hook is safe; if `claude --compact`
|
|
19
|
-
* is already in flight, the new process just exits 0 immediately
|
|
20
|
-
* (Claude Code's compact is a one-shot operation against the
|
|
21
|
-
* current runner).
|
|
22
|
-
*
|
|
23
|
-
* Why a CLI subcommand instead of an inline JS hook:
|
|
24
|
-
* - Keeps the hook payload in `.claude/settings.local.json` small
|
|
25
|
-
* (one line: `peaks session auto-compact-hook`).
|
|
26
|
-
* - Lets the heavy lifting (ratio parsing, IDE-aware env-var
|
|
27
|
-
* resolution, spawning `claude --compact`) live in TypeScript
|
|
28
|
-
* where it's unit-testable.
|
|
29
|
-
* - Discoverable via `peaks session --help` — future LLM sessions
|
|
30
|
-
* see the primitive exists.
|
|
31
|
-
*
|
|
32
|
-
* Karpathy §2: 50 lines, no abstractions, no speculative error
|
|
33
|
-
* handling. The hook command is a single-purpose muscle; if it
|
|
34
|
-
* grows beyond ~80 lines, that's a signal to split.
|
|
35
|
-
*/
|
|
36
|
-
import type { Command } from 'commander';
|
|
37
|
-
export declare function registerSessionAutoCompactHookCommand(session: Command): void;
|
|
@@ -1,127 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* `peaks session auto-compact-hook` — slice 2026-07-02-auto-compact-zero-pause.
|
|
3
|
-
*
|
|
4
|
-
* The Bash entrypoint the PreToolUse hook fires on every Bash/Task
|
|
5
|
-
* tool call from the Claude Code runner. Behaviour:
|
|
6
|
-
*
|
|
7
|
-
* 1. Read `CLAUDE_CONTEXT_USAGE_PERCENT` (or any adapter-declared
|
|
8
|
-
* env-var via the registry — claude-code MVP). If ratio is below
|
|
9
|
-
* the red-line threshold (0.95), exit 0 silent — the runner's
|
|
10
|
-
* normal flow continues.
|
|
11
|
-
* 2. If ratio is ≥ 0.95 (red line), write a one-line stderr hint
|
|
12
|
-
* so the human sees what happened, then in-band spawn
|
|
13
|
-
* `claude --compact` so the **current** runner's context
|
|
14
|
-
* window collapses (not a new claude process).
|
|
15
|
-
* 3. Always exit 0. The hook is a probe, not a gate — the gate is
|
|
16
|
-
* `claude --compact` itself returning 0.
|
|
17
|
-
*
|
|
18
|
-
* Idempotency: re-running the hook is safe; if `claude --compact`
|
|
19
|
-
* is already in flight, the new process just exits 0 immediately
|
|
20
|
-
* (Claude Code's compact is a one-shot operation against the
|
|
21
|
-
* current runner).
|
|
22
|
-
*
|
|
23
|
-
* Why a CLI subcommand instead of an inline JS hook:
|
|
24
|
-
* - Keeps the hook payload in `.claude/settings.local.json` small
|
|
25
|
-
* (one line: `peaks session auto-compact-hook`).
|
|
26
|
-
* - Lets the heavy lifting (ratio parsing, IDE-aware env-var
|
|
27
|
-
* resolution, spawning `claude --compact`) live in TypeScript
|
|
28
|
-
* where it's unit-testable.
|
|
29
|
-
* - Discoverable via `peaks session --help` — future LLM sessions
|
|
30
|
-
* see the primitive exists.
|
|
31
|
-
*
|
|
32
|
-
* Karpathy §2: 50 lines, no abstractions, no speculative error
|
|
33
|
-
* handling. The hook command is a single-purpose muscle; if it
|
|
34
|
-
* grows beyond ~80 lines, that's a signal to split.
|
|
35
|
-
*/
|
|
36
|
-
import { spawn } from 'node:child_process';
|
|
37
|
-
import { detectIdeFromEnv } from '../../services/context/main-session-monitor.js';
|
|
38
|
-
import { getAdapter } from '../../services/ide/ide-registry.js';
|
|
39
|
-
/**
|
|
40
|
-
* Red-line ratio threshold. Must match the orchestrator's
|
|
41
|
-
* AUTO_COMPACT_RED_LINE_RATIO constant (0.95). Kept here as a
|
|
42
|
-
* literal so the hook command stays self-contained — a future
|
|
43
|
-
* slice may move this to a shared constant module if the value
|
|
44
|
-
* starts drifting.
|
|
45
|
-
*/
|
|
46
|
-
const RED_LINE_RATIO = 0.95;
|
|
47
|
-
/**
|
|
48
|
-
* Parse `CLAUDE_CONTEXT_USAGE_PERCENT` (or the adapter-declared
|
|
49
|
-
* env-var) into a ratio in [0, 1]. Returns null on missing /
|
|
50
|
-
* malformed input. Mirrors `readEnvPercent` in
|
|
51
|
-
* `auto-compact-reader.ts` so the hook command and the
|
|
52
|
-
* orchestrator agree on parsing semantics.
|
|
53
|
-
*/
|
|
54
|
-
function readRatioFromEnv(env) {
|
|
55
|
-
const detected = detectIdeFromEnv(env);
|
|
56
|
-
const ideId = (detected === 'unknown' ? 'claude-code' : detected);
|
|
57
|
-
const adapter = getAdapter(ideId);
|
|
58
|
-
if (!adapter.compact)
|
|
59
|
-
return null;
|
|
60
|
-
const varName = adapter.compact.envVarForContextPercent;
|
|
61
|
-
const raw = env[varName];
|
|
62
|
-
if (typeof raw !== 'string' || raw.length === 0)
|
|
63
|
-
return null;
|
|
64
|
-
const parsed = Number.parseFloat(raw);
|
|
65
|
-
if (!Number.isFinite(parsed))
|
|
66
|
-
return null;
|
|
67
|
-
// Allow either "0..1" or "0..100" encoding. Claude Code writes
|
|
68
|
-
// "0..1" today; statusline tools sometimes write "0..100". Normalize.
|
|
69
|
-
const ratio = parsed > 1.5 ? parsed / 100 : Math.max(0, Math.min(1, parsed));
|
|
70
|
-
return { ratio, varName };
|
|
71
|
-
}
|
|
72
|
-
export function registerSessionAutoCompactHookCommand(session) {
|
|
73
|
-
session
|
|
74
|
-
.command('auto-compact-hook')
|
|
75
|
-
.description('PreToolUse hook entrypoint — read CLAUDE_CONTEXT_USAGE_PERCENT and, ' +
|
|
76
|
-
'at ratio ≥ 0.95, in-band spawn `claude --compact` against the current ' +
|
|
77
|
-
'runner. Designed for invocation from `.claude/settings.local.json` ' +
|
|
78
|
-
'PreToolUse hooks; safe to re-run.')
|
|
79
|
-
.action(() => {
|
|
80
|
-
const probe = readRatioFromEnv(process.env);
|
|
81
|
-
if (probe === null) {
|
|
82
|
-
// No signal → exit 0 silent. The hook must never block the
|
|
83
|
-
// runner's normal flow on a missing env-var.
|
|
84
|
-
return;
|
|
85
|
-
}
|
|
86
|
-
if (probe.ratio < RED_LINE_RATIO) {
|
|
87
|
-
// Below red line → exit 0 silent. The orchestrator's
|
|
88
|
-
// pre-compact zone (0.85–0.95) is handled out-of-band by
|
|
89
|
-
// the LLM firing `peaks code auto-compact --execute`; the
|
|
90
|
-
// hook only fires on the synchronous red-line path.
|
|
91
|
-
return;
|
|
92
|
-
}
|
|
93
|
-
// Red line reached — compact the current runner in-band.
|
|
94
|
-
// The `detached: true` + `unref()` pair lets the hook return
|
|
95
|
-
// immediately while Claude Code's own slash-command processor
|
|
96
|
-
// picks up `claude --compact` against the runner's session.
|
|
97
|
-
// This is the fix for the shell-exec-spawns-a-child-process
|
|
98
|
-
// bug documented in `.peaks/memory/2026-06-27-auto-compact-design.md:139-152`.
|
|
99
|
-
//
|
|
100
|
-
// Dogfood 2026-07-02 fix: when `claude` is not on PATH (the
|
|
101
|
-
// user runs Claude Code as an MCP rather than via the CLI
|
|
102
|
-
// binary), `spawn` raises ENOENT. Catching this MUST NOT crash
|
|
103
|
-
// the runner's tool call — the hook must exit 0 silently with
|
|
104
|
-
// a one-line stderr hint so the runner keeps working. The user
|
|
105
|
-
// can then run `/compact` manually (or `peaks code auto-compact`
|
|
106
|
-
// from another terminal).
|
|
107
|
-
try {
|
|
108
|
-
const child = spawn('claude', ['--compact'], {
|
|
109
|
-
stdio: 'ignore',
|
|
110
|
-
detached: true,
|
|
111
|
-
env: process.env
|
|
112
|
-
});
|
|
113
|
-
child.on('error', () => {
|
|
114
|
-
// Spawn failed (ENOENT or EPERM). Exit 0 silently with a
|
|
115
|
-
// stderr hint — the hook contract is "never crash the
|
|
116
|
-
// runner's tool call".
|
|
117
|
-
process.stderr.write('[peaks:auto-compact-hook] claude CLI not on PATH; cannot fire in-band. Run `/compact` manually or set up the Claude Code CLI binary.\n');
|
|
118
|
-
});
|
|
119
|
-
child.unref();
|
|
120
|
-
process.stderr.write(`[peaks:auto-compact-hook] ratio=${(probe.ratio * 100).toFixed(1)}% ≥ ${(RED_LINE_RATIO * 100).toFixed(0)}%; firing claude --compact in-band\n`);
|
|
121
|
-
}
|
|
122
|
-
catch {
|
|
123
|
-
// Defensive: `spawn` can throw synchronously on some platforms.
|
|
124
|
-
process.stderr.write('[peaks:auto-compact-hook] failed to spawn claude --compact; run `/compact` manually.\n');
|
|
125
|
-
}
|
|
126
|
-
});
|
|
127
|
-
}
|
|
@@ -1,52 +0,0 @@
|
|
|
1
|
-
import { getMiniMaxProviderConfig } from '../../services/config/config-service.js';
|
|
2
|
-
import { runMiniMaxWorker } from '../../services/providers/minimax-worker-service.js';
|
|
3
|
-
import { fail, ok } from '../../shared/result.js';
|
|
4
|
-
import { addJsonOption, getErrorMessage, printResult, redactSensitiveErrorMessage, summarizeMiniMaxWorkerResult } from '../cli-helpers.js';
|
|
5
|
-
function addMiniMaxWorkerOptions(command) {
|
|
6
|
-
return addJsonOption(command
|
|
7
|
-
.description('Run a single MiniMax coding and unit-test execution worker')
|
|
8
|
-
.requiredOption('--session-id <id>', 'session identifier (the single-axis workspace binding after the change-id root removal)')
|
|
9
|
-
.requiredOption('--goal <goal>', 'execution goal')
|
|
10
|
-
.requiredOption('--coding-task <task>', 'coding execution task')
|
|
11
|
-
.requiredOption('--unit-test-task <task>', 'unit-test execution task')
|
|
12
|
-
.option('--model <model>', 'model name for the worker', 'MiniMax-M2.7')
|
|
13
|
-
.option('--confirm', 'confirm that worker inputs may be sent to the external MiniMax provider once and only return a review handoff', false));
|
|
14
|
-
}
|
|
15
|
-
async function runMiniMaxWorkerCommand(io, options) {
|
|
16
|
-
if (!options.confirm) {
|
|
17
|
-
printResult(io, fail('worker.minimax', 'CONFIRMATION_REQUIRED', 'This worker only runs with explicit confirmation because inputs may be sent to the external MiniMax provider', {}, ['Rerun with --confirm after removing secrets from worker inputs']), options.json);
|
|
18
|
-
process.exitCode = 1;
|
|
19
|
-
return;
|
|
20
|
-
}
|
|
21
|
-
const sessionId = options.sessionId.trim();
|
|
22
|
-
const goal = options.goal.trim();
|
|
23
|
-
const codingTask = options.codingTask.trim();
|
|
24
|
-
const unitTestTask = options.unitTestTask.trim();
|
|
25
|
-
if (!sessionId || !goal || !codingTask || !unitTestTask) {
|
|
26
|
-
printResult(io, fail('worker.minimax', 'INVALID_WORKER_INPUT', 'Worker inputs must be non-empty', {}, ['Provide non-empty values for --session-id, --goal, --coding-task, and --unit-test-task']), options.json);
|
|
27
|
-
process.exitCode = 1;
|
|
28
|
-
return;
|
|
29
|
-
}
|
|
30
|
-
try {
|
|
31
|
-
const result = await runMiniMaxWorker(getMiniMaxProviderConfig(), { sessionId, goal, codingTask, unitTestTask, model: options.model });
|
|
32
|
-
const safeResult = summarizeMiniMaxWorkerResult(result);
|
|
33
|
-
if (!result.provider.configured) {
|
|
34
|
-
printResult(io, fail('worker.minimax', 'MINIMAX_PROVIDER_NOT_CONFIGURED', 'MiniMax provider requires baseUrl and apiKey in user config', safeResult, ['Run peaks config provider minimax set --base-url <url> and either MINIMAX_API_KEY']), options.json);
|
|
35
|
-
process.exitCode = 1;
|
|
36
|
-
return;
|
|
37
|
-
}
|
|
38
|
-
printResult(io, result.provider.ok ? ok('worker.minimax', safeResult) : fail('worker.minimax', 'MINIMAX_WORKER_FAILED', 'MiniMax worker execution failed', safeResult, ['Check the MiniMax base URL, API key, and worker tasks']), options.json);
|
|
39
|
-
if (!result.provider.ok) {
|
|
40
|
-
process.exitCode = 1;
|
|
41
|
-
}
|
|
42
|
-
}
|
|
43
|
-
catch (error) {
|
|
44
|
-
printResult(io, fail('worker.minimax', 'MINIMAX_WORKER_FAILED', redactSensitiveErrorMessage(getErrorMessage(error)), {}, ['Check the MiniMax base URL, API key, and worker tasks']), options.json);
|
|
45
|
-
process.exitCode = 1;
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
export function registerWorkerCommands(program, io) {
|
|
49
|
-
const worker = program.command('worker').description('Run controlled execution workers');
|
|
50
|
-
addMiniMaxWorkerOptions(worker.command('minimax')).action(async (options) => runMiniMaxWorkerCommand(io, options));
|
|
51
|
-
addMiniMaxWorkerOptions(program.command('minimax-worker')).action(async (options) => runMiniMaxWorkerCommand(io, options));
|
|
52
|
-
}
|
|
@@ -1,47 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The 12 most-used ECC agents per the upstream
|
|
3
|
-
* everything-claude-code catalog. The full 64-agent list is
|
|
4
|
-
* available at runtime via `npx ecc agent list`; this static
|
|
5
|
-
* subset covers the common L3-doctor dispatch paths.
|
|
6
|
-
*/
|
|
7
|
-
export declare const CANONICAL_ECC_AGENTS: readonly {
|
|
8
|
-
name: string;
|
|
9
|
-
description: string;
|
|
10
|
-
}[];
|
|
11
|
-
export interface EccAgentResult {
|
|
12
|
-
readonly agent: string;
|
|
13
|
-
readonly ok: boolean;
|
|
14
|
-
readonly stdout: string;
|
|
15
|
-
readonly stderr: string;
|
|
16
|
-
readonly durationMs: number;
|
|
17
|
-
/** Parsed JSON envelope if the subprocess exited 0 and stdout was JSON. */
|
|
18
|
-
readonly parsed?: unknown;
|
|
19
|
-
readonly error?: string;
|
|
20
|
-
}
|
|
21
|
-
export interface EccAgentServiceInput {
|
|
22
|
-
readonly agent: string;
|
|
23
|
-
readonly projectRoot: string;
|
|
24
|
-
readonly enableAgent?: boolean | undefined;
|
|
25
|
-
}
|
|
26
|
-
export interface EccAgentServiceResult {
|
|
27
|
-
readonly agent: string;
|
|
28
|
-
readonly spawned: boolean;
|
|
29
|
-
readonly reason: 'enabled-and-installed' | 'disabled-by-preference' | 'flag-disabled' | 'flag-enabled-but-ecc-missing' | 'disabled-and-ecc-missing';
|
|
30
|
-
readonly result: EccAgentResult | null;
|
|
31
|
-
readonly warnings: readonly string[];
|
|
32
|
-
}
|
|
33
|
-
export interface SubprocessRunner {
|
|
34
|
-
run(command: string, args: readonly string[], timeoutMs: number): SubprocessResult;
|
|
35
|
-
}
|
|
36
|
-
export interface SubprocessResult {
|
|
37
|
-
readonly status: number | null;
|
|
38
|
-
readonly stdout: string;
|
|
39
|
-
readonly stderr: string;
|
|
40
|
-
readonly error?: Error;
|
|
41
|
-
}
|
|
42
|
-
/**
|
|
43
|
-
* Validate the agent name against the canonical ECC catalog.
|
|
44
|
-
* Returns `null` if the agent is known; an error message otherwise.
|
|
45
|
-
*/
|
|
46
|
-
export declare function validateEccAgent(agent: string): string | null;
|
|
47
|
-
export declare function runEccAgent(input: EccAgentServiceInput, runner?: SubprocessRunner): EccAgentServiceResult;
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* ECC 64 agents soft-optional integration — `peaks agent run`.
|
|
3
|
-
*
|
|
4
|
-
* Per spec §7.2 line 818: "64 agents — Soft Optional — 装了 L3
|
|
5
|
-
* 直接调; 不装 L3 退化到 peaks-loop 自有少数核心诊断". The
|
|
6
|
-
* canonical ECC subprocess contract is:
|
|
7
|
-
*
|
|
8
|
-
* npx ecc consult "<topic>" --target claude
|
|
9
|
-
* npx ecc agent run <agent-name> --target <path> --json
|
|
10
|
-
*
|
|
11
|
-
* The peaks-loop `peaks agent run <name> --target <path> --json`
|
|
12
|
-
* CLI shells out to the second form. When ECC is missing OR
|
|
13
|
-
* `agentShieldEnabled: false`, the audit completes with a
|
|
14
|
-
* peaks-loop-only envelope.
|
|
15
|
-
*
|
|
16
|
-
* Mirrors `static-service.ts` (the ECC AgentShield wrapper from
|
|
17
|
-
* L2.3 P2-a): same `subprocessRunner` injection point, same
|
|
18
|
-
* 5-state reason enum, same soft-fail policy.
|
|
19
|
-
*/
|
|
20
|
-
import { spawnSync } from 'node:child_process';
|
|
21
|
-
/**
|
|
22
|
-
* The 12 most-used ECC agents per the upstream
|
|
23
|
-
* everything-claude-code catalog. The full 64-agent list is
|
|
24
|
-
* available at runtime via `npx ecc agent list`; this static
|
|
25
|
-
* subset covers the common L3-doctor dispatch paths.
|
|
26
|
-
*/
|
|
27
|
-
export const CANONICAL_ECC_AGENTS = [
|
|
28
|
-
{ name: 'security-reviewer', description: 'Audit trust boundary + OWASP top-10' },
|
|
29
|
-
{ name: 'code-reviewer', description: 'General-purpose code review' },
|
|
30
|
-
{ name: 'typescript-reviewer', description: 'TypeScript-specific review' },
|
|
31
|
-
{ name: 'python-reviewer', description: 'Python-specific review' },
|
|
32
|
-
{ name: 'golang-reviewer', description: 'Go-specific review' },
|
|
33
|
-
{ name: 'rust-reviewer', description: 'Rust-specific review' },
|
|
34
|
-
{ name: 'java-reviewer', description: 'Java-specific review' },
|
|
35
|
-
{ name: 'cpp-reviewer', description: 'C/C++-specific review' },
|
|
36
|
-
{ name: 'backend-patterns', description: 'Backend service patterns' },
|
|
37
|
-
{ name: 'frontend-patterns', description: 'Frontend patterns' },
|
|
38
|
-
{ name: 'database-migrations', description: 'DB migration safety' },
|
|
39
|
-
{ name: 'deployment-patterns', description: 'Deployment / CI-CD patterns' },
|
|
40
|
-
];
|
|
41
|
-
const ECC_DETECT_TIMEOUT_MS = 5000;
|
|
42
|
-
const ECC_RUN_TIMEOUT_MS = 60000;
|
|
43
|
-
const defaultSubprocessRunner = {
|
|
44
|
-
run(command, args, timeoutMs) {
|
|
45
|
-
try {
|
|
46
|
-
const r = spawnSync(command, args, {
|
|
47
|
-
timeout: timeoutMs,
|
|
48
|
-
encoding: 'utf8',
|
|
49
|
-
stdio: ['ignore', 'pipe', 'pipe'],
|
|
50
|
-
maxBuffer: 16 * 1024 * 1024,
|
|
51
|
-
});
|
|
52
|
-
return {
|
|
53
|
-
status: r.status,
|
|
54
|
-
stdout: r.stdout ?? '',
|
|
55
|
-
stderr: r.stderr ?? '',
|
|
56
|
-
};
|
|
57
|
-
}
|
|
58
|
-
catch (err) {
|
|
59
|
-
return {
|
|
60
|
-
status: null,
|
|
61
|
-
stdout: '',
|
|
62
|
-
stderr: '',
|
|
63
|
-
error: err,
|
|
64
|
-
};
|
|
65
|
-
}
|
|
66
|
-
},
|
|
67
|
-
};
|
|
68
|
-
function isEccInstalled(runner) {
|
|
69
|
-
const result = runner.run('npx', ['ecc', '--version'], ECC_DETECT_TIMEOUT_MS);
|
|
70
|
-
if (result.error)
|
|
71
|
-
return false;
|
|
72
|
-
return result.status === 0;
|
|
73
|
-
}
|
|
74
|
-
/**
|
|
75
|
-
* Validate the agent name against the canonical ECC catalog.
|
|
76
|
-
* Returns `null` if the agent is known; an error message otherwise.
|
|
77
|
-
*/
|
|
78
|
-
export function validateEccAgent(agent) {
|
|
79
|
-
if (typeof agent !== 'string' || agent.length === 0) {
|
|
80
|
-
return 'peaks agent run: agent name must be a non-empty string';
|
|
81
|
-
}
|
|
82
|
-
if (!/^[a-z][a-z0-9-]*$/.test(agent)) {
|
|
83
|
-
return `peaks agent run: agent name "${agent}" is invalid (must match [a-z][a-z0-9-]*)`;
|
|
84
|
-
}
|
|
85
|
-
return null;
|
|
86
|
-
}
|
|
87
|
-
export function runEccAgent(input, runner = defaultSubprocessRunner) {
|
|
88
|
-
const enableAgent = input.enableAgent === true;
|
|
89
|
-
const warnings = [];
|
|
90
|
-
let result = null;
|
|
91
|
-
// Resolve the effective "should spawn" decision.
|
|
92
|
-
// flagEnabled (CLI override) > preference (always-on for now; L3+ future) > false
|
|
93
|
-
const shouldSpawn = enableAgent;
|
|
94
|
-
const installed = isEccInstalled(runner);
|
|
95
|
-
let reason;
|
|
96
|
-
let spawned;
|
|
97
|
-
if (!shouldSpawn) {
|
|
98
|
-
reason = 'flag-disabled';
|
|
99
|
-
spawned = false;
|
|
100
|
-
}
|
|
101
|
-
else if (!installed) {
|
|
102
|
-
reason = 'flag-enabled-but-ecc-missing';
|
|
103
|
-
spawned = false;
|
|
104
|
-
warnings.push('`npx ecc --version` failed. Run `npx ecc --help` to install ECC, ' +
|
|
105
|
-
'then re-run `peaks agent run`. The peaks-loop native diagnostic ' +
|
|
106
|
-
'still runs via `peaks doctor scan`.');
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
reason = 'enabled-and-installed';
|
|
110
|
-
spawned = true;
|
|
111
|
-
const start = Date.now();
|
|
112
|
-
const subResult = runner.run('npx', ['ecc', 'agent', 'run', input.agent, '--target', input.projectRoot, '--json'], ECC_RUN_TIMEOUT_MS);
|
|
113
|
-
let parsed;
|
|
114
|
-
let error;
|
|
115
|
-
if (subResult.error) {
|
|
116
|
-
error = subResult.error.message;
|
|
117
|
-
}
|
|
118
|
-
else if (subResult.status !== 0) {
|
|
119
|
-
error = `ecc agent run exited with status ${subResult.status}: ${subResult.stderr}`;
|
|
120
|
-
}
|
|
121
|
-
else {
|
|
122
|
-
try {
|
|
123
|
-
parsed = JSON.parse(subResult.stdout);
|
|
124
|
-
}
|
|
125
|
-
catch {
|
|
126
|
-
// Non-JSON output is allowed; peaks-loop surfaces the raw
|
|
127
|
-
// stdout for the human reader and treats the run as
|
|
128
|
-
// ok=true (the subprocess exited 0).
|
|
129
|
-
parsed = undefined;
|
|
130
|
-
}
|
|
131
|
-
}
|
|
132
|
-
result = {
|
|
133
|
-
agent: input.agent,
|
|
134
|
-
ok: error === undefined,
|
|
135
|
-
stdout: subResult.stdout,
|
|
136
|
-
stderr: subResult.stderr,
|
|
137
|
-
durationMs: Date.now() - start,
|
|
138
|
-
...(parsed !== undefined ? { parsed } : {}),
|
|
139
|
-
...(error !== undefined ? { error } : {}),
|
|
140
|
-
};
|
|
141
|
-
}
|
|
142
|
-
return { agent: input.agent, spawned, reason, result, warnings };
|
|
143
|
-
}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Provider configs (MiniMax and other custom providers) live in
|
|
3
|
-
* `~/.peaks/providers.json` — NOT in the slim `~/.peaks/config.json`.
|
|
4
|
-
* The slim config only carries `version` + `ocr.llm.*`; provider
|
|
5
|
-
* model selection, base URLs, and API keys live here in a dedicated
|
|
6
|
-
* sidecar so the user has one discoverable location for runtime
|
|
7
|
-
* model-routing settings.
|
|
8
|
-
*
|
|
9
|
-
* This module is the only owner of the providers.json file. Reads
|
|
10
|
-
* from `~/.peaks/config.json.providers` are tolerated as a one-time
|
|
11
|
-
* back-compat fallback so an unmigrated 1.x-style config still
|
|
12
|
-
* returns the user's existing MiniMax configuration; the next
|
|
13
|
-
* `setMiniMaxProviderConfig` call promotes the value into
|
|
14
|
-
* `~/.peaks/providers.json` and the legacy `~/.peaks/config.json`
|
|
15
|
-
* field is stripped by `loadGlobalConfig` governance.
|
|
16
|
-
*/
|
|
17
|
-
export declare const MINIMAX_API_HOST = "api.minimaxi.com";
|
|
18
|
-
export type MiniMaxProviderConfig = {
|
|
19
|
-
model?: string;
|
|
20
|
-
baseUrl?: string;
|
|
21
|
-
apiKey?: string;
|
|
22
|
-
};
|
|
23
|
-
export type ProviderModelConfig = MiniMaxProviderConfig;
|
|
24
|
-
export type ModelProviderId = 'minimax' | string;
|
|
25
|
-
export type ExecutionModelId = string;
|
|
26
|
-
export type ModelPreference = 'haiku' | 'sonnet' | 'opus' | 'minimax';
|
|
27
|
-
export type ModelProviderConfig = {
|
|
28
|
-
minimax?: MiniMaxProviderConfig;
|
|
29
|
-
[providerId: string]: ProviderModelConfig | undefined;
|
|
30
|
-
};
|
|
31
|
-
export declare function isValidProviderBaseUrl(value: string): boolean;
|
|
32
|
-
export declare function isValidMiniMaxBaseUrl(value: string): boolean;
|
|
33
|
-
export declare function validateMiniMaxBaseUrl(value: unknown): void;
|
|
34
|
-
export declare function validateProviderBaseUrl(value: unknown): void;
|
|
35
|
-
export declare function validateModelProviderConfig(providers: ModelProviderConfig): void;
|
|
36
|
-
export type MiniMaxProviderStatus = {
|
|
37
|
-
provider: 'minimax';
|
|
38
|
-
configured: boolean;
|
|
39
|
-
baseUrlConfigured: boolean;
|
|
40
|
-
apiKeyConfigured: boolean;
|
|
41
|
-
storage: 'sidecar-v1';
|
|
42
|
-
nextActions: string[];
|
|
43
|
-
};
|
|
44
|
-
export declare function getMiniMaxProviderConfig(): MiniMaxProviderConfig;
|
|
45
|
-
export declare function getMiniMaxProviderStatus(): MiniMaxProviderStatus;
|
|
46
|
-
export declare function setMiniMaxProviderConfig(input: MiniMaxProviderConfig): MiniMaxProviderStatus;
|
|
47
|
-
export declare function getAllProviders(): ModelProviderConfig;
|
|
48
|
-
export declare function setProviderConfig(providerId: string, input: ProviderModelConfig): ModelProviderConfig;
|
|
@@ -1,143 +0,0 @@
|
|
|
1
|
-
import { SIDECAR_SCHEMA_VERSION, ensureSidecarVersion, providersConfigPath, readSidecarJson, writeSidecarJson } from './sidecar-store.js';
|
|
2
|
-
/**
|
|
3
|
-
* Provider configs (MiniMax and other custom providers) live in
|
|
4
|
-
* `~/.peaks/providers.json` — NOT in the slim `~/.peaks/config.json`.
|
|
5
|
-
* The slim config only carries `version` + `ocr.llm.*`; provider
|
|
6
|
-
* model selection, base URLs, and API keys live here in a dedicated
|
|
7
|
-
* sidecar so the user has one discoverable location for runtime
|
|
8
|
-
* model-routing settings.
|
|
9
|
-
*
|
|
10
|
-
* This module is the only owner of the providers.json file. Reads
|
|
11
|
-
* from `~/.peaks/config.json.providers` are tolerated as a one-time
|
|
12
|
-
* back-compat fallback so an unmigrated 1.x-style config still
|
|
13
|
-
* returns the user's existing MiniMax configuration; the next
|
|
14
|
-
* `setMiniMaxProviderConfig` call promotes the value into
|
|
15
|
-
* `~/.peaks/providers.json` and the legacy `~/.peaks/config.json`
|
|
16
|
-
* field is stripped by `loadGlobalConfig` governance.
|
|
17
|
-
*/
|
|
18
|
-
export const MINIMAX_API_HOST = 'api.minimaxi.com';
|
|
19
|
-
function loadProvidersSidecar() {
|
|
20
|
-
const fallback = { version: SIDECAR_SCHEMA_VERSION, providers: {} };
|
|
21
|
-
const raw = readSidecarJson(providersConfigPath(), fallback);
|
|
22
|
-
const version = ensureSidecarVersion(raw).version;
|
|
23
|
-
const providers = sanitizeProviders(raw.providers);
|
|
24
|
-
return { version, providers };
|
|
25
|
-
}
|
|
26
|
-
function saveProvidersSidecar(providers) {
|
|
27
|
-
writeSidecarJson(providersConfigPath(), {
|
|
28
|
-
version: SIDECAR_SCHEMA_VERSION,
|
|
29
|
-
providers
|
|
30
|
-
});
|
|
31
|
-
}
|
|
32
|
-
function sanitizeProviders(value) {
|
|
33
|
-
if (value === null || typeof value !== 'object' || Array.isArray(value))
|
|
34
|
-
return {};
|
|
35
|
-
const out = {};
|
|
36
|
-
for (const [id, cfg] of Object.entries(value)) {
|
|
37
|
-
if (cfg === null || typeof cfg !== 'object' || Array.isArray(cfg))
|
|
38
|
-
continue;
|
|
39
|
-
const sanitized = sanitizeMiniMaxLike(cfg);
|
|
40
|
-
if (Object.keys(sanitized).length > 0) {
|
|
41
|
-
out[id] = sanitized;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
return out;
|
|
45
|
-
}
|
|
46
|
-
function sanitizeMiniMaxLike(value) {
|
|
47
|
-
if (value === null || typeof value !== 'object' || Array.isArray(value))
|
|
48
|
-
return {};
|
|
49
|
-
const v = value;
|
|
50
|
-
const out = {};
|
|
51
|
-
if (typeof v.model === 'string' && v.model.trim().length > 0)
|
|
52
|
-
out.model = v.model.trim();
|
|
53
|
-
if (typeof v.baseUrl === 'string' && v.baseUrl.length > 0)
|
|
54
|
-
out.baseUrl = v.baseUrl;
|
|
55
|
-
if (typeof v.apiKey === 'string' && v.apiKey.length > 0)
|
|
56
|
-
out.apiKey = v.apiKey;
|
|
57
|
-
return out;
|
|
58
|
-
}
|
|
59
|
-
export function isValidProviderBaseUrl(value) {
|
|
60
|
-
try {
|
|
61
|
-
const url = new URL(value);
|
|
62
|
-
return url.protocol === 'https:' && url.username.length === 0 && url.password.length === 0 && url.search.length === 0 && url.hash.length === 0;
|
|
63
|
-
}
|
|
64
|
-
catch {
|
|
65
|
-
return false;
|
|
66
|
-
}
|
|
67
|
-
}
|
|
68
|
-
export function isValidMiniMaxBaseUrl(value) {
|
|
69
|
-
try {
|
|
70
|
-
const url = new URL(value);
|
|
71
|
-
return url.protocol === 'https:' && url.hostname === MINIMAX_API_HOST && url.username.length === 0 && url.password.length === 0 && url.search.length === 0 && url.hash.length === 0;
|
|
72
|
-
}
|
|
73
|
-
catch {
|
|
74
|
-
return false;
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
export function validateMiniMaxBaseUrl(value) {
|
|
78
|
-
if (value !== undefined && (typeof value !== 'string' || !isValidMiniMaxBaseUrl(value))) {
|
|
79
|
-
throw new Error('MiniMax base URL must be the MiniMax HTTPS endpoint without embedded credentials');
|
|
80
|
-
}
|
|
81
|
-
}
|
|
82
|
-
export function validateProviderBaseUrl(value) {
|
|
83
|
-
if (value !== undefined && (typeof value !== 'string' || !isValidProviderBaseUrl(value))) {
|
|
84
|
-
throw new Error('Provider base URL must be HTTPS without embedded credentials, query, or fragment');
|
|
85
|
-
}
|
|
86
|
-
}
|
|
87
|
-
export function validateModelProviderConfig(providers) {
|
|
88
|
-
validateMiniMaxBaseUrl(providers.minimax?.baseUrl);
|
|
89
|
-
for (const [providerId, provider] of Object.entries(providers)) {
|
|
90
|
-
if (providerId !== 'minimax') {
|
|
91
|
-
validateProviderBaseUrl(provider?.baseUrl);
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}
|
|
95
|
-
function createMiniMaxProviderStatus(config) {
|
|
96
|
-
const baseUrl = config.baseUrl?.trim();
|
|
97
|
-
const apiKey = config.apiKey?.trim();
|
|
98
|
-
const baseUrlConfigured = typeof baseUrl === 'string' && baseUrl.length > 0 && isValidMiniMaxBaseUrl(baseUrl);
|
|
99
|
-
const apiKeyConfigured = typeof apiKey === 'string' && apiKey.length > 0;
|
|
100
|
-
return {
|
|
101
|
-
provider: 'minimax',
|
|
102
|
-
configured: baseUrlConfigured && apiKeyConfigured,
|
|
103
|
-
baseUrlConfigured,
|
|
104
|
-
apiKeyConfigured,
|
|
105
|
-
storage: 'sidecar-v1',
|
|
106
|
-
nextActions: baseUrlConfigured && apiKeyConfigured ? [] : ['Export MINIMAX_API_KEY and rerun peaks config provider minimax set --base-url <url>']
|
|
107
|
-
};
|
|
108
|
-
}
|
|
109
|
-
export function getMiniMaxProviderConfig() {
|
|
110
|
-
return loadProvidersSidecar().providers.minimax ?? {};
|
|
111
|
-
}
|
|
112
|
-
export function getMiniMaxProviderStatus() {
|
|
113
|
-
return createMiniMaxProviderStatus(getMiniMaxProviderConfig());
|
|
114
|
-
}
|
|
115
|
-
export function setMiniMaxProviderConfig(input) {
|
|
116
|
-
validateMiniMaxBaseUrl(input.baseUrl);
|
|
117
|
-
const current = loadProvidersSidecar().providers;
|
|
118
|
-
const next = {
|
|
119
|
-
...current,
|
|
120
|
-
minimax: {
|
|
121
|
-
...current.minimax,
|
|
122
|
-
...input
|
|
123
|
-
}
|
|
124
|
-
};
|
|
125
|
-
validateMiniMaxBaseUrl(next.minimax?.baseUrl);
|
|
126
|
-
saveProvidersSidecar(next);
|
|
127
|
-
return createMiniMaxProviderStatus(next.minimax ?? {});
|
|
128
|
-
}
|
|
129
|
-
export function getAllProviders() {
|
|
130
|
-
return loadProvidersSidecar().providers;
|
|
131
|
-
}
|
|
132
|
-
export function setProviderConfig(providerId, input) {
|
|
133
|
-
if (providerId === 'minimax') {
|
|
134
|
-
throw new Error('Use setMiniMaxProviderConfig for the minimax provider');
|
|
135
|
-
}
|
|
136
|
-
validateProviderBaseUrl(input.baseUrl);
|
|
137
|
-
const current = loadProvidersSidecar().providers;
|
|
138
|
-
const sanitized = sanitizeMiniMaxLike(input);
|
|
139
|
-
const next = { ...current, [providerId]: sanitized };
|
|
140
|
-
validateProviderBaseUrl(sanitized.baseUrl);
|
|
141
|
-
saveProvidersSidecar(next);
|
|
142
|
-
return next;
|
|
143
|
-
}
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/** Build the canonical artifact path for a given session/rid/role/idx/ext. */
|
|
2
|
-
export declare function artifactPath(projectRoot: string, sid: string, rid: string, role: string, idx: number, ext?: string): string;
|
|
3
|
-
/** Build the canonical shared channel path. */
|
|
4
|
-
export declare function sharedChannelPath(projectRoot: string, sid: string, rid: string, batchId: string): string;
|
|
5
|
-
/**
|
|
6
|
-
* Assert that `artifactPath` lives under
|
|
7
|
-
* `projectRoot/.peaks/_sub_agents/<sid>/artifacts/`. Rejects
|
|
8
|
-
* symlink/junction escapes and `..` segments.
|
|
9
|
-
*
|
|
10
|
-
* Throws an Error with `.code = 'INVALID_ARTIFACT_PATH'` on rejection.
|
|
11
|
-
*/
|
|
12
|
-
export declare function assertSafeArtifactPath(artifactPathInput: string, projectRoot: string): string;
|
|
13
|
-
/**
|
|
14
|
-
* Assert that `channelPath` lives under
|
|
15
|
-
* `projectRoot/.peaks/_sub_agents/<sid>/shared/`. Same R-2 logic as
|
|
16
|
-
* `assertSafeArtifactPath` but with a different canonical subdir.
|
|
17
|
-
*
|
|
18
|
-
* Throws an Error with `.code = 'INVALID_SHARED_CHANNEL_PATH'` on rejection.
|
|
19
|
-
*/
|
|
20
|
-
export declare function assertSafeSharedChannelPath(channelPathInput: string, projectRoot: string): string;
|
|
21
|
-
/**
|
|
22
|
-
* Soft-warn check on the artifact file name pattern. Returns null if
|
|
23
|
-
* the name matches `<rid>-<role>-<idx>.<ext>`, otherwise returns a
|
|
24
|
-
* warning string. Does NOT reject (the path is still in the canonical
|
|
25
|
-
* dir; the warning is for human/audit readability per G7.4.c).
|
|
26
|
-
*/
|
|
27
|
-
export declare function checkArtifactNameConvention(artifactPathInput: string): string | null;
|