@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,35 @@
|
|
|
1
|
+
import { GROUP_DISPLAY } from "./constants.js";
|
|
2
|
+
function truncate(text, width) {
|
|
3
|
+
if (width <= 1 || text.length <= width) {
|
|
4
|
+
return text;
|
|
5
|
+
}
|
|
6
|
+
return `${text.slice(0, width - 1)}...`;
|
|
7
|
+
}
|
|
8
|
+
/** Pretty-print the ranked queue. Mirrors scripts/triage_queue.py::render_queue. */
|
|
9
|
+
export function renderQueue(options) {
|
|
10
|
+
const lines = [];
|
|
11
|
+
lines.push(`triage:queue -- ${options.repo}`);
|
|
12
|
+
const rankingLabels = options.rankingLabels ?? [];
|
|
13
|
+
if (rankingLabels.length > 0) {
|
|
14
|
+
lines.push(` consumer ranking labels (in declared order): ${rankingLabels.join(", ")}`);
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
lines.push(" consumer ranking labels: <empty> (framework default; within-group = updated_at desc)");
|
|
18
|
+
}
|
|
19
|
+
if (options.limit !== null && options.limit !== undefined) {
|
|
20
|
+
lines.push(` limit: ${options.limit}`);
|
|
21
|
+
}
|
|
22
|
+
lines.push("");
|
|
23
|
+
if (options.items.length === 0) {
|
|
24
|
+
lines.push(" (no cached issues -- run `task triage:bootstrap` first)");
|
|
25
|
+
return lines.join("\n");
|
|
26
|
+
}
|
|
27
|
+
for (const item of options.items) {
|
|
28
|
+
const marker = GROUP_DISPLAY[item.group] ?? `[${item.group}] `;
|
|
29
|
+
const labelHint = item.matchedLabel !== null ? ` (label: ${item.matchedLabel})` : "";
|
|
30
|
+
const title = truncate(item.title, 72);
|
|
31
|
+
lines.push(` ${marker}#${item.number} ${title} -- updated ${item.updatedAt}${labelHint}`);
|
|
32
|
+
}
|
|
33
|
+
return lines.join("\n");
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=render.js.map
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
/** Best-effort: read git remote get-url origin inside projectRoot. */
|
|
2
|
+
export declare function inferRepoFromGit(projectRoot: string | null): string | null;
|
|
3
|
+
/** Resolve effective owner/name repo slug (#1238). */
|
|
4
|
+
export declare function resolveRepo(explicit: string | null | undefined, projectRoot: string): string | null;
|
|
5
|
+
//# sourceMappingURL=repo.d.ts.map
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { execFileSync } from "node:child_process";
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
import { parseGitHubRemoteRepo } from "../../text/redos-safe.js";
|
|
4
|
+
import { ENV_TRIAGE_REPO } from "./constants.js";
|
|
5
|
+
/** Best-effort: read git remote get-url origin inside projectRoot. */
|
|
6
|
+
export function inferRepoFromGit(projectRoot) {
|
|
7
|
+
const cwd = projectRoot !== null ? resolve(projectRoot) : undefined;
|
|
8
|
+
try {
|
|
9
|
+
const stdout = execFileSync("git", ["remote", "get-url", "origin"], {
|
|
10
|
+
cwd,
|
|
11
|
+
encoding: "utf8",
|
|
12
|
+
timeout: 10_000,
|
|
13
|
+
stdio: ["ignore", "pipe", "ignore"],
|
|
14
|
+
});
|
|
15
|
+
const url = stdout.trim();
|
|
16
|
+
if (url.length === 0) {
|
|
17
|
+
return null;
|
|
18
|
+
}
|
|
19
|
+
return parseGitHubRemoteRepo(url);
|
|
20
|
+
}
|
|
21
|
+
catch {
|
|
22
|
+
return null;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/** Resolve effective owner/name repo slug (#1238). */
|
|
26
|
+
export function resolveRepo(explicit, projectRoot) {
|
|
27
|
+
if (explicit !== null && explicit !== undefined && explicit.trim().length > 0) {
|
|
28
|
+
return explicit.trim();
|
|
29
|
+
}
|
|
30
|
+
const envRepo = process.env[ENV_TRIAGE_REPO]?.trim() ?? "";
|
|
31
|
+
if (envRepo.length > 0) {
|
|
32
|
+
return envRepo;
|
|
33
|
+
}
|
|
34
|
+
return inferRepoFromGit(projectRoot);
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=repo.js.map
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/** Extract issue numbers from a plan's x-vbrief/github-issue references. */
|
|
2
|
+
export declare function issueNumbersFromPlan(plan: Record<string, unknown>): ReadonlySet<number>;
|
|
3
|
+
/** Return plan.metadata.rank as an int, or null when absent/invalid. */
|
|
4
|
+
export declare function scopeMetadataRank(plan: unknown): number | null;
|
|
5
|
+
/** Return true when a scope is blocked (#1286). */
|
|
6
|
+
export declare function scopeIsBlocked(plan: unknown, completedIds: ReadonlySet<string>): boolean;
|
|
7
|
+
/** Issue numbers referenced by any vbrief/active/*.vbrief.json. */
|
|
8
|
+
export declare function activeReferencedIssueNumbers(projectRoot: string): ReadonlySet<number>;
|
|
9
|
+
/** Map referenced issue numbers to plan.metadata.rank. */
|
|
10
|
+
export declare function rankByIssueNumber(projectRoot: string, folders?: readonly string[]): ReadonlyMap<number, number>;
|
|
11
|
+
/** Map referenced issue numbers to blocked state (#1286). */
|
|
12
|
+
export declare function blockedByIssueNumber(projectRoot: string, folders?: readonly string[]): ReadonlySet<number>;
|
|
13
|
+
//# sourceMappingURL=scope-walk.d.ts.map
|
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
2
|
+
import { join, resolve } from "node:path";
|
|
3
|
+
function loadPlan(path) {
|
|
4
|
+
try {
|
|
5
|
+
const data = JSON.parse(readFileSync(path, { encoding: "utf8" }));
|
|
6
|
+
if (typeof data !== "object" || data === null) {
|
|
7
|
+
return null;
|
|
8
|
+
}
|
|
9
|
+
const plan = data.plan;
|
|
10
|
+
return typeof plan === "object" && plan !== null ? plan : null;
|
|
11
|
+
}
|
|
12
|
+
catch {
|
|
13
|
+
return null;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
/** Extract issue numbers from a plan's x-vbrief/github-issue references. */
|
|
17
|
+
export function issueNumbersFromPlan(plan) {
|
|
18
|
+
const out = new Set();
|
|
19
|
+
const refs = plan.references;
|
|
20
|
+
if (!Array.isArray(refs)) {
|
|
21
|
+
return out;
|
|
22
|
+
}
|
|
23
|
+
for (const ref of refs) {
|
|
24
|
+
if (typeof ref !== "object" || ref === null) {
|
|
25
|
+
continue;
|
|
26
|
+
}
|
|
27
|
+
const typed = ref;
|
|
28
|
+
if (typed.type !== "x-vbrief/github-issue") {
|
|
29
|
+
continue;
|
|
30
|
+
}
|
|
31
|
+
const uri = typed.uri;
|
|
32
|
+
if (typeof uri !== "string") {
|
|
33
|
+
continue;
|
|
34
|
+
}
|
|
35
|
+
const tail = uri.replace(/\/+$/, "").split("/").pop() ?? "";
|
|
36
|
+
if (/^\d+$/.test(tail)) {
|
|
37
|
+
out.add(Number.parseInt(tail, 10));
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return out;
|
|
41
|
+
}
|
|
42
|
+
/** Return plan.metadata.rank as an int, or null when absent/invalid. */
|
|
43
|
+
export function scopeMetadataRank(plan) {
|
|
44
|
+
if (typeof plan !== "object" || plan === null) {
|
|
45
|
+
return null;
|
|
46
|
+
}
|
|
47
|
+
const metadata = plan.metadata;
|
|
48
|
+
if (typeof metadata !== "object" || metadata === null) {
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
const rank = metadata.rank;
|
|
52
|
+
if (typeof rank === "boolean") {
|
|
53
|
+
return null;
|
|
54
|
+
}
|
|
55
|
+
if (typeof rank === "number" && Number.isInteger(rank)) {
|
|
56
|
+
return rank;
|
|
57
|
+
}
|
|
58
|
+
if (typeof rank === "string") {
|
|
59
|
+
const trimmed = rank.trim();
|
|
60
|
+
if (/^-?\d+$/.test(trimmed)) {
|
|
61
|
+
return Number.parseInt(trimmed, 10);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return null;
|
|
65
|
+
}
|
|
66
|
+
function dependsOnIds(plan) {
|
|
67
|
+
const metadata = plan.metadata;
|
|
68
|
+
if (typeof metadata !== "object" || metadata === null) {
|
|
69
|
+
return [];
|
|
70
|
+
}
|
|
71
|
+
const swarm = metadata.swarm;
|
|
72
|
+
if (typeof swarm !== "object" || swarm === null) {
|
|
73
|
+
return [];
|
|
74
|
+
}
|
|
75
|
+
const raw = swarm.depends_on;
|
|
76
|
+
if (!Array.isArray(raw)) {
|
|
77
|
+
return [];
|
|
78
|
+
}
|
|
79
|
+
return raw
|
|
80
|
+
.filter((dep) => typeof dep === "string" && dep.trim().length > 0)
|
|
81
|
+
.map((dep) => dep.trim());
|
|
82
|
+
}
|
|
83
|
+
function completedPlanIds(projectRoot) {
|
|
84
|
+
const out = new Set();
|
|
85
|
+
const base = join(resolve(projectRoot), "vbrief", "completed");
|
|
86
|
+
if (!existsSync(base)) {
|
|
87
|
+
return out;
|
|
88
|
+
}
|
|
89
|
+
for (const name of readdirSync(base).filter((entry) => entry.endsWith(".vbrief.json"))) {
|
|
90
|
+
const plan = loadPlan(join(base, name));
|
|
91
|
+
if (plan === null) {
|
|
92
|
+
continue;
|
|
93
|
+
}
|
|
94
|
+
const pid = plan.id;
|
|
95
|
+
if (typeof pid === "string" && pid.trim().length > 0) {
|
|
96
|
+
out.add(pid.trim());
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
return out;
|
|
100
|
+
}
|
|
101
|
+
/** Return true when a scope is blocked (#1286). */
|
|
102
|
+
export function scopeIsBlocked(plan, completedIds) {
|
|
103
|
+
if (typeof plan !== "object" || plan === null) {
|
|
104
|
+
return false;
|
|
105
|
+
}
|
|
106
|
+
const typed = plan;
|
|
107
|
+
if (typed.status === "blocked") {
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
const deps = dependsOnIds(typed);
|
|
111
|
+
return deps.length > 0 && deps.some((dep) => !completedIds.has(dep));
|
|
112
|
+
}
|
|
113
|
+
function walkScopeFolders(projectRoot, folders, visitor) {
|
|
114
|
+
const base = join(resolve(projectRoot), "vbrief");
|
|
115
|
+
for (const folder of folders) {
|
|
116
|
+
const folderDir = join(base, folder);
|
|
117
|
+
if (!existsSync(folderDir)) {
|
|
118
|
+
continue;
|
|
119
|
+
}
|
|
120
|
+
for (const name of readdirSync(folderDir)
|
|
121
|
+
.filter((entry) => entry.endsWith(".vbrief.json"))
|
|
122
|
+
.sort()) {
|
|
123
|
+
const plan = loadPlan(join(folderDir, name));
|
|
124
|
+
if (plan !== null) {
|
|
125
|
+
visitor(plan, name);
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
/** Issue numbers referenced by any vbrief/active/*.vbrief.json. */
|
|
131
|
+
export function activeReferencedIssueNumbers(projectRoot) {
|
|
132
|
+
const out = new Set();
|
|
133
|
+
walkScopeFolders(projectRoot, ["active"], (plan) => {
|
|
134
|
+
for (const n of issueNumbersFromPlan(plan)) {
|
|
135
|
+
out.add(n);
|
|
136
|
+
}
|
|
137
|
+
});
|
|
138
|
+
return out;
|
|
139
|
+
}
|
|
140
|
+
/** Map referenced issue numbers to plan.metadata.rank. */
|
|
141
|
+
export function rankByIssueNumber(projectRoot, folders = ["pending", "active"]) {
|
|
142
|
+
const out = new Map();
|
|
143
|
+
walkScopeFolders(projectRoot, folders, (plan) => {
|
|
144
|
+
const rank = scopeMetadataRank(plan);
|
|
145
|
+
if (rank === null) {
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
for (const n of issueNumbersFromPlan(plan)) {
|
|
149
|
+
if (!out.has(n)) {
|
|
150
|
+
out.set(n, rank);
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
});
|
|
154
|
+
return out;
|
|
155
|
+
}
|
|
156
|
+
/** Map referenced issue numbers to blocked state (#1286). */
|
|
157
|
+
export function blockedByIssueNumber(projectRoot, folders = ["pending", "active"]) {
|
|
158
|
+
const out = new Set();
|
|
159
|
+
const completedIds = completedPlanIds(projectRoot);
|
|
160
|
+
walkScopeFolders(projectRoot, folders, (plan) => {
|
|
161
|
+
if (!scopeIsBlocked(plan, completedIds)) {
|
|
162
|
+
return;
|
|
163
|
+
}
|
|
164
|
+
for (const n of issueNumbersFromPlan(plan)) {
|
|
165
|
+
out.add(n);
|
|
166
|
+
}
|
|
167
|
+
});
|
|
168
|
+
return out;
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=scope-walk.js.map
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { CachedIssue } from "./types.js";
|
|
2
|
+
export type DateSortKey = readonly [number, string];
|
|
3
|
+
export type SelectionOrderingKey = readonly [
|
|
4
|
+
number,
|
|
5
|
+
number,
|
|
6
|
+
readonly [number, string],
|
|
7
|
+
number,
|
|
8
|
+
number,
|
|
9
|
+
DateSortKey
|
|
10
|
+
];
|
|
11
|
+
/** Within-group date tiebreak: created_at asc, else updated_at desc via complement. */
|
|
12
|
+
export declare function dateSortKey(issue: CachedIssue): DateSortKey;
|
|
13
|
+
/** Canonical RFC #1419 Layer-3 lexicographic selection key. */
|
|
14
|
+
export declare function selectionOrderingKey(options: {
|
|
15
|
+
readonly labelIndex: number;
|
|
16
|
+
readonly isContinuation: boolean;
|
|
17
|
+
readonly continuationOrder?: string;
|
|
18
|
+
readonly bucketDeficit?: number | null;
|
|
19
|
+
readonly rank?: number | null;
|
|
20
|
+
readonly dateKey?: DateSortKey;
|
|
21
|
+
}): SelectionOrderingKey;
|
|
22
|
+
/** Intra-bucket sort key for a cached-issue row. */
|
|
23
|
+
export declare function withinGroupSortKey(issue: CachedIssue, rankingLabels: readonly string[]): SelectionOrderingKey;
|
|
24
|
+
/** Return the first ranking-label the issue matches, or null. */
|
|
25
|
+
export declare function matchedLabelFor(issue: CachedIssue, rankingLabels: readonly string[]): string | null;
|
|
26
|
+
/** Compare two selection keys lexicographically (ascending). */
|
|
27
|
+
export declare function compareSelectionKeys(a: SelectionOrderingKey, b: SelectionOrderingKey): number;
|
|
28
|
+
//# sourceMappingURL=selection.d.ts.map
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/** Within-group date tiebreak: created_at asc, else updated_at desc via complement. */
|
|
2
|
+
export function dateSortKey(issue) {
|
|
3
|
+
const createdAt = issue.createdAt ?? "";
|
|
4
|
+
if (createdAt.length > 0) {
|
|
5
|
+
return [0, createdAt];
|
|
6
|
+
}
|
|
7
|
+
const updatedAt = issue.updatedAt ?? "";
|
|
8
|
+
if (updatedAt.length === 0) {
|
|
9
|
+
return [1, "\u0000"];
|
|
10
|
+
}
|
|
11
|
+
const inv = [...updatedAt]
|
|
12
|
+
.map((char) => {
|
|
13
|
+
const code = char.charCodeAt(0);
|
|
14
|
+
return String.fromCharCode(Math.max(0, 0x7f - code));
|
|
15
|
+
})
|
|
16
|
+
.join("");
|
|
17
|
+
return [1, inv];
|
|
18
|
+
}
|
|
19
|
+
/** Canonical RFC #1419 Layer-3 lexicographic selection key. */
|
|
20
|
+
export function selectionOrderingKey(options) {
|
|
21
|
+
const continuationBucket = options.isContinuation ? 0 : 1;
|
|
22
|
+
let secondary;
|
|
23
|
+
if (options.isContinuation) {
|
|
24
|
+
const order = options.continuationOrder ?? "";
|
|
25
|
+
secondary = order.length > 0 ? [0, order] : [1, ""];
|
|
26
|
+
}
|
|
27
|
+
else if (typeof options.bucketDeficit === "number" && Number.isFinite(options.bucketDeficit)) {
|
|
28
|
+
secondary = [-options.bucketDeficit, ""];
|
|
29
|
+
}
|
|
30
|
+
else {
|
|
31
|
+
secondary = [0, ""];
|
|
32
|
+
}
|
|
33
|
+
let rankBucket;
|
|
34
|
+
let rankValue;
|
|
35
|
+
if (typeof options.rank === "number" && Number.isInteger(options.rank)) {
|
|
36
|
+
rankBucket = 0;
|
|
37
|
+
rankValue = options.rank;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
rankBucket = 1;
|
|
41
|
+
rankValue = 0;
|
|
42
|
+
}
|
|
43
|
+
return [
|
|
44
|
+
options.labelIndex,
|
|
45
|
+
continuationBucket,
|
|
46
|
+
secondary,
|
|
47
|
+
rankBucket,
|
|
48
|
+
rankValue,
|
|
49
|
+
options.dateKey ?? [1, ""],
|
|
50
|
+
];
|
|
51
|
+
}
|
|
52
|
+
/** Intra-bucket sort key for a cached-issue row. */
|
|
53
|
+
export function withinGroupSortKey(issue, rankingLabels) {
|
|
54
|
+
let rankIndex = rankingLabels.length;
|
|
55
|
+
if (rankingLabels.length > 0) {
|
|
56
|
+
const labels = issue.labels ?? [];
|
|
57
|
+
for (let i = 0; i < rankingLabels.length; i += 1) {
|
|
58
|
+
const candidate = rankingLabels[i];
|
|
59
|
+
if (candidate !== undefined && labels.includes(candidate)) {
|
|
60
|
+
rankIndex = i;
|
|
61
|
+
break;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
const resolvedRank = issue._resolvedRank;
|
|
66
|
+
const rank = typeof resolvedRank === "number" && Number.isInteger(resolvedRank) ? resolvedRank : null;
|
|
67
|
+
return selectionOrderingKey({
|
|
68
|
+
labelIndex: rankIndex,
|
|
69
|
+
isContinuation: Boolean(issue._continuation),
|
|
70
|
+
continuationOrder: String(issue._continuationOrder ?? ""),
|
|
71
|
+
bucketDeficit: issue._bucketDeficit ?? null,
|
|
72
|
+
rank,
|
|
73
|
+
dateKey: dateSortKey(issue),
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
/** Return the first ranking-label the issue matches, or null. */
|
|
77
|
+
export function matchedLabelFor(issue, rankingLabels) {
|
|
78
|
+
if (rankingLabels.length === 0) {
|
|
79
|
+
return null;
|
|
80
|
+
}
|
|
81
|
+
const labels = issue.labels ?? [];
|
|
82
|
+
for (const candidate of rankingLabels) {
|
|
83
|
+
if (labels.includes(candidate)) {
|
|
84
|
+
return candidate;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
return null;
|
|
88
|
+
}
|
|
89
|
+
/** Compare two selection keys lexicographically (ascending). */
|
|
90
|
+
export function compareSelectionKeys(a, b) {
|
|
91
|
+
for (let i = 0; i < a.length; i += 1) {
|
|
92
|
+
const left = a[i];
|
|
93
|
+
const right = b[i];
|
|
94
|
+
if (Array.isArray(left) && Array.isArray(right)) {
|
|
95
|
+
if (left[0] !== right[0]) {
|
|
96
|
+
return left[0] < right[0] ? -1 : 1;
|
|
97
|
+
}
|
|
98
|
+
if (left[1] !== right[1]) {
|
|
99
|
+
return left[1] < right[1] ? -1 : 1;
|
|
100
|
+
}
|
|
101
|
+
continue;
|
|
102
|
+
}
|
|
103
|
+
if (left !== right) {
|
|
104
|
+
return left < right ? -1 : 1;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return 0;
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=selection.js.map
|
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
import type { QueueGroup } from "./constants.js";
|
|
2
|
+
/** One ranked row in buildQueue. */
|
|
3
|
+
export interface QueueItem {
|
|
4
|
+
readonly number: number;
|
|
5
|
+
readonly title: string;
|
|
6
|
+
readonly state: string;
|
|
7
|
+
readonly labels: readonly string[];
|
|
8
|
+
readonly updatedAt: string;
|
|
9
|
+
readonly group: QueueGroup;
|
|
10
|
+
readonly latestDecision: string | null;
|
|
11
|
+
readonly matchedLabel: string | null;
|
|
12
|
+
readonly repo: string;
|
|
13
|
+
}
|
|
14
|
+
/** Bundled options for buildQueue. */
|
|
15
|
+
export interface QueueBuildOptions {
|
|
16
|
+
readonly rankingLabels?: readonly string[];
|
|
17
|
+
readonly activeReferenced?: ReadonlySet<number>;
|
|
18
|
+
readonly orphanIssueNumbers?: ReadonlySet<number>;
|
|
19
|
+
readonly rankByNumber?: ReadonlyMap<number, number>;
|
|
20
|
+
readonly continuationNumbers?: ReadonlySet<number>;
|
|
21
|
+
readonly continuationOrderByNumber?: ReadonlyMap<number, string>;
|
|
22
|
+
readonly deficitByNumber?: ReadonlyMap<number, number>;
|
|
23
|
+
readonly finishBeforeStart?: boolean;
|
|
24
|
+
readonly wipAtCap?: boolean;
|
|
25
|
+
readonly blockedIssueNumbers?: ReadonlySet<number>;
|
|
26
|
+
readonly includeBlocked?: boolean;
|
|
27
|
+
readonly limit?: number | null;
|
|
28
|
+
}
|
|
29
|
+
/** Cached issue row produced by loadCachedIssues. */
|
|
30
|
+
export interface CachedIssue {
|
|
31
|
+
readonly number: number;
|
|
32
|
+
readonly title: string;
|
|
33
|
+
readonly state: string;
|
|
34
|
+
readonly labels: readonly string[];
|
|
35
|
+
readonly updatedAt: string;
|
|
36
|
+
readonly createdAt: string;
|
|
37
|
+
readonly metadataRank: number | null;
|
|
38
|
+
readonly continuation: boolean;
|
|
39
|
+
readonly continuationOrder: string;
|
|
40
|
+
readonly bucketDeficit: number | null;
|
|
41
|
+
readonly blocked: boolean;
|
|
42
|
+
/** Mutable annotations stamped during buildQueue. */
|
|
43
|
+
_latestDecision?: string | null;
|
|
44
|
+
_blocked?: boolean;
|
|
45
|
+
_resolvedRank?: number | null;
|
|
46
|
+
_continuation?: boolean;
|
|
47
|
+
_continuationOrder?: string;
|
|
48
|
+
_bucketDeficit?: number | null;
|
|
49
|
+
}
|
|
50
|
+
/** Audit log entry shape (candidates.jsonl row). */
|
|
51
|
+
export interface AuditEntry {
|
|
52
|
+
readonly timestamp?: string;
|
|
53
|
+
readonly repo?: string;
|
|
54
|
+
readonly issue_number?: number;
|
|
55
|
+
readonly decision?: string;
|
|
56
|
+
readonly [key: string]: unknown;
|
|
57
|
+
}
|
|
58
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function scanLifecycleRefs(folder: string): Array<[string | null, number, string]>;
|
|
2
|
+
export declare function existingAuditRefs(auditPath: string): Set<string>;
|
|
3
|
+
export declare function auditKey(repo: string, issueNumber: number): string;
|
|
4
|
+
//# sourceMappingURL=audit.d.ts.map
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { extractIssueRef } from "./parse-uri.js";
|
|
4
|
+
export function scanLifecycleRefs(folder) {
|
|
5
|
+
const results = [];
|
|
6
|
+
if (!existsSync(folder))
|
|
7
|
+
return results;
|
|
8
|
+
const files = readdirSync(folder)
|
|
9
|
+
.filter((name) => name.endsWith(".vbrief.json"))
|
|
10
|
+
.sort();
|
|
11
|
+
for (const name of files) {
|
|
12
|
+
const path = join(folder, name);
|
|
13
|
+
let data;
|
|
14
|
+
try {
|
|
15
|
+
data = JSON.parse(readFileSync(path, "utf8"));
|
|
16
|
+
}
|
|
17
|
+
catch {
|
|
18
|
+
continue;
|
|
19
|
+
}
|
|
20
|
+
if (typeof data !== "object" || data === null || Array.isArray(data))
|
|
21
|
+
continue;
|
|
22
|
+
const [repo, number] = extractIssueRef(data);
|
|
23
|
+
if (number === null)
|
|
24
|
+
continue;
|
|
25
|
+
results.push([repo, number, path]);
|
|
26
|
+
}
|
|
27
|
+
return results;
|
|
28
|
+
}
|
|
29
|
+
export function existingAuditRefs(auditPath) {
|
|
30
|
+
const seen = new Set();
|
|
31
|
+
if (!existsSync(auditPath))
|
|
32
|
+
return seen;
|
|
33
|
+
let text;
|
|
34
|
+
try {
|
|
35
|
+
text = readFileSync(auditPath, "utf8");
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
return seen;
|
|
39
|
+
}
|
|
40
|
+
for (const raw of text.split("\n")) {
|
|
41
|
+
const stripped = raw.trim();
|
|
42
|
+
if (!stripped)
|
|
43
|
+
continue;
|
|
44
|
+
try {
|
|
45
|
+
const entry = JSON.parse(stripped);
|
|
46
|
+
if (typeof entry !== "object" || entry === null || Array.isArray(entry))
|
|
47
|
+
continue;
|
|
48
|
+
const rec = entry;
|
|
49
|
+
const repo = rec.repo;
|
|
50
|
+
const number = rec.issue_number;
|
|
51
|
+
if (typeof repo === "string" && typeof number === "number" && Number.isInteger(number)) {
|
|
52
|
+
seen.add(`${repo}:${number}`);
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
catch { }
|
|
56
|
+
}
|
|
57
|
+
return seen;
|
|
58
|
+
}
|
|
59
|
+
export function auditKey(repo, issueNumber) {
|
|
60
|
+
return `${repo}:${issueNumber}`;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=audit.js.map
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { auditKey, existingAuditRefs, scanLifecycleRefs } from "./audit.js";
|
|
2
|
+
export { extractIssueRef, parseGithubIssueUri } from "./parse-uri.js";
|
|
3
|
+
export { countReconcilable, type FindReconcilableOptions, findReconcilable, inferRepoFromGit, type ReconcileOptions, reconcile, } from "./reconcile.js";
|
|
4
|
+
export { AUDIT_LOG_RELPATH, BACKFILL_FOLDERS, emitReconcileJson, RECONCILE_ACTOR, type ReconcileItem, type ReconcileResult, reconcileSummary, } from "./types.js";
|
|
5
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export { auditKey, existingAuditRefs, scanLifecycleRefs } from "./audit.js";
|
|
2
|
+
export { extractIssueRef, parseGithubIssueUri } from "./parse-uri.js";
|
|
3
|
+
export { countReconcilable, findReconcilable, inferRepoFromGit, reconcile, } from "./reconcile.js";
|
|
4
|
+
export { AUDIT_LOG_RELPATH, BACKFILL_FOLDERS, emitReconcileJson, RECONCILE_ACTOR, reconcileSummary, } from "./types.js";
|
|
5
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Parse (repo, issue_number) from a github-issue reference URI. */
|
|
2
|
+
export declare function parseGithubIssueUri(uri: unknown): [string | null, number | null];
|
|
3
|
+
export declare function extractIssueRef(data: Record<string, unknown>): [string | null, number | null];
|
|
4
|
+
//# sourceMappingURL=parse-uri.d.ts.map
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
/** Parse (repo, issue_number) from a github-issue reference URI. */
|
|
2
|
+
export function parseGithubIssueUri(uri) {
|
|
3
|
+
if (typeof uri !== "string")
|
|
4
|
+
return [null, null];
|
|
5
|
+
const cleaned = uri.trim().replace(/\/$/, "");
|
|
6
|
+
if (!cleaned)
|
|
7
|
+
return [null, null];
|
|
8
|
+
const noScheme = cleaned.includes("://") ? cleaned.split("://").slice(1).join("://") : cleaned;
|
|
9
|
+
const parts = noScheme.split("/").filter(Boolean);
|
|
10
|
+
if (parts.length >= 4 && parts[parts.length - 2] === "issues") {
|
|
11
|
+
const tail = parts[parts.length - 1] ?? "";
|
|
12
|
+
if (/^\d+$/.test(tail)) {
|
|
13
|
+
const owner = parts[parts.length - 4];
|
|
14
|
+
const repo = parts[parts.length - 3];
|
|
15
|
+
if (owner && repo)
|
|
16
|
+
return [`${owner}/${repo}`, Number(tail)];
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
const tail = parts[parts.length - 1] ?? "";
|
|
20
|
+
if (/^\d+$/.test(tail))
|
|
21
|
+
return [null, Number(tail)];
|
|
22
|
+
return [null, null];
|
|
23
|
+
}
|
|
24
|
+
export function extractIssueRef(data) {
|
|
25
|
+
const plan = data.plan;
|
|
26
|
+
if (typeof plan !== "object" || plan === null || Array.isArray(plan))
|
|
27
|
+
return [null, null];
|
|
28
|
+
const refs = plan.references;
|
|
29
|
+
if (!Array.isArray(refs))
|
|
30
|
+
return [null, null];
|
|
31
|
+
for (const ref of refs) {
|
|
32
|
+
if (typeof ref !== "object" || ref === null || Array.isArray(ref))
|
|
33
|
+
continue;
|
|
34
|
+
const rec = ref;
|
|
35
|
+
if (rec.type !== "x-vbrief/github-issue")
|
|
36
|
+
continue;
|
|
37
|
+
const [repo, number] = parseGithubIssueUri(rec.uri);
|
|
38
|
+
if (number !== null)
|
|
39
|
+
return [repo, number];
|
|
40
|
+
}
|
|
41
|
+
return [null, null];
|
|
42
|
+
}
|
|
43
|
+
//# sourceMappingURL=parse-uri.js.map
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { type ReconcileItem, type ReconcileResult } from "./types.js";
|
|
2
|
+
export declare function inferRepoFromGit(cwd: string): string | null;
|
|
3
|
+
export interface FindReconcilableOptions {
|
|
4
|
+
readonly defaultRepo?: string | null;
|
|
5
|
+
readonly auditLogPath?: string;
|
|
6
|
+
}
|
|
7
|
+
export declare function findReconcilable(projectRoot: string, options?: FindReconcilableOptions): ReconcileItem[];
|
|
8
|
+
export interface ReconcileOptions {
|
|
9
|
+
readonly repo?: string | null;
|
|
10
|
+
readonly auditLogPath?: string;
|
|
11
|
+
readonly dryRun?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export declare function reconcile(projectRoot: string, options?: ReconcileOptions): ReconcileResult;
|
|
14
|
+
export declare function countReconcilable(projectRoot: string, options?: FindReconcilableOptions & {
|
|
15
|
+
readonly restrictTo?: Iterable<[string, number]>;
|
|
16
|
+
}): number;
|
|
17
|
+
//# sourceMappingURL=reconcile.d.ts.map
|