peaks-loop 4.1.1 → 4.1.2
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 +50 -0
- package/README-en.md +4 -4
- package/README.md +25 -4
- package/bin/node-floor.mjs +59 -0
- package/bin/peaks.js +13 -0
- package/config/eslint/tsconfig.lint.json +2 -1
- package/dist/cli/cli-helpers.d.ts +0 -1
- package/dist/cli/cli-helpers.js +0 -1
- package/dist/cli/commands/_cli-error-envelope.js +0 -3
- package/dist/cli/commands/adapter-commands-s2a.d.ts +0 -1
- package/dist/cli/commands/adapter-commands.d.ts +0 -1
- package/dist/cli/commands/api-diff-commands.d.ts +0 -1
- package/dist/cli/commands/api-diff-commands.js +0 -1
- package/dist/cli/commands/audit-commands.js +21 -24
- package/dist/cli/commands/autonomous-swarm-commands.js +0 -1
- package/dist/cli/commands/bee-commands.d.ts +0 -2
- package/dist/cli/commands/bee-commands.js +0 -2
- package/dist/cli/commands/best-practice-scan-command.d.ts +0 -1
- package/dist/cli/commands/best-practice-scan-helpers.js +0 -1
- package/dist/cli/commands/changeset-commands.d.ts +0 -2
- package/dist/cli/commands/changeset-commands.js +0 -2
- package/dist/cli/commands/code-commands.d.ts +0 -3
- package/dist/cli/commands/code-commands.js +0 -3
- package/dist/cli/commands/code-gate-command.d.ts +0 -1
- package/dist/cli/commands/code-gate-command.js +0 -1
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.d.ts +0 -1
- package/dist/cli/commands/code-job-shape-commands-read-job-shape.js +0 -1
- package/dist/cli/commands/code-job-shape-commands.d.ts +0 -2
- package/dist/cli/commands/code-job-shape-commands.js +0 -3
- package/dist/cli/commands/code-mode-gate-commands.d.ts +0 -2
- package/dist/cli/commands/code-mode-gate-commands.js +0 -3
- package/dist/cli/commands/code-mode-gate-should-pause-command.js +0 -4
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.d.ts +0 -1
- package/dist/cli/commands/code-mode-gate-should-pause-envelope.js +0 -2
- package/dist/cli/commands/code-mode-status-command.d.ts +0 -1
- package/dist/cli/commands/code-mode-status-command.js +0 -1
- package/dist/cli/commands/code-orchestrator-can-do.d.ts +0 -1
- package/dist/cli/commands/code-orchestrator-can-do.js +0 -1
- package/dist/cli/commands/code-run-command.js +0 -1
- package/dist/cli/commands/code-runtime-commands.d.ts +0 -3
- package/dist/cli/commands/code-runtime-commands.js +0 -15
- package/dist/cli/commands/codegraph-command-runtime.d.ts +6 -0
- package/dist/cli/commands/codegraph-command-runtime.js +19 -7
- package/dist/cli/commands/codegraph-commands.js +20 -193
- package/dist/cli/commands/codegraph-init-command.d.ts +8 -0
- package/dist/cli/commands/codegraph-init-command.js +162 -0
- package/dist/cli/commands/codegraph-status-command.js +5 -6
- package/dist/cli/commands/compact-command.d.ts +0 -1
- package/dist/cli/commands/compact-command.js +0 -4
- package/dist/cli/commands/container-commands.d.ts +0 -1
- package/dist/cli/commands/container-commands.js +0 -1
- package/dist/cli/commands/context-commands.d.ts +0 -1
- package/dist/cli/commands/context-commands.js +0 -1
- package/dist/cli/commands/core/doctor-command.d.ts +0 -1
- package/dist/cli/commands/core/doctor-command.js +0 -9
- package/dist/cli/commands/core/memory-command.js +0 -1
- package/dist/cli/commands/core/session-command.js +0 -14
- package/dist/cli/commands/core/skill-command.js +0 -9
- package/dist/cli/commands/core-artifact-commands.d.ts +0 -1
- package/dist/cli/commands/core-artifact-commands.js +0 -1
- package/dist/cli/commands/cron-commands-actions.d.ts +0 -1
- package/dist/cli/commands/cron-commands-actions.js +0 -2
- package/dist/cli/commands/cron-commands-schedule.d.ts +0 -3
- package/dist/cli/commands/cron-commands-schedule.js +0 -1
- package/dist/cli/commands/cron-commands.d.ts +0 -1
- package/dist/cli/commands/cron-commands.js +0 -2
- package/dist/cli/commands/cron-scheduler-commands.d.ts +0 -1
- package/dist/cli/commands/cron-scheduler-commands.js +0 -1
- package/dist/cli/commands/cron-scheduler-persist.d.ts +0 -5
- package/dist/cli/commands/cron-scheduler-persist.js +0 -5
- package/dist/cli/commands/dashboard-summary.d.ts +0 -1
- package/dist/cli/commands/dispatch-commands.d.ts +0 -1
- package/dist/cli/commands/dispatch-commands.js +10 -37
- package/dist/cli/commands/dispatch-from-dag.js +0 -4
- package/dist/cli/commands/doctor/invoke-from-code.js +0 -1
- package/dist/cli/commands/e2e-verify.d.ts +0 -1
- package/dist/cli/commands/ecc-commands.d.ts +0 -1
- package/dist/cli/commands/evolution-commands.d.ts +0 -1
- package/dist/cli/commands/evolution-commands.js +0 -1
- package/dist/cli/commands/feedback-commands.d.ts +0 -1
- package/dist/cli/commands/feedback-commands.js +0 -2
- package/dist/cli/commands/fixture-commands.d.ts +0 -2
- package/dist/cli/commands/fresh-context-commands.d.ts +0 -1
- package/dist/cli/commands/gate-commands-enforce.d.ts +0 -3
- package/dist/cli/commands/gate-commands-enforce.js +0 -4
- package/dist/cli/commands/gate-commands.js +0 -2
- package/dist/cli/commands/governance-classify-contract-commands.d.ts +0 -3
- package/dist/cli/commands/governance-classify-contract-commands.js +0 -4
- package/dist/cli/commands/heartbeat-commands-action.js +0 -6
- package/dist/cli/commands/heartbeat-commands-validation.d.ts +0 -2
- package/dist/cli/commands/heartbeat-commands-validation.js +0 -2
- package/dist/cli/commands/heartbeat-commands.d.ts +0 -1
- package/dist/cli/commands/heartbeat-commands.js +0 -1
- package/dist/cli/commands/hooks-commands.js +0 -11
- package/dist/cli/commands/ide-commands.d.ts +0 -1
- package/dist/cli/commands/job-add-slice-command.d.ts +0 -2
- package/dist/cli/commands/job-add-slice-command.js +0 -2
- package/dist/cli/commands/job-commands.js +0 -4
- package/dist/cli/commands/lease-metrics-commands.d.ts +0 -1
- package/dist/cli/commands/lease-metrics-commands.js +0 -1
- package/dist/cli/commands/lease-stats-commands.d.ts +0 -1
- package/dist/cli/commands/lease-stats-commands.js +0 -1
- package/dist/cli/commands/log-commands.d.ts +0 -2
- package/dist/cli/commands/log-commands.js +0 -3
- package/dist/cli/commands/loop-eval-commands.js +0 -3
- package/dist/cli/commands/memory-commands.d.ts +0 -1
- package/dist/cli/commands/memory-commands.js +0 -1
- package/dist/cli/commands/observability-commands.d.ts +0 -6
- package/dist/cli/commands/observability-commands.js +0 -6
- package/dist/cli/commands/outer-cache-commands.js +0 -2
- package/dist/cli/commands/playwright-commands.d.ts +0 -1
- package/dist/cli/commands/playwright-commands.js +0 -1
- package/dist/cli/commands/polyrepo-commands.d.ts +0 -1
- package/dist/cli/commands/prd-commands.d.ts +0 -1
- package/dist/cli/commands/prd-commands.js +0 -2
- package/dist/cli/commands/preferences-commands.js +0 -2
- package/dist/cli/commands/primer-command.d.ts +0 -1
- package/dist/cli/commands/primer-command.js +0 -1
- package/dist/cli/commands/project-commands.js +0 -1
- package/dist/cli/commands/qa-commands.d.ts +0 -1
- package/dist/cli/commands/qa-commands.js +0 -2
- package/dist/cli/commands/release-commands.js +0 -9
- package/dist/cli/commands/request-commands.d.ts +0 -1
- package/dist/cli/commands/request-commands.js +0 -10
- package/dist/cli/commands/request-format-helpers.d.ts +0 -1
- package/dist/cli/commands/request-format-helpers.js +0 -2
- package/dist/cli/commands/runtime-commands.d.ts +0 -1
- package/dist/cli/commands/sc-commands.js +0 -1
- package/dist/cli/commands/session-24h-mode.d.ts +0 -1
- package/dist/cli/commands/session-24h-mode.js +0 -2
- package/dist/cli/commands/session-checkpoint-command.d.ts +0 -1
- package/dist/cli/commands/session-checkpoint-command.js +0 -1
- package/dist/cli/commands/session-resume-command.d.ts +0 -1
- package/dist/cli/commands/session-resume-command.js +0 -1
- package/dist/cli/commands/shadcn-commands.js +0 -2
- package/dist/cli/commands/share-commands.d.ts +0 -3
- package/dist/cli/commands/share-commands.js +0 -13
- package/dist/cli/commands/skill-search-commands.d.ts +0 -2
- package/dist/cli/commands/slice-commands.js +0 -2
- package/dist/cli/commands/slice-integrate-commands.js +0 -1
- package/dist/cli/commands/spill-demo-command.d.ts +0 -1
- package/dist/cli/commands/statusline-commands.js +0 -4
- package/dist/cli/commands/sub-agent/detached.js +0 -2
- package/dist/cli/commands/sub-agent-commands.d.ts +0 -3
- package/dist/cli/commands/sub-agent-shared.d.ts +0 -8
- package/dist/cli/commands/sub-agent-shared.js +0 -5
- package/dist/cli/commands/sub-agent-shutdown-commands.d.ts +0 -1
- package/dist/cli/commands/tech-commands.d.ts +0 -4
- package/dist/cli/commands/tech-commands.js +0 -4
- package/dist/cli/commands/vendor-detect.d.ts +0 -3
- package/dist/cli/commands/vendor-detect.js +0 -2
- package/dist/cli/commands/verdict-aggregate-command.d.ts +0 -1
- package/dist/cli/commands/verdict-aggregate-command.js +0 -7
- package/dist/cli/commands/vm-commands.d.ts +0 -1
- package/dist/cli/commands/vm-commands.js +5 -29
- package/dist/cli/commands/vm-hypervisor-probe.d.ts +27 -0
- package/dist/cli/commands/vm-hypervisor-probe.js +78 -0
- package/dist/cli/commands/vm-status-command.d.ts +3 -0
- package/dist/cli/commands/vm-status-command.js +50 -0
- package/dist/cli/commands/wave-plan-commands.d.ts +0 -1
- package/dist/cli/commands/web-lifecycle-commands.d.ts +0 -1
- package/dist/cli/commands/workflow-commands.js +0 -14
- package/dist/cli/commands/workflow-plan-commands-actions.js +0 -2
- package/dist/cli/commands/workflow-plan-commands-session.js +0 -2
- package/dist/cli/commands/workflow-plan-commands.d.ts +0 -1
- package/dist/cli/commands/workspace/clean-command.d.ts +0 -1
- package/dist/cli/commands/workspace/clean-command.js +0 -1
- package/dist/cli/commands/workspace/helpers.d.ts +0 -1
- package/dist/cli/commands/workspace/helpers.js +0 -1
- package/dist/cli/commands/workspace/init-command.d.ts +0 -6
- package/dist/cli/commands/workspace/init-command.js +0 -17
- package/dist/cli/commands/workspace/migrate-command.d.ts +0 -2
- package/dist/cli/commands/workspace/migrate-command.js +0 -2
- package/dist/cli/commands/workspace/reconcile-command.d.ts +0 -2
- package/dist/cli/commands/workspace/reconcile-command.js +0 -3
- package/dist/cli/commands/workspace-commands.d.ts +0 -2
- package/dist/cli/commands/workspace-commands.js +0 -4
- package/dist/cli/commands/worktree-auth-commands.d.ts +0 -1
- package/dist/cli/commands/worktree-auth-commands.js +0 -1
- package/dist/cli/commands/worktree-auth-grant-command.d.ts +0 -1
- package/dist/cli/commands/worktree-auth-grant-command.js +0 -1
- package/dist/cli/commands/worktree-auth-manage-commands.d.ts +0 -1
- package/dist/cli/commands/worktree-auth-manage-commands.js +0 -1
- package/dist/cli/commands/worktree-lease-commands.js +0 -1
- package/dist/cli/program.js +0 -7
- package/dist/reporters/bdd-reporter.js +0 -1
- package/dist/services/24h-mode/auto-engage.d.ts +0 -1
- package/dist/services/24h-mode/auto-engage.js +0 -1
- package/dist/services/24h-mode/decider.d.ts +0 -3
- package/dist/services/24h-mode/decider.js +0 -3
- package/dist/services/24h-mode/index.d.ts +0 -2
- package/dist/services/24h-mode/index.js +0 -2
- package/dist/services/24h-mode/state.d.ts +0 -1
- package/dist/services/24h-mode/state.js +0 -1
- package/dist/services/24h-mode/store.d.ts +0 -1
- package/dist/services/24h-mode/store.js +0 -1
- package/dist/services/adapter/adapter-registry.js +0 -1
- package/dist/services/artifacts/artifact-prerequisites.d.ts +0 -5
- package/dist/services/artifacts/artifact-prerequisites.js +0 -19
- package/dist/services/artifacts/artifact-templates.d.ts +0 -1
- package/dist/services/artifacts/artifact-templates.js +0 -1
- package/dist/services/artifacts/request-artifact-service.d.ts +0 -5
- package/dist/services/artifacts/request-artifact-service.js +0 -12
- package/dist/services/artifacts/request-artifact-state-helpers.d.ts +0 -1
- package/dist/services/artifacts/request-artifact-state-helpers.js +0 -1
- package/dist/services/audit/artifact-writer.d.ts +0 -1
- package/dist/services/audit/artifact-writer.js +0 -1
- package/dist/services/audit/decision-writer.js +3 -1
- package/dist/services/audit/enforcer-liveness.js +0 -1
- package/dist/services/audit/enforcers/active-skill-resolver.d.ts +0 -2
- package/dist/services/audit/enforcers/active-skill-resolver.js +0 -2
- package/dist/services/audit/red-line-audit-input.d.ts +11 -0
- package/dist/services/audit/red-line-audit-input.js +103 -0
- package/dist/services/audit/red-line-catalog-p2-a-bee-runtime.d.ts +0 -1
- package/dist/services/audit/red-line-catalog-p2-a.js +0 -9
- package/dist/services/audit/types.d.ts +0 -2
- package/dist/services/audit/types.js +0 -2
- package/dist/services/audit-independent/perf-audit-service.d.ts +0 -2
- package/dist/services/audit-independent/security-audit-service.d.ts +0 -5
- package/dist/services/audit-independent/security-audit-service.js +0 -2
- package/dist/services/autonomous-swarm/autonomous-swarm-service.d.ts +0 -5
- package/dist/services/autonomous-swarm/autonomous-swarm-service.js +0 -5
- package/dist/services/best-practice/language-detector.js +0 -1
- package/dist/services/best-practice/output-formatter.d.ts +0 -1
- package/dist/services/best-practice/scan-orchestrator.d.ts +0 -1
- package/dist/services/capability-audit-service/types.d.ts +1 -3
- package/dist/services/capability-guard-runner/contracts/J08.js +2 -2
- package/dist/services/changeset/changeset-check-service.d.ts +0 -3
- package/dist/services/changeset/changeset-check-service.js +0 -3
- package/dist/services/classify/classify-service.d.ts +0 -1
- package/dist/services/classify/classify-service.js +0 -1
- package/dist/services/classify/classify-types.d.ts +0 -1
- package/dist/services/classify/classify-types.js +0 -1
- package/dist/services/code/auto-compact-lifecycle.d.ts +0 -11
- package/dist/services/code/auto-compact-lifecycle.js +0 -10
- package/dist/services/code/auto-compact-modes.d.ts +0 -3
- package/dist/services/code/auto-compact-modes.js +0 -3
- package/dist/services/code/auto-compact-orchestrator.d.ts +0 -9
- package/dist/services/code/auto-compact-orchestrator.js +0 -29
- package/dist/services/code/batch-heartbeat-poller.js +0 -1
- package/dist/services/code/compact-event-settle.js +0 -1
- package/dist/services/code/dag-orchestrator.d.ts +0 -1
- package/dist/services/code/dag-orchestrator.js +0 -1
- package/dist/services/code/mode-gate-types.d.ts +0 -2
- package/dist/services/code/mode-gate-types.js +0 -1
- package/dist/services/code/mode-gate.d.ts +0 -5
- package/dist/services/code/mode-gate.js +0 -5
- package/dist/services/code/orchestrator-can-do-advisories.d.ts +0 -2
- package/dist/services/code/orchestrator-can-do-advisories.js +0 -5
- package/dist/services/code/orchestrator-can-do.d.ts +0 -4
- package/dist/services/code/orchestrator-can-do.js +0 -3
- package/dist/services/code/status-line-renderer.js +0 -1
- package/dist/services/code-review/ecc-bridge.d.ts +0 -1
- package/dist/services/codegraph/codegraph-autorefresh.js +6 -4
- package/dist/services/codegraph/codegraph-backend-advice.d.ts +26 -0
- package/dist/services/codegraph/codegraph-backend-advice.js +166 -0
- package/dist/services/codegraph/codegraph-config-repair-writer.d.ts +0 -24
- package/dist/services/codegraph/codegraph-config-repair-writer.js +32 -73
- package/dist/services/codegraph/codegraph-exclude-integrity.d.ts +14 -6
- package/dist/services/codegraph/codegraph-exclude-integrity.js +24 -14
- package/dist/services/codegraph/codegraph-exclude-reconciler.d.ts +9 -2
- package/dist/services/codegraph/codegraph-exclude-reconciler.js +87 -18
- package/dist/services/codegraph/codegraph-exclude-repair.d.ts +9 -61
- package/dist/services/codegraph/codegraph-exclude-repair.js +67 -139
- package/dist/services/codegraph/codegraph-foreign-removal.d.ts +21 -0
- package/dist/services/codegraph/codegraph-foreign-removal.js +77 -0
- package/dist/services/codegraph/codegraph-index-integrity.d.ts +12 -25
- package/dist/services/codegraph/codegraph-index-integrity.js +84 -23
- package/dist/services/codegraph/codegraph-preflight-service.js +15 -6
- package/dist/services/codegraph/codegraph-project-config.d.ts +35 -0
- package/dist/services/codegraph/codegraph-project-config.js +90 -0
- package/dist/services/codegraph/codegraph-service.d.ts +1 -2
- package/dist/services/codegraph/codegraph-service.js +11 -11
- package/dist/services/codegraph/codegraph-upstream-layout.d.ts +24 -0
- package/dist/services/codegraph/codegraph-upstream-layout.js +85 -0
- package/dist/services/comments/comment-audit.d.ts +15 -4
- package/dist/services/comments/comment-audit.js +25 -4
- package/dist/services/comments/comment-citations.d.ts +8 -2
- package/dist/services/comments/comment-citations.js +31 -33
- package/dist/services/comments/comment-hygiene.d.ts +29 -3
- package/dist/services/comments/comment-hygiene.js +40 -3
- package/dist/services/comments/comment-prune.js +52 -4
- package/dist/services/comments/comment-spans.d.ts +30 -0
- package/dist/services/comments/comment-spans.js +266 -0
- package/dist/services/comments/prune-apply.d.ts +22 -0
- package/dist/services/comments/prune-apply.js +69 -2
- package/dist/services/compact/decision-tables.d.ts +0 -2
- package/dist/services/compact/decision-tables.js +0 -2
- package/dist/services/compact/request-transition-hook.js +0 -2
- package/dist/services/compact-history/compact-history-service.d.ts +0 -2
- package/dist/services/compact-history/compact-history-service.js +0 -1
- package/dist/services/compact-statusline/compact-lifecycle-store.js +0 -2
- package/dist/services/compact-statusline/compact-lifecycle-types.d.ts +0 -1
- package/dist/services/compact-statusline/compact-statusline-service.js +0 -4
- package/dist/services/config/config-rollback.js +0 -1
- package/dist/services/config/config-safety.d.ts +0 -1
- package/dist/services/config/config-safety.js +0 -1
- package/dist/services/config/config-service.d.ts +0 -1
- package/dist/services/config/config-service.js +0 -1
- package/dist/services/config/model-routing.d.ts +0 -3
- package/dist/services/config/model-routing.js +0 -5
- package/dist/services/container/container-lease.d.ts +0 -1
- package/dist/services/container/container-lease.js +0 -1
- package/dist/services/context/artifact-meta.js +0 -1
- package/dist/services/context/auto-compact-dispatcher-input.d.ts +0 -3
- package/dist/services/context/auto-compact-dispatcher.js +0 -14
- package/dist/services/context/auto-compact-reader-input.d.ts +0 -1
- package/dist/services/context/auto-compact-reader.d.ts +0 -2
- package/dist/services/context/auto-compact-reader.js +0 -7
- package/dist/services/context/auto-compact-types.d.ts +0 -11
- package/dist/services/context/auto-compact-types.js +0 -1
- package/dist/services/context/build-dispatch-system-prompt.d.ts +11 -29
- package/dist/services/context/build-dispatch-system-prompt.js +8 -27
- package/dist/services/context/codegraph-unavailable-block.d.ts +38 -0
- package/dist/services/context/codegraph-unavailable-block.js +77 -0
- package/dist/services/context/context-audit-hint.d.ts +0 -1
- package/dist/services/context/context-audit-hint.js +0 -1
- package/dist/services/context/context-audit.d.ts +0 -1
- package/dist/services/context/context-audit.js +0 -1
- package/dist/services/context/harness-window-config.d.ts +0 -4
- package/dist/services/context/harness-window-config.js +0 -4
- package/dist/services/context/main-session-monitor.d.ts +0 -2
- package/dist/services/context/main-session-monitor.js +0 -2
- package/dist/services/context/memory-index-reader.d.ts +0 -2
- package/dist/services/context/memory-index-reader.js +0 -1
- package/dist/services/context/memory-preflight-config.d.ts +0 -1
- package/dist/services/context/memory-preflight-service.d.ts +0 -1
- package/dist/services/context/memory-preflight-service.js +0 -3
- package/dist/services/context/memory-preflight-support.d.ts +0 -5
- package/dist/services/context/post-compact-reinjection.d.ts +0 -1
- package/dist/services/context/post-compact-reinjection.js +0 -1
- package/dist/services/context/summary-view.d.ts +0 -1
- package/dist/services/context/summary-view.js +0 -1
- package/dist/services/crystallization/crystallization-service.d.ts +5 -11
- package/dist/services/crystallization/crystallization-service.js +3 -11
- package/dist/services/crystallization/crystallization-store.d.ts +6 -6
- package/dist/services/dispatch/await-batch-helpers.js +0 -3
- package/dist/services/dispatch/await-batch.d.ts +0 -1
- package/dist/services/dispatch/await-batch.js +0 -4
- package/dist/services/dispatch/batch-counter.js +0 -1
- package/dist/services/dispatch/conflict-replay.d.ts +0 -1
- package/dist/services/dispatch/conflict-replay.js +0 -1
- package/dist/services/dispatch/contract-store.d.ts +0 -2
- package/dist/services/dispatch/contract-store.js +0 -2
- package/dist/services/dispatch/dispatch-record-input-types.d.ts +0 -2
- package/dist/services/dispatch/dispatch-record-types.d.ts +0 -10
- package/dist/services/dispatch/dispatch-record-upgrade-fields.js +0 -7
- package/dist/services/dispatch/dispatch-record-upgrade-guards.js +0 -2
- package/dist/services/dispatch/dispatch-record-writer.d.ts +0 -5
- package/dist/services/dispatch/dispatch-record-writer.js +0 -21
- package/dist/services/dispatch/dispatch-sub-agent.d.ts +0 -1
- package/dist/services/dispatch/dispatch-sub-agent.js +0 -1
- package/dist/services/dispatch/e2e-fixtures.js +0 -1
- package/dist/services/dispatch/file-overlap-wave-planner.d.ts +0 -1
- package/dist/services/dispatch/file-overlap-wave-planner.js +0 -1
- package/dist/services/dispatch/isolation-lease.d.ts +0 -2
- package/dist/services/dispatch/isolation-lease.js +0 -2
- package/dist/services/dispatch/service-shutdown.js +0 -1
- package/dist/services/dispatch/session-capsule.js +0 -1
- package/dist/services/dispatch/slice-dag-types.d.ts +0 -1
- package/dist/services/dispatch/slice-dag.js +0 -2
- package/dist/services/dispatch/stage-enum.d.ts +0 -1
- package/dist/services/dispatch/stage-enum.js +0 -1
- package/dist/services/dispatch/startup-timeout.d.ts +0 -1
- package/dist/services/dispatch/sub-agent-batch-await.js +0 -3
- package/dist/services/dispatch/sub-agent-dispatcher-types.d.ts +0 -1
- package/dist/services/dispatch/sub-agent-dispatcher.js +0 -2
- package/dist/services/dispatch/test-tool-detection.d.ts +0 -3
- package/dist/services/dispatch/test-tool-detection.js +0 -2
- package/dist/services/doctor/doctor-service/checks/codegraph-capability.js +19 -12
- package/dist/services/doctor/doctor-service/checks/codegraph-index-integrity.js +1 -2
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.d.ts +0 -2
- package/dist/services/doctor/doctor-service/checks/l3-memory-health.js +0 -2
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.d.ts +0 -1
- package/dist/services/doctor/doctor-service/checks/l3-orphan-sessions.js +0 -1
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.d.ts +0 -1
- package/dist/services/doctor/doctor-service/checks/multi-binary-drift.js +0 -3
- package/dist/services/doctor/doctor-service/checks/workspace-layout.js +0 -2
- package/dist/services/doctor/doctor-service/index.d.ts +0 -1
- package/dist/services/doctor/doctor-service/index.js +0 -1
- package/dist/services/doctor/doctor-service/plugin-registry.d.ts +0 -2
- package/dist/services/doctor/doctor-service/plugin-registry.js +0 -2
- package/dist/services/doctor/doctor-service/probe-types.d.ts +0 -4
- package/dist/services/doctor/doctor-service/report/final-summary.d.ts +0 -1
- package/dist/services/doctor/doctor-service/report/final-summary.js +0 -1
- package/dist/services/doctor/doctor-service/types.d.ts +0 -5
- package/dist/services/doctor/doctor-service/types.js +0 -1
- package/dist/services/doctor/doctor-service.d.ts +0 -1
- package/dist/services/doctor/doctor-service.js +0 -2
- package/dist/services/env/shell-probe.js +0 -1
- package/dist/services/evidence/evidence-generator.js +0 -8
- package/dist/services/evolution/evolution-constraints.d.ts +0 -2
- package/dist/services/evolution/evolution-constraints.js +0 -2
- package/dist/services/evolution/evolution-service.d.ts +2 -12
- package/dist/services/evolution/evolution-service.js +0 -9
- package/dist/services/evolution/evolution-store.d.ts +6 -8
- package/dist/services/evolution/evolution-store.js +1 -3
- package/dist/services/evolution/evolution-types.d.ts +0 -2
- package/dist/services/evolution/evolution-types.js +0 -6
- package/dist/services/evolution/independent-evaluator-runner.d.ts +0 -3
- package/dist/services/evolution/independent-evaluator-runner.js +0 -1
- package/dist/services/evolution/regression-skeptic-runner.d.ts +0 -1
- package/dist/services/feedback/feedback-promotion-service.d.ts +0 -8
- package/dist/services/feedback/feedback-promotion-service.js +0 -10
- package/dist/services/feedback/promotion-artifact-evidence.d.ts +0 -1
- package/dist/services/feedback/promotion-artifact-evidence.js +0 -1
- package/dist/services/final-review/final-review-evidence-budget.d.ts +0 -3
- package/dist/services/final-review/final-review-evidence-budget.js +0 -5
- package/dist/services/final-review/final-review-evidence-sources.d.ts +0 -1
- package/dist/services/final-review/final-review-evidence-sources.js +0 -1
- package/dist/services/final-review/final-review-output-budget.d.ts +0 -1
- package/dist/services/final-review/final-review-output-budget.js +0 -3
- package/dist/services/final-review/final-review-service.d.ts +0 -1
- package/dist/services/final-review/final-review-service.js +0 -1
- package/dist/services/fixture/fixture-capture-service.js +0 -1
- package/dist/services/fixture/fixture-sanitize-service.d.ts +0 -3
- package/dist/services/fixture/fixture-sanitize-service.js +0 -3
- package/dist/services/fresh-context/config.js +0 -1
- package/dist/services/fresh-context/fresh-context-block.js +0 -1
- package/dist/services/fresh-context/trigger-scan.d.ts +0 -1
- package/dist/services/fresh-context/trigger-scan.js +0 -1
- package/dist/services/fuzzy-matching/fzf-pick-service.d.ts +0 -1
- package/dist/services/fuzzy-matching/fzf-pick-service.js +0 -1
- package/dist/services/handoff/handoff-parser.d.ts +0 -1
- package/dist/services/handoff/handoff-parser.js +0 -1
- package/dist/services/handoff/handoff-types.d.ts +0 -1
- package/dist/services/handoff/handoff-types.js +0 -1
- package/dist/services/handoff/handoff-writer.d.ts +0 -1
- package/dist/services/handoff/handoff-writer.js +0 -1
- package/dist/services/hooks/auto-compact-hook-install.d.ts +0 -1
- package/dist/services/hooks/auto-compact-hook-install.js +0 -1
- package/dist/services/hooks/output.d.ts +0 -1
- package/dist/services/hooks/output.js +0 -1
- package/dist/services/hooks/pre-tool-code-gate.d.ts +0 -1
- package/dist/services/hooks/pre-tool-code-gate.js +0 -1
- package/dist/services/hooks/presence-marker-detector.js +0 -1
- package/dist/services/hooks/worktree-authorization-gate.d.ts +0 -3
- package/dist/services/hooks/worktree-authorization-gate.js +0 -1
- package/dist/services/ide/adapters/claude-code-adapter.d.ts +0 -5
- package/dist/services/ide/adapters/claude-code-adapter.js +0 -11
- package/dist/services/ide/adapters/qoder-adapter.d.ts +0 -3
- package/dist/services/ide/adapters/qoder-adapter.js +0 -5
- package/dist/services/ide/adapters/tongyi-lingma-adapter.d.ts +0 -2
- package/dist/services/ide/adapters/tongyi-lingma-adapter.js +0 -2
- package/dist/services/ide/adapters/trae-adapter.d.ts +0 -3
- package/dist/services/ide/adapters/trae-adapter.js +3 -6
- package/dist/services/ide/adapters/zcode-adapter.js +0 -2
- package/dist/services/ide/current-model-detector.js +0 -1
- package/dist/services/ide/hook-protocol.d.ts +0 -2
- package/dist/services/ide/hook-protocol.js +0 -2
- package/dist/services/ide/ide-compact-types.d.ts +0 -7
- package/dist/services/ide/ide-types.d.ts +0 -12
- package/dist/services/ide/resource-profile.d.ts +0 -1
- package/dist/services/job/job-commit-verification.d.ts +0 -2
- package/dist/services/job/job-commit-verification.js +0 -2
- package/dist/services/job/job-orchestrator.d.ts +0 -1
- package/dist/services/job/job-orchestrator.js +0 -1
- package/dist/services/job/job-progress-store.d.ts +0 -2
- package/dist/services/job/job-progress-store.js +0 -3
- package/dist/services/job/job-types.js +0 -1
- package/dist/services/job-snapshot/snapshot.js +0 -1
- package/dist/services/karpathy-cost/karpathy-cost-check-service.js +0 -1
- package/dist/services/legacy/legacy-detector.js +0 -1
- package/dist/services/log/log-commands-service.d.ts +0 -2
- package/dist/services/log/log-commands-service.js +0 -2
- package/dist/services/log/logger.d.ts +0 -1
- package/dist/services/log/logger.js +0 -1
- package/dist/services/log/redact.d.ts +0 -1
- package/dist/services/log/redact.js +0 -1
- package/dist/services/log/retention.d.ts +0 -1
- package/dist/services/log/retention.js +0 -1
- package/dist/services/loop/loop-bee-relation-service.d.ts +3 -3
- package/dist/services/loop/loop-bee-relation-service.js +14 -13
- package/dist/services/loop/loop-bee-relation-store.d.ts +9 -10
- package/dist/services/loop/loop-bee-relation-store.js +1 -2
- package/dist/services/loop/loop-bee-relation-types.d.ts +1 -1
- package/dist/services/loop/loop-bee-relation-types.js +1 -1
- package/dist/services/loop/loop-release-service.d.ts +3 -3
- package/dist/services/loop/loop-release-service.js +1 -1
- package/dist/services/loop/loop-release-store.d.ts +6 -7
- package/dist/services/loop/loop-release-store.js +0 -1
- package/dist/services/loop/monotonic-guard.d.ts +0 -1
- package/dist/services/loop/monotonic-guard.js +0 -1
- package/dist/services/memory/memory-ingest-service.js +0 -1
- package/dist/services/memory/project-context-service.d.ts +0 -1
- package/dist/services/memory/project-context-service.js +0 -1
- package/dist/services/memory/project-memory-service/index/reindex.d.ts +0 -2
- package/dist/services/memory/project-memory-service/index/reindex.js +0 -1
- package/dist/services/memory/project-memory-service/index/search.d.ts +0 -1
- package/dist/services/memory/project-memory-service/index/search.js +0 -1
- package/dist/services/memory/project-memory-service/memory-kinds.d.ts +0 -1
- package/dist/services/memory/project-memory-service/memory-kinds.js +0 -1
- package/dist/services/memory/project-memory-service/parsers/frontmatter.d.ts +0 -1
- package/dist/services/memory/project-memory-service/parsers/frontmatter.js +0 -1
- package/dist/services/memory/project-memory-service.js +0 -1
- package/dist/services/mode/mode-enforcement.js +0 -1
- package/dist/services/mode/mode-status-service.d.ts +0 -2
- package/dist/services/mode/mode-status-service.js +0 -2
- package/dist/services/observability/aggregation.d.ts +0 -4
- package/dist/services/observability/aggregation.js +0 -6
- package/dist/services/observability/observability-schema.js +0 -1
- package/dist/services/observability/observability-service.d.ts +0 -5
- package/dist/services/observability/observability-service.js +0 -4
- package/dist/services/observability/report-formatter.d.ts +0 -2
- package/dist/services/observability/report-formatter.js +0 -2
- package/dist/services/openspec/artifact-boundary.d.ts +0 -4
- package/dist/services/openspec/artifact-boundary.js +0 -4
- package/dist/services/openspec/coverage-evidence-reader.d.ts +0 -1
- package/dist/services/openspec/coverage-evidence-reader.js +0 -1
- package/dist/services/polyrepo/polyrepo-dispatcher.js +0 -1
- package/dist/services/polyrepo/polyrepo-scanner.js +0 -1
- package/dist/services/polyrepo/polyrepo-service.js +0 -1
- package/dist/services/polyrepo/polyrepo-types.d.ts +0 -1
- package/dist/services/prd/best-practice-auto-trigger.d.ts +0 -2
- package/dist/services/prd/best-practice-auto-trigger.js +0 -2
- package/dist/services/prd/gate-evidence-derivation.d.ts +0 -4
- package/dist/services/prd/gate-evidence-derivation.js +0 -5
- package/dist/services/prd/handoff-auto-regen.js +0 -5
- package/dist/services/prd/handoff-frontmatter-shape.d.ts +0 -2
- package/dist/services/prd/handoff-frontmatter-shape.js +0 -2
- package/dist/services/prd/handoff-frontmatter.d.ts +0 -1
- package/dist/services/prd/handoff-frontmatter.js +0 -2
- package/dist/services/prd/handoff-gate-evidence.d.ts +0 -1
- package/dist/services/prd/handoff-gate-evidence.js +0 -4
- package/dist/services/prd/handoff-path-resolution.d.ts +0 -7
- package/dist/services/prd/handoff-path-resolution.js +0 -10
- package/dist/services/prd/handoff-service.d.ts +0 -2
- package/dist/services/prd/handoff-service.js +0 -2
- package/dist/services/prd/handoff-types.d.ts +0 -2
- package/dist/services/prd/handoff-types.js +0 -1
- package/dist/services/prd/project-scan-bootstrap-service.d.ts +0 -1
- package/dist/services/prd/project-scan-bootstrap-service.js +0 -4
- package/dist/services/prd/project-scan-types.d.ts +0 -1
- package/dist/services/prd/project-scan-types.js +0 -1
- package/dist/services/preferences/preferences-service.d.ts +0 -1
- package/dist/services/preferences/preferences-service.js +0 -5
- package/dist/services/preferences/preferences-types.d.ts +0 -14
- package/dist/services/preferences/preferences-types.js +0 -4
- package/dist/services/progress/progress-service.js +0 -1
- package/dist/services/qa/bdd-test-style-verifier.d.ts +0 -1
- package/dist/services/qa/bdd-test-style-verifier.js +0 -1
- package/dist/services/qa/browser-event-logger.d.ts +0 -1
- package/dist/services/qa/browser-event-logger.js +0 -1
- package/dist/services/qa/browser-restart-detector.d.ts +0 -1
- package/dist/services/qa/browser-restart-detector.js +0 -1
- package/dist/services/qa/browser-reuse-hint.d.ts +0 -1
- package/dist/services/qa/browser-reuse-hint.js +0 -1
- package/dist/services/qa/qa-business-review-state.js +0 -2
- package/dist/services/qa/screenshot-archive-service.d.ts +0 -1
- package/dist/services/qa/screenshot-archive-service.js +0 -1
- package/dist/services/rd/impl.js +0 -1
- package/dist/services/rd/rd-service.d.ts +0 -5
- package/dist/services/rd/rd-service.js +0 -5
- package/dist/services/rd/reviewer-dispatch-policy.d.ts +0 -4
- package/dist/services/rd/reviewer-dispatch-policy.js +0 -4
- package/dist/services/rd/standards-diagnostic.js +0 -1
- package/dist/services/rd/tactical-stage.js +0 -1
- package/dist/services/rd-swarm/rd-swarm-types.d.ts +0 -1
- package/dist/services/rd-swarm/rd-swarm-types.js +0 -1
- package/dist/services/recommendations/installed-capability-detector.d.ts +0 -1
- package/dist/services/recommendations/installed-capability-detector.js +0 -1
- package/dist/services/release/version-precheck-service.d.ts +0 -2
- package/dist/services/release/version-precheck-service.js +0 -3
- package/dist/services/retrospective/retrospective-index.d.ts +0 -1
- package/dist/services/retrospective/retrospective-index.js +0 -1
- package/dist/services/retrospective/retrospective-show.d.ts +0 -1
- package/dist/services/retrospective/retrospective-show.js +0 -1
- package/dist/services/reviewer/model-family.js +0 -1
- package/dist/services/reviewer/reviewer-config.js +0 -1
- package/dist/services/reviewer/reviewer-service.d.ts +0 -1
- package/dist/services/reviewer/reviewer-service.js +0 -3
- package/dist/services/reviewer/selection-strategies.js +0 -1
- package/dist/services/runtime/runtime-detector.js +0 -1
- package/dist/services/runtime/runtime-service.d.ts +0 -2
- package/dist/services/runtime/vendor-adapter.d.ts +0 -7
- package/dist/services/runtime/vendors/claude-code.js +0 -1
- package/dist/services/runtime/vendors/codex.js +0 -1
- package/dist/services/runtime/vendors/copilot.js +0 -1
- package/dist/services/sc/sc-service.js +0 -6
- package/dist/services/scan/acceptance-coverage-service.js +0 -2
- package/dist/services/scan/api-diff-recorded.d.ts +0 -1
- package/dist/services/scan/api-diff-recorded.js +0 -1
- package/dist/services/scan/api-diff-service.d.ts +0 -1
- package/dist/services/scan/api-diff-service.js +0 -1
- package/dist/services/scan/api-diff-types.d.ts +0 -1
- package/dist/services/scan/api-diff-types.js +0 -1
- package/dist/services/scan/archetype-service.js +0 -1
- package/dist/services/scan/file-size-policy.d.ts +0 -1
- package/dist/services/scan/file-size-policy.js +0 -5
- package/dist/services/scan/file-size-scan.d.ts +0 -1
- package/dist/services/security/safe-settings-path.js +0 -1
- package/dist/services/session/binding-store.d.ts +0 -4
- package/dist/services/session/binding-store.js +0 -7
- package/dist/services/session/caller-binding-service.d.ts +0 -6
- package/dist/services/session/caller-binding-service.js +0 -4
- package/dist/services/session/caller-id-types.d.ts +0 -3
- package/dist/services/session/caller-id-types.js +0 -2
- package/dist/services/session/getSessionDir.js +0 -1
- package/dist/services/session/index.js +0 -1
- package/dist/services/session/platform-fallbacks.d.ts +0 -3
- package/dist/services/session/platform-fallbacks.js +0 -3
- package/dist/services/session/resolve-caller-id.d.ts +0 -2
- package/dist/services/session/resolve-caller-id.js +0 -2
- package/dist/services/session/session-binding-bridge.d.ts +0 -2
- package/dist/services/session/session-binding-bridge.js +0 -15
- package/dist/services/session/session-checkpoint-service.d.ts +0 -1
- package/dist/services/session/session-checkpoint-service.js +0 -1
- package/dist/services/session/session-manager.d.ts +0 -8
- package/dist/services/session/session-manager.js +0 -19
- package/dist/services/session/session-resume-service.d.ts +0 -1
- package/dist/services/session/session-resume-service.js +0 -1
- package/dist/services/share/bundle-reader.d.ts +2 -5
- package/dist/services/share/bundle-reader.js +6 -8
- package/dist/services/share/bundle-writer.d.ts +2 -2
- package/dist/services/skill/resume-detector.js +0 -3
- package/dist/services/skill/skill-scheduler.d.ts +0 -1
- package/dist/services/skill/skill-scheduler.js +0 -1
- package/dist/services/skill/skill-search-service.d.ts +0 -2
- package/dist/services/skill/skill-search-service.js +0 -2
- package/dist/services/skillhub/release-diff.d.ts +2 -2
- package/dist/services/skillhub/release-export.d.ts +2 -2
- package/dist/services/skillhub/release-gc-blobs.d.ts +2 -2
- package/dist/services/skillhub/release-import.d.ts +2 -2
- package/dist/services/skillhub/release-import.js +2 -1
- package/dist/services/skillhub/release-retain.d.ts +2 -2
- package/dist/services/skillhub/release-retain.js +2 -1
- package/dist/services/skillhub/sqlite-store.d.ts +3 -3
- package/dist/services/skillhub/sqlite-store.js +4 -5
- package/dist/services/skills/hooks-codegate-superpowers.d.ts +0 -3
- package/dist/services/skills/hooks-codegate-superpowers.js +0 -14
- package/dist/services/skills/hooks-settings-service.d.ts +0 -2
- package/dist/services/skills/hooks-settings-service.js +0 -6
- package/dist/services/skills/presence-lease-service.d.ts +0 -1
- package/dist/services/skills/presence-lease-service.js +0 -1
- package/dist/services/skills/session-start-hook-constants.d.ts +0 -4
- package/dist/services/skills/session-start-hook-constants.js +0 -4
- package/dist/services/skills/skill-presence-service.d.ts +0 -8
- package/dist/services/skills/skill-presence-service.js +0 -13
- package/dist/services/skills/skill-statusline-model.d.ts +0 -6
- package/dist/services/skills/skill-statusline-model.js +1 -4
- package/dist/services/skills/skill-statusline-renderer.d.ts +0 -1
- package/dist/services/skills/skill-statusline-renderer.js +0 -12
- package/dist/services/skills/skill-statusline-service.js +0 -6
- package/dist/services/skills/skill-statusline-sid-suffix.d.ts +0 -2
- package/dist/services/skills/skill-statusline-sid-suffix.js +0 -2
- package/dist/services/skills/statusline-palette.d.ts +0 -2
- package/dist/services/skills/statusline-palette.js +0 -3
- package/dist/services/slice/slice-archive-service.js +0 -1
- package/dist/services/slice/slice-benchmark-service.d.ts +0 -1
- package/dist/services/slice/slice-benchmark-service.js +0 -1
- package/dist/services/slice/slice-check-service.js +0 -6
- package/dist/services/slice/slice-check-types.d.ts +0 -1
- package/dist/services/slice/slice-pick-service.d.ts +0 -1
- package/dist/services/slice/slice-pick-service.js +0 -1
- package/dist/services/slice/slice-review-state.js +0 -2
- package/dist/services/sqlite/sqlite-driver.d.ts +118 -0
- package/dist/services/sqlite/sqlite-driver.js +159 -0
- package/dist/services/standards/ide-aware-standards-service.d.ts +0 -2
- package/dist/services/standards/ide-aware-standards-service.js +0 -1
- package/dist/services/standards/loop-engineering-readiness-lint.d.ts +0 -1
- package/dist/services/standards/loop-engineering-readiness-lint.js +0 -1
- package/dist/services/standards/migrate-claude-rules-service.js +0 -3
- package/dist/services/standards/migrate-service.d.ts +0 -1
- package/dist/services/standards/migrate-service.js +0 -1
- package/dist/services/standards/missing-standards-detector.d.ts +0 -2
- package/dist/services/standards/missing-standards-detector.js +0 -3
- package/dist/services/standards/project-standards-service.d.ts +0 -1
- package/dist/services/standards/project-standards-service.js +0 -1
- package/dist/services/standards/standards-render.d.ts +0 -1
- package/dist/services/standards/standards-render.js +0 -1
- package/dist/services/standards/ui-library-dispatch-block.d.ts +0 -1
- package/dist/services/standards/ui-library-dispatch-block.js +0 -1
- package/dist/services/tech/tech-change-id-service.d.ts +0 -7
- package/dist/services/tech/tech-change-id-service.js +0 -7
- package/dist/services/tech/tech-service.js +0 -5
- package/dist/services/verdict/envelope-parsers.d.ts +0 -2
- package/dist/services/verdict/envelope-parsers.js +0 -2
- package/dist/services/verdict/envelopes.d.ts +0 -1
- package/dist/services/vm/vm-lease.js +0 -1
- package/dist/services/web/aria-node.d.ts +0 -1
- package/dist/services/web/bounded-output.d.ts +0 -1
- package/dist/services/web/bounded-output.js +0 -1
- package/dist/services/web/browser-acquire.js +0 -1
- package/dist/services/web/browser-cache-probe.js +0 -1
- package/dist/services/web/browser-session-manager.js +0 -1
- package/dist/services/web/daemon-entry.js +0 -1
- package/dist/services/web/daemon-registry.js +0 -1
- package/dist/services/web/daemon-supervisor.d.ts +4 -3
- package/dist/services/web/daemon-supervisor.js +4 -4
- package/dist/services/web/playwright-loader.js +0 -1
- package/dist/services/web/playwright-types.d.ts +0 -1
- package/dist/services/web/snapshot-pruner.js +0 -1
- package/dist/services/web/untrusted-envelope.d.ts +0 -1
- package/dist/services/web/web-artifact-paths.js +0 -1
- package/dist/services/web/web-client.d.ts +0 -1
- package/dist/services/web/web-daemon-service.js +0 -1
- package/dist/services/web/web-fallback.d.ts +0 -1
- package/dist/services/web/web-fallback.js +0 -1
- package/dist/services/web/web-install-service.js +0 -1
- package/dist/services/web/web-login-profile.js +0 -1
- package/dist/services/web/web-protocol.d.ts +0 -1
- package/dist/services/web/web-protocol.js +0 -1
- package/dist/services/web/web-status-report.js +0 -1
- package/dist/services/workflow/artifact-paths.js +0 -3
- package/dist/services/workflow/autonomous-resume-writer.js +0 -2
- package/dist/services/workflow/pipeline-verify-gate-support.d.ts +0 -5
- package/dist/services/workflow/pipeline-verify-gate-support.js +0 -11
- package/dist/services/workflow/pipeline-verify-service.d.ts +0 -2
- package/dist/services/workflow/pipeline-verify-service.js +0 -15
- package/dist/services/workflow/pipeline-verify-types.d.ts +0 -10
- package/dist/services/workflow/pipeline-verify-types.js +0 -2
- package/dist/services/workflow/plan-reader.d.ts +0 -1
- package/dist/services/workflow/plan-reader.js +0 -5
- package/dist/services/workflow/plan-refresher.js +0 -2
- package/dist/services/workflow/plan-trigger-detector.d.ts +0 -2
- package/dist/services/workflow/plan-trigger-detector.js +0 -3
- package/dist/services/workflow/workflow-autonomous-resume-helpers.js +0 -5
- package/dist/services/workflow/workflow-autonomous-service.js +0 -2
- package/dist/services/workflow/workflow-autonomous-types.d.ts +0 -2
- package/dist/services/workflow/workflow-autonomous-types.js +0 -2
- package/dist/services/workflow/workflow-graph-types.d.ts +0 -1
- package/dist/services/workflow/workflow-graph-types.js +0 -1
- package/dist/services/workflow/workflow-router-service.js +0 -4
- package/dist/services/workflow/workflow-skip-service.d.ts +0 -1
- package/dist/services/workflow/workflow-skip-service.js +0 -1
- package/dist/services/workflow/workflow-spec-lint.d.ts +0 -2
- package/dist/services/workflow/workflow-spec-lint.js +0 -2
- package/dist/services/workflow/workflow-spec-types.d.ts +0 -1
- package/dist/services/workflow/workflow-spec-types.js +0 -1
- package/dist/services/workflow/workflow-spec-yaml.d.ts +0 -2
- package/dist/services/workflow/workflow-spec-yaml.js +0 -2
- package/dist/services/workflow/workflow-spec.js +0 -1
- package/dist/services/workflow/workflow-state-store.js +0 -1
- package/dist/services/workspace/claude-settings-template.d.ts +0 -4
- package/dist/services/workspace/claude-settings-template.js +0 -4
- package/dist/services/workspace/migrate-1-4-1-service.d.ts +0 -1
- package/dist/services/workspace/migrate-1-4-1-service.js +0 -1
- package/dist/services/workspace/migrate-service.js +0 -8
- package/dist/services/workspace/migrate-types.d.ts +0 -4
- package/dist/services/workspace/migrate-types.js +0 -1
- package/dist/services/workspace/reconcile-migrate.d.ts +0 -3
- package/dist/services/workspace/reconcile-migrate.js +0 -5
- package/dist/services/workspace/reconcile-service.d.ts +0 -3
- package/dist/services/workspace/reconcile-service.js +0 -7
- package/dist/services/workspace/reconcile-types.d.ts +0 -5
- package/dist/services/workspace/sid-naming-guard.d.ts +0 -1
- package/dist/services/workspace/sid-naming-guard.js +0 -1
- package/dist/services/workspace/templates/project-scan/index.d.ts +0 -3
- package/dist/services/workspace/templates/project-scan/index.js +0 -3
- package/dist/services/workspace/workspace-claude-settings-materializer.d.ts +0 -1
- package/dist/services/workspace/workspace-claude-settings-materializer.js +0 -4
- package/dist/services/workspace/workspace-service.d.ts +0 -7
- package/dist/services/workspace/workspace-service.js +0 -16
- package/dist/services/worktree/playwright-profile.js +0 -1
- package/dist/services/worktree/worktree-lease-types.d.ts +0 -1
- package/dist/services/worktree/worktree-lease-types.js +0 -1
- package/dist/services/worktree/worktree-lease.d.ts +0 -2
- package/dist/services/worktree/worktree-lease.js +0 -2
- package/dist/shared/format-md-compact.d.ts +0 -2
- package/dist/shared/format-md-compact.js +0 -2
- package/dist/shared/incrementing-number.d.ts +0 -1
- package/dist/shared/incrementing-number.js +0 -1
- package/dist/shared/path-utils.d.ts +0 -1
- package/dist/shared/path-utils.js +0 -1
- package/dist/shared/runtime-root.d.ts +0 -1
- package/dist/shared/runtime-root.js +0 -1
- package/dist/shared/stale-policy.d.ts +0 -1
- package/dist/shared/stale-policy.js +0 -1
- package/package.json +12 -10
- package/scripts/canonical-store-link.mjs +296 -0
- package/scripts/canonical-store-prune.mjs +131 -0
- package/scripts/canonical-store.mjs +298 -0
- package/scripts/install-skills.mjs +175 -383
- package/skills/peaks-audit/SKILL.md +3 -3
- package/dist/services/codegraph/codegraph-include-reconciler.d.ts +0 -10
- package/dist/services/codegraph/codegraph-include-reconciler.js +0 -160
|
@@ -0,0 +1,266 @@
|
|
|
1
|
+
// src/services/comments/comment-spans.ts
|
|
2
|
+
//
|
|
3
|
+
// WHERE THE COMMENTS ACTUALLY ARE, read from the text the way a lexer reads it.
|
|
4
|
+
//
|
|
5
|
+
// version of this reader was line-local: a line was a comment if it began with `//`, a
|
|
6
|
+
// block opener, or `*`, and a code line's trailing comment was `raw.indexOf('//')`
|
|
7
|
+
// guarded by a quote-count parity check. Applying the pruner to the real tree then wrote
|
|
8
|
+
// a corrupted file. `feedback-promotion-service.ts` holds a one-line template literal
|
|
9
|
+
// whose CONTENT starts with a double slash — it is a snippet the CLI prints for users:
|
|
10
|
+
//
|
|
11
|
+
// snippet: `// src/services/code/mode-gate.ts\n// 1. Add to HardFloorCategory union…`,
|
|
12
|
+
//
|
|
13
|
+
// The reader saw code + trailing comment, the pruner cut at the first double slash, and
|
|
14
|
+
// the result was an unterminated template literal committed into `src/`. The quote parity
|
|
15
|
+
// guard could not have caught it: the text before the cut contains NO quotes at all, so
|
|
16
|
+
// its count is even, and "even" looked safe. Parity of a count is not the same as knowing
|
|
17
|
+
// what character you are inside of.
|
|
18
|
+
//
|
|
19
|
+
// So this walks the file as ONE stream with an explicit notion of where it is: code, a
|
|
20
|
+
// single- or double-quoted string, a template literal (whose `${ … }` re-enters code, so
|
|
21
|
+
// a nested template, or a real comment, inside an interpolation follows the same rules),
|
|
22
|
+
// a regex literal, a line comment, or a block comment.
|
|
23
|
+
//
|
|
24
|
+
// REGEX IS NOT OPTIONAL DETAIL, and finding that out is why this file is bigger than the
|
|
25
|
+
// bug it fixes. `/https?:\/\//g` — a shape this repository has a hundred files of —
|
|
26
|
+
// carries a real adjacent pair of slashes, made of an escaped one next to the closing
|
|
27
|
+
// delimiter. A stream that does not know it is inside a regex reads that pair as a
|
|
28
|
+
// comment and would cut code through it: the same accident as the template literal above,
|
|
29
|
+
// reached from a different direction. Whether a `/` opens a regex or divides is decided by
|
|
30
|
+
// what could end a value before it, which is the standard test; a word is only a value if
|
|
31
|
+
// it is not `return`/`typeof`/`case`/…, because `return /x/` is the one place the naive
|
|
32
|
+
// version of that test is wrong.
|
|
33
|
+
//
|
|
34
|
+
// ONE MACHINE, TWO QUESTIONS. `commentSpans` asks "where are the comments";
|
|
35
|
+
// `endsInsideLiteral` asks "does this text stop inside something open". Both run the same
|
|
36
|
+
// walk below, because two copies of a state machine is the defect class this repository
|
|
37
|
+
// files most often — and the second question is the one the prune proof had to learn to
|
|
38
|
+
// ask: `startsWith` is true of every truncation, so it cannot tell a revealed comment
|
|
39
|
+
// from a string cut in half.
|
|
40
|
+
//
|
|
41
|
+
// A HANDLER PER REGION, not one function of nested ifs: the first working version was a
|
|
42
|
+
// 126-line loop that both `max-lines-per-function` and `complexity` refused, and they were
|
|
43
|
+
// right — `HANDLERS` below is the state diagram, where a single else-chain was not.
|
|
44
|
+
//
|
|
45
|
+
// NOT A PARSER, AND DELIBERATELY SO: `typescript` is a devDependency, so product code
|
|
46
|
+
// cannot import it without handing the shipped CLI a runtime dependency. The parity
|
|
47
|
+
// between this walk and the real TypeScript lexer is asserted in
|
|
48
|
+
// `tests/unit/comments/comment-scan-parity.test.ts`, which MAY use `ts` — the check lives
|
|
49
|
+
// where the dependency already is, instead of the dependency following the check into
|
|
50
|
+
// every user's `node_modules`.
|
|
51
|
+
/**
|
|
52
|
+
* Words after which a `/` is a regex, not division. `return /x/` is the case that makes
|
|
53
|
+
* "an identifier ends a value" wrong often enough to matter.
|
|
54
|
+
*/
|
|
55
|
+
const VALUE_ENDING_BEFORE_REGEX = /^(?:return|typeof|instanceof|in|of|new|delete|void|throw|case|do|else|yield|await)$/;
|
|
56
|
+
const char = (w, offset = 0) => w.source.charAt(w.at + offset);
|
|
57
|
+
/** Report the comment that opened at `spanStart`. */
|
|
58
|
+
function emitSpan(w, end, endLine) {
|
|
59
|
+
w.emit({
|
|
60
|
+
start: w.spanStart,
|
|
61
|
+
end,
|
|
62
|
+
line: w.spanLine,
|
|
63
|
+
endLine,
|
|
64
|
+
text: w.source.slice(w.spanStart, end)
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
/** A finished word: only a non-keyword one can end a value. */
|
|
68
|
+
function endWord(w) {
|
|
69
|
+
if (w.word === '')
|
|
70
|
+
return;
|
|
71
|
+
w.afterValue = !VALUE_ENDING_BEFORE_REGEX.test(w.word);
|
|
72
|
+
w.word = '';
|
|
73
|
+
}
|
|
74
|
+
function inLineComment(w) {
|
|
75
|
+
if (char(w) !== '\n')
|
|
76
|
+
return;
|
|
77
|
+
emitSpan(w, w.at, w.line - 1);
|
|
78
|
+
w.region = 'code';
|
|
79
|
+
w.afterValue = false;
|
|
80
|
+
}
|
|
81
|
+
function inBlockComment(w) {
|
|
82
|
+
if (char(w) !== '*' || char(w, 1) !== '/')
|
|
83
|
+
return;
|
|
84
|
+
emitSpan(w, w.at + 2, w.line);
|
|
85
|
+
w.at += 1;
|
|
86
|
+
w.region = 'code';
|
|
87
|
+
w.afterValue = false;
|
|
88
|
+
}
|
|
89
|
+
function inString(w) {
|
|
90
|
+
const c = char(w);
|
|
91
|
+
if (c === '\\')
|
|
92
|
+
w.at += 1;
|
|
93
|
+
else if (c === (w.region === 'single' ? "'" : '"')) {
|
|
94
|
+
w.region = 'code';
|
|
95
|
+
w.afterValue = true;
|
|
96
|
+
}
|
|
97
|
+
else if (c === '\n') {
|
|
98
|
+
// An unterminated string cannot survive to a newline in valid source. Resuming as
|
|
99
|
+
// code keeps one stray quote from deciding that the rest of the FILE is a string,
|
|
100
|
+
// which is the failure mode that turns every later comment invisible.
|
|
101
|
+
w.region = 'code';
|
|
102
|
+
w.afterValue = false;
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
function inTemplate(w) {
|
|
106
|
+
const c = char(w);
|
|
107
|
+
if (c === '\\')
|
|
108
|
+
w.at += 1;
|
|
109
|
+
else if (c === '`') {
|
|
110
|
+
w.region = 'code';
|
|
111
|
+
w.afterValue = true;
|
|
112
|
+
}
|
|
113
|
+
else if (c === '$' && char(w, 1) === '{') {
|
|
114
|
+
w.interpolations.push(w.at);
|
|
115
|
+
w.at += 1;
|
|
116
|
+
w.region = 'code';
|
|
117
|
+
w.afterValue = false;
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
/** A regex, or the inside of its `[…]` class where `/` is an ordinary character. */
|
|
121
|
+
function inRegex(w) {
|
|
122
|
+
const c = char(w);
|
|
123
|
+
if (c === '\\')
|
|
124
|
+
w.at += 1;
|
|
125
|
+
else if (c === '[')
|
|
126
|
+
w.region = 'class';
|
|
127
|
+
else if (c === ']' && w.region === 'class')
|
|
128
|
+
w.region = 'regex';
|
|
129
|
+
else if (c === '/' && w.region === 'regex') {
|
|
130
|
+
w.region = 'code';
|
|
131
|
+
w.afterValue = true;
|
|
132
|
+
}
|
|
133
|
+
else if (c === '\n') {
|
|
134
|
+
// No regex crosses a line, so a newline means the `/` was division after all.
|
|
135
|
+
w.region = 'code';
|
|
136
|
+
w.afterValue = false;
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
/** A `}` in code: it closes the innermost open `${`, and only that one. */
|
|
140
|
+
function closeInterpolation(w) {
|
|
141
|
+
w.afterValue = true;
|
|
142
|
+
if (w.interpolations.length === 0)
|
|
143
|
+
return;
|
|
144
|
+
w.interpolations.pop();
|
|
145
|
+
w.region = 'template';
|
|
146
|
+
}
|
|
147
|
+
/** Enter a string or template region, or report that this character starts none. */
|
|
148
|
+
function enterLiteral(w, c) {
|
|
149
|
+
if (c !== "'" && c !== '"' && c !== '`')
|
|
150
|
+
return false;
|
|
151
|
+
w.region = c === "'" ? 'single' : c === '"' ? 'double' : 'template';
|
|
152
|
+
w.afterValue = false;
|
|
153
|
+
return true;
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* A slash in code. A comment opens on `//` or a block opener; a lone slash is a regex
|
|
157
|
+
* exactly where a value cannot have just ended, and division everywhere else.
|
|
158
|
+
*/
|
|
159
|
+
function readSlash(w, next) {
|
|
160
|
+
if (next === '/' || next === '*') {
|
|
161
|
+
w.region = next === '/' ? 'line' : 'block';
|
|
162
|
+
w.spanStart = w.at;
|
|
163
|
+
w.spanLine = w.line;
|
|
164
|
+
w.afterValue = false;
|
|
165
|
+
return;
|
|
166
|
+
}
|
|
167
|
+
w.region = w.afterValue ? 'code' : 'regex';
|
|
168
|
+
w.afterValue = false;
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* What each bracket says about "has a value just ended": an opener means the next slash
|
|
172
|
+
* cannot be division, a closer means it can. A table so `inCode` stays a reader's size.
|
|
173
|
+
*/
|
|
174
|
+
const BRACKET_ENDS_VALUE = {
|
|
175
|
+
'(': false,
|
|
176
|
+
'[': false,
|
|
177
|
+
')': true,
|
|
178
|
+
']': true
|
|
179
|
+
};
|
|
180
|
+
function inCode(w) {
|
|
181
|
+
const c = char(w);
|
|
182
|
+
if (/[A-Za-z0-9_$]/.test(c)) {
|
|
183
|
+
w.word += c;
|
|
184
|
+
return;
|
|
185
|
+
}
|
|
186
|
+
endWord(w);
|
|
187
|
+
if (enterLiteral(w, c))
|
|
188
|
+
return;
|
|
189
|
+
if (c === '{')
|
|
190
|
+
w.afterValue = false;
|
|
191
|
+
else if (c === '}')
|
|
192
|
+
closeInterpolation(w);
|
|
193
|
+
else if (c in BRACKET_ENDS_VALUE)
|
|
194
|
+
w.afterValue = BRACKET_ENDS_VALUE[c] ?? false;
|
|
195
|
+
else if (c === '/')
|
|
196
|
+
readSlash(w, char(w, 1));
|
|
197
|
+
else if (!/\s/.test(c))
|
|
198
|
+
w.afterValue = false;
|
|
199
|
+
}
|
|
200
|
+
/** One handler per state. THIS TABLE IS THE STATE DIAGRAM — read the regions off it. */
|
|
201
|
+
const HANDLERS = {
|
|
202
|
+
code: inCode,
|
|
203
|
+
single: inString,
|
|
204
|
+
double: inString,
|
|
205
|
+
template: inTemplate,
|
|
206
|
+
regex: inRegex,
|
|
207
|
+
class: inRegex,
|
|
208
|
+
line: inLineComment,
|
|
209
|
+
block: inBlockComment
|
|
210
|
+
};
|
|
211
|
+
/**
|
|
212
|
+
* Walk `source`, report every comment, and return the region the text ENDED in.
|
|
213
|
+
*
|
|
214
|
+
* The return value is what makes `endsInsideLiteral` possible without a second machine: a
|
|
215
|
+
* caller that truncated some text wants to know whether the survivor is complete.
|
|
216
|
+
*/
|
|
217
|
+
function walkCode(source, onComment) {
|
|
218
|
+
const w = {
|
|
219
|
+
source,
|
|
220
|
+
at: 0,
|
|
221
|
+
line: 1,
|
|
222
|
+
region: 'code',
|
|
223
|
+
afterValue: false,
|
|
224
|
+
word: '',
|
|
225
|
+
interpolations: [],
|
|
226
|
+
spanStart: 0,
|
|
227
|
+
spanLine: 1,
|
|
228
|
+
emit: onComment
|
|
229
|
+
};
|
|
230
|
+
while (w.at < source.length) {
|
|
231
|
+
// Counted BEFORE dispatch, so a line comment closing on a newline reports the line
|
|
232
|
+
// it was written on, not the one after it. A handler that consumes a second character
|
|
233
|
+
// (an escape, a `*/`) advances `at` itself and the driver's step lands past it.
|
|
234
|
+
if (source.charAt(w.at) === '\n')
|
|
235
|
+
w.line += 1;
|
|
236
|
+
HANDLERS[w.region](w);
|
|
237
|
+
w.at += 1;
|
|
238
|
+
}
|
|
239
|
+
endWord(w);
|
|
240
|
+
if (w.region === 'block' || w.region === 'line')
|
|
241
|
+
emitSpan(w, source.length, w.line);
|
|
242
|
+
return w.region;
|
|
243
|
+
}
|
|
244
|
+
/**
|
|
245
|
+
* Every comment in `source`, in order.
|
|
246
|
+
*
|
|
247
|
+
* `text` is sliced from the original so a caller can cut at `start` and keep the code
|
|
248
|
+
* that was already there — which is the operation the pruner must get exactly right.
|
|
249
|
+
*/
|
|
250
|
+
export function commentSpans(source) {
|
|
251
|
+
const spans = [];
|
|
252
|
+
walkCode(source, (span) => spans.push(span));
|
|
253
|
+
return spans;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Does this code stop INSIDE something open?
|
|
257
|
+
*
|
|
258
|
+
* The question the comment-only proof had to learn to ask. `original.startsWith(kept)` is
|
|
259
|
+
* true of EVERY truncation, so it cannot tell a revealed comment from a string cut in
|
|
260
|
+
* half; a prefix that ends inside a quote, a template or a regex is a different program,
|
|
261
|
+
* whatever it starts with. This is what would have refused the write that left
|
|
262
|
+
* `snippet: \`` in `src/`.
|
|
263
|
+
*/
|
|
264
|
+
export function endsInsideLiteral(code) {
|
|
265
|
+
return walkCode(code, () => { }) !== 'code';
|
|
266
|
+
}
|
|
@@ -49,6 +49,28 @@ export declare function actionsByFile(actions: readonly PruneAction[]): Map<stri
|
|
|
49
49
|
* so a dry run reports the refusals a real run would hit.
|
|
50
50
|
*/
|
|
51
51
|
export declare function proofViolations(before: readonly string[], after: readonly string[], actions: readonly PruneAction[]): string[];
|
|
52
|
+
/**
|
|
53
|
+
* The blank lines a set of drops ORPHANS.
|
|
54
|
+
*
|
|
55
|
+
* A comment standing alone between two blanks is the only thing separating two blocks:
|
|
56
|
+
*
|
|
57
|
+
* }
|
|
58
|
+
* ← blank
|
|
59
|
+
* ← blank
|
|
60
|
+
* type AuditEnvelopeGuard<T> = …
|
|
61
|
+
*
|
|
62
|
+
* Deleting the comment joins the two blanks into a double blank, which is not what the
|
|
63
|
+
* file said before and not what any formatter will keep. So the drop owns that blank line
|
|
64
|
+
* — it is the residue of a comment removal, not an edit of someone's whitespace. Only a
|
|
65
|
+
* blank that becomes adjacent to another blank THROUGH a drop is claimed here: a double
|
|
66
|
+
* blank the repository already carries is left exactly where it is, because the pruner did
|
|
67
|
+
* not make it and has no business "fixing" it.
|
|
68
|
+
*
|
|
69
|
+
* ONE HELPER, BOTH CALLERS: `pruneFileLines` removes these and `proofViolations` allows
|
|
70
|
+
* them. A second copy of this rule is the defect class this whole feature answers, so the
|
|
71
|
+
* writer and the checker ask the same function the same question.
|
|
72
|
+
*/
|
|
73
|
+
export declare function orphanedBlanks(before: readonly string[], dropped: ReadonlySet<number>): Set<number>;
|
|
52
74
|
/** Apply one file's actions to its lines, in the plan's own terms. */
|
|
53
75
|
export declare function pruneFileLines(lines: readonly string[], actions: readonly PruneAction[]): string[];
|
|
54
76
|
/**
|
|
@@ -9,6 +9,7 @@
|
|
|
9
9
|
*/
|
|
10
10
|
import { existsSync, readFileSync, writeFileSync } from 'node:fs';
|
|
11
11
|
import { join } from 'node:path';
|
|
12
|
+
import { endsInsideLiteral } from './comment-spans.js';
|
|
12
13
|
/**
|
|
13
14
|
* Read a file, or report that it is not there — a prune never creates one.
|
|
14
15
|
*
|
|
@@ -62,12 +63,17 @@ export function actionsByFile(actions) {
|
|
|
62
63
|
*/
|
|
63
64
|
export function proofViolations(before, after, actions) {
|
|
64
65
|
const dropped = new Set(actions.filter((a) => a.mode === 'drop-line').map((a) => a.line));
|
|
66
|
+
// The blanks the drops orphan are removed on purpose too — the SAME function the writer
|
|
67
|
+
// uses decides, so the proof can never be persuaded to allow more than the writer does.
|
|
68
|
+
const removed = new Set(dropped);
|
|
69
|
+
for (const blank of orphanedBlanks(before, dropped))
|
|
70
|
+
removed.add(blank);
|
|
65
71
|
const stripped = new Set(actions.filter((a) => a.mode === 'strip-trailing').map((a) => a.line));
|
|
66
72
|
const violations = [];
|
|
67
73
|
let afterAt = 0;
|
|
68
74
|
before.forEach((original, index) => {
|
|
69
75
|
const line = index + 1;
|
|
70
|
-
if (
|
|
76
|
+
if (removed.has(line))
|
|
71
77
|
return; // deleted on purpose
|
|
72
78
|
if (stripped.has(line)) {
|
|
73
79
|
// The only thing a strip may do is reveal the code that was already there, so
|
|
@@ -77,6 +83,13 @@ export function proofViolations(before, after, actions) {
|
|
|
77
83
|
afterAt += 1;
|
|
78
84
|
if (!original.startsWith(kept))
|
|
79
85
|
violations.push(`line ${line}: code text changed`);
|
|
86
|
+
// The prefix test above is true of EVERY truncation, which is how a strip that
|
|
87
|
+
// cut a template literal in half passed it. `startsWith` says nothing about
|
|
88
|
+
// whether what survives is still complete code, so that is asked separately.
|
|
89
|
+
// refused the write that left `snippet: \`` in `src/`.)
|
|
90
|
+
else if (endsInsideLiteral(kept)) {
|
|
91
|
+
violations.push(`line ${line}: strip left an unterminated literal — the code changed`);
|
|
92
|
+
}
|
|
80
93
|
return;
|
|
81
94
|
}
|
|
82
95
|
if (after[afterAt] !== original)
|
|
@@ -87,14 +100,68 @@ export function proofViolations(before, after, actions) {
|
|
|
87
100
|
violations.push(`produced ${after.length - afterAt} extra line(s)`);
|
|
88
101
|
return violations;
|
|
89
102
|
}
|
|
103
|
+
/**
|
|
104
|
+
* The blank lines a set of drops ORPHANS.
|
|
105
|
+
*
|
|
106
|
+
* A comment standing alone between two blanks is the only thing separating two blocks:
|
|
107
|
+
*
|
|
108
|
+
* }
|
|
109
|
+
* ← blank
|
|
110
|
+
* ← blank
|
|
111
|
+
* type AuditEnvelopeGuard<T> = …
|
|
112
|
+
*
|
|
113
|
+
* Deleting the comment joins the two blanks into a double blank, which is not what the
|
|
114
|
+
* file said before and not what any formatter will keep. So the drop owns that blank line
|
|
115
|
+
* — it is the residue of a comment removal, not an edit of someone's whitespace. Only a
|
|
116
|
+
* blank that becomes adjacent to another blank THROUGH a drop is claimed here: a double
|
|
117
|
+
* blank the repository already carries is left exactly where it is, because the pruner did
|
|
118
|
+
* not make it and has no business "fixing" it.
|
|
119
|
+
*
|
|
120
|
+
* ONE HELPER, BOTH CALLERS: `pruneFileLines` removes these and `proofViolations` allows
|
|
121
|
+
* them. A second copy of this rule is the defect class this whole feature answers, so the
|
|
122
|
+
* writer and the checker ask the same function the same question.
|
|
123
|
+
*/
|
|
124
|
+
export function orphanedBlanks(before, dropped) {
|
|
125
|
+
const orphaned = new Set();
|
|
126
|
+
let lastKept = 0; // 1-based line number of the last line that survived
|
|
127
|
+
for (let index = 0; index < before.length; index += 1) {
|
|
128
|
+
const line = index + 1;
|
|
129
|
+
if (dropped.has(line))
|
|
130
|
+
continue;
|
|
131
|
+
const isBlank = (before[index] ?? '').trim() === '';
|
|
132
|
+
if (isBlank && lastKept > 0 && (before[lastKept - 1] ?? '').trim() === '') {
|
|
133
|
+
// Every original line between the two blanks was dropped, or this blank is the
|
|
134
|
+
// join the drop created. Anything else was a double blank before this run began.
|
|
135
|
+
// A blank is claimed ONLY when a drop actually sits between it and the previous
|
|
136
|
+
// surviving blank: `between` must be non-empty, because `[].every(…)` is true and
|
|
137
|
+
// an empty gap is a double blank the repository already had — which this run did
|
|
138
|
+
// not make and has no business touching.
|
|
139
|
+
const between = range(lastKept + 1, line - 1);
|
|
140
|
+
if (between.length > 0 && between.every((n) => dropped.has(n)))
|
|
141
|
+
orphaned.add(line);
|
|
142
|
+
}
|
|
143
|
+
lastKept = line;
|
|
144
|
+
}
|
|
145
|
+
return orphaned;
|
|
146
|
+
}
|
|
147
|
+
/** Inclusive integer range, empty when `from > to`. */
|
|
148
|
+
function range(from, to) {
|
|
149
|
+
const out = [];
|
|
150
|
+
for (let n = from; n <= to; n += 1)
|
|
151
|
+
out.push(n);
|
|
152
|
+
return out;
|
|
153
|
+
}
|
|
90
154
|
/** Apply one file's actions to its lines, in the plan's own terms. */
|
|
91
155
|
export function pruneFileLines(lines, actions) {
|
|
92
156
|
const drop = new Set(actions.filter((a) => a.mode === 'drop-line').map((a) => a.line));
|
|
157
|
+
const gone = new Set(drop);
|
|
158
|
+
for (const blank of orphanedBlanks(lines, drop))
|
|
159
|
+
gone.add(blank);
|
|
93
160
|
const strip = new Map(actions.filter((a) => a.mode === 'strip-trailing').map((a) => [a.line, a.comment]));
|
|
94
161
|
const out = [];
|
|
95
162
|
lines.forEach((original, index) => {
|
|
96
163
|
const line = index + 1;
|
|
97
|
-
if (
|
|
164
|
+
if (gone.has(line))
|
|
98
165
|
return;
|
|
99
166
|
if (strip.has(line)) {
|
|
100
167
|
// Cut where the scan's comment text starts, not at the first `//` in the line:
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Strategic-compact decision tables (slice 2026-07-01-strategic-compact-cli).
|
|
3
2
|
*
|
|
4
3
|
* Pure data + lookup helpers. No I/O. The byte-for-byte text mirrors the
|
|
5
4
|
* "Compaction Decision Guide" + "What Survives Compaction" tables in
|
|
@@ -9,7 +8,6 @@
|
|
|
9
8
|
* The `peaks compact recommend` + `peaks compact survival` + `peaks
|
|
10
9
|
* compact dry-run` primitives read from these tables; any change to the
|
|
11
10
|
* upstream skill table must be mirrored here and re-asserted by the
|
|
12
|
-
* `tests/unit/cli/compact-command.test.ts` regression suite.
|
|
13
11
|
*/
|
|
14
12
|
export type Phase = 'research' | 'planning' | 'implementation' | 'testing' | 'debugging';
|
|
15
13
|
export declare const PHASES: readonly Phase[];
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Strategic-compact decision tables (slice 2026-07-01-strategic-compact-cli).
|
|
3
2
|
*
|
|
4
3
|
* Pure data + lookup helpers. No I/O. The byte-for-byte text mirrors the
|
|
5
4
|
* "Compaction Decision Guide" + "What Survives Compaction" tables in
|
|
@@ -9,7 +8,6 @@
|
|
|
9
8
|
* The `peaks compact recommend` + `peaks compact survival` + `peaks
|
|
10
9
|
* compact dry-run` primitives read from these tables; any change to the
|
|
11
10
|
* upstream skill table must be mirrored here and re-asserted by the
|
|
12
|
-
* `tests/unit/cli/compact-command.test.ts` regression suite.
|
|
13
11
|
*/
|
|
14
12
|
export const PHASES = [
|
|
15
13
|
'research',
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Slice-boundary pre-compact hook (slice 2026-07-01-strategic-compact-cli).
|
|
3
2
|
*
|
|
4
3
|
* The RD → QA and QA → final-review slice-boundary transitions go
|
|
5
4
|
* through `peaks request transition`. When the active session is in
|
|
@@ -19,7 +18,6 @@
|
|
|
19
18
|
* auto-compact orchestrator asks the harness to compact and reports that
|
|
20
19
|
* it is waiting. It does not refuse sub-agent dispatch — peaks-loop has no
|
|
21
20
|
* executor for a running session, so a refusal gated nothing and deadlocked
|
|
22
|
-
* the runner (slice 2026-09-13-auto-compact-trigger-ownership).
|
|
23
21
|
*/
|
|
24
22
|
import { existsSync, readFileSync } from 'node:fs';
|
|
25
23
|
import { join } from 'node:path';
|
|
@@ -11,7 +11,6 @@ export interface CompactHistoryEvent {
|
|
|
11
11
|
readonly checkpointPath: string;
|
|
12
12
|
readonly dispatchMessage: string;
|
|
13
13
|
/**
|
|
14
|
-
* Slice 2026-09-13-auto-compact-trigger-ownership (T4): the window this
|
|
15
14
|
* dispatch divided by. `beforeRatio * windowTokens` is the token point
|
|
16
15
|
* peaks-loop asked the harness to compact at.
|
|
17
16
|
*/
|
|
@@ -27,7 +26,6 @@ export interface CompactHistoryEvent {
|
|
|
27
26
|
/** `observed` rows only: the measured post-compact ratio. */
|
|
28
27
|
readonly afterRatio?: number;
|
|
29
28
|
/**
|
|
30
|
-
* rid `2026-09-13-compact-event-settle`: what the HARNESS said caused the
|
|
31
29
|
* compaction — `manual` (a user ran `/compact`) or `auto` (the harness's own
|
|
32
30
|
* window fired). Written only by the `PostCompact` hook path, which is the
|
|
33
31
|
* only path a harness reports it on.
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
// src/services/compact-history/compact-history-service.ts
|
|
2
2
|
//
|
|
3
|
-
// Slice 2026-07-30-compact-visibility (slice 1/4). Pure-function
|
|
4
3
|
// reader for the .peaks/_runtime/<sessionId>/compact-history.jsonl
|
|
5
4
|
// file that auto-compact-orchestrator now appends to on every
|
|
6
5
|
// dispatch. The CLI surface `peaks compact history` and the
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
// src/services/compact-statusline/compact-lifecycle-store.ts
|
|
2
2
|
//
|
|
3
|
-
// Slice 2026-08-01-compact-lifecycle (Task 1/5). Pure persistence
|
|
4
3
|
// for the runtime *compact lifecycle* record that the auto-compact
|
|
5
4
|
// orchestrator writes on every state transition. The record is the
|
|
6
5
|
// single source of truth that downstream statusline / dashboard
|
|
@@ -20,7 +19,6 @@
|
|
|
20
19
|
// staleAfterMs. Terminal stages (`completed`, `failed`) NEVER go
|
|
21
20
|
// stalled — the record is the historical answer, not a heartbeat.
|
|
22
21
|
//
|
|
23
|
-
// Slice 2026-09-12-compact-band-policy (defect B): `armed` is a third
|
|
24
22
|
// category — a RESTING stage. It records a fact ("we registered a
|
|
25
23
|
// compact trigger") that stays true until a measurement supersedes it;
|
|
26
24
|
// no heartbeat was ever promised, so waiting in it is NORMAL and it
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
export type CompactLifecycleStage = 'queued' | 'preparing' | 'compacting'
|
|
2
2
|
/**
|
|
3
|
-
* Slice 2026-09-12-compact-band-policy: a compact trigger was
|
|
4
3
|
* REGISTERED but no compaction has started — e.g. claude-code's
|
|
5
4
|
* `ide-native` pathway only installs the PreToolUse hook, which
|
|
6
5
|
* compacts in-band at ratio ≥ 0.95. In the 0.80–0.95 band nothing
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
// src/services/compact-statusline/compact-statusline-service.ts
|
|
2
2
|
//
|
|
3
|
-
// Slice 2026-08-01-compact-lifecycle (Task 3/5). Pure semantic
|
|
4
3
|
// decision + render helper for the 'peaks statusline compact'
|
|
5
4
|
// indicator. Reads .peaks/_runtime/<sessionId>/compact-lifecycle.json
|
|
6
5
|
// first (the canonical source of truth) and falls back to the legacy
|
|
@@ -28,7 +27,6 @@
|
|
|
28
27
|
// none → 0 cells
|
|
29
28
|
// invalid → 0 cells (no false reassurance)
|
|
30
29
|
// stalled → keep the active stage's cell
|
|
31
|
-
// armed → NO bar at all (slice 2026-09-12-compact-band-policy):
|
|
32
30
|
// a registered-but-idle trigger has no progress to
|
|
33
31
|
// report, and a bar would imply one.
|
|
34
32
|
//
|
|
@@ -130,7 +128,6 @@ function decideLegacyFallback(input) {
|
|
|
130
128
|
// Priority 2 within legacy: a history row TESTIFIES that a compaction was
|
|
131
129
|
// witnessed, recently enough to still be the one being reported.
|
|
132
130
|
//
|
|
133
|
-
// Repair R9 (AC4). This used to read the file's mtime — freshness taken as
|
|
134
131
|
// evidence that "a compact just landed". Freshness is evidence of neither:
|
|
135
132
|
// the same file takes a `dispatch` row every time peaks-loop ASKS for a
|
|
136
133
|
// compact, and an ask is an intent, not an outcome. One real session
|
|
@@ -193,7 +190,6 @@ export function renderCompactStatusline(state) {
|
|
|
193
190
|
return `compact ${renderBar(2)}`;
|
|
194
191
|
case 'compacting':
|
|
195
192
|
return `compact ${renderBar(STAGE_CELL_COMPACTING)}`;
|
|
196
|
-
// Slice 2026-09-12-compact-band-policy: a registered trigger that has
|
|
197
193
|
// not fired is NOT progress. Rendering a bar would imply movement
|
|
198
194
|
// that is not happening, so `armed` deliberately renders no bar at
|
|
199
195
|
// all — the label states what is true and what would change it.
|
|
@@ -15,7 +15,6 @@ export function planRollback() {
|
|
|
15
15
|
export function executeRollback(opts) {
|
|
16
16
|
const plan = planRollback();
|
|
17
17
|
if (!plan.available) {
|
|
18
|
-
// rid 2026-09-13-two-decisions ①: a machine that never migrated has no
|
|
19
18
|
// `.bak`, and that is its normal state — `--apply` on such a machine is
|
|
20
19
|
// "nothing to roll back", not a failure. Returned instead of thrown so the
|
|
21
20
|
// exit status and the `available` key agree on every path; see
|
|
@@ -29,7 +29,6 @@ export declare function resolveProjectRootForConfig(startPath: string): string;
|
|
|
29
29
|
*/
|
|
30
30
|
export declare function resolveCanonicalProjectRoot(startPath: string): string;
|
|
31
31
|
/**
|
|
32
|
-
* Slice rid-statusline-stale-ux AC-2 + P1 H1 option A: strict
|
|
33
32
|
* canonicalization for use in trust-boundary paths (e.g.
|
|
34
33
|
* `peaks session primer`).
|
|
35
34
|
*
|
|
@@ -18,7 +18,6 @@ export declare function isConfigLayer(value: string): value is ConfigLayer;
|
|
|
18
18
|
/**
|
|
19
19
|
* Machine-scoped context-window override key, the config twin of the
|
|
20
20
|
* `PEAKS_CONTEXT_WINDOW_TOKENS` env var (slice
|
|
21
|
-
* 2026-09-09-context-window-override). Written with
|
|
22
21
|
* `peaks config set --key context.windowTokens --value <positive-int>`
|
|
23
22
|
* (user layer) so the user pins it once instead of exporting an env var
|
|
24
23
|
* in every shell.
|
|
@@ -200,7 +200,6 @@ export function isConfigLayer(value) {
|
|
|
200
200
|
/**
|
|
201
201
|
* Machine-scoped context-window override key, the config twin of the
|
|
202
202
|
* `PEAKS_CONTEXT_WINDOW_TOKENS` env var (slice
|
|
203
|
-
* 2026-09-09-context-window-override). Written with
|
|
204
203
|
* `peaks config set --key context.windowTokens --value <positive-int>`
|
|
205
204
|
* (user layer) so the user pins it once instead of exporting an env var
|
|
206
205
|
* in every shell.
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { type ModelProviderConfig, type PeaksConfig } from './config-types.js';
|
|
2
2
|
/**
|
|
3
|
-
* Slice 2026-07-09 add-zcode-adapter (A.3): replaces the legacy
|
|
4
3
|
* `STRONGEST_MODEL_ID = 'claude-opus-4-7'` constant (removed) with a dynamic
|
|
5
4
|
* resolver. The strongest planner/reviewer model is now derived
|
|
6
5
|
* from the active config instead of being hardcoded to a specific
|
|
@@ -24,7 +23,6 @@ export declare function getStrongestModelId(config?: {
|
|
|
24
23
|
model?: unknown;
|
|
25
24
|
}): string;
|
|
26
25
|
/**
|
|
27
|
-
* Slice 2026-07-09 add-zcode-adapter (Slice C, C.4): async variant
|
|
28
26
|
* of `getStrongestModelId`. Same precedence for layers 1 + 2, but
|
|
29
27
|
* layer 2.5 is the IDE's runtime probe (`detectCurrentIdeModel`)
|
|
30
28
|
* which is consulted BEFORE the env-var back-compat fallback.
|
|
@@ -53,7 +51,6 @@ export declare function getStrongestModelIdAsync(config?: {
|
|
|
53
51
|
}, runtimeProbeDisabled?: boolean): Promise<string>;
|
|
54
52
|
export declare function getConfiguredExecutionModelId(providers: ModelProviderConfig | undefined): string;
|
|
55
53
|
/**
|
|
56
|
-
* Slice 015 — typed exception for "no provider has a configured model".
|
|
57
54
|
* Lives next to its throw site so a downstream `instanceof` check survives
|
|
58
55
|
* any tree-shaking. CLI catch sites map this to the `INVALID_PROVIDERS`
|
|
59
56
|
* envelope code via `_cli-error-envelope.mapServiceError`.
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { detectCurrentIdeModel } from '../ide/current-model-detector.js';
|
|
2
2
|
/**
|
|
3
|
-
* Slice 2026-07-09 add-zcode-adapter (A.3): replaces the legacy
|
|
4
3
|
* `STRONGEST_MODEL_ID = 'claude-opus-4-7'` constant (removed) with a dynamic
|
|
5
4
|
* resolver. The strongest planner/reviewer model is now derived
|
|
6
5
|
* from the active config instead of being hardcoded to a specific
|
|
@@ -25,12 +24,10 @@ export function getStrongestModelId(config) {
|
|
|
25
24
|
const fromConfig = typeof raw === 'string' ? raw.trim() : undefined;
|
|
26
25
|
if (fromConfig)
|
|
27
26
|
return fromConfig;
|
|
28
|
-
// Slice 2026-07-09: back-compat fallback for test fixtures that
|
|
29
27
|
// pre-date this slice (SC §3.4 strategy A env-var override).
|
|
30
28
|
return process.env.PEAKS_STRONGEST_MODEL_DEFAULT ?? 'claude-opus-4-7';
|
|
31
29
|
}
|
|
32
30
|
/**
|
|
33
|
-
* Slice 2026-07-09 add-zcode-adapter (Slice C, C.4): async variant
|
|
34
31
|
* of `getStrongestModelId`. Same precedence for layers 1 + 2, but
|
|
35
32
|
* layer 2.5 is the IDE's runtime probe (`detectCurrentIdeModel`)
|
|
36
33
|
* which is consulted BEFORE the env-var back-compat fallback.
|
|
@@ -86,7 +83,6 @@ export function getConfiguredExecutionModelId(providers) {
|
|
|
86
83
|
return configuredModel;
|
|
87
84
|
}
|
|
88
85
|
/**
|
|
89
|
-
* Slice 015 — typed exception for "no provider has a configured model".
|
|
90
86
|
* Lives next to its throw site so a downstream `instanceof` check survives
|
|
91
87
|
* any tree-shaking. CLI catch sites map this to the `INVALID_PROVIDERS`
|
|
92
88
|
* envelope code via `_cli-error-envelope.mapServiceError`.
|
|
@@ -101,7 +97,6 @@ export function getEconomyAwareExecutionModelId(config) {
|
|
|
101
97
|
// Slice 2.0.1-bug1 round 3: economy is the project default. Treat undefined as enabled
|
|
102
98
|
// (matches the pre-slice implicit default from DEFAULT_CONFIG.economyMode = true). Only an
|
|
103
99
|
// explicit `economyMode === false` switches execution to the strongest planner/reviewer
|
|
104
|
-
// model (resolved dynamically per Slice 2026-07-09 add-zcode-adapter A.3).
|
|
105
100
|
return config.economyMode !== false
|
|
106
101
|
? getConfiguredExecutionModelId(config.providers)
|
|
107
102
|
: getStrongestModelId(config);
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* container-lease — pure-function lease store for `peaks container spawn`.
|
|
3
3
|
*
|
|
4
|
-
* Slice 2026-07-29-worktree-l2-extended Part 12 (L4 container
|
|
5
4
|
* runtime). Mirrors the design of `worktree-lease.ts` (Part 1):
|
|
6
5
|
* - Pure function module: every helper takes the lease
|
|
7
6
|
* directory path as an argument and returns structured data.
|
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* container-lease — pure-function lease store for `peaks container spawn`.
|
|
3
3
|
*
|
|
4
|
-
* Slice 2026-07-29-worktree-l2-extended Part 12 (L4 container
|
|
5
4
|
* runtime). Mirrors the design of `worktree-lease.ts` (Part 1):
|
|
6
5
|
* - Pure function module: every helper takes the lease
|
|
7
6
|
* directory path as an argument and returns structured data.
|