@deftai/directive-core 0.55.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/architecture/sor-preflight.d.ts +66 -0
- package/dist/architecture/sor-preflight.js +903 -0
- package/dist/branch/evaluate.d.ts +23 -0
- package/dist/branch/evaluate.js +136 -0
- package/dist/branch/git.d.ts +15 -0
- package/dist/branch/git.js +42 -0
- package/dist/branch/index.d.ts +3 -0
- package/dist/branch/index.js +3 -0
- package/dist/cache/cli.d.ts +3 -0
- package/dist/cache/cli.js +8 -0
- package/dist/cache/constants.d.ts +12 -0
- package/dist/cache/constants.js +14 -0
- package/dist/cache/errors.d.ts +34 -0
- package/dist/cache/errors.js +52 -0
- package/dist/cache/fetch.d.ts +101 -0
- package/dist/cache/fetch.js +413 -0
- package/dist/cache/index.d.ts +14 -0
- package/dist/cache/index.js +14 -0
- package/dist/cache/io.d.ts +15 -0
- package/dist/cache/io.js +53 -0
- package/dist/cache/json.d.ts +11 -0
- package/dist/cache/json.js +32 -0
- package/dist/cache/main.d.ts +3 -0
- package/dist/cache/main.js +319 -0
- package/dist/cache/operations.d.ts +34 -0
- package/dist/cache/operations.js +348 -0
- package/dist/cache/paths.d.ts +7 -0
- package/dist/cache/paths.js +27 -0
- package/dist/cache/quota.d.ts +56 -0
- package/dist/cache/quota.js +191 -0
- package/dist/cache/scanner.d.ts +28 -0
- package/dist/cache/scanner.js +362 -0
- package/dist/cache/test-helpers.d.ts +10 -0
- package/dist/cache/test-helpers.js +17 -0
- package/dist/cache/time.d.ts +9 -0
- package/dist/cache/time.js +20 -0
- package/dist/cache/types.d.ts +50 -0
- package/dist/cache/types.js +2 -0
- package/dist/cache/validate.d.ts +3 -0
- package/dist/cache/validate.js +118 -0
- package/dist/capacity/backfill.d.ts +52 -0
- package/dist/capacity/backfill.js +429 -0
- package/dist/capacity/index.d.ts +3 -0
- package/dist/capacity/index.js +3 -0
- package/dist/capacity/show.d.ts +73 -0
- package/dist/capacity/show.js +387 -0
- package/dist/check/index.d.ts +3 -0
- package/dist/check/index.js +2 -0
- package/dist/check/orchestrator.d.ts +51 -0
- package/dist/check/orchestrator.js +71 -0
- package/dist/codebase/constants.d.ts +2 -0
- package/dist/codebase/constants.js +2 -0
- package/dist/codebase/default-extractor.d.ts +28 -0
- package/dist/codebase/default-extractor.js +713 -0
- package/dist/codebase/index.d.ts +8 -0
- package/dist/codebase/index.js +8 -0
- package/dist/codebase/json.d.ts +14 -0
- package/dist/codebase/json.js +45 -0
- package/dist/codebase/map-fresh.d.ts +11 -0
- package/dist/codebase/map-fresh.js +125 -0
- package/dist/codebase/map.d.ts +19 -0
- package/dist/codebase/map.js +345 -0
- package/dist/codebase/projection-registry.d.ts +25 -0
- package/dist/codebase/projection-registry.js +93 -0
- package/dist/codebase/provider.d.ts +30 -0
- package/dist/codebase/provider.js +696 -0
- package/dist/content-contracts/skills/greptile-detector.d.ts +56 -0
- package/dist/content-contracts/skills/greptile-detector.js +368 -0
- package/dist/content-contracts/skills/helpers.d.ts +24 -0
- package/dist/content-contracts/skills/helpers.js +73 -0
- package/dist/content-contracts/skills/skill-frontmatter.d.ts +7 -0
- package/dist/content-contracts/skills/skill-frontmatter.js +65 -0
- package/dist/content-contracts/standards/_helpers.d.ts +49 -0
- package/dist/content-contracts/standards/_helpers.js +227 -0
- package/dist/content-contracts/standards/_shapes.d.ts +12 -0
- package/dist/content-contracts/standards/_shapes.js +45 -0
- package/dist/content-contracts/standards/_taskfile-helpers.d.ts +12 -0
- package/dist/content-contracts/standards/_taskfile-helpers.js +61 -0
- package/dist/content-root.d.ts +47 -0
- package/dist/content-root.js +89 -0
- package/dist/doctor/agents-md.d.ts +14 -0
- package/dist/doctor/agents-md.js +263 -0
- package/dist/doctor/checks.d.ts +16 -0
- package/dist/doctor/checks.js +351 -0
- package/dist/doctor/cli.d.ts +2 -0
- package/dist/doctor/cli.js +7 -0
- package/dist/doctor/constants.d.ts +15 -0
- package/dist/doctor/constants.js +40 -0
- package/dist/doctor/doctor-state.d.ts +16 -0
- package/dist/doctor/doctor-state.js +117 -0
- package/dist/doctor/flags.d.ts +5 -0
- package/dist/doctor/flags.js +63 -0
- package/dist/doctor/index.d.ts +14 -0
- package/dist/doctor/index.js +14 -0
- package/dist/doctor/json.d.ts +3 -0
- package/dist/doctor/json.js +21 -0
- package/dist/doctor/main.d.ts +3 -0
- package/dist/doctor/main.js +387 -0
- package/dist/doctor/manifest.d.ts +11 -0
- package/dist/doctor/manifest.js +114 -0
- package/dist/doctor/output.d.ts +19 -0
- package/dist/doctor/output.js +49 -0
- package/dist/doctor/paths.d.ts +16 -0
- package/dist/doctor/paths.js +106 -0
- package/dist/doctor/payload-staleness.d.ts +13 -0
- package/dist/doctor/payload-staleness.js +165 -0
- package/dist/doctor/taskfile.d.ts +6 -0
- package/dist/doctor/taskfile.js +65 -0
- package/dist/doctor/types.d.ts +76 -0
- package/dist/doctor/types.js +4 -0
- package/dist/doctor/which.d.ts +3 -0
- package/dist/doctor/which.js +17 -0
- package/dist/encoding/evaluate.d.ts +19 -0
- package/dist/encoding/evaluate.js +155 -0
- package/dist/encoding/git.d.ts +11 -0
- package/dist/encoding/git.js +36 -0
- package/dist/encoding/index.d.ts +6 -0
- package/dist/encoding/index.js +6 -0
- package/dist/encoding/patterns.d.ts +29 -0
- package/dist/encoding/patterns.js +109 -0
- package/dist/encoding/scan.d.ts +24 -0
- package/dist/encoding/scan.js +182 -0
- package/dist/encoding/text.d.ts +21 -0
- package/dist/encoding/text.js +111 -0
- package/dist/index.d.ts +54 -0
- package/dist/index.js +55 -0
- package/dist/intake/candidates-log.d.ts +20 -0
- package/dist/intake/candidates-log.js +224 -0
- package/dist/intake/github-auth-modes-cli.d.ts +3 -0
- package/dist/intake/github-auth-modes-cli.js +23 -0
- package/dist/intake/github-auth-modes.d.ts +54 -0
- package/dist/intake/github-auth-modes.js +275 -0
- package/dist/intake/github-body-cli.d.ts +3 -0
- package/dist/intake/github-body-cli.js +30 -0
- package/dist/intake/github-body.d.ts +48 -0
- package/dist/intake/github-body.js +151 -0
- package/dist/intake/index.d.ts +15 -0
- package/dist/intake/index.js +15 -0
- package/dist/intake/issue-emit-cli.d.ts +3 -0
- package/dist/intake/issue-emit-cli.js +34 -0
- package/dist/intake/issue-emit.d.ts +63 -0
- package/dist/intake/issue-emit.js +351 -0
- package/dist/intake/issue-ingest-cli.d.ts +3 -0
- package/dist/intake/issue-ingest-cli.js +33 -0
- package/dist/intake/issue-ingest.d.ts +53 -0
- package/dist/intake/issue-ingest.js +477 -0
- package/dist/intake/markdown-scanners.d.ts +23 -0
- package/dist/intake/markdown-scanners.js +247 -0
- package/dist/intake/parity-scenarios.d.ts +22 -0
- package/dist/intake/parity-scenarios.js +32 -0
- package/dist/intake/platform-capabilities.d.ts +11 -0
- package/dist/intake/platform-capabilities.js +34 -0
- package/dist/intake/reconcile-issues-cli.d.ts +3 -0
- package/dist/intake/reconcile-issues-cli.js +31 -0
- package/dist/intake/reconcile-issues.d.ts +60 -0
- package/dist/intake/reconcile-issues.js +756 -0
- package/dist/integration-e2e/bootstrap-cache-module.d.ts +5 -0
- package/dist/integration-e2e/bootstrap-cache-module.js +21 -0
- package/dist/integration-e2e/helpers.d.ts +28 -0
- package/dist/integration-e2e/helpers.js +157 -0
- package/dist/lifecycle/event-detect.d.ts +32 -0
- package/dist/lifecycle/event-detect.js +172 -0
- package/dist/lifecycle/events.d.ts +45 -0
- package/dist/lifecycle/events.js +340 -0
- package/dist/lifecycle/index.d.ts +4 -0
- package/dist/lifecycle/index.js +4 -0
- package/dist/lifecycle/lifecycle-hygiene.d.ts +59 -0
- package/dist/lifecycle/lifecycle-hygiene.js +388 -0
- package/dist/orchestration/index.d.ts +7 -0
- package/dist/orchestration/index.js +7 -0
- package/dist/orchestration/judgment-policy.d.ts +23 -0
- package/dist/orchestration/judgment-policy.js +228 -0
- package/dist/orchestration/pathspec.d.ts +11 -0
- package/dist/orchestration/pathspec.js +95 -0
- package/dist/orchestration/probe-session.d.ts +74 -0
- package/dist/orchestration/probe-session.js +478 -0
- package/dist/orchestration/subagent-monitor.d.ts +64 -0
- package/dist/orchestration/subagent-monitor.js +405 -0
- package/dist/orchestration/verify-investigation.d.ts +27 -0
- package/dist/orchestration/verify-investigation.js +314 -0
- package/dist/orchestration/verify-judgment-gates.d.ts +66 -0
- package/dist/orchestration/verify-judgment-gates.js +710 -0
- package/dist/packs/index.d.ts +4 -0
- package/dist/packs/index.js +4 -0
- package/dist/packs/pack-render.d.ts +31 -0
- package/dist/packs/pack-render.js +357 -0
- package/dist/packs/packs-slice.d.ts +58 -0
- package/dist/packs/packs-slice.js +649 -0
- package/dist/packs/quarantine-ext.d.ts +7 -0
- package/dist/packs/quarantine-ext.js +164 -0
- package/dist/platform/agents-md.d.ts +31 -0
- package/dist/platform/agents-md.js +320 -0
- package/dist/platform/changelog-cli.d.ts +3 -0
- package/dist/platform/changelog-cli.js +64 -0
- package/dist/platform/constants.d.ts +20 -0
- package/dist/platform/constants.js +27 -0
- package/dist/platform/index.d.ts +9 -0
- package/dist/platform/index.js +9 -0
- package/dist/platform/ip-risk.d.ts +10 -0
- package/dist/platform/ip-risk.js +235 -0
- package/dist/platform/linear-scan.d.ts +36 -0
- package/dist/platform/linear-scan.js +174 -0
- package/dist/platform/platform-capabilities.d.ts +45 -0
- package/dist/platform/platform-capabilities.js +190 -0
- package/dist/platform/resolve-changelog-unreleased.d.ts +24 -0
- package/dist/platform/resolve-changelog-unreleased.js +364 -0
- package/dist/platform/resolve-version.d.ts +22 -0
- package/dist/platform/resolve-version.js +303 -0
- package/dist/platform/slug-normalize.d.ts +9 -0
- package/dist/platform/slug-normalize.js +110 -0
- package/dist/policy/autonomy.d.ts +43 -0
- package/dist/policy/autonomy.js +220 -0
- package/dist/policy/capacity.d.ts +45 -0
- package/dist/policy/capacity.js +251 -0
- package/dist/policy/decisions.d.ts +26 -0
- package/dist/policy/decisions.js +114 -0
- package/dist/policy/disclosure.d.ts +4 -0
- package/dist/policy/disclosure.js +19 -0
- package/dist/policy/index.d.ts +43 -0
- package/dist/policy/index.js +298 -0
- package/dist/policy/resolve.d.ts +38 -0
- package/dist/policy/resolve.js +228 -0
- package/dist/policy/wip.d.ts +15 -0
- package/dist/policy/wip.js +81 -0
- package/dist/pr-closing-keywords/constants.d.ts +6 -0
- package/dist/pr-closing-keywords/constants.js +6 -0
- package/dist/pr-closing-keywords/detect.d.ts +5 -0
- package/dist/pr-closing-keywords/detect.js +113 -0
- package/dist/pr-closing-keywords/gh.d.ts +6 -0
- package/dist/pr-closing-keywords/gh.js +129 -0
- package/dist/pr-closing-keywords/index.d.ts +7 -0
- package/dist/pr-closing-keywords/index.js +6 -0
- package/dist/pr-closing-keywords/io.d.ts +3 -0
- package/dist/pr-closing-keywords/io.js +22 -0
- package/dist/pr-closing-keywords/main.d.ts +9 -0
- package/dist/pr-closing-keywords/main.js +246 -0
- package/dist/pr-closing-keywords/types.d.ts +23 -0
- package/dist/pr-closing-keywords/types.js +2 -0
- package/dist/pr-merge-readiness/compute.d.ts +7 -0
- package/dist/pr-merge-readiness/compute.js +210 -0
- package/dist/pr-merge-readiness/constants.d.ts +20 -0
- package/dist/pr-merge-readiness/constants.js +32 -0
- package/dist/pr-merge-readiness/evaluate.d.ts +5 -0
- package/dist/pr-merge-readiness/evaluate.js +48 -0
- package/dist/pr-merge-readiness/gh.d.ts +22 -0
- package/dist/pr-merge-readiness/gh.js +281 -0
- package/dist/pr-merge-readiness/index.d.ts +9 -0
- package/dist/pr-merge-readiness/index.js +8 -0
- package/dist/pr-merge-readiness/main.d.ts +14 -0
- package/dist/pr-merge-readiness/main.js +67 -0
- package/dist/pr-merge-readiness/output.d.ts +7 -0
- package/dist/pr-merge-readiness/output.js +98 -0
- package/dist/pr-merge-readiness/parse.d.ts +6 -0
- package/dist/pr-merge-readiness/parse.js +83 -0
- package/dist/pr-merge-readiness/types.d.ts +29 -0
- package/dist/pr-merge-readiness/types.js +2 -0
- package/dist/pr-monitor/cadence.d.ts +3 -0
- package/dist/pr-monitor/cadence.js +12 -0
- package/dist/pr-monitor/constants.d.ts +8 -0
- package/dist/pr-monitor/constants.js +12 -0
- package/dist/pr-monitor/index.d.ts +7 -0
- package/dist/pr-monitor/index.js +6 -0
- package/dist/pr-monitor/main.d.ts +17 -0
- package/dist/pr-monitor/main.js +169 -0
- package/dist/pr-monitor/monitor.d.ts +9 -0
- package/dist/pr-monitor/monitor.js +106 -0
- package/dist/pr-monitor/readiness.d.ts +6 -0
- package/dist/pr-monitor/readiness.js +64 -0
- package/dist/pr-monitor/types.d.ts +30 -0
- package/dist/pr-monitor/types.js +2 -0
- package/dist/pr-protected-issues/constants.d.ts +7 -0
- package/dist/pr-protected-issues/constants.js +7 -0
- package/dist/pr-protected-issues/gh.d.ts +9 -0
- package/dist/pr-protected-issues/gh.js +96 -0
- package/dist/pr-protected-issues/index.d.ts +6 -0
- package/dist/pr-protected-issues/index.js +5 -0
- package/dist/pr-protected-issues/main.d.ts +14 -0
- package/dist/pr-protected-issues/main.js +128 -0
- package/dist/pr-protected-issues/parse.d.ts +6 -0
- package/dist/pr-protected-issues/parse.js +21 -0
- package/dist/pr-protected-issues/types.d.ts +8 -0
- package/dist/pr-protected-issues/types.js +2 -0
- package/dist/pr-wait-mergeable/cascade.d.ts +12 -0
- package/dist/pr-wait-mergeable/cascade.js +107 -0
- package/dist/pr-wait-mergeable/classify.d.ts +5 -0
- package/dist/pr-wait-mergeable/classify.js +47 -0
- package/dist/pr-wait-mergeable/constants.d.ts +5 -0
- package/dist/pr-wait-mergeable/constants.js +5 -0
- package/dist/pr-wait-mergeable/index.d.ts +8 -0
- package/dist/pr-wait-mergeable/index.js +7 -0
- package/dist/pr-wait-mergeable/main.d.ts +18 -0
- package/dist/pr-wait-mergeable/main.js +213 -0
- package/dist/pr-wait-mergeable/result.d.ts +9 -0
- package/dist/pr-wait-mergeable/result.js +38 -0
- package/dist/pr-wait-mergeable/types.d.ts +16 -0
- package/dist/pr-wait-mergeable/types.js +2 -0
- package/dist/pr-wait-mergeable/wrappers.d.ts +26 -0
- package/dist/pr-wait-mergeable/wrappers.js +103 -0
- package/dist/preflight/evaluate.d.ts +22 -0
- package/dist/preflight/evaluate.js +137 -0
- package/dist/preflight/index.d.ts +3 -0
- package/dist/preflight/index.js +2 -0
- package/dist/preflight-cache/evaluate.d.ts +40 -0
- package/dist/preflight-cache/evaluate.js +481 -0
- package/dist/preflight-cache/index.d.ts +3 -0
- package/dist/preflight-cache/index.js +2 -0
- package/dist/preflight-gh/classifier.d.ts +56 -0
- package/dist/preflight-gh/classifier.js +415 -0
- package/dist/preflight-gh/index.d.ts +3 -0
- package/dist/preflight-gh/index.js +2 -0
- package/dist/release/changelog.d.ts +9 -0
- package/dist/release/changelog.js +105 -0
- package/dist/release/cli.d.ts +2 -0
- package/dist/release/cli.js +7 -0
- package/dist/release/constants.d.ts +22 -0
- package/dist/release/constants.js +85 -0
- package/dist/release/flags.d.ts +4 -0
- package/dist/release/flags.js +131 -0
- package/dist/release/gh.d.ts +16 -0
- package/dist/release/gh.js +210 -0
- package/dist/release/git.d.ts +11 -0
- package/dist/release/git.js +84 -0
- package/dist/release/index.d.ts +14 -0
- package/dist/release/index.js +15 -0
- package/dist/release/main.d.ts +3 -0
- package/dist/release/main.js +47 -0
- package/dist/release/paths.d.ts +6 -0
- package/dist/release/paths.js +39 -0
- package/dist/release/pipeline.d.ts +6 -0
- package/dist/release/pipeline.js +314 -0
- package/dist/release/pyproject-sync.d.ts +6 -0
- package/dist/release/pyproject-sync.js +52 -0
- package/dist/release/pyproject.d.ts +3 -0
- package/dist/release/pyproject.js +33 -0
- package/dist/release/python-bridge.d.ts +7 -0
- package/dist/release/python-bridge.js +144 -0
- package/dist/release/spawn.d.ts +8 -0
- package/dist/release/spawn.js +44 -0
- package/dist/release/types.d.ts +58 -0
- package/dist/release/types.js +2 -0
- package/dist/release/version.d.ts +11 -0
- package/dist/release/version.js +74 -0
- package/dist/release-e2e/constants.d.ts +22 -0
- package/dist/release-e2e/constants.js +43 -0
- package/dist/release-e2e/entrypoint-worker-thread.d.ts +2 -0
- package/dist/release-e2e/entrypoint-worker-thread.js +22 -0
- package/dist/release-e2e/entrypoint-worker.d.ts +13 -0
- package/dist/release-e2e/entrypoint-worker.js +50 -0
- package/dist/release-e2e/entrypoint.d.ts +40 -0
- package/dist/release-e2e/entrypoint.js +257 -0
- package/dist/release-e2e/flags.d.ts +5 -0
- package/dist/release-e2e/flags.js +80 -0
- package/dist/release-e2e/gh-ops.d.ts +5 -0
- package/dist/release-e2e/gh-ops.js +72 -0
- package/dist/release-e2e/git-ops.d.ts +6 -0
- package/dist/release-e2e/git-ops.js +47 -0
- package/dist/release-e2e/index.d.ts +10 -0
- package/dist/release-e2e/index.js +10 -0
- package/dist/release-e2e/main.d.ts +4 -0
- package/dist/release-e2e/main.js +78 -0
- package/dist/release-e2e/npm-ops.d.ts +29 -0
- package/dist/release-e2e/npm-ops.js +149 -0
- package/dist/release-e2e/rehearsal.d.ts +3 -0
- package/dist/release-e2e/rehearsal.js +51 -0
- package/dist/release-e2e/rollback-bridge.d.ts +3 -0
- package/dist/release-e2e/rollback-bridge.js +20 -0
- package/dist/release-e2e/types.d.ts +40 -0
- package/dist/release-e2e/types.js +2 -0
- package/dist/release-publish/cli.d.ts +2 -0
- package/dist/release-publish/cli.js +7 -0
- package/dist/release-publish/constants.d.ts +4 -0
- package/dist/release-publish/constants.js +24 -0
- package/dist/release-publish/flags.d.ts +5 -0
- package/dist/release-publish/flags.js +67 -0
- package/dist/release-publish/gh-api.d.ts +6 -0
- package/dist/release-publish/gh-api.js +102 -0
- package/dist/release-publish/index.d.ts +7 -0
- package/dist/release-publish/index.js +8 -0
- package/dist/release-publish/main.d.ts +3 -0
- package/dist/release-publish/main.js +38 -0
- package/dist/release-publish/pipeline.d.ts +4 -0
- package/dist/release-publish/pipeline.js +46 -0
- package/dist/release-publish/types.d.ts +25 -0
- package/dist/release-publish/types.js +2 -0
- package/dist/release-rollback/constants.d.ts +18 -0
- package/dist/release-rollback/constants.js +55 -0
- package/dist/release-rollback/flags.d.ts +4 -0
- package/dist/release-rollback/flags.js +136 -0
- package/dist/release-rollback/gh.d.ts +5 -0
- package/dist/release-rollback/gh.js +71 -0
- package/dist/release-rollback/git.d.ts +9 -0
- package/dist/release-rollback/git.js +87 -0
- package/dist/release-rollback/guard.d.ts +12 -0
- package/dist/release-rollback/guard.js +97 -0
- package/dist/release-rollback/index.d.ts +9 -0
- package/dist/release-rollback/index.js +10 -0
- package/dist/release-rollback/main.d.ts +3 -0
- package/dist/release-rollback/main.js +51 -0
- package/dist/release-rollback/pipeline.d.ts +7 -0
- package/dist/release-rollback/pipeline.js +221 -0
- package/dist/release-rollback/types.d.ts +41 -0
- package/dist/release-rollback/types.js +2 -0
- package/dist/render/constants.d.ts +16 -0
- package/dist/render/constants.js +78 -0
- package/dist/render/framework-commands.d.ts +41 -0
- package/dist/render/framework-commands.js +416 -0
- package/dist/render/index.d.ts +15 -0
- package/dist/render/index.js +15 -0
- package/dist/render/prd-render.d.ts +14 -0
- package/dist/render/prd-render.js +79 -0
- package/dist/render/project-render.d.ts +20 -0
- package/dist/render/project-render.js +169 -0
- package/dist/render/roadmap-render.d.ts +8 -0
- package/dist/render/roadmap-render.js +387 -0
- package/dist/render/spec-render.d.ts +13 -0
- package/dist/render/spec-render.js +362 -0
- package/dist/render/spec-validate.d.ts +6 -0
- package/dist/render/spec-validate.js +157 -0
- package/dist/render/text-utils.d.ts +8 -0
- package/dist/render/text-utils.js +72 -0
- package/dist/scm/argv.d.ts +7 -0
- package/dist/scm/argv.js +54 -0
- package/dist/scm/binary.d.ts +11 -0
- package/dist/scm/binary.js +35 -0
- package/dist/scm/build-command.d.ts +11 -0
- package/dist/scm/build-command.js +23 -0
- package/dist/scm/call.d.ts +25 -0
- package/dist/scm/call.js +38 -0
- package/dist/scm/cli.d.ts +3 -0
- package/dist/scm/cli.js +7 -0
- package/dist/scm/constants.d.ts +11 -0
- package/dist/scm/constants.js +11 -0
- package/dist/scm/errors.d.ts +5 -0
- package/dist/scm/errors.js +8 -0
- package/dist/scm/gh-rest.d.ts +74 -0
- package/dist/scm/gh-rest.js +326 -0
- package/dist/scm/index.d.ts +11 -0
- package/dist/scm/index.js +11 -0
- package/dist/scm/main.d.ts +12 -0
- package/dist/scm/main.js +65 -0
- package/dist/scm/py-format.d.ts +9 -0
- package/dist/scm/py-format.js +31 -0
- package/dist/scm/rest-dispatch.d.ts +14 -0
- package/dist/scm/rest-dispatch.js +175 -0
- package/dist/scope/audit-log.d.ts +14 -0
- package/dist/scope/audit-log.js +186 -0
- package/dist/scope/capacity-stamp.d.ts +3 -0
- package/dist/scope/capacity-stamp.js +45 -0
- package/dist/scope/cli.d.ts +4 -0
- package/dist/scope/cli.js +11 -0
- package/dist/scope/constants.d.ts +19 -0
- package/dist/scope/constants.js +44 -0
- package/dist/scope/decompose.d.ts +42 -0
- package/dist/scope/decompose.js +1016 -0
- package/dist/scope/decomposed-refs.d.ts +6 -0
- package/dist/scope/decomposed-refs.js +173 -0
- package/dist/scope/demote.d.ts +24 -0
- package/dist/scope/demote.js +209 -0
- package/dist/scope/index.d.ts +12 -0
- package/dist/scope/index.js +12 -0
- package/dist/scope/main.d.ts +30 -0
- package/dist/scope/main.js +365 -0
- package/dist/scope/project-context.d.ts +6 -0
- package/dist/scope/project-context.js +55 -0
- package/dist/scope/project-definition-sync.d.ts +3 -0
- package/dist/scope/project-definition-sync.js +157 -0
- package/dist/scope/transition.d.ts +10 -0
- package/dist/scope/transition.js +133 -0
- package/dist/scope/undo.d.ts +25 -0
- package/dist/scope/undo.js +334 -0
- package/dist/scope/vbrief-json.d.ts +4 -0
- package/dist/scope/vbrief-json.js +8 -0
- package/dist/scope/vbrief-ref.d.ts +11 -0
- package/dist/scope/vbrief-ref.js +100 -0
- package/dist/scope/wip-cap-check.d.ts +11 -0
- package/dist/scope/wip-cap-check.js +23 -0
- package/dist/session/git.d.ts +14 -0
- package/dist/session/git.js +49 -0
- package/dist/session/index.d.ts +9 -0
- package/dist/session/index.js +9 -0
- package/dist/session/json.d.ts +7 -0
- package/dist/session/json.js +29 -0
- package/dist/session/resume-conditions.d.ts +56 -0
- package/dist/session/resume-conditions.js +486 -0
- package/dist/session/ritual-entrypoint.d.ts +20 -0
- package/dist/session/ritual-entrypoint.js +86 -0
- package/dist/session/ritual-sentinel.d.ts +58 -0
- package/dist/session/ritual-sentinel.js +338 -0
- package/dist/session/session-start-hook.d.ts +14 -0
- package/dist/session/session-start-hook.js +53 -0
- package/dist/session/session-start.d.ts +41 -0
- package/dist/session/session-start.js +290 -0
- package/dist/session/staleness.d.ts +8 -0
- package/dist/session/staleness.js +91 -0
- package/dist/session/time.d.ts +5 -0
- package/dist/session/time.js +19 -0
- package/dist/session/verify-session-ritual.d.ts +29 -0
- package/dist/session/verify-session-ritual.js +222 -0
- package/dist/slice/cli.d.ts +21 -0
- package/dist/slice/cli.js +248 -0
- package/dist/slice/constants.d.ts +18 -0
- package/dist/slice/constants.js +30 -0
- package/dist/slice/errors.d.ts +9 -0
- package/dist/slice/errors.js +15 -0
- package/dist/slice/existing.d.ts +53 -0
- package/dist/slice/existing.js +344 -0
- package/dist/slice/index.d.ts +10 -0
- package/dist/slice/index.js +10 -0
- package/dist/slice/json.d.ts +7 -0
- package/dist/slice/json.js +25 -0
- package/dist/slice/lock.d.ts +9 -0
- package/dist/slice/lock.js +59 -0
- package/dist/slice/project-context.d.ts +15 -0
- package/dist/slice/project-context.js +87 -0
- package/dist/slice/record.d.ts +50 -0
- package/dist/slice/record.js +139 -0
- package/dist/slice/validate.d.ts +3 -0
- package/dist/slice/validate.js +86 -0
- package/dist/story-ready/allocation.d.ts +14 -0
- package/dist/story-ready/allocation.js +61 -0
- package/dist/story-ready/evaluate.d.ts +23 -0
- package/dist/story-ready/evaluate.js +161 -0
- package/dist/story-ready/git.d.ts +6 -0
- package/dist/story-ready/git.js +26 -0
- package/dist/story-ready/index.d.ts +4 -0
- package/dist/story-ready/index.js +4 -0
- package/dist/subprocess/max-buffer.d.ts +18 -0
- package/dist/subprocess/max-buffer.js +18 -0
- package/dist/swarm/complete-cohort-cli.d.ts +3 -0
- package/dist/swarm/complete-cohort-cli.js +42 -0
- package/dist/swarm/complete-cohort.d.ts +34 -0
- package/dist/swarm/complete-cohort.js +407 -0
- package/dist/swarm/constants.d.ts +18 -0
- package/dist/swarm/constants.js +24 -0
- package/dist/swarm/index.d.ts +18 -0
- package/dist/swarm/index.js +18 -0
- package/dist/swarm/launch-cli.d.ts +5 -0
- package/dist/swarm/launch-cli.js +111 -0
- package/dist/swarm/launch.d.ts +78 -0
- package/dist/swarm/launch.js +587 -0
- package/dist/swarm/readiness-cli.d.ts +3 -0
- package/dist/swarm/readiness-cli.js +25 -0
- package/dist/swarm/readiness.d.ts +24 -0
- package/dist/swarm/readiness.js +606 -0
- package/dist/swarm/routing-set-cli.d.ts +3 -0
- package/dist/swarm/routing-set-cli.js +82 -0
- package/dist/swarm/routing-verify-cli.d.ts +3 -0
- package/dist/swarm/routing-verify-cli.js +51 -0
- package/dist/swarm/routing-verify.d.ts +20 -0
- package/dist/swarm/routing-verify.js +104 -0
- package/dist/swarm/routing.d.ts +57 -0
- package/dist/swarm/routing.js +173 -0
- package/dist/swarm/subagent-backend.d.ts +22 -0
- package/dist/swarm/subagent-backend.js +162 -0
- package/dist/swarm/subprocess.d.ts +10 -0
- package/dist/swarm/subprocess.js +34 -0
- package/dist/swarm/verify-review-clean-cli.d.ts +3 -0
- package/dist/swarm/verify-review-clean-cli.js +38 -0
- package/dist/swarm/verify-review-clean.d.ts +40 -0
- package/dist/swarm/verify-review-clean.js +240 -0
- package/dist/swarm/worktrees-cli.d.ts +9 -0
- package/dist/swarm/worktrees-cli.js +57 -0
- package/dist/swarm/worktrees.d.ts +39 -0
- package/dist/swarm/worktrees.js +178 -0
- package/dist/text/redos-safe.d.ts +29 -0
- package/dist/text/redos-safe.js +338 -0
- package/dist/triage/actions/candidates-log.d.ts +8 -0
- package/dist/triage/actions/candidates-log.js +195 -0
- package/dist/triage/actions/errors.d.ts +17 -0
- package/dist/triage/actions/errors.js +29 -0
- package/dist/triage/actions/index.d.ts +19 -0
- package/dist/triage/actions/index.js +305 -0
- package/dist/triage/actions/resume-on.d.ts +3 -0
- package/dist/triage/actions/resume-on.js +65 -0
- package/dist/triage/actions/types.d.ts +57 -0
- package/dist/triage/actions/types.js +2 -0
- package/dist/triage/bootstrap/gitignore.d.ts +16 -0
- package/dist/triage/bootstrap/gitignore.js +414 -0
- package/dist/triage/bootstrap/index.d.ts +44 -0
- package/dist/triage/bootstrap/index.js +572 -0
- package/dist/triage/bootstrap/types.d.ts +60 -0
- package/dist/triage/bootstrap/types.js +2 -0
- package/dist/triage/bulk/index.d.ts +99 -0
- package/dist/triage/bulk/index.js +454 -0
- package/dist/triage/classify/index.d.ts +88 -0
- package/dist/triage/classify/index.js +738 -0
- package/dist/triage/help/index.d.ts +25 -0
- package/dist/triage/help/index.js +212 -0
- package/dist/triage/help/registry-data.d.ts +555 -0
- package/dist/triage/help/registry-data.js +841 -0
- package/dist/triage/index.d.ts +23 -0
- package/dist/triage/index.js +23 -0
- package/dist/triage/queue/audit.d.ts +12 -0
- package/dist/triage/queue/audit.js +47 -0
- package/dist/triage/queue/build-queue.d.ts +9 -0
- package/dist/triage/queue/build-queue.js +133 -0
- package/dist/triage/queue/cache.d.ts +20 -0
- package/dist/triage/queue/cache.js +169 -0
- package/dist/triage/queue/constants.d.ts +22 -0
- package/dist/triage/queue/constants.js +28 -0
- package/dist/triage/queue/derive-group.d.ts +7 -0
- package/dist/triage/queue/derive-group.js +20 -0
- package/dist/triage/queue/index.d.ts +12 -0
- package/dist/triage/queue/index.js +12 -0
- package/dist/triage/queue/project.d.ts +6 -0
- package/dist/triage/queue/project.js +18 -0
- package/dist/triage/queue/ranking-labels.d.ts +10 -0
- package/dist/triage/queue/ranking-labels.js +54 -0
- package/dist/triage/queue/render.d.ts +9 -0
- package/dist/triage/queue/render.js +35 -0
- package/dist/triage/queue/repo.d.ts +5 -0
- package/dist/triage/queue/repo.js +36 -0
- package/dist/triage/queue/scope-walk.d.ts +13 -0
- package/dist/triage/queue/scope-walk.js +170 -0
- package/dist/triage/queue/selection.d.ts +28 -0
- package/dist/triage/queue/selection.js +109 -0
- package/dist/triage/queue/types.d.ts +58 -0
- package/dist/triage/queue/types.js +2 -0
- package/dist/triage/reconcile/audit.d.ts +4 -0
- package/dist/triage/reconcile/audit.js +62 -0
- package/dist/triage/reconcile/index.d.ts +5 -0
- package/dist/triage/reconcile/index.js +5 -0
- package/dist/triage/reconcile/parse-uri.d.ts +4 -0
- package/dist/triage/reconcile/parse-uri.js +43 -0
- package/dist/triage/reconcile/reconcile.d.ts +17 -0
- package/dist/triage/reconcile/reconcile.js +163 -0
- package/dist/triage/reconcile/types.d.ts +23 -0
- package/dist/triage/reconcile/types.js +70 -0
- package/dist/triage/refresh/drift.d.ts +15 -0
- package/dist/triage/refresh/drift.js +72 -0
- package/dist/triage/refresh/extract.d.ts +3 -0
- package/dist/triage/refresh/extract.js +43 -0
- package/dist/triage/refresh/index.d.ts +5 -0
- package/dist/triage/refresh/index.js +5 -0
- package/dist/triage/refresh/refresh.d.ts +16 -0
- package/dist/triage/refresh/refresh.js +95 -0
- package/dist/triage/refresh/types.d.ts +18 -0
- package/dist/triage/refresh/types.js +7 -0
- package/dist/triage/scope/cli.d.ts +23 -0
- package/dist/triage/scope/cli.js +257 -0
- package/dist/triage/scope/constants.d.ts +16 -0
- package/dist/triage/scope/constants.js +25 -0
- package/dist/triage/scope/coverage.d.ts +24 -0
- package/dist/triage/scope/coverage.js +96 -0
- package/dist/triage/scope/duration.d.ts +6 -0
- package/dist/triage/scope/duration.js +44 -0
- package/dist/triage/scope/evaluate.d.ts +18 -0
- package/dist/triage/scope/evaluate.js +161 -0
- package/dist/triage/scope/index.d.ts +14 -0
- package/dist/triage/scope/index.js +14 -0
- package/dist/triage/scope/milestone.d.ts +13 -0
- package/dist/triage/scope/milestone.js +178 -0
- package/dist/triage/scope/mutations-core.d.ts +24 -0
- package/dist/triage/scope/mutations-core.js +216 -0
- package/dist/triage/scope/mutations.d.ts +21 -0
- package/dist/triage/scope/mutations.js +203 -0
- package/dist/triage/scope/normalize.d.ts +5 -0
- package/dist/triage/scope/normalize.js +45 -0
- package/dist/triage/scope/python-repr.d.ts +7 -0
- package/dist/triage/scope/python-repr.js +25 -0
- package/dist/triage/scope/renderers.d.ts +9 -0
- package/dist/triage/scope/renderers.js +177 -0
- package/dist/triage/scope/resolve.d.ts +15 -0
- package/dist/triage/scope/resolve.js +122 -0
- package/dist/triage/scope/time.d.ts +6 -0
- package/dist/triage/scope/time.js +18 -0
- package/dist/triage/scope/validate.d.ts +11 -0
- package/dist/triage/scope/validate.js +272 -0
- package/dist/triage/scope-drift/add-ignore.d.ts +10 -0
- package/dist/triage/scope-drift/add-ignore.js +78 -0
- package/dist/triage/scope-drift/cache-walker.d.ts +8 -0
- package/dist/triage/scope-drift/cache-walker.js +103 -0
- package/dist/triage/scope-drift/compute.d.ts +9 -0
- package/dist/triage/scope-drift/compute.js +92 -0
- package/dist/triage/scope-drift/index.d.ts +6 -0
- package/dist/triage/scope-drift/index.js +6 -0
- package/dist/triage/scope-drift/render.d.ts +4 -0
- package/dist/triage/scope-drift/render.js +45 -0
- package/dist/triage/scope-drift/scope-rules.d.ts +16 -0
- package/dist/triage/scope-drift/scope-rules.js +149 -0
- package/dist/triage/scope-drift/types.d.ts +13 -0
- package/dist/triage/scope-drift/types.js +8 -0
- package/dist/triage/smoketest/index.d.ts +81 -0
- package/dist/triage/smoketest/index.js +335 -0
- package/dist/triage/subscribe/index.d.ts +38 -0
- package/dist/triage/subscribe/index.js +303 -0
- package/dist/triage/summary/index.d.ts +70 -0
- package/dist/triage/summary/index.js +431 -0
- package/dist/triage/summary/reconcilable.d.ts +12 -0
- package/dist/triage/summary/reconcilable.js +150 -0
- package/dist/triage/summary/scope-drift.d.ts +5 -0
- package/dist/triage/summary/scope-drift.js +219 -0
- package/dist/triage/welcome/constants.d.ts +24 -0
- package/dist/triage/welcome/constants.js +34 -0
- package/dist/triage/welcome/default-mode.d.ts +21 -0
- package/dist/triage/welcome/default-mode.js +48 -0
- package/dist/triage/welcome/index.d.ts +6 -0
- package/dist/triage/welcome/index.js +6 -0
- package/dist/triage/welcome/prior-state.d.ts +17 -0
- package/dist/triage/welcome/prior-state.js +170 -0
- package/dist/triage/welcome/summary.d.ts +23 -0
- package/dist/triage/welcome/summary.js +303 -0
- package/dist/triage/welcome/writers.d.ts +17 -0
- package/dist/triage/welcome/writers.js +157 -0
- package/dist/ts-check-lane/index.d.ts +3 -0
- package/dist/ts-check-lane/index.js +2 -0
- package/dist/ts-check-lane/run-lane.d.ts +53 -0
- package/dist/ts-check-lane/run-lane.js +98 -0
- package/dist/validate-content/capacity-policy.d.ts +82 -0
- package/dist/validate-content/capacity-policy.js +399 -0
- package/dist/validate-content/capacity-show.d.ts +60 -0
- package/dist/validate-content/capacity-show.js +336 -0
- package/dist/validate-content/filename.d.ts +3 -0
- package/dist/validate-content/filename.js +54 -0
- package/dist/validate-content/index.d.ts +9 -0
- package/dist/validate-content/index.js +9 -0
- package/dist/validate-content/link-parser.d.ts +5 -0
- package/dist/validate-content/link-parser.js +42 -0
- package/dist/validate-content/types.d.ts +8 -0
- package/dist/validate-content/types.js +2 -0
- package/dist/validate-content/validate-links.d.ts +17 -0
- package/dist/validate-content/validate-links.js +114 -0
- package/dist/validate-content/validate-strategy-output.d.ts +11 -0
- package/dist/validate-content/validate-strategy-output.js +120 -0
- package/dist/validate-content/verify-capacity.d.ts +14 -0
- package/dist/validate-content/verify-capacity.js +96 -0
- package/dist/vbrief-activate/activate.d.ts +13 -0
- package/dist/vbrief-activate/activate.js +184 -0
- package/dist/vbrief-activate/constants.d.ts +9 -0
- package/dist/vbrief-activate/constants.js +11 -0
- package/dist/vbrief-activate/index.d.ts +6 -0
- package/dist/vbrief-activate/index.js +4 -0
- package/dist/vbrief-activate/main.d.ts +14 -0
- package/dist/vbrief-activate/main.js +33 -0
- package/dist/vbrief-build/build.d.ts +13 -0
- package/dist/vbrief-build/build.js +123 -0
- package/dist/vbrief-build/constants.d.ts +13 -0
- package/dist/vbrief-build/constants.js +34 -0
- package/dist/vbrief-build/index.d.ts +12 -0
- package/dist/vbrief-build/index.js +11 -0
- package/dist/vbrief-build/json.d.ts +3 -0
- package/dist/vbrief-build/json.js +5 -0
- package/dist/vbrief-build/main.d.ts +5 -0
- package/dist/vbrief-build/main.js +65 -0
- package/dist/vbrief-build/parity-scenarios.d.ts +19 -0
- package/dist/vbrief-build/parity-scenarios.js +321 -0
- package/dist/vbrief-build/project-definition-io.d.ts +13 -0
- package/dist/vbrief-build/project-definition-io.js +117 -0
- package/dist/vbrief-build/routing.d.ts +13 -0
- package/dist/vbrief-build/routing.js +110 -0
- package/dist/vbrief-build/sources.d.ts +16 -0
- package/dist/vbrief-build/sources.js +294 -0
- package/dist/vbrief-build/speckit.d.ts +23 -0
- package/dist/vbrief-build/speckit.js +212 -0
- package/dist/vbrief-build/types.d.ts +18 -0
- package/dist/vbrief-build/types.js +7 -0
- package/dist/vbrief-reconcile/graph.d.ts +11 -0
- package/dist/vbrief-reconcile/graph.js +171 -0
- package/dist/vbrief-reconcile/index.d.ts +10 -0
- package/dist/vbrief-reconcile/index.js +9 -0
- package/dist/vbrief-reconcile/labels.d.ts +22 -0
- package/dist/vbrief-reconcile/labels.js +252 -0
- package/dist/vbrief-reconcile/main.d.ts +18 -0
- package/dist/vbrief-reconcile/main.js +149 -0
- package/dist/vbrief-reconcile/parity-scenarios.d.ts +16 -0
- package/dist/vbrief-reconcile/parity-scenarios.js +385 -0
- package/dist/vbrief-reconcile/py-repr.d.ts +3 -0
- package/dist/vbrief-reconcile/py-repr.js +5 -0
- package/dist/vbrief-reconcile/reconciliation.d.ts +20 -0
- package/dist/vbrief-reconcile/reconciliation.js +542 -0
- package/dist/vbrief-reconcile/swarm-deps.d.ts +8 -0
- package/dist/vbrief-reconcile/swarm-deps.js +142 -0
- package/dist/vbrief-reconcile/types.d.ts +128 -0
- package/dist/vbrief-reconcile/types.js +2 -0
- package/dist/vbrief-reconcile/umbrellas.d.ts +48 -0
- package/dist/vbrief-reconcile/umbrellas.js +462 -0
- package/dist/vbrief-validate/conformance.d.ts +26 -0
- package/dist/vbrief-validate/conformance.js +273 -0
- package/dist/vbrief-validate/constants.d.ts +13 -0
- package/dist/vbrief-validate/constants.js +36 -0
- package/dist/vbrief-validate/decomposition.d.ts +3 -0
- package/dist/vbrief-validate/decomposition.js +38 -0
- package/dist/vbrief-validate/epic-links.d.ts +4 -0
- package/dist/vbrief-validate/epic-links.js +152 -0
- package/dist/vbrief-validate/filename.d.ts +5 -0
- package/dist/vbrief-validate/filename.js +62 -0
- package/dist/vbrief-validate/folder-status.d.ts +4 -0
- package/dist/vbrief-validate/folder-status.js +30 -0
- package/dist/vbrief-validate/index.d.ts +14 -0
- package/dist/vbrief-validate/index.js +11 -0
- package/dist/vbrief-validate/main.d.ts +17 -0
- package/dist/vbrief-validate/main.js +127 -0
- package/dist/vbrief-validate/origin.d.ts +4 -0
- package/dist/vbrief-validate/origin.js +76 -0
- package/dist/vbrief-validate/paths.d.ts +11 -0
- package/dist/vbrief-validate/paths.js +83 -0
- package/dist/vbrief-validate/placeholders.d.ts +3 -0
- package/dist/vbrief-validate/placeholders.js +33 -0
- package/dist/vbrief-validate/plan-hooks.d.ts +9 -0
- package/dist/vbrief-validate/plan-hooks.js +145 -0
- package/dist/vbrief-validate/precutover.d.ts +7 -0
- package/dist/vbrief-validate/precutover.js +30 -0
- package/dist/vbrief-validate/project-definition.d.ts +4 -0
- package/dist/vbrief-validate/project-definition.js +166 -0
- package/dist/vbrief-validate/schema.d.ts +8 -0
- package/dist/vbrief-validate/schema.js +150 -0
- package/dist/vbrief-validate/staleness.d.ts +3 -0
- package/dist/vbrief-validate/staleness.js +106 -0
- package/dist/vbrief-validate/validate-all.d.ts +17 -0
- package/dist/vbrief-validate/validate-all.js +119 -0
- package/dist/vbrief-validation/fidelity.d.ts +22 -0
- package/dist/vbrief-validation/fidelity.js +508 -0
- package/dist/vbrief-validation/index.d.ts +11 -0
- package/dist/vbrief-validation/index.js +8 -0
- package/dist/vbrief-validation/legacy-sections.d.ts +13 -0
- package/dist/vbrief-validation/legacy-sections.js +124 -0
- package/dist/vbrief-validation/main.d.ts +5 -0
- package/dist/vbrief-validation/main.js +65 -0
- package/dist/vbrief-validation/normalize.d.ts +22 -0
- package/dist/vbrief-validation/normalize.js +126 -0
- package/dist/vbrief-validation/parity-scenarios.d.ts +14 -0
- package/dist/vbrief-validation/parity-scenarios.js +523 -0
- package/dist/vbrief-validation/safety.d.ts +38 -0
- package/dist/vbrief-validation/safety.js +422 -0
- package/dist/vbrief-validation/story-quality.d.ts +29 -0
- package/dist/vbrief-validation/story-quality.js +452 -0
- package/dist/vbrief-validation/types.d.ts +58 -0
- package/dist/vbrief-validation/types.js +2 -0
- package/dist/vbrief-validation/validation.d.ts +15 -0
- package/dist/vbrief-validation/validation.js +123 -0
- package/dist/verify-env/index.d.ts +6 -0
- package/dist/verify-env/index.js +6 -0
- package/dist/verify-env/node-runtime.d.ts +6 -0
- package/dist/verify-env/node-runtime.js +11 -0
- package/dist/verify-env/toolchain-check.d.ts +28 -0
- package/dist/verify-env/toolchain-check.js +68 -0
- package/dist/verify-env/verify-hooks-installed.d.ts +21 -0
- package/dist/verify-env/verify-hooks-installed.js +162 -0
- package/dist/verify-env/verify-no-task-runtime.d.ts +20 -0
- package/dist/verify-env/verify-no-task-runtime.js +383 -0
- package/dist/verify-env/verify-tools.d.ts +59 -0
- package/dist/verify-env/verify-tools.js +354 -0
- package/dist/verify-source/code-structure-validate.d.ts +48 -0
- package/dist/verify-source/code-structure-validate.js +678 -0
- package/dist/verify-source/content-manifest.d.ts +102 -0
- package/dist/verify-source/content-manifest.js +282 -0
- package/dist/verify-source/index.d.ts +7 -0
- package/dist/verify-source/index.js +7 -0
- package/dist/verify-source/python-call-scan.d.ts +14 -0
- package/dist/verify-source/python-call-scan.js +137 -0
- package/dist/verify-source/rule-ownership-lint.d.ts +33 -0
- package/dist/verify-source/rule-ownership-lint.js +179 -0
- package/dist/verify-source/scm-boundary.d.ts +26 -0
- package/dist/verify-source/scm-boundary.js +170 -0
- package/dist/verify-source/verify-stubs.d.ts +19 -0
- package/dist/verify-source/verify-stubs.js +185 -0
- package/dist/wip-cap/evaluate.d.ts +17 -0
- package/dist/wip-cap/evaluate.js +62 -0
- package/dist/wip-cap/index.d.ts +2 -0
- package/dist/wip-cap/index.js +2 -0
- package/package.json +206 -0
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
import { appendFileSync, existsSync, mkdirSync, readdirSync, readFileSync } from "node:fs";
|
|
2
|
+
import { join, resolve } from "node:path";
|
|
3
|
+
import { countVbriefWip, DEFAULT_WIP_CAP, resolveWipCap } from "../../policy/wip.js";
|
|
4
|
+
import { countReconcilable } from "../reconcile/reconcile.js";
|
|
5
|
+
import { computeDrift } from "../scope-drift/compute.js";
|
|
6
|
+
import { CACHE_DIR_NAME, CACHE_SOURCE, EMPTY_CACHE_LINE, MAX_LINE_CHARS, SUMMARY_HISTORY_REL_PATH, SUMMARY_HISTORY_SCHEMA, WIP_WARN_GLYPH, } from "./constants.js";
|
|
7
|
+
const CANDIDATES_LOG_REL_PATH = "vbrief/.eval/candidates.jsonl";
|
|
8
|
+
const FILESYSTEM_IN_FLIGHT_STATUS = "running";
|
|
9
|
+
const TRIAGED_DECISIONS = new Set([
|
|
10
|
+
"accept",
|
|
11
|
+
"reject",
|
|
12
|
+
"defer",
|
|
13
|
+
"needs-ac",
|
|
14
|
+
"mark-duplicate",
|
|
15
|
+
"resume-eligible",
|
|
16
|
+
]);
|
|
17
|
+
const IN_FLIGHT_DECISIONS = new Set(["accept"]);
|
|
18
|
+
const STALE_DEFER_DECISIONS = new Set(["resume-eligible"]);
|
|
19
|
+
function iterCachedIssues(cacheRoot) {
|
|
20
|
+
const base = join(cacheRoot, CACHE_SOURCE);
|
|
21
|
+
if (!existsSync(base))
|
|
22
|
+
return [];
|
|
23
|
+
const out = [];
|
|
24
|
+
for (const owner of readdirSync(base, { withFileTypes: true }).filter((d) => d.isDirectory())) {
|
|
25
|
+
const ownerPath = join(base, owner.name);
|
|
26
|
+
for (const repo of readdirSync(ownerPath, { withFileTypes: true }).filter((d) => d.isDirectory())) {
|
|
27
|
+
const repoPath = join(ownerPath, repo.name);
|
|
28
|
+
const repoSlug = `${owner.name}/${repo.name}`;
|
|
29
|
+
for (const issue of readdirSync(repoPath, { withFileTypes: true }).filter((d) => d.isDirectory() && /^\d+$/.test(d.name))) {
|
|
30
|
+
out.push([repoSlug, Number(issue.name)]);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return out.sort(([aR, aN], [bR, bN]) => aR.localeCompare(bR) || aN - bN);
|
|
35
|
+
}
|
|
36
|
+
function readAuditLog(logPath) {
|
|
37
|
+
if (!existsSync(logPath))
|
|
38
|
+
return [];
|
|
39
|
+
let text;
|
|
40
|
+
try {
|
|
41
|
+
text = readFileSync(logPath, "utf8");
|
|
42
|
+
}
|
|
43
|
+
catch {
|
|
44
|
+
return [];
|
|
45
|
+
}
|
|
46
|
+
const out = [];
|
|
47
|
+
for (const raw of text.split("\n")) {
|
|
48
|
+
const stripped = raw.trim();
|
|
49
|
+
if (!stripped)
|
|
50
|
+
continue;
|
|
51
|
+
try {
|
|
52
|
+
const obj = JSON.parse(stripped);
|
|
53
|
+
if (typeof obj === "object" && obj !== null && !Array.isArray(obj)) {
|
|
54
|
+
out.push(obj);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
catch { }
|
|
58
|
+
}
|
|
59
|
+
return out;
|
|
60
|
+
}
|
|
61
|
+
function latestDecisions(entries) {
|
|
62
|
+
const out = new Map();
|
|
63
|
+
for (const entry of entries) {
|
|
64
|
+
const repo = entry.repo;
|
|
65
|
+
const num = entry.issue_number;
|
|
66
|
+
const decision = entry.decision;
|
|
67
|
+
if (typeof repo === "string" && typeof num === "number" && typeof decision === "string") {
|
|
68
|
+
out.set(`${repo}:${num}`, decision);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return out;
|
|
72
|
+
}
|
|
73
|
+
function countFilesystemInFlight(projectRoot) {
|
|
74
|
+
const activeDir = join(resolve(projectRoot), "vbrief", "active");
|
|
75
|
+
if (!existsSync(activeDir))
|
|
76
|
+
return 0;
|
|
77
|
+
let count = 0;
|
|
78
|
+
for (const name of readdirSync(activeDir)) {
|
|
79
|
+
if (!name.endsWith(".vbrief.json"))
|
|
80
|
+
continue;
|
|
81
|
+
try {
|
|
82
|
+
const data = JSON.parse(readFileSync(join(activeDir, name), "utf8"));
|
|
83
|
+
const plan = data.plan;
|
|
84
|
+
if (typeof plan === "object" && plan !== null && !Array.isArray(plan)) {
|
|
85
|
+
if (plan.status === FILESYSTEM_IN_FLIGHT_STATUS)
|
|
86
|
+
count += 1;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch { }
|
|
90
|
+
}
|
|
91
|
+
return count;
|
|
92
|
+
}
|
|
93
|
+
function isTriageScopeConfigured(projectRoot) {
|
|
94
|
+
const path = join(resolve(projectRoot), "vbrief", "PROJECT-DEFINITION.vbrief.json");
|
|
95
|
+
if (!existsSync(path))
|
|
96
|
+
return false;
|
|
97
|
+
try {
|
|
98
|
+
const data = JSON.parse(readFileSync(path, "utf8"));
|
|
99
|
+
const plan = data.plan;
|
|
100
|
+
if (typeof plan !== "object" || plan === null || Array.isArray(plan))
|
|
101
|
+
return false;
|
|
102
|
+
const scope = plan.policy;
|
|
103
|
+
if (typeof scope !== "object" || scope === null || Array.isArray(scope))
|
|
104
|
+
return false;
|
|
105
|
+
const triageScope = scope.triageScope;
|
|
106
|
+
return (Array.isArray(triageScope) &&
|
|
107
|
+
triageScope.length > 0 &&
|
|
108
|
+
triageScope.every((r) => typeof r === "object" && r !== null));
|
|
109
|
+
}
|
|
110
|
+
catch {
|
|
111
|
+
return false;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
function utcIso() {
|
|
115
|
+
return new Date().toISOString().replace(/\.\d{3}Z$/, "Z");
|
|
116
|
+
}
|
|
117
|
+
export function computeSummary(projectRoot) {
|
|
118
|
+
const root = resolve(projectRoot);
|
|
119
|
+
const cacheRoot = join(root, CACHE_DIR_NAME);
|
|
120
|
+
const logPath = join(root, CANDIDATES_LOG_REL_PATH);
|
|
121
|
+
const cached = iterCachedIssues(cacheRoot);
|
|
122
|
+
const repos = [...new Set(cached.map(([r]) => r))].sort().slice(0, 8);
|
|
123
|
+
const wipCapResult = resolveWipCap(root);
|
|
124
|
+
const wipCap = wipCapResult.cap;
|
|
125
|
+
const wipCount = countVbriefWip(root);
|
|
126
|
+
const inFlightFilesystem = countFilesystemInFlight(root);
|
|
127
|
+
const triageScopeConfigured = isTriageScopeConfigured(root);
|
|
128
|
+
if (cached.length === 0) {
|
|
129
|
+
return {
|
|
130
|
+
cacheEmpty: true,
|
|
131
|
+
untriaged: 0,
|
|
132
|
+
staleDefer: 0,
|
|
133
|
+
inFlight: inFlightFilesystem,
|
|
134
|
+
wipCount,
|
|
135
|
+
wipCap,
|
|
136
|
+
repos,
|
|
137
|
+
scopeDrift: 0,
|
|
138
|
+
inFlightFilesystem,
|
|
139
|
+
inFlightCacheScoped: 0,
|
|
140
|
+
triageScopeConfigured,
|
|
141
|
+
reconcilable: 0,
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
const decisions = latestDecisions(readAuditLog(logPath));
|
|
145
|
+
let untriaged = 0;
|
|
146
|
+
let inFlightCacheScoped = 0;
|
|
147
|
+
let staleDefer = 0;
|
|
148
|
+
const noDecisionKeys = [];
|
|
149
|
+
for (const [repo, issueNumber] of cached) {
|
|
150
|
+
const key = `${repo}:${issueNumber}`;
|
|
151
|
+
const decision = decisions.get(key);
|
|
152
|
+
if (decision === undefined || decision === "reset" || !TRIAGED_DECISIONS.has(decision)) {
|
|
153
|
+
untriaged += 1;
|
|
154
|
+
}
|
|
155
|
+
if (decision === undefined)
|
|
156
|
+
noDecisionKeys.push([repo, issueNumber]);
|
|
157
|
+
else if (IN_FLIGHT_DECISIONS.has(decision))
|
|
158
|
+
inFlightCacheScoped += 1;
|
|
159
|
+
if (decision !== undefined && STALE_DEFER_DECISIONS.has(decision))
|
|
160
|
+
staleDefer += 1;
|
|
161
|
+
}
|
|
162
|
+
let scopeDrift = 0;
|
|
163
|
+
try {
|
|
164
|
+
scopeDrift = computeDrift(root, { cacheRoot }).total;
|
|
165
|
+
}
|
|
166
|
+
catch {
|
|
167
|
+
scopeDrift = 0;
|
|
168
|
+
}
|
|
169
|
+
let reconcilable = 0;
|
|
170
|
+
try {
|
|
171
|
+
const repoSet = new Set(noDecisionKeys.map(([r]) => r));
|
|
172
|
+
const defaultRepo = repoSet.size === 1 ? ([...repoSet][0] ?? null) : null;
|
|
173
|
+
reconcilable = countReconcilable(root, {
|
|
174
|
+
defaultRepo,
|
|
175
|
+
auditLogPath: logPath,
|
|
176
|
+
restrictTo: noDecisionKeys,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
catch {
|
|
180
|
+
reconcilable = 0;
|
|
181
|
+
}
|
|
182
|
+
return {
|
|
183
|
+
cacheEmpty: false,
|
|
184
|
+
untriaged,
|
|
185
|
+
staleDefer,
|
|
186
|
+
inFlight: inFlightFilesystem,
|
|
187
|
+
wipCount,
|
|
188
|
+
wipCap,
|
|
189
|
+
repos,
|
|
190
|
+
scopeDrift,
|
|
191
|
+
inFlightFilesystem,
|
|
192
|
+
inFlightCacheScoped,
|
|
193
|
+
triageScopeConfigured,
|
|
194
|
+
reconcilable,
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
function truncate(text, maxChars) {
|
|
198
|
+
if (text.length <= maxChars)
|
|
199
|
+
return text;
|
|
200
|
+
if (maxChars <= 3)
|
|
201
|
+
return text.slice(0, maxChars);
|
|
202
|
+
return `${text.slice(0, maxChars - 3)}...`;
|
|
203
|
+
}
|
|
204
|
+
export function formatOneLiner(result, maxChars = MAX_LINE_CHARS) {
|
|
205
|
+
if (result.cacheEmpty)
|
|
206
|
+
return truncate(EMPTY_CACHE_LINE, maxChars);
|
|
207
|
+
const parts = [`[triage] ${result.untriaged} untriaged`];
|
|
208
|
+
if (result.staleDefer >= 1) {
|
|
209
|
+
parts.push(`${result.staleDefer} stale-defer (resume condition met)`);
|
|
210
|
+
}
|
|
211
|
+
parts.push(`${result.inFlight} in-flight`);
|
|
212
|
+
let wipField = `WIP ${result.wipCount}/${result.wipCap}`;
|
|
213
|
+
if (result.wipCount >= result.wipCap)
|
|
214
|
+
wipField = `${wipField} ${WIP_WARN_GLYPH}`;
|
|
215
|
+
parts.push(wipField);
|
|
216
|
+
if (result.scopeDrift > 0)
|
|
217
|
+
parts.push(`[scope-drift] ${result.scopeDrift}`);
|
|
218
|
+
let candidate = parts.join(" \u00b7 ");
|
|
219
|
+
if (candidate.length <= maxChars)
|
|
220
|
+
return candidate;
|
|
221
|
+
if (wipField.includes(WIP_WARN_GLYPH)) {
|
|
222
|
+
const rebuilt = [...parts.slice(0, -1), `WIP ${result.wipCount}/${result.wipCap}`];
|
|
223
|
+
candidate = rebuilt.join(" \u00b7 ");
|
|
224
|
+
if (candidate.length <= maxChars)
|
|
225
|
+
return candidate;
|
|
226
|
+
}
|
|
227
|
+
if (result.staleDefer >= 1) {
|
|
228
|
+
candidate = [
|
|
229
|
+
`[triage] ${result.untriaged} untriaged`,
|
|
230
|
+
`${result.inFlight} in-flight`,
|
|
231
|
+
`WIP ${result.wipCount}/${result.wipCap}`,
|
|
232
|
+
].join(" \u00b7 ");
|
|
233
|
+
if (candidate.length <= maxChars)
|
|
234
|
+
return candidate;
|
|
235
|
+
}
|
|
236
|
+
return truncate(candidate, maxChars);
|
|
237
|
+
}
|
|
238
|
+
function formatScopeDiscrepancyLine(result) {
|
|
239
|
+
if (result.cacheEmpty)
|
|
240
|
+
return null;
|
|
241
|
+
const delta = Math.abs(result.inFlightFilesystem - result.inFlightCacheScoped);
|
|
242
|
+
if (delta === 0)
|
|
243
|
+
return null;
|
|
244
|
+
if (result.triageScopeConfigured) {
|
|
245
|
+
return `[triage:scope] ${delta} in-flight outside plan.policy.triageScope[] (uncounted in queue ranking)`;
|
|
246
|
+
}
|
|
247
|
+
return `[triage:scope] ${delta} in-flight; plan.policy.triageScope[] not configured (uncounted in queue ranking)`;
|
|
248
|
+
}
|
|
249
|
+
function formatReconcileHintLine(result) {
|
|
250
|
+
if (result.cacheEmpty || result.reconcilable <= 0)
|
|
251
|
+
return null;
|
|
252
|
+
return (`[triage:reconcile] ${result.reconcilable} accepted on disk but missing from the audit log -- ` +
|
|
253
|
+
"run `task triage:reconcile` to restore");
|
|
254
|
+
}
|
|
255
|
+
export function formatSummary(result, maxChars = MAX_LINE_CHARS) {
|
|
256
|
+
const lines = [formatOneLiner(result, maxChars)];
|
|
257
|
+
const scopeLine = formatScopeDiscrepancyLine(result);
|
|
258
|
+
if (scopeLine)
|
|
259
|
+
lines.push(scopeLine);
|
|
260
|
+
const reconcileLine = formatReconcileHintLine(result);
|
|
261
|
+
if (reconcileLine)
|
|
262
|
+
lines.push(reconcileLine);
|
|
263
|
+
return lines.join("\n");
|
|
264
|
+
}
|
|
265
|
+
export function appendHistory(historyPath, result, line) {
|
|
266
|
+
const record = {
|
|
267
|
+
schema: SUMMARY_HISTORY_SCHEMA,
|
|
268
|
+
emitted_at: utcIso(),
|
|
269
|
+
line,
|
|
270
|
+
cache_empty: result.cacheEmpty,
|
|
271
|
+
untriaged: result.untriaged,
|
|
272
|
+
stale_defer: result.staleDefer,
|
|
273
|
+
in_flight: result.inFlight,
|
|
274
|
+
in_flight_filesystem: result.inFlightFilesystem,
|
|
275
|
+
in_flight_cache_scoped: result.inFlightCacheScoped,
|
|
276
|
+
triage_scope_configured: result.triageScopeConfigured,
|
|
277
|
+
wip_count: result.wipCount,
|
|
278
|
+
wip_cap: result.wipCap,
|
|
279
|
+
repos: [...result.repos],
|
|
280
|
+
scope_drift: result.scopeDrift,
|
|
281
|
+
reconcilable: result.reconcilable,
|
|
282
|
+
};
|
|
283
|
+
try {
|
|
284
|
+
mkdirSync(join(historyPath, ".."), { recursive: true });
|
|
285
|
+
appendFileSync(historyPath, `${JSON.stringify(record)}\n`, "utf8");
|
|
286
|
+
}
|
|
287
|
+
catch {
|
|
288
|
+
// observability only
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
export function emitOneliner(projectRoot, options = {}) {
|
|
292
|
+
const result = computeSummary(projectRoot);
|
|
293
|
+
const line = formatSummary(result);
|
|
294
|
+
const out = options.output ?? ((l) => process.stdout.write(`${l}\n`));
|
|
295
|
+
for (const physicalLine of line.split("\n")) {
|
|
296
|
+
out(physicalLine);
|
|
297
|
+
}
|
|
298
|
+
if (options.writeHistory !== false) {
|
|
299
|
+
appendHistory(join(resolve(projectRoot), SUMMARY_HISTORY_REL_PATH), result, line);
|
|
300
|
+
}
|
|
301
|
+
return line;
|
|
302
|
+
}
|
|
303
|
+
//# sourceMappingURL=summary.js.map
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export declare function appendAuditEntry(projectRoot: string, entry: string): string;
|
|
2
|
+
export declare function writeTriageScope(projectRoot: string, rules: Array<Record<string, unknown>>, options?: {
|
|
3
|
+
presetLabel: string;
|
|
4
|
+
actor?: string;
|
|
5
|
+
}): [boolean, string];
|
|
6
|
+
export declare function writeWipCap(projectRoot: string, wipCap: number, options?: {
|
|
7
|
+
actor?: string;
|
|
8
|
+
}): [boolean, string];
|
|
9
|
+
export interface ReliefPreview {
|
|
10
|
+
readonly olderThanDays: number;
|
|
11
|
+
readonly eligibleCount: number;
|
|
12
|
+
readonly eligibleFiles: readonly string[];
|
|
13
|
+
readonly skippedCount: number;
|
|
14
|
+
}
|
|
15
|
+
export declare function previewWipRelief(projectRoot: string, olderThanDays?: number): ReliefPreview;
|
|
16
|
+
export declare function subscriptionPreset(key: string): Array<Record<string, unknown>>;
|
|
17
|
+
//# sourceMappingURL=writers.d.ts.map
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
import { appendFileSync, existsSync, mkdirSync, readdirSync, readFileSync, renameSync, statSync, writeFileSync, } from "node:fs";
|
|
2
|
+
import { dirname, join, resolve } from "node:path";
|
|
3
|
+
import { AUDIT_LOG_REL_PATH, DEFAULT_RELIEF_AGE_DAYS, DEFAULT_WIP_CAP, PROJECT_DEFINITION_REL_PATH, SUBSCRIPTION_PRESETS, WELCOME_AUDIT_TAG, } from "./constants.js";
|
|
4
|
+
function projectDefinitionPath(projectRoot) {
|
|
5
|
+
return join(resolve(projectRoot), PROJECT_DEFINITION_REL_PATH);
|
|
6
|
+
}
|
|
7
|
+
function utcIso() {
|
|
8
|
+
return new Date().toISOString().replace(/\.\d{3}Z$/, "Z");
|
|
9
|
+
}
|
|
10
|
+
export function appendAuditEntry(projectRoot, entry) {
|
|
11
|
+
const logPath = join(resolve(projectRoot), AUDIT_LOG_REL_PATH);
|
|
12
|
+
mkdirSync(dirname(logPath), { recursive: true });
|
|
13
|
+
const line = `${utcIso()} ${entry}\n`;
|
|
14
|
+
if (!existsSync(logPath)) {
|
|
15
|
+
writeFileSync(logPath, "# meta/policy-changes.log -- audit trail for PROJECT-DEFINITION plan.policy.* mutations (#746 / #1143)\n", "utf8");
|
|
16
|
+
}
|
|
17
|
+
appendFileSync(logPath, line, "utf8");
|
|
18
|
+
return logPath;
|
|
19
|
+
}
|
|
20
|
+
function atomicWrite(path, data) {
|
|
21
|
+
mkdirSync(dirname(path), { recursive: true });
|
|
22
|
+
const payload = `${JSON.stringify(data, null, 2)}\n`;
|
|
23
|
+
const tmp = join(dirname(path), `.${Date.now()}.tmp`);
|
|
24
|
+
writeFileSync(tmp, payload, "utf8");
|
|
25
|
+
renameSync(tmp, path);
|
|
26
|
+
}
|
|
27
|
+
export function writeTriageScope(projectRoot, rules, options = { presetLabel: "custom" }) {
|
|
28
|
+
const path = projectDefinitionPath(projectRoot);
|
|
29
|
+
if (!existsSync(path))
|
|
30
|
+
throw new Error(`PROJECT-DEFINITION not found at ${path}`);
|
|
31
|
+
const data = JSON.parse(readFileSync(path, "utf8"));
|
|
32
|
+
const plan = data.plan;
|
|
33
|
+
if (typeof plan !== "object" || plan === null || Array.isArray(plan)) {
|
|
34
|
+
throw new Error("PROJECT-DEFINITION 'plan' is not an object");
|
|
35
|
+
}
|
|
36
|
+
const planRec = plan;
|
|
37
|
+
let policy = planRec.policy;
|
|
38
|
+
if (typeof policy !== "object" || policy === null || Array.isArray(policy)) {
|
|
39
|
+
policy = {};
|
|
40
|
+
planRec.policy = policy;
|
|
41
|
+
}
|
|
42
|
+
const policyRec = policy;
|
|
43
|
+
const previous = policyRec.triageScope;
|
|
44
|
+
policyRec.triageScope = rules;
|
|
45
|
+
atomicWrite(path, data);
|
|
46
|
+
const changed = JSON.stringify(previous) !== JSON.stringify(rules);
|
|
47
|
+
const actor = options.actor ?? WELCOME_AUDIT_TAG;
|
|
48
|
+
const auditEntry = [
|
|
49
|
+
`actor=${actor}`,
|
|
50
|
+
"field=plan.policy.triageScope",
|
|
51
|
+
`preset=${options.presetLabel}`,
|
|
52
|
+
`rule_count=${rules.length}`,
|
|
53
|
+
`changed=${changed ? "true" : "false"}`,
|
|
54
|
+
].join(" ");
|
|
55
|
+
appendAuditEntry(projectRoot, auditEntry);
|
|
56
|
+
return [changed, auditEntry];
|
|
57
|
+
}
|
|
58
|
+
export function writeWipCap(projectRoot, wipCap, options = {}) {
|
|
59
|
+
if (!Number.isInteger(wipCap) || wipCap < 1) {
|
|
60
|
+
throw new Error(`wipCap must be a positive int, got ${JSON.stringify(wipCap)}`);
|
|
61
|
+
}
|
|
62
|
+
const path = projectDefinitionPath(projectRoot);
|
|
63
|
+
if (!existsSync(path))
|
|
64
|
+
throw new Error(`PROJECT-DEFINITION not found at ${path}`);
|
|
65
|
+
const data = JSON.parse(readFileSync(path, "utf8"));
|
|
66
|
+
const plan = data.plan;
|
|
67
|
+
if (typeof plan !== "object" || plan === null || Array.isArray(plan)) {
|
|
68
|
+
throw new Error("PROJECT-DEFINITION 'plan' is not an object");
|
|
69
|
+
}
|
|
70
|
+
const planRec = plan;
|
|
71
|
+
let policy = planRec.policy;
|
|
72
|
+
if (typeof policy !== "object" || policy === null || Array.isArray(policy)) {
|
|
73
|
+
policy = {};
|
|
74
|
+
planRec.policy = policy;
|
|
75
|
+
}
|
|
76
|
+
const policyRec = policy;
|
|
77
|
+
const previous = policyRec.wipCap;
|
|
78
|
+
const actor = options.actor ?? WELCOME_AUDIT_TAG;
|
|
79
|
+
if (previous === undefined && wipCap === DEFAULT_WIP_CAP) {
|
|
80
|
+
return [false, ""];
|
|
81
|
+
}
|
|
82
|
+
if (previous !== undefined && wipCap === DEFAULT_WIP_CAP) {
|
|
83
|
+
delete policyRec.wipCap;
|
|
84
|
+
atomicWrite(path, data);
|
|
85
|
+
const auditEntry = `actor=${actor} field=plan.policy.wipCap action=cleared-to-default value=${wipCap} ` +
|
|
86
|
+
`previous=${JSON.stringify(previous)} changed=true`;
|
|
87
|
+
appendAuditEntry(projectRoot, auditEntry);
|
|
88
|
+
return [true, auditEntry];
|
|
89
|
+
}
|
|
90
|
+
policyRec.wipCap = wipCap;
|
|
91
|
+
atomicWrite(path, data);
|
|
92
|
+
const changed = previous !== wipCap;
|
|
93
|
+
const auditEntry = `actor=${actor} field=plan.policy.wipCap value=${wipCap} previous=${JSON.stringify(previous)} ` +
|
|
94
|
+
`changed=${changed ? "true" : "false"}`;
|
|
95
|
+
appendAuditEntry(projectRoot, auditEntry);
|
|
96
|
+
return [changed, auditEntry];
|
|
97
|
+
}
|
|
98
|
+
function daysInPending(path, now) {
|
|
99
|
+
try {
|
|
100
|
+
const data = JSON.parse(readFileSync(path, "utf8"));
|
|
101
|
+
const plan = data.plan;
|
|
102
|
+
if (typeof plan === "object" && plan !== null && !Array.isArray(plan)) {
|
|
103
|
+
const raw = plan.updated;
|
|
104
|
+
if (typeof raw === "string") {
|
|
105
|
+
let text = raw.trim();
|
|
106
|
+
if (text.endsWith("Z"))
|
|
107
|
+
text = `${text.slice(0, -1)}+00:00`;
|
|
108
|
+
const stamp = new Date(text);
|
|
109
|
+
if (!Number.isNaN(stamp.getTime())) {
|
|
110
|
+
return Math.max(0, Math.floor((now.getTime() - stamp.getTime()) / 86400000));
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
catch {
|
|
116
|
+
// fall through
|
|
117
|
+
}
|
|
118
|
+
try {
|
|
119
|
+
const mtime = statSync(path).mtime;
|
|
120
|
+
return Math.max(0, Math.floor((now.getTime() - mtime.getTime()) / 86400000));
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
return 0;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
export function previewWipRelief(projectRoot, olderThanDays = DEFAULT_RELIEF_AGE_DAYS) {
|
|
127
|
+
const pendingDir = join(resolve(projectRoot), "vbrief", "pending");
|
|
128
|
+
if (!existsSync(pendingDir)) {
|
|
129
|
+
return { olderThanDays, eligibleCount: 0, eligibleFiles: [], skippedCount: 0 };
|
|
130
|
+
}
|
|
131
|
+
const now = new Date();
|
|
132
|
+
const eligible = [];
|
|
133
|
+
let skipped = 0;
|
|
134
|
+
for (const name of [...readdirSync(pendingDir)]
|
|
135
|
+
.filter((n) => n.endsWith(".vbrief.json"))
|
|
136
|
+
.sort()) {
|
|
137
|
+
const path = join(pendingDir, name);
|
|
138
|
+
const days = daysInPending(path, now);
|
|
139
|
+
if (days >= olderThanDays)
|
|
140
|
+
eligible.push(name);
|
|
141
|
+
else
|
|
142
|
+
skipped += 1;
|
|
143
|
+
}
|
|
144
|
+
return {
|
|
145
|
+
olderThanDays,
|
|
146
|
+
eligibleCount: eligible.length,
|
|
147
|
+
eligibleFiles: eligible,
|
|
148
|
+
skippedCount: skipped,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
export function subscriptionPreset(key) {
|
|
152
|
+
const preset = SUBSCRIPTION_PRESETS[key];
|
|
153
|
+
if (!preset)
|
|
154
|
+
throw new Error(`unknown preset ${key}`);
|
|
155
|
+
return preset.map((r) => ({ ...r }));
|
|
156
|
+
}
|
|
157
|
+
//# sourceMappingURL=writers.js.map
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ts-check-lane/run-lane.ts -- Node-toolchain-aware TypeScript lane for
|
|
3
|
+
* `task check` (#1530, #1790).
|
|
4
|
+
*
|
|
5
|
+
* TypeScript port of scripts/ts_check_lane.py (#1731 Wave 9 Python-delete).
|
|
6
|
+
*
|
|
7
|
+
* `task check` -> `check:framework-source` historically ran only the Python
|
|
8
|
+
* suite + gates; the TypeScript engine (biome lint, tsc build, vitest) ran only
|
|
9
|
+
* in the dedicated CI job. That split let a TS lint/format/test failure pass a
|
|
10
|
+
* contributor's local `task check` and redden CI after push.
|
|
11
|
+
*
|
|
12
|
+
* This helper closes the gap WITHOUT regressing the documented invariant that
|
|
13
|
+
* `check:framework-source` must not hard-require a Node toolchain in Node-less
|
|
14
|
+
* environments (the vendored-consumer guard pattern). When `pnpm` is on PATH it
|
|
15
|
+
* runs `pnpm run lint`, `pnpm run build`, and `pnpm run test` in order, failing
|
|
16
|
+
* fast on the first non-zero exit. When `pnpm` is absent it prints a clear
|
|
17
|
+
* notice and exits 0 -- the TS lane stays validated by the CI job in that case.
|
|
18
|
+
*/
|
|
19
|
+
/**
|
|
20
|
+
* Run order is deliberate: lint (cheapest, catches the biome class first),
|
|
21
|
+
* then build, then the test suite.
|
|
22
|
+
*/
|
|
23
|
+
export declare const LANE_COMMANDS: ReadonlyArray<readonly [string, string]>;
|
|
24
|
+
export declare const SKIP_NOTICE: string;
|
|
25
|
+
/** Result of a single lane command invocation. Mirrors a subset of SpawnSyncReturns. */
|
|
26
|
+
export interface RunnerResult {
|
|
27
|
+
readonly status: number | null;
|
|
28
|
+
}
|
|
29
|
+
export type LaneRunner = (argv: readonly string[], cwd: string) => RunnerResult;
|
|
30
|
+
export interface RunTsLaneOptions {
|
|
31
|
+
/** Resolved pnpm executable path, or null when not installed. */
|
|
32
|
+
readonly pnpm: string | null;
|
|
33
|
+
/** Injected command runner (defaults to a real spawnSync). */
|
|
34
|
+
readonly runner?: LaneRunner;
|
|
35
|
+
/** Injected sink for human-facing notices (defaults to stdout). */
|
|
36
|
+
readonly out?: (message: string) => void;
|
|
37
|
+
}
|
|
38
|
+
export interface ResolvePnpmOptions {
|
|
39
|
+
readonly env?: NodeJS.ProcessEnv;
|
|
40
|
+
readonly platform?: NodeJS.Platform;
|
|
41
|
+
/** Injected existence probe (defaults to node:fs existsSync). */
|
|
42
|
+
readonly exists?: (path: string) => boolean;
|
|
43
|
+
}
|
|
44
|
+
/** Resolve the pnpm executable path, or null when it is not installed. */
|
|
45
|
+
export declare function resolvePnpm(options?: ResolvePnpmOptions): string | null;
|
|
46
|
+
/**
|
|
47
|
+
* Run the TS lane when pnpm is available; skip (exit 0) when it is not.
|
|
48
|
+
*
|
|
49
|
+
* `runner` and `out` are injected so the guard logic is unit-testable without a
|
|
50
|
+
* real Node toolchain or real subprocess execution.
|
|
51
|
+
*/
|
|
52
|
+
export declare function runTsLane(projectRoot: string, options: RunTsLaneOptions): number;
|
|
53
|
+
//# sourceMappingURL=run-lane.d.ts.map
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ts-check-lane/run-lane.ts -- Node-toolchain-aware TypeScript lane for
|
|
3
|
+
* `task check` (#1530, #1790).
|
|
4
|
+
*
|
|
5
|
+
* TypeScript port of scripts/ts_check_lane.py (#1731 Wave 9 Python-delete).
|
|
6
|
+
*
|
|
7
|
+
* `task check` -> `check:framework-source` historically ran only the Python
|
|
8
|
+
* suite + gates; the TypeScript engine (biome lint, tsc build, vitest) ran only
|
|
9
|
+
* in the dedicated CI job. That split let a TS lint/format/test failure pass a
|
|
10
|
+
* contributor's local `task check` and redden CI after push.
|
|
11
|
+
*
|
|
12
|
+
* This helper closes the gap WITHOUT regressing the documented invariant that
|
|
13
|
+
* `check:framework-source` must not hard-require a Node toolchain in Node-less
|
|
14
|
+
* environments (the vendored-consumer guard pattern). When `pnpm` is on PATH it
|
|
15
|
+
* runs `pnpm run lint`, `pnpm run build`, and `pnpm run test` in order, failing
|
|
16
|
+
* fast on the first non-zero exit. When `pnpm` is absent it prints a clear
|
|
17
|
+
* notice and exits 0 -- the TS lane stays validated by the CI job in that case.
|
|
18
|
+
*/
|
|
19
|
+
import { spawnSync } from "node:child_process";
|
|
20
|
+
import { existsSync } from "node:fs";
|
|
21
|
+
import { join } from "node:path";
|
|
22
|
+
/**
|
|
23
|
+
* Run order is deliberate: lint (cheapest, catches the biome class first),
|
|
24
|
+
* then build, then the test suite.
|
|
25
|
+
*/
|
|
26
|
+
export const LANE_COMMANDS = [
|
|
27
|
+
["run", "lint"],
|
|
28
|
+
["run", "build"],
|
|
29
|
+
["run", "test"],
|
|
30
|
+
];
|
|
31
|
+
export const SKIP_NOTICE = "[ts:check-lane] pnpm not found on PATH -- skipping the TypeScript lane " +
|
|
32
|
+
"(build/lint/test). The TS engine stays validated by the dedicated CI job. " +
|
|
33
|
+
"Install the Node toolchain (pnpm) to run the TS lane locally.";
|
|
34
|
+
/** Default runner: a non-shell, inherited-stdio pnpm invocation. */
|
|
35
|
+
function defaultRunner(argv, cwd) {
|
|
36
|
+
const [command, ...rest] = argv;
|
|
37
|
+
const result = spawnSync(command ?? "", rest, { cwd, stdio: "inherit" });
|
|
38
|
+
return { status: result.status };
|
|
39
|
+
}
|
|
40
|
+
/** Resolve the pnpm executable path, or null when it is not installed. */
|
|
41
|
+
export function resolvePnpm(options = {}) {
|
|
42
|
+
const env = options.env ?? process.env;
|
|
43
|
+
const platform = options.platform ?? process.platform;
|
|
44
|
+
const exists = options.exists ?? existsSync;
|
|
45
|
+
const pathValue = env.PATH ?? env.Path ?? "";
|
|
46
|
+
if (pathValue === "") {
|
|
47
|
+
return null;
|
|
48
|
+
}
|
|
49
|
+
const isWindows = platform === "win32";
|
|
50
|
+
const exts = isWindows ? (env.PATHEXT ?? ".COM;.EXE;.BAT;.CMD").split(";") : [""];
|
|
51
|
+
const sep = isWindows ? ";" : ":";
|
|
52
|
+
for (const dir of pathValue.split(sep)) {
|
|
53
|
+
if (dir === "")
|
|
54
|
+
continue;
|
|
55
|
+
for (const ext of exts) {
|
|
56
|
+
const candidate = join(dir, `pnpm${ext}`);
|
|
57
|
+
if (exists(candidate)) {
|
|
58
|
+
return candidate;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Run the TS lane when pnpm is available; skip (exit 0) when it is not.
|
|
66
|
+
*
|
|
67
|
+
* `runner` and `out` are injected so the guard logic is unit-testable without a
|
|
68
|
+
* real Node toolchain or real subprocess execution.
|
|
69
|
+
*/
|
|
70
|
+
export function runTsLane(projectRoot, options) {
|
|
71
|
+
const { pnpm } = options;
|
|
72
|
+
const runner = options.runner ?? defaultRunner;
|
|
73
|
+
const out = options.out ?? ((message) => process.stdout.write(`${message}\n`));
|
|
74
|
+
if (!pnpm) {
|
|
75
|
+
out(SKIP_NOTICE);
|
|
76
|
+
return 0;
|
|
77
|
+
}
|
|
78
|
+
for (const command of LANE_COMMANDS) {
|
|
79
|
+
const argv = [pnpm, ...command];
|
|
80
|
+
const result = runner(argv, projectRoot);
|
|
81
|
+
const code = result.status;
|
|
82
|
+
// A null status means the child was terminated by a signal (SIGKILL / OOM /
|
|
83
|
+
// SIGTERM) before it could exit. Mapping that to 0 would silently pass a
|
|
84
|
+
// half-run lint/test on a memory-constrained machine, so treat it as a hard
|
|
85
|
+
// failure -- this mirrors the Python oracle, whose returncode is negative
|
|
86
|
+
// (non-zero) for a signal-killed process.
|
|
87
|
+
if (code === null) {
|
|
88
|
+
out(`[ts:check-lane] \`pnpm ${command.join(" ")}\` was killed by a signal before exit -- treating as failure.`);
|
|
89
|
+
return 1;
|
|
90
|
+
}
|
|
91
|
+
if (code !== 0) {
|
|
92
|
+
out(`[ts:check-lane] \`pnpm ${command.join(" ")}\` failed (exit ${code}).`);
|
|
93
|
+
return code;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return 0;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=run-lane.js.map
|