@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,38 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
import { verifyReviewClean } from "./verify-review-clean.js";
|
|
4
|
+
export function verifyReviewCleanMain(argv = process.argv.slice(2)) {
|
|
5
|
+
const prNumbers = [];
|
|
6
|
+
const cohortGlobs = [];
|
|
7
|
+
let repo = null;
|
|
8
|
+
let emitJson = false;
|
|
9
|
+
for (let i = 0; i < argv.length; i += 1) {
|
|
10
|
+
const arg = argv[i];
|
|
11
|
+
if (arg === "--cohort" && argv[i + 1] !== undefined) {
|
|
12
|
+
cohortGlobs.push(argv[i + 1] ?? "");
|
|
13
|
+
i += 1;
|
|
14
|
+
}
|
|
15
|
+
else if (arg === "--repo" && argv[i + 1] !== undefined) {
|
|
16
|
+
repo = argv[i + 1] ?? null;
|
|
17
|
+
i += 1;
|
|
18
|
+
}
|
|
19
|
+
else if (arg === "--json") {
|
|
20
|
+
emitJson = true;
|
|
21
|
+
}
|
|
22
|
+
else if (arg !== undefined && /^\d+$/.test(arg)) {
|
|
23
|
+
prNumbers.push(Number.parseInt(arg, 10));
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
const result = verifyReviewClean({ prNumbers, cohortGlobs, repo, emitJson });
|
|
27
|
+
if (result.stdout.length > 0) {
|
|
28
|
+
process.stdout.write(result.stdout);
|
|
29
|
+
}
|
|
30
|
+
if (result.stderr.length > 0) {
|
|
31
|
+
process.stderr.write(result.stderr);
|
|
32
|
+
}
|
|
33
|
+
return result.exitCode;
|
|
34
|
+
}
|
|
35
|
+
if (process.argv[1] !== undefined && fileURLToPath(import.meta.url) === process.argv[1]) {
|
|
36
|
+
process.exit(verifyReviewCleanMain());
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=verify-review-clean-cli.js.map
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { RunGhFn } from "../pr-merge-readiness/types.js";
|
|
2
|
+
import { EXIT_EXTERNAL_ERROR, EXIT_OK, EXIT_UNCLEAN } from "./constants.js";
|
|
3
|
+
export interface CohortResolutionError {
|
|
4
|
+
vbrief_path: string;
|
|
5
|
+
reason: string;
|
|
6
|
+
}
|
|
7
|
+
export interface CohortPRResult {
|
|
8
|
+
pr_number: number;
|
|
9
|
+
head_sha: string | null;
|
|
10
|
+
verdict: Record<string, unknown>;
|
|
11
|
+
failures: string[];
|
|
12
|
+
clean: boolean;
|
|
13
|
+
}
|
|
14
|
+
export interface CohortResult {
|
|
15
|
+
repo: string | null;
|
|
16
|
+
pr_results: CohortPRResult[];
|
|
17
|
+
resolution_errors: CohortResolutionError[];
|
|
18
|
+
all_clean: boolean;
|
|
19
|
+
}
|
|
20
|
+
export declare function resolveCohortFromVbriefs(vbriefGlobs: readonly string[]): {
|
|
21
|
+
prNumbers: number[];
|
|
22
|
+
failures: CohortResolutionError[];
|
|
23
|
+
};
|
|
24
|
+
export declare function evaluatePr(prNumber: number, repo: string | null, runGh?: RunGhFn): CohortPRResult | null;
|
|
25
|
+
export declare function cohortResultToDict(cohort: CohortResult): Record<string, unknown>;
|
|
26
|
+
export declare function renderReviewCleanText(cohort: CohortResult): string;
|
|
27
|
+
export interface VerifyReviewCleanArgs {
|
|
28
|
+
prNumbers?: readonly number[];
|
|
29
|
+
cohortGlobs?: readonly string[];
|
|
30
|
+
repo?: string | null;
|
|
31
|
+
emitJson?: boolean;
|
|
32
|
+
runGh?: RunGhFn;
|
|
33
|
+
}
|
|
34
|
+
export declare function verifyReviewClean(args: VerifyReviewCleanArgs): {
|
|
35
|
+
exitCode: number;
|
|
36
|
+
stdout: string;
|
|
37
|
+
stderr: string;
|
|
38
|
+
};
|
|
39
|
+
export { EXIT_EXTERNAL_ERROR, EXIT_OK, EXIT_UNCLEAN };
|
|
40
|
+
//# sourceMappingURL=verify-review-clean.d.ts.map
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { existsSync, readdirSync, readFileSync } from "node:fs";
|
|
2
|
+
import { resolve } from "node:path";
|
|
3
|
+
import { defaultRunGh, fetchGreptileCommentBody, fetchPrHeadSha, } from "../pr-merge-readiness/gh.js";
|
|
4
|
+
import { evaluateGates, parseGreptileBody } from "../pr-merge-readiness/index.js";
|
|
5
|
+
import { EXIT_EXTERNAL_ERROR, EXIT_OK, EXIT_UNCLEAN } from "./constants.js";
|
|
6
|
+
function extractPrFromUri(uri) {
|
|
7
|
+
const pullIdx = uri.indexOf("/pull/");
|
|
8
|
+
if (pullIdx < 0) {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
let i = pullIdx + "/pull/".length;
|
|
12
|
+
const digits = [];
|
|
13
|
+
while (i < uri.length) {
|
|
14
|
+
const ch = uri.charAt(i);
|
|
15
|
+
if (ch >= "0" && ch <= "9") {
|
|
16
|
+
digits.push(ch);
|
|
17
|
+
i += 1;
|
|
18
|
+
}
|
|
19
|
+
else {
|
|
20
|
+
break;
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
if (digits.length === 0) {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
return Number.parseInt(digits.join(""), 10);
|
|
27
|
+
}
|
|
28
|
+
function globPaths(pattern) {
|
|
29
|
+
if (pattern.includes("*")) {
|
|
30
|
+
const slash = pattern.lastIndexOf("/");
|
|
31
|
+
const dir = slash >= 0 ? pattern.slice(0, slash) : ".";
|
|
32
|
+
const glob = slash >= 0 ? pattern.slice(slash + 1) : pattern;
|
|
33
|
+
if (!existsSync(dir)) {
|
|
34
|
+
return [];
|
|
35
|
+
}
|
|
36
|
+
return readdirSync(dir)
|
|
37
|
+
.filter((name) => (glob === "*.vbrief.json" ? name.endsWith(".vbrief.json") : name === glob))
|
|
38
|
+
.map((name) => resolve(dir, name));
|
|
39
|
+
}
|
|
40
|
+
return [resolve(pattern)];
|
|
41
|
+
}
|
|
42
|
+
export function resolveCohortFromVbriefs(vbriefGlobs) {
|
|
43
|
+
const seenPrs = [];
|
|
44
|
+
const seenSet = new Set();
|
|
45
|
+
const failures = [];
|
|
46
|
+
const paths = [];
|
|
47
|
+
for (const pattern of vbriefGlobs) {
|
|
48
|
+
const matched = globPaths(pattern).sort();
|
|
49
|
+
if (matched.length === 0) {
|
|
50
|
+
failures.push({
|
|
51
|
+
vbrief_path: pattern,
|
|
52
|
+
reason: `glob matched no files: ${JSON.stringify(pattern)}`,
|
|
53
|
+
});
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
paths.push(...matched);
|
|
57
|
+
}
|
|
58
|
+
for (const path of paths) {
|
|
59
|
+
let payload;
|
|
60
|
+
try {
|
|
61
|
+
payload = JSON.parse(readFileSync(path, "utf8"));
|
|
62
|
+
}
|
|
63
|
+
catch (exc) {
|
|
64
|
+
failures.push({ vbrief_path: path, reason: `unreadable: ${String(exc)}` });
|
|
65
|
+
continue;
|
|
66
|
+
}
|
|
67
|
+
const plan = payload.plan;
|
|
68
|
+
const references = typeof plan === "object" && plan !== null && !Array.isArray(plan)
|
|
69
|
+
? plan.references
|
|
70
|
+
: [];
|
|
71
|
+
const refs = Array.isArray(references) ? references : [];
|
|
72
|
+
const prNumbersInFile = [];
|
|
73
|
+
for (const ref of refs) {
|
|
74
|
+
if (typeof ref !== "object" || ref === null || Array.isArray(ref)) {
|
|
75
|
+
continue;
|
|
76
|
+
}
|
|
77
|
+
const uri = ref.uri;
|
|
78
|
+
if (typeof uri !== "string" || uri.length === 0) {
|
|
79
|
+
continue;
|
|
80
|
+
}
|
|
81
|
+
const pr = extractPrFromUri(uri);
|
|
82
|
+
if (pr !== null) {
|
|
83
|
+
prNumbersInFile.push(pr);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
if (prNumbersInFile.length === 0) {
|
|
87
|
+
failures.push({
|
|
88
|
+
vbrief_path: path,
|
|
89
|
+
reason: "no x-vbrief/github-pr-style references found",
|
|
90
|
+
});
|
|
91
|
+
continue;
|
|
92
|
+
}
|
|
93
|
+
for (const prNum of prNumbersInFile) {
|
|
94
|
+
if (seenSet.has(prNum)) {
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
seenSet.add(prNum);
|
|
98
|
+
seenPrs.push(prNum);
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return { prNumbers: seenPrs, failures };
|
|
102
|
+
}
|
|
103
|
+
export function evaluatePr(prNumber, repo, runGh = defaultRunGh) {
|
|
104
|
+
const headSha = fetchPrHeadSha(prNumber, repo, runGh);
|
|
105
|
+
if (headSha === null) {
|
|
106
|
+
return null;
|
|
107
|
+
}
|
|
108
|
+
const body = fetchGreptileCommentBody(prNumber, repo, runGh);
|
|
109
|
+
if (body === null) {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
const verdict = parseGreptileBody(body);
|
|
113
|
+
const failures = evaluateGates(prNumber, headSha, verdict);
|
|
114
|
+
return {
|
|
115
|
+
pr_number: prNumber,
|
|
116
|
+
head_sha: headSha,
|
|
117
|
+
verdict: { ...verdict },
|
|
118
|
+
failures: [...failures],
|
|
119
|
+
clean: failures.length === 0,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
export function cohortResultToDict(cohort) {
|
|
123
|
+
return {
|
|
124
|
+
repo: cohort.repo,
|
|
125
|
+
all_clean: cohort.all_clean,
|
|
126
|
+
pr_count: cohort.pr_results.length,
|
|
127
|
+
pr_results: cohort.pr_results.map((r) => ({
|
|
128
|
+
pr_number: r.pr_number,
|
|
129
|
+
head_sha: r.head_sha,
|
|
130
|
+
clean: r.clean,
|
|
131
|
+
verdict: r.verdict,
|
|
132
|
+
failures: r.failures,
|
|
133
|
+
})),
|
|
134
|
+
resolution_errors: cohort.resolution_errors,
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
export function renderReviewCleanText(cohort) {
|
|
138
|
+
const n = cohort.pr_results.length;
|
|
139
|
+
const lines = [`Swarm cohort CLEAN verification (${n} PR${n === 1 ? "" : "s"})`];
|
|
140
|
+
if (cohort.repo) {
|
|
141
|
+
lines.push(` Repo: ${cohort.repo}`);
|
|
142
|
+
}
|
|
143
|
+
if (cohort.resolution_errors.length > 0) {
|
|
144
|
+
lines.push(" Resolution errors:");
|
|
145
|
+
for (const err of cohort.resolution_errors) {
|
|
146
|
+
lines.push(` [${err.vbrief_path}] ${err.reason}`);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
for (const r of cohort.pr_results) {
|
|
150
|
+
const status = r.clean ? "CLEAN" : "UNCLEAN";
|
|
151
|
+
const v = r.verdict;
|
|
152
|
+
lines.push("");
|
|
153
|
+
lines.push(` PR #${r.pr_number} -- ${status}`);
|
|
154
|
+
lines.push(` HEAD SHA: ${r.head_sha ?? "<unknown>"}`);
|
|
155
|
+
lines.push(` Greptile reviewed: ${String(v.lastReviewedSha ?? "<not parsed>")}`);
|
|
156
|
+
const conf = v.confidence;
|
|
157
|
+
lines.push(` Confidence: ${conf === null || conf === undefined ? "<not parsed>" : String(conf)}/5`);
|
|
158
|
+
lines.push(` Findings: P0=${String(v.p0Count ?? 0)} ` +
|
|
159
|
+
`P1=${String(v.p1Count ?? 0)} P2=${String(v.p2Count ?? 0)}`);
|
|
160
|
+
lines.push(` Errored sentinel: ${v.errored === true ? "True" : "False"}`);
|
|
161
|
+
r.failures.forEach((fail, index) => {
|
|
162
|
+
lines.push(` [${index + 1}] ${fail}`);
|
|
163
|
+
});
|
|
164
|
+
}
|
|
165
|
+
lines.push("");
|
|
166
|
+
if (cohort.all_clean) {
|
|
167
|
+
lines.push("Result: COHORT CLEAN -- Phase 5 -> 6 merge discussion may proceed");
|
|
168
|
+
}
|
|
169
|
+
else {
|
|
170
|
+
const nUnclean = cohort.pr_results.filter((r) => !r.clean).length;
|
|
171
|
+
lines.push(`Result: COHORT BLOCKED -- ${nUnclean}/${n} PR(s) unclean. ` +
|
|
172
|
+
"Do NOT raise the Phase 5 -> 6 gate; re-dispatch pollers or " +
|
|
173
|
+
"address findings, then re-run task swarm:verify-review-clean.");
|
|
174
|
+
}
|
|
175
|
+
return lines.join("\n");
|
|
176
|
+
}
|
|
177
|
+
export function verifyReviewClean(args) {
|
|
178
|
+
const prNumbers = [...new Set(args.prNumbers ?? [])];
|
|
179
|
+
const resolutionErrors = [];
|
|
180
|
+
if (args.cohortGlobs !== undefined && args.cohortGlobs.length > 0) {
|
|
181
|
+
const discovered = resolveCohortFromVbriefs(args.cohortGlobs);
|
|
182
|
+
for (const pr of discovered.prNumbers) {
|
|
183
|
+
if (!prNumbers.includes(pr)) {
|
|
184
|
+
prNumbers.push(pr);
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
resolutionErrors.push(...discovered.failures);
|
|
188
|
+
}
|
|
189
|
+
if (prNumbers.length === 0) {
|
|
190
|
+
const msg = "Error: empty cohort. Pass one or more PR numbers as positional " +
|
|
191
|
+
"arguments and/or --cohort <glob> to discover PRs from vBRIEF references.";
|
|
192
|
+
const cohort = {
|
|
193
|
+
repo: args.repo ?? null,
|
|
194
|
+
pr_results: [],
|
|
195
|
+
resolution_errors: resolutionErrors,
|
|
196
|
+
all_clean: false,
|
|
197
|
+
};
|
|
198
|
+
if (args.emitJson) {
|
|
199
|
+
return {
|
|
200
|
+
exitCode: EXIT_EXTERNAL_ERROR,
|
|
201
|
+
stdout: `${JSON.stringify(cohortResultToDict(cohort), null, 2)}\n`,
|
|
202
|
+
stderr: "",
|
|
203
|
+
};
|
|
204
|
+
}
|
|
205
|
+
let stderr = `${msg}\n`;
|
|
206
|
+
for (const err of resolutionErrors) {
|
|
207
|
+
stderr += ` [${err.vbrief_path}] ${err.reason}\n`;
|
|
208
|
+
}
|
|
209
|
+
return { exitCode: EXIT_EXTERNAL_ERROR, stdout: "", stderr };
|
|
210
|
+
}
|
|
211
|
+
const runGh = args.runGh ?? defaultRunGh;
|
|
212
|
+
const prResults = [];
|
|
213
|
+
for (const prNum of prNumbers) {
|
|
214
|
+
const perPr = evaluatePr(prNum, args.repo ?? null, runGh);
|
|
215
|
+
if (perPr === null) {
|
|
216
|
+
return { exitCode: EXIT_EXTERNAL_ERROR, stdout: "", stderr: "" };
|
|
217
|
+
}
|
|
218
|
+
prResults.push(perPr);
|
|
219
|
+
}
|
|
220
|
+
const cohort = {
|
|
221
|
+
repo: args.repo ?? null,
|
|
222
|
+
pr_results: prResults,
|
|
223
|
+
resolution_errors: resolutionErrors,
|
|
224
|
+
all_clean: prResults.length > 0 && resolutionErrors.length === 0 && prResults.every((r) => r.clean),
|
|
225
|
+
};
|
|
226
|
+
if (args.emitJson) {
|
|
227
|
+
return {
|
|
228
|
+
exitCode: cohort.all_clean ? EXIT_OK : EXIT_UNCLEAN,
|
|
229
|
+
stdout: `${JSON.stringify(cohortResultToDict(cohort), null, 2)}\n`,
|
|
230
|
+
stderr: "",
|
|
231
|
+
};
|
|
232
|
+
}
|
|
233
|
+
return {
|
|
234
|
+
exitCode: cohort.all_clean ? EXIT_OK : EXIT_UNCLEAN,
|
|
235
|
+
stdout: `${renderReviewCleanText(cohort)}\n`,
|
|
236
|
+
stderr: "",
|
|
237
|
+
};
|
|
238
|
+
}
|
|
239
|
+
export { EXIT_EXTERNAL_ERROR, EXIT_OK, EXIT_UNCLEAN };
|
|
240
|
+
//# sourceMappingURL=verify-review-clean.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
export declare function parseWorktreesArgv(argv: readonly string[]): {
|
|
3
|
+
mapPath: string;
|
|
4
|
+
baseBranch: string;
|
|
5
|
+
repoRoot: string;
|
|
6
|
+
createMissing: boolean;
|
|
7
|
+
};
|
|
8
|
+
export declare function worktreesMain(argv?: string[]): number;
|
|
9
|
+
//# sourceMappingURL=worktrees-cli.d.ts.map
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { fileURLToPath } from "node:url";
|
|
3
|
+
import { loadWorktreeMapFile, resolveWorktreeMap, WorktreeMapConfigError, WorktreeMapError, } from "./worktrees.js";
|
|
4
|
+
export function parseWorktreesArgv(argv) {
|
|
5
|
+
let mapPath = "";
|
|
6
|
+
let baseBranch = "";
|
|
7
|
+
let repoRoot = ".";
|
|
8
|
+
let createMissing = true;
|
|
9
|
+
for (let i = 0; i < argv.length; i += 1) {
|
|
10
|
+
const arg = argv[i];
|
|
11
|
+
if (arg === "--map" && argv[i + 1] !== undefined) {
|
|
12
|
+
mapPath = argv[i + 1] ?? "";
|
|
13
|
+
i += 1;
|
|
14
|
+
}
|
|
15
|
+
else if (arg === "--base-branch" && argv[i + 1] !== undefined) {
|
|
16
|
+
baseBranch = argv[i + 1] ?? "";
|
|
17
|
+
i += 1;
|
|
18
|
+
}
|
|
19
|
+
else if (arg === "--repo-root" && argv[i + 1] !== undefined) {
|
|
20
|
+
repoRoot = argv[i + 1] ?? ".";
|
|
21
|
+
i += 1;
|
|
22
|
+
}
|
|
23
|
+
else if (arg === "--no-create-missing") {
|
|
24
|
+
createMissing = false;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
return { mapPath, baseBranch, repoRoot, createMissing };
|
|
28
|
+
}
|
|
29
|
+
export function worktreesMain(argv = process.argv.slice(2)) {
|
|
30
|
+
const { mapPath, baseBranch, repoRoot, createMissing } = parseWorktreesArgv(argv);
|
|
31
|
+
if (mapPath.length === 0 || baseBranch.length === 0) {
|
|
32
|
+
process.stderr.write("config error: --map and --base-branch are required\n");
|
|
33
|
+
return 2;
|
|
34
|
+
}
|
|
35
|
+
try {
|
|
36
|
+
const mapping = loadWorktreeMapFile(mapPath);
|
|
37
|
+
const resolved = resolveWorktreeMap(mapping, baseBranch, createMissing, { repoRoot });
|
|
38
|
+
process.stdout.write(`${JSON.stringify(resolved, null, 2)}\n`);
|
|
39
|
+
return 0;
|
|
40
|
+
}
|
|
41
|
+
catch (err) {
|
|
42
|
+
if (err instanceof WorktreeMapError) {
|
|
43
|
+
process.stderr.write(`error: ${err.message}\n`);
|
|
44
|
+
return 1;
|
|
45
|
+
}
|
|
46
|
+
if (err instanceof WorktreeMapConfigError) {
|
|
47
|
+
process.stderr.write(`config error: ${String(err)}\n`);
|
|
48
|
+
return 2;
|
|
49
|
+
}
|
|
50
|
+
process.stderr.write(`config error: ${String(err)}\n`);
|
|
51
|
+
return 2;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
if (process.argv[1] !== undefined && fileURLToPath(import.meta.url) === process.argv[1]) {
|
|
55
|
+
process.exit(worktreesMain());
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=worktrees-cli.js.map
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { C3_FIELDS } from "./constants.js";
|
|
2
|
+
import { type TextCaptureResult } from "./subprocess.js";
|
|
3
|
+
export declare class WorktreeMapError extends Error {
|
|
4
|
+
name: string;
|
|
5
|
+
}
|
|
6
|
+
export declare class WorktreeCollisionError extends WorktreeMapError {
|
|
7
|
+
name: string;
|
|
8
|
+
}
|
|
9
|
+
export declare class BaseBranchMismatchError extends WorktreeMapError {
|
|
10
|
+
name: string;
|
|
11
|
+
}
|
|
12
|
+
export declare class MissingWorktreeError extends WorktreeMapError {
|
|
13
|
+
name: string;
|
|
14
|
+
}
|
|
15
|
+
export declare class DuplicateStoryError extends WorktreeMapError {
|
|
16
|
+
name: string;
|
|
17
|
+
}
|
|
18
|
+
export declare class WorktreeMapConfigError extends Error {
|
|
19
|
+
name: string;
|
|
20
|
+
}
|
|
21
|
+
export type GitRunner = (args: readonly string[], cwd: string) => TextCaptureResult;
|
|
22
|
+
export declare const defaultGitRunner: GitRunner;
|
|
23
|
+
/** Case-normalized comparison key for worktree-path equality. */
|
|
24
|
+
export declare function compareKey(pathStr: string): string;
|
|
25
|
+
export interface WorktreeRecord {
|
|
26
|
+
readonly story_id: string;
|
|
27
|
+
readonly worktree_path: string;
|
|
28
|
+
readonly base_branch: string;
|
|
29
|
+
}
|
|
30
|
+
/** Parse `git worktree list --porcelain` into `{compareKey: branch|null}`. */
|
|
31
|
+
export declare function parseWorktreePorcelain(text: string): Map<string, string | null>;
|
|
32
|
+
/** Resolve a story-to-worktree mapping into normalized C3 records (frozen contract). */
|
|
33
|
+
export declare function resolveWorktreeMap(mapping: readonly Record<string, unknown>[], baseBranch: string, createMissing?: boolean, options?: {
|
|
34
|
+
repoRoot?: string;
|
|
35
|
+
git?: GitRunner;
|
|
36
|
+
}): WorktreeRecord[];
|
|
37
|
+
export declare function loadWorktreeMapFile(mapPath: string): Record<string, unknown>[];
|
|
38
|
+
export { C3_FIELDS };
|
|
39
|
+
//# sourceMappingURL=worktrees.d.ts.map
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
import { mkdirSync, readFileSync } from "node:fs";
|
|
2
|
+
import { resolve as pathResolve } from "node:path";
|
|
3
|
+
import { C3_FIELDS } from "./constants.js";
|
|
4
|
+
import { runText } from "./subprocess.js";
|
|
5
|
+
export class WorktreeMapError extends Error {
|
|
6
|
+
name = "WorktreeMapError";
|
|
7
|
+
}
|
|
8
|
+
export class WorktreeCollisionError extends WorktreeMapError {
|
|
9
|
+
name = "WorktreeCollisionError";
|
|
10
|
+
}
|
|
11
|
+
export class BaseBranchMismatchError extends WorktreeMapError {
|
|
12
|
+
name = "BaseBranchMismatchError";
|
|
13
|
+
}
|
|
14
|
+
export class MissingWorktreeError extends WorktreeMapError {
|
|
15
|
+
name = "MissingWorktreeError";
|
|
16
|
+
}
|
|
17
|
+
export class DuplicateStoryError extends WorktreeMapError {
|
|
18
|
+
name = "DuplicateStoryError";
|
|
19
|
+
}
|
|
20
|
+
export class WorktreeMapConfigError extends Error {
|
|
21
|
+
name = "WorktreeMapConfigError";
|
|
22
|
+
}
|
|
23
|
+
export const defaultGitRunner = (args, cwd) => runText(["git", ...args], { cwd });
|
|
24
|
+
function resolvePath(raw, repoRoot) {
|
|
25
|
+
const candidate = raw.startsWith("/") ? raw : pathResolve(repoRoot, raw);
|
|
26
|
+
return pathResolve(candidate);
|
|
27
|
+
}
|
|
28
|
+
/** Case-normalized comparison key for worktree-path equality. */
|
|
29
|
+
export function compareKey(pathStr) {
|
|
30
|
+
return pathStr.replace(/\\/g, "/").toLowerCase();
|
|
31
|
+
}
|
|
32
|
+
/** Parse `git worktree list --porcelain` into `{compareKey: branch|null}`. */
|
|
33
|
+
export function parseWorktreePorcelain(text) {
|
|
34
|
+
const registered = new Map();
|
|
35
|
+
let currentPath = null;
|
|
36
|
+
let currentBranch = null;
|
|
37
|
+
const flush = () => {
|
|
38
|
+
if (currentPath !== null) {
|
|
39
|
+
registered.set(compareKey(currentPath), currentBranch);
|
|
40
|
+
}
|
|
41
|
+
};
|
|
42
|
+
for (const line of text.split("\n")) {
|
|
43
|
+
if (line.startsWith("worktree ")) {
|
|
44
|
+
flush();
|
|
45
|
+
currentPath = pathResolve(line.slice("worktree ".length).trim());
|
|
46
|
+
currentBranch = null;
|
|
47
|
+
}
|
|
48
|
+
else if (line.startsWith("branch ")) {
|
|
49
|
+
const ref = line.slice("branch ".length).trim();
|
|
50
|
+
currentBranch = ref.startsWith("refs/heads/") ? ref.slice("refs/heads/".length) : ref;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
flush();
|
|
54
|
+
return registered;
|
|
55
|
+
}
|
|
56
|
+
function gitWorktreeList(repoRoot, git) {
|
|
57
|
+
let proc;
|
|
58
|
+
try {
|
|
59
|
+
proc = git(["worktree", "list", "--porcelain"], repoRoot);
|
|
60
|
+
}
|
|
61
|
+
catch (exc) {
|
|
62
|
+
throw new WorktreeMapConfigError(`could not run \`git worktree list\` in ${repoRoot}: ${String(exc)}`);
|
|
63
|
+
}
|
|
64
|
+
if (proc.returncode !== 0) {
|
|
65
|
+
throw new WorktreeMapConfigError(`\`git worktree list\` failed in ${repoRoot} (rc=${proc.returncode}): ` +
|
|
66
|
+
`${proc.stderr.trim() || "<no stderr>"} -- is this a git work tree?`);
|
|
67
|
+
}
|
|
68
|
+
return parseWorktreePorcelain(proc.stdout);
|
|
69
|
+
}
|
|
70
|
+
function createWorktree(repoRoot, worktreePath, baseBranch, git) {
|
|
71
|
+
mkdirSync(pathResolve(worktreePath, ".."), { recursive: true });
|
|
72
|
+
let proc;
|
|
73
|
+
try {
|
|
74
|
+
proc = git(["worktree", "add", "--detach", worktreePath, baseBranch], repoRoot);
|
|
75
|
+
}
|
|
76
|
+
catch (exc) {
|
|
77
|
+
throw new WorktreeMapConfigError(`could not run \`git worktree add\` for ${worktreePath}: ${String(exc)}`);
|
|
78
|
+
}
|
|
79
|
+
if (proc.returncode !== 0) {
|
|
80
|
+
throw new WorktreeMapConfigError(`\`git worktree add --detach ${worktreePath} ${baseBranch}\` failed ` +
|
|
81
|
+
`(rc=${proc.returncode}): ${proc.stderr.trim() || "<no stderr>"}`);
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
/** Resolve a story-to-worktree mapping into normalized C3 records (frozen contract). */
|
|
85
|
+
export function resolveWorktreeMap(mapping, baseBranch, createMissing = true, options = {}) {
|
|
86
|
+
if (!Array.isArray(mapping)) {
|
|
87
|
+
throw new WorktreeMapConfigError(`worktree map must be a list of records, got ${typeof mapping}`);
|
|
88
|
+
}
|
|
89
|
+
const trimmedBase = baseBranch.trim();
|
|
90
|
+
if (trimmedBase.length === 0) {
|
|
91
|
+
throw new WorktreeMapConfigError("base_branch must be a non-empty string");
|
|
92
|
+
}
|
|
93
|
+
const root = pathResolve(options.repoRoot ?? process.cwd());
|
|
94
|
+
const git = options.git ?? defaultGitRunner;
|
|
95
|
+
const resolved = [];
|
|
96
|
+
const seenPaths = new Map();
|
|
97
|
+
const seenStoryIds = new Map();
|
|
98
|
+
for (let index = 0; index < mapping.length; index += 1) {
|
|
99
|
+
const record = mapping[index];
|
|
100
|
+
if (record === null || typeof record !== "object" || Array.isArray(record)) {
|
|
101
|
+
throw new WorktreeMapConfigError(`record #${index} must be an object, got ${typeof record}`);
|
|
102
|
+
}
|
|
103
|
+
const storyIdRaw = record.story_id;
|
|
104
|
+
if (typeof storyIdRaw !== "string" || storyIdRaw.trim().length === 0) {
|
|
105
|
+
throw new WorktreeMapConfigError(`record #${index} is missing a non-empty 'story_id'`);
|
|
106
|
+
}
|
|
107
|
+
const storyId = storyIdRaw.trim();
|
|
108
|
+
const rawPath = record.worktree_path;
|
|
109
|
+
if (typeof rawPath !== "string" || rawPath.trim().length === 0) {
|
|
110
|
+
throw new WorktreeMapConfigError(`story ${JSON.stringify(storyId)} is missing a non-empty 'worktree_path'`);
|
|
111
|
+
}
|
|
112
|
+
const recordBase = record.base_branch;
|
|
113
|
+
if (recordBase !== undefined && recordBase !== null) {
|
|
114
|
+
if (typeof recordBase !== "string" || recordBase.trim().length === 0) {
|
|
115
|
+
throw new WorktreeMapConfigError(`story ${JSON.stringify(storyId)} has a non-string / blank 'base_branch'`);
|
|
116
|
+
}
|
|
117
|
+
if (recordBase.trim() !== trimmedBase) {
|
|
118
|
+
throw new BaseBranchMismatchError(`story '${storyId}' declares base_branch '${recordBase.trim()}' but the cohort base branch is '${trimmedBase}'`);
|
|
119
|
+
}
|
|
120
|
+
}
|
|
121
|
+
const worktreePath = resolvePath(rawPath.trim(), root);
|
|
122
|
+
const key = compareKey(worktreePath);
|
|
123
|
+
const posixPath = worktreePath.replace(/\\/g, "/");
|
|
124
|
+
if (seenPaths.has(key)) {
|
|
125
|
+
throw new WorktreeCollisionError(`worktree path collision: stories '${seenPaths.get(key)}' and '${storyId}' both map to '${posixPath}'`);
|
|
126
|
+
}
|
|
127
|
+
if (seenStoryIds.has(storyId)) {
|
|
128
|
+
throw new DuplicateStoryError(`duplicate story_id '${storyId}': mapped to both '${seenStoryIds.get(storyId)}' and '${posixPath}'`);
|
|
129
|
+
}
|
|
130
|
+
seenPaths.set(key, storyId);
|
|
131
|
+
seenStoryIds.set(storyId, posixPath);
|
|
132
|
+
resolved.push({
|
|
133
|
+
story_id: storyId,
|
|
134
|
+
worktree_path: posixPath,
|
|
135
|
+
base_branch: trimmedBase,
|
|
136
|
+
_key: key,
|
|
137
|
+
_abs: worktreePath,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
const registered = gitWorktreeList(root, git);
|
|
141
|
+
for (const entry of resolved) {
|
|
142
|
+
if (registered.has(entry._key)) {
|
|
143
|
+
continue;
|
|
144
|
+
}
|
|
145
|
+
if (!createMissing) {
|
|
146
|
+
throw new MissingWorktreeError(`story '${entry.story_id}' maps to '${entry.worktree_path}' which is not a registered git worktree and create_missing is disabled`);
|
|
147
|
+
}
|
|
148
|
+
createWorktree(root, entry._abs, trimmedBase, git);
|
|
149
|
+
}
|
|
150
|
+
return resolved.map(({ story_id, worktree_path, base_branch }) => ({
|
|
151
|
+
story_id,
|
|
152
|
+
worktree_path,
|
|
153
|
+
base_branch,
|
|
154
|
+
}));
|
|
155
|
+
}
|
|
156
|
+
export function loadWorktreeMapFile(mapPath) {
|
|
157
|
+
let raw;
|
|
158
|
+
try {
|
|
159
|
+
raw = readFileSync(mapPath, "utf8");
|
|
160
|
+
}
|
|
161
|
+
catch (exc) {
|
|
162
|
+
throw new WorktreeMapConfigError(`could not read worktree map ${mapPath}: ${String(exc)}`);
|
|
163
|
+
}
|
|
164
|
+
let data;
|
|
165
|
+
try {
|
|
166
|
+
data = JSON.parse(raw);
|
|
167
|
+
}
|
|
168
|
+
catch (exc) {
|
|
169
|
+
const message = exc instanceof Error ? exc.message : String(exc);
|
|
170
|
+
throw new WorktreeMapConfigError(`worktree map ${mapPath} is not valid JSON: ${message}`);
|
|
171
|
+
}
|
|
172
|
+
if (!Array.isArray(data)) {
|
|
173
|
+
throw new WorktreeMapConfigError(`worktree map ${mapPath} top-level value must be a JSON array`);
|
|
174
|
+
}
|
|
175
|
+
return data;
|
|
176
|
+
}
|
|
177
|
+
export { C3_FIELDS };
|
|
178
|
+
//# sourceMappingURL=worktrees.js.map
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/** Linear-time helpers replacing CodeQL-flagged polynomial regexes (#1810). */
|
|
2
|
+
/** Equivalent of ``value.replace(/[\\/]+$/, "")`` without backtracking. */
|
|
3
|
+
export declare function stripTrailingPathSeparators(value: string): string;
|
|
4
|
+
/** Equivalent of ``value.replace(/^['"]|['"]$/g, "")`` without backtracking. */
|
|
5
|
+
export declare function stripEdgeQuotes(value: string): string;
|
|
6
|
+
/**
|
|
7
|
+
* Expand compact JSON structural ``:`` / ``,`` to Python ``json.dumps`` spacing
|
|
8
|
+
* without touching separators inside string literals.
|
|
9
|
+
*/
|
|
10
|
+
export declare function expandPythonJsonSeparators(compactJson: string): string;
|
|
11
|
+
/** Mirrors ``^(#{1,6})\s+(.*\S.*)$`` without polynomial backtracking. */
|
|
12
|
+
export declare function parseMarkdownHeading(line: string): {
|
|
13
|
+
hashes: string;
|
|
14
|
+
text: string;
|
|
15
|
+
} | null;
|
|
16
|
+
/** Mirrors doctor ``_SKILL_PATH_RE`` without non-greedy backtracking. */
|
|
17
|
+
export declare function findSkillPathsInText(text: string): string[];
|
|
18
|
+
/** Return the last Greptile ``Last reviewed commit:`` SHA (linear scan). */
|
|
19
|
+
export declare function findLastReviewedCommitSha(body: string): string | null;
|
|
20
|
+
/** Parse a single manifest ``key: value`` line (linear; mirrors MANIFEST_LINE_RE). */
|
|
21
|
+
export declare function parseManifestKeyValueLine(line: string): {
|
|
22
|
+
key: string;
|
|
23
|
+
value: string;
|
|
24
|
+
} | null;
|
|
25
|
+
/** Accept OWNER/NAME or a GitHub remote URL with strict host checks. */
|
|
26
|
+
export declare function parseGitHubRepoSlug(value: string): string | null;
|
|
27
|
+
/** Infer owner/name from a git remote URL (strict github.com host; no substring checks). */
|
|
28
|
+
export declare function parseGitHubRemoteRepo(url: string): string | null;
|
|
29
|
+
//# sourceMappingURL=redos-safe.d.ts.map
|