peaks-loop 4.0.54 → 4.1.0
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 +36 -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 +85 -38
- 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/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 +47 -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 +31 -16
- package/dist/cli/commands/core/standards-command.js +55 -13
- 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 +1 -1
- package/dist/cli/commands/ecc-commands.js +8 -17
- 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 +8 -4
- 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/upgrade-commands.d.ts +1 -1
- 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 +6 -3
- 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 +67 -0
- package/dist/services/code/mode-gate.d.ts +4 -58
- package/dist/services/code/mode-gate.js +24 -60
- 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-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/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.js +3 -2
- 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/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.js +34 -22
- 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 +1 -1
- 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 +1 -37
- package/dist/services/prd/handoff-service.js +16 -148
- 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/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 +37 -0
- package/dist/services/scan/archetype-detection.js +142 -0
- package/dist/services/scan/archetype-service.js +36 -125
- 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/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/upgrade/1x-detector-service.js +5 -3
- package/dist/services/upgrade/gitignore-migrate-service.js +5 -5
- package/dist/services/upgrade/upgrade-service.js +36 -13
- 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/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 +11 -3
- 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 +305 -125
- package/scripts/sync-version.mjs +25 -8
- package/scripts/watch.mjs +8 -2
- package/skills/peaks-code/SKILL.md +1 -1
|
@@ -42,7 +42,9 @@ function readSettingsObject(serialized) {
|
|
|
42
42
|
/** The `env` object of a serialized settings file, or `undefined`. */
|
|
43
43
|
function readEnvObject(serialized) {
|
|
44
44
|
const env = readSettingsObject(serialized)?.env;
|
|
45
|
-
return typeof env === 'object' && env !== null && !Array.isArray(env)
|
|
45
|
+
return typeof env === 'object' && env !== null && !Array.isArray(env)
|
|
46
|
+
? env
|
|
47
|
+
: undefined;
|
|
46
48
|
}
|
|
47
49
|
/**
|
|
48
50
|
* The top-level keys this function's template is allowed to DECIDE. Every other
|
|
@@ -156,8 +158,8 @@ const PEAKS_GITIGNORE_SNIPPET = [
|
|
|
156
158
|
'.claude/settings.local.json',
|
|
157
159
|
'# Offline template copy (.peaks/.claude-settings-template.json): written by',
|
|
158
160
|
'# `peaks workspace init` as a manual-recovery anchor. The source-of-truth is',
|
|
159
|
-
|
|
160
|
-
|
|
161
|
+
"# peaks-loop's own `buildClaudeSettingsLocalJson()` — NOT this committed copy.",
|
|
162
|
+
"# Gitignored so the init flow's drift-driven refresh does not show up as",
|
|
161
163
|
'# "modified" in `git status` on every release bump. Recovery path: re-run',
|
|
162
164
|
'# `peaks workspace init` to regenerate; or copy from peaks-loop source.',
|
|
163
165
|
'# Both patterns below are PROJECT-ROOT-relative, so this snippet must land',
|
|
@@ -167,13 +169,13 @@ const PEAKS_GITIGNORE_SNIPPET = [
|
|
|
167
169
|
'# `repair-exclude` / `repair-index` / pre-dispatch preflight / post-slice',
|
|
168
170
|
'# auto-refresh copies `.codegraph/config.json` here before rewriting it, so',
|
|
169
171
|
'# this file is LOCAL CHURN: a committed one is silently replaced by the next',
|
|
170
|
-
|
|
172
|
+
"# repair. Upstream's own `.codegraph/.gitignore` does not cover it (it names",
|
|
171
173
|
'# *.db / *.db-wal / *.db-shm, cache/, *.log and .dirty only) and `.codegraph/`',
|
|
172
174
|
'# is NOT ignored wholesale downstream, so without this line a consumer project',
|
|
173
175
|
'# commits a file peaks-loop rewrites under it.',
|
|
174
176
|
'#',
|
|
175
177
|
'# ONLY the backup, never `config.json` itself: upstream deliberately keeps',
|
|
176
|
-
|
|
178
|
+
"# that config committable (it is a project's include/exclude policy, and",
|
|
177
179
|
'# committing it is how a team shares it), so ignoring it would hide a file',
|
|
178
180
|
'# people mean to commit. A rollback copy is the opposite kind of file.',
|
|
179
181
|
'.codegraph/config.json.bak',
|
|
@@ -28,7 +28,10 @@ export function planRuntimeCleanup(sessions, options) {
|
|
|
28
28
|
eligible.push(s.sid);
|
|
29
29
|
}
|
|
30
30
|
else {
|
|
31
|
-
skipped.push({
|
|
31
|
+
skipped.push({
|
|
32
|
+
sid: s.sid,
|
|
33
|
+
reason: `fresh: age=${s.ageHours.toFixed(1)}h < cutoff=${cutoffHours}h`
|
|
34
|
+
});
|
|
32
35
|
}
|
|
33
36
|
}
|
|
34
37
|
return { eligible, skipped };
|
|
@@ -24,7 +24,8 @@ function rebindCurrentCallerBinding(projectRoot, sessionId) {
|
|
|
24
24
|
try {
|
|
25
25
|
callerId = resolveCallerProjection({ projectRoot, env: process.env }).callerId;
|
|
26
26
|
}
|
|
27
|
-
catch {
|
|
27
|
+
catch {
|
|
28
|
+
// TODO(g2): legacy silent catch — grace: 1 minor release (v2.14.0)
|
|
28
29
|
return false;
|
|
29
30
|
}
|
|
30
31
|
return updateCallerBindingSessionId(projectRoot, callerId, sessionId);
|
|
@@ -85,7 +86,14 @@ function isDateStampedSiblingId(name) {
|
|
|
85
86
|
import { detectMissingProjectStandards } from '../standards/missing-standards-detector.js';
|
|
86
87
|
import { detectLanguage, executeProjectStandardsInit } from '../standards/project-standards-service.js';
|
|
87
88
|
const SESSION_ID_PATTERN = /^\d{4}-\d{2}-\d{2}-[a-z][a-z0-9-]*[a-z0-9]$/;
|
|
88
|
-
const PROHIBITED_SUFFIXES = [
|
|
89
|
+
const PROHIBITED_SUFFIXES = [
|
|
90
|
+
'session',
|
|
91
|
+
'work',
|
|
92
|
+
'task',
|
|
93
|
+
'test',
|
|
94
|
+
'temp',
|
|
95
|
+
'tmp'
|
|
96
|
+
];
|
|
89
97
|
// Auto-generated session ID pattern: YYYY-MM-DD-session-<6位hex>
|
|
90
98
|
const AUTO_SESSION_PATTERN = /^\d{4}-\d{2}-\d{2}-session-[a-f0-9]{6}$/;
|
|
91
99
|
/**
|
|
@@ -319,7 +327,7 @@ export async function initWorkspace(options) {
|
|
|
319
327
|
// Refuse to rebind without explicit authorization.
|
|
320
328
|
previousSessionId = existingSessionId;
|
|
321
329
|
const existingSessionDir = join(runtimeRoot, existingSessionId);
|
|
322
|
-
if (await isDirectory(existingSessionDir) && !options.allowSessionRebind) {
|
|
330
|
+
if ((await isDirectory(existingSessionDir)) && !options.allowSessionRebind) {
|
|
323
331
|
const { readdirSync } = await import('node:fs');
|
|
324
332
|
const entries = readdirSync(existingSessionDir);
|
|
325
333
|
if (entries.length > 0) {
|
|
@@ -11,7 +11,7 @@ import { join, posix } from 'node:path';
|
|
|
11
11
|
*/
|
|
12
12
|
const LEGACY_DOTFILES = [
|
|
13
13
|
'.peaks-init-hooks-decision.json',
|
|
14
|
-
'.peaks-openspec-opt-in.json'
|
|
14
|
+
'.peaks-openspec-opt-in.json'
|
|
15
15
|
];
|
|
16
16
|
const STATE_DIR_NAME = '_state';
|
|
17
17
|
export function isLegacyDecisionDotfile(name) {
|
|
@@ -8,7 +8,7 @@ export function parseGitWorktreePorcelain(raw) {
|
|
|
8
8
|
path: current.path,
|
|
9
9
|
head: current.head,
|
|
10
10
|
branch: current.branch,
|
|
11
|
-
prunable: current.prunable
|
|
11
|
+
prunable: current.prunable
|
|
12
12
|
});
|
|
13
13
|
}
|
|
14
14
|
current = null;
|
|
@@ -27,10 +27,20 @@ export function parseGitWorktreePorcelain(raw) {
|
|
|
27
27
|
current = next;
|
|
28
28
|
}
|
|
29
29
|
else if (current !== null && key === 'HEAD') {
|
|
30
|
-
current = {
|
|
30
|
+
current = {
|
|
31
|
+
path: current.path,
|
|
32
|
+
head: value,
|
|
33
|
+
branch: current.branch,
|
|
34
|
+
prunable: current.prunable
|
|
35
|
+
};
|
|
31
36
|
}
|
|
32
37
|
else if (current !== null && key === 'branch') {
|
|
33
|
-
current = {
|
|
38
|
+
current = {
|
|
39
|
+
path: current.path,
|
|
40
|
+
head: current.head,
|
|
41
|
+
branch: value.replace(/^refs\/heads\//, ''),
|
|
42
|
+
prunable: current.prunable
|
|
43
|
+
};
|
|
34
44
|
}
|
|
35
45
|
else if (current !== null && key === 'prunable') {
|
|
36
46
|
current = { path: current.path, head: current.head, branch: current.branch, prunable: true };
|
|
@@ -11,7 +11,7 @@ export function reconcileHostWorktrees(input) {
|
|
|
11
11
|
cwd: input.projectRoot,
|
|
12
12
|
encoding: 'utf8',
|
|
13
13
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
14
|
-
windowsHide: true
|
|
14
|
+
windowsHide: true
|
|
15
15
|
});
|
|
16
16
|
records = parseGitWorktreePorcelain(raw);
|
|
17
17
|
}
|
|
@@ -22,7 +22,7 @@ export function reconcileHostWorktrees(input) {
|
|
|
22
22
|
const leaseResult = listLeasesSync(storeDir, {
|
|
23
23
|
existsSync,
|
|
24
24
|
readdir: (path) => readdirSync(path),
|
|
25
|
-
readFile: (path) => readFileSync(path, 'utf8')
|
|
25
|
+
readFile: (path) => readFileSync(path, 'utf8')
|
|
26
26
|
});
|
|
27
27
|
const leases = leaseResult.kind === 'ok' ? leaseResult.leases : [];
|
|
28
28
|
const leaseByPath = new Map(leases.map((lease) => [resolve(lease.path), lease.leaseId]));
|
|
@@ -33,8 +33,12 @@ export function reconcileHostWorktrees(input) {
|
|
|
33
33
|
return {
|
|
34
34
|
...record,
|
|
35
35
|
managedLeaseId,
|
|
36
|
-
state: record.prunable ? 'prunable' : managedLeaseId === null ? 'unleased' : 'managed'
|
|
36
|
+
state: record.prunable ? 'prunable' : managedLeaseId === null ? 'unleased' : 'managed'
|
|
37
37
|
};
|
|
38
38
|
});
|
|
39
|
-
return {
|
|
39
|
+
return {
|
|
40
|
+
hostRoot,
|
|
41
|
+
findings,
|
|
42
|
+
unmanaged: findings.filter((finding) => finding.state !== 'managed')
|
|
43
|
+
};
|
|
40
44
|
}
|
|
@@ -14,25 +14,42 @@ export function removeRegisteredWorktree(input) {
|
|
|
14
14
|
execFileSync('git', ['worktree', 'remove', '--force', input.worktreePath], {
|
|
15
15
|
cwd: input.projectRoot,
|
|
16
16
|
stdio: ['ignore', 'pipe', 'pipe'],
|
|
17
|
-
windowsHide: true
|
|
17
|
+
windowsHide: true
|
|
18
|
+
});
|
|
19
|
+
execFileSync('git', ['worktree', 'prune'], {
|
|
20
|
+
cwd: input.projectRoot,
|
|
21
|
+
stdio: 'ignore',
|
|
22
|
+
windowsHide: true
|
|
18
23
|
});
|
|
19
|
-
execFileSync('git', ['worktree', 'prune'], { cwd: input.projectRoot, stdio: 'ignore', windowsHide: true });
|
|
20
24
|
return { removed: !existsSync(input.worktreePath), strategy: 'git' };
|
|
21
25
|
}
|
|
22
26
|
catch (error) {
|
|
23
27
|
if (process.platform !== 'win32') {
|
|
24
|
-
return {
|
|
28
|
+
return {
|
|
29
|
+
removed: false,
|
|
30
|
+
strategy: 'none',
|
|
31
|
+
error: error instanceof Error ? error.message : String(error)
|
|
32
|
+
};
|
|
25
33
|
}
|
|
26
34
|
try {
|
|
27
|
-
rmSync(windowsLongPath(input.worktreePath), {
|
|
28
|
-
|
|
35
|
+
rmSync(windowsLongPath(input.worktreePath), {
|
|
36
|
+
recursive: true,
|
|
37
|
+
force: true,
|
|
38
|
+
maxRetries: 3,
|
|
39
|
+
retryDelay: 100
|
|
40
|
+
});
|
|
41
|
+
execFileSync('git', ['worktree', 'prune'], {
|
|
42
|
+
cwd: input.projectRoot,
|
|
43
|
+
stdio: 'ignore',
|
|
44
|
+
windowsHide: true
|
|
45
|
+
});
|
|
29
46
|
return { removed: !existsSync(input.worktreePath), strategy: 'windows-long-path' };
|
|
30
47
|
}
|
|
31
48
|
catch (fallbackError) {
|
|
32
49
|
return {
|
|
33
50
|
removed: false,
|
|
34
51
|
strategy: 'none',
|
|
35
|
-
error: fallbackError instanceof Error ? fallbackError.message : String(fallbackError)
|
|
52
|
+
error: fallbackError instanceof Error ? fallbackError.message : String(fallbackError)
|
|
36
53
|
};
|
|
37
54
|
}
|
|
38
55
|
}
|
|
@@ -34,5 +34,7 @@ export function findManagedSkillJunctionReferences(input) {
|
|
|
34
34
|
function isInside(parent, candidate) {
|
|
35
35
|
const normalizedParent = resolve(parent).toLowerCase();
|
|
36
36
|
const normalizedCandidate = resolve(candidate).toLowerCase();
|
|
37
|
-
return normalizedCandidate === normalizedParent ||
|
|
37
|
+
return (normalizedCandidate === normalizedParent ||
|
|
38
|
+
normalizedCandidate.startsWith(`${normalizedParent}\\`) ||
|
|
39
|
+
normalizedCandidate.startsWith(`${normalizedParent}/`));
|
|
38
40
|
}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* worktree-lease-types — the pure declaration surface of the worktree lease
|
|
3
|
+
* store (`worktree-lease.ts`).
|
|
4
|
+
*
|
|
5
|
+
* Slice 2026-07-29-worktree-l2-extended Part 1 owns the lease behavior; this
|
|
6
|
+
* module owns only the shapes (lifecycle status, lease record, creation draft,
|
|
7
|
+
* and the list-read result). `worktree-lease.ts` imports and re-exports every
|
|
8
|
+
* name here, so importers keep resolving them from the original path.
|
|
9
|
+
*/
|
|
10
|
+
export type WorktreeLeaseStatus = 'active' | 'released' | 'expired' | 'gc';
|
|
11
|
+
export interface WorktreeLease {
|
|
12
|
+
/** Random 16-hex lease id; emitted to the operator as the lease handle. */
|
|
13
|
+
readonly leaseId: string;
|
|
14
|
+
/** The peaks request id (rid) that the lease was spawned for. */
|
|
15
|
+
readonly rid: string;
|
|
16
|
+
/** Sub-agent role (rd | qa | ui | sc | prd | general-purpose | ...). */
|
|
17
|
+
readonly role: string;
|
|
18
|
+
/** Absolute worktree path on disk (under .peaks/_runtime/<sid>/worktrees/<leaseId>/). */
|
|
19
|
+
readonly path: string;
|
|
20
|
+
/** Branch name (one of the worktree's --branch / -b args). */
|
|
21
|
+
readonly branch: string;
|
|
22
|
+
/** Unix epoch ms when the lease was created. */
|
|
23
|
+
readonly createdAt: number;
|
|
24
|
+
/** Unix epoch ms when the lease expires. */
|
|
25
|
+
readonly expiresAt: number;
|
|
26
|
+
/** Operator-supplied purpose text (audit log). */
|
|
27
|
+
readonly purpose: string;
|
|
28
|
+
/** Lifecycle status; updated by `releaseLease` / `markExpired`. */
|
|
29
|
+
readonly status: WorktreeLeaseStatus;
|
|
30
|
+
/** Sub-agent batch / dispatch ids that have consumed this lease. */
|
|
31
|
+
readonly consumedBySubAgents: ReadonlyArray<string>;
|
|
32
|
+
}
|
|
33
|
+
/** Subset of WorktreeLease that the CLI writes on creation. Status starts at 'active'. */
|
|
34
|
+
export type WorktreeLeaseDraft = Omit<WorktreeLease, 'status' | 'consumedBySubAgents'>;
|
|
35
|
+
/**
|
|
36
|
+
* Pure: read every lease file under the session's lease store dir.
|
|
37
|
+
* Returns leases in the order returned by `fs.readdir` (no sort).
|
|
38
|
+
* Malformed files are surfaced as `{ file, error }` records so the caller
|
|
39
|
+
* (the `list` CLI) can warn without aborting the whole list. Missing
|
|
40
|
+
* directory is not an error — it returns an empty leases array.
|
|
41
|
+
*/
|
|
42
|
+
export interface LeaseReadError {
|
|
43
|
+
readonly file: string;
|
|
44
|
+
readonly error: string;
|
|
45
|
+
}
|
|
46
|
+
export type LeaseListResult = {
|
|
47
|
+
readonly kind: 'ok';
|
|
48
|
+
readonly leases: ReadonlyArray<WorktreeLease>;
|
|
49
|
+
readonly errors: ReadonlyArray<LeaseReadError>;
|
|
50
|
+
} | {
|
|
51
|
+
readonly kind: 'store-missing';
|
|
52
|
+
readonly storeDir: string;
|
|
53
|
+
};
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* worktree-lease-types — the pure declaration surface of the worktree lease
|
|
3
|
+
* store (`worktree-lease.ts`).
|
|
4
|
+
*
|
|
5
|
+
* Slice 2026-07-29-worktree-l2-extended Part 1 owns the lease behavior; this
|
|
6
|
+
* module owns only the shapes (lifecycle status, lease record, creation draft,
|
|
7
|
+
* and the list-read result). `worktree-lease.ts` imports and re-exports every
|
|
8
|
+
* name here, so importers keep resolving them from the original path.
|
|
9
|
+
*/
|
|
10
|
+
export {};
|
|
@@ -24,33 +24,10 @@
|
|
|
24
24
|
* implicitly authorizes worktree operations on its path (the hook
|
|
25
25
|
* integration is Part 2 of this slice).
|
|
26
26
|
*/
|
|
27
|
+
import type { LeaseListResult, WorktreeLease, WorktreeLeaseDraft } from './worktree-lease-types.js';
|
|
28
|
+
export type { LeaseListResult, LeaseReadError, WorktreeLease, WorktreeLeaseDraft, WorktreeLeaseStatus } from './worktree-lease-types.js';
|
|
27
29
|
export declare const DEFAULT_TTL_BY_ROLE: Readonly<Record<string, number>>;
|
|
28
30
|
export declare const DEFAULT_TTL_MS: number | undefined;
|
|
29
|
-
export type WorktreeLeaseStatus = 'active' | 'released' | 'expired' | 'gc';
|
|
30
|
-
export interface WorktreeLease {
|
|
31
|
-
/** Random 16-hex lease id; emitted to the operator as the lease handle. */
|
|
32
|
-
readonly leaseId: string;
|
|
33
|
-
/** The peaks request id (rid) that the lease was spawned for. */
|
|
34
|
-
readonly rid: string;
|
|
35
|
-
/** Sub-agent role (rd | qa | ui | sc | prd | general-purpose | ...). */
|
|
36
|
-
readonly role: string;
|
|
37
|
-
/** Absolute worktree path on disk (under .peaks/_runtime/<sid>/worktrees/<leaseId>/). */
|
|
38
|
-
readonly path: string;
|
|
39
|
-
/** Branch name (one of the worktree's --branch / -b args). */
|
|
40
|
-
readonly branch: string;
|
|
41
|
-
/** Unix epoch ms when the lease was created. */
|
|
42
|
-
readonly createdAt: number;
|
|
43
|
-
/** Unix epoch ms when the lease expires. */
|
|
44
|
-
readonly expiresAt: number;
|
|
45
|
-
/** Operator-supplied purpose text (audit log). */
|
|
46
|
-
readonly purpose: string;
|
|
47
|
-
/** Lifecycle status; updated by `releaseLease` / `markExpired`. */
|
|
48
|
-
readonly status: WorktreeLeaseStatus;
|
|
49
|
-
/** Sub-agent batch / dispatch ids that have consumed this lease. */
|
|
50
|
-
readonly consumedBySubAgents: ReadonlyArray<string>;
|
|
51
|
-
}
|
|
52
|
-
/** Subset of WorktreeLease that the CLI writes on creation. Status starts at 'active'. */
|
|
53
|
-
export type WorktreeLeaseDraft = Omit<WorktreeLease, 'status' | 'consumedBySubAgents'>;
|
|
54
31
|
/**
|
|
55
32
|
* Compose a deterministic lease path under the per-session runtime dir.
|
|
56
33
|
* The function is pure: same inputs → same output. The caller passes
|
|
@@ -102,25 +79,6 @@ export declare function recordConsumption(lease: WorktreeLease, subAgentId: stri
|
|
|
102
79
|
* but `isLeaseActive` returns false so consumers skip the lease.
|
|
103
80
|
*/
|
|
104
81
|
export declare function isLeaseActive(lease: WorktreeLease, now?: number): boolean;
|
|
105
|
-
/**
|
|
106
|
-
* Pure: read every lease file under the session's lease store dir.
|
|
107
|
-
* Returns leases in the order returned by `fs.readdir` (no sort).
|
|
108
|
-
* Malformed files are surfaced as `{ file, error }` records so the caller
|
|
109
|
-
* (the `list` CLI) can warn without aborting the whole list. Missing
|
|
110
|
-
* directory is not an error — it returns an empty leases array.
|
|
111
|
-
*/
|
|
112
|
-
export interface LeaseReadError {
|
|
113
|
-
readonly file: string;
|
|
114
|
-
readonly error: string;
|
|
115
|
-
}
|
|
116
|
-
export type LeaseListResult = {
|
|
117
|
-
readonly kind: 'ok';
|
|
118
|
-
readonly leases: ReadonlyArray<WorktreeLease>;
|
|
119
|
-
readonly errors: ReadonlyArray<LeaseReadError>;
|
|
120
|
-
} | {
|
|
121
|
-
readonly kind: 'store-missing';
|
|
122
|
-
readonly storeDir: string;
|
|
123
|
-
};
|
|
124
82
|
/**
|
|
125
83
|
* List every lease file under the session's lease store dir.
|
|
126
84
|
*
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `Array.isArray` written so that it does NOT narrow.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS (S10, 2026-09-20). TypeScript declares `Array.isArray` as
|
|
5
|
+
* `(arg: any) => arg is any[]`. That is right for an `unknown` argument and
|
|
6
|
+
* WRONG for an already-typed one: applied to a `readonly SliceNode[]`, the
|
|
7
|
+
* guard narrows the value to `any[]`, so every later element access
|
|
8
|
+
* (`n.id`, `e.from`, …) is an `any` access. `@typescript-eslint/no-unsafe-*`
|
|
9
|
+
* then reports the widening, not the caller's intent — and the guard was
|
|
10
|
+
* measuring "is this an array at runtime?", which it still does below.
|
|
11
|
+
*
|
|
12
|
+
* Measured effect of the widening at the S10 census: 107 of the 817 TS
|
|
13
|
+
* `no-unsafe-*` findings across 7 files (slice-dag, workflow-graph-store,
|
|
14
|
+
* workflow-inflight-probe, spec-service, contract-store, eslint-runner,
|
|
15
|
+
* api-diff-openapi). Those files hold values that are ALREADY correctly typed;
|
|
16
|
+
* `Array.isArray` was the only thing discarding the type.
|
|
17
|
+
*
|
|
18
|
+
* Returning plain `boolean` is the honest shape here: it reports the runtime
|
|
19
|
+
* fact and asserts nothing about the type. A predicate like
|
|
20
|
+
* `value is readonly T[]` would silence the same findings with an unchecked
|
|
21
|
+
* assertion — the same offence as a cast — which this slice is explicitly
|
|
22
|
+
* forbidden from adding.
|
|
23
|
+
*
|
|
24
|
+
* Consequence at call sites: after `if (!isArray(x)) throw`, TypeScript does
|
|
25
|
+
* NOT know `x` is defined, because a `boolean` return cannot narrow. A site
|
|
26
|
+
* that also needs defined-ness must say so — write
|
|
27
|
+
* `if (x === undefined || !isArray(x)) throw`, which is what the call sites
|
|
28
|
+
* below do. That is the price of not asserting, and it is paid in the open.
|
|
29
|
+
*/
|
|
30
|
+
export declare function isArray(value: unknown): boolean;
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `Array.isArray` written so that it does NOT narrow.
|
|
3
|
+
*
|
|
4
|
+
* WHY THIS EXISTS (S10, 2026-09-20). TypeScript declares `Array.isArray` as
|
|
5
|
+
* `(arg: any) => arg is any[]`. That is right for an `unknown` argument and
|
|
6
|
+
* WRONG for an already-typed one: applied to a `readonly SliceNode[]`, the
|
|
7
|
+
* guard narrows the value to `any[]`, so every later element access
|
|
8
|
+
* (`n.id`, `e.from`, …) is an `any` access. `@typescript-eslint/no-unsafe-*`
|
|
9
|
+
* then reports the widening, not the caller's intent — and the guard was
|
|
10
|
+
* measuring "is this an array at runtime?", which it still does below.
|
|
11
|
+
*
|
|
12
|
+
* Measured effect of the widening at the S10 census: 107 of the 817 TS
|
|
13
|
+
* `no-unsafe-*` findings across 7 files (slice-dag, workflow-graph-store,
|
|
14
|
+
* workflow-inflight-probe, spec-service, contract-store, eslint-runner,
|
|
15
|
+
* api-diff-openapi). Those files hold values that are ALREADY correctly typed;
|
|
16
|
+
* `Array.isArray` was the only thing discarding the type.
|
|
17
|
+
*
|
|
18
|
+
* Returning plain `boolean` is the honest shape here: it reports the runtime
|
|
19
|
+
* fact and asserts nothing about the type. A predicate like
|
|
20
|
+
* `value is readonly T[]` would silence the same findings with an unchecked
|
|
21
|
+
* assertion — the same offence as a cast — which this slice is explicitly
|
|
22
|
+
* forbidden from adding.
|
|
23
|
+
*
|
|
24
|
+
* Consequence at call sites: after `if (!isArray(x)) throw`, TypeScript does
|
|
25
|
+
* NOT know `x` is defined, because a `boolean` return cannot narrow. A site
|
|
26
|
+
* that also needs defined-ness must say so — write
|
|
27
|
+
* `if (x === undefined || !isArray(x)) throw`, which is what the call sites
|
|
28
|
+
* below do. That is the price of not asserting, and it is paid in the open.
|
|
29
|
+
*/
|
|
30
|
+
export function isArray(value) {
|
|
31
|
+
return Array.isArray(value);
|
|
32
|
+
}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal, finding-free building blocks for `format-md-compact.ts`.
|
|
3
|
+
*
|
|
4
|
+
* Split verbatim from the main module for the file-size cap campaign; the
|
|
5
|
+
* public surface (`formatMdCompact` / `FormatMdCompactOptions`) is re-exported
|
|
6
|
+
* from `format-md-compact.ts`, so importers keep pointing at the same path.
|
|
7
|
+
* This module is imported by both `src/` and `packages/` through that path.
|
|
8
|
+
*/
|
|
9
|
+
export declare const FENCE_MARKER_RE: RegExp;
|
|
10
|
+
export declare const TABLE_ROW_RE: RegExp;
|
|
11
|
+
export declare const TABLE_ALIGN_ROW_RE: RegExp;
|
|
12
|
+
export declare const ATX_HEADING_RE: RegExp;
|
|
13
|
+
export declare const HEADING_LINE_RE: RegExp;
|
|
14
|
+
export declare const SETEXT_UNDERLINE_RE: RegExp;
|
|
15
|
+
export interface ParsedFrontmatter {
|
|
16
|
+
raw: string;
|
|
17
|
+
description: string | null;
|
|
18
|
+
body: string;
|
|
19
|
+
}
|
|
20
|
+
export declare function splitFrontmatter(input: string): ParsedFrontmatter;
|
|
21
|
+
export declare function isFenceOpenLine(line: string): boolean;
|
|
22
|
+
export declare function isFenceCloseLine(line: string, insideFence: boolean): boolean;
|
|
23
|
+
export declare function isTableLine(line: string): boolean;
|
|
24
|
+
export declare function computeSetextUnderlines(lines: string[]): Set<number>;
|
|
25
|
+
export declare function isDecorativeHorizontalRule(line: string): boolean;
|
|
26
|
+
export declare function collapseMultiBlanks(lines: string[]): string[];
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Internal, finding-free building blocks for `format-md-compact.ts`.
|
|
3
|
+
*
|
|
4
|
+
* Split verbatim from the main module for the file-size cap campaign; the
|
|
5
|
+
* public surface (`formatMdCompact` / `FormatMdCompactOptions`) is re-exported
|
|
6
|
+
* from `format-md-compact.ts`, so importers keep pointing at the same path.
|
|
7
|
+
* This module is imported by both `src/` and `packages/` through that path.
|
|
8
|
+
*/
|
|
9
|
+
export const FENCE_MARKER_RE = /^(```+|~~~+)/;
|
|
10
|
+
export const TABLE_ROW_RE = /^\s*\|.*\|\s*$/;
|
|
11
|
+
export const TABLE_ALIGN_ROW_RE = /^\s*\|?\s*:?-{1,}:?\s*(\|\s*:?-{1,}:?\s*)+\|?\s*$/;
|
|
12
|
+
export const ATX_HEADING_RE = /^#{1,6}\s/;
|
|
13
|
+
export const HEADING_LINE_RE = /^\S/;
|
|
14
|
+
export const SETEXT_UNDERLINE_RE = /^=+\s*$|^-{2,}\s*$/;
|
|
15
|
+
export function splitFrontmatter(input) {
|
|
16
|
+
// Normalize line endings so Windows \r\n doesn't confuse the leading-marker check.
|
|
17
|
+
const normalized = input.replace(/\r\n/g, '\n');
|
|
18
|
+
const lines = normalized.split('\n');
|
|
19
|
+
if (lines[0] !== '---') {
|
|
20
|
+
return { raw: '', description: null, body: normalized };
|
|
21
|
+
}
|
|
22
|
+
let closeIndex = -1;
|
|
23
|
+
for (let index = 1; index < lines.length; index += 1) {
|
|
24
|
+
if (lines[index] === '---') {
|
|
25
|
+
closeIndex = index;
|
|
26
|
+
break;
|
|
27
|
+
}
|
|
28
|
+
}
|
|
29
|
+
if (closeIndex < 0) {
|
|
30
|
+
return { raw: '', description: null, body: normalized };
|
|
31
|
+
}
|
|
32
|
+
const raw = lines.slice(0, closeIndex + 1).join('\n');
|
|
33
|
+
// Body = everything after the closing `---` (preserving one optional blank line).
|
|
34
|
+
const bodyLines = lines.slice(closeIndex + 1);
|
|
35
|
+
while (bodyLines.length > 0 && bodyLines[0] === '') {
|
|
36
|
+
bodyLines.shift();
|
|
37
|
+
}
|
|
38
|
+
const body = bodyLines.join('\n');
|
|
39
|
+
// Extract the `description:` field. Walk the YAML block; pull the value
|
|
40
|
+
// as a single-line string. Multi-line (`|`) or folded (`>`) scalars are
|
|
41
|
+
// joined with a single space — the description is a short summary, the
|
|
42
|
+
// exact whitespace inside the block scalar is not preserved.
|
|
43
|
+
const frontmatterLines = lines.slice(1, closeIndex);
|
|
44
|
+
const description = extractFrontmatterDescription(frontmatterLines);
|
|
45
|
+
return { raw, description, body };
|
|
46
|
+
}
|
|
47
|
+
function extractFrontmatterDescription(frontmatterLines) {
|
|
48
|
+
for (let index = 0; index < frontmatterLines.length; index += 1) {
|
|
49
|
+
const line = frontmatterLines[index] ?? '';
|
|
50
|
+
const match = line.match(/^description:\s*(.*)$/);
|
|
51
|
+
if (match === null)
|
|
52
|
+
continue;
|
|
53
|
+
const inline = (match[1] ?? '').trim();
|
|
54
|
+
if (inline === '|' || inline === '>') {
|
|
55
|
+
const collected = [];
|
|
56
|
+
for (let inner = index + 1; inner < frontmatterLines.length; inner += 1) {
|
|
57
|
+
const innerLine = frontmatterLines[inner] ?? '';
|
|
58
|
+
if (/^[A-Za-z0-9_-]+:/.test(innerLine))
|
|
59
|
+
break;
|
|
60
|
+
collected.push(innerLine.replace(/^\s{2}/, ''));
|
|
61
|
+
}
|
|
62
|
+
return collected.join(' ').trim();
|
|
63
|
+
}
|
|
64
|
+
// Strip surrounding quotes if the value is a quoted scalar.
|
|
65
|
+
return inline.replace(/^['"]|['"]$/g, '');
|
|
66
|
+
}
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
export function isFenceOpenLine(line) {
|
|
70
|
+
return FENCE_MARKER_RE.test(line);
|
|
71
|
+
}
|
|
72
|
+
export function isFenceCloseLine(line, insideFence) {
|
|
73
|
+
// The `isFenceOpenLine` already returned true for this line, so it
|
|
74
|
+
// starts with ``` or ~~~. A "close" line is one that opens a new fence
|
|
75
|
+
// of the *same* length. We approximate by treating any opener as a close
|
|
76
|
+
// when we are currently inside a fence.
|
|
77
|
+
return insideFence;
|
|
78
|
+
}
|
|
79
|
+
export function isTableLine(line) {
|
|
80
|
+
return TABLE_ROW_RE.test(line) || TABLE_ALIGN_ROW_RE.test(line);
|
|
81
|
+
}
|
|
82
|
+
export function computeSetextUnderlines(lines) {
|
|
83
|
+
// A `===` or `---` line is a setext heading underline ONLY when it sits
|
|
84
|
+
// directly under a non-blank, non-ATX text line (no blank line between
|
|
85
|
+
// them). The presence of a blank line between the text and the rule
|
|
86
|
+
// disqualifies it (a blank-separated `---` is decoration, not setext).
|
|
87
|
+
const result = new Set();
|
|
88
|
+
for (let index = 1; index < lines.length; index += 1) {
|
|
89
|
+
const line = lines[index] ?? '';
|
|
90
|
+
if (!SETEXT_UNDERLINE_RE.test(line))
|
|
91
|
+
continue;
|
|
92
|
+
const prev = lines[index - 1] ?? '';
|
|
93
|
+
if (prev === '')
|
|
94
|
+
continue;
|
|
95
|
+
if (ATX_HEADING_RE.test(prev))
|
|
96
|
+
continue;
|
|
97
|
+
if (!HEADING_LINE_RE.test(prev))
|
|
98
|
+
continue;
|
|
99
|
+
result.add(index);
|
|
100
|
+
}
|
|
101
|
+
return result;
|
|
102
|
+
}
|
|
103
|
+
export function isDecorativeHorizontalRule(line) {
|
|
104
|
+
// A line that is exactly `---` (or any number of `-` chars) is a
|
|
105
|
+
// candidate horizontal rule. The caller has already excluded setext
|
|
106
|
+
// and table contexts via the `protection` array.
|
|
107
|
+
return /^-+$/.test(line);
|
|
108
|
+
}
|
|
109
|
+
export function collapseMultiBlanks(lines) {
|
|
110
|
+
const result = [];
|
|
111
|
+
let blankRun = 0;
|
|
112
|
+
for (const line of lines) {
|
|
113
|
+
if (line === '') {
|
|
114
|
+
blankRun += 1;
|
|
115
|
+
// 1 blank line is the cap. Drop the rest.
|
|
116
|
+
if (blankRun <= 1) {
|
|
117
|
+
result.push(line);
|
|
118
|
+
}
|
|
119
|
+
continue;
|
|
120
|
+
}
|
|
121
|
+
blankRun = 0;
|
|
122
|
+
result.push(line);
|
|
123
|
+
}
|
|
124
|
+
return result;
|
|
125
|
+
}
|