@deftai/directive-core 0.55.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/architecture/sor-preflight.d.ts +66 -0
- package/dist/architecture/sor-preflight.js +903 -0
- package/dist/branch/evaluate.d.ts +23 -0
- package/dist/branch/evaluate.js +136 -0
- package/dist/branch/git.d.ts +15 -0
- package/dist/branch/git.js +42 -0
- package/dist/branch/index.d.ts +3 -0
- package/dist/branch/index.js +3 -0
- package/dist/cache/cli.d.ts +3 -0
- package/dist/cache/cli.js +8 -0
- package/dist/cache/constants.d.ts +12 -0
- package/dist/cache/constants.js +14 -0
- package/dist/cache/errors.d.ts +34 -0
- package/dist/cache/errors.js +52 -0
- package/dist/cache/fetch.d.ts +101 -0
- package/dist/cache/fetch.js +413 -0
- package/dist/cache/index.d.ts +14 -0
- package/dist/cache/index.js +14 -0
- package/dist/cache/io.d.ts +15 -0
- package/dist/cache/io.js +53 -0
- package/dist/cache/json.d.ts +11 -0
- package/dist/cache/json.js +32 -0
- package/dist/cache/main.d.ts +3 -0
- package/dist/cache/main.js +319 -0
- package/dist/cache/operations.d.ts +34 -0
- package/dist/cache/operations.js +348 -0
- package/dist/cache/paths.d.ts +7 -0
- package/dist/cache/paths.js +27 -0
- package/dist/cache/quota.d.ts +56 -0
- package/dist/cache/quota.js +191 -0
- package/dist/cache/scanner.d.ts +28 -0
- package/dist/cache/scanner.js +362 -0
- package/dist/cache/test-helpers.d.ts +10 -0
- package/dist/cache/test-helpers.js +17 -0
- package/dist/cache/time.d.ts +9 -0
- package/dist/cache/time.js +20 -0
- package/dist/cache/types.d.ts +50 -0
- package/dist/cache/types.js +2 -0
- package/dist/cache/validate.d.ts +3 -0
- package/dist/cache/validate.js +118 -0
- package/dist/capacity/backfill.d.ts +52 -0
- package/dist/capacity/backfill.js +429 -0
- package/dist/capacity/index.d.ts +3 -0
- package/dist/capacity/index.js +3 -0
- package/dist/capacity/show.d.ts +73 -0
- package/dist/capacity/show.js +387 -0
- package/dist/check/index.d.ts +3 -0
- package/dist/check/index.js +2 -0
- package/dist/check/orchestrator.d.ts +51 -0
- package/dist/check/orchestrator.js +71 -0
- package/dist/codebase/constants.d.ts +2 -0
- package/dist/codebase/constants.js +2 -0
- package/dist/codebase/default-extractor.d.ts +28 -0
- package/dist/codebase/default-extractor.js +713 -0
- package/dist/codebase/index.d.ts +8 -0
- package/dist/codebase/index.js +8 -0
- package/dist/codebase/json.d.ts +14 -0
- package/dist/codebase/json.js +45 -0
- package/dist/codebase/map-fresh.d.ts +11 -0
- package/dist/codebase/map-fresh.js +125 -0
- package/dist/codebase/map.d.ts +19 -0
- package/dist/codebase/map.js +345 -0
- package/dist/codebase/projection-registry.d.ts +25 -0
- package/dist/codebase/projection-registry.js +93 -0
- package/dist/codebase/provider.d.ts +30 -0
- package/dist/codebase/provider.js +696 -0
- package/dist/content-contracts/skills/greptile-detector.d.ts +56 -0
- package/dist/content-contracts/skills/greptile-detector.js +368 -0
- package/dist/content-contracts/skills/helpers.d.ts +24 -0
- package/dist/content-contracts/skills/helpers.js +73 -0
- package/dist/content-contracts/skills/skill-frontmatter.d.ts +7 -0
- package/dist/content-contracts/skills/skill-frontmatter.js +65 -0
- package/dist/content-contracts/standards/_helpers.d.ts +49 -0
- package/dist/content-contracts/standards/_helpers.js +227 -0
- package/dist/content-contracts/standards/_shapes.d.ts +12 -0
- package/dist/content-contracts/standards/_shapes.js +45 -0
- package/dist/content-contracts/standards/_taskfile-helpers.d.ts +12 -0
- package/dist/content-contracts/standards/_taskfile-helpers.js +61 -0
- package/dist/content-root.d.ts +47 -0
- package/dist/content-root.js +89 -0
- package/dist/doctor/agents-md.d.ts +14 -0
- package/dist/doctor/agents-md.js +263 -0
- package/dist/doctor/checks.d.ts +16 -0
- package/dist/doctor/checks.js +351 -0
- package/dist/doctor/cli.d.ts +2 -0
- package/dist/doctor/cli.js +7 -0
- package/dist/doctor/constants.d.ts +15 -0
- package/dist/doctor/constants.js +40 -0
- package/dist/doctor/doctor-state.d.ts +16 -0
- package/dist/doctor/doctor-state.js +117 -0
- package/dist/doctor/flags.d.ts +5 -0
- package/dist/doctor/flags.js +63 -0
- package/dist/doctor/index.d.ts +14 -0
- package/dist/doctor/index.js +14 -0
- package/dist/doctor/json.d.ts +3 -0
- package/dist/doctor/json.js +21 -0
- package/dist/doctor/main.d.ts +3 -0
- package/dist/doctor/main.js +387 -0
- package/dist/doctor/manifest.d.ts +11 -0
- package/dist/doctor/manifest.js +114 -0
- package/dist/doctor/output.d.ts +19 -0
- package/dist/doctor/output.js +49 -0
- package/dist/doctor/paths.d.ts +16 -0
- package/dist/doctor/paths.js +106 -0
- package/dist/doctor/payload-staleness.d.ts +13 -0
- package/dist/doctor/payload-staleness.js +165 -0
- package/dist/doctor/taskfile.d.ts +6 -0
- package/dist/doctor/taskfile.js +65 -0
- package/dist/doctor/types.d.ts +76 -0
- package/dist/doctor/types.js +4 -0
- package/dist/doctor/which.d.ts +3 -0
- package/dist/doctor/which.js +17 -0
- package/dist/encoding/evaluate.d.ts +19 -0
- package/dist/encoding/evaluate.js +155 -0
- package/dist/encoding/git.d.ts +11 -0
- package/dist/encoding/git.js +36 -0
- package/dist/encoding/index.d.ts +6 -0
- package/dist/encoding/index.js +6 -0
- package/dist/encoding/patterns.d.ts +29 -0
- package/dist/encoding/patterns.js +109 -0
- package/dist/encoding/scan.d.ts +24 -0
- package/dist/encoding/scan.js +182 -0
- package/dist/encoding/text.d.ts +21 -0
- package/dist/encoding/text.js +111 -0
- package/dist/index.d.ts +54 -0
- package/dist/index.js +55 -0
- package/dist/intake/candidates-log.d.ts +20 -0
- package/dist/intake/candidates-log.js +224 -0
- package/dist/intake/github-auth-modes-cli.d.ts +3 -0
- package/dist/intake/github-auth-modes-cli.js +23 -0
- package/dist/intake/github-auth-modes.d.ts +54 -0
- package/dist/intake/github-auth-modes.js +275 -0
- package/dist/intake/github-body-cli.d.ts +3 -0
- package/dist/intake/github-body-cli.js +30 -0
- package/dist/intake/github-body.d.ts +48 -0
- package/dist/intake/github-body.js +151 -0
- package/dist/intake/index.d.ts +15 -0
- package/dist/intake/index.js +15 -0
- package/dist/intake/issue-emit-cli.d.ts +3 -0
- package/dist/intake/issue-emit-cli.js +34 -0
- package/dist/intake/issue-emit.d.ts +63 -0
- package/dist/intake/issue-emit.js +351 -0
- package/dist/intake/issue-ingest-cli.d.ts +3 -0
- package/dist/intake/issue-ingest-cli.js +33 -0
- package/dist/intake/issue-ingest.d.ts +53 -0
- package/dist/intake/issue-ingest.js +477 -0
- package/dist/intake/markdown-scanners.d.ts +23 -0
- package/dist/intake/markdown-scanners.js +247 -0
- package/dist/intake/parity-scenarios.d.ts +22 -0
- package/dist/intake/parity-scenarios.js +32 -0
- package/dist/intake/platform-capabilities.d.ts +11 -0
- package/dist/intake/platform-capabilities.js +34 -0
- package/dist/intake/reconcile-issues-cli.d.ts +3 -0
- package/dist/intake/reconcile-issues-cli.js +31 -0
- package/dist/intake/reconcile-issues.d.ts +60 -0
- package/dist/intake/reconcile-issues.js +756 -0
- package/dist/integration-e2e/bootstrap-cache-module.d.ts +5 -0
- package/dist/integration-e2e/bootstrap-cache-module.js +21 -0
- package/dist/integration-e2e/helpers.d.ts +28 -0
- package/dist/integration-e2e/helpers.js +157 -0
- package/dist/lifecycle/event-detect.d.ts +32 -0
- package/dist/lifecycle/event-detect.js +172 -0
- package/dist/lifecycle/events.d.ts +45 -0
- package/dist/lifecycle/events.js +340 -0
- package/dist/lifecycle/index.d.ts +4 -0
- package/dist/lifecycle/index.js +4 -0
- package/dist/lifecycle/lifecycle-hygiene.d.ts +59 -0
- package/dist/lifecycle/lifecycle-hygiene.js +388 -0
- package/dist/orchestration/index.d.ts +7 -0
- package/dist/orchestration/index.js +7 -0
- package/dist/orchestration/judgment-policy.d.ts +23 -0
- package/dist/orchestration/judgment-policy.js +228 -0
- package/dist/orchestration/pathspec.d.ts +11 -0
- package/dist/orchestration/pathspec.js +95 -0
- package/dist/orchestration/probe-session.d.ts +74 -0
- package/dist/orchestration/probe-session.js +478 -0
- package/dist/orchestration/subagent-monitor.d.ts +64 -0
- package/dist/orchestration/subagent-monitor.js +405 -0
- package/dist/orchestration/verify-investigation.d.ts +27 -0
- package/dist/orchestration/verify-investigation.js +314 -0
- package/dist/orchestration/verify-judgment-gates.d.ts +66 -0
- package/dist/orchestration/verify-judgment-gates.js +710 -0
- package/dist/packs/index.d.ts +4 -0
- package/dist/packs/index.js +4 -0
- package/dist/packs/pack-render.d.ts +31 -0
- package/dist/packs/pack-render.js +357 -0
- package/dist/packs/packs-slice.d.ts +58 -0
- package/dist/packs/packs-slice.js +649 -0
- package/dist/packs/quarantine-ext.d.ts +7 -0
- package/dist/packs/quarantine-ext.js +164 -0
- package/dist/platform/agents-md.d.ts +31 -0
- package/dist/platform/agents-md.js +320 -0
- package/dist/platform/changelog-cli.d.ts +3 -0
- package/dist/platform/changelog-cli.js +64 -0
- package/dist/platform/constants.d.ts +20 -0
- package/dist/platform/constants.js +27 -0
- package/dist/platform/index.d.ts +9 -0
- package/dist/platform/index.js +9 -0
- package/dist/platform/ip-risk.d.ts +10 -0
- package/dist/platform/ip-risk.js +235 -0
- package/dist/platform/linear-scan.d.ts +36 -0
- package/dist/platform/linear-scan.js +174 -0
- package/dist/platform/platform-capabilities.d.ts +45 -0
- package/dist/platform/platform-capabilities.js +190 -0
- package/dist/platform/resolve-changelog-unreleased.d.ts +24 -0
- package/dist/platform/resolve-changelog-unreleased.js +364 -0
- package/dist/platform/resolve-version.d.ts +22 -0
- package/dist/platform/resolve-version.js +303 -0
- package/dist/platform/slug-normalize.d.ts +9 -0
- package/dist/platform/slug-normalize.js +110 -0
- package/dist/policy/autonomy.d.ts +43 -0
- package/dist/policy/autonomy.js +220 -0
- package/dist/policy/capacity.d.ts +45 -0
- package/dist/policy/capacity.js +251 -0
- package/dist/policy/decisions.d.ts +26 -0
- package/dist/policy/decisions.js +114 -0
- package/dist/policy/disclosure.d.ts +4 -0
- package/dist/policy/disclosure.js +19 -0
- package/dist/policy/index.d.ts +43 -0
- package/dist/policy/index.js +298 -0
- package/dist/policy/resolve.d.ts +38 -0
- package/dist/policy/resolve.js +228 -0
- package/dist/policy/wip.d.ts +15 -0
- package/dist/policy/wip.js +81 -0
- package/dist/pr-closing-keywords/constants.d.ts +6 -0
- package/dist/pr-closing-keywords/constants.js +6 -0
- package/dist/pr-closing-keywords/detect.d.ts +5 -0
- package/dist/pr-closing-keywords/detect.js +113 -0
- package/dist/pr-closing-keywords/gh.d.ts +6 -0
- package/dist/pr-closing-keywords/gh.js +129 -0
- package/dist/pr-closing-keywords/index.d.ts +7 -0
- package/dist/pr-closing-keywords/index.js +6 -0
- package/dist/pr-closing-keywords/io.d.ts +3 -0
- package/dist/pr-closing-keywords/io.js +22 -0
- package/dist/pr-closing-keywords/main.d.ts +9 -0
- package/dist/pr-closing-keywords/main.js +246 -0
- package/dist/pr-closing-keywords/types.d.ts +23 -0
- package/dist/pr-closing-keywords/types.js +2 -0
- package/dist/pr-merge-readiness/compute.d.ts +7 -0
- package/dist/pr-merge-readiness/compute.js +210 -0
- package/dist/pr-merge-readiness/constants.d.ts +20 -0
- package/dist/pr-merge-readiness/constants.js +32 -0
- package/dist/pr-merge-readiness/evaluate.d.ts +5 -0
- package/dist/pr-merge-readiness/evaluate.js +48 -0
- package/dist/pr-merge-readiness/gh.d.ts +22 -0
- package/dist/pr-merge-readiness/gh.js +281 -0
- package/dist/pr-merge-readiness/index.d.ts +9 -0
- package/dist/pr-merge-readiness/index.js +8 -0
- package/dist/pr-merge-readiness/main.d.ts +14 -0
- package/dist/pr-merge-readiness/main.js +67 -0
- package/dist/pr-merge-readiness/output.d.ts +7 -0
- package/dist/pr-merge-readiness/output.js +98 -0
- package/dist/pr-merge-readiness/parse.d.ts +6 -0
- package/dist/pr-merge-readiness/parse.js +83 -0
- package/dist/pr-merge-readiness/types.d.ts +29 -0
- package/dist/pr-merge-readiness/types.js +2 -0
- package/dist/pr-monitor/cadence.d.ts +3 -0
- package/dist/pr-monitor/cadence.js +12 -0
- package/dist/pr-monitor/constants.d.ts +8 -0
- package/dist/pr-monitor/constants.js +12 -0
- package/dist/pr-monitor/index.d.ts +7 -0
- package/dist/pr-monitor/index.js +6 -0
- package/dist/pr-monitor/main.d.ts +17 -0
- package/dist/pr-monitor/main.js +169 -0
- package/dist/pr-monitor/monitor.d.ts +9 -0
- package/dist/pr-monitor/monitor.js +106 -0
- package/dist/pr-monitor/readiness.d.ts +6 -0
- package/dist/pr-monitor/readiness.js +64 -0
- package/dist/pr-monitor/types.d.ts +30 -0
- package/dist/pr-monitor/types.js +2 -0
- package/dist/pr-protected-issues/constants.d.ts +7 -0
- package/dist/pr-protected-issues/constants.js +7 -0
- package/dist/pr-protected-issues/gh.d.ts +9 -0
- package/dist/pr-protected-issues/gh.js +96 -0
- package/dist/pr-protected-issues/index.d.ts +6 -0
- package/dist/pr-protected-issues/index.js +5 -0
- package/dist/pr-protected-issues/main.d.ts +14 -0
- package/dist/pr-protected-issues/main.js +128 -0
- package/dist/pr-protected-issues/parse.d.ts +6 -0
- package/dist/pr-protected-issues/parse.js +21 -0
- package/dist/pr-protected-issues/types.d.ts +8 -0
- package/dist/pr-protected-issues/types.js +2 -0
- package/dist/pr-wait-mergeable/cascade.d.ts +12 -0
- package/dist/pr-wait-mergeable/cascade.js +107 -0
- package/dist/pr-wait-mergeable/classify.d.ts +5 -0
- package/dist/pr-wait-mergeable/classify.js +47 -0
- package/dist/pr-wait-mergeable/constants.d.ts +5 -0
- package/dist/pr-wait-mergeable/constants.js +5 -0
- package/dist/pr-wait-mergeable/index.d.ts +8 -0
- package/dist/pr-wait-mergeable/index.js +7 -0
- package/dist/pr-wait-mergeable/main.d.ts +18 -0
- package/dist/pr-wait-mergeable/main.js +213 -0
- package/dist/pr-wait-mergeable/result.d.ts +9 -0
- package/dist/pr-wait-mergeable/result.js +38 -0
- package/dist/pr-wait-mergeable/types.d.ts +16 -0
- package/dist/pr-wait-mergeable/types.js +2 -0
- package/dist/pr-wait-mergeable/wrappers.d.ts +26 -0
- package/dist/pr-wait-mergeable/wrappers.js +103 -0
- package/dist/preflight/evaluate.d.ts +22 -0
- package/dist/preflight/evaluate.js +137 -0
- package/dist/preflight/index.d.ts +3 -0
- package/dist/preflight/index.js +2 -0
- package/dist/preflight-cache/evaluate.d.ts +40 -0
- package/dist/preflight-cache/evaluate.js +481 -0
- package/dist/preflight-cache/index.d.ts +3 -0
- package/dist/preflight-cache/index.js +2 -0
- package/dist/preflight-gh/classifier.d.ts +56 -0
- package/dist/preflight-gh/classifier.js +415 -0
- package/dist/preflight-gh/index.d.ts +3 -0
- package/dist/preflight-gh/index.js +2 -0
- package/dist/release/changelog.d.ts +9 -0
- package/dist/release/changelog.js +105 -0
- package/dist/release/cli.d.ts +2 -0
- package/dist/release/cli.js +7 -0
- package/dist/release/constants.d.ts +22 -0
- package/dist/release/constants.js +85 -0
- package/dist/release/flags.d.ts +4 -0
- package/dist/release/flags.js +131 -0
- package/dist/release/gh.d.ts +16 -0
- package/dist/release/gh.js +210 -0
- package/dist/release/git.d.ts +11 -0
- package/dist/release/git.js +84 -0
- package/dist/release/index.d.ts +14 -0
- package/dist/release/index.js +15 -0
- package/dist/release/main.d.ts +3 -0
- package/dist/release/main.js +47 -0
- package/dist/release/paths.d.ts +6 -0
- package/dist/release/paths.js +39 -0
- package/dist/release/pipeline.d.ts +6 -0
- package/dist/release/pipeline.js +314 -0
- package/dist/release/pyproject-sync.d.ts +6 -0
- package/dist/release/pyproject-sync.js +52 -0
- package/dist/release/pyproject.d.ts +3 -0
- package/dist/release/pyproject.js +33 -0
- package/dist/release/python-bridge.d.ts +7 -0
- package/dist/release/python-bridge.js +144 -0
- package/dist/release/spawn.d.ts +8 -0
- package/dist/release/spawn.js +44 -0
- package/dist/release/types.d.ts +58 -0
- package/dist/release/types.js +2 -0
- package/dist/release/version.d.ts +11 -0
- package/dist/release/version.js +74 -0
- package/dist/release-e2e/constants.d.ts +22 -0
- package/dist/release-e2e/constants.js +43 -0
- package/dist/release-e2e/entrypoint-worker-thread.d.ts +2 -0
- package/dist/release-e2e/entrypoint-worker-thread.js +22 -0
- package/dist/release-e2e/entrypoint-worker.d.ts +13 -0
- package/dist/release-e2e/entrypoint-worker.js +50 -0
- package/dist/release-e2e/entrypoint.d.ts +40 -0
- package/dist/release-e2e/entrypoint.js +257 -0
- package/dist/release-e2e/flags.d.ts +5 -0
- package/dist/release-e2e/flags.js +80 -0
- package/dist/release-e2e/gh-ops.d.ts +5 -0
- package/dist/release-e2e/gh-ops.js +72 -0
- package/dist/release-e2e/git-ops.d.ts +6 -0
- package/dist/release-e2e/git-ops.js +47 -0
- package/dist/release-e2e/index.d.ts +10 -0
- package/dist/release-e2e/index.js +10 -0
- package/dist/release-e2e/main.d.ts +4 -0
- package/dist/release-e2e/main.js +78 -0
- package/dist/release-e2e/npm-ops.d.ts +29 -0
- package/dist/release-e2e/npm-ops.js +149 -0
- package/dist/release-e2e/rehearsal.d.ts +3 -0
- package/dist/release-e2e/rehearsal.js +51 -0
- package/dist/release-e2e/rollback-bridge.d.ts +3 -0
- package/dist/release-e2e/rollback-bridge.js +20 -0
- package/dist/release-e2e/types.d.ts +40 -0
- package/dist/release-e2e/types.js +2 -0
- package/dist/release-publish/cli.d.ts +2 -0
- package/dist/release-publish/cli.js +7 -0
- package/dist/release-publish/constants.d.ts +4 -0
- package/dist/release-publish/constants.js +24 -0
- package/dist/release-publish/flags.d.ts +5 -0
- package/dist/release-publish/flags.js +67 -0
- package/dist/release-publish/gh-api.d.ts +6 -0
- package/dist/release-publish/gh-api.js +102 -0
- package/dist/release-publish/index.d.ts +7 -0
- package/dist/release-publish/index.js +8 -0
- package/dist/release-publish/main.d.ts +3 -0
- package/dist/release-publish/main.js +38 -0
- package/dist/release-publish/pipeline.d.ts +4 -0
- package/dist/release-publish/pipeline.js +46 -0
- package/dist/release-publish/types.d.ts +25 -0
- package/dist/release-publish/types.js +2 -0
- package/dist/release-rollback/constants.d.ts +18 -0
- package/dist/release-rollback/constants.js +55 -0
- package/dist/release-rollback/flags.d.ts +4 -0
- package/dist/release-rollback/flags.js +136 -0
- package/dist/release-rollback/gh.d.ts +5 -0
- package/dist/release-rollback/gh.js +71 -0
- package/dist/release-rollback/git.d.ts +9 -0
- package/dist/release-rollback/git.js +87 -0
- package/dist/release-rollback/guard.d.ts +12 -0
- package/dist/release-rollback/guard.js +97 -0
- package/dist/release-rollback/index.d.ts +9 -0
- package/dist/release-rollback/index.js +10 -0
- package/dist/release-rollback/main.d.ts +3 -0
- package/dist/release-rollback/main.js +51 -0
- package/dist/release-rollback/pipeline.d.ts +7 -0
- package/dist/release-rollback/pipeline.js +221 -0
- package/dist/release-rollback/types.d.ts +41 -0
- package/dist/release-rollback/types.js +2 -0
- package/dist/render/constants.d.ts +16 -0
- package/dist/render/constants.js +78 -0
- package/dist/render/framework-commands.d.ts +41 -0
- package/dist/render/framework-commands.js +416 -0
- package/dist/render/index.d.ts +15 -0
- package/dist/render/index.js +15 -0
- package/dist/render/prd-render.d.ts +14 -0
- package/dist/render/prd-render.js +79 -0
- package/dist/render/project-render.d.ts +20 -0
- package/dist/render/project-render.js +169 -0
- package/dist/render/roadmap-render.d.ts +8 -0
- package/dist/render/roadmap-render.js +387 -0
- package/dist/render/spec-render.d.ts +13 -0
- package/dist/render/spec-render.js +362 -0
- package/dist/render/spec-validate.d.ts +6 -0
- package/dist/render/spec-validate.js +157 -0
- package/dist/render/text-utils.d.ts +8 -0
- package/dist/render/text-utils.js +72 -0
- package/dist/scm/argv.d.ts +7 -0
- package/dist/scm/argv.js +54 -0
- package/dist/scm/binary.d.ts +11 -0
- package/dist/scm/binary.js +35 -0
- package/dist/scm/build-command.d.ts +11 -0
- package/dist/scm/build-command.js +23 -0
- package/dist/scm/call.d.ts +25 -0
- package/dist/scm/call.js +38 -0
- package/dist/scm/cli.d.ts +3 -0
- package/dist/scm/cli.js +7 -0
- package/dist/scm/constants.d.ts +11 -0
- package/dist/scm/constants.js +11 -0
- package/dist/scm/errors.d.ts +5 -0
- package/dist/scm/errors.js +8 -0
- package/dist/scm/gh-rest.d.ts +74 -0
- package/dist/scm/gh-rest.js +326 -0
- package/dist/scm/index.d.ts +11 -0
- package/dist/scm/index.js +11 -0
- package/dist/scm/main.d.ts +12 -0
- package/dist/scm/main.js +65 -0
- package/dist/scm/py-format.d.ts +9 -0
- package/dist/scm/py-format.js +31 -0
- package/dist/scm/rest-dispatch.d.ts +14 -0
- package/dist/scm/rest-dispatch.js +175 -0
- package/dist/scope/audit-log.d.ts +14 -0
- package/dist/scope/audit-log.js +186 -0
- package/dist/scope/capacity-stamp.d.ts +3 -0
- package/dist/scope/capacity-stamp.js +45 -0
- package/dist/scope/cli.d.ts +4 -0
- package/dist/scope/cli.js +11 -0
- package/dist/scope/constants.d.ts +19 -0
- package/dist/scope/constants.js +44 -0
- package/dist/scope/decompose.d.ts +42 -0
- package/dist/scope/decompose.js +1016 -0
- package/dist/scope/decomposed-refs.d.ts +6 -0
- package/dist/scope/decomposed-refs.js +173 -0
- package/dist/scope/demote.d.ts +24 -0
- package/dist/scope/demote.js +209 -0
- package/dist/scope/index.d.ts +12 -0
- package/dist/scope/index.js +12 -0
- package/dist/scope/main.d.ts +30 -0
- package/dist/scope/main.js +365 -0
- package/dist/scope/project-context.d.ts +6 -0
- package/dist/scope/project-context.js +55 -0
- package/dist/scope/project-definition-sync.d.ts +3 -0
- package/dist/scope/project-definition-sync.js +157 -0
- package/dist/scope/transition.d.ts +10 -0
- package/dist/scope/transition.js +133 -0
- package/dist/scope/undo.d.ts +25 -0
- package/dist/scope/undo.js +334 -0
- package/dist/scope/vbrief-json.d.ts +4 -0
- package/dist/scope/vbrief-json.js +8 -0
- package/dist/scope/vbrief-ref.d.ts +11 -0
- package/dist/scope/vbrief-ref.js +100 -0
- package/dist/scope/wip-cap-check.d.ts +11 -0
- package/dist/scope/wip-cap-check.js +23 -0
- package/dist/session/git.d.ts +14 -0
- package/dist/session/git.js +49 -0
- package/dist/session/index.d.ts +9 -0
- package/dist/session/index.js +9 -0
- package/dist/session/json.d.ts +7 -0
- package/dist/session/json.js +29 -0
- package/dist/session/resume-conditions.d.ts +56 -0
- package/dist/session/resume-conditions.js +486 -0
- package/dist/session/ritual-entrypoint.d.ts +20 -0
- package/dist/session/ritual-entrypoint.js +86 -0
- package/dist/session/ritual-sentinel.d.ts +58 -0
- package/dist/session/ritual-sentinel.js +338 -0
- package/dist/session/session-start-hook.d.ts +14 -0
- package/dist/session/session-start-hook.js +53 -0
- package/dist/session/session-start.d.ts +41 -0
- package/dist/session/session-start.js +290 -0
- package/dist/session/staleness.d.ts +8 -0
- package/dist/session/staleness.js +91 -0
- package/dist/session/time.d.ts +5 -0
- package/dist/session/time.js +19 -0
- package/dist/session/verify-session-ritual.d.ts +29 -0
- package/dist/session/verify-session-ritual.js +222 -0
- package/dist/slice/cli.d.ts +21 -0
- package/dist/slice/cli.js +248 -0
- package/dist/slice/constants.d.ts +18 -0
- package/dist/slice/constants.js +30 -0
- package/dist/slice/errors.d.ts +9 -0
- package/dist/slice/errors.js +15 -0
- package/dist/slice/existing.d.ts +53 -0
- package/dist/slice/existing.js +344 -0
- package/dist/slice/index.d.ts +10 -0
- package/dist/slice/index.js +10 -0
- package/dist/slice/json.d.ts +7 -0
- package/dist/slice/json.js +25 -0
- package/dist/slice/lock.d.ts +9 -0
- package/dist/slice/lock.js +59 -0
- package/dist/slice/project-context.d.ts +15 -0
- package/dist/slice/project-context.js +87 -0
- package/dist/slice/record.d.ts +50 -0
- package/dist/slice/record.js +139 -0
- package/dist/slice/validate.d.ts +3 -0
- package/dist/slice/validate.js +86 -0
- package/dist/story-ready/allocation.d.ts +14 -0
- package/dist/story-ready/allocation.js +61 -0
- package/dist/story-ready/evaluate.d.ts +23 -0
- package/dist/story-ready/evaluate.js +161 -0
- package/dist/story-ready/git.d.ts +6 -0
- package/dist/story-ready/git.js +26 -0
- package/dist/story-ready/index.d.ts +4 -0
- package/dist/story-ready/index.js +4 -0
- package/dist/subprocess/max-buffer.d.ts +18 -0
- package/dist/subprocess/max-buffer.js +18 -0
- package/dist/swarm/complete-cohort-cli.d.ts +3 -0
- package/dist/swarm/complete-cohort-cli.js +42 -0
- package/dist/swarm/complete-cohort.d.ts +34 -0
- package/dist/swarm/complete-cohort.js +407 -0
- package/dist/swarm/constants.d.ts +18 -0
- package/dist/swarm/constants.js +24 -0
- package/dist/swarm/index.d.ts +18 -0
- package/dist/swarm/index.js +18 -0
- package/dist/swarm/launch-cli.d.ts +5 -0
- package/dist/swarm/launch-cli.js +111 -0
- package/dist/swarm/launch.d.ts +78 -0
- package/dist/swarm/launch.js +587 -0
- package/dist/swarm/readiness-cli.d.ts +3 -0
- package/dist/swarm/readiness-cli.js +25 -0
- package/dist/swarm/readiness.d.ts +24 -0
- package/dist/swarm/readiness.js +606 -0
- package/dist/swarm/routing-set-cli.d.ts +3 -0
- package/dist/swarm/routing-set-cli.js +82 -0
- package/dist/swarm/routing-verify-cli.d.ts +3 -0
- package/dist/swarm/routing-verify-cli.js +51 -0
- package/dist/swarm/routing-verify.d.ts +20 -0
- package/dist/swarm/routing-verify.js +104 -0
- package/dist/swarm/routing.d.ts +57 -0
- package/dist/swarm/routing.js +173 -0
- package/dist/swarm/subagent-backend.d.ts +22 -0
- package/dist/swarm/subagent-backend.js +162 -0
- package/dist/swarm/subprocess.d.ts +10 -0
- package/dist/swarm/subprocess.js +34 -0
- package/dist/swarm/verify-review-clean-cli.d.ts +3 -0
- package/dist/swarm/verify-review-clean-cli.js +38 -0
- package/dist/swarm/verify-review-clean.d.ts +40 -0
- package/dist/swarm/verify-review-clean.js +240 -0
- package/dist/swarm/worktrees-cli.d.ts +9 -0
- package/dist/swarm/worktrees-cli.js +57 -0
- package/dist/swarm/worktrees.d.ts +39 -0
- package/dist/swarm/worktrees.js +178 -0
- package/dist/text/redos-safe.d.ts +29 -0
- package/dist/text/redos-safe.js +338 -0
- package/dist/triage/actions/candidates-log.d.ts +8 -0
- package/dist/triage/actions/candidates-log.js +195 -0
- package/dist/triage/actions/errors.d.ts +17 -0
- package/dist/triage/actions/errors.js +29 -0
- package/dist/triage/actions/index.d.ts +19 -0
- package/dist/triage/actions/index.js +305 -0
- package/dist/triage/actions/resume-on.d.ts +3 -0
- package/dist/triage/actions/resume-on.js +65 -0
- package/dist/triage/actions/types.d.ts +57 -0
- package/dist/triage/actions/types.js +2 -0
- package/dist/triage/bootstrap/gitignore.d.ts +16 -0
- package/dist/triage/bootstrap/gitignore.js +414 -0
- package/dist/triage/bootstrap/index.d.ts +44 -0
- package/dist/triage/bootstrap/index.js +572 -0
- package/dist/triage/bootstrap/types.d.ts +60 -0
- package/dist/triage/bootstrap/types.js +2 -0
- package/dist/triage/bulk/index.d.ts +99 -0
- package/dist/triage/bulk/index.js +454 -0
- package/dist/triage/classify/index.d.ts +88 -0
- package/dist/triage/classify/index.js +738 -0
- package/dist/triage/help/index.d.ts +25 -0
- package/dist/triage/help/index.js +212 -0
- package/dist/triage/help/registry-data.d.ts +555 -0
- package/dist/triage/help/registry-data.js +841 -0
- package/dist/triage/index.d.ts +23 -0
- package/dist/triage/index.js +23 -0
- package/dist/triage/queue/audit.d.ts +12 -0
- package/dist/triage/queue/audit.js +47 -0
- package/dist/triage/queue/build-queue.d.ts +9 -0
- package/dist/triage/queue/build-queue.js +133 -0
- package/dist/triage/queue/cache.d.ts +20 -0
- package/dist/triage/queue/cache.js +169 -0
- package/dist/triage/queue/constants.d.ts +22 -0
- package/dist/triage/queue/constants.js +28 -0
- package/dist/triage/queue/derive-group.d.ts +7 -0
- package/dist/triage/queue/derive-group.js +20 -0
- package/dist/triage/queue/index.d.ts +12 -0
- package/dist/triage/queue/index.js +12 -0
- package/dist/triage/queue/project.d.ts +6 -0
- package/dist/triage/queue/project.js +18 -0
- package/dist/triage/queue/ranking-labels.d.ts +10 -0
- package/dist/triage/queue/ranking-labels.js +54 -0
- package/dist/triage/queue/render.d.ts +9 -0
- package/dist/triage/queue/render.js +35 -0
- package/dist/triage/queue/repo.d.ts +5 -0
- package/dist/triage/queue/repo.js +36 -0
- package/dist/triage/queue/scope-walk.d.ts +13 -0
- package/dist/triage/queue/scope-walk.js +170 -0
- package/dist/triage/queue/selection.d.ts +28 -0
- package/dist/triage/queue/selection.js +109 -0
- package/dist/triage/queue/types.d.ts +58 -0
- package/dist/triage/queue/types.js +2 -0
- package/dist/triage/reconcile/audit.d.ts +4 -0
- package/dist/triage/reconcile/audit.js +62 -0
- package/dist/triage/reconcile/index.d.ts +5 -0
- package/dist/triage/reconcile/index.js +5 -0
- package/dist/triage/reconcile/parse-uri.d.ts +4 -0
- package/dist/triage/reconcile/parse-uri.js +43 -0
- package/dist/triage/reconcile/reconcile.d.ts +17 -0
- package/dist/triage/reconcile/reconcile.js +163 -0
- package/dist/triage/reconcile/types.d.ts +23 -0
- package/dist/triage/reconcile/types.js +70 -0
- package/dist/triage/refresh/drift.d.ts +15 -0
- package/dist/triage/refresh/drift.js +72 -0
- package/dist/triage/refresh/extract.d.ts +3 -0
- package/dist/triage/refresh/extract.js +43 -0
- package/dist/triage/refresh/index.d.ts +5 -0
- package/dist/triage/refresh/index.js +5 -0
- package/dist/triage/refresh/refresh.d.ts +16 -0
- package/dist/triage/refresh/refresh.js +95 -0
- package/dist/triage/refresh/types.d.ts +18 -0
- package/dist/triage/refresh/types.js +7 -0
- package/dist/triage/scope/cli.d.ts +23 -0
- package/dist/triage/scope/cli.js +257 -0
- package/dist/triage/scope/constants.d.ts +16 -0
- package/dist/triage/scope/constants.js +25 -0
- package/dist/triage/scope/coverage.d.ts +24 -0
- package/dist/triage/scope/coverage.js +96 -0
- package/dist/triage/scope/duration.d.ts +6 -0
- package/dist/triage/scope/duration.js +44 -0
- package/dist/triage/scope/evaluate.d.ts +18 -0
- package/dist/triage/scope/evaluate.js +161 -0
- package/dist/triage/scope/index.d.ts +14 -0
- package/dist/triage/scope/index.js +14 -0
- package/dist/triage/scope/milestone.d.ts +13 -0
- package/dist/triage/scope/milestone.js +178 -0
- package/dist/triage/scope/mutations-core.d.ts +24 -0
- package/dist/triage/scope/mutations-core.js +216 -0
- package/dist/triage/scope/mutations.d.ts +21 -0
- package/dist/triage/scope/mutations.js +203 -0
- package/dist/triage/scope/normalize.d.ts +5 -0
- package/dist/triage/scope/normalize.js +45 -0
- package/dist/triage/scope/python-repr.d.ts +7 -0
- package/dist/triage/scope/python-repr.js +25 -0
- package/dist/triage/scope/renderers.d.ts +9 -0
- package/dist/triage/scope/renderers.js +177 -0
- package/dist/triage/scope/resolve.d.ts +15 -0
- package/dist/triage/scope/resolve.js +122 -0
- package/dist/triage/scope/time.d.ts +6 -0
- package/dist/triage/scope/time.js +18 -0
- package/dist/triage/scope/validate.d.ts +11 -0
- package/dist/triage/scope/validate.js +272 -0
- package/dist/triage/scope-drift/add-ignore.d.ts +10 -0
- package/dist/triage/scope-drift/add-ignore.js +78 -0
- package/dist/triage/scope-drift/cache-walker.d.ts +8 -0
- package/dist/triage/scope-drift/cache-walker.js +103 -0
- package/dist/triage/scope-drift/compute.d.ts +9 -0
- package/dist/triage/scope-drift/compute.js +92 -0
- package/dist/triage/scope-drift/index.d.ts +6 -0
- package/dist/triage/scope-drift/index.js +6 -0
- package/dist/triage/scope-drift/render.d.ts +4 -0
- package/dist/triage/scope-drift/render.js +45 -0
- package/dist/triage/scope-drift/scope-rules.d.ts +16 -0
- package/dist/triage/scope-drift/scope-rules.js +149 -0
- package/dist/triage/scope-drift/types.d.ts +13 -0
- package/dist/triage/scope-drift/types.js +8 -0
- package/dist/triage/smoketest/index.d.ts +81 -0
- package/dist/triage/smoketest/index.js +335 -0
- package/dist/triage/subscribe/index.d.ts +38 -0
- package/dist/triage/subscribe/index.js +303 -0
- package/dist/triage/summary/index.d.ts +70 -0
- package/dist/triage/summary/index.js +431 -0
- package/dist/triage/summary/reconcilable.d.ts +12 -0
- package/dist/triage/summary/reconcilable.js +150 -0
- package/dist/triage/summary/scope-drift.d.ts +5 -0
- package/dist/triage/summary/scope-drift.js +219 -0
- package/dist/triage/welcome/constants.d.ts +24 -0
- package/dist/triage/welcome/constants.js +34 -0
- package/dist/triage/welcome/default-mode.d.ts +21 -0
- package/dist/triage/welcome/default-mode.js +48 -0
- package/dist/triage/welcome/index.d.ts +6 -0
- package/dist/triage/welcome/index.js +6 -0
- package/dist/triage/welcome/prior-state.d.ts +17 -0
- package/dist/triage/welcome/prior-state.js +170 -0
- package/dist/triage/welcome/summary.d.ts +23 -0
- package/dist/triage/welcome/summary.js +303 -0
- package/dist/triage/welcome/writers.d.ts +17 -0
- package/dist/triage/welcome/writers.js +157 -0
- package/dist/ts-check-lane/index.d.ts +3 -0
- package/dist/ts-check-lane/index.js +2 -0
- package/dist/ts-check-lane/run-lane.d.ts +53 -0
- package/dist/ts-check-lane/run-lane.js +98 -0
- package/dist/validate-content/capacity-policy.d.ts +82 -0
- package/dist/validate-content/capacity-policy.js +399 -0
- package/dist/validate-content/capacity-show.d.ts +60 -0
- package/dist/validate-content/capacity-show.js +336 -0
- package/dist/validate-content/filename.d.ts +3 -0
- package/dist/validate-content/filename.js +54 -0
- package/dist/validate-content/index.d.ts +9 -0
- package/dist/validate-content/index.js +9 -0
- package/dist/validate-content/link-parser.d.ts +5 -0
- package/dist/validate-content/link-parser.js +42 -0
- package/dist/validate-content/types.d.ts +8 -0
- package/dist/validate-content/types.js +2 -0
- package/dist/validate-content/validate-links.d.ts +17 -0
- package/dist/validate-content/validate-links.js +114 -0
- package/dist/validate-content/validate-strategy-output.d.ts +11 -0
- package/dist/validate-content/validate-strategy-output.js +120 -0
- package/dist/validate-content/verify-capacity.d.ts +14 -0
- package/dist/validate-content/verify-capacity.js +96 -0
- package/dist/vbrief-activate/activate.d.ts +13 -0
- package/dist/vbrief-activate/activate.js +184 -0
- package/dist/vbrief-activate/constants.d.ts +9 -0
- package/dist/vbrief-activate/constants.js +11 -0
- package/dist/vbrief-activate/index.d.ts +6 -0
- package/dist/vbrief-activate/index.js +4 -0
- package/dist/vbrief-activate/main.d.ts +14 -0
- package/dist/vbrief-activate/main.js +33 -0
- package/dist/vbrief-build/build.d.ts +13 -0
- package/dist/vbrief-build/build.js +123 -0
- package/dist/vbrief-build/constants.d.ts +13 -0
- package/dist/vbrief-build/constants.js +34 -0
- package/dist/vbrief-build/index.d.ts +12 -0
- package/dist/vbrief-build/index.js +11 -0
- package/dist/vbrief-build/json.d.ts +3 -0
- package/dist/vbrief-build/json.js +5 -0
- package/dist/vbrief-build/main.d.ts +5 -0
- package/dist/vbrief-build/main.js +65 -0
- package/dist/vbrief-build/parity-scenarios.d.ts +19 -0
- package/dist/vbrief-build/parity-scenarios.js +321 -0
- package/dist/vbrief-build/project-definition-io.d.ts +13 -0
- package/dist/vbrief-build/project-definition-io.js +117 -0
- package/dist/vbrief-build/routing.d.ts +13 -0
- package/dist/vbrief-build/routing.js +110 -0
- package/dist/vbrief-build/sources.d.ts +16 -0
- package/dist/vbrief-build/sources.js +294 -0
- package/dist/vbrief-build/speckit.d.ts +23 -0
- package/dist/vbrief-build/speckit.js +212 -0
- package/dist/vbrief-build/types.d.ts +18 -0
- package/dist/vbrief-build/types.js +7 -0
- package/dist/vbrief-reconcile/graph.d.ts +11 -0
- package/dist/vbrief-reconcile/graph.js +171 -0
- package/dist/vbrief-reconcile/index.d.ts +10 -0
- package/dist/vbrief-reconcile/index.js +9 -0
- package/dist/vbrief-reconcile/labels.d.ts +22 -0
- package/dist/vbrief-reconcile/labels.js +252 -0
- package/dist/vbrief-reconcile/main.d.ts +18 -0
- package/dist/vbrief-reconcile/main.js +149 -0
- package/dist/vbrief-reconcile/parity-scenarios.d.ts +16 -0
- package/dist/vbrief-reconcile/parity-scenarios.js +385 -0
- package/dist/vbrief-reconcile/py-repr.d.ts +3 -0
- package/dist/vbrief-reconcile/py-repr.js +5 -0
- package/dist/vbrief-reconcile/reconciliation.d.ts +20 -0
- package/dist/vbrief-reconcile/reconciliation.js +542 -0
- package/dist/vbrief-reconcile/swarm-deps.d.ts +8 -0
- package/dist/vbrief-reconcile/swarm-deps.js +142 -0
- package/dist/vbrief-reconcile/types.d.ts +128 -0
- package/dist/vbrief-reconcile/types.js +2 -0
- package/dist/vbrief-reconcile/umbrellas.d.ts +48 -0
- package/dist/vbrief-reconcile/umbrellas.js +462 -0
- package/dist/vbrief-validate/conformance.d.ts +26 -0
- package/dist/vbrief-validate/conformance.js +273 -0
- package/dist/vbrief-validate/constants.d.ts +13 -0
- package/dist/vbrief-validate/constants.js +36 -0
- package/dist/vbrief-validate/decomposition.d.ts +3 -0
- package/dist/vbrief-validate/decomposition.js +38 -0
- package/dist/vbrief-validate/epic-links.d.ts +4 -0
- package/dist/vbrief-validate/epic-links.js +152 -0
- package/dist/vbrief-validate/filename.d.ts +5 -0
- package/dist/vbrief-validate/filename.js +62 -0
- package/dist/vbrief-validate/folder-status.d.ts +4 -0
- package/dist/vbrief-validate/folder-status.js +30 -0
- package/dist/vbrief-validate/index.d.ts +14 -0
- package/dist/vbrief-validate/index.js +11 -0
- package/dist/vbrief-validate/main.d.ts +17 -0
- package/dist/vbrief-validate/main.js +127 -0
- package/dist/vbrief-validate/origin.d.ts +4 -0
- package/dist/vbrief-validate/origin.js +76 -0
- package/dist/vbrief-validate/paths.d.ts +11 -0
- package/dist/vbrief-validate/paths.js +83 -0
- package/dist/vbrief-validate/placeholders.d.ts +3 -0
- package/dist/vbrief-validate/placeholders.js +33 -0
- package/dist/vbrief-validate/plan-hooks.d.ts +9 -0
- package/dist/vbrief-validate/plan-hooks.js +145 -0
- package/dist/vbrief-validate/precutover.d.ts +7 -0
- package/dist/vbrief-validate/precutover.js +30 -0
- package/dist/vbrief-validate/project-definition.d.ts +4 -0
- package/dist/vbrief-validate/project-definition.js +166 -0
- package/dist/vbrief-validate/schema.d.ts +8 -0
- package/dist/vbrief-validate/schema.js +150 -0
- package/dist/vbrief-validate/staleness.d.ts +3 -0
- package/dist/vbrief-validate/staleness.js +106 -0
- package/dist/vbrief-validate/validate-all.d.ts +17 -0
- package/dist/vbrief-validate/validate-all.js +119 -0
- package/dist/vbrief-validation/fidelity.d.ts +22 -0
- package/dist/vbrief-validation/fidelity.js +508 -0
- package/dist/vbrief-validation/index.d.ts +11 -0
- package/dist/vbrief-validation/index.js +8 -0
- package/dist/vbrief-validation/legacy-sections.d.ts +13 -0
- package/dist/vbrief-validation/legacy-sections.js +124 -0
- package/dist/vbrief-validation/main.d.ts +5 -0
- package/dist/vbrief-validation/main.js +65 -0
- package/dist/vbrief-validation/normalize.d.ts +22 -0
- package/dist/vbrief-validation/normalize.js +126 -0
- package/dist/vbrief-validation/parity-scenarios.d.ts +14 -0
- package/dist/vbrief-validation/parity-scenarios.js +523 -0
- package/dist/vbrief-validation/safety.d.ts +38 -0
- package/dist/vbrief-validation/safety.js +422 -0
- package/dist/vbrief-validation/story-quality.d.ts +29 -0
- package/dist/vbrief-validation/story-quality.js +452 -0
- package/dist/vbrief-validation/types.d.ts +58 -0
- package/dist/vbrief-validation/types.js +2 -0
- package/dist/vbrief-validation/validation.d.ts +15 -0
- package/dist/vbrief-validation/validation.js +123 -0
- package/dist/verify-env/index.d.ts +6 -0
- package/dist/verify-env/index.js +6 -0
- package/dist/verify-env/node-runtime.d.ts +6 -0
- package/dist/verify-env/node-runtime.js +11 -0
- package/dist/verify-env/toolchain-check.d.ts +28 -0
- package/dist/verify-env/toolchain-check.js +68 -0
- package/dist/verify-env/verify-hooks-installed.d.ts +21 -0
- package/dist/verify-env/verify-hooks-installed.js +162 -0
- package/dist/verify-env/verify-no-task-runtime.d.ts +20 -0
- package/dist/verify-env/verify-no-task-runtime.js +383 -0
- package/dist/verify-env/verify-tools.d.ts +59 -0
- package/dist/verify-env/verify-tools.js +354 -0
- package/dist/verify-source/code-structure-validate.d.ts +48 -0
- package/dist/verify-source/code-structure-validate.js +678 -0
- package/dist/verify-source/content-manifest.d.ts +102 -0
- package/dist/verify-source/content-manifest.js +282 -0
- package/dist/verify-source/index.d.ts +7 -0
- package/dist/verify-source/index.js +7 -0
- package/dist/verify-source/python-call-scan.d.ts +14 -0
- package/dist/verify-source/python-call-scan.js +137 -0
- package/dist/verify-source/rule-ownership-lint.d.ts +33 -0
- package/dist/verify-source/rule-ownership-lint.js +179 -0
- package/dist/verify-source/scm-boundary.d.ts +26 -0
- package/dist/verify-source/scm-boundary.js +170 -0
- package/dist/verify-source/verify-stubs.d.ts +19 -0
- package/dist/verify-source/verify-stubs.js +185 -0
- package/dist/wip-cap/evaluate.d.ts +17 -0
- package/dist/wip-cap/evaluate.js +62 -0
- package/dist/wip-cap/index.d.ts +2 -0
- package/dist/wip-cap/index.js +2 -0
- package/package.json +206 -0
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
import { execFileSync } from "node:child_process";
|
|
2
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
3
|
+
import { dirname, join, resolve } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
5
|
+
import { DEV_FALLBACK, ENV_VAR } from "./constants.js";
|
|
6
|
+
export { DEV_FALLBACK, ENV_VAR };
|
|
7
|
+
export class NonPublishableVersionError extends Error {
|
|
8
|
+
constructor(message) {
|
|
9
|
+
super(message);
|
|
10
|
+
this.name = "NonPublishableVersionError";
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
const PRE_KIND_MAP = {
|
|
14
|
+
alpha: "a",
|
|
15
|
+
beta: "b",
|
|
16
|
+
rc: "rc",
|
|
17
|
+
};
|
|
18
|
+
const NON_PUBLISHABLE_KINDS = new Set(["test"]);
|
|
19
|
+
const PRERELEASE_RANK = {
|
|
20
|
+
alpha: 0,
|
|
21
|
+
beta: 1,
|
|
22
|
+
rc: 2,
|
|
23
|
+
"": 3,
|
|
24
|
+
};
|
|
25
|
+
function frameworkRoot() {
|
|
26
|
+
const envRoot = process.env.DEFT_ROOT?.trim();
|
|
27
|
+
if (envRoot)
|
|
28
|
+
return resolve(envRoot);
|
|
29
|
+
return resolve(dirname(fileURLToPath(import.meta.url)), "..", "..", "..", "..");
|
|
30
|
+
}
|
|
31
|
+
/** Parse `[v]X.Y.Z[-(rc|alpha|beta|test).N]` via linear scan. */
|
|
32
|
+
function parsePep440Tag(version) {
|
|
33
|
+
let i = 0;
|
|
34
|
+
if (version[i] === "v" || version[i] === "V")
|
|
35
|
+
i += 1;
|
|
36
|
+
const readInt = () => {
|
|
37
|
+
const ch = version[i] ?? "";
|
|
38
|
+
if (i >= version.length || ch < "0" || ch > "9")
|
|
39
|
+
return null;
|
|
40
|
+
let n = 0;
|
|
41
|
+
while (i < version.length) {
|
|
42
|
+
const digit = version[i] ?? "";
|
|
43
|
+
if (digit < "0" || digit > "9")
|
|
44
|
+
break;
|
|
45
|
+
n = n * 10 + Number(digit);
|
|
46
|
+
i += 1;
|
|
47
|
+
}
|
|
48
|
+
return n;
|
|
49
|
+
};
|
|
50
|
+
const major = readInt();
|
|
51
|
+
if (major === null || version[i] !== ".")
|
|
52
|
+
return null;
|
|
53
|
+
i += 1;
|
|
54
|
+
const minor = readInt();
|
|
55
|
+
if (minor === null || version[i] !== ".")
|
|
56
|
+
return null;
|
|
57
|
+
i += 1;
|
|
58
|
+
const patch = readInt();
|
|
59
|
+
if (patch === null)
|
|
60
|
+
return null;
|
|
61
|
+
if (i >= version.length)
|
|
62
|
+
return { major, minor, patch, kind: null, num: null };
|
|
63
|
+
if (version[i] !== "-")
|
|
64
|
+
return null;
|
|
65
|
+
i += 1;
|
|
66
|
+
const kindStart = i;
|
|
67
|
+
while (i < version.length && version[i] !== ".")
|
|
68
|
+
i += 1;
|
|
69
|
+
if (i >= version.length || version[i] !== ".")
|
|
70
|
+
return null;
|
|
71
|
+
const kind = version.slice(kindStart, i);
|
|
72
|
+
if (!["rc", "alpha", "beta", "test"].includes(kind))
|
|
73
|
+
return null;
|
|
74
|
+
i += 1;
|
|
75
|
+
const num = readInt();
|
|
76
|
+
if (num === null || i !== version.length)
|
|
77
|
+
return null;
|
|
78
|
+
return { major, minor, patch, kind, num };
|
|
79
|
+
}
|
|
80
|
+
export function toPep440(version) {
|
|
81
|
+
if (typeof version !== "string") {
|
|
82
|
+
throw new Error(`version must be a string, got ${typeof version}`);
|
|
83
|
+
}
|
|
84
|
+
const candidate = version.trim();
|
|
85
|
+
if (!candidate)
|
|
86
|
+
throw new Error("version must be a non-empty string");
|
|
87
|
+
const parsed = parsePep440Tag(candidate);
|
|
88
|
+
if (parsed === null) {
|
|
89
|
+
throw new Error(`Cannot normalize ${JSON.stringify(candidate)} to PEP 440: expected [v]X.Y.Z or [v]X.Y.Z-(rc|alpha|beta|test).N`);
|
|
90
|
+
}
|
|
91
|
+
const base = `${parsed.major}.${parsed.minor}.${parsed.patch}`;
|
|
92
|
+
if (parsed.kind === null)
|
|
93
|
+
return base;
|
|
94
|
+
if (NON_PUBLISHABLE_KINDS.has(parsed.kind)) {
|
|
95
|
+
throw new NonPublishableVersionError(`Version ${JSON.stringify(candidate)} carries non-publishable pre-release tag ${JSON.stringify(parsed.kind)}.${parsed.num} -- release pipeline MUST skip pyproject.toml [project].version sync for this tag.`);
|
|
96
|
+
}
|
|
97
|
+
const pepKind = PRE_KIND_MAP[parsed.kind];
|
|
98
|
+
if (pepKind === undefined) {
|
|
99
|
+
throw new Error(`Unmapped pre-release kind ${JSON.stringify(parsed.kind)} for version ${JSON.stringify(candidate)}; add it to PRE_KIND_MAP or NON_PUBLISHABLE_KINDS to keep parser in lockstep with the publishability classifier.`);
|
|
100
|
+
}
|
|
101
|
+
return `${base}${pepKind}${parsed.num}`;
|
|
102
|
+
}
|
|
103
|
+
export function isPublishable(version) {
|
|
104
|
+
try {
|
|
105
|
+
toPep440(version);
|
|
106
|
+
return true;
|
|
107
|
+
}
|
|
108
|
+
catch {
|
|
109
|
+
return false;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
export function tagNameFromRef(ref) {
|
|
113
|
+
let candidate = ref.trim();
|
|
114
|
+
if (!candidate)
|
|
115
|
+
return "";
|
|
116
|
+
const parts = candidate.split(/\s+/);
|
|
117
|
+
if (parts.length >= 2)
|
|
118
|
+
candidate = parts[1] ?? candidate;
|
|
119
|
+
if (candidate.endsWith("^{}"))
|
|
120
|
+
candidate = candidate.slice(0, -3);
|
|
121
|
+
const prefix = "refs/tags/";
|
|
122
|
+
if (candidate.startsWith(prefix))
|
|
123
|
+
candidate = candidate.slice(prefix.length);
|
|
124
|
+
return candidate.trim();
|
|
125
|
+
}
|
|
126
|
+
function publishableTagSortKey(version) {
|
|
127
|
+
const candidate = version.trim();
|
|
128
|
+
const parsed = parsePep440Tag(candidate);
|
|
129
|
+
if (parsed === null) {
|
|
130
|
+
throw new Error(`Cannot sort ${JSON.stringify(candidate)}: expected [v]X.Y.Z or [v]X.Y.Z-(rc|alpha|beta).N`);
|
|
131
|
+
}
|
|
132
|
+
if (parsed.kind !== null && NON_PUBLISHABLE_KINDS.has(parsed.kind)) {
|
|
133
|
+
throw new NonPublishableVersionError(`Version ${JSON.stringify(candidate)} carries non-publishable pre-release tag ${JSON.stringify(parsed.kind)}.`);
|
|
134
|
+
}
|
|
135
|
+
const kind = parsed.kind ?? "";
|
|
136
|
+
const prereleaseRank = PRERELEASE_RANK[kind];
|
|
137
|
+
if (prereleaseRank === undefined) {
|
|
138
|
+
throw new Error(`Unmapped pre-release kind ${JSON.stringify(parsed.kind)} for ${JSON.stringify(candidate)}`);
|
|
139
|
+
}
|
|
140
|
+
return [parsed.major, parsed.minor, parsed.patch, prereleaseRank, parsed.num ?? 0];
|
|
141
|
+
}
|
|
142
|
+
export function latestPublishableTag(tags) {
|
|
143
|
+
let bestTag = null;
|
|
144
|
+
let bestKey = null;
|
|
145
|
+
for (const raw of tags) {
|
|
146
|
+
const tag = tagNameFromRef(raw);
|
|
147
|
+
if (!tag || !isPublishable(tag))
|
|
148
|
+
continue;
|
|
149
|
+
try {
|
|
150
|
+
const key = publishableTagSortKey(tag);
|
|
151
|
+
if (bestKey === null || compareTuple(key, bestKey) > 0) {
|
|
152
|
+
bestTag = tag;
|
|
153
|
+
bestKey = key;
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
catch { }
|
|
157
|
+
}
|
|
158
|
+
return bestTag;
|
|
159
|
+
}
|
|
160
|
+
function compareTuple(a, b) {
|
|
161
|
+
for (let i = 0; i < a.length; i += 1) {
|
|
162
|
+
const av = a[i] ?? 0;
|
|
163
|
+
const bv = b[i] ?? 0;
|
|
164
|
+
if (av !== bv)
|
|
165
|
+
return av > bv ? 1 : -1;
|
|
166
|
+
}
|
|
167
|
+
return 0;
|
|
168
|
+
}
|
|
169
|
+
function readManifestTag(baseDir) {
|
|
170
|
+
const manifest = join(baseDir, "VERSION");
|
|
171
|
+
try {
|
|
172
|
+
if (!existsSync(manifest))
|
|
173
|
+
return null;
|
|
174
|
+
const text = readFileSync(manifest, "utf8");
|
|
175
|
+
for (const line of text.split("\n")) {
|
|
176
|
+
const trimmed = line.trim();
|
|
177
|
+
if (trimmed.startsWith("tag:") || trimmed.startsWith("ref:")) {
|
|
178
|
+
const colon = trimmed.indexOf(":");
|
|
179
|
+
let value = trimmed.slice(colon + 1).trim();
|
|
180
|
+
if ((value.startsWith("'") && value.endsWith("'")) ||
|
|
181
|
+
(value.startsWith('"') && value.endsWith('"'))) {
|
|
182
|
+
value = value.slice(1, -1);
|
|
183
|
+
}
|
|
184
|
+
if (value.startsWith("v"))
|
|
185
|
+
value = value.slice(1);
|
|
186
|
+
const cleaned = value.trim();
|
|
187
|
+
if (cleaned)
|
|
188
|
+
return cleaned;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
catch {
|
|
193
|
+
return null;
|
|
194
|
+
}
|
|
195
|
+
return null;
|
|
196
|
+
}
|
|
197
|
+
function readDeftVersion(baseDir) {
|
|
198
|
+
const marker = join(baseDir, ".deft-version");
|
|
199
|
+
try {
|
|
200
|
+
if (!existsSync(marker))
|
|
201
|
+
return null;
|
|
202
|
+
let version = readFileSync(marker, "utf8").trim();
|
|
203
|
+
if (version.startsWith("v"))
|
|
204
|
+
version = version.slice(1);
|
|
205
|
+
return version || null;
|
|
206
|
+
}
|
|
207
|
+
catch {
|
|
208
|
+
return null;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
export function payloadIsOwnGitRoot(payloadDir) {
|
|
212
|
+
try {
|
|
213
|
+
const stdout = execFileSync("git", ["rev-parse", "--show-toplevel"], {
|
|
214
|
+
cwd: payloadDir,
|
|
215
|
+
encoding: "utf8",
|
|
216
|
+
timeout: 10_000,
|
|
217
|
+
});
|
|
218
|
+
const toplevel = stdout.trim();
|
|
219
|
+
if (!toplevel)
|
|
220
|
+
return false;
|
|
221
|
+
return resolve(toplevel) === resolve(payloadDir);
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
return false;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
function fromEnv() {
|
|
228
|
+
const value = (process.env[ENV_VAR] ?? "").trim();
|
|
229
|
+
return value || null;
|
|
230
|
+
}
|
|
231
|
+
function fromGit(baseDir) {
|
|
232
|
+
if (!payloadIsOwnGitRoot(baseDir))
|
|
233
|
+
return null;
|
|
234
|
+
try {
|
|
235
|
+
const stdout = execFileSync("git", ["describe", "--tags", "--abbrev=0"], {
|
|
236
|
+
cwd: baseDir,
|
|
237
|
+
encoding: "utf8",
|
|
238
|
+
timeout: 10_000,
|
|
239
|
+
});
|
|
240
|
+
let tag = stdout.trim();
|
|
241
|
+
if (!tag)
|
|
242
|
+
return null;
|
|
243
|
+
if (tag.startsWith("v"))
|
|
244
|
+
tag = tag.slice(1);
|
|
245
|
+
return tag || null;
|
|
246
|
+
}
|
|
247
|
+
catch {
|
|
248
|
+
return null;
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
export function latestLocalPublishableTag(repoRoot) {
|
|
252
|
+
const cwd = repoRoot ?? frameworkRoot();
|
|
253
|
+
try {
|
|
254
|
+
const stdout = execFileSync("git", ["tag", "--list"], {
|
|
255
|
+
cwd,
|
|
256
|
+
encoding: "utf8",
|
|
257
|
+
timeout: 10_000,
|
|
258
|
+
});
|
|
259
|
+
return latestPublishableTag(stdout.split("\n"));
|
|
260
|
+
}
|
|
261
|
+
catch {
|
|
262
|
+
return null;
|
|
263
|
+
}
|
|
264
|
+
}
|
|
265
|
+
export function latestRemotePublishableTag(remote = "origin", repoRoot) {
|
|
266
|
+
// Guard against second-order command injection: a remote beginning with "-"
|
|
267
|
+
// (e.g. "--upload-pack=<cmd>") would be parsed by git as an option and could
|
|
268
|
+
// execute an arbitrary command. Legitimate remote names/URLs never start with
|
|
269
|
+
// "-", so reject them outright; the "--" end-of-options separator below is the
|
|
270
|
+
// load-bearing barrier (git stops parsing options after it).
|
|
271
|
+
if (remote.startsWith("-"))
|
|
272
|
+
return null;
|
|
273
|
+
const cwd = repoRoot ?? frameworkRoot();
|
|
274
|
+
try {
|
|
275
|
+
const stdout = execFileSync("git", ["ls-remote", "--tags", "--refs", "--", remote], {
|
|
276
|
+
cwd,
|
|
277
|
+
encoding: "utf8",
|
|
278
|
+
timeout: 10_000,
|
|
279
|
+
});
|
|
280
|
+
return latestPublishableTag(stdout.split("\n"));
|
|
281
|
+
}
|
|
282
|
+
catch {
|
|
283
|
+
return null;
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
/** Resolve version using the documented priority chain. */
|
|
287
|
+
export function resolveVersion(seams = {}) {
|
|
288
|
+
const base = seams.frameworkRoot ?? frameworkRoot();
|
|
289
|
+
const envValue = (seams.fromEnv ?? fromEnv)();
|
|
290
|
+
if (envValue)
|
|
291
|
+
return envValue;
|
|
292
|
+
const manifestValue = (seams.fromManifest ?? readManifestTag)(base);
|
|
293
|
+
if (manifestValue)
|
|
294
|
+
return manifestValue;
|
|
295
|
+
const deftVersionValue = (seams.fromDeftVersion ?? readDeftVersion)(base);
|
|
296
|
+
if (deftVersionValue)
|
|
297
|
+
return deftVersionValue;
|
|
298
|
+
const gitValue = (seams.fromGit ?? fromGit)(base);
|
|
299
|
+
if (gitValue)
|
|
300
|
+
return gitValue;
|
|
301
|
+
return DEV_FALLBACK;
|
|
302
|
+
}
|
|
303
|
+
//# sourceMappingURL=resolve-version.js.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { DEFAULT_MAX_LEN, WINDOWS_RESERVED } from "./constants.js";
|
|
2
|
+
export { DEFAULT_MAX_LEN, WINDOWS_RESERVED };
|
|
3
|
+
/** Return a filesystem-safe slug (mirrors scripts/slug_normalize.py). */
|
|
4
|
+
export declare function normalizeSlug(text: string | null | undefined, maxLen?: number): string;
|
|
5
|
+
/** Return a collision-free slug relative to `existing`. */
|
|
6
|
+
export declare function disambiguateSlug(slug: string, existing: ReadonlySet<string> | readonly string[], options?: {
|
|
7
|
+
maxLen?: number;
|
|
8
|
+
}): string;
|
|
9
|
+
//# sourceMappingURL=slug-normalize.d.ts.map
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import { DEFAULT_MAX_LEN, WINDOWS_RESERVED } from "./constants.js";
|
|
2
|
+
export { DEFAULT_MAX_LEN, WINDOWS_RESERVED };
|
|
3
|
+
function stripCheckboxMarkers(text) {
|
|
4
|
+
let out = "";
|
|
5
|
+
let i = 0;
|
|
6
|
+
while (i < text.length) {
|
|
7
|
+
const atBoundary = i === 0 || text[i - 1] === " " || text[i - 1] === "\t";
|
|
8
|
+
if (atBoundary && text[i] === "[" && i + 2 < text.length && text[i + 2] === "]") {
|
|
9
|
+
const mid = text[i + 1];
|
|
10
|
+
if (mid === " " || mid === "x" || mid === "X") {
|
|
11
|
+
out += " ";
|
|
12
|
+
i += 3;
|
|
13
|
+
continue;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
out += text[i] ?? "";
|
|
17
|
+
i += 1;
|
|
18
|
+
}
|
|
19
|
+
return out;
|
|
20
|
+
}
|
|
21
|
+
function collapseNonAlnum(text) {
|
|
22
|
+
let out = "";
|
|
23
|
+
let lastHyphen = false;
|
|
24
|
+
for (const ch of text) {
|
|
25
|
+
const lower = ch.toLowerCase();
|
|
26
|
+
const isAlnum = (lower >= "a" && lower <= "z") || (lower >= "0" && lower <= "9");
|
|
27
|
+
if (isAlnum) {
|
|
28
|
+
out += lower;
|
|
29
|
+
lastHyphen = false;
|
|
30
|
+
}
|
|
31
|
+
else if (!lastHyphen) {
|
|
32
|
+
out += "-";
|
|
33
|
+
lastHyphen = true;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
return out;
|
|
37
|
+
}
|
|
38
|
+
function stripEdgeHyphens(text) {
|
|
39
|
+
let start = 0;
|
|
40
|
+
let end = text.length;
|
|
41
|
+
while (start < end && text[start] === "-")
|
|
42
|
+
start += 1;
|
|
43
|
+
while (end > start && text[end - 1] === "-")
|
|
44
|
+
end -= 1;
|
|
45
|
+
return text.slice(start, end);
|
|
46
|
+
}
|
|
47
|
+
function truncateAtWordBoundary(text, maxLen) {
|
|
48
|
+
if (text.length <= maxLen)
|
|
49
|
+
return text;
|
|
50
|
+
let truncated = text.slice(0, maxLen);
|
|
51
|
+
const nextChar = text[maxLen];
|
|
52
|
+
if (nextChar !== "-") {
|
|
53
|
+
const lastHyphen = truncated.lastIndexOf("-");
|
|
54
|
+
if (lastHyphen > Math.floor(maxLen / 2)) {
|
|
55
|
+
truncated = truncated.slice(0, lastHyphen);
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
return stripEdgeHyphens(truncated);
|
|
59
|
+
}
|
|
60
|
+
/** Return a filesystem-safe slug (mirrors scripts/slug_normalize.py). */
|
|
61
|
+
export function normalizeSlug(text, maxLen = DEFAULT_MAX_LEN) {
|
|
62
|
+
if (!text)
|
|
63
|
+
return "untitled";
|
|
64
|
+
let limit = maxLen;
|
|
65
|
+
if (limit < 1)
|
|
66
|
+
limit = DEFAULT_MAX_LEN;
|
|
67
|
+
const decomposed = text.normalize("NFKD");
|
|
68
|
+
let asciiOnly = "";
|
|
69
|
+
for (const ch of decomposed) {
|
|
70
|
+
const code = ch.codePointAt(0) ?? 0;
|
|
71
|
+
if (code >= 0x0300 && code <= 0x036f)
|
|
72
|
+
continue;
|
|
73
|
+
if (code <= 0x7f)
|
|
74
|
+
asciiOnly += ch;
|
|
75
|
+
}
|
|
76
|
+
const lowered = asciiOnly.toLowerCase();
|
|
77
|
+
const stripped = stripCheckboxMarkers(lowered);
|
|
78
|
+
const hyphenated = collapseNonAlnum(stripped);
|
|
79
|
+
let trimmed = stripEdgeHyphens(hyphenated);
|
|
80
|
+
if (trimmed.length > limit)
|
|
81
|
+
trimmed = truncateAtWordBoundary(trimmed, limit);
|
|
82
|
+
if (!trimmed)
|
|
83
|
+
return "untitled";
|
|
84
|
+
if (WINDOWS_RESERVED.has(trimmed))
|
|
85
|
+
return `${trimmed}-scope`;
|
|
86
|
+
return trimmed;
|
|
87
|
+
}
|
|
88
|
+
/** Return a collision-free slug relative to `existing`. */
|
|
89
|
+
export function disambiguateSlug(slug, existing, options = {}) {
|
|
90
|
+
const maxLen = options.maxLen ?? DEFAULT_MAX_LEN;
|
|
91
|
+
const taken = existing instanceof Set ? existing : new Set(existing);
|
|
92
|
+
if (!taken.has(slug))
|
|
93
|
+
return slug;
|
|
94
|
+
const base = slug;
|
|
95
|
+
let n = 2;
|
|
96
|
+
while (n <= 10_000) {
|
|
97
|
+
const suffix = `-${n}`;
|
|
98
|
+
let candidate = base + suffix;
|
|
99
|
+
if (candidate.length > maxLen) {
|
|
100
|
+
const bodyBudget = Math.max(1, maxLen - suffix.length);
|
|
101
|
+
const trimmed = stripEdgeHyphens(base.slice(0, bodyBudget)) || base.slice(0, bodyBudget);
|
|
102
|
+
candidate = trimmed + suffix;
|
|
103
|
+
}
|
|
104
|
+
if (!taken.has(candidate))
|
|
105
|
+
return candidate;
|
|
106
|
+
n += 1;
|
|
107
|
+
}
|
|
108
|
+
throw new Error(`disambiguateSlug: unable to resolve collision for ${JSON.stringify(slug)} after ${n} attempts`);
|
|
109
|
+
}
|
|
110
|
+
//# sourceMappingURL=slug-normalize.js.map
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
export declare const AUTONOMY_LEVELS: readonly ["observe", "escalate", "execute"];
|
|
2
|
+
export declare const DEFAULT_AUTONOMY_LEVEL = "escalate";
|
|
3
|
+
export declare const AUTONOMY_ACTION_ADVANCE = "advance";
|
|
4
|
+
export declare const AUTONOMY_ACTION_HOLD = "hold";
|
|
5
|
+
export declare const AUTONOMY_ACTION_RETREAT = "retreat";
|
|
6
|
+
export declare const DEFAULT_AUTONOMY_ADVANCE_OVERRIDE_MAX = 0.05;
|
|
7
|
+
export declare const DEFAULT_AUTONOMY_RETREAT_OVERRIDE_RATE = 0.2;
|
|
8
|
+
export declare const DEFAULT_AUTONOMY_REWORK_BASELINE = 0.15;
|
|
9
|
+
export declare const DEFAULT_AUTONOMY_MIN_SAMPLE_SIZE = 20;
|
|
10
|
+
export interface AutonomyPolicy {
|
|
11
|
+
readonly enabled: boolean;
|
|
12
|
+
readonly default_level: string;
|
|
13
|
+
readonly min_sample_size: number;
|
|
14
|
+
readonly advance_override_max: number;
|
|
15
|
+
readonly retreat_override_rate: number;
|
|
16
|
+
readonly rework_baseline: number;
|
|
17
|
+
readonly gate_levels: Readonly<Record<string, string>>;
|
|
18
|
+
readonly source: "typed" | "default" | "default-on-error";
|
|
19
|
+
readonly error: string | null;
|
|
20
|
+
readonly configured: boolean;
|
|
21
|
+
}
|
|
22
|
+
export interface AutonomyRecommendation {
|
|
23
|
+
readonly current_level: string;
|
|
24
|
+
readonly recommended_level: string;
|
|
25
|
+
readonly action: string;
|
|
26
|
+
readonly rationale: string;
|
|
27
|
+
readonly gate_id: string | null;
|
|
28
|
+
readonly advisory: boolean;
|
|
29
|
+
}
|
|
30
|
+
/** Validate a plan.policy.autonomy payload. */
|
|
31
|
+
export declare function validateAutonomy(value: unknown): string[];
|
|
32
|
+
/** Resolve plan.policy.autonomy from PROJECT-DEFINITION. */
|
|
33
|
+
export declare function resolveAutonomy(projectRoot: string): AutonomyPolicy;
|
|
34
|
+
/** Recommend an autonomy-level flip from the dial signal (ADVISORY-ONLY). */
|
|
35
|
+
export declare function recommendAutonomyLevel(currentLevel: string, options: {
|
|
36
|
+
override_rate: number;
|
|
37
|
+
rework_rate: number;
|
|
38
|
+
sample_size: number;
|
|
39
|
+
p0_reversal?: boolean;
|
|
40
|
+
policy?: AutonomyPolicy;
|
|
41
|
+
gate_id?: string | null;
|
|
42
|
+
}): AutonomyRecommendation;
|
|
43
|
+
//# sourceMappingURL=autonomy.d.ts.map
|
|
@@ -0,0 +1,220 @@
|
|
|
1
|
+
import { loadProjectDefinition } from "./resolve.js";
|
|
2
|
+
export const AUTONOMY_LEVELS = ["observe", "escalate", "execute"];
|
|
3
|
+
export const DEFAULT_AUTONOMY_LEVEL = "escalate";
|
|
4
|
+
export const AUTONOMY_ACTION_ADVANCE = "advance";
|
|
5
|
+
export const AUTONOMY_ACTION_HOLD = "hold";
|
|
6
|
+
export const AUTONOMY_ACTION_RETREAT = "retreat";
|
|
7
|
+
export const DEFAULT_AUTONOMY_ADVANCE_OVERRIDE_MAX = 0.05;
|
|
8
|
+
export const DEFAULT_AUTONOMY_RETREAT_OVERRIDE_RATE = 0.2;
|
|
9
|
+
export const DEFAULT_AUTONOMY_REWORK_BASELINE = 0.15;
|
|
10
|
+
export const DEFAULT_AUTONOMY_MIN_SAMPLE_SIZE = 20;
|
|
11
|
+
function isNumber(value) {
|
|
12
|
+
return typeof value === "number" && !Number.isNaN(value) && typeof value !== "boolean";
|
|
13
|
+
}
|
|
14
|
+
function defaultAutonomyPolicy(source, error = null) {
|
|
15
|
+
return {
|
|
16
|
+
enabled: true,
|
|
17
|
+
default_level: DEFAULT_AUTONOMY_LEVEL,
|
|
18
|
+
min_sample_size: DEFAULT_AUTONOMY_MIN_SAMPLE_SIZE,
|
|
19
|
+
advance_override_max: DEFAULT_AUTONOMY_ADVANCE_OVERRIDE_MAX,
|
|
20
|
+
retreat_override_rate: DEFAULT_AUTONOMY_RETREAT_OVERRIDE_RATE,
|
|
21
|
+
rework_baseline: DEFAULT_AUTONOMY_REWORK_BASELINE,
|
|
22
|
+
gate_levels: {},
|
|
23
|
+
source,
|
|
24
|
+
error,
|
|
25
|
+
configured: source === "typed",
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
function validateAutonomyGates(gates) {
|
|
29
|
+
if (typeof gates !== "object" || gates === null || Array.isArray(gates)) {
|
|
30
|
+
return ["plan.policy.autonomy.gates must be an object mapping gate-id -> level"];
|
|
31
|
+
}
|
|
32
|
+
const errors = [];
|
|
33
|
+
for (const [gid, level] of Object.entries(gates)) {
|
|
34
|
+
if (typeof gid !== "string" || gid.trim().length === 0) {
|
|
35
|
+
errors.push("plan.policy.autonomy.gates keys must be non-empty gate-id strings");
|
|
36
|
+
}
|
|
37
|
+
if (typeof level !== "string" ||
|
|
38
|
+
!AUTONOMY_LEVELS.includes(level)) {
|
|
39
|
+
errors.push(`plan.policy.autonomy.gates[${JSON.stringify(gid)}] must be one of ${JSON.stringify([...AUTONOMY_LEVELS].sort())}; got ${String(level)}`);
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return errors;
|
|
43
|
+
}
|
|
44
|
+
/** Validate a plan.policy.autonomy payload. */
|
|
45
|
+
export function validateAutonomy(value) {
|
|
46
|
+
if (value === null || value === undefined) {
|
|
47
|
+
return [];
|
|
48
|
+
}
|
|
49
|
+
if (typeof value !== "object" || Array.isArray(value)) {
|
|
50
|
+
return [`plan.policy.autonomy must be an object; got ${typeof value}`];
|
|
51
|
+
}
|
|
52
|
+
const rec = value;
|
|
53
|
+
const errors = [];
|
|
54
|
+
if ("enabled" in rec && typeof rec.enabled !== "boolean") {
|
|
55
|
+
errors.push("plan.policy.autonomy.enabled must be a boolean");
|
|
56
|
+
}
|
|
57
|
+
if ("defaultLevel" in rec) {
|
|
58
|
+
const level = rec.defaultLevel;
|
|
59
|
+
if (typeof level !== "string" ||
|
|
60
|
+
!AUTONOMY_LEVELS.includes(level)) {
|
|
61
|
+
errors.push(`plan.policy.autonomy.defaultLevel must be one of ${JSON.stringify([...AUTONOMY_LEVELS].sort())}; got ${String(level)}`);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
if ("minSampleSize" in rec) {
|
|
65
|
+
const mss = rec.minSampleSize;
|
|
66
|
+
if (typeof mss !== "number" || !Number.isInteger(mss) || mss < 0) {
|
|
67
|
+
errors.push(`plan.policy.autonomy.minSampleSize must be a non-negative integer; got ${String(mss)}`);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
for (const key of ["advanceOverrideRateMax", "retreatOverrideRate", "reworkBaseline"]) {
|
|
71
|
+
if (key in rec) {
|
|
72
|
+
const rate = rec[key];
|
|
73
|
+
if (!isNumber(rate) || Number(rate) < 0 || Number(rate) > 1) {
|
|
74
|
+
errors.push(`plan.policy.autonomy.${key} must be a number between 0.0 and 1.0; got ${String(rate)}`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
if ("gates" in rec) {
|
|
79
|
+
errors.push(...validateAutonomyGates(rec.gates));
|
|
80
|
+
}
|
|
81
|
+
return errors;
|
|
82
|
+
}
|
|
83
|
+
function getPolicyBlock(data) {
|
|
84
|
+
const plan = data.plan;
|
|
85
|
+
if (typeof plan === "object" && plan !== null && !Array.isArray(plan)) {
|
|
86
|
+
const policy = plan.policy;
|
|
87
|
+
if (typeof policy === "object" && policy !== null && !Array.isArray(policy)) {
|
|
88
|
+
return policy;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
return {};
|
|
92
|
+
}
|
|
93
|
+
/** Resolve plan.policy.autonomy from PROJECT-DEFINITION. */
|
|
94
|
+
export function resolveAutonomy(projectRoot) {
|
|
95
|
+
const [data, err] = loadProjectDefinition(projectRoot);
|
|
96
|
+
if (data === null) {
|
|
97
|
+
return defaultAutonomyPolicy("default", err);
|
|
98
|
+
}
|
|
99
|
+
const policyBlock = getPolicyBlock(data);
|
|
100
|
+
if (!("autonomy" in policyBlock)) {
|
|
101
|
+
return defaultAutonomyPolicy("default");
|
|
102
|
+
}
|
|
103
|
+
const raw = policyBlock.autonomy;
|
|
104
|
+
const errors = validateAutonomy(raw);
|
|
105
|
+
if (errors.length > 0 || typeof raw !== "object" || raw === null || Array.isArray(raw)) {
|
|
106
|
+
return defaultAutonomyPolicy("default-on-error", errors[0] ?? "autonomy must be an object");
|
|
107
|
+
}
|
|
108
|
+
const rec = raw;
|
|
109
|
+
const gateLevels = {};
|
|
110
|
+
const gates = rec.gates;
|
|
111
|
+
if (typeof gates === "object" && gates !== null && !Array.isArray(gates)) {
|
|
112
|
+
for (const [gid, level] of Object.entries(gates)) {
|
|
113
|
+
if (typeof gid === "string" && typeof level === "string") {
|
|
114
|
+
gateLevels[gid] = level;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
enabled: typeof rec.enabled === "boolean" ? rec.enabled : true,
|
|
120
|
+
default_level: typeof rec.defaultLevel === "string" ? rec.defaultLevel : DEFAULT_AUTONOMY_LEVEL,
|
|
121
|
+
min_sample_size: typeof rec.minSampleSize === "number" && Number.isInteger(rec.minSampleSize)
|
|
122
|
+
? rec.minSampleSize
|
|
123
|
+
: DEFAULT_AUTONOMY_MIN_SAMPLE_SIZE,
|
|
124
|
+
advance_override_max: typeof rec.advanceOverrideRateMax === "number"
|
|
125
|
+
? rec.advanceOverrideRateMax
|
|
126
|
+
: DEFAULT_AUTONOMY_ADVANCE_OVERRIDE_MAX,
|
|
127
|
+
retreat_override_rate: typeof rec.retreatOverrideRate === "number"
|
|
128
|
+
? rec.retreatOverrideRate
|
|
129
|
+
: DEFAULT_AUTONOMY_RETREAT_OVERRIDE_RATE,
|
|
130
|
+
rework_baseline: typeof rec.reworkBaseline === "number"
|
|
131
|
+
? rec.reworkBaseline
|
|
132
|
+
: DEFAULT_AUTONOMY_REWORK_BASELINE,
|
|
133
|
+
gate_levels: gateLevels,
|
|
134
|
+
source: "typed",
|
|
135
|
+
error: null,
|
|
136
|
+
configured: true,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
function formatPct(value) {
|
|
140
|
+
return `${Math.round(value * 100)}%`;
|
|
141
|
+
}
|
|
142
|
+
/** Recommend an autonomy-level flip from the dial signal (ADVISORY-ONLY). */
|
|
143
|
+
export function recommendAutonomyLevel(currentLevel, options) {
|
|
144
|
+
const pol = options.policy ?? defaultAutonomyPolicy("default");
|
|
145
|
+
const gateId = options.gate_id ?? null;
|
|
146
|
+
const cur = AUTONOMY_LEVELS.includes(currentLevel)
|
|
147
|
+
? currentLevel
|
|
148
|
+
: pol.default_level;
|
|
149
|
+
const idx = AUTONOMY_LEVELS.indexOf(cur);
|
|
150
|
+
const overrideRate = options.override_rate;
|
|
151
|
+
const reworkRate = options.rework_rate;
|
|
152
|
+
const sampleSize = options.sample_size;
|
|
153
|
+
const p0Reversal = options.p0_reversal ?? false;
|
|
154
|
+
if (p0Reversal || overrideRate > pol.retreat_override_rate) {
|
|
155
|
+
const trigger = p0Reversal
|
|
156
|
+
? "P0 reversal observed"
|
|
157
|
+
: `override rate ${formatPct(overrideRate)} > retreat threshold ${formatPct(pol.retreat_override_rate)}`;
|
|
158
|
+
if (idx === 0) {
|
|
159
|
+
return {
|
|
160
|
+
current_level: cur,
|
|
161
|
+
recommended_level: cur,
|
|
162
|
+
action: AUTONOMY_ACTION_HOLD,
|
|
163
|
+
rationale: `hold at ${cur}: ${trigger} but already at the most conservative ` +
|
|
164
|
+
"level (Observe). ADVISORY: a human confirms.",
|
|
165
|
+
gate_id: gateId,
|
|
166
|
+
advisory: true,
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
const next = AUTONOMY_LEVELS[idx - 1] ?? cur;
|
|
170
|
+
return {
|
|
171
|
+
current_level: cur,
|
|
172
|
+
recommended_level: next,
|
|
173
|
+
action: AUTONOMY_ACTION_RETREAT,
|
|
174
|
+
rationale: `retreat: ${trigger} -- recommend ${next} ` +
|
|
175
|
+
"(restores required human clearances). ADVISORY: a human confirms.",
|
|
176
|
+
gate_id: gateId,
|
|
177
|
+
advisory: true,
|
|
178
|
+
};
|
|
179
|
+
}
|
|
180
|
+
const advanceOk = sampleSize >= pol.min_sample_size &&
|
|
181
|
+
overrideRate < pol.advance_override_max &&
|
|
182
|
+
reworkRate <= pol.rework_baseline;
|
|
183
|
+
if (advanceOk) {
|
|
184
|
+
const basis = `override ${formatPct(overrideRate)} < ${formatPct(pol.advance_override_max)}, ` +
|
|
185
|
+
`rework ${formatPct(reworkRate)} <= baseline ${formatPct(pol.rework_baseline)}, ` +
|
|
186
|
+
`sample ${sampleSize} >= ${pol.min_sample_size}`;
|
|
187
|
+
if (idx === AUTONOMY_LEVELS.length - 1) {
|
|
188
|
+
return {
|
|
189
|
+
current_level: cur,
|
|
190
|
+
recommended_level: cur,
|
|
191
|
+
action: AUTONOMY_ACTION_HOLD,
|
|
192
|
+
rationale: `hold at ${cur}: advance criteria met (${basis}) but already at ` +
|
|
193
|
+
"the most permissive level (Execute).",
|
|
194
|
+
gate_id: gateId,
|
|
195
|
+
advisory: true,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
const next = AUTONOMY_LEVELS[idx + 1] ?? cur;
|
|
199
|
+
return {
|
|
200
|
+
current_level: cur,
|
|
201
|
+
recommended_level: next,
|
|
202
|
+
action: AUTONOMY_ACTION_ADVANCE,
|
|
203
|
+
rationale: `advance: ${basis} -- recommend ${next} ` +
|
|
204
|
+
"(would reduce required human clearances). ADVISORY: a human " +
|
|
205
|
+
"confirms; no auto-ratchet.",
|
|
206
|
+
gate_id: gateId,
|
|
207
|
+
advisory: true,
|
|
208
|
+
};
|
|
209
|
+
}
|
|
210
|
+
return {
|
|
211
|
+
current_level: cur,
|
|
212
|
+
recommended_level: cur,
|
|
213
|
+
action: AUTONOMY_ACTION_HOLD,
|
|
214
|
+
rationale: `hold at ${cur}: override ${formatPct(overrideRate)}, rework ${formatPct(reworkRate)}, ` +
|
|
215
|
+
`sample ${sampleSize} -- advance criteria not met, no retreat trigger.`,
|
|
216
|
+
gate_id: gateId,
|
|
217
|
+
advisory: true,
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
//# sourceMappingURL=autonomy.js.map
|