peaks-loop 4.1.0 → 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 +75 -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/_register.js +2 -2
- 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 +1 -5
- 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/comments-commands.d.ts +14 -0
- package/dist/cli/commands/comments-commands.js +96 -0
- 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 +10 -1
- package/dist/cli/commands/core/session-command.js +0 -14
- package/dist/cli/commands/core/skill-command.js +1 -10
- package/dist/cli/commands/core/standards-command.js +1 -1
- 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 +16 -22
- package/dist/cli/commands/ecc-commands.js +38 -26
- 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 +8 -4
- 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 +4 -16
- 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 +1 -3
- package/dist/services/code/mode-gate-types.js +0 -2
- package/dist/services/code/mode-gate.d.ts +0 -5
- package/dist/services/code/mode-gate.js +1 -14
- 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/user-touchpoint-classifier.js +0 -7
- package/dist/services/code-review/ecc-bridge.d.ts +6 -7
- 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/citation-rules.d.ts +154 -0
- package/dist/services/comments/citation-rules.js +241 -0
- package/dist/services/comments/comment-audit.d.ts +68 -0
- package/dist/services/comments/comment-audit.js +121 -0
- package/dist/services/comments/comment-citations.d.ts +66 -0
- package/dist/services/comments/comment-citations.js +184 -0
- package/dist/services/comments/comment-hygiene.d.ts +105 -0
- package/dist/services/comments/comment-hygiene.js +170 -0
- package/dist/services/comments/comment-prune.d.ts +88 -0
- package/dist/services/comments/comment-prune.js +196 -0
- 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 +82 -0
- package/dist/services/comments/prune-apply.js +217 -0
- package/dist/services/comments/repo-path-probe.d.ts +43 -0
- package/dist/services/comments/repo-path-probe.js +78 -0
- package/dist/services/compact/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 -17
- package/dist/services/log/retention.js +0 -18
- 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/index.d.ts +1 -1
- package/dist/services/memory/project-memory-service/index.js +1 -1
- package/dist/services/memory/project-memory-service/memory-kinds.d.ts +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/store/atomic-write.d.ts +19 -7
- package/dist/services/memory/project-memory-service/store/atomic-write.js +120 -26
- 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 +61 -2
- package/dist/services/prd/handoff-gate-evidence.d.ts +0 -1
- package/dist/services/prd/handoff-gate-evidence.js +12 -12
- 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 +11 -3
- package/dist/services/prd/handoff-service.js +11 -3
- package/dist/services/prd/handoff-types.d.ts +33 -3
- 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 +5 -6
- package/dist/services/recommendations/installed-capability-detector.js +11 -11
- 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-detection.d.ts +37 -0
- package/dist/services/scan/archetype-detection.js +175 -2
- package/dist/services/scan/archetype-service.js +36 -23
- 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/scan/scan-types.d.ts +9 -0
- 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/generated-artifacts-stamp.d.ts +2 -2
- package/dist/services/workspace/generated-artifacts-stamp.js +2 -2
- package/dist/services/workspace/migrate-1-4-1-service.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 +1 -17
- 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 -560
- package/skills/bee/peaks-qa/references/reading-handoff-frontmatter.md +3 -1
- package/skills/bee/peaks-rd/references/parallel-review-fanout.md +1 -1
- package/skills/bee/peaks-rd/references/rd-fanout-contracts.md +3 -2
- package/skills/bee/peaks-rd/references/writing-handoff-frontmatter.md +29 -7
- package/skills/peaks-audit/SKILL.md +3 -3
- package/skills/peaks-code/references/frontend-only-mode.md +2 -2
- package/skills/peaks-code/references/startup-sequence.md +0 -4
- package/dist/cli/commands/upgrade-commands.d.ts +0 -25
- package/dist/cli/commands/upgrade-commands.js +0 -154
- package/dist/services/codegraph/codegraph-include-reconciler.d.ts +0 -10
- package/dist/services/codegraph/codegraph-include-reconciler.js +0 -160
- package/dist/services/upgrade/1x-detector-service.d.ts +0 -7
- package/dist/services/upgrade/1x-detector-service.js +0 -96
- package/dist/services/upgrade/gitignore-migrate-service.d.ts +0 -56
- package/dist/services/upgrade/gitignore-migrate-service.js +0 -170
- package/dist/services/upgrade/upgrade-service.d.ts +0 -81
- package/dist/services/upgrade/upgrade-service.js +0 -428
- package/skills/peaks-code/references/step-0-55-1x-detection.md +0 -83
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comment-only views of a source file, and whether a citation it makes holds.
|
|
3
|
+
*
|
|
4
|
+
* The shape and candidate rules live in `citation-rules.ts`, shared with the
|
|
5
|
+
* repository's citation guard; this module holds the two things that rule needs in
|
|
6
|
+
* order to be applied: the comment lines of a file, and the probes that answer
|
|
7
|
+
* "does this path resolve here".
|
|
8
|
+
*
|
|
9
|
+
* Deliberately NOT `ts.getLeadingCommentRanges`:
|
|
10
|
+
* `src/services/qa/bdd-test-style-verifier.ts` records that the API returns zero
|
|
11
|
+
* ranges for comment-only blocks, which would silently read a header comment as no
|
|
12
|
+
* comment at all. The spans come from `comment-spans.ts` instead, which keeps both
|
|
13
|
+
* order and line numbers — what the worklist and the prune both need — and knows
|
|
14
|
+
* what character it is inside, which a per-line rule cannot.
|
|
15
|
+
*/
|
|
16
|
+
import { type Citation } from './citation-rules.js';
|
|
17
|
+
/** One source line, with its 1-based number, as the classifier sees it. */
|
|
18
|
+
export type CommentLine = {
|
|
19
|
+
readonly line: number;
|
|
20
|
+
readonly text: string;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* The comment lines of a file: full-line comments, plus the trailing comment of a
|
|
24
|
+
* code line. Non-comment lines are omitted but their numbers survive, so a report
|
|
25
|
+
* can point at the code a comment is attached to.
|
|
26
|
+
*
|
|
27
|
+
* Derived from `commentSpans`, which reads the text as a stream. The previous version
|
|
28
|
+
* decided per line and was wrong in both directions at once: a `//` inside a template
|
|
29
|
+
* literal became a comment (and then a deletion that cut the literal open), while a
|
|
30
|
+
* block comment's interior line that does not start with `*` was missed.
|
|
31
|
+
*/
|
|
32
|
+
export declare function commentLines(source: string): CommentLine[];
|
|
33
|
+
/**
|
|
34
|
+
* The path-shaped backtick spans in a line, in order, with their bounds kept.
|
|
35
|
+
*
|
|
36
|
+
* The bounds are not decoration: two of the candidate rules read the text OUTSIDE
|
|
37
|
+
* the span — an illustration cue sits immediately before it, a `<…>` fill-in wraps
|
|
38
|
+
* it — so a caller that discards positions cannot apply them.
|
|
39
|
+
*/
|
|
40
|
+
export declare function citations(text: string): Citation[];
|
|
41
|
+
/** Every path-shaped span in a line, without its bounds. */
|
|
42
|
+
export declare function citedPaths(text: string): string[];
|
|
43
|
+
/**
|
|
44
|
+
* The workspace package a citing file belongs to, or null at the repository root.
|
|
45
|
+
*
|
|
46
|
+
* In a pnpm workspace, `src/x.ts` written inside `packages/<name>/src/` names that
|
|
47
|
+
* package's own file, not a repository-root one: three comments in this repository cite
|
|
48
|
+
* `packages/peaks-loop-internal-runtime/src/status-protocol.ts` and
|
|
49
|
+
* `packages/peaks-loop-shared-channel/src/index.ts` by their package-relative spelling,
|
|
50
|
+
* and both files exist. Treating those as dead references would seed a ratchet with
|
|
51
|
+
* findings that refuse the next honest package-internal citation, so the package root is
|
|
52
|
+
* an origin — for a citing file that is itself inside a package, and never for a
|
|
53
|
+
* top-level one.
|
|
54
|
+
*/
|
|
55
|
+
export declare function packageRootOf(citingFileRel: string): string | null;
|
|
56
|
+
/**
|
|
57
|
+
* Does this path-shaped citation resolve anywhere it is allowed to resolve?
|
|
58
|
+
*
|
|
59
|
+
* `installed` must be a filesystem-only probe, not the ignore-widened one:
|
|
60
|
+
* `node_modules` is itself in `.gitignore`, so an ignore-aware answer here is
|
|
61
|
+
* "yes, installed" for every first segment, and the whole dead-reference count
|
|
62
|
+
* collapses to zero while looking perfectly healthy. Measured, not theorised.
|
|
63
|
+
*/
|
|
64
|
+
export declare function citationResolves(citation: string, citingFileRel: string, exists: (relPath: string) => boolean, installed?: (relPath: string) => boolean): boolean;
|
|
65
|
+
/** The default existence probe, against a real working tree. */
|
|
66
|
+
export declare function treeExists(repoRoot: string): (relPath: string) => boolean;
|
|
@@ -0,0 +1,184 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Comment-only views of a source file, and whether a citation it makes holds.
|
|
3
|
+
*
|
|
4
|
+
* The shape and candidate rules live in `citation-rules.ts`, shared with the
|
|
5
|
+
* repository's citation guard; this module holds the two things that rule needs in
|
|
6
|
+
* order to be applied: the comment lines of a file, and the probes that answer
|
|
7
|
+
* "does this path resolve here".
|
|
8
|
+
*
|
|
9
|
+
* Deliberately NOT `ts.getLeadingCommentRanges`:
|
|
10
|
+
* `src/services/qa/bdd-test-style-verifier.ts` records that the API returns zero
|
|
11
|
+
* ranges for comment-only blocks, which would silently read a header comment as no
|
|
12
|
+
* comment at all. The spans come from `comment-spans.ts` instead, which keeps both
|
|
13
|
+
* order and line numbers — what the worklist and the prune both need — and knows
|
|
14
|
+
* what character it is inside, which a per-line rule cannot.
|
|
15
|
+
*/
|
|
16
|
+
import { existsSync } from 'node:fs';
|
|
17
|
+
import { dirname, join } from 'node:path';
|
|
18
|
+
import { LINE_SUFFIX, PATH_SHAPED, REPO_ANCHORS, SESSION_WORKSPACE_DIRS, SYNTHETIC_SEGMENT } from './citation-rules.js';
|
|
19
|
+
import { commentSpans } from './comment-spans.js';
|
|
20
|
+
/** Repo-relative paths are POSIX even on a Windows host, or every lookup below
|
|
21
|
+
* compares a `src\a.ts` against the forward-slash keys and the answer is always "no". */
|
|
22
|
+
function toPosix(path) {
|
|
23
|
+
return path.replace(/\\/g, '/');
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* The comment lines of a file: full-line comments, plus the trailing comment of a
|
|
27
|
+
* code line. Non-comment lines are omitted but their numbers survive, so a report
|
|
28
|
+
* can point at the code a comment is attached to.
|
|
29
|
+
*
|
|
30
|
+
* Derived from `commentSpans`, which reads the text as a stream. The previous version
|
|
31
|
+
* decided per line and was wrong in both directions at once: a `//` inside a template
|
|
32
|
+
* literal became a comment (and then a deletion that cut the literal open), while a
|
|
33
|
+
* block comment's interior line that does not start with `*` was missed.
|
|
34
|
+
*/
|
|
35
|
+
export function commentLines(source) {
|
|
36
|
+
const out = [];
|
|
37
|
+
const rows = source.split(/\r?\n/);
|
|
38
|
+
for (const span of commentSpans(source)) {
|
|
39
|
+
for (let line = span.line; line <= span.endLine; line += 1) {
|
|
40
|
+
const row = rows[line - 1];
|
|
41
|
+
if (row === undefined)
|
|
42
|
+
continue;
|
|
43
|
+
// The first line of a block comment that opens mid-code keeps only its own tail,
|
|
44
|
+
// so a caller never reads the code before `/*` as part of the comment.
|
|
45
|
+
const from = line === span.line ? span.start - lineStart(source, line) : 0;
|
|
46
|
+
out.push({ line, text: row.slice(Math.max(0, from)) });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return out;
|
|
50
|
+
}
|
|
51
|
+
/** The offset `source` has advanced by the start of 1-based `line`. */
|
|
52
|
+
function lineStart(source, line) {
|
|
53
|
+
let at = 0;
|
|
54
|
+
for (let n = 1; n < line; n += 1) {
|
|
55
|
+
const next = source.indexOf('\n', at);
|
|
56
|
+
if (next < 0)
|
|
57
|
+
return source.length;
|
|
58
|
+
at = next + 1;
|
|
59
|
+
}
|
|
60
|
+
return at;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* The path-shaped backtick spans in a line, in order, with their bounds kept.
|
|
64
|
+
*
|
|
65
|
+
* The bounds are not decoration: two of the candidate rules read the text OUTSIDE
|
|
66
|
+
* the span — an illustration cue sits immediately before it, a `<…>` fill-in wraps
|
|
67
|
+
* it — so a caller that discards positions cannot apply them.
|
|
68
|
+
*/
|
|
69
|
+
export function citations(text) {
|
|
70
|
+
const found = [];
|
|
71
|
+
for (const match of text.matchAll(/`([^`\s]+)`/g)) {
|
|
72
|
+
const span = match[1] ?? '';
|
|
73
|
+
const from = match.index ?? 0;
|
|
74
|
+
if (PATH_SHAPED.test(span)) {
|
|
75
|
+
found.push({ span, from, to: from + span.length + 2 });
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
return found;
|
|
79
|
+
}
|
|
80
|
+
/** Every path-shaped span in a line, without its bounds. */
|
|
81
|
+
export function citedPaths(text) {
|
|
82
|
+
return citations(text).map((citation) => citation.span);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Is this span a module specifier rather than a repo path? `peaks-loop-shared/result`
|
|
86
|
+
* in prose names an import, and no rule about files applies to it. Decided through
|
|
87
|
+
* the dependency tree instead of an allowlist: the first segment is checked against
|
|
88
|
+
* installed packages, so a new dependency needs no edit here. An allowlist of
|
|
89
|
+
* today's package names would turn every future one into a false finding — and a
|
|
90
|
+
* rule that is wrong the moment the repository grows is a rule that gets widened
|
|
91
|
+
* until it stops meaning anything.
|
|
92
|
+
*/
|
|
93
|
+
function isInstalledPackageName(head, second, installed) {
|
|
94
|
+
const name = head.startsWith('@') && second !== undefined ? `${head}/${second}` : head;
|
|
95
|
+
return installed(`node_modules/${name}`);
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* The two shapes a citation may clear without touching the tree: an installed
|
|
99
|
+
* package's module specifier, and a session-runtime dir abbreviated in prose.
|
|
100
|
+
*/
|
|
101
|
+
function resolvesOutsideTheTree(stripped, exists, installed) {
|
|
102
|
+
const [head, second] = stripped.split('/');
|
|
103
|
+
if (head === undefined)
|
|
104
|
+
return false;
|
|
105
|
+
if (isInstalledPackageName(head, second, installed))
|
|
106
|
+
return true;
|
|
107
|
+
return SESSION_WORKSPACE_DIRS.has(head) && !REPO_ANCHORS.test(stripped);
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* The workspace package a citing file belongs to, or null at the repository root.
|
|
111
|
+
*
|
|
112
|
+
* In a pnpm workspace, `src/x.ts` written inside `packages/<name>/src/` names that
|
|
113
|
+
* package's own file, not a repository-root one: three comments in this repository cite
|
|
114
|
+
* `packages/peaks-loop-internal-runtime/src/status-protocol.ts` and
|
|
115
|
+
* `packages/peaks-loop-shared-channel/src/index.ts` by their package-relative spelling,
|
|
116
|
+
* and both files exist. Treating those as dead references would seed a ratchet with
|
|
117
|
+
* findings that refuse the next honest package-internal citation, so the package root is
|
|
118
|
+
* an origin — for a citing file that is itself inside a package, and never for a
|
|
119
|
+
* top-level one.
|
|
120
|
+
*/
|
|
121
|
+
export function packageRootOf(citingFileRel) {
|
|
122
|
+
const segments = citingFileRel.split('/');
|
|
123
|
+
if (segments[0] !== 'packages' || segments[1] === undefined)
|
|
124
|
+
return null;
|
|
125
|
+
return `packages/${segments[1]}`;
|
|
126
|
+
}
|
|
127
|
+
/**
|
|
128
|
+
* Does the citation point at a file inside the citing file's OWN workspace package?
|
|
129
|
+
*
|
|
130
|
+
* `join` is POSIX-normalised on the way through, because a `packages\alpha/src/x.ts`
|
|
131
|
+
* key matches nothing on the host this repository is developed on.
|
|
132
|
+
*/
|
|
133
|
+
function resolvesInOwnPackage(stripped, citingFileRel, exists) {
|
|
134
|
+
const pkg = packageRootOf(citingFileRel);
|
|
135
|
+
return pkg !== null && exists(toPosix(join(pkg, stripped)));
|
|
136
|
+
}
|
|
137
|
+
/**
|
|
138
|
+
* The two origins a repo-anchored citation may be satisfied at: the repository root,
|
|
139
|
+
* or the workspace package the citing file itself lives in.
|
|
140
|
+
*
|
|
141
|
+
* Extracted because `citationResolves` is at the complexity ceiling the shipped rule
|
|
142
|
+
* sets, and an inlined `||` there would have been the second branch this file cannot
|
|
143
|
+
* afford — a limit that forces a helper out is the limit working, not the limit being
|
|
144
|
+
* in the way.
|
|
145
|
+
*/
|
|
146
|
+
function resolvesAtARootOrigin(stripped, citingFileRel, exists) {
|
|
147
|
+
return exists(stripped) || resolvesInOwnPackage(stripped, citingFileRel, exists);
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Does this path-shaped citation resolve anywhere it is allowed to resolve?
|
|
151
|
+
*
|
|
152
|
+
* `installed` must be a filesystem-only probe, not the ignore-widened one:
|
|
153
|
+
* `node_modules` is itself in `.gitignore`, so an ignore-aware answer here is
|
|
154
|
+
* "yes, installed" for every first segment, and the whole dead-reference count
|
|
155
|
+
* collapses to zero while looking perfectly healthy. Measured, not theorised.
|
|
156
|
+
*/
|
|
157
|
+
export function citationResolves(citation, citingFileRel, exists, installed = exists) {
|
|
158
|
+
const stripped = citation.replace(LINE_SUFFIX, '');
|
|
159
|
+
if (stripped.length === 0 || SYNTHETIC_SEGMENT.test(stripped))
|
|
160
|
+
return true;
|
|
161
|
+
if (resolvesOutsideTheTree(stripped, exists, installed))
|
|
162
|
+
return true;
|
|
163
|
+
if (resolvesAtARootOrigin(stripped, citingFileRel, exists))
|
|
164
|
+
return true;
|
|
165
|
+
// An anchored citation claims the repo root and nowhere else; anything that did
|
|
166
|
+
// not resolve above is dead.
|
|
167
|
+
if (REPO_ANCHORS.test(stripped))
|
|
168
|
+
return false;
|
|
169
|
+
// No repo anchor: read from the citing file's own directory and each ancestor
|
|
170
|
+
// below the repo root, which is where a sibling reference (a subdirectory path
|
|
171
|
+
// written by the file sitting next to it) actually points.
|
|
172
|
+
for (let dir = dirname(citingFileRel); dir.length > 0 && dir !== dirname(dir);) {
|
|
173
|
+
if (exists(toPosix(join(dir, stripped))))
|
|
174
|
+
return true;
|
|
175
|
+
dir = dirname(dir);
|
|
176
|
+
if (dir === '.')
|
|
177
|
+
return false;
|
|
178
|
+
}
|
|
179
|
+
return false;
|
|
180
|
+
}
|
|
181
|
+
/** The default existence probe, against a real working tree. */
|
|
182
|
+
export function treeExists(repoRoot) {
|
|
183
|
+
return (relPath) => existsSync(join(repoRoot, relPath));
|
|
184
|
+
}
|
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which comments are still worth their bytes to the next reader.
|
|
3
|
+
*
|
|
4
|
+
* Two categories are reported as hygiene debt, and they fail in different
|
|
5
|
+
* directions, so they are kept separate rather than summed into one number:
|
|
6
|
+
*
|
|
7
|
+
* - `dead-reference` — the comment asserts that some file exists by naming a
|
|
8
|
+
* path, and that path resolves nowhere the citation is allowed to mean. This
|
|
9
|
+
* is checkable, and it is the class that has already cost this repository a
|
|
10
|
+
* wrong decision: the header of `src/services/prd/handoff-gate-evidence.ts`
|
|
11
|
+
* described a pre-existing "no producer" state in the same voice as the
|
|
12
|
+
* current one, a reader took it as fact, and the fix was chased into
|
|
13
|
+
* `dist/` instead of the source.
|
|
14
|
+
* - `narrative` — the comment is about the work rather than the code: slice
|
|
15
|
+
* or `.peaks/docs/backlog.md`; in a source file it is re-read by every
|
|
16
|
+
* later agent, at their token cost, and it rots silently the moment the
|
|
17
|
+
* history it summarises moves.
|
|
18
|
+
*
|
|
19
|
+
* The narrative rule is a marker list, not a heuristic about length or
|
|
20
|
+
* sentence shape, precisely because a false positive here is worse than a false
|
|
21
|
+
* positive on `dead-reference`: a wrong `dead-reference` is visible in a diff as
|
|
22
|
+
* a removed path, while a wrong `narrative` deletes a reason someone wrote down
|
|
23
|
+
* on purpose. Every finding carries its matched marker for that reason — an
|
|
24
|
+
* unattributable finding is one nobody can review, and a rule nobody can review
|
|
25
|
+
* is a rule that will be widened until it stops mattering.
|
|
26
|
+
*/
|
|
27
|
+
/** Why a comment line was flagged. */
|
|
28
|
+
export type CommentFindingKind = 'dead-reference' | 'narrative';
|
|
29
|
+
export type CommentFinding = {
|
|
30
|
+
readonly file: string;
|
|
31
|
+
readonly line: number;
|
|
32
|
+
readonly kind: CommentFindingKind;
|
|
33
|
+
/** The path that does not resolve, or the marker that matched. Never prose. */
|
|
34
|
+
readonly matched: string;
|
|
35
|
+
readonly text: string;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Development-process markers. Each entry is a named rule so a report can say
|
|
39
|
+
* WHICH one fired — the failure mode this whole feature is modelled on is a
|
|
40
|
+
* refusal that could not name itself (the content scan in
|
|
41
|
+
* `src/services/memory/project-memory-service/store/atomic-write.ts` answered a
|
|
42
|
+
* ten-pattern `||` chain with `matchedTerm: null`).
|
|
43
|
+
*
|
|
44
|
+
* Order is significant and is the whole attribution: one line reports its FIRST
|
|
45
|
+
* match, so a specific marker must precede the general one that also fits it.
|
|
46
|
+
* the other way round would blame the wrong rule for every such line.
|
|
47
|
+
*/
|
|
48
|
+
export declare const NARRATIVE_MARKERS: ReadonlyArray<{
|
|
49
|
+
name: string;
|
|
50
|
+
pattern: RegExp;
|
|
51
|
+
}>;
|
|
52
|
+
/**
|
|
53
|
+
* Comments that are LOAD-BEARING: text some program parses as data, not prose it reads.
|
|
54
|
+
*
|
|
55
|
+
* These are exempt from BOTH kinds, because the prune acts on a finding of either kind and
|
|
56
|
+
* deleting any of them does not reduce debt — it removes an enforcement mechanism, or
|
|
57
|
+
* adds a finding to a gated row. Each shape names the reader that consumes it; a shape
|
|
58
|
+
* with no reader to point at is a guess, and guesses are what the 4.1.1 prune learned from
|
|
59
|
+
* `HARD_FLOOR_CATEGORIES` member in `src/services/code/mode-gate.ts`, which is the only
|
|
60
|
+
* thing backing this repo's one real layer-C promotion, and the gate-H backing check went
|
|
61
|
+
* red — `feedback-promotion-artifact.test.ts` AC5).
|
|
62
|
+
*
|
|
63
|
+
* - `promotion-evidence` — `src/services/feedback/promotion-source-comments.ts:79`
|
|
64
|
+
* (`citedMemories`) feeds `promotion-artifact-evidence.ts:214`, which decides whether a
|
|
65
|
+
* promoted rule is actually backed.
|
|
66
|
+
* - `grace-marker` — `scripts/lint/silent-warning-detector.mjs:149` subtracts a
|
|
67
|
+
* silent-warning finding for any line the offending node spans that carries
|
|
68
|
+
* `TODO(g2)`. Deleting the marker therefore RAISES `silentWarningCatchReturnNull` /
|
|
69
|
+
* `…EmptyCatch`, both of which may only go down.
|
|
70
|
+
* - `toolchain-directive` — `@ts-expect-error` and friends are read by the compiler (an
|
|
71
|
+
* unused one is itself an error) and `eslint-disable` by the lint leg; a paired disable
|
|
72
|
+
* like `src/services/compact-statusline/compact-statusline-cell-table.ts:72`+`:99`
|
|
73
|
+
* must move as a pair or the file starts reporting.
|
|
74
|
+
*/
|
|
75
|
+
export declare const LOAD_BEARING_SHAPES: ReadonlyArray<{
|
|
76
|
+
name: string;
|
|
77
|
+
pattern: RegExp;
|
|
78
|
+
}>;
|
|
79
|
+
/** Is this comment text consumed by a program? */
|
|
80
|
+
export declare function isLoadBearing(text: string): boolean;
|
|
81
|
+
export type CommentScanInput = {
|
|
82
|
+
/** Repo-relative path, e.g. `src/services/x/y.ts`. */
|
|
83
|
+
readonly file: string;
|
|
84
|
+
readonly source: string;
|
|
85
|
+
};
|
|
86
|
+
export type CommentScanOptions = {
|
|
87
|
+
/** Injected for tests; defaults to nothing-exists so a caller must decide. */
|
|
88
|
+
readonly exists?: (relPath: string) => boolean;
|
|
89
|
+
/** True for directories only; defaults to `exists`, which is true for both. */
|
|
90
|
+
readonly dirExists?: (relDir: string) => boolean;
|
|
91
|
+
/** Filesystem-only view of the tree, for the installed-package question.
|
|
92
|
+
* Defaults to `exists`. */
|
|
93
|
+
readonly installed?: (relPath: string) => boolean;
|
|
94
|
+
readonly kinds?: readonly CommentFindingKind[];
|
|
95
|
+
};
|
|
96
|
+
/** Every finding in one file, in line order. */
|
|
97
|
+
export declare function scanComments(input: CommentScanInput, options?: CommentScanOptions): CommentFinding[];
|
|
98
|
+
/** Per-file totals, which is the shape the gate ratchets and the worklist sorts by. */
|
|
99
|
+
export type CommentFileSummary = {
|
|
100
|
+
readonly file: string;
|
|
101
|
+
readonly commentLines: number;
|
|
102
|
+
readonly deadReferences: number;
|
|
103
|
+
readonly narrative: number;
|
|
104
|
+
};
|
|
105
|
+
export declare function summarize(input: CommentScanInput, findings: readonly CommentFinding[]): CommentFileSummary;
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Which comments are still worth their bytes to the next reader.
|
|
3
|
+
*
|
|
4
|
+
* Two categories are reported as hygiene debt, and they fail in different
|
|
5
|
+
* directions, so they are kept separate rather than summed into one number:
|
|
6
|
+
*
|
|
7
|
+
* - `dead-reference` — the comment asserts that some file exists by naming a
|
|
8
|
+
* path, and that path resolves nowhere the citation is allowed to mean. This
|
|
9
|
+
* is checkable, and it is the class that has already cost this repository a
|
|
10
|
+
* wrong decision: the header of `src/services/prd/handoff-gate-evidence.ts`
|
|
11
|
+
* described a pre-existing "no producer" state in the same voice as the
|
|
12
|
+
* current one, a reader took it as fact, and the fix was chased into
|
|
13
|
+
* `dist/` instead of the source.
|
|
14
|
+
* - `narrative` — the comment is about the work rather than the code: slice
|
|
15
|
+
* or `.peaks/docs/backlog.md`; in a source file it is re-read by every
|
|
16
|
+
* later agent, at their token cost, and it rots silently the moment the
|
|
17
|
+
* history it summarises moves.
|
|
18
|
+
*
|
|
19
|
+
* The narrative rule is a marker list, not a heuristic about length or
|
|
20
|
+
* sentence shape, precisely because a false positive here is worse than a false
|
|
21
|
+
* positive on `dead-reference`: a wrong `dead-reference` is visible in a diff as
|
|
22
|
+
* a removed path, while a wrong `narrative` deletes a reason someone wrote down
|
|
23
|
+
* on purpose. Every finding carries its matched marker for that reason — an
|
|
24
|
+
* unattributable finding is one nobody can review, and a rule nobody can review
|
|
25
|
+
* is a rule that will be widened until it stops mattering.
|
|
26
|
+
*/
|
|
27
|
+
import { citationResolves, citations, commentLines } from './comment-citations.js';
|
|
28
|
+
import { isCitationCandidate } from './citation-rules.js';
|
|
29
|
+
/**
|
|
30
|
+
* Development-process markers. Each entry is a named rule so a report can say
|
|
31
|
+
* WHICH one fired — the failure mode this whole feature is modelled on is a
|
|
32
|
+
* refusal that could not name itself (the content scan in
|
|
33
|
+
* `src/services/memory/project-memory-service/store/atomic-write.ts` answered a
|
|
34
|
+
* ten-pattern `||` chain with `matchedTerm: null`).
|
|
35
|
+
*
|
|
36
|
+
* Order is significant and is the whole attribution: one line reports its FIRST
|
|
37
|
+
* match, so a specific marker must precede the general one that also fits it.
|
|
38
|
+
* the other way round would blame the wrong rule for every such line.
|
|
39
|
+
*/
|
|
40
|
+
export const NARRATIVE_MARKERS = [
|
|
41
|
+
{ name: 'finding-id', pattern: /\b[DF]\d+\s+of\b/ },
|
|
42
|
+
{ name: 'acceptance-id', pattern: /\bAC-\d+\b/ },
|
|
43
|
+
{
|
|
44
|
+
name: 'slice-id',
|
|
45
|
+
pattern: /\bslice\s+(?:`?)?(?:20\d\d-\d\d-\d\d|rid-|change-|S\d+\b|0\d\d\b)/i
|
|
46
|
+
},
|
|
47
|
+
{ name: 'change-folder', pattern: /\b20\d\d-\d\d-\d\d-[a-z]+-[a-z-]+/ },
|
|
48
|
+
{ name: 'rid-id', pattern: /\brid-[a-z0-9][a-z0-9._-]*\b/i },
|
|
49
|
+
{
|
|
50
|
+
name: 'historical-voice',
|
|
51
|
+
pattern: /\b(used to (?:say|claim|read|write)|previously (?:named|said)|no longer (?:exists|ships|carries)|which never existed|did not exist)\b/i
|
|
52
|
+
},
|
|
53
|
+
{ name: 'deleted-test-ref', pattern: /\b(?:tests?|specs?)\b[^.]{0,48}\b(?:was|were) deleted\b/i },
|
|
54
|
+
{
|
|
55
|
+
name: 'guard-self-reference',
|
|
56
|
+
pattern: /\bthis (?:comment|header|paragraph|note) (?:says|claimed|documents|is )/i
|
|
57
|
+
}
|
|
58
|
+
];
|
|
59
|
+
/**
|
|
60
|
+
* Comments that are LOAD-BEARING: text some program parses as data, not prose it reads.
|
|
61
|
+
*
|
|
62
|
+
* These are exempt from BOTH kinds, because the prune acts on a finding of either kind and
|
|
63
|
+
* deleting any of them does not reduce debt — it removes an enforcement mechanism, or
|
|
64
|
+
* adds a finding to a gated row. Each shape names the reader that consumes it; a shape
|
|
65
|
+
* with no reader to point at is a guess, and guesses are what the 4.1.1 prune learned from
|
|
66
|
+
* `HARD_FLOOR_CATEGORIES` member in `src/services/code/mode-gate.ts`, which is the only
|
|
67
|
+
* thing backing this repo's one real layer-C promotion, and the gate-H backing check went
|
|
68
|
+
* red — `feedback-promotion-artifact.test.ts` AC5).
|
|
69
|
+
*
|
|
70
|
+
* - `promotion-evidence` — `src/services/feedback/promotion-source-comments.ts:79`
|
|
71
|
+
* (`citedMemories`) feeds `promotion-artifact-evidence.ts:214`, which decides whether a
|
|
72
|
+
* promoted rule is actually backed.
|
|
73
|
+
* - `grace-marker` — `scripts/lint/silent-warning-detector.mjs:149` subtracts a
|
|
74
|
+
* silent-warning finding for any line the offending node spans that carries
|
|
75
|
+
* `TODO(g2)`. Deleting the marker therefore RAISES `silentWarningCatchReturnNull` /
|
|
76
|
+
* `…EmptyCatch`, both of which may only go down.
|
|
77
|
+
* - `toolchain-directive` — `@ts-expect-error` and friends are read by the compiler (an
|
|
78
|
+
* unused one is itself an error) and `eslint-disable` by the lint leg; a paired disable
|
|
79
|
+
* like `src/services/compact-statusline/compact-statusline-cell-table.ts:72`+`:99`
|
|
80
|
+
* must move as a pair or the file starts reporting.
|
|
81
|
+
*/
|
|
82
|
+
export const LOAD_BEARING_SHAPES = [
|
|
83
|
+
{ name: 'promotion-evidence', pattern: /\.peaks\/memory\/[^\s`]+\.md/ },
|
|
84
|
+
{ name: 'grace-marker', pattern: /\bTODO\(g2\)/ },
|
|
85
|
+
{
|
|
86
|
+
name: 'toolchain-directive',
|
|
87
|
+
pattern: /(?:eslint-disable|prettier-ignore|@ts-[a-z-]+|@type\b|@vitest-slow|@covers\b)/
|
|
88
|
+
}
|
|
89
|
+
];
|
|
90
|
+
/** Is this comment text consumed by a program? */
|
|
91
|
+
export function isLoadBearing(text) {
|
|
92
|
+
return LOAD_BEARING_SHAPES.some((shape) => shape.pattern.test(text));
|
|
93
|
+
}
|
|
94
|
+
function deadReferenceFindings(entry, judge) {
|
|
95
|
+
const ctx = { file: judge.file, dirExists: judge.dirExists };
|
|
96
|
+
const out = [];
|
|
97
|
+
for (const citation of citations(entry.text)) {
|
|
98
|
+
if (!isCitationCandidate(citation, entry.text, ctx))
|
|
99
|
+
continue;
|
|
100
|
+
if (citationResolves(citation.span, judge.file, judge.exists, judge.installed))
|
|
101
|
+
continue;
|
|
102
|
+
out.push({
|
|
103
|
+
file: judge.file,
|
|
104
|
+
line: entry.line,
|
|
105
|
+
kind: 'dead-reference',
|
|
106
|
+
matched: citation.span,
|
|
107
|
+
text: entry.text.trim()
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
return out;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* One line, both readings. A line reports at most ONE narrative marker — its
|
|
114
|
+
* first — because the list is ordered specific-before-general, and a line that
|
|
115
|
+
* named every rule it matches would multiply the count without naming anything
|
|
116
|
+
* a reader could not already see.
|
|
117
|
+
*/
|
|
118
|
+
function classifyLine(entry, judge) {
|
|
119
|
+
// Before either kind: a load-bearing line is not debt under any reading, so it must not
|
|
120
|
+
// be reported as a dead reference either — the path it cites is evidence, not a claim
|
|
121
|
+
// about where a file lives.
|
|
122
|
+
if (isLoadBearing(entry.text))
|
|
123
|
+
return [];
|
|
124
|
+
const out = judge.kinds.has('dead-reference')
|
|
125
|
+
? deadReferenceFindings(entry, judge)
|
|
126
|
+
: [];
|
|
127
|
+
if (!judge.kinds.has('narrative'))
|
|
128
|
+
return out;
|
|
129
|
+
for (const marker of NARRATIVE_MARKERS) {
|
|
130
|
+
const hit = marker.pattern.exec(entry.text);
|
|
131
|
+
if (hit === null)
|
|
132
|
+
continue;
|
|
133
|
+
out.push({
|
|
134
|
+
file: judge.file,
|
|
135
|
+
line: entry.line,
|
|
136
|
+
kind: 'narrative',
|
|
137
|
+
matched: `${marker.name}:${hit[0].trim()}`,
|
|
138
|
+
text: entry.text.trim()
|
|
139
|
+
});
|
|
140
|
+
break;
|
|
141
|
+
}
|
|
142
|
+
return out;
|
|
143
|
+
}
|
|
144
|
+
/** Every finding in one file, in line order. */
|
|
145
|
+
export function scanComments(input, options = {}) {
|
|
146
|
+
const exists = options.exists ?? (() => false);
|
|
147
|
+
const judge = {
|
|
148
|
+
file: input.file,
|
|
149
|
+
exists,
|
|
150
|
+
installed: options.installed ?? exists,
|
|
151
|
+
dirExists: options.dirExists ?? exists,
|
|
152
|
+
kinds: new Set(options.kinds ?? ['dead-reference', 'narrative'])
|
|
153
|
+
};
|
|
154
|
+
const out = [];
|
|
155
|
+
for (const entry of commentLines(input.source)) {
|
|
156
|
+
out.push(...classifyLine(entry, judge));
|
|
157
|
+
}
|
|
158
|
+
return out;
|
|
159
|
+
}
|
|
160
|
+
function countKind(findings, kind) {
|
|
161
|
+
return findings.filter((finding) => finding.kind === kind).length;
|
|
162
|
+
}
|
|
163
|
+
export function summarize(input, findings) {
|
|
164
|
+
return {
|
|
165
|
+
file: input.file,
|
|
166
|
+
commentLines: commentLines(input.source).length,
|
|
167
|
+
deadReferences: countKind(findings, 'dead-reference'),
|
|
168
|
+
narrative: countKind(findings, 'narrative')
|
|
169
|
+
};
|
|
170
|
+
}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Remove the comments the scan says are debt — and prove nothing else moved.
|
|
3
|
+
*
|
|
4
|
+
* The actuator is the dangerous half of this feature: a classifier that is 86%
|
|
5
|
+
* precise only misinforms, but a pruner that is 86% precise deletes. So the
|
|
6
|
+
* deliverable here is not the deletion, it is the PROOF, and the proof is a
|
|
7
|
+
* structural check run on every file before it is written:
|
|
8
|
+
*
|
|
9
|
+
* - the diff is computed line-by-line against the plan, so a changed line that
|
|
10
|
+
* the scan never named is a violation, not a surprise;
|
|
11
|
+
* - every removed line must be a comment line, and a stripped trailing comment
|
|
12
|
+
* must leave its code byte-identical;
|
|
13
|
+
* - a line that carries a block-comment delimiter opening or closing ELSEWHERE
|
|
14
|
+
* is never removed, because deleting it would turn the rest of the comment into
|
|
15
|
+
* code — the one failure mode that makes this a compile error rather than a
|
|
16
|
+
* lost sentence;
|
|
17
|
+
* - a file whose line endings are mixed is left alone, since re-joining it would
|
|
18
|
+
* rewrite every line and the proof would stop meaning anything.
|
|
19
|
+
*
|
|
20
|
+
* Anything that fails the check is reported and NOT written. The ledger records
|
|
21
|
+
* every line removed, with the rule that fired, so a prune is reviewable after the
|
|
22
|
+
* fact instead of only before it.
|
|
23
|
+
*/
|
|
24
|
+
import type { CommentFinding, CommentFindingKind } from './comment-hygiene.js';
|
|
25
|
+
/** What the pruner will do to one line. */
|
|
26
|
+
export type PruneAction = {
|
|
27
|
+
readonly file: string;
|
|
28
|
+
readonly line: number;
|
|
29
|
+
readonly kind: CommentFindingKind;
|
|
30
|
+
readonly matched: string;
|
|
31
|
+
/** `drop-line` deletes the whole comment line; `strip-trailing` keeps the code. */
|
|
32
|
+
readonly mode: 'drop-line' | 'strip-trailing';
|
|
33
|
+
/** The full text of the line as it sits on disk right now. */
|
|
34
|
+
readonly lineText: string;
|
|
35
|
+
/** The comment as the SCAN saw it — for a trailing comment, not the whole line. */
|
|
36
|
+
readonly comment: string;
|
|
37
|
+
};
|
|
38
|
+
/** A finding the pruner refused to act on, with the reason. */
|
|
39
|
+
export type PruneSkip = {
|
|
40
|
+
readonly file: string;
|
|
41
|
+
readonly line: number;
|
|
42
|
+
readonly reason: string;
|
|
43
|
+
readonly text: string;
|
|
44
|
+
};
|
|
45
|
+
export type PruneOptions = {
|
|
46
|
+
readonly projectRoot: string;
|
|
47
|
+
/** Narrow to one category; the default is both, which is the accepted boundary. */
|
|
48
|
+
readonly kinds?: readonly CommentFindingKind[];
|
|
49
|
+
/** Restrict to one file, repo-relative — how a single-case proof is run. */
|
|
50
|
+
readonly onlyFile?: string;
|
|
51
|
+
/** Write the files. False (the default) plans and proves without touching disk. */
|
|
52
|
+
readonly apply?: boolean;
|
|
53
|
+
};
|
|
54
|
+
export type PruneResult = {
|
|
55
|
+
readonly scannedFiles: number;
|
|
56
|
+
readonly planned: number;
|
|
57
|
+
readonly dropped: number;
|
|
58
|
+
readonly stripped: number;
|
|
59
|
+
readonly skipped: number;
|
|
60
|
+
readonly touchedFiles: readonly string[];
|
|
61
|
+
readonly notWritten: readonly string[];
|
|
62
|
+
readonly ledgerPath: string;
|
|
63
|
+
readonly actions: readonly PruneAction[];
|
|
64
|
+
readonly skips: readonly PruneSkip[];
|
|
65
|
+
readonly applied: boolean;
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Decide the fate of every finding.
|
|
69
|
+
*
|
|
70
|
+
* The line is re-read here and passed back through `commentLines`, the scan's own
|
|
71
|
+
* extractor, rather than compared against the whole line: a trailing comment's
|
|
72
|
+
* recorded text is the comment, not the code before it, and an equality test on the
|
|
73
|
+
* raw line would reject every one of them. Re-using the extractor is what makes the
|
|
74
|
+
* plan and the scan agree BY CONSTRUCTION instead of by two copies of a rule — the
|
|
75
|
+
* defect class this whole feature is a reply to.
|
|
76
|
+
*/
|
|
77
|
+
export declare function planPrune(options: PruneOptions, findings: readonly CommentFinding[]): {
|
|
78
|
+
actions: PruneAction[];
|
|
79
|
+
skips: PruneSkip[];
|
|
80
|
+
};
|
|
81
|
+
/**
|
|
82
|
+
* Plan, prove, and (on `apply`) write.
|
|
83
|
+
*
|
|
84
|
+
* The scan runs through `auditComments`, so a pruned line is one the worklist
|
|
85
|
+
* already showed a human; the pruner adds no rule of its own about what counts as
|
|
86
|
+
* debt.
|
|
87
|
+
*/
|
|
88
|
+
export declare function pruneComments(options: PruneOptions): PruneResult;
|