peaks-loop 4.0.54 → 4.1.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 +61 -0
- package/README-en.md +16 -1
- package/README.md +15 -1
- package/config/eslint/.peaks-rules.cjs +158 -13
- package/config/eslint/tsconfig.lint.json +47 -0
- package/dist/cli/cli-envelope.d.ts +114 -0
- package/dist/cli/cli-envelope.js +85 -0
- package/dist/cli/cli-helpers.d.ts +1 -1
- package/dist/cli/cli-helpers.js +8 -4
- package/dist/cli/commands/_cli-error-envelope.js +1 -1
- package/dist/cli/commands/_register.js +86 -39
- package/dist/cli/commands/_super.js +40 -7
- package/dist/cli/commands/adapter-commands-s2a.js +8 -7
- package/dist/cli/commands/adapter-commands.d.ts +2 -2
- package/dist/cli/commands/adapter-commands.js +7 -8
- package/dist/cli/commands/api-diff-commands.js +5 -4
- package/dist/cli/commands/asset-commands.d.ts +2 -2
- package/dist/cli/commands/asset-commands.js +135 -132
- package/dist/cli/commands/audit-commands.d.ts +1 -1
- package/dist/cli/commands/audit-commands.js +75 -32
- package/dist/cli/commands/autonomous-swarm-commands.d.ts +1 -1
- package/dist/cli/commands/autonomous-swarm-commands.js +14 -8
- package/dist/cli/commands/baseline-commands.js +34 -9
- package/dist/cli/commands/bee-commands.d.ts +1 -1
- package/dist/cli/commands/bee-commands.js +18 -21
- package/dist/cli/commands/best-practice-scan-command.js +6 -34
- package/dist/cli/commands/best-practice-scan-helpers.d.ts +12 -0
- package/dist/cli/commands/best-practice-scan-helpers.js +37 -0
- package/dist/cli/commands/capability-commands.d.ts +1 -1
- package/dist/cli/commands/capability-commands.js +14 -4
- package/dist/cli/commands/capability-worker-config-sc-commands.d.ts +1 -1
- package/dist/cli/commands/changeset-commands.js +21 -18
- package/dist/cli/commands/code-gate-command.js +9 -2
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.d.ts +15 -0
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.js +70 -0
- package/dist/cli/commands/code-job-shape-commands.js +21 -45
- package/dist/cli/commands/code-mode-gate-commands.d.ts +15 -1
- package/dist/cli/commands/code-mode-gate-commands.js +19 -199
- package/dist/cli/commands/code-mode-gate-plan-command.d.ts +14 -0
- package/dist/cli/commands/code-mode-gate-plan-command.js +23 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.d.ts +24 -0
- package/dist/cli/commands/code-mode-gate-should-pause-command.js +137 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.d.ts +59 -0
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.js +144 -0
- package/dist/cli/commands/code-orchestrator-can-do.js +4 -4
- package/dist/cli/commands/code-review-commands.js +18 -3
- package/dist/cli/commands/code-run-command.js +44 -7
- package/dist/cli/commands/code-runtime-commands.d.ts +17 -0
- package/dist/cli/commands/code-runtime-commands.js +105 -73
- package/dist/cli/commands/codegraph-commands.js +11 -6
- package/dist/cli/commands/codegraph-status-command.js +6 -2
- package/dist/cli/commands/comments-commands.d.ts +14 -0
- package/dist/cli/commands/comments-commands.js +96 -0
- package/dist/cli/commands/compact-command.js +52 -26
- package/dist/cli/commands/complexity-commands.js +6 -7
- package/dist/cli/commands/config-commands.d.ts +1 -1
- package/dist/cli/commands/config-commands.js +33 -9
- package/dist/cli/commands/container-commands.js +39 -15
- package/dist/cli/commands/context-commands.d.ts +1 -1
- package/dist/cli/commands/context-commands.js +40 -13
- package/dist/cli/commands/core/artifacts-command.js +11 -3
- package/dist/cli/commands/core/binding-commands.js +9 -6
- package/dist/cli/commands/core/doctor-command.js +7 -4
- package/dist/cli/commands/core/memory-command.js +57 -21
- package/dist/cli/commands/core/proxy-command.js +3 -1
- package/dist/cli/commands/core/session-command.js +16 -8
- package/dist/cli/commands/core/skill-command.js +32 -17
- package/dist/cli/commands/core/standards-command.js +56 -14
- package/dist/cli/commands/cron-commands-actions.d.ts +43 -0
- package/dist/cli/commands/cron-commands-actions.js +128 -0
- package/dist/cli/commands/cron-commands-schedule.d.ts +86 -0
- package/dist/cli/commands/cron-commands-schedule.js +151 -0
- package/dist/cli/commands/cron-commands.d.ts +35 -32
- package/dist/cli/commands/cron-commands.js +167 -211
- package/dist/cli/commands/cron-scheduler-commands.js +40 -20
- package/dist/cli/commands/cron-scheduler-persist.d.ts +110 -0
- package/dist/cli/commands/cron-scheduler-persist.js +171 -0
- package/dist/cli/commands/dashboard-long-run.js +45 -14
- package/dist/cli/commands/dashboard-summary.js +15 -5
- package/dist/cli/commands/dispatch-commands.js +65 -32
- package/dist/cli/commands/dispatch-from-dag.js +9 -10
- package/dist/cli/commands/doc-commands.js +8 -9
- package/dist/cli/commands/doctor/invoke-from-code.js +1 -1
- package/dist/cli/commands/e2e-verify-env.d.ts +19 -0
- package/dist/cli/commands/e2e-verify-env.js +19 -0
- package/dist/cli/commands/e2e-verify.d.ts +3 -14
- package/dist/cli/commands/e2e-verify.js +49 -29
- package/dist/cli/commands/ecc-commands.d.ts +18 -23
- package/dist/cli/commands/ecc-commands.js +39 -36
- package/dist/cli/commands/evidence-commands.js +10 -6
- package/dist/cli/commands/evolution-commands.d.ts +2 -2
- package/dist/cli/commands/evolution-commands.js +109 -115
- package/dist/cli/commands/feedback-commands-helpers.d.ts +22 -0
- package/dist/cli/commands/feedback-commands-helpers.js +33 -0
- package/dist/cli/commands/feedback-commands.js +15 -38
- package/dist/cli/commands/final-review-commands.d.ts +1 -1
- package/dist/cli/commands/final-review-commands.js +24 -22
- package/dist/cli/commands/fixture-commands.d.ts +1 -1
- package/dist/cli/commands/fixture-commands.js +17 -6
- package/dist/cli/commands/fork-commands-sync-verify.d.ts +12 -0
- package/dist/cli/commands/fork-commands-sync-verify.js +72 -0
- package/dist/cli/commands/fork-commands.js +19 -51
- package/dist/cli/commands/fresh-context-commands.js +3 -1
- package/dist/cli/commands/gate-commands-enforce.d.ts +82 -0
- package/dist/cli/commands/gate-commands-enforce.js +210 -0
- package/dist/cli/commands/gate-commands.d.ts +1 -1
- package/dist/cli/commands/gate-commands.js +85 -205
- package/dist/cli/commands/governance-classify-contract-commands.d.ts +1 -1
- package/dist/cli/commands/governance-classify-contract-commands.js +28 -17
- package/dist/cli/commands/heartbeat-commands-action.d.ts +7 -0
- package/dist/cli/commands/heartbeat-commands-action.js +192 -0
- package/dist/cli/commands/heartbeat-commands-validation.d.ts +57 -0
- package/dist/cli/commands/heartbeat-commands-validation.js +120 -0
- package/dist/cli/commands/heartbeat-commands.d.ts +27 -6
- package/dist/cli/commands/heartbeat-commands.js +19 -198
- package/dist/cli/commands/hook-handle.d.ts +1 -1
- package/dist/cli/commands/hook-handle.js +46 -13
- package/dist/cli/commands/hooks-commands.d.ts +1 -1
- package/dist/cli/commands/hooks-commands.js +18 -6
- package/dist/cli/commands/ide-commands.d.ts +1 -1
- package/dist/cli/commands/ide-commands.js +5 -3
- package/dist/cli/commands/impact-commands.js +8 -2
- package/dist/cli/commands/job-add-slice-command.d.ts +43 -0
- package/dist/cli/commands/job-add-slice-command.js +151 -0
- package/dist/cli/commands/job-commands.d.ts +64 -0
- package/dist/cli/commands/job-commands.js +134 -63
- package/dist/cli/commands/lease-metrics-commands-support.d.ts +73 -0
- package/dist/cli/commands/lease-metrics-commands-support.js +67 -0
- package/dist/cli/commands/lease-metrics-commands.d.ts +3 -44
- package/dist/cli/commands/lease-metrics-commands.js +21 -61
- package/dist/cli/commands/lease-stats-commands.d.ts +1 -1
- package/dist/cli/commands/lease-stats-commands.js +9 -6
- package/dist/cli/commands/lint-commands.d.ts +9 -3
- package/dist/cli/commands/lint-commands.js +15 -8
- package/dist/cli/commands/log-commands.d.ts +1 -1
- package/dist/cli/commands/log-commands.js +8 -6
- package/dist/cli/commands/loop-commands.d.ts +1 -1
- package/dist/cli/commands/loop-commands.js +50 -50
- package/dist/cli/commands/loop-eval-commands.d.ts +1 -1
- package/dist/cli/commands/loop-eval-commands.js +101 -30
- package/dist/cli/commands/memory-commands.js +21 -13
- package/dist/cli/commands/migrate-1-4-1-command.js +1 -1
- package/dist/cli/commands/migrate-v2-10-to-v2-11-command.js +2 -2
- package/dist/cli/commands/mut-commands-helpers.d.ts +30 -0
- package/dist/cli/commands/mut-commands-helpers.js +43 -0
- package/dist/cli/commands/mut-commands.js +16 -58
- package/dist/cli/commands/observability-commands-queries.d.ts +37 -0
- package/dist/cli/commands/observability-commands-queries.js +113 -0
- package/dist/cli/commands/observability-commands.d.ts +1 -1
- package/dist/cli/commands/observability-commands.js +7 -92
- package/dist/cli/commands/openspec-commands.d.ts +1 -1
- package/dist/cli/commands/openspec-commands.js +20 -8
- package/dist/cli/commands/outer-cache-commands.js +18 -7
- package/dist/cli/commands/perf-audit-commands.d.ts +1 -1
- package/dist/cli/commands/perf-audit-commands.js +12 -7
- package/dist/cli/commands/perf-commands.d.ts +1 -1
- package/dist/cli/commands/perf-commands.js +5 -5
- package/dist/cli/commands/playwright-commands.d.ts +1 -1
- package/dist/cli/commands/playwright-commands.js +20 -8
- package/dist/cli/commands/polyrepo-commands.js +21 -19
- package/dist/cli/commands/prd-blocks-commands.js +1 -3
- package/dist/cli/commands/prd-commands.d.ts +1 -1
- package/dist/cli/commands/prd-commands.js +16 -6
- package/dist/cli/commands/preferences-commands.js +13 -12
- package/dist/cli/commands/primer-command.js +5 -5
- package/dist/cli/commands/project-commands.d.ts +1 -1
- package/dist/cli/commands/project-commands.js +33 -9
- package/dist/cli/commands/qa-business-review-commands.js +16 -12
- package/dist/cli/commands/qa-commands.d.ts +1 -1
- package/dist/cli/commands/qa-commands.js +3 -5
- package/dist/cli/commands/release-commands.d.ts +3 -1
- package/dist/cli/commands/release-commands.js +33 -22
- package/dist/cli/commands/request-commands.js +47 -30
- package/dist/cli/commands/request-format-helpers.js +1 -1
- package/dist/cli/commands/retrospective-commands.d.ts +18 -11
- package/dist/cli/commands/retrospective-commands.js +24 -173
- package/dist/cli/commands/retrospective-index-command.d.ts +26 -0
- package/dist/cli/commands/retrospective-index-command.js +99 -0
- package/dist/cli/commands/retrospective-project-root.d.ts +9 -0
- package/dist/cli/commands/retrospective-project-root.js +15 -0
- package/dist/cli/commands/retrospective-search-command.d.ts +27 -0
- package/dist/cli/commands/retrospective-search-command.js +97 -0
- package/dist/cli/commands/retrospective-show-command.d.ts +23 -0
- package/dist/cli/commands/retrospective-show-command.js +80 -0
- package/dist/cli/commands/reviewer-commands.d.ts +1 -1
- package/dist/cli/commands/role-commands.js +14 -9
- package/dist/cli/commands/runtime-commands.js +14 -7
- package/dist/cli/commands/sc-commands.d.ts +1 -1
- package/dist/cli/commands/sc-commands.js +39 -6
- package/dist/cli/commands/scan-commands.js +36 -13
- package/dist/cli/commands/security-audit-commands.d.ts +1 -1
- package/dist/cli/commands/security-audit-commands.js +12 -7
- package/dist/cli/commands/sediment-commands.d.ts +2 -2
- package/dist/cli/commands/sediment-commands.js +146 -139
- package/dist/cli/commands/session-24h-mode.js +15 -2
- package/dist/cli/commands/session-checkpoint-command.js +1 -1
- package/dist/cli/commands/session-migrate-skill-name.js +1 -1
- package/dist/cli/commands/shadcn-commands.d.ts +1 -1
- package/dist/cli/commands/shadcn-commands.js +3 -1
- package/dist/cli/commands/share-commands.js +38 -39
- package/dist/cli/commands/skill-conformance-commands.d.ts +1 -1
- package/dist/cli/commands/skill-conformance-commands.js +1 -1
- package/dist/cli/commands/skill-loop-engineering-readiness-commands.js +16 -17
- package/dist/cli/commands/skill-visibility.js +2 -2
- package/dist/cli/commands/slice-commands.d.ts +1 -1
- package/dist/cli/commands/slice-commands.js +36 -12
- package/dist/cli/commands/slice-integrate-commands.js +6 -7
- package/dist/cli/commands/slice-review-commands-helpers.d.ts +26 -0
- package/dist/cli/commands/slice-review-commands-helpers.js +26 -0
- package/dist/cli/commands/slice-review-commands.js +16 -24
- package/dist/cli/commands/smoke-commands-add-path.d.ts +14 -0
- package/dist/cli/commands/smoke-commands-add-path.js +39 -0
- package/dist/cli/commands/smoke-commands-define.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-define.js +97 -0
- package/dist/cli/commands/smoke-commands-run.d.ts +18 -0
- package/dist/cli/commands/smoke-commands-run.js +119 -0
- package/dist/cli/commands/smoke-commands.d.ts +10 -1
- package/dist/cli/commands/smoke-commands.js +17 -179
- package/dist/cli/commands/sop-commands.d.ts +1 -1
- package/dist/cli/commands/sop-commands.js +38 -10
- package/dist/cli/commands/statusline-commands.d.ts +1 -1
- package/dist/cli/commands/statusline-commands.js +21 -10
- package/dist/cli/commands/sub-agent/detached.js +3 -3
- package/dist/cli/commands/sub-agent-dispatch-guard.d.ts +1 -1
- package/dist/cli/commands/sub-agent-shared.js +1 -1
- package/dist/cli/commands/sub-agent-shutdown-commands.js +17 -9
- package/dist/cli/commands/swarm-commands.d.ts +1 -1
- package/dist/cli/commands/swarm-commands.js +13 -6
- package/dist/cli/commands/tech-commands-helpers.d.ts +37 -0
- package/dist/cli/commands/tech-commands-helpers.js +24 -0
- package/dist/cli/commands/tech-commands.d.ts +2 -29
- package/dist/cli/commands/tech-commands.js +15 -28
- package/dist/cli/commands/test-commands.js +27 -7
- package/dist/cli/commands/user-touchpoint-commands.js +1 -3
- package/dist/cli/commands/verdict-aggregate-command.d.ts +1 -1
- package/dist/cli/commands/verdict-aggregate-command.js +20 -7
- package/dist/cli/commands/vm-commands.js +48 -19
- package/dist/cli/commands/wave-plan-commands.js +5 -2
- package/dist/cli/commands/web-commands.js +14 -4
- package/dist/cli/commands/web-lifecycle-commands.js +5 -3
- package/dist/cli/commands/workflow-commands.d.ts +1 -1
- package/dist/cli/commands/workflow-commands.js +64 -29
- package/dist/cli/commands/workflow-lifecycle-commands.js +19 -17
- package/dist/cli/commands/workflow-plan-commands-actions.d.ts +20 -0
- package/dist/cli/commands/workflow-plan-commands-actions.js +115 -0
- package/dist/cli/commands/workflow-plan-commands-session.d.ts +17 -0
- package/dist/cli/commands/workflow-plan-commands-session.js +59 -0
- package/dist/cli/commands/workflow-plan-commands.d.ts +10 -21
- package/dist/cli/commands/workflow-plan-commands.js +15 -141
- package/dist/cli/commands/workspace/clean-command.js +4 -1
- package/dist/cli/commands/workspace/helpers.js +2 -1
- package/dist/cli/commands/workspace/init-command.js +80 -20
- package/dist/cli/commands/workspace/reconcile-command.js +3 -1
- package/dist/cli/commands/workspace-commands.d.ts +1 -1
- package/dist/cli/commands/workspace-commands.js +1 -1
- package/dist/cli/commands/worktree-auth-commands.d.ts +1 -1
- package/dist/cli/commands/worktree-auth-commands.js +16 -169
- package/dist/cli/commands/worktree-auth-grant-command.d.ts +14 -0
- package/dist/cli/commands/worktree-auth-grant-command.js +118 -0
- package/dist/cli/commands/worktree-auth-manage-commands.d.ts +17 -0
- package/dist/cli/commands/worktree-auth-manage-commands.js +128 -0
- package/dist/cli/commands/worktree-lease-commands.d.ts +1 -1
- package/dist/cli/commands/worktree-lease-commands.js +65 -37
- package/dist/cli/index.js +6 -2
- package/dist/cli/program.js +8 -10
- package/dist/hooks/pre-tool-use-sub-agent.js +1 -6
- package/dist/reporters/bdd-reporter.js +9 -3
- package/dist/services/24h-mode/auto-engage.d.ts +19 -0
- package/dist/services/24h-mode/auto-engage.js +35 -0
- package/dist/services/24h-mode/decider.js +5 -1
- package/dist/services/24h-mode/store.js +4 -2
- package/dist/services/adapter/adapter-registry.js +20 -8
- package/dist/services/adapter/adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.d.ts +2 -2
- package/dist/services/adapter/auto-adapter.js +1 -1
- package/dist/services/adapter/claude-adapter.d.ts +1 -1
- package/dist/services/adapter/claude-adapter.js +8 -8
- package/dist/services/adapter/codex-adapter.d.ts +2 -2
- package/dist/services/adapter/codex-adapter.js +20 -8
- package/dist/services/adapter/copilot-adapter.d.ts +2 -2
- package/dist/services/adapter/copilot-adapter.js +20 -8
- package/dist/services/artifacts/artifact-prerequisites.js +10 -8
- package/dist/services/artifacts/artifact-service.js +3 -1
- package/dist/services/artifacts/artifact-template-bodies.d.ts +12 -0
- package/dist/services/artifacts/artifact-template-bodies.js +165 -0
- package/dist/services/artifacts/artifact-templates.js +26 -168
- package/dist/services/artifacts/request-artifact-service.js +14 -7
- package/dist/services/artifacts/request-artifact-state-helpers.d.ts +3 -2
- package/dist/services/artifacts/request-artifact-state-helpers.js +3 -5
- package/dist/services/artifacts/workspace-artifact-helpers.d.ts +28 -0
- package/dist/services/artifacts/workspace-artifact-helpers.js +54 -0
- package/dist/services/artifacts/workspace-service.d.ts +3 -22
- package/dist/services/artifacts/workspace-service.js +10 -60
- package/dist/services/audit/artifact-writer.js +21 -21
- package/dist/services/audit/audit-goal-service.js +2 -2
- package/dist/services/audit/backing-detector.js +7 -4
- package/dist/services/audit/classifier.js +3 -3
- package/dist/services/audit/decision-writer.js +13 -9
- package/dist/services/audit/enforcers/active-skill-resolver.js +15 -7
- package/dist/services/audit/enforcers/design-draft-confirm.js +4 -4
- package/dist/services/audit/enforcers/lint-audit-regression.js +10 -5
- package/dist/services/audit/enforcers/lint-bee-runtime-contract.js +16 -8
- package/dist/services/audit/enforcers/lint-catalog-governance.js +8 -4
- package/dist/services/audit/enforcers/lint-output-style.js +4 -2
- package/dist/services/audit/enforcers/lint-peaks-code-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-skill-runtime.js +8 -3
- package/dist/services/audit/enforcers/lint-peaks-ui-sc-txt-runtime.js +20 -20
- package/dist/services/audit/enforcers/lint-prd-artifact-handoff.js +5 -5
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.d.ts +1 -1
- package/dist/services/audit/enforcers/lint-prd-source-snapshot.js +5 -5
- package/dist/services/audit/enforcers/lint-qa-gateguard-and-runtime.js +10 -10
- package/dist/services/audit/enforcers/lint-rd-handoff-coverage.js +10 -8
- package/dist/services/audit/enforcers/lint-reference-shape.js +50 -18
- package/dist/services/audit/enforcers/lint-skill-presence-mandatory.js +5 -5
- package/dist/services/audit/enforcers/lint-style.js +44 -11
- package/dist/services/audit/enforcers/lint-workflow-shape.js +4 -2
- package/dist/services/audit/enforcers/login-gate.js +2 -6
- package/dist/services/audit/enforcers/mock-placement.js +2 -2
- package/dist/services/audit/enforcers/no-root-pollution.js +38 -9
- package/dist/services/audit/enforcers/pre-rd-scan.js +1 -1
- package/dist/services/audit/enforcers/prototype-fidelity.js +1 -1
- package/dist/services/audit/enforcers/resume-detection.js +5 -4
- package/dist/services/audit/prose-ratio-calculator.js +1 -1
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.d.ts +39 -0
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.d.ts +52 -0
- package/dist/services/audit/red-line-catalog-p2-a-lint-style.js +205 -0
- package/dist/services/audit/red-line-catalog-p2-a.js +3 -374
- package/dist/services/audit/red-line-catalog-p2-b.js +26 -26
- package/dist/services/audit/red-line-catalog.js +26 -38
- package/dist/services/audit/red-lines-service.js +64 -49
- package/dist/services/audit/scanners/openspec-scanner.js +2 -2
- package/dist/services/audit/scanners/rules-tree-scanner.js +2 -2
- package/dist/services/audit/scanners/skills-tree-scanner.js +2 -2
- package/dist/services/audit/static-service.js +3 -3
- package/dist/services/audit-independent/index.d.ts +2 -2
- package/dist/services/audit-independent/index.js +2 -2
- package/dist/services/audit-independent/perf-audit-service.js +19 -8
- package/dist/services/audit-independent/security-audit-service.js +31 -16
- package/dist/services/autonomous-swarm/autonomous-swarm-service.js +75 -46
- package/dist/services/best-practice/output-formatter.js +7 -1
- package/dist/services/capability-audit-service/cross-check.js +11 -5
- package/dist/services/capability-audit-service/runner.js +15 -7
- package/dist/services/capability-baseline/store.js +16 -4
- package/dist/services/capability-baseline/types.js +15 -3
- package/dist/services/capability-baseline/validator.js +43 -7
- package/dist/services/capability-guard-runner/contracts/J02.js +36 -6
- package/dist/services/capability-guard-runner/contracts/J03.js +20 -11
- package/dist/services/capability-guard-runner/contracts/J04.js +24 -15
- package/dist/services/capability-guard-runner/contracts/J05.js +26 -10
- package/dist/services/capability-guard-runner/contracts/J07.js +8 -2
- package/dist/services/capability-guard-runner/contracts/J08.js +22 -5
- package/dist/services/capability-guard-runner/contracts/J10.js +6 -2
- package/dist/services/capability-guard-runner/contracts/J11.d.ts +5 -0
- package/dist/services/capability-guard-runner/contracts/J11.js +14 -2
- package/dist/services/capability-guard-runner/contracts/J12.js +12 -3
- package/dist/services/capability-guard-runner/diff.js +1 -5
- package/dist/services/changeset/changeset-check-service.js +1 -3
- package/dist/services/classify/classify-service.js +20 -8
- package/dist/services/classify/classify-types.js +22 -9
- package/dist/services/code/auto-compact-lifecycle.js +62 -39
- package/dist/services/code/auto-compact-modes.js +2 -2
- package/dist/services/code/auto-compact-orchestrator.js +14 -9
- package/dist/services/code/batch-heartbeat-poller.d.ts +10 -0
- package/dist/services/code/batch-heartbeat-poller.js +17 -1
- package/dist/services/code/compact-event-settle-types.d.ts +80 -0
- package/dist/services/code/compact-event-settle-types.js +20 -0
- package/dist/services/code/compact-event-settle.d.ts +3 -68
- package/dist/services/code/compact-event-settle.js +14 -10
- package/dist/services/code/dag-orchestrator.js +32 -26
- package/dist/services/code/job-shape-decision.js +3 -1
- package/dist/services/code/mode-gate-types.d.ts +57 -0
- package/dist/services/code/mode-gate-types.js +66 -0
- package/dist/services/code/mode-gate.d.ts +4 -58
- package/dist/services/code/mode-gate.js +25 -69
- package/dist/services/code/orchestrator-can-do-advisories.d.ts +30 -0
- package/dist/services/code/orchestrator-can-do-advisories.js +81 -0
- package/dist/services/code/orchestrator-can-do-probes.d.ts +30 -0
- package/dist/services/code/orchestrator-can-do-probes.js +77 -0
- package/dist/services/code/orchestrator-can-do.d.ts +11 -22
- package/dist/services/code/orchestrator-can-do.js +37 -137
- package/dist/services/code/post-compact-checkpoint.d.ts +28 -0
- package/dist/services/code/post-compact-checkpoint.js +57 -0
- package/dist/services/code/post-compact-detector.js +16 -48
- package/dist/services/code/step-08-gate.d.ts +4 -3
- package/dist/services/code/step-08-gate.js +21 -9
- package/dist/services/code/user-touchpoint-classifier.js +0 -7
- package/dist/services/code-review/ecc-bridge.d.ts +6 -6
- package/dist/services/code-review/ecc-bridge.js +23 -23
- package/dist/services/codegraph/codegraph-autorefresh.js +56 -39
- package/dist/services/codegraph/codegraph-config-repair-writer.js +4 -1
- package/dist/services/codegraph/codegraph-exclude-integrity.js +4 -1
- package/dist/services/codegraph/codegraph-exclude-repair.js +1 -2
- package/dist/services/codegraph/codegraph-index-integrity.js +1 -1
- package/dist/services/codegraph/codegraph-preflight-service.d.ts +3 -26
- package/dist/services/codegraph/codegraph-preflight-service.js +16 -37
- package/dist/services/codegraph/codegraph-preflight-structure.d.ts +32 -0
- package/dist/services/codegraph/codegraph-preflight-structure.js +33 -0
- package/dist/services/codegraph/codegraph-process-runner.js +12 -1
- package/dist/services/codegraph/codegraph-service.js +9 -1
- package/dist/services/comments/citation-rules.d.ts +154 -0
- package/dist/services/comments/citation-rules.js +241 -0
- package/dist/services/comments/comment-audit.d.ts +57 -0
- package/dist/services/comments/comment-audit.js +100 -0
- package/dist/services/comments/comment-citations.d.ts +60 -0
- package/dist/services/comments/comment-citations.js +186 -0
- package/dist/services/comments/comment-hygiene.d.ts +79 -0
- package/dist/services/comments/comment-hygiene.js +133 -0
- package/dist/services/comments/comment-prune.d.ts +88 -0
- package/dist/services/comments/comment-prune.js +148 -0
- package/dist/services/comments/prune-apply.d.ts +60 -0
- package/dist/services/comments/prune-apply.js +150 -0
- package/dist/services/comments/repo-path-probe.d.ts +43 -0
- package/dist/services/comments/repo-path-probe.js +78 -0
- package/dist/services/compact/request-transition-hook.js +2 -1
- package/dist/services/compact/suggest-service.d.ts +3 -61
- package/dist/services/compact/suggest-service.js +9 -12
- package/dist/services/compact/suggest-types.d.ts +76 -0
- package/dist/services/compact/suggest-types.js +10 -0
- package/dist/services/compact-history/compact-history-service.js +2 -2
- package/dist/services/compact-statusline/compact-lifecycle-store.d.ts +2 -32
- package/dist/services/compact-statusline/compact-lifecycle-store.js +7 -12
- package/dist/services/compact-statusline/compact-lifecycle-types.d.ts +32 -0
- package/dist/services/compact-statusline/compact-lifecycle-types.js +8 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.d.ts +42 -0
- package/dist/services/compact-statusline/compact-statusline-cell-table.js +63 -0
- package/dist/services/compact-statusline/compact-statusline-service.d.ts +4 -21
- package/dist/services/compact-statusline/compact-statusline-service.js +9 -101
- package/dist/services/compact-statusline/compact-statusline-state.d.ts +4 -0
- package/dist/services/compact-statusline/compact-statusline-state.js +50 -0
- package/dist/services/config/config-migration.js +2 -2
- package/dist/services/config/config-restore.js +1 -1
- package/dist/services/config/config-rollback.js +1 -1
- package/dist/services/config/config-safety.js +28 -10
- package/dist/services/config/config-service.js +114 -31
- package/dist/services/config/model-routing.js +5 -2
- package/dist/services/config/proxy-service.js +6 -1
- package/dist/services/config/workspace-state-service.js +17 -5
- package/dist/services/context/auto-compact-dispatcher-input.d.ts +38 -0
- package/dist/services/context/auto-compact-dispatcher-input.js +9 -0
- package/dist/services/context/auto-compact-dispatcher.d.ts +2 -30
- package/dist/services/context/auto-compact-reader-input.d.ts +30 -0
- package/dist/services/context/auto-compact-reader-input.js +8 -0
- package/dist/services/context/auto-compact-reader.d.ts +2 -24
- package/dist/services/context/auto-compact-reader.js +4 -1
- package/dist/services/context/auto-compact-thresholds.d.ts +54 -0
- package/dist/services/context/auto-compact-thresholds.js +19 -0
- package/dist/services/context/auto-compact-types.d.ts +2 -46
- package/dist/services/context/auto-compact-types.js +1 -11
- package/dist/services/context/build-dispatch-system-prompt.js +2 -2
- package/dist/services/context/collector.js +8 -10
- package/dist/services/context/context-audit-hint.js +7 -5
- package/dist/services/context/context-audit-keys.d.ts +15 -0
- package/dist/services/context/context-audit-keys.js +77 -0
- package/dist/services/context/context-audit-limits.d.ts +20 -0
- package/dist/services/context/context-audit-limits.js +31 -0
- package/dist/services/context/context-audit-scan.d.ts +19 -0
- package/dist/services/context/context-audit-scan.js +246 -0
- package/dist/services/context/context-audit-types.d.ts +65 -0
- package/dist/services/context/context-audit-types.js +10 -0
- package/dist/services/context/context-audit.d.ts +13 -59
- package/dist/services/context/context-audit.js +38 -254
- package/dist/services/context/context-builder.js +4 -4
- package/dist/services/context/context-schema.d.ts +1 -1
- package/dist/services/context/context-schema.js +13 -13
- package/dist/services/context/doc-retriever.js +2 -2
- package/dist/services/context/harness-context-witness.js +43 -24
- package/dist/services/context/harness-window-config.js +27 -7
- package/dist/services/context/ide-detect.js +2 -1
- package/dist/services/context/index.d.ts +1 -1
- package/dist/services/context/memory-index-reader.js +3 -9
- package/dist/services/context/memory-preflight-config.js +3 -5
- package/dist/services/context/memory-preflight-service.d.ts +2 -20
- package/dist/services/context/memory-preflight-service.js +37 -68
- package/dist/services/context/memory-preflight-support.d.ts +48 -0
- package/dist/services/context/memory-preflight-support.js +56 -0
- package/dist/services/context/post-compact-reinjection.js +3 -3
- package/dist/services/context/renderer.js +7 -3
- package/dist/services/context/spillover-store.js +3 -1
- package/dist/services/context/summary-view.js +1 -1
- package/dist/services/context/threshold.js +2 -2
- package/dist/services/context/tokenizer.js +3 -3
- package/dist/services/crystallization/crystallization-brief-schema.d.ts +80 -0
- package/dist/services/crystallization/crystallization-brief-schema.js +159 -0
- package/dist/services/crystallization/crystallization-service.d.ts +7 -7
- package/dist/services/crystallization/crystallization-service.js +56 -55
- package/dist/services/crystallization/crystallization-store.d.ts +2 -2
- package/dist/services/crystallization/crystallization-store.js +37 -20
- package/dist/services/crystallization/crystallization-types.d.ts +4 -56
- package/dist/services/crystallization/crystallization-types.js +31 -184
- package/dist/services/crystallization/evidence-brief-builder.d.ts +3 -3
- package/dist/services/crystallization/evidence-brief-builder.js +32 -38
- package/dist/services/crystallization/index.d.ts +4 -4
- package/dist/services/crystallization/index.js +4 -4
- package/dist/services/dashboard/project-dashboard-service.js +7 -1
- package/dist/services/dispatch/await-batch-helpers.d.ts +55 -0
- package/dist/services/dispatch/await-batch-helpers.js +206 -0
- package/dist/services/dispatch/await-batch.d.ts +50 -7
- package/dist/services/dispatch/await-batch.js +97 -194
- package/dist/services/dispatch/batch-counter.js +2 -1
- package/dist/services/dispatch/conflict-replay.js +2 -2
- package/dist/services/dispatch/contract-store.js +5 -2
- package/dist/services/dispatch/dispatch-record-input-types.d.ts +81 -0
- package/dist/services/dispatch/dispatch-record-input-types.js +1 -0
- package/dist/services/dispatch/dispatch-record-types.d.ts +6 -73
- package/dist/services/dispatch/dispatch-record-upgrade-fields.d.ts +72 -0
- package/dist/services/dispatch/dispatch-record-upgrade-fields.js +242 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.d.ts +15 -0
- package/dist/services/dispatch/dispatch-record-upgrade-guards.js +55 -0
- package/dist/services/dispatch/dispatch-record-upgrade.d.ts +2 -4
- package/dist/services/dispatch/dispatch-record-upgrade.js +21 -213
- package/dist/services/dispatch/dispatch-record-writer.js +54 -26
- package/dist/services/dispatch/dispatch-sub-agent.js +7 -2
- package/dist/services/dispatch/e2e-fixtures.js +1 -1
- package/dist/services/dispatch/isolation-lease.js +39 -17
- package/dist/services/dispatch/merge-back-runner.js +51 -11
- package/dist/services/dispatch/service-shutdown.js +4 -1
- package/dist/services/dispatch/slice-dag-types.d.ts +116 -0
- package/dist/services/dispatch/slice-dag-types.js +41 -0
- package/dist/services/dispatch/slice-dag.d.ts +3 -109
- package/dist/services/dispatch/slice-dag.js +13 -36
- package/dist/services/dispatch/sub-agent-batch-await.d.ts +47 -0
- package/dist/services/dispatch/sub-agent-batch-await.js +73 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.d.ts +122 -0
- package/dist/services/dispatch/sub-agent-dispatcher-types.js +12 -0
- package/dist/services/dispatch/sub-agent-dispatcher.d.ts +3 -145
- package/dist/services/dispatch/sub-agent-dispatcher.js +14 -70
- package/dist/services/dispatch/test-tool-detection.js +12 -1
- package/dist/services/doc/doc-generator.js +19 -4
- package/dist/services/doctor/doctor-service/checks/check-id-schema.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.d.ts +7 -2
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +26 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-exclude-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/codegraph-index-integrity.js +16 -8
- package/dist/services/doctor/doctor-service/checks/dist-source-version.js +18 -9
- package/dist/services/doctor/doctor-service/checks/ecc-hooks-schema-drift.js +20 -10
- package/dist/services/doctor/doctor-service/checks/gateguard-conflict.js +18 -9
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +25 -11
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +12 -6
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.d.ts +7 -16
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.js +50 -70
- package/dist/services/doctor/doctor-service/checks/schema-validity.js +5 -1
- package/dist/services/doctor/doctor-service/checks/skill-presence.js +4 -2
- package/dist/services/doctor/doctor-service/checks/statusline-install.js +8 -4
- package/dist/services/doctor/doctor-service/checks/statusline-runtime.js +8 -4
- package/dist/services/doctor/doctor-service/checks/user-config.js +4 -2
- package/dist/services/doctor/doctor-service/checks/workspace-init.js +8 -4
- package/dist/services/doctor/doctor-service/checks/workspace-layout.js +19 -11
- package/dist/services/doctor/doctor-service/index.js +4 -2
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.d.ts +40 -0
- package/dist/services/doctor/doctor-service/multi-binary-drift-helpers.js +49 -0
- package/dist/services/doctor/doctor-service/plugin-registry.js +1 -1
- package/dist/services/doctor/doctor-service/probe-types.d.ts +210 -0
- package/dist/services/doctor/doctor-service/probe-types.js +14 -0
- package/dist/services/doctor/doctor-service/types.d.ts +7 -197
- package/dist/services/doctor/index.d.ts +1 -1
- package/dist/services/doctor/index.js +1 -1
- package/dist/services/env/shell-probe.js +8 -2
- package/dist/services/evidence/evidence-body-builders.d.ts +23 -0
- package/dist/services/evidence/evidence-body-builders.js +197 -0
- package/dist/services/evidence/evidence-generator.js +6 -187
- package/dist/services/evolution/evolution-constraints.d.ts +43 -0
- package/dist/services/evolution/evolution-constraints.js +54 -0
- package/dist/services/evolution/evolution-evaluation-schema.d.ts +43 -0
- package/dist/services/evolution/evolution-evaluation-schema.js +43 -0
- package/dist/services/evolution/evolution-service.d.ts +6 -6
- package/dist/services/evolution/evolution-service.js +58 -58
- package/dist/services/evolution/evolution-store.d.ts +2 -2
- package/dist/services/evolution/evolution-store.js +37 -51
- package/dist/services/evolution/evolution-types.d.ts +2 -22
- package/dist/services/evolution/evolution-types.js +41 -101
- package/dist/services/evolution/independent-evaluator-runner.d.ts +3 -3
- package/dist/services/evolution/independent-evaluator-runner.js +20 -22
- package/dist/services/evolution/regression-skeptic-runner.d.ts +2 -2
- package/dist/services/evolution/regression-skeptic-runner.js +18 -18
- package/dist/services/feedback/feedback-promotion-service.js +48 -12
- package/dist/services/feedback/promotion-artifact-evidence.d.ts +2 -16
- package/dist/services/feedback/promotion-artifact-evidence.js +6 -83
- package/dist/services/feedback/promotion-artifact-json-evidence.d.ts +29 -0
- package/dist/services/feedback/promotion-artifact-json-evidence.js +39 -0
- package/dist/services/feedback/promotion-source-comments.d.ts +47 -0
- package/dist/services/feedback/promotion-source-comments.js +61 -0
- package/dist/services/final-review/final-review-contract.d.ts +26 -0
- package/dist/services/final-review/final-review-contract.js +14 -0
- package/dist/services/final-review/final-review-delivery.d.ts +63 -0
- package/dist/services/final-review/final-review-delivery.js +124 -0
- package/dist/services/final-review/final-review-evidence-budget.d.ts +125 -0
- package/dist/services/final-review/final-review-evidence-budget.js +218 -0
- package/dist/services/final-review/final-review-evidence-collect.d.ts +4 -0
- package/dist/services/final-review/final-review-evidence-collect.js +230 -0
- package/dist/services/final-review/final-review-evidence-sources.d.ts +138 -0
- package/dist/services/final-review/final-review-evidence-sources.js +139 -0
- package/dist/services/final-review/final-review-fifth-dim.d.ts +8 -0
- package/dist/services/final-review/final-review-fifth-dim.js +20 -0
- package/dist/services/final-review/final-review-gates.d.ts +119 -0
- package/dist/services/final-review/final-review-gates.js +214 -0
- package/dist/services/final-review/final-review-output-budget.d.ts +88 -0
- package/dist/services/final-review/final-review-output-budget.js +161 -0
- package/dist/services/final-review/final-review-prompt.d.ts +35 -0
- package/dist/services/final-review/final-review-prompt.js +112 -0
- package/dist/services/final-review/final-review-reviewer.d.ts +57 -0
- package/dist/services/final-review/final-review-reviewer.js +95 -0
- package/dist/services/final-review/final-review-runner.d.ts +3 -0
- package/dist/services/final-review/final-review-runner.js +158 -0
- package/dist/services/final-review/final-review-service.d.ts +119 -373
- package/dist/services/final-review/final-review-service.js +48 -1380
- package/dist/services/final-review/final-review-verdicts.d.ts +60 -0
- package/dist/services/final-review/final-review-verdicts.js +91 -0
- package/dist/services/final-review/index.d.ts +3 -3
- package/dist/services/final-review/index.js +2 -2
- package/dist/services/final-review/pre-post-diff.js +32 -29
- package/dist/services/fixture/fixture-capture-service.js +14 -6
- package/dist/services/fresh-context/trigger-scan.js +13 -2
- package/dist/services/fuzzy-matching/fuzzy-match-service.js +1 -1
- package/dist/services/fuzzy-matching/fzf-pick-service.js +6 -1
- package/dist/services/hooks/pre-tool-code-gate.js +2 -2
- package/dist/services/hooks/presence-marker-detector.js +12 -2
- package/dist/services/hooks/worktree-authorization-gate.js +21 -7
- package/dist/services/ide/adapters/claude-code-adapter.js +30 -17
- package/dist/services/ide/adapters/codex-adapter.js +3 -5
- package/dist/services/ide/adapters/cursor-adapter.js +3 -5
- package/dist/services/ide/adapters/hermes-adapter.js +2 -4
- package/dist/services/ide/adapters/openclaw-adapter.js +2 -4
- package/dist/services/ide/adapters/qoder-adapter.js +2 -4
- package/dist/services/ide/adapters/tongyi-lingma-adapter.js +1 -1
- package/dist/services/ide/adapters/trae-adapter.js +3 -5
- package/dist/services/ide/adapters/zcode-adapter.js +8 -7
- package/dist/services/ide/current-model-detector.js +2 -1
- package/dist/services/ide/ide-compact-types.d.ts +153 -0
- package/dist/services/ide/ide-compact-types.js +1 -0
- package/dist/services/ide/ide-registry.js +1 -1
- package/dist/services/ide/ide-types.d.ts +7 -145
- package/dist/services/ide/resource-profile.js +1 -1
- package/dist/services/ide/shared/atomic-json.js +2 -1
- package/dist/services/impact/impact-scan-service.js +12 -5
- package/dist/services/job/job-commit-verification.d.ts +73 -0
- package/dist/services/job/job-commit-verification.js +72 -0
- package/dist/services/job/job-orchestrator.d.ts +42 -0
- package/dist/services/job/job-orchestrator.js +110 -10
- package/dist/services/job/job-progress-store.d.ts +75 -5
- package/dist/services/job/job-progress-store.js +83 -6
- package/dist/services/job/job-rotation.d.ts +1 -1
- package/dist/services/job/job-rotation.js +5 -1
- package/dist/services/job/job-state-store.js +2 -2
- package/dist/services/job/job-types.js +49 -20
- package/dist/services/job/subagent-job-wrapper.d.ts +1 -1
- package/dist/services/job/subagent-job-wrapper.js +5 -1
- package/dist/services/job-snapshot/snapshot.js +2 -2
- package/dist/services/karpathy-cost/karpathy-cost-check-service.js +23 -13
- package/dist/services/legacy/legacy-detector.js +51 -5
- package/dist/services/lint/detect-eslint.js +10 -4
- package/dist/services/lint/detect-ocr-18.js +11 -3
- package/dist/services/lint/eslint-runner-support.d.ts +22 -0
- package/dist/services/lint/eslint-runner-support.js +185 -0
- package/dist/services/lint/eslint-runner-types.d.ts +69 -0
- package/dist/services/lint/eslint-runner-types.js +11 -0
- package/dist/services/lint/eslint-runner.d.ts +4 -56
- package/dist/services/lint/eslint-runner.js +24 -178
- package/dist/services/lint/npx-resolver.js +1 -3
- package/dist/services/lint/ocr-18-acquire.js +15 -4
- package/dist/services/lint/ocr-multilang-adapter.js +4 -5
- package/dist/services/llm/anthropic-runner.js +4 -1
- package/dist/services/log/log-commands-service.js +2 -6
- package/dist/services/log/logger.js +15 -12
- package/dist/services/log/retention.d.ts +0 -16
- package/dist/services/log/retention.js +2 -18
- package/dist/services/loop/evaluator-dispatcher.js +78 -42
- package/dist/services/loop/loop-bee-relation-service.d.ts +4 -4
- package/dist/services/loop/loop-bee-relation-service.js +36 -40
- package/dist/services/loop/loop-bee-relation-store.d.ts +3 -3
- package/dist/services/loop/loop-bee-relation-store.js +9 -11
- package/dist/services/loop/loop-bee-relation-types.d.ts +1 -1
- package/dist/services/loop/loop-bee-relation-types.js +14 -25
- package/dist/services/loop/loop-release-service.d.ts +2 -2
- package/dist/services/loop/loop-release-service.js +3 -3
- package/dist/services/loop/loop-release-store.d.ts +2 -2
- package/dist/services/loop/loop-release-store.js +4 -6
- package/dist/services/loop/loop-release-types.d.ts +1 -1
- package/dist/services/loop/loop-release-types.js +21 -31
- package/dist/services/loop/monotonic-guard-types.d.ts +51 -0
- package/dist/services/loop/monotonic-guard-types.js +9 -0
- package/dist/services/loop/monotonic-guard.d.ts +2 -43
- package/dist/services/loop/monotonic-runner-types.d.ts +63 -0
- package/dist/services/loop/monotonic-runner-types.js +17 -0
- package/dist/services/loop/monotonic-runner.d.ts +3 -34
- package/dist/services/loop/monotonic-runner.js +10 -20
- package/dist/services/loop/run-driver.js +16 -8
- package/dist/services/loop/spec-service.d.ts +0 -5
- package/dist/services/loop/spec-service.js +49 -9
- package/dist/services/memory/llm-reranker-core.d.ts +108 -0
- package/dist/services/memory/llm-reranker-core.js +105 -0
- package/dist/services/memory/llm-reranker.d.ts +3 -94
- package/dist/services/memory/llm-reranker.js +13 -102
- package/dist/services/memory/memory-ingest-service.d.ts +1 -22
- package/dist/services/memory/memory-ingest-service.js +29 -76
- package/dist/services/memory/memory-ingest-support.d.ts +23 -0
- package/dist/services/memory/memory-ingest-support.js +81 -0
- package/dist/services/memory/memory-rotate-service.js +41 -8
- package/dist/services/memory/memory-search-service.js +8 -4
- package/dist/services/memory/project-context-service.js +26 -5
- package/dist/services/memory/project-memory-service/index/kind-dispatch.d.ts +2 -7
- package/dist/services/memory/project-memory-service/index/kind-dispatch.js +17 -136
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.d.ts +7 -0
- package/dist/services/memory/project-memory-service/index/project-memory-plan-exec.js +150 -0
- package/dist/services/memory/project-memory-service/index/ranking.js +6 -3
- package/dist/services/memory/project-memory-service/index/reindex.js +14 -5
- package/dist/services/memory/project-memory-service/index.d.ts +1 -1
- package/dist/services/memory/project-memory-service/index.js +1 -1
- package/dist/services/memory/project-memory-service/memory-kinds.d.ts +31 -0
- package/dist/services/memory/project-memory-service/memory-kinds.js +87 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.d.ts +24 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter-parse.js +104 -0
- package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +2 -24
- package/dist/services/memory/project-memory-service/parsers/frontmatter.js +28 -79
- package/dist/services/memory/project-memory-service/parsers/markdown-pure.js +15 -3
- package/dist/services/memory/project-memory-service/store/atomic-write.d.ts +19 -7
- package/dist/services/memory/project-memory-service/store/atomic-write.js +144 -38
- package/dist/services/memory/project-memory-service/store/paths.js +2 -1
- package/dist/services/memory/project-memory-service/types.d.ts +3 -31
- package/dist/services/memory/project-memory-service/types.js +1 -76
- package/dist/services/migrate-skill-name/migrate.js +1 -1
- package/dist/services/migrate-skill-name/schema.js +1 -1
- package/dist/services/mode/mode-enforcement.js +4 -2
- package/dist/services/mode/mode-status-service.d.ts +27 -9
- package/dist/services/mode/mode-status-service.js +64 -12
- package/dist/services/observability/aggregation-helpers.d.ts +22 -0
- package/dist/services/observability/aggregation-helpers.js +65 -0
- package/dist/services/observability/aggregation-types.d.ts +66 -0
- package/dist/services/observability/aggregation-types.js +34 -0
- package/dist/services/observability/aggregation.d.ts +5 -53
- package/dist/services/observability/aggregation.js +17 -80
- package/dist/services/observability/jsonl-store.js +2 -1
- package/dist/services/observability/observability-schema.d.ts +71 -0
- package/dist/services/observability/observability-schema.js +64 -0
- package/dist/services/observability/observability-service.d.ts +3 -56
- package/dist/services/observability/observability-service.js +9 -49
- package/dist/services/openspec/coverage-evidence-reader.js +18 -11
- package/dist/services/openspec/openspec-archive-service.js +31 -24
- package/dist/services/openspec/openspec-init-service.js +8 -2
- package/dist/services/openspec/openspec-propose-from-doctor-service.js +1 -1
- package/dist/services/openspec/openspec-scan-service.js +4 -1
- package/dist/services/openspec/openspec-validate-service.js +26 -5
- package/dist/services/perf/perf-baseline-service.js +2 -6
- package/dist/services/polyrepo/polyrepo-dispatcher.js +2 -1
- package/dist/services/polyrepo/polyrepo-scanner.js +4 -1
- package/dist/services/prd/handoff-frontmatter-shape.d.ts +42 -0
- package/dist/services/prd/handoff-frontmatter-shape.js +67 -0
- package/dist/services/prd/handoff-frontmatter.js +62 -1
- package/dist/services/prd/handoff-gate-evidence.js +14 -10
- package/dist/services/prd/handoff-path-resolution.d.ts +37 -0
- package/dist/services/prd/handoff-path-resolution.js +101 -0
- package/dist/services/prd/handoff-service.d.ts +12 -38
- package/dist/services/prd/handoff-service.js +25 -147
- package/dist/services/prd/handoff-types.d.ts +33 -1
- package/dist/services/prd/prd-blocks-checker.js +28 -8
- package/dist/services/prd/project-scan-bootstrap-service.js +1 -5
- package/dist/services/prd/project-scan-reader.js +1 -4
- package/dist/services/prd/project-scan-sediment.js +1 -4
- package/dist/services/preferences/preferences-service.js +6 -8
- package/dist/services/preferences/preferences-types.js +4 -4
- package/dist/services/qa/bdd-test-style-contract.d.ts +41 -0
- package/dist/services/qa/bdd-test-style-contract.js +37 -0
- package/dist/services/qa/bdd-test-style-verifier.d.ts +2 -24
- package/dist/services/qa/bdd-test-style-verifier.js +5 -31
- package/dist/services/qa/browser-event-logger.js +2 -1
- package/dist/services/qa/qa-business-review-state.js +20 -5
- package/dist/services/qa/screenshot-archive-service.js +1 -3
- package/dist/services/rd/ast-gate.js +2 -2
- package/dist/services/rd/impl.js +1 -1
- package/dist/services/rd/rd-service.js +117 -43
- package/dist/services/rd/reviewer-dispatch-policy.js +4 -7
- package/dist/services/rd/standards-diagnostic.js +4 -1
- package/dist/services/rd/strategy.js +10 -3
- package/dist/services/rd/tactical-stage.js +2 -2
- package/dist/services/rd/types.js +9 -7
- package/dist/services/rd-swarm/rd-swarm-service.d.ts +2 -45
- package/dist/services/rd-swarm/rd-swarm-service.js +140 -21
- package/dist/services/rd-swarm/rd-swarm-types.d.ts +54 -0
- package/dist/services/rd-swarm/rd-swarm-types.js +10 -0
- package/dist/services/recommendations/capability-map-service.js +10 -2
- package/dist/services/recommendations/capability-seed-items.js +81 -14
- package/dist/services/recommendations/capability-seed-mappings.js +420 -48
- package/dist/services/recommendations/capability-seed-sources-mcp-server.d.ts +9 -0
- package/dist/services/recommendations/capability-seed-sources-mcp-server.js +233 -0
- package/dist/services/recommendations/capability-seed-sources.js +127 -32
- package/dist/services/recommendations/installed-capability-detector.d.ts +5 -5
- package/dist/services/recommendations/installed-capability-detector.js +11 -10
- package/dist/services/release/release-state.d.ts +2 -2
- package/dist/services/release/release-state.js +44 -15
- package/dist/services/release/version-precheck-layer-changeset.d.ts +2 -0
- package/dist/services/release/version-precheck-layer-changeset.js +43 -0
- package/dist/services/release/version-precheck-service.d.ts +11 -36
- package/dist/services/release/version-precheck-service.js +20 -104
- package/dist/services/release/version-precheck-support.d.ts +53 -0
- package/dist/services/release/version-precheck-support.js +64 -0
- package/dist/services/retrospective/retrospective-index.js +17 -3
- package/dist/services/retrospective/retrospective-search-service.js +6 -2
- package/dist/services/retrospective/retrospective-show.js +4 -1
- package/dist/services/reviewer/model-family.js +7 -1
- package/dist/services/reviewer/providers/anthropic.d.ts +5 -0
- package/dist/services/reviewer/providers/anthropic.js +10 -1
- package/dist/services/reviewer/providers/openai.d.ts +5 -0
- package/dist/services/reviewer/providers/openai.js +10 -1
- package/dist/services/reviewer/reviewer-config.js +4 -2
- package/dist/services/reviewer/reviewer-service.d.ts +2 -36
- package/dist/services/reviewer/reviewer-service.js +2 -1
- package/dist/services/reviewer/reviewer-types.d.ts +43 -0
- package/dist/services/reviewer/reviewer-types.js +1 -0
- package/dist/services/role/role-registry.js +9 -1
- package/dist/services/runtime/runtime-detector.js +4 -1
- package/dist/services/runtime/vendors/claude-code.js +14 -6
- package/dist/services/runtime/vendors/codex.js +11 -3
- package/dist/services/runtime/vendors/copilot.js +11 -3
- package/dist/services/sc/sc-service.js +28 -15
- package/dist/services/scan/acceptance-coverage-service.js +4 -1
- package/dist/services/scan/api-diff-openapi-schema-read.d.ts +67 -0
- package/dist/services/scan/api-diff-openapi-schema-read.js +154 -0
- package/dist/services/scan/api-diff-openapi.d.ts +16 -2
- package/dist/services/scan/api-diff-openapi.js +19 -123
- package/dist/services/scan/api-diff-recorded.js +16 -3
- package/dist/services/scan/api-diff-service.js +49 -16
- package/dist/services/scan/api-diff-types.js +12 -3
- package/dist/services/scan/api-surface-helpers.d.ts +13 -0
- package/dist/services/scan/api-surface-helpers.js +31 -0
- package/dist/services/scan/api-surface-service.d.ts +2 -45
- package/dist/services/scan/api-surface-service.js +15 -26
- package/dist/services/scan/api-surface-types.d.ts +54 -0
- package/dist/services/scan/api-surface-types.js +10 -0
- package/dist/services/scan/archetype-detection.d.ts +74 -0
- package/dist/services/scan/archetype-detection.js +315 -0
- package/dist/services/scan/archetype-service.js +58 -133
- package/dist/services/scan/diff-scope-service.js +35 -15
- package/dist/services/scan/existing-system-service.js +16 -99
- package/dist/services/scan/existing-system-visual-tokens.d.ts +20 -0
- package/dist/services/scan/existing-system-visual-tokens.js +123 -0
- package/dist/services/scan/file-size-policy.d.ts +86 -0
- package/dist/services/scan/file-size-policy.js +184 -0
- package/dist/services/scan/file-size-scan.d.ts +30 -3
- package/dist/services/scan/file-size-scan.js +47 -9
- package/dist/services/scan/karpathy-service.js +6 -1
- package/dist/services/scan/orphan-service.js +86 -20
- package/dist/services/scan/scan-types.d.ts +9 -0
- package/dist/services/scan/type-sanity-service.js +104 -10
- package/dist/services/sediment/dispose-confirm.d.ts +2 -2
- package/dist/services/sediment/dispose-confirm.js +2 -2
- package/dist/services/sediment/json-schema.d.ts +1 -1
- package/dist/services/sediment/json-schema.js +25 -13
- package/dist/services/sediment/manifest-lint.d.ts +1 -12
- package/dist/services/sediment/manifest-lint.js +1 -7
- package/dist/services/sediment/pool-paths.js +13 -9
- package/dist/services/sediment/pool-read.d.ts +1 -1
- package/dist/services/sediment/pool-read.js +42 -18
- package/dist/services/sediment/pool-rebuild-index.d.ts +1 -1
- package/dist/services/sediment/pool-rebuild-index.js +5 -5
- package/dist/services/sediment/pool-write.d.ts +1 -1
- package/dist/services/sediment/pool-write.js +7 -7
- package/dist/services/sediment/promotion-gate.d.ts +1 -1
- package/dist/services/sediment/promotion-gate.js +9 -9
- package/dist/services/sediment/types.d.ts +8 -8
- package/dist/services/session/binding-status-service.js +14 -4
- package/dist/services/session/caller-binding-service.js +2 -1
- package/dist/services/session/getSessionDir.js +4 -1
- package/dist/services/session/index.d.ts +1 -1
- package/dist/services/session/index.js +1 -1
- package/dist/services/session/resolve-caller-id.js +7 -5
- package/dist/services/session/session-binding-bridge.js +26 -25
- package/dist/services/session/session-checkpoint-service.js +1 -1
- package/dist/services/session/session-file-schema.d.ts +70 -0
- package/dist/services/session/session-file-schema.js +68 -0
- package/dist/services/session/session-manager.d.ts +6 -6
- package/dist/services/session/session-manager.js +30 -29
- package/dist/services/session/session-resume-service.js +2 -1
- package/dist/services/share/bundle-format-constants.d.ts +85 -0
- package/dist/services/share/bundle-format-constants.js +100 -0
- package/dist/services/share/bundle-reader.d.ts +3 -3
- package/dist/services/share/bundle-reader.js +75 -68
- package/dist/services/share/bundle-types.d.ts +3 -70
- package/dist/services/share/bundle-types.js +38 -107
- package/dist/services/share/bundle-writer.d.ts +3 -3
- package/dist/services/share/bundle-writer.js +101 -91
- package/dist/services/share/run-state-contract.d.ts +1 -1
- package/dist/services/share/run-state-contract.js +7 -13
- package/dist/services/signal/cancel-handler.js +2 -1
- package/dist/services/skill/resume-detector.js +6 -4
- package/dist/services/skill/skill-scheduler.js +3 -1
- package/dist/services/skill/skill-search-service.js +4 -4
- package/dist/services/skillhub/release-diff.d.ts +2 -2
- package/dist/services/skillhub/release-diff.js +6 -10
- package/dist/services/skillhub/release-export.d.ts +2 -2
- package/dist/services/skillhub/release-export.js +15 -17
- package/dist/services/skillhub/release-gc-blobs.d.ts +2 -2
- package/dist/services/skillhub/release-gc-blobs.js +4 -4
- package/dist/services/skillhub/release-import.d.ts +2 -2
- package/dist/services/skillhub/release-import.js +13 -12
- package/dist/services/skillhub/release-retain.d.ts +3 -3
- package/dist/services/skillhub/release-retain.js +22 -22
- package/dist/services/skillhub/sqlite-store.d.ts +1 -1
- package/dist/services/skillhub/sqlite-store.js +12 -11
- package/dist/services/skillhub/tar-runtime.js +15 -15
- package/dist/services/skillhub/types.d.ts +4 -4
- package/dist/services/skills/hooks-codegate-superpowers.js +16 -7
- package/dist/services/skills/hooks-settings-service.js +61 -19
- package/dist/services/skills/presence-lease-service.js +26 -16
- package/dist/services/skills/presence-lease-types.d.ts +1 -1
- package/dist/services/skills/presence-lease-types.js +1 -1
- package/dist/services/skills/skill-conformance-service.js +40 -8
- package/dist/services/skills/skill-presence-service.js +16 -14
- package/dist/services/skills/skill-runbook-service.js +2 -1
- package/dist/services/skills/skill-statusline-model.d.ts +128 -0
- package/dist/services/skills/skill-statusline-model.js +163 -0
- package/dist/services/skills/skill-statusline-renderer.js +4 -3
- package/dist/services/skills/skill-statusline-service.d.ts +3 -100
- package/dist/services/skills/skill-statusline-service.js +56 -163
- package/dist/services/skills/statusline-palette.js +11 -6
- package/dist/services/skills/statusline-settings-service.js +2 -1
- package/dist/services/skills/sync-service-support.d.ts +65 -0
- package/dist/services/skills/sync-service-support.js +50 -0
- package/dist/services/skills/sync-service.d.ts +3 -66
- package/dist/services/skills/sync-service.js +15 -53
- package/dist/services/slice/calibration-store.js +8 -2
- package/dist/services/slice/cross-pass-edge-merger.d.ts +3 -28
- package/dist/services/slice/cross-pass-edge-merger.js +13 -63
- package/dist/services/slice/cross-pass-edge-static-scan-support.d.ts +69 -0
- package/dist/services/slice/cross-pass-edge-static-scan-support.js +74 -0
- package/dist/services/slice/granularity-decider.js +2 -2
- package/dist/services/slice/slice-archive-service.js +8 -3
- package/dist/services/slice/slice-check-service.js +19 -8
- package/dist/services/slice/slice-decompose-runners.js +61 -23
- package/dist/services/slice/slice-decompose-service.js +4 -4
- package/dist/services/slice/slice-review-state.js +8 -2
- package/dist/services/smoke/smoke-paths-state.js +9 -2
- package/dist/services/sop/gate-enforce-service.js +9 -2
- package/dist/services/sop/sop-advance-service.js +14 -2
- package/dist/services/sop/sop-check-service.js +16 -4
- package/dist/services/sop/sop-paths.js +3 -1
- package/dist/services/sop/sop-registry-service.js +5 -1
- package/dist/services/sop/sop-service.js +29 -7
- package/dist/services/sop/sop-types.js +5 -1
- package/dist/services/standards/ide-aware-standards-service.js +2 -2
- package/dist/services/standards/loop-engineering-lint.js +12 -5
- package/dist/services/standards/loop-engineering-readiness-lint.js +5 -5
- package/dist/services/standards/migrate-claude-rules-service.js +9 -7
- package/dist/services/standards/missing-standards-detector.js +1 -3
- package/dist/services/standards/project-context-support.d.ts +50 -0
- package/dist/services/standards/project-context-support.js +244 -0
- package/dist/services/standards/project-context-types.d.ts +30 -0
- package/dist/services/standards/project-context-types.js +11 -0
- package/dist/services/standards/project-context.d.ts +10 -22
- package/dist/services/standards/project-context.js +27 -214
- package/dist/services/standards/project-standards-service.js +43 -12
- package/dist/services/standards/standards-render-common.d.ts +15 -0
- package/dist/services/standards/standards-render-common.js +49 -0
- package/dist/services/standards/standards-render.d.ts +1 -2
- package/dist/services/standards/standards-render.js +31 -58
- package/dist/services/standards/ui-library-dispatch-block.js +1 -1
- package/dist/services/tech/tech-change-id-service.js +7 -7
- package/dist/services/tech/tech-service.js +73 -26
- package/dist/services/test-cache/test-cache-service.js +8 -3
- package/dist/services/verdict/envelope-parsers.d.ts +84 -0
- package/dist/services/verdict/envelope-parsers.js +146 -0
- package/dist/services/verdict/envelopes.d.ts +50 -60
- package/dist/services/verdict/envelopes.js +18 -156
- package/dist/services/verdict/verdict-aggregator.js +27 -3
- package/dist/services/vm/vm-lease.js +15 -3
- package/dist/services/web/aria-node.d.ts +27 -0
- package/dist/services/web/aria-node.js +1 -0
- package/dist/services/web/browser-acquire.js +3 -1
- package/dist/services/web/browser-cache-probe.d.ts +18 -0
- package/dist/services/web/browser-cache-probe.js +110 -0
- package/dist/services/web/browser-session-manager.js +6 -2
- package/dist/services/web/daemon-registry.js +4 -1
- package/dist/services/web/playwright-loader.d.ts +2 -70
- package/dist/services/web/playwright-types.d.ts +75 -0
- package/dist/services/web/playwright-types.js +1 -0
- package/dist/services/web/snapshot-pruner.d.ts +2 -23
- package/dist/services/web/snapshot-pruner.js +8 -3
- package/dist/services/web/web-daemon-service.js +1 -3
- package/dist/services/web/web-install-service.d.ts +3 -32
- package/dist/services/web/web-install-service.js +21 -100
- package/dist/services/web/web-install-types.d.ts +31 -0
- package/dist/services/web/web-install-types.js +13 -0
- package/dist/services/web/web-login-profile.js +7 -5
- package/dist/services/web/web-protocol.js +3 -1
- package/dist/services/workflow/pipeline-verify-gate-support.js +63 -17
- package/dist/services/workflow/pipeline-verify-service.js +17 -6
- package/dist/services/workflow/plan-reader.js +5 -1
- package/dist/services/workflow/plan-refresher.js +20 -6
- package/dist/services/workflow/plan-trigger-detector.js +31 -8
- package/dist/services/workflow/provision-dispatch-node.js +8 -3
- package/dist/services/workflow/workflow-autonomous-resume-helpers.d.ts +3 -1
- package/dist/services/workflow/workflow-autonomous-resume-helpers.js +35 -144
- package/dist/services/workflow/workflow-autonomous-resume-validation.d.ts +16 -0
- package/dist/services/workflow/workflow-autonomous-resume-validation.js +155 -0
- package/dist/services/workflow/workflow-autonomous-service.js +25 -13
- package/dist/services/workflow/workflow-graph-store-helpers.d.ts +51 -0
- package/dist/services/workflow/workflow-graph-store-helpers.js +111 -0
- package/dist/services/workflow/workflow-graph-store.d.ts +2 -35
- package/dist/services/workflow/workflow-graph-store.js +30 -107
- package/dist/services/workflow/workflow-graph-types.js +3 -3
- package/dist/services/workflow/workflow-inflight-probe.js +14 -7
- package/dist/services/workflow/workflow-loader.js +5 -1
- package/dist/services/workflow/workflow-node-lifecycle.js +22 -21
- package/dist/services/workflow/workflow-presence-lifecycle-types.d.ts +50 -0
- package/dist/services/workflow/workflow-presence-lifecycle-types.js +1 -0
- package/dist/services/workflow/workflow-presence-lifecycle.d.ts +2 -42
- package/dist/services/workflow/workflow-presence-lifecycle.js +19 -21
- package/dist/services/workflow/workflow-router-service.js +169 -27
- package/dist/services/workflow/workflow-skip-service.js +14 -4
- package/dist/services/workflow/workflow-spec-builders.d.ts +15 -0
- package/dist/services/workflow/workflow-spec-builders.js +121 -0
- package/dist/services/workflow/workflow-spec.d.ts +7 -6
- package/dist/services/workflow/workflow-spec.js +22 -116
- package/dist/services/workflow/workflow-state-store.js +2 -1
- package/dist/services/workspace/generated-artifacts-stamp.d.ts +2 -2
- package/dist/services/workspace/generated-artifacts-stamp.js +2 -2
- package/dist/services/workspace/migrate-1-4-1-service.js +80 -14
- package/dist/services/workspace/migrate-service.js +66 -16
- package/dist/services/workspace/reconcile-migrate.js +6 -2
- package/dist/services/workspace/reconcile-service.js +37 -16
- package/dist/services/workspace/workspace-claude-settings-materializer.js +7 -5
- package/dist/services/workspace/workspace-clean-service.js +4 -1
- package/dist/services/workspace/workspace-service.js +12 -4
- package/dist/services/workspace/workspace-state-service.js +1 -1
- package/dist/services/worktree/git-worktree-parser.js +13 -3
- package/dist/services/worktree/host-worktree-reconciler.js +8 -4
- package/dist/services/worktree/long-path-cleanup.js +23 -6
- package/dist/services/worktree/worktree-gc-guard.js +3 -1
- package/dist/services/worktree/worktree-lease-types.d.ts +53 -0
- package/dist/services/worktree/worktree-lease-types.js +10 -0
- package/dist/services/worktree/worktree-lease.d.ts +2 -44
- package/dist/shared/array-guards.d.ts +30 -0
- package/dist/shared/array-guards.js +32 -0
- package/dist/shared/format-md-compact-internals.d.ts +26 -0
- package/dist/shared/format-md-compact-internals.js +125 -0
- package/dist/shared/format-md-compact.js +1 -117
- package/dist/shared/fs-utils.js +2 -1
- package/dist/shared/incrementing-number.js +3 -3
- package/dist/shared/json-parse.d.ts +71 -0
- package/dist/shared/json-parse.js +32 -0
- package/dist/shared/json-schema-mini.js +3 -1
- package/dist/shared/path-safety.js +3 -1
- package/dist/shared/path-utils.d.ts +20 -0
- package/dist/shared/path-utils.js +26 -0
- package/dist/shared/planner-response.js +3 -3
- package/dist/shared/stale-policy.js +1 -3
- package/dist/skills/peaks-maker/index.js +11 -11
- package/package.json +31 -8
- package/scripts/clean-dist.mjs +1 -2
- package/scripts/copy-templates.mjs +2 -4
- package/scripts/install-skills.mjs +286 -283
- package/scripts/sync-version.mjs +25 -8
- package/scripts/watch.mjs +8 -2
- package/skills/bee/peaks-qa/references/reading-handoff-frontmatter.md +3 -1
- package/skills/bee/peaks-rd/references/parallel-review-fanout.md +1 -1
- package/skills/bee/peaks-rd/references/rd-fanout-contracts.md +3 -2
- package/skills/bee/peaks-rd/references/writing-handoff-frontmatter.md +29 -7
- package/skills/peaks-code/SKILL.md +1 -1
- package/skills/peaks-code/references/frontend-only-mode.md +2 -2
- package/skills/peaks-code/references/startup-sequence.md +0 -4
- package/dist/cli/commands/upgrade-commands.d.ts +0 -25
- package/dist/cli/commands/upgrade-commands.js +0 -154
- package/dist/services/upgrade/1x-detector-service.d.ts +0 -7
- package/dist/services/upgrade/1x-detector-service.js +0 -94
- package/dist/services/upgrade/gitignore-migrate-service.d.ts +0 -56
- package/dist/services/upgrade/gitignore-migrate-service.js +0 -170
- package/dist/services/upgrade/upgrade-service.d.ts +0 -81
- package/dist/services/upgrade/upgrade-service.js +0 -405
- package/skills/peaks-code/references/step-0-55-1x-detection.md +0 -83
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,66 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 4.1.1 — 2026-10-05 (一次"闸自己坏了整整一个版本"、注释债第一次进棘轮、以及五个从真实使用里捞出来的缺陷)
|
|
4
|
+
|
|
5
|
+
**版本级别**: 未发布区间 `v4.1.0..HEAD` 共 **14 个 commit**(6 fix / 4 feat / 1 test / 1 refactor / 1 docs / 1 chore)。**取 patch,而不是按 4.1.0 自己写下的判据取 minor** —— 这条判据不是被推翻,而是被有意收窄:本版新增的两条命令(`peaks comments audit` / `peaks comments prune`)是**仓库自己的维护表面**,只读或只动本仓注释,不改变任何既有命令的输入输出,也不要求下游做任何事;对外承诺的内容全是修复(其中一条是门禁崩溃)。`^4.1.0` 的下游直接匹配本版。4 个 workspace 包各 +1 patch(internal-runtime 0.0.40→0.0.41、mut 0.1.54→0.1.55、shared 0.0.89→0.0.90、shared-channel 0.0.57→0.0.58),顺带把"本地 manifest 比 registry 新"(mut 的 0.1.54 从未发布)这个坑一次清掉:`scripts/release-pack.mjs` 按拓扑序把 5 个包在同一次 CI 运行里一起发出去,`pnpm pack` 把 `workspace:*` 重写成精确 pin,实测 tarball 内 `CLI_VERSION` 为 4.1.1。
|
|
6
|
+
|
|
7
|
+
### 1. 门禁自己坏了一个版本(`78cb982f`,用户可见)
|
|
8
|
+
|
|
9
|
+
`node .husky/peaks-gate.mjs file-size` 从 `28b5145f` 起**每次都崩**:那次提交把 comment 腿从 `.husky/gate/legs.mjs` 搬出去时,连带删掉了紧贴它的两段 import(`./context.mjs` 与 `peaks-gate-file-size.mjs`),而 file-size 腿的函数体留在原地 —— `ReferenceError: refuseScopedSubset is not defined`。没有一条臂跑过整条 file-size 模式,所以它活着进了主干;恢复 import 后 `file-size-gate-leg` / `-excess-` / `-hooks-` 三家 21 条臂当场转绿。同一批 78 条臂红的第二个成因是工装:`.husky/file-size/measure.mjs` 与 `.husky/peaks-gate-comment-hygiene.mjs` 都通过 `node_modules/tsx/dist/cli.mjs` spawn 工具,而四个 fixture builder 把这个 tsx 替身写死成"任何调用都回 census 信封"。census 曾是唯一的 tsx 调用方,所以这写法无害了三个版本;comment 腿上线后它收到 census JSON、在里面找不到 `deadReferences`,于是拒绝 seed —— 现在是一份按请求工具分派的替身,顺带把四份逐字复制的 census 信封合成一份。
|
|
10
|
+
|
|
11
|
+
### 2. 注释债第一次进棘轮(4 feat)
|
|
12
|
+
|
|
13
|
+
`peaks comments audit` 出只读清单(dead-reference / narrative 两类,带归属文件),`peaks comments prune` 是执行器,它的**交付物是证明而不是删除**:在真树副本上计划 1677 处、覆盖 484 文件、拒绝 7 处,注释-only 证明 0 问题,残余计数 4+3 恰好等于拒绝数 —— 证明方式是重读改前改后文本、逐行比对非注释行与代码 token,任何一条代码文本变动都拒绝写入。两行 ceiling `commentDeadReferences` / `commentNarrativeLines` 入闸,seed 于**强制范围内实测**的 25 / 1515(952 个 tracked 文件,与 eslint / prettier / tsc / silent-warning / file-size 读同一份清单)。分类器是**先校准再入闸**的:188 → 65(把 standards 守卫的 5 条候选排除规则搬过来)→ 28(邻居解析改为 sibling-only,实测每一次祖先上溯带来 16 次误报)→ 25(再加"句子在推理路径"与包内相对根两条规则)。分类器与守卫的排除规则由一条 parity 臂钉住(读守卫源码里的字面量比对,不抄表)。
|
|
14
|
+
|
|
15
|
+
### 3. 五个从真实使用里捞出来的缺陷(`c08bf736` / `23af9c1d` / `2e323344`)
|
|
16
|
+
|
|
17
|
+
1.x→2.0 的升级路径整条删除(含 gate step),不再让一个已经退役的迁移分支继续决定今天的状态;`frontendOnly` 对隐藏目录 / 非 Node 后端的**漏判**修掉(有后端却报 true,用户据此关掉了一整条后端保护);ECC 从 GitHub tarball 拉取改为读 `ecc-universal` npm 依赖, acquisition 层删除,`ecc status` 从此只报告它能不吞异常说出的东西;`peaks memory extract` 的凭证拒绝变成**可诊断**(原先只说"有凭证",且误杀形状过宽),并收紧了两类假阳性;PRD 交接的 frontmatter / `gateEvidence` 字段由文档断言变成代码真产 —— 这是本仓最主的一类缺陷:prose 声称的字段实现里没有。
|
|
18
|
+
|
|
19
|
+
### 4. 一个钉在历史 commit 上的等价守卫,收窄而不是退役(owner 决定 2026-10-05)
|
|
20
|
+
|
|
21
|
+
`baseline-split-equivalence.test.ts` 把拆分前的 799 行 monolith 钉在 `77b711ff`,与今天的 11 模块版逐字节对比。两行新 ceiling 落在**两侧共享**的 `keys.mjs` 里,于是旧程序被要求核准它自己没有腿去量的行 —— 它诚实地拒绝了(`NOT THE CANONICAL CEILING SET`)。逐字节等价在"行集会增长"的棘轮上不可能再次成立,可选的只有收窄与退役,选了前者:参考侧现在读**自己那个时代**的 `keys.mjs`(一个被交给今天的清单的钉死程序,已经不是那个程序了),投影只允许吞掉"锚点之后 `CEILING_KEYS` 新增的行",而这个集合由两份真实清单求差得出(`ceilingKeysInText` 读 git blob 与工作树),没有任何字面量;`_split-anchor-era.ts` 持有唯一的 sha,`baseline-split-anchor.test.ts` 证明 harness 不留第二份。`rescope-projection-bounded.test.ts` 加 4 条臂:种一条**不属于 era** 的 moved-row,它的 bullet、header、计数与差异全部保留;note 下的 bullet 若全是 era 行则整条随计数一同消退;comment 腿的两行 stderr 必须由其**自己的 emitter** 或源码字面量证明真的会打印;`projectArtifact` 只掉它被交出去的键,其余照旧逐字节比。
|
|
22
|
+
|
|
23
|
+
### 5. 本版验证
|
|
24
|
+
|
|
25
|
+
tsc 0;`pnpm build` 0;全量 unit **388 files / 4082 passed / 3 skipped**;`node .husky/peaks-gate.mjs repo` exit 0,19 行 ceiling 全部 held(`eslint 2098/803`、`comment dead-ref 25 / narrative 1515`、`silent-warn 44/62`、`file-size 127 / 40137`、`hooks 0/0`);`peaks release precheck --strict` 0;版本 parity `shared-dist` / `runtime-src` 双 OK;`PEAKS_DRY_RUN=1 scripts/release-pack.mjs` 5 个 tarball 全部通过 registry 校验(无 `workspace:*` 残留)。artifacts 侧:baseline 只重写了**报告用**的 shadow 块(588 files / 643 findings / 160 errors / 36 over-cap / 13349 excess,增量是那个新进的 era helper 文件),没有任何 ceiling 移动。
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
## 4.1.0 — 2026-10-03 (strict-remediation 战役收口: 门禁第一次开始看自己、判据换成"哪些代码是产品"、以及一次把自己推翻的探针)
|
|
29
|
+
|
|
30
|
+
**版本级别**: 未发布区间 `v4.0.54..HEAD` 共 **167 个 commit**(49 refactor / 42 docs / 35 fix / 8 feat / 6 test / 15 chore / 1 style)。取 **minor** 而不是继续 patch,理由是这区间有**新增的用户可见 CLI 表面**(`peaks job add-slice`)以及若干会改变用户所见的修复(cron 超时、`pnpm lint` 的口径、空测试集从"绿"变"红");`^4.0.54` 的下游仍能匹配到本版。
|
|
31
|
+
|
|
32
|
+
### 1. `peaks job` 不再自相矛盾(§2.38,本版本唯一"新增命令")
|
|
33
|
+
|
|
34
|
+
三条都是先在临时仓库里**跑出来**再修的:(a) `init` 之后没有任何办法给已有 job 追加 slice,`checkpoint` 回 `SLICE_NOT_FOUND`,于是"一片一片发现的 wave"只能谎报账本或一片开一个 job;(b) `checkpoint --commit-sha` 原先**只校验长度 ≥7**,一个 `git cat-file` 判定"不是有效对象"的 `c6de09a9` 被接受并写成 `lastCommitSha`;(c) `progress` 的 `currentSlice` 是 `slice-<done+1>` **合成出来的 id**,所以工具自己建议下一步、又自己拒绝那一步——第三条是第一条的成因。现在:`peaks job add-slice --slice-label` 幂等(重复 label 报知且 `state.json` 字节不变、空 label 拒绝);sha 必须可解析才写入,拒绝时引用 git 原话且账本一字节不动;`describeNextSlice` 成为 `#N of M` 的**唯一**出口(原先三处各自算),并把"全部完成"从 `Next: slice #3 of 2 (no slice pending)` 改成 `no further slice is registered — add one with: peaks job add-slice …`,实测该分支下 `slice #` 出现 **0 次**。附带撤回 backlog 自己原先写的"checkpoint 应该记录未知 slice 而不是拒绝"——拒绝未声明的 id 正是账本唯一的防线。
|
|
35
|
+
|
|
36
|
+
### 2. cron 的三处名实不符(用户可见行为)
|
|
37
|
+
|
|
38
|
+
`EXEC_TIMEOUT_MS` 在名字叫"五分钟"的地方是**五小时**;超时不再收割任务子进程(孤儿活在大门之后);daemon 与 run-once 两个写者对 `lastRunAt` 各有各的规则。现在同一 killed 规则覆盖两条路径,killed 记录带得出 killed 标记与非空 stderr,普通失败给不出这个形状。
|
|
39
|
+
|
|
40
|
+
### 3. 假绿被系统性关掉(三处)
|
|
41
|
+
|
|
42
|
+
包内测试集为空从"通过"变成"失败"并补上 CI 步骤;`emit` 检查改为**递归**,嵌套 emit 不能再不吭声地消失;stamp 写入改为原子,且守卫不再为自己验证不了的东西背书;build-integrity 的包集合与 gate 对齐(不一致就拒),空 stamp 记录直接拒。
|
|
43
|
+
|
|
44
|
+
### 4. `pnpm lint` 与门禁终于量同一个集合
|
|
45
|
+
|
|
46
|
+
原先 `peaks lint` 报的是 1259 而 `peaks-gate.mjs repo` 量 1298(少 80 条 finding 却仍打印"全部守住")——因为 gate 里那份扩展名/目录正则是规则的**第二份写法**、没有任何测试观察它。现在只有一个列表、一处过滤,两边由 parity 测试互相钉住;`.peaks/lint/baseline.json` 也修成可移植路径,**waiver 真的在豁免**(此前它按绝对路径匹配,等于静默不豁免)。
|
|
47
|
+
|
|
48
|
+
### 5. 判据换掉:严格检查属于"产品代码",出界部分只测不闸
|
|
49
|
+
|
|
50
|
+
owner 明确「只需要对 `src` 与 `packages/*/src` 这些目录下的文件做 eslint 严格检查、tscheck、prettier」,取代原先"四个目录"的口径。被排除的 552→575 个文件(`tests/`、`scripts/`、包内非 `src`)**不是删掉的债**——`eslintFindings 638`、`fileSizeExcessLines 13557` 仍每次测量并打印,只是不设 ceiling;`shadow` 块承担这笔账,并在上升时主动播报(实测今天连报 `638 → 639 → 641 → 648`,而受闸一侧同期 `2130 → 2128`)。配套把 `--rescope` 的触发条件从"数值变了"改成**"边界文本变了,或有文件离开了范围"**——纯长大免 flag 并打印 `scope grew: 950 -> 952 (7 entered, 0 left the scope)`,因为总体变大只会让计数上升,而任何上升都照旧被 `RAISED` 拒绝:**松的是仪式,不是 ratchet**。
|
|
51
|
+
|
|
52
|
+
### 6. 门禁第一次开始看自己
|
|
53
|
+
|
|
54
|
+
`.husky/` 原先不在任何行数口径里(`peaks-gate.mjs` 1019 行、3.3× 它自己 enforced 的 cap,而它贡献 0)。现在它有**自己的两行**且全程未动主口径(`fileSizeOverCap` 始终 162→126),四个 slice 把 gate 目录从 **4 文件 / 1,701 超实行降到 33+ 文件 / 0**;799 行的生成器与 1,019 行的入口都被拆开,每一次拆分都带**等价手臂**(拆分前后逐行多重集守恒 + 对 `git show` 钉 sha 的行为对照),因为"重构看起来没动"不等于"证明没动"。`silent-warning` 成为最后一条自择总体的腿,收口后它和其余腿共用同一份跟踪列表——顺带数出**17 处此前没有任何 ceiling 见过的静默吞异常**(16 处集中在 `packages/peaks-loop-mut/src/services/agent/ecc-cache-service.ts`,该文件同时欠 537 行)。
|
|
55
|
+
|
|
56
|
+
### 7. 一条被自己的探针推翻的结论(保留为记录,不删)
|
|
57
|
+
|
|
58
|
+
本版曾断言"全局 `npm i -g` 会静默跳过 `install-skills`,用户装到 CLI 却拿不到 skills"。一个 `mkprobe` 探针包(`postinstall` 写 marker 文件)在 **npm 11.19.0** 上两次都**执行了**脚本——该版本的 `install-scripts` 警告是告知性的,`ignore-scripts` 为 `false`;而"skills 目录 45 项未变"正是 `install-skills` **按内容 hash 幂等**的成功样子。教训写进 backlog §2.52a:**no-op 和 skip 给出同一份证据**,"工具 X 不肯做 Y"这种结论,先花一秒把 X 跑一遍。仍然成立的两点:npm 自己说这些脚本"尚未被覆盖"、翻默认在即(二手报道指 v12,本次未能取到一手来源),届时 `--allow-scripts=peaks-loop` 是唯一防线,故两版 README 的安装段落现在写明;以及本仓 `.npmrc` 携 pnpm 的 `onlyBuiltDependencies`(外加一个连字符重复项),npm 每次调用都报未知并声明下个大版本失效——**pnpm 侧有一条放行、npm 侧为空**。
|
|
59
|
+
|
|
60
|
+
### 验证
|
|
61
|
+
|
|
62
|
+
`gate repo` exit 0(943→952 文件、hooks 行 0/0)、`tsc -p tsconfig.json --noEmit` 0、`pnpm test:unit` **379 文件 / 3,915 passed / 3 skipped**、`npm run build` 0(`build-integrity: OK`,`dist-stamp: 907 source file(s)`)。战役过程与全部自我推翻记录在 `.peaks/docs/backlog.md` §2.25–§2.52a、`.peaks/docs/lint-gate.md` §4n–§4z。
|
|
63
|
+
|
|
3
64
|
## 4.0.54 — 2026-09-18 (Phase A 缺陷闭合十片: 9 片真改 + 3 次修复推翻自己 + 4.0.53 宣称闭合的 AC 里 2 个被证伪 — AC-6 是假 pin、AC-1 是空 pin)
|
|
4
65
|
|
|
5
66
|
**Highlights**:
|
package/README-en.md
CHANGED
|
@@ -49,6 +49,21 @@ peaks-loop is a **Loop Engineering crystallization system**, not a workflow tool
|
|
|
49
49
|
npm i -g peaks-loop
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
+
> **On npm 11+, pass one flag.** npm prints an `install-scripts` warning for lifecycle scripts that are not
|
|
53
|
+
> covered by its allowlist. **At the current version (npm 11.19) the scripts still run**, so the install works
|
|
54
|
+
> as-is — but npm says that default is about to flip. To avoid silently ending up with "a CLI, no skills", write
|
|
55
|
+
> it out fully:
|
|
56
|
+
>
|
|
57
|
+
> ```bash
|
|
58
|
+
> npm i -g --allow-scripts=peaks-loop peaks-loop
|
|
59
|
+
> ```
|
|
60
|
+
>
|
|
61
|
+
> If you suspect the skills did not land, **no CLI command reports that state today**
|
|
62
|
+
> (`peaks skill search` queries the in-package skill pool, which says nothing about your IDE directory), so
|
|
63
|
+
> look at the directory itself: `ls ~/.claude/skills | grep '^peaks-' | head` (or the IDE dir you actually
|
|
64
|
+
> use). Empty means the CLI installed but the skills did not — the gap is recorded in
|
|
65
|
+
> `.peaks/docs/backlog.md` §2.52a.
|
|
66
|
+
|
|
52
67
|
Then, in the **Claude Code** or **Z Code** chat you already use, send an **explicit slash command** (the leading slash is what triggers peaks-loop — a plain sentence won't always route here):
|
|
53
68
|
|
|
54
69
|
```
|
|
@@ -140,7 +155,7 @@ Every lane opens with **one slash command**.
|
|
|
140
155
|
|
|
141
156
|
| | |
|
|
142
157
|
| --- | --- |
|
|
143
|
-
| **Latest** | [](https://www.npmjs.com/package/peaks-loop) — 4.
|
|
158
|
+
| **Latest** | [](https://www.npmjs.com/package/peaks-loop) — 4.1.1 (2026-10-05) |
|
|
144
159
|
| **Domains** | Code (`peaks-code`) · Content (`peaks-content`) · Project health (`peaks-doctor`) · Issue sweep (`peaks-issue-fix-orchestrator`) · Custom SOP (`peaks-sop`) · Cross-domain primitives (`peaks-solo` dispatcher · `peaks-resume` · `peaks-status` · `peaks-test` · `peaks-slice-decompose`) |
|
|
145
160
|
| **Sediment pool** | `~/.peaks/` local pool · twice-clean runs auto-promote to a bee · broken runs come back for you to redefine · the bee grows with your taste |
|
|
146
161
|
| **Test suite** | 285+ cases · 4 packages (peaks-loop / peaks-loop-mut / peaks-loop-shared-channel / peaks-loop-shared) · **0 timeouts** · 14 BDD caller-binding edge cases |
|
package/README.md
CHANGED
|
@@ -49,6 +49,20 @@ peaks-loop 是一个 **Loop Engineering 结晶系统**,不是工作流工具 —
|
|
|
49
49
|
npm i -g peaks-loop
|
|
50
50
|
```
|
|
51
51
|
|
|
52
|
+
> **npm 11+ 请带一个 flag**:安装时 npm 会对"未经 allowlist 覆盖"的 install 脚本打一条 `install-scripts` 警告。**当前版本(npm 11.19)仍然会执行**这些脚本,所以装完就能用;但 npm 已明说这个默认值即将翻成"默认不执行"。为了不在那一天静默装到一个"有 CLI、没有 skills"的状态,请写全:
|
|
53
|
+
>
|
|
54
|
+
> ```bash
|
|
55
|
+
> npm i -g --allow-scripts=peaks-loop peaks-loop
|
|
56
|
+
> ```
|
|
57
|
+
>
|
|
58
|
+
> 装好后如果怀疑 skills 没落上,**目前没有一条 CLI 命令报告这个状态**(`peaks skill search` 查的是包内技能池,与 IDE 目录里装了没装无关),所以只能看目录本身:
|
|
59
|
+
>
|
|
60
|
+
> ```bash
|
|
61
|
+
> ls ~/.claude/skills | grep '^peaks-' | head # 或你实际在用的 IDE 目录
|
|
62
|
+
> ```
|
|
63
|
+
>
|
|
64
|
+
> 空目录 = skills 没装上(CLI 本身仍可用)。这个"报告不出自己装了没装"的缺口记在 `.peaks/docs/backlog.md` §2.52a。
|
|
65
|
+
|
|
52
66
|
装好之后,在你已经用的 **Claude Code** 或 **Z Code** 对话框里发一条**显式命令**(必须以斜杠开头,才会触发 peaks-loop):
|
|
53
67
|
|
|
54
68
|
```
|
|
@@ -140,7 +154,7 @@ npm i -g peaks-loop
|
|
|
140
154
|
|
|
141
155
|
| | |
|
|
142
156
|
| --- | --- |
|
|
143
|
-
| **最新版本** | [](https://www.npmjs.com/package/peaks-loop) — 4.
|
|
157
|
+
| **最新版本** | [](https://www.npmjs.com/package/peaks-loop) — 4.1.1(2026-10-05) |
|
|
144
158
|
| **覆盖域** | 代码(`peaks-code`) · 内容(`peaks-content`) · 项目健康(`peaks-doctor`) · 批量修 issue(`peaks-issue-fix-orchestrator`) · 自定义 SOP(`peaks-sop`) · 通用原语(`peaks-solo` 分诊 / `peaks-resume` 续 / `peaks-status` 看 / `peaks-test` 测 / `peaks-slice-decompose` 切片) |
|
|
145
159
|
| **沉淀池** | `~/.peaks/` 本地池 · 跑两次自动晋升成 bee · 跑翻车让你重定义 · bee 跟着你的口味长 |
|
|
146
160
|
| **测试套件** | 1096 cases · 4 packages (peaks-loop 1015 / runtime 39 / mut 22 / shared-channel 20) · **CI 首次全绿**(ubuntu + windows) · 14 BDD caller-binding coverage |
|
|
@@ -36,7 +36,20 @@ module.exports = {
|
|
|
36
36
|
parserOptions: {
|
|
37
37
|
ecmaVersion: 2022,
|
|
38
38
|
sourceType: 'module',
|
|
39
|
-
|
|
39
|
+
// 2026-09-19 rid-s1-lint-config-coverage: the root tsconfig.json includes
|
|
40
|
+
// only src/** and tests/**, so every file under scripts/** and
|
|
41
|
+
// packages/** belonged to NO project and eslint failed 71 of them with
|
|
42
|
+
// "The file was not found in any of the provided project(s)" BEFORE
|
|
43
|
+
// parsing them. That is not a lint result — it is a hole, and it also
|
|
44
|
+
// masked real syntax errors (a .mjs with a broken string literal was found
|
|
45
|
+
// by prettier only, because eslint never reached the parser). The
|
|
46
|
+
// ESLint-only project below covers those directories without changing what
|
|
47
|
+
// `tsc -p tsconfig.json` sees.
|
|
48
|
+
project: [
|
|
49
|
+
'./tsconfig.json',
|
|
50
|
+
'./tsconfig.build.json',
|
|
51
|
+
'./config/eslint/tsconfig.lint.json'
|
|
52
|
+
],
|
|
40
53
|
// 2026-08-06 lint-dogfood cycle-3 follow-up: the runner now uses
|
|
41
54
|
// `node node_modules/eslint/bin/eslint.js` from the repo root, so
|
|
42
55
|
// tsconfigRootDir must be the repo root (one level above config/).
|
|
@@ -52,16 +65,34 @@ module.exports = {
|
|
|
52
65
|
'plugin:@typescript-eslint/recommended-type-checked'
|
|
53
66
|
],
|
|
54
67
|
settings: {},
|
|
68
|
+
// 2026-09-19 rid-s1-lint-config-coverage: every pattern here used to be a
|
|
69
|
+
// bare trailing-slash name. ESLint reads those the way .gitignore does — a
|
|
70
|
+
// trailing slash with no inner slash matches a directory of that name at ANY
|
|
71
|
+
// depth — so `'skills/'` also swallowed `src/services/skills/`, `src/skills/`
|
|
72
|
+
// and two test directories: 33 tracked files, production source among them,
|
|
73
|
+
// silently reported as "0 findings" without ever being parsed. A LEADING
|
|
74
|
+
// slash anchors a pattern to the config's base path (the repo root), which
|
|
75
|
+
// is what these were always meant to mean: the repo-root prose / artifact /
|
|
76
|
+
// tooling directories.
|
|
77
|
+
//
|
|
78
|
+
// A leading slash alone is not enough for generated output, though: a
|
|
79
|
+
// per-package `dist/`, `coverage/` or `node_modules/` must still stay out of
|
|
80
|
+
// a directory walk, so those three are kept at any depth explicitly.
|
|
81
|
+
// `**/node_modules/` in particular must be spelled out, not left to
|
|
82
|
+
// eslint's own default ignore of `/**/node_modules/*`: a config that sets
|
|
83
|
+
// `ignorePatterns` REPLACES that default rather than adding to it.
|
|
55
84
|
ignorePatterns: [
|
|
56
|
-
'
|
|
57
|
-
'
|
|
58
|
-
'
|
|
59
|
-
'
|
|
60
|
-
'
|
|
61
|
-
'
|
|
62
|
-
'
|
|
63
|
-
'
|
|
64
|
-
'
|
|
85
|
+
'/dist/',
|
|
86
|
+
'/coverage/',
|
|
87
|
+
'/output-styles/',
|
|
88
|
+
'/skills/',
|
|
89
|
+
'/agents/',
|
|
90
|
+
'/bin/',
|
|
91
|
+
'/scratch/',
|
|
92
|
+
'/examples/',
|
|
93
|
+
'**/dist/',
|
|
94
|
+
'**/coverage/',
|
|
95
|
+
'**/node_modules/'
|
|
65
96
|
],
|
|
66
97
|
rules: {
|
|
67
98
|
// L1 (eslint built-in) — always on, no plugin package required.
|
|
@@ -113,9 +144,28 @@ module.exports = {
|
|
|
113
144
|
{ prefer: 'type-imports' }
|
|
114
145
|
],
|
|
115
146
|
'@typescript-eslint/no-non-null-assertion': 'warn',
|
|
116
|
-
|
|
147
|
+
// 2026-09-19 rid-s1-lint-config-coverage: `@typescript-eslint/no-implicit-any`
|
|
148
|
+
// was REMOVED here, not renamed. It does not exist in
|
|
149
|
+
// @typescript-eslint/eslint-plugin@8.66.0 (134 rules; verified against the
|
|
150
|
+
// shipped plugin's rule index) — typescript-eslint dropped it in v6 — and
|
|
151
|
+
// eslint answered every parsed file with 2 severity-2
|
|
152
|
+
// "Definition for rule ... was not found" messages, 2390 across the repo.
|
|
153
|
+
// Besides inflating the count, that made "a NEW file must be lint- and
|
|
154
|
+
// commit-able" unsatisfiable, since no new file could avoid those two.
|
|
155
|
+
// Its intent is already covered twice over, so nothing needs to replace it:
|
|
156
|
+
// - tsc: this repo builds with `strict: true` (root tsconfig.json), which
|
|
157
|
+
// turns on noImplicitAny at the compiler level;
|
|
158
|
+
// - eslint: `plugin:@typescript-eslint/recommended-type-checked` above
|
|
159
|
+
// already enables the implicit-any surface (`no-unsafe-assignment`,
|
|
160
|
+
// `-argument`, `-call`, `-member-access`, `-return`, …) plus
|
|
161
|
+
// `no-explicit-any`, which is re-declared as `warn` just above.
|
|
117
162
|
// G-lint-1 §二 enum → as const: warn-only (escape hatch preserved).
|
|
118
|
-
|
|
163
|
+
// NOTE: this must stay the CORE `no-restricted-syntax`. The selector below
|
|
164
|
+
// is an ESLint-core selector, and core is where the rule lives —
|
|
165
|
+
// `@typescript-eslint/no-restricted-syntax` does not exist in
|
|
166
|
+
// @typescript-eslint/eslint-plugin@8.66.0 and produced the same phantom
|
|
167
|
+
// "Definition for rule ... was not found" on every file.
|
|
168
|
+
'no-restricted-syntax': [
|
|
119
169
|
'warn',
|
|
120
170
|
{
|
|
121
171
|
selector: 'TSEnumDeclaration',
|
|
@@ -127,7 +177,42 @@ module.exports = {
|
|
|
127
177
|
// Use ESLint built-in `no-duplicate-imports` — `@typescript-eslint/no-duplicate-imports`
|
|
128
178
|
// does NOT exist in @typescript-eslint/eslint-plugin@8.66.0 (broken ruleId, all 820
|
|
129
179
|
// phantom entries were `Definition for rule ... was not found`). PRD-002b 2026-08-07.
|
|
130
|
-
'no-duplicate-imports': 'warn'
|
|
180
|
+
'no-duplicate-imports': 'warn',
|
|
181
|
+
|
|
182
|
+
// 2026-09-20 rid-s9-require-await-decision — DELIBERATE divergence, measured.
|
|
183
|
+
//
|
|
184
|
+
// INHERITED, not chosen. This rule arrives via
|
|
185
|
+
// `plugin:@typescript-eslint/recommended-type-checked` in `extends` above;
|
|
186
|
+
// nothing in this file ever turned it on. Its inherited default is `error`.
|
|
187
|
+
// An absent line here would therefore NOT be "we never enabled it" — it
|
|
188
|
+
// would keep firing at error severity, silently. That is why the override is
|
|
189
|
+
// written out explicitly rather than left out.
|
|
190
|
+
//
|
|
191
|
+
// WHY OFF. Measured over all 291 findings in this repo, classified 291/291
|
|
192
|
+
// by AST: 259 (89%) are the rule being wrong, not debt. `async` here is
|
|
193
|
+
// load-bearing in two ways the rule does not model —
|
|
194
|
+
// (a) it is the mechanism that moves a `throw` out of the synchronous path
|
|
195
|
+
// and into the rejection channel (19 src sites), and
|
|
196
|
+
// (b) it IS the interface contract (`readonly execute: (ctx) => Promise<…>`,
|
|
197
|
+
// with the implementation written `execute: async () => ({…})`).
|
|
198
|
+
// The rule also does NOT exempt an explicit `Promise<…>` annotation — the
|
|
199
|
+
// declared type is consulted only by its autofix suggestion, to rewrite
|
|
200
|
+
// `Promise<T>` → `T`. Acting on that suggestion is a tsc error (measured:
|
|
201
|
+
// stripping `async` from the 314 candidate sites produced 363 tsc errors),
|
|
202
|
+
// so "just remove them" was always an interface rewrite, not a cleanup.
|
|
203
|
+
// Driving the number to zero would mean 259 knowingly-false entries inside
|
|
204
|
+
// the one ratchet axis that is supposed to mean "lint debt".
|
|
205
|
+
//
|
|
206
|
+
// WHAT REPLACES IT. The residual signal — "a later `await` added at the top
|
|
207
|
+
// of this function would silently make everything below it asynchronous" —
|
|
208
|
+
// is carried by an AST + tsc-type-checker guard at
|
|
209
|
+
// `tests/unit/standards/gratuitous-async-guard.test.ts`, which runs with
|
|
210
|
+
// `pnpm test:unit` and is pinned to exactly 14 sites. The 18 genuinely
|
|
211
|
+
// gratuitous `it`/`test` `async` callbacks in `tests/` were removed.
|
|
212
|
+
//
|
|
213
|
+
// Full evidence, the probe table, and the "when to reconsider" triggers:
|
|
214
|
+
// `.peaks/docs/lint-rule-divergences.md` § `@typescript-eslint/require-await`.
|
|
215
|
+
'@typescript-eslint/require-await': 'off'
|
|
131
216
|
},
|
|
132
217
|
overrides: [
|
|
133
218
|
{
|
|
@@ -138,6 +223,66 @@ module.exports = {
|
|
|
138
223
|
'max-lines-per-function': 'off',
|
|
139
224
|
'@typescript-eslint/no-explicit-any': 'off'
|
|
140
225
|
}
|
|
226
|
+
},
|
|
227
|
+
// 2026-09-20 rid-s11-js-type-aware-exemption — a type-aware rule family
|
|
228
|
+
// applied to files the project deliberately refuses to type-check.
|
|
229
|
+
// DELIBERATE divergence, measured; not a blanket rule switch-off.
|
|
230
|
+
//
|
|
231
|
+
// THE CONTRADICTION. `config/eslint/tsconfig.lint.json` sets
|
|
232
|
+
// `allowJs: true` together with `checkJs: false`. Those two are one
|
|
233
|
+
// deliberate statement: a JS file is *parsed* (so it can be linted at all)
|
|
234
|
+
// and is deliberately NOT type-checked — no types are ever established for
|
|
235
|
+
// it. `no-unsafe-*` is a *type-aware* family; every finding it reports is
|
|
236
|
+
// the answer to "what type does this expression have?". Asking that of a
|
|
237
|
+
// property the configuration explicitly declines to establish is not
|
|
238
|
+
// strictness — it is a self-contradiction. Where there are no types, `any`
|
|
239
|
+
// is not a defect the author introduced; it is the only answer the compiler
|
|
240
|
+
// was ever allowed to give.
|
|
241
|
+
//
|
|
242
|
+
// MEASURED REACH (census by file extension, taken before this entry
|
|
243
|
+
// existed; 1273 files in the gate's scope, 1036 findings on JS). Exactly
|
|
244
|
+
// five ruleIds account for 956 of those 1036, on 23 files:
|
|
245
|
+
// no-unsafe-member-access 389, no-unsafe-assignment 214,
|
|
246
|
+
// no-unsafe-argument 156, no-unsafe-call 146, no-unsafe-return 51.
|
|
247
|
+
// No other `no-unsafe-*` rule fires on JS anywhere in the repo. The globs
|
|
248
|
+
// below are the four JS extensions: 31 `.mjs` + 1 `.js` exist today, 0
|
|
249
|
+
// `.cjs` and 0 `.jsx`; the latter two are carried so a new file cannot
|
|
250
|
+
// reopen this hole by being written with a different extension.
|
|
251
|
+
//
|
|
252
|
+
// WHAT IS *NOT* SWITCHED OFF — the reach of this entry is the whole point:
|
|
253
|
+
// - `.ts`/`.tsx`/`.mts`/`.cts` are not matched. The 538 type-aware
|
|
254
|
+
// findings there are real: the root tsconfig.json runs `strict: true`,
|
|
255
|
+
// so a type question has a genuine answer to reject. TS counts must not
|
|
256
|
+
// move by one.
|
|
257
|
+
// - `no-unsafe-finally` is deliberately ABSENT from the list. It is the
|
|
258
|
+
// ESLint *core* rule of that name (control flow out of a `finally`
|
|
259
|
+
// block) — NOT `@typescript-eslint/no-unsafe-finally` — and it needs no
|
|
260
|
+
// type information. It fires twice on JS here, and both are genuine.
|
|
261
|
+
// - every rule that is not type-aware keeps firing on JS (74 findings):
|
|
262
|
+
// no-magic-numbers, complexity, max-lines-per-function, max-lines,
|
|
263
|
+
// no-unused-vars, no-duplicate-imports, prefer-const,
|
|
264
|
+
// no-inner-declarations, no-require-imports.
|
|
265
|
+
// - the type-aware rules OUTSIDE this family also keep firing (6
|
|
266
|
+
// findings): only-throw-error, restrict-plus-operands,
|
|
267
|
+
// no-floating-promises, prefer-promise-reject-errors. They are
|
|
268
|
+
// type-aware but not `no-unsafe-*`, so this authorisation does not reach
|
|
269
|
+
// them. Widening these globs to cover them is a different decision that
|
|
270
|
+
// needs its own evidence.
|
|
271
|
+
// - `no-explicit-any` does NOT fire on JS (0 findings, measured — it does
|
|
272
|
+
// not appear in the JS census at all). JS has no type annotations, so
|
|
273
|
+
// there is no place to write `any` and nothing for the rule to match.
|
|
274
|
+
//
|
|
275
|
+
// Reasoning, the census, and the "when to reconsider" triggers:
|
|
276
|
+
// `.peaks/docs/lint-rule-divergences.md`
|
|
277
|
+
{
|
|
278
|
+
files: ['**/*.js', '**/*.jsx', '**/*.cjs', '**/*.mjs'],
|
|
279
|
+
rules: {
|
|
280
|
+
'@typescript-eslint/no-unsafe-argument': 'off',
|
|
281
|
+
'@typescript-eslint/no-unsafe-assignment': 'off',
|
|
282
|
+
'@typescript-eslint/no-unsafe-call': 'off',
|
|
283
|
+
'@typescript-eslint/no-unsafe-member-access': 'off',
|
|
284
|
+
'@typescript-eslint/no-unsafe-return': 'off'
|
|
285
|
+
}
|
|
141
286
|
}
|
|
142
287
|
]
|
|
143
288
|
};
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// ESLint-ONLY tsconfig — see config/eslint/.peaks-rules.cjs. Never run tsc on
|
|
2
|
+
// this file; it exists purely so parserOptions.project can see every file eslint
|
|
3
|
+
// is asked to lint. The root tsconfig.json intentionally includes only src/**
|
|
4
|
+
// and tests/**, so scripts/** and packages/** belonged to NO project at all:
|
|
5
|
+
// eslint failed 71 of those files with "The file was not found in any of the
|
|
6
|
+
// provided project(s)" BEFORE parsing them, which is not a lint result but a
|
|
7
|
+
// hole — and one that also masked real syntax errors (a .mjs with a broken
|
|
8
|
+
// string literal was ever only caught by prettier, because eslint never reached
|
|
9
|
+
// the parser).
|
|
10
|
+
//
|
|
11
|
+
// allowJs is what lets the .mjs/.js tools under scripts/ into the program.
|
|
12
|
+
//
|
|
13
|
+
// The explicit `files` list below is NOT redundant. TypeScript's
|
|
14
|
+
// extension-priority pass groups extensions as
|
|
15
|
+
// [[.ts,.tsx,.d.ts,.js,.jsx], [.cts,.d.cts,.cjs], [.mts,.d.mts,.mjs]]
|
|
16
|
+
// and drops a file when a HIGHER-priority sibling exists; it carves out
|
|
17
|
+
// .js/.jsx shadowed by .d.ts, but NOT .mjs shadowed by .d.mts. So a wildcard
|
|
18
|
+
// include silently loses these four. Files named literally bypass that pass.
|
|
19
|
+
// Any new <name>.mjs + <name>.d.mts pair under scripts/ must be added here —
|
|
20
|
+
// tests/unit/lint/eslint-rules-config-coverage.test.ts asserts this program
|
|
21
|
+
// contains every tracked in-scope file, so an omission fails a test instead of
|
|
22
|
+
// silently reopening the coverage hole.
|
|
23
|
+
{
|
|
24
|
+
"extends": "../../tsconfig.json",
|
|
25
|
+
"compilerOptions": {
|
|
26
|
+
"allowJs": true,
|
|
27
|
+
"checkJs": false,
|
|
28
|
+
"noEmit": true
|
|
29
|
+
},
|
|
30
|
+
"files": [
|
|
31
|
+
"../../scripts/_release-shared.mjs",
|
|
32
|
+
"../../scripts/release-pack.mjs",
|
|
33
|
+
"../../scripts/dist-freshness.mjs",
|
|
34
|
+
"../../scripts/install-skills.mjs",
|
|
35
|
+
"../../scripts/packages-build-prerequisite.mjs",
|
|
36
|
+
"../../scripts/verify-version-parity.mjs"
|
|
37
|
+
],
|
|
38
|
+
"include": [
|
|
39
|
+
"../../src/**/*",
|
|
40
|
+
"../../tests/**/*",
|
|
41
|
+
"../../scripts/**/*",
|
|
42
|
+
"../../packages/*/src/**/*",
|
|
43
|
+
"../../packages/*/tests/**/*",
|
|
44
|
+
"../../packages/*/vitest.config.ts"
|
|
45
|
+
],
|
|
46
|
+
"exclude": ["../../dist", "../../node_modules", "../../tests/fixtures/bdd-reporter-tmp"]
|
|
47
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The runtime shape of the JSON envelope `peaks … --json` writes to stdout.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS (S12, 2026-09-20). The CLI envelope was the single largest
|
|
5
|
+
* cluster of unvalidated `JSON.parse` in the repo: 21 test files do
|
|
6
|
+
* `JSON.parse(<spawn result>.stdout)` and then read `out.ok` / `out.code` /
|
|
7
|
+
* `out.data.*`. Because `JSON.parse` returns `any`, none of those reads was
|
|
8
|
+
* checked against anything, and each one is a `no-unsafe-*` finding. Measured
|
|
9
|
+
* at the S12 census: ~196 of the ~448 findings in the R1 root.
|
|
10
|
+
*
|
|
11
|
+
* WHAT IS VALIDATED, AND WHAT IS NOT — stated plainly, because the difference
|
|
12
|
+
* is the whole point. The envelope HEAD is always validated: `ok` must be a
|
|
13
|
+
* boolean; `warnings` / `nextActions`, when present, arrays of strings; `code`
|
|
14
|
+
* / `message` / `errorId`, when present, strings. The PAYLOAD (`data`) is
|
|
15
|
+
* validated only as "a JSON object with string keys" — there is no single
|
|
16
|
+
* payload schema, because `data` is `T` in `ResultEnvelope<T>` and every
|
|
17
|
+
* command has its own shape. That is a measured finding of S12, not an
|
|
18
|
+
* oversight: R1 does not collapse onto one schema.
|
|
19
|
+
*
|
|
20
|
+
* A caller that reads `data.<field>` at depth >= 2 therefore names the payload
|
|
21
|
+
* shape itself, through the same validating primitive:
|
|
22
|
+
*
|
|
23
|
+
* parseCliEnvelopeWith(raw, EvolutionStatusPayload)
|
|
24
|
+
*
|
|
25
|
+
* The alternative — one generic helper with a type parameter and no schema —
|
|
26
|
+
* is the `as T` costume S12 forbids. Here the type parameter is a SCHEMA, so
|
|
27
|
+
* the returned type is derived from a check that actually ran.
|
|
28
|
+
*/
|
|
29
|
+
import { z } from 'zod';
|
|
30
|
+
declare const baseEnvelopeSchema: z.ZodObject<{
|
|
31
|
+
ok: z.ZodBoolean;
|
|
32
|
+
command: z.ZodOptional<z.ZodString>;
|
|
33
|
+
data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
|
|
34
|
+
warnings: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
35
|
+
nextActions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
36
|
+
code: z.ZodOptional<z.ZodString>;
|
|
37
|
+
message: z.ZodOptional<z.ZodString>;
|
|
38
|
+
errorId: z.ZodOptional<z.ZodString>;
|
|
39
|
+
}, z.core.$loose>;
|
|
40
|
+
/**
|
|
41
|
+
* Build the envelope schema with a payload schema — for the callers that read
|
|
42
|
+
* `data.<field>` at depth >= 2 and can say what they expect there.
|
|
43
|
+
*/
|
|
44
|
+
export declare function cliEnvelopeSchema<S extends z.ZodType>(payload: S): z.ZodObject<{
|
|
45
|
+
ok: z.ZodBoolean;
|
|
46
|
+
command: z.ZodOptional<z.ZodString>;
|
|
47
|
+
data: S;
|
|
48
|
+
warnings: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
49
|
+
nextActions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
50
|
+
code: z.ZodOptional<z.ZodString>;
|
|
51
|
+
message: z.ZodOptional<z.ZodString>;
|
|
52
|
+
errorId: z.ZodOptional<z.ZodString>;
|
|
53
|
+
}, z.core.$loose>;
|
|
54
|
+
/**
|
|
55
|
+
* `ok` + `data` (any JSON object) + the optional head fields.
|
|
56
|
+
*/
|
|
57
|
+
export type CliEnvelope = z.infer<typeof baseEnvelopeSchema>;
|
|
58
|
+
/**
|
|
59
|
+
* Parse a CLI stdout envelope, validating the head. Throws when the text is
|
|
60
|
+
* not JSON, or is JSON that is not an envelope — a caller that fed this
|
|
61
|
+
* something else wants to know, not to read `undefined.ok` further down.
|
|
62
|
+
*/
|
|
63
|
+
export declare function parseCliEnvelope(raw: string): CliEnvelope;
|
|
64
|
+
/**
|
|
65
|
+
* Parse a CLI stdout envelope for a caller that reads `data.<field>` at depth
|
|
66
|
+
* >= 2, validating that field's own shape as well. The caller names the shape;
|
|
67
|
+
* nothing is asserted on its behalf.
|
|
68
|
+
*/
|
|
69
|
+
export declare function parseCliEnvelopeWith<S extends z.ZodType>(raw: string, payload: S): ({
|
|
70
|
+
ok: z.ZodBoolean;
|
|
71
|
+
command: z.ZodOptional<z.ZodString>;
|
|
72
|
+
data: S;
|
|
73
|
+
warnings: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
74
|
+
nextActions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
75
|
+
code: z.ZodOptional<z.ZodString>;
|
|
76
|
+
message: z.ZodOptional<z.ZodString>;
|
|
77
|
+
errorId: z.ZodOptional<z.ZodString>;
|
|
78
|
+
} extends infer T_1 extends z.core.$ZodLooseShape ? { -readonly [k in keyof T_1 as {
|
|
79
|
+
ok: z.ZodBoolean;
|
|
80
|
+
command: z.ZodOptional<z.ZodString>;
|
|
81
|
+
data: S;
|
|
82
|
+
warnings: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
83
|
+
nextActions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
84
|
+
code: z.ZodOptional<z.ZodString>;
|
|
85
|
+
message: z.ZodOptional<z.ZodString>;
|
|
86
|
+
errorId: z.ZodOptional<z.ZodString>;
|
|
87
|
+
}[k] extends {
|
|
88
|
+
_zod: {
|
|
89
|
+
optout: "optional";
|
|
90
|
+
};
|
|
91
|
+
} ? never : k]: T_1[k]["_zod"]["output"]; } : never) & ({
|
|
92
|
+
ok: z.ZodBoolean;
|
|
93
|
+
command: z.ZodOptional<z.ZodString>;
|
|
94
|
+
data: S;
|
|
95
|
+
warnings: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
96
|
+
nextActions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
97
|
+
code: z.ZodOptional<z.ZodString>;
|
|
98
|
+
message: z.ZodOptional<z.ZodString>;
|
|
99
|
+
errorId: z.ZodOptional<z.ZodString>;
|
|
100
|
+
} extends infer T_2 extends z.core.$ZodLooseShape ? { -readonly [k_1 in keyof T_2 as {
|
|
101
|
+
ok: z.ZodBoolean;
|
|
102
|
+
command: z.ZodOptional<z.ZodString>;
|
|
103
|
+
data: S;
|
|
104
|
+
warnings: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
105
|
+
nextActions: z.ZodOptional<z.ZodArray<z.ZodString>>;
|
|
106
|
+
code: z.ZodOptional<z.ZodString>;
|
|
107
|
+
message: z.ZodOptional<z.ZodString>;
|
|
108
|
+
errorId: z.ZodOptional<z.ZodString>;
|
|
109
|
+
}[k_1] extends {
|
|
110
|
+
_zod: {
|
|
111
|
+
optout: "optional";
|
|
112
|
+
};
|
|
113
|
+
} ? k_1 : never]?: T_2[k_1]["_zod"]["output"]; } : never) & Record<string, unknown> extends infer T ? { [K in keyof T]: T[K]; } : never;
|
|
114
|
+
export {};
|
|
@@ -0,0 +1,85 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The runtime shape of the JSON envelope `peaks … --json` writes to stdout.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS (S12, 2026-09-20). The CLI envelope was the single largest
|
|
5
|
+
* cluster of unvalidated `JSON.parse` in the repo: 21 test files do
|
|
6
|
+
* `JSON.parse(<spawn result>.stdout)` and then read `out.ok` / `out.code` /
|
|
7
|
+
* `out.data.*`. Because `JSON.parse` returns `any`, none of those reads was
|
|
8
|
+
* checked against anything, and each one is a `no-unsafe-*` finding. Measured
|
|
9
|
+
* at the S12 census: ~196 of the ~448 findings in the R1 root.
|
|
10
|
+
*
|
|
11
|
+
* WHAT IS VALIDATED, AND WHAT IS NOT — stated plainly, because the difference
|
|
12
|
+
* is the whole point. The envelope HEAD is always validated: `ok` must be a
|
|
13
|
+
* boolean; `warnings` / `nextActions`, when present, arrays of strings; `code`
|
|
14
|
+
* / `message` / `errorId`, when present, strings. The PAYLOAD (`data`) is
|
|
15
|
+
* validated only as "a JSON object with string keys" — there is no single
|
|
16
|
+
* payload schema, because `data` is `T` in `ResultEnvelope<T>` and every
|
|
17
|
+
* command has its own shape. That is a measured finding of S12, not an
|
|
18
|
+
* oversight: R1 does not collapse onto one schema.
|
|
19
|
+
*
|
|
20
|
+
* A caller that reads `data.<field>` at depth >= 2 therefore names the payload
|
|
21
|
+
* shape itself, through the same validating primitive:
|
|
22
|
+
*
|
|
23
|
+
* parseCliEnvelopeWith(raw, EvolutionStatusPayload)
|
|
24
|
+
*
|
|
25
|
+
* The alternative — one generic helper with a type parameter and no schema —
|
|
26
|
+
* is the `as T` costume S12 forbids. Here the type parameter is a SCHEMA, so
|
|
27
|
+
* the returned type is derived from a check that actually ran.
|
|
28
|
+
*/
|
|
29
|
+
import { z } from 'zod';
|
|
30
|
+
import { parseJson } from '../shared/json-parse.js';
|
|
31
|
+
const anyJsonObject = z.record(z.string(), z.unknown());
|
|
32
|
+
/** The head of the envelope, with `data` checked by whichever schema is passed. */
|
|
33
|
+
function envelopeWith(data) {
|
|
34
|
+
// `looseObject` keeps every key the schema does not name, matching
|
|
35
|
+
// `JSON.parse`'s old behaviour of handing back every key: validation is not
|
|
36
|
+
// licence to silently drop fields.
|
|
37
|
+
return z.looseObject({
|
|
38
|
+
ok: z.boolean(),
|
|
39
|
+
// `command` is the one head field that is genuinely optional: the
|
|
40
|
+
// `printCliEnvelope` shim (`src/cli/cli-helpers.ts`, used only by
|
|
41
|
+
// `sediment-commands.ts`) writes `{ ok, data }` / `{ ok, error }`, and
|
|
42
|
+
// `_super.ts` writes `{ ok, data, warnings, nextActions }`.
|
|
43
|
+
command: z.string().optional(),
|
|
44
|
+
data,
|
|
45
|
+
// `warnings` / `nextActions` are OPTIONAL, and that is a MEASURED fact,
|
|
46
|
+
// not a convenience. S12 first made them required on the theory that
|
|
47
|
+
// "every emitter writes them" — then the integration suite proved the
|
|
48
|
+
// theory false: `peaks workspace clean --json`
|
|
49
|
+
// (`src/cli/commands/workspace/clean-command.ts`) writes `{ ok, data }`
|
|
50
|
+
// and nothing else. So the premise this slice inherited — "the CLI stdout
|
|
51
|
+
// envelope has a fixed shape `{ ok, command, data, warnings, nextActions }`"
|
|
52
|
+
// — is wrong as stated; `ok` and `data` are the only universal members.
|
|
53
|
+
// A caller that needs `nextActions` must say so — `program.test.ts` names
|
|
54
|
+
// it in a schema rather than looping over a possibly-absent array.
|
|
55
|
+
warnings: z.array(z.string()).optional(),
|
|
56
|
+
nextActions: z.array(z.string()).optional(),
|
|
57
|
+
code: z.string().optional(),
|
|
58
|
+
message: z.string().optional(),
|
|
59
|
+
errorId: z.string().optional()
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
const baseEnvelopeSchema = envelopeWith(anyJsonObject);
|
|
63
|
+
/**
|
|
64
|
+
* Build the envelope schema with a payload schema — for the callers that read
|
|
65
|
+
* `data.<field>` at depth >= 2 and can say what they expect there.
|
|
66
|
+
*/
|
|
67
|
+
export function cliEnvelopeSchema(payload) {
|
|
68
|
+
return envelopeWith(payload);
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Parse a CLI stdout envelope, validating the head. Throws when the text is
|
|
72
|
+
* not JSON, or is JSON that is not an envelope — a caller that fed this
|
|
73
|
+
* something else wants to know, not to read `undefined.ok` further down.
|
|
74
|
+
*/
|
|
75
|
+
export function parseCliEnvelope(raw) {
|
|
76
|
+
return parseJson(raw, baseEnvelopeSchema);
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Parse a CLI stdout envelope for a caller that reads `data.<field>` at depth
|
|
80
|
+
* >= 2, validating that field's own shape as well. The caller names the shape;
|
|
81
|
+
* nothing is asserted on its behalf.
|
|
82
|
+
*/
|
|
83
|
+
export function parseCliEnvelopeWith(raw, payload) {
|
|
84
|
+
return parseJson(raw, cliEnvelopeSchema(payload));
|
|
85
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Command } from 'commander';
|
|
1
|
+
import type { Command } from 'commander';
|
|
2
2
|
import { getErrorMessage, ok, redactSensitiveErrorMessage, type ResultEnvelope } from 'peaks-loop-shared/result';
|
|
3
3
|
import type { ArtifactProvider, GuidedArtifactSetup } from '../services/artifacts/artifact-service.js';
|
|
4
4
|
import type { ConfigLayer } from '../services/config/config-service.js';
|
package/dist/cli/cli-helpers.js
CHANGED
|
@@ -44,7 +44,9 @@ export function addJsonOption(command) {
|
|
|
44
44
|
return command.option('--json', 'print machine-readable JSON envelope');
|
|
45
45
|
}
|
|
46
46
|
export function failUnsupportedNonDryRun(io, command, asJson) {
|
|
47
|
-
printResult(io, fail(command, 'UNSUPPORTED_NON_DRY_RUN', 'Only dry-run planning is supported', {}, [
|
|
47
|
+
printResult(io, fail(command, 'UNSUPPORTED_NON_DRY_RUN', 'Only dry-run planning is supported', {}, [
|
|
48
|
+
'Rerun with --dry-run or omit --no-dry-run'
|
|
49
|
+
]), asJson);
|
|
48
50
|
process.exitCode = 1;
|
|
49
51
|
}
|
|
50
52
|
export function printCliEnvelope(io, r) {
|
|
@@ -152,10 +154,10 @@ export function isArtifactProvider(value) {
|
|
|
152
154
|
return value === 'github' || value === 'gitlab';
|
|
153
155
|
}
|
|
154
156
|
export function isArtifactSetupStep(value) {
|
|
155
|
-
return value === 'detect' || value === 'configure' || value === 'validate' || value === 'complete';
|
|
157
|
+
return (value === 'detect' || value === 'configure' || value === 'validate' || value === 'complete');
|
|
156
158
|
}
|
|
157
159
|
export function isArtifactRepoSegment(value) {
|
|
158
|
-
return /^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(value) && !value.includes('..') && !value.endsWith('.');
|
|
160
|
+
return (/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(value) && !value.includes('..') && !value.endsWith('.'));
|
|
159
161
|
}
|
|
160
162
|
export function parseConfigLayer(value) {
|
|
161
163
|
if (value === undefined) {
|
|
@@ -164,7 +166,9 @@ export function parseConfigLayer(value) {
|
|
|
164
166
|
return value === 'user' || value === 'project' ? value : null;
|
|
165
167
|
}
|
|
166
168
|
export function printInvalidConfigLayer(io, command, asJson) {
|
|
167
|
-
printResult(io, fail(command, 'INVALID_CONFIG_LAYER', 'Config layer must be user or project', {}, [
|
|
169
|
+
printResult(io, fail(command, 'INVALID_CONFIG_LAYER', 'Config layer must be user or project', {}, [
|
|
170
|
+
'Use --layer user or --layer project'
|
|
171
|
+
]), asJson);
|
|
168
172
|
process.exitCode = 1;
|
|
169
173
|
}
|
|
170
174
|
export function multipleOption(value, previous) {
|