codictator 0.0.0-stage → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +9 -0
- package/README.md +4 -2
- package/dist/builtin-packs/core/fixtures/agent-assets-present/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/agent-assets-present/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/arch-boundaries/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/arch-boundaries/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/arch-module-mapped/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/arch-module-mapped/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/arch-module-size/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/arch-module-size/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/arch-no-cycles/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/arch-no-cycles/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/arch-profile-declared/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/arch-profile-declared/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/arch-public-entry/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/arch-public-entry/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/branch-protection/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/branch-protection/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/bug-registry/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/bug-registry/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/bug-rows-immutable/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/bug-rows-immutable/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/ci-actions-pinned/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/ci-actions-pinned/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/ci-present/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/ci-present/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/ci-required-check/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/ci-required-check/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/compiler-strict/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/compiler-strict/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/complexity/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/complexity/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/context-hard-band/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/context-hard-band/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/context-soft-band/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/context-soft-band/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/conventional-commit/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/conventional-commit/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/coverage-floor/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/coverage-floor/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/custom-pack-selftest/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/custom-pack-selftest/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/dangerous-shell/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/dangerous-shell/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/dead-code/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/dead-code/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/dep-exact-pin/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/dep-exact-pin/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/dep-latest-stable/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/dep-latest-stable/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/dep-license/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/dep-license/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/dep-lockfile/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/dep-lockfile/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/dep-new-needs-reason/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/dep-new-needs-reason/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/dep-no-deprecated/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/dep-no-deprecated/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/dep-no-vulnerable/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/dep-no-vulnerable/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/dep-one-per-capability/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/dep-one-per-capability/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/diagnose-before-fix/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/diagnose-before-fix/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/doc-breadth/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/doc-breadth/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/doc-density/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/doc-density/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/doc-links-valid/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/doc-links-valid/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/doc-no-corpus-counts/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/doc-no-corpus-counts/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/doc-no-inline-changelog/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/doc-no-inline-changelog/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/doc-one-level/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/doc-one-level/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/doc-placement/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/doc-placement/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/doc-router-leaf/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/doc-router-leaf/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/doc-single-owner/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/doc-single-owner/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/doc-size/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/doc-size/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/duplication/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/duplication/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/engine-version-match/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/engine-version-match/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/file-naming/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/file-naming/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/file-size/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/file-size/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/function-size/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/function-size/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/graph-before-scan/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/graph-before-scan/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/guardrail-manifest/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/guardrail-manifest/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/history-append-only/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/history-append-only/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/history-entry/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/history-entry/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/history-entry-complete/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/history-entry-complete/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/hooks-active/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/hooks-active/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/loop-breaker/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/loop-breaker/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/max-file-bytes/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/max-file-bytes/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/mcp-declared/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/mcp-declared/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/no-assertion-loss/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/no-assertion-loss/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/no-baseline-raise/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/no-baseline-raise/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/no-bypass/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/no-bypass/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/no-fixture-shrink/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/no-fixture-shrink/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/no-guard-removal/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/no-guard-removal/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/no-new-suppressions/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/no-new-suppressions/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/no-secret-reads/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/no-secret-reads/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/no-secrets/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/no-secrets/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/no-skipped-tests/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/no-skipped-tests/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/no-speculative-abstraction/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/no-speculative-abstraction/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/no-threshold-lowering/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/no-threshold-lowering/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/perf-budgets/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/perf-budgets/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/ratchet-touched-improves/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/ratchet-touched-improves/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/read-dedupe/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/read-dedupe/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/red-before-green/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/red-before-green/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/regression-test-for-fix/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/regression-test-for-fix/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/remediation-step-size/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/remediation-step-size/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/repo-hygiene/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/repo-hygiene/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/review-gate/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/review-gate/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/review-round-cap/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/review-round-cap/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/session-tool-call-limit/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/session-tool-call-limit/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/spec-trace/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/spec-trace/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/test-command-intact/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/test-command-intact/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/test-kinds-by-scenario/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/test-kinds-by-scenario/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/waivers-valid/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/waivers-valid/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/workflow-gates/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/workflow-gates/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/write-confinement/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/write-confinement/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/writes-within-plan/passing/basic/case.json +10 -0
- package/dist/builtin-packs/core/fixtures/writes-within-plan/violating/basic/case.json +10 -0
- package/dist/builtin-packs/core/index.ts +8 -0
- package/dist/builtin-packs/core/pack.json +2057 -0
- package/dist/builtin-packs/dotnet/index.ts +47 -0
- package/dist/builtin-packs/python/extract.ts +245 -0
- package/dist/builtin-packs/python/fixtures/lint/passing/basic/case.json +10 -0
- package/dist/builtin-packs/python/fixtures/lint/violating/basic/case.json +10 -0
- package/dist/builtin-packs/python/fixtures/no-phantom-import/passing/basic/case.json +12 -0
- package/dist/builtin-packs/python/fixtures/no-phantom-import/violating/basic/case.json +11 -0
- package/dist/builtin-packs/python/fixtures/security-patterns/passing/basic/case.json +10 -0
- package/dist/builtin-packs/python/fixtures/security-patterns/violating/basic/case.json +10 -0
- package/dist/builtin-packs/python/fixtures/typecheck/passing/basic/case.json +10 -0
- package/dist/builtin-packs/python/fixtures/typecheck/violating/basic/case.json +10 -0
- package/dist/builtin-packs/python/index.ts +57 -0
- package/dist/builtin-packs/python/pack.json +116 -0
- package/dist/builtin-packs/typescript/extract-clauses.ts +153 -0
- package/dist/builtin-packs/typescript/extract-literals.ts +111 -0
- package/dist/builtin-packs/typescript/extract-words.ts +79 -0
- package/dist/builtin-packs/typescript/extract.ts +77 -0
- package/dist/builtin-packs/typescript/fixtures/lint/passing/basic/case.json +10 -0
- package/dist/builtin-packs/typescript/fixtures/lint/violating/basic/case.json +10 -0
- package/dist/builtin-packs/typescript/fixtures/no-phantom-import/passing/basic/case.json +10 -0
- package/dist/builtin-packs/typescript/fixtures/no-phantom-import/passing/host-provided/case.json +10 -0
- package/dist/builtin-packs/typescript/fixtures/no-phantom-import/violating/basic/case.json +10 -0
- package/dist/builtin-packs/typescript/fixtures/no-phantom-import/violating/host-provided/case.json +10 -0
- package/dist/builtin-packs/typescript/fixtures/security-patterns/passing/basic/case.json +10 -0
- package/dist/builtin-packs/typescript/fixtures/security-patterns/violating/basic/case.json +10 -0
- package/dist/builtin-packs/typescript/fixtures/typecheck/passing/basic/case.json +10 -0
- package/dist/builtin-packs/typescript/fixtures/typecheck/violating/basic/case.json +10 -0
- package/dist/builtin-packs/typescript/index.ts +85 -0
- package/dist/builtin-packs/typescript/lex.ts +199 -0
- package/dist/builtin-packs/typescript/measures-exports.ts +173 -0
- package/dist/builtin-packs/typescript/measures-functions.ts +138 -0
- package/dist/builtin-packs/typescript/measures.ts +10 -0
- package/dist/builtin-packs/typescript/naming.ts +47 -0
- package/dist/builtin-packs/typescript/pack.json +169 -0
- package/dist/builtin-packs/typescript/patterns.ts +93 -0
- package/dist/builtin-packs/typescript/resolve.ts +224 -0
- package/dist/builtin-packs/typescript/strict.ts +177 -0
- package/dist/builtin-packs/typescript/titles.ts +184 -0
- package/dist/cli/baseline.d.ts +3 -0
- package/dist/cli/baseline.js +67 -0
- package/dist/cli/ci-bot-change.d.ts +3 -0
- package/dist/cli/ci-bot-change.js +54 -0
- package/dist/cli/ci-range.d.ts +18 -0
- package/dist/cli/ci-range.js +228 -0
- package/dist/cli/ci-summary.d.ts +3 -0
- package/dist/cli/ci-summary.js +45 -0
- package/dist/cli/ci.d.ts +4 -0
- package/dist/cli/ci.js +195 -0
- package/dist/cli/commands.d.ts +5 -0
- package/dist/cli/commands.js +39 -0
- package/dist/cli/deps.d.ts +3 -0
- package/dist/cli/deps.js +115 -0
- package/dist/cli/drift.d.ts +11 -0
- package/dist/cli/drift.js +91 -0
- package/dist/cli/evaluate.d.ts +20 -0
- package/dist/cli/evaluate.js +213 -0
- package/dist/cli/gate-scope.d.ts +10 -0
- package/dist/cli/gate-scope.js +82 -0
- package/dist/cli/git-hook.d.ts +3 -0
- package/dist/cli/git-hook.js +179 -0
- package/dist/cli/guardrail.d.ts +5 -0
- package/dist/cli/guardrail.js +190 -0
- package/dist/cli/index.d.ts +12 -0
- package/dist/cli/index.js +198 -0
- package/dist/cli/init-plan.d.ts +23 -0
- package/dist/cli/init-plan.js +135 -0
- package/dist/cli/init.d.ts +3 -0
- package/dist/cli/init.js +122 -0
- package/dist/cli/inspect-status.d.ts +8 -0
- package/dist/cli/inspect-status.js +164 -0
- package/dist/cli/inspect.d.ts +5 -0
- package/dist/cli/inspect.js +98 -0
- package/dist/cli/main.d.ts +2 -0
- package/dist/cli/main.js +60 -0
- package/dist/cli/pack-adapters.d.ts +3 -0
- package/dist/cli/pack-adapters.js +81 -0
- package/dist/cli/packs.d.ts +6 -0
- package/dist/cli/packs.js +131 -0
- package/dist/cli/plan-launcher.d.ts +1 -0
- package/dist/cli/plan-launcher.js +222 -0
- package/dist/cli/plan.d.ts +25 -0
- package/dist/cli/plan.js +121 -0
- package/dist/cli/proofs-test.d.ts +3 -0
- package/dist/cli/proofs-test.js +77 -0
- package/dist/cli/proofs.d.ts +3 -0
- package/dist/cli/proofs.js +168 -0
- package/dist/cli/remediation.d.ts +3 -0
- package/dist/cli/remediation.js +107 -0
- package/dist/cli/report.d.ts +4 -0
- package/dist/cli/report.js +93 -0
- package/dist/cli/serve-eval.d.ts +2 -0
- package/dist/cli/serve-eval.js +165 -0
- package/dist/cli/serve-log.d.ts +2 -0
- package/dist/cli/serve-log.js +150 -0
- package/dist/cli/serve-methods.d.ts +2 -0
- package/dist/cli/serve-methods.js +181 -0
- package/dist/cli/serve-protocol.d.ts +35 -0
- package/dist/cli/serve-protocol.js +97 -0
- package/dist/cli/serve-run.d.ts +9 -0
- package/dist/cli/serve-run.js +135 -0
- package/dist/cli/serve-server.d.ts +5 -0
- package/dist/cli/serve-server.js +120 -0
- package/dist/cli/serve-shared.d.ts +34 -0
- package/dist/cli/serve-shared.js +20 -0
- package/dist/cli/serve-status.d.ts +2 -0
- package/dist/cli/serve-status.js +130 -0
- package/dist/cli/serve-transport.d.ts +2 -0
- package/dist/cli/serve-transport.js +114 -0
- package/dist/cli/shared.d.ts +35 -0
- package/dist/cli/shared.js +181 -0
- package/dist/cli/task-advance.d.ts +3 -0
- package/dist/cli/task-advance.js +144 -0
- package/dist/cli/task-phases.d.ts +3 -0
- package/dist/cli/task-phases.js +77 -0
- package/dist/cli/tasks.d.ts +12 -0
- package/dist/cli/tasks.js +176 -0
- package/dist/cli/transparency.d.ts +4 -0
- package/dist/cli/transparency.js +197 -0
- package/dist/cli/waivers.d.ts +3 -0
- package/dist/cli/waivers.js +195 -0
- package/dist/features/adapters/claude-code.d.ts +8 -0
- package/dist/features/adapters/claude-code.js +198 -0
- package/dist/features/adapters/claude-shaped.d.ts +3 -0
- package/dist/features/adapters/claude-shaped.js +176 -0
- package/dist/features/adapters/codex-cli.d.ts +8 -0
- package/dist/features/adapters/codex-cli.js +180 -0
- package/dist/features/adapters/contract.d.ts +104 -0
- package/dist/features/adapters/contract.js +17 -0
- package/dist/features/adapters/copilot-capabilities.d.ts +2 -0
- package/dist/features/adapters/copilot-capabilities.js +46 -0
- package/dist/features/adapters/copilot.d.ts +8 -0
- package/dist/features/adapters/copilot.js +207 -0
- package/dist/features/adapters/cursor.d.ts +8 -0
- package/dist/features/adapters/cursor.js +245 -0
- package/dist/features/adapters/custom-event.d.ts +3 -0
- package/dist/features/adapters/custom-event.js +180 -0
- package/dist/features/adapters/custom-load.d.ts +3 -0
- package/dist/features/adapters/custom-load.js +185 -0
- package/dist/features/adapters/custom-shape.d.ts +21 -0
- package/dist/features/adapters/custom-shape.js +87 -0
- package/dist/features/adapters/custom.d.ts +9 -0
- package/dist/features/adapters/custom.js +130 -0
- package/dist/features/adapters/effective-cache.d.ts +5 -0
- package/dist/features/adapters/effective-cache.js +45 -0
- package/dist/features/adapters/gemini-cli.d.ts +6 -0
- package/dist/features/adapters/gemini-cli.js +160 -0
- package/dist/features/adapters/gemini-tables.d.ts +7 -0
- package/dist/features/adapters/gemini-tables.js +104 -0
- package/dist/features/adapters/hook-dispatch.d.ts +7 -0
- package/dist/features/adapters/hook-dispatch.js +97 -0
- package/dist/features/adapters/hook-injection.d.ts +12 -0
- package/dist/features/adapters/hook-injection.js +75 -0
- package/dist/features/adapters/hook-load.d.ts +15 -0
- package/dist/features/adapters/hook-load.js +152 -0
- package/dist/features/adapters/hook-scope.d.ts +3 -0
- package/dist/features/adapters/hook-scope.js +54 -0
- package/dist/features/adapters/index.d.ts +22 -0
- package/dist/features/adapters/index.js +86 -0
- package/dist/features/adapters/muse-code.d.ts +8 -0
- package/dist/features/adapters/muse-code.js +223 -0
- package/dist/features/adapters/opencode-bridge.d.ts +1 -0
- package/dist/features/adapters/opencode-bridge.js +230 -0
- package/dist/features/adapters/opencode-capabilities.d.ts +2 -0
- package/dist/features/adapters/opencode-capabilities.js +47 -0
- package/dist/features/adapters/opencode-parse.d.ts +3 -0
- package/dist/features/adapters/opencode-parse.js +137 -0
- package/dist/features/adapters/opencode-tables.d.ts +5 -0
- package/dist/features/adapters/opencode-tables.js +63 -0
- package/dist/features/adapters/opencode.d.ts +10 -0
- package/dist/features/adapters/opencode.js +97 -0
- package/dist/features/adapters/runtime.d.ts +25 -0
- package/dist/features/adapters/runtime.js +148 -0
- package/dist/features/adapters/universal.d.ts +7 -0
- package/dist/features/adapters/universal.js +89 -0
- package/dist/features/arch/arch-profiles.d.ts +3 -0
- package/dist/features/arch/arch-profiles.js +5 -0
- package/dist/features/arch/checks.d.ts +25 -0
- package/dist/features/arch/checks.js +173 -0
- package/dist/features/arch/codictator-modules.d.ts +4 -0
- package/dist/features/arch/codictator-modules.js +180 -0
- package/dist/features/arch/cycle-walk.d.ts +1 -0
- package/dist/features/arch/cycle-walk.js +36 -0
- package/dist/features/arch/edge-checks.d.ts +13 -0
- package/dist/features/arch/edge-checks.js +186 -0
- package/dist/features/arch/graph.d.ts +32 -0
- package/dist/features/arch/graph.js +202 -0
- package/dist/features/arch/index.d.ts +29 -0
- package/dist/features/arch/index.js +16 -0
- package/dist/features/arch/layer-rules.d.ts +3 -0
- package/dist/features/arch/layer-rules.js +38 -0
- package/dist/features/arch/module-map-validation.d.ts +3 -0
- package/dist/features/arch/module-map-validation.js +30 -0
- package/dist/features/arch/module-mapping.d.ts +15 -0
- package/dist/features/arch/module-mapping.js +184 -0
- package/dist/features/arch/profiles.d.ts +4 -0
- package/dist/features/arch/profiles.js +8 -0
- package/dist/features/audit/append.d.ts +26 -0
- package/dist/features/audit/append.js +205 -0
- package/dist/features/audit/explain-table-tail.d.ts +2 -0
- package/dist/features/audit/explain-table-tail.js +29 -0
- package/dist/features/audit/explain-table.d.ts +8 -0
- package/dist/features/audit/explain-table.js +48 -0
- package/dist/features/audit/explain.d.ts +7 -0
- package/dist/features/audit/explain.js +87 -0
- package/dist/features/audit/index.d.ts +37 -0
- package/dist/features/audit/index.js +17 -0
- package/dist/features/audit/injection-event.d.ts +11 -0
- package/dist/features/audit/injection-event.js +17 -0
- package/dist/features/audit/read.d.ts +8 -0
- package/dist/features/audit/read.js +62 -0
- package/dist/features/audit/summarize.d.ts +1 -0
- package/dist/features/audit/summarize.js +41 -0
- package/dist/features/audit/surfaces.d.ts +47 -0
- package/dist/features/audit/surfaces.js +165 -0
- package/dist/features/audit/token-saver-evidence.d.ts +14 -0
- package/dist/features/audit/token-saver-evidence.js +85 -0
- package/dist/features/ci/changes.d.ts +28 -0
- package/dist/features/ci/changes.js +88 -0
- package/dist/features/ci/index.d.ts +22 -0
- package/dist/features/ci/index.js +75 -0
- package/dist/features/ci/protection-read.d.ts +3 -0
- package/dist/features/ci/protection-read.js +264 -0
- package/dist/features/ci/protection.d.ts +25 -0
- package/dist/features/ci/protection.js +77 -0
- package/dist/features/ci/workflow.d.ts +23 -0
- package/dist/features/ci/workflow.js +261 -0
- package/dist/features/config/human.d.ts +4 -0
- package/dist/features/config/human.js +31 -0
- package/dist/features/config/index.d.ts +37 -0
- package/dist/features/config/index.js +129 -0
- package/dist/features/config/pack-data.d.ts +18 -0
- package/dist/features/config/pack-data.js +116 -0
- package/dist/features/config/validate-sections.d.ts +6 -0
- package/dist/features/config/validate-sections.js +198 -0
- package/dist/features/config/validate-shared.d.ts +8 -0
- package/dist/features/config/validate-shared.js +69 -0
- package/dist/features/config/validate-tunables.d.ts +1 -0
- package/dist/features/config/validate-tunables.js +89 -0
- package/dist/features/config/validate.d.ts +2 -0
- package/dist/features/config/validate.js +57 -0
- package/dist/features/deps/bots.d.ts +5 -0
- package/dist/features/deps/bots.js +39 -0
- package/dist/features/deps/capabilities.d.ts +3 -0
- package/dist/features/deps/capabilities.js +91 -0
- package/dist/features/deps/check.d.ts +18 -0
- package/dist/features/deps/check.js +70 -0
- package/dist/features/deps/dependabot.d.ts +10 -0
- package/dist/features/deps/dependabot.js +154 -0
- package/dist/features/deps/eval.d.ts +41 -0
- package/dist/features/deps/eval.js +24 -0
- package/dist/features/deps/fields.d.ts +4 -0
- package/dist/features/deps/fields.js +18 -0
- package/dist/features/deps/index.d.ts +67 -0
- package/dist/features/deps/index.js +27 -0
- package/dist/features/deps/lockfile.d.ts +8 -0
- package/dist/features/deps/lockfile.js +87 -0
- package/dist/features/deps/npm.d.ts +22 -0
- package/dist/features/deps/npm.js +172 -0
- package/dist/features/deps/npmrc.d.ts +12 -0
- package/dist/features/deps/npmrc.js +50 -0
- package/dist/features/deps/nuget.d.ts +25 -0
- package/dist/features/deps/nuget.js +112 -0
- package/dist/features/deps/osv-ranges.d.ts +12 -0
- package/dist/features/deps/osv-ranges.js +83 -0
- package/dist/features/deps/osv.d.ts +16 -0
- package/dist/features/deps/osv.js +144 -0
- package/dist/features/deps/pypi-pyproject.d.ts +7 -0
- package/dist/features/deps/pypi-pyproject.js +118 -0
- package/dist/features/deps/pypi.d.ts +29 -0
- package/dist/features/deps/pypi.js +137 -0
- package/dist/features/deps/registry.d.ts +29 -0
- package/dist/features/deps/registry.js +147 -0
- package/dist/features/deps/renovate.d.ts +15 -0
- package/dist/features/deps/renovate.js +98 -0
- package/dist/features/deps/selection.d.ts +20 -0
- package/dist/features/deps/selection.js +150 -0
- package/dist/features/deps/snapshot-verdicts.d.ts +16 -0
- package/dist/features/deps/snapshot-verdicts.js +184 -0
- package/dist/features/deps/stable.d.ts +19 -0
- package/dist/features/deps/stable.js +106 -0
- package/dist/features/deps/step-size.d.ts +7 -0
- package/dist/features/deps/step-size.js +24 -0
- package/dist/features/deps/upgrade.d.ts +35 -0
- package/dist/features/deps/upgrade.js +114 -0
- package/dist/features/deps/verdicts.d.ts +21 -0
- package/dist/features/deps/verdicts.js +219 -0
- package/dist/features/engine/evaluate.d.ts +12 -0
- package/dist/features/engine/evaluate.js +165 -0
- package/dist/features/engine/index.d.ts +21 -0
- package/dist/features/engine/index.js +24 -0
- package/dist/features/engine/message.d.ts +3 -0
- package/dist/features/engine/message.js +69 -0
- package/dist/features/engine/ratchet.d.ts +1 -0
- package/dist/features/engine/ratchet.js +63 -0
- package/dist/features/engine/run-enforcer.d.ts +4 -0
- package/dist/features/engine/run-enforcer.js +82 -0
- package/dist/features/engine/waivers.d.ts +23 -0
- package/dist/features/engine/waivers.js +169 -0
- package/dist/features/generator/draft.d.ts +7 -0
- package/dist/features/generator/draft.js +148 -0
- package/dist/features/generator/index.d.ts +22 -0
- package/dist/features/generator/index.js +8 -0
- package/dist/features/generator/llm-draft.d.ts +3 -0
- package/dist/features/generator/llm-draft.js +93 -0
- package/dist/features/generator/prompt.d.ts +25 -0
- package/dist/features/generator/prompt.js +105 -0
- package/dist/features/generator/self-test.d.ts +12 -0
- package/dist/features/generator/self-test.js +65 -0
- package/dist/features/generator/templates.d.ts +26 -0
- package/dist/features/generator/templates.js +177 -0
- package/dist/features/integrity/drift.d.ts +19 -0
- package/dist/features/integrity/drift.js +168 -0
- package/dist/features/integrity/hooks.d.ts +19 -0
- package/dist/features/integrity/hooks.js +54 -0
- package/dist/features/integrity/index.d.ts +10 -0
- package/dist/features/integrity/index.js +14 -0
- package/dist/features/integrity/manifest.d.ts +15 -0
- package/dist/features/integrity/manifest.js +26 -0
- package/dist/features/integrity/self-protection.d.ts +12 -0
- package/dist/features/integrity/self-protection.js +144 -0
- package/dist/features/llm/attempt.d.ts +17 -0
- package/dist/features/llm/attempt.js +99 -0
- package/dist/features/llm/errors.d.ts +5 -0
- package/dist/features/llm/errors.js +18 -0
- package/dist/features/llm/index.d.ts +23 -0
- package/dist/features/llm/index.js +46 -0
- package/dist/features/llm/presets.d.ts +25 -0
- package/dist/features/llm/presets.js +159 -0
- package/dist/features/llm/wire.d.ts +17 -0
- package/dist/features/llm/wire.js +163 -0
- package/dist/features/packs/accept.d.ts +7 -0
- package/dist/features/packs/accept.js +73 -0
- package/dist/features/packs/enforcers/arch-guards.d.ts +12 -0
- package/dist/features/packs/enforcers/arch-guards.js +193 -0
- package/dist/features/packs/enforcers/binding.d.ts +31 -0
- package/dist/features/packs/enforcers/binding.js +157 -0
- package/dist/features/packs/enforcers/ci-guards.d.ts +10 -0
- package/dist/features/packs/enforcers/ci-guards.js +128 -0
- package/dist/features/packs/enforcers/code-health.d.ts +9 -0
- package/dist/features/packs/enforcers/code-health.js +180 -0
- package/dist/features/packs/enforcers/code.d.ts +5 -0
- package/dist/features/packs/enforcers/code.js +128 -0
- package/dist/features/packs/enforcers/command-forbid.d.ts +8 -0
- package/dist/features/packs/enforcers/command-forbid.js +61 -0
- package/dist/features/packs/enforcers/deps-guards.d.ts +15 -0
- package/dist/features/packs/enforcers/deps-guards.js +235 -0
- package/dist/features/packs/enforcers/deps-policy-guards.d.ts +9 -0
- package/dist/features/packs/enforcers/deps-policy-guards.js +135 -0
- package/dist/features/packs/enforcers/docs-guards-measures.d.ts +9 -0
- package/dist/features/packs/enforcers/docs-guards-measures.js +117 -0
- package/dist/features/packs/enforcers/docs-guards.d.ts +11 -0
- package/dist/features/packs/enforcers/docs-guards.js +180 -0
- package/dist/features/packs/enforcers/external-attribute.d.ts +18 -0
- package/dist/features/packs/enforcers/external-attribute.js +122 -0
- package/dist/features/packs/enforcers/external-bind.d.ts +4 -0
- package/dist/features/packs/enforcers/external-bind.js +172 -0
- package/dist/features/packs/enforcers/external-check.d.ts +7 -0
- package/dist/features/packs/enforcers/external-check.js +131 -0
- package/dist/features/packs/enforcers/external-output.d.ts +30 -0
- package/dist/features/packs/enforcers/external-output.js +144 -0
- package/dist/features/packs/enforcers/external-probe.d.ts +4 -0
- package/dist/features/packs/enforcers/external-probe.js +65 -0
- package/dist/features/packs/enforcers/external-runs.d.ts +33 -0
- package/dist/features/packs/enforcers/external-runs.js +162 -0
- package/dist/features/packs/enforcers/external-sarif.d.ts +3 -0
- package/dist/features/packs/enforcers/external-sarif.js +103 -0
- package/dist/features/packs/enforcers/external.d.ts +39 -0
- package/dist/features/packs/enforcers/external.js +11 -0
- package/dist/features/packs/enforcers/gate-guards.d.ts +12 -0
- package/dist/features/packs/enforcers/gate-guards.js +170 -0
- package/dist/features/packs/enforcers/health-abstraction.d.ts +5 -0
- package/dist/features/packs/enforcers/health-abstraction.js +126 -0
- package/dist/features/packs/enforcers/health-duplication.d.ts +5 -0
- package/dist/features/packs/enforcers/health-duplication.js +197 -0
- package/dist/features/packs/enforcers/health-lex-imports.d.ts +5 -0
- package/dist/features/packs/enforcers/health-lex-imports.js +225 -0
- package/dist/features/packs/enforcers/health-lex-template.d.ts +10 -0
- package/dist/features/packs/enforcers/health-lex-template.js +67 -0
- package/dist/features/packs/enforcers/health-lex.d.ts +8 -0
- package/dist/features/packs/enforcers/health-lex.js +227 -0
- package/dist/features/packs/enforcers/health-markers.d.ts +3 -0
- package/dist/features/packs/enforcers/health-markers.js +31 -0
- package/dist/features/packs/enforcers/health-measures.d.ts +24 -0
- package/dist/features/packs/enforcers/health-measures.js +214 -0
- package/dist/features/packs/enforcers/health-refs.d.ts +6 -0
- package/dist/features/packs/enforcers/health-refs.js +61 -0
- package/dist/features/packs/enforcers/integrity-guards-repo.d.ts +6 -0
- package/dist/features/packs/enforcers/integrity-guards-repo.js +189 -0
- package/dist/features/packs/enforcers/integrity-guards.d.ts +12 -0
- package/dist/features/packs/enforcers/integrity-guards.js +202 -0
- package/dist/features/packs/enforcers/jsonkey.d.ts +13 -0
- package/dist/features/packs/enforcers/jsonkey.js +95 -0
- package/dist/features/packs/enforcers/parametric.d.ts +7 -0
- package/dist/features/packs/enforcers/parametric.js +138 -0
- package/dist/features/packs/enforcers/pattern.d.ts +11 -0
- package/dist/features/packs/enforcers/pattern.js +88 -0
- package/dist/features/packs/enforcers/placement.d.ts +10 -0
- package/dist/features/packs/enforcers/placement.js +54 -0
- package/dist/features/packs/enforcers/py-checks.d.ts +7 -0
- package/dist/features/packs/enforcers/py-checks.js +131 -0
- package/dist/features/packs/enforcers/py-lex.d.ts +10 -0
- package/dist/features/packs/enforcers/py-lex.js +271 -0
- package/dist/features/packs/enforcers/py-phantom.d.ts +6 -0
- package/dist/features/packs/enforcers/py-phantom.js +163 -0
- package/dist/features/packs/enforcers/py-pins.d.ts +16 -0
- package/dist/features/packs/enforcers/py-pins.js +184 -0
- package/dist/features/packs/enforcers/py-security-patterns.d.ts +18 -0
- package/dist/features/packs/enforcers/py-security-patterns.js +70 -0
- package/dist/features/packs/enforcers/records-guards.d.ts +12 -0
- package/dist/features/packs/enforcers/records-guards.js +178 -0
- package/dist/features/packs/enforcers/remediation-guards.d.ts +6 -0
- package/dist/features/packs/enforcers/remediation-guards.js +42 -0
- package/dist/features/packs/enforcers/required.d.ts +10 -0
- package/dist/features/packs/enforcers/required.js +65 -0
- package/dist/features/packs/enforcers/secret-scan.d.ts +22 -0
- package/dist/features/packs/enforcers/secret-scan.js +179 -0
- package/dist/features/packs/enforcers/shell-analyse.d.ts +14 -0
- package/dist/features/packs/enforcers/shell-analyse.js +105 -0
- package/dist/features/packs/enforcers/sizes.d.ts +10 -0
- package/dist/features/packs/enforcers/sizes.js +82 -0
- package/dist/features/packs/enforcers/steering-guards.d.ts +11 -0
- package/dist/features/packs/enforcers/steering-guards.js +162 -0
- package/dist/features/packs/enforcers/testing-guards.d.ts +10 -0
- package/dist/features/packs/enforcers/testing-guards.js +118 -0
- package/dist/features/packs/enforcers/ts-checks.d.ts +7 -0
- package/dist/features/packs/enforcers/ts-checks.js +101 -0
- package/dist/features/packs/enforcers/ts-phantom-host.d.ts +11 -0
- package/dist/features/packs/enforcers/ts-phantom-host.js +155 -0
- package/dist/features/packs/enforcers/ts-phantom.d.ts +6 -0
- package/dist/features/packs/enforcers/ts-phantom.js +117 -0
- package/dist/features/packs/enforcers/ts-security-patterns.d.ts +18 -0
- package/dist/features/packs/enforcers/ts-security-patterns.js +93 -0
- package/dist/features/packs/enforcers/workflow-guards.d.ts +10 -0
- package/dist/features/packs/enforcers/workflow-guards.js +117 -0
- package/dist/features/packs/enforcers/write-confine.d.ts +13 -0
- package/dist/features/packs/enforcers/write-confine.js +131 -0
- package/dist/features/packs/hashes.d.ts +6 -0
- package/dist/features/packs/hashes.js +84 -0
- package/dist/features/packs/index.d.ts +22 -0
- package/dist/features/packs/index.js +15 -0
- package/dist/features/packs/loader.d.ts +13 -0
- package/dist/features/packs/loader.js +205 -0
- package/dist/features/packs/manifest.d.ts +17 -0
- package/dist/features/packs/manifest.js +180 -0
- package/dist/features/packs/params.d.ts +2 -0
- package/dist/features/packs/params.js +90 -0
- package/dist/features/packs/registry.d.ts +11 -0
- package/dist/features/packs/registry.js +136 -0
- package/dist/features/packs/selftest.d.ts +3 -0
- package/dist/features/packs/selftest.js +127 -0
- package/dist/features/records/bug-grammar.d.ts +17 -0
- package/dist/features/records/bug-grammar.js +128 -0
- package/dist/features/records/bug-registry.d.ts +9 -0
- package/dist/features/records/bug-registry.js +67 -0
- package/dist/features/records/bug-rows-immutable.d.ts +3 -0
- package/dist/features/records/bug-rows-immutable.js +52 -0
- package/dist/features/records/bugs.d.ts +2 -0
- package/dist/features/records/bugs.js +24 -0
- package/dist/features/records/docs-lines.d.ts +16 -0
- package/dist/features/records/docs-lines.js +36 -0
- package/dist/features/records/docs-prose.d.ts +14 -0
- package/dist/features/records/docs-prose.js +252 -0
- package/dist/features/records/docs-structure.d.ts +17 -0
- package/dist/features/records/docs-structure.js +223 -0
- package/dist/features/records/docs.d.ts +9 -0
- package/dist/features/records/docs.js +238 -0
- package/dist/features/records/history-checks.d.ts +6 -0
- package/dist/features/records/history-checks.js +94 -0
- package/dist/features/records/history-parse.d.ts +16 -0
- package/dist/features/records/history-parse.js +101 -0
- package/dist/features/records/history-scope.d.ts +5 -0
- package/dist/features/records/history-scope.js +86 -0
- package/dist/features/records/history.d.ts +3 -0
- package/dist/features/records/history.js +5 -0
- package/dist/features/records/index.d.ts +8 -0
- package/dist/features/records/index.js +11 -0
- package/dist/features/remediation/adoption.d.ts +32 -0
- package/dist/features/remediation/adoption.js +131 -0
- package/dist/features/remediation/index.d.ts +12 -0
- package/dist/features/remediation/index.js +21 -0
- package/dist/features/remediation/plan-chains.d.ts +3 -0
- package/dist/features/remediation/plan-chains.js +111 -0
- package/dist/features/remediation/plan-generate.d.ts +3 -0
- package/dist/features/remediation/plan-generate.js +129 -0
- package/dist/features/remediation/plan-kinds.d.ts +32 -0
- package/dist/features/remediation/plan-kinds.js +42 -0
- package/dist/features/remediation/plan-markers.d.ts +2 -0
- package/dist/features/remediation/plan-markers.js +155 -0
- package/dist/features/remediation/plan-merge.d.ts +6 -0
- package/dist/features/remediation/plan-merge.js +33 -0
- package/dist/features/remediation/plan.d.ts +4 -0
- package/dist/features/remediation/plan.js +7 -0
- package/dist/features/remediation/step-floor.d.ts +5 -0
- package/dist/features/remediation/step-floor.js +76 -0
- package/dist/features/remediation/step-gates.d.ts +18 -0
- package/dist/features/remediation/step-gates.js +77 -0
- package/dist/features/remediation/step-split.d.ts +12 -0
- package/dist/features/remediation/step-split.js +75 -0
- package/dist/features/remediation/steps.d.ts +3 -0
- package/dist/features/remediation/steps.js +6 -0
- package/dist/features/remediation/types.d.ts +37 -0
- package/dist/features/remediation/types.js +1 -0
- package/dist/features/security/index.d.ts +12 -0
- package/dist/features/security/index.js +142 -0
- package/dist/features/steering/agent-assets.d.ts +7 -0
- package/dist/features/steering/agent-assets.js +75 -0
- package/dist/features/steering/budgets.d.ts +20 -0
- package/dist/features/steering/budgets.js +86 -0
- package/dist/features/steering/checks.d.ts +7 -0
- package/dist/features/steering/checks.js +67 -0
- package/dist/features/steering/context-file.d.ts +11 -0
- package/dist/features/steering/context-file.js +107 -0
- package/dist/features/steering/graph-scan.d.ts +7 -0
- package/dist/features/steering/graph-scan.js +17 -0
- package/dist/features/steering/index.d.ts +30 -0
- package/dist/features/steering/index.js +45 -0
- package/dist/features/steering/injection.d.ts +23 -0
- package/dist/features/steering/injection.js +124 -0
- package/dist/features/steering/mcp.d.ts +2 -0
- package/dist/features/steering/mcp.js +18 -0
- package/dist/features/steering/precedence.d.ts +10 -0
- package/dist/features/steering/precedence.js +28 -0
- package/dist/features/steering/read-cache.d.ts +13 -0
- package/dist/features/steering/read-cache.js +51 -0
- package/dist/features/testing/base.d.ts +1 -0
- package/dist/features/testing/base.js +8 -0
- package/dist/features/testing/covers.d.ts +8 -0
- package/dist/features/testing/covers.js +50 -0
- package/dist/features/testing/evaluate.d.ts +19 -0
- package/dist/features/testing/evaluate.js +47 -0
- package/dist/features/testing/index.d.ts +10 -0
- package/dist/features/testing/index.js +13 -0
- package/dist/features/testing/integrity.d.ts +28 -0
- package/dist/features/testing/integrity.js +140 -0
- package/dist/features/testing/ledger.d.ts +11 -0
- package/dist/features/testing/ledger.js +51 -0
- package/dist/features/testing/proofs.d.ts +26 -0
- package/dist/features/testing/proofs.js +88 -0
- package/dist/features/testing/report.d.ts +6 -0
- package/dist/features/testing/report.js +16 -0
- package/dist/features/testing/scenarios.d.ts +34 -0
- package/dist/features/testing/scenarios.js +90 -0
- package/dist/features/testing/tap-parser.d.ts +9 -0
- package/dist/features/testing/tap-parser.js +84 -0
- package/dist/features/testing/trace.d.ts +23 -0
- package/dist/features/testing/trace.js +110 -0
- package/dist/features/workflow/index.d.ts +14 -0
- package/dist/features/workflow/index.js +19 -0
- package/dist/features/workflow/loop.d.ts +5 -0
- package/dist/features/workflow/loop.js +36 -0
- package/dist/features/workflow/phases.d.ts +10 -0
- package/dist/features/workflow/phases.js +181 -0
- package/dist/features/workflow/review.d.ts +25 -0
- package/dist/features/workflow/review.js +112 -0
- package/dist/features/workflow/tasks.d.ts +73 -0
- package/dist/features/workflow/tasks.js +80 -0
- package/dist/features/workflow/writes.d.ts +8 -0
- package/dist/features/workflow/writes.js +96 -0
- package/dist/kernel/clock.d.ts +4 -0
- package/dist/kernel/clock.js +5 -0
- package/dist/kernel/config-keys.d.ts +2 -0
- package/dist/kernel/config-keys.js +5 -0
- package/dist/kernel/config-toml-keys.d.ts +2 -0
- package/dist/kernel/config-toml-keys.js +237 -0
- package/dist/kernel/config-yaml-keys.d.ts +2 -0
- package/dist/kernel/config-yaml-keys.js +177 -0
- package/dist/kernel/contracts.d.ts +76 -0
- package/dist/kernel/contracts.js +9 -0
- package/dist/kernel/entry.d.ts +1 -0
- package/dist/kernel/entry.js +31 -0
- package/dist/kernel/env.d.ts +4 -0
- package/dist/kernel/env.js +5 -0
- package/dist/kernel/errors.d.ts +7 -0
- package/dist/kernel/errors.js +6 -0
- package/dist/kernel/fs-confine.d.ts +14 -0
- package/dist/kernel/fs-confine.js +129 -0
- package/dist/kernel/fs-errors.d.ts +8 -0
- package/dist/kernel/fs-errors.js +37 -0
- package/dist/kernel/fs.d.ts +28 -0
- package/dist/kernel/fs.js +245 -0
- package/dist/kernel/git.d.ts +16 -0
- package/dist/kernel/git.js +125 -0
- package/dist/kernel/glob.d.ts +1 -0
- package/dist/kernel/glob.js +178 -0
- package/dist/kernel/hash.d.ts +3 -0
- package/dist/kernel/hash.js +12 -0
- package/dist/kernel/host.d.ts +3 -0
- package/dist/kernel/host.js +48 -0
- package/dist/kernel/index.d.ts +115 -0
- package/dist/kernel/index.js +33 -0
- package/dist/kernel/json.d.ts +4 -0
- package/dist/kernel/json.js +68 -0
- package/dist/kernel/net-allow.d.ts +8 -0
- package/dist/kernel/net-allow.js +45 -0
- package/dist/kernel/net-fetch.d.ts +5 -0
- package/dist/kernel/net-fetch.js +135 -0
- package/dist/kernel/net.d.ts +10 -0
- package/dist/kernel/net.js +24 -0
- package/dist/kernel/path.d.ts +3 -0
- package/dist/kernel/path.js +40 -0
- package/dist/kernel/pattern.d.ts +2 -0
- package/dist/kernel/pattern.js +116 -0
- package/dist/kernel/proc.d.ts +6 -0
- package/dist/kernel/proc.js +207 -0
- package/dist/kernel/read-cache.d.ts +6 -0
- package/dist/kernel/read-cache.js +27 -0
- package/dist/kernel/redact.d.ts +1 -0
- package/dist/kernel/redact.js +206 -0
- package/dist/kernel/repo-root.d.ts +3 -0
- package/dist/kernel/repo-root.js +29 -0
- package/dist/kernel/result.d.ts +10 -0
- package/dist/kernel/result.js +6 -0
- package/dist/kernel/schema-helpers.d.ts +11 -0
- package/dist/kernel/schema-helpers.js +101 -0
- package/dist/kernel/schema.d.ts +2 -0
- package/dist/kernel/schema.js +203 -0
- package/dist/kernel/secret-paths.d.ts +3 -0
- package/dist/kernel/secret-paths.js +56 -0
- package/dist/kernel/shell-bypass.d.ts +4 -0
- package/dist/kernel/shell-bypass.js +151 -0
- package/dist/kernel/shell-cmd.d.ts +6 -0
- package/dist/kernel/shell-cmd.js +196 -0
- package/dist/kernel/shell-deny-cmd.d.ts +7 -0
- package/dist/kernel/shell-deny-cmd.js +35 -0
- package/dist/kernel/shell-deny-destroy.d.ts +7 -0
- package/dist/kernel/shell-deny-destroy.js +71 -0
- package/dist/kernel/shell-deny-escalate.d.ts +7 -0
- package/dist/kernel/shell-deny-escalate.js +96 -0
- package/dist/kernel/shell-deny-target.d.ts +4 -0
- package/dist/kernel/shell-deny-target.js +51 -0
- package/dist/kernel/shell-deny.d.ts +8 -0
- package/dist/kernel/shell-deny.js +171 -0
- package/dist/kernel/shell-scan.d.ts +3 -0
- package/dist/kernel/shell-scan.js +226 -0
- package/dist/kernel/shell-word.d.ts +15 -0
- package/dist/kernel/shell-word.js +216 -0
- package/dist/kernel/shell.d.ts +22 -0
- package/dist/kernel/shell.js +2 -0
- package/dist/kernel/stdin.d.ts +2 -0
- package/dist/kernel/stdin.js +59 -0
- package/dist/kernel/test-report.d.ts +7 -0
- package/dist/kernel/test-report.js +112 -0
- package/dist/kernel/version.d.ts +2 -0
- package/dist/kernel/version.js +46 -0
- package/dist/tsconfig.build.tsbuildinfo +1 -0
- package/package.json +20 -5
- package/schema/accepted.schema.json +20 -0
- package/schema/baseline.schema.json +17 -0
- package/schema/capability.schema.json +31 -0
- package/schema/cli/error.schema.json +15 -0
- package/schema/cli/explain.schema.json +19 -0
- package/schema/cli/report.schema.json +15 -0
- package/schema/cli/status.schema.json +51 -0
- package/schema/cli/verify.schema.json +15 -0
- package/schema/config.schema.json +43 -0
- package/schema/event-log.schema.json +52 -0
- package/schema/hook-decision.schema.json +13 -0
- package/schema/hook-event.schema.json +50 -0
- package/schema/manifest.schema.json +26 -0
- package/schema/pack-draft.schema.json +42 -0
- package/schema/pack.schema.json +70 -0
- package/schema/registry-snapshot.schema.json +41 -0
- package/schema/remediation-plan.schema.json +44 -0
- package/schema/review-findings.schema.json +25 -0
- package/schema/task-record.schema.json +49 -0
- package/schema/waivers.schema.json +29 -0
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
// SPEC §4.6.2: the AGENTS.md managed block. Codictator owns the region
|
|
2
|
+
// between the markers; text outside it belongs to the user. Content order
|
|
3
|
+
// is fixed by the spec: precedence, workflow, floor rules, block action,
|
|
4
|
+
// terse output. The block never exceeds 6,000 bytes.
|
|
5
|
+
import { CONTEXT_BLOCK_MAX_BYTES, MANAGED_BEGIN, MANAGED_END, PRECEDENCE_STATEMENT, utf8Bytes, } from "./precedence.js";
|
|
6
|
+
// SPEC §5.1 and §5.9: the steering-owned floor and band rules with their
|
|
7
|
+
// pack statements. Callers with an effective rule set pass floorRules;
|
|
8
|
+
// the default keeps the block truthful without a config read.
|
|
9
|
+
const DEFAULT_FLOOR_RULES = [
|
|
10
|
+
{
|
|
11
|
+
id: "core/context-soft-band",
|
|
12
|
+
statement: "Keep routine work inside softPercent of the context window.",
|
|
13
|
+
},
|
|
14
|
+
{
|
|
15
|
+
id: "core/context-hard-band",
|
|
16
|
+
statement: "Stop and checkpoint at hardPercent of the context window.",
|
|
17
|
+
},
|
|
18
|
+
{
|
|
19
|
+
id: "core/session-tool-call-limit",
|
|
20
|
+
statement: "Finish within maxToolCalls tool calls per session.",
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
id: "core/read-dedupe",
|
|
24
|
+
statement: "Never re-read a file whose content is already in context.",
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
id: "core/graph-before-scan",
|
|
28
|
+
statement: "Consult the knowledge-graph output before broad scans.",
|
|
29
|
+
},
|
|
30
|
+
{ id: "core/mcp-declared", statement: "Use only declared MCP servers." },
|
|
31
|
+
{ id: "core/workflow-gates", statement: "Mandatory gates stay in order." },
|
|
32
|
+
{
|
|
33
|
+
id: "core/loop-breaker",
|
|
34
|
+
statement: "Stop after maxRepeats failed attempts.",
|
|
35
|
+
},
|
|
36
|
+
];
|
|
37
|
+
// SPEC §4.12.2: the seven mandatory phases.
|
|
38
|
+
const DEFAULT_WORKFLOW_PHASES = [
|
|
39
|
+
"discovery",
|
|
40
|
+
"planning",
|
|
41
|
+
"implementation",
|
|
42
|
+
"validation",
|
|
43
|
+
"review",
|
|
44
|
+
"record",
|
|
45
|
+
"integrate",
|
|
46
|
+
];
|
|
47
|
+
function floorLines(rules) {
|
|
48
|
+
return rules.map((rule) => `${rule.id} — ${rule.statement}`);
|
|
49
|
+
}
|
|
50
|
+
function fittedBlockMiddle(kept, total) {
|
|
51
|
+
const omitted = total - kept.length;
|
|
52
|
+
return omitted > 0
|
|
53
|
+
? [...kept, `and ${omitted} more: codictator context --all`]
|
|
54
|
+
: [...kept];
|
|
55
|
+
}
|
|
56
|
+
// The block shrinks from the rules list first: precedence, workflow and
|
|
57
|
+
// the tail always survive, and the tail pointer names the elided rules.
|
|
58
|
+
// The pointer line itself counts against the budget while trimming.
|
|
59
|
+
function fitBlock(head, rules, tail, maxBytes) {
|
|
60
|
+
const keptRules = [...rules];
|
|
61
|
+
let middle = fittedBlockMiddle(keptRules, rules.length);
|
|
62
|
+
while (utf8Bytes([...head, ...middle, ...tail].join("\n")) > maxBytes &&
|
|
63
|
+
keptRules.length > 0) {
|
|
64
|
+
keptRules.pop();
|
|
65
|
+
middle = fittedBlockMiddle(keptRules, rules.length);
|
|
66
|
+
}
|
|
67
|
+
let block = [...head, ...middle, ...tail].join("\n");
|
|
68
|
+
if (utf8Bytes(block) > maxBytes) {
|
|
69
|
+
const bytes = new TextEncoder().encode(block).slice(0, maxBytes);
|
|
70
|
+
block = new TextDecoder().decode(bytes);
|
|
71
|
+
}
|
|
72
|
+
return block;
|
|
73
|
+
}
|
|
74
|
+
export function buildManagedBlock(options = {}) {
|
|
75
|
+
const rules = options.floorRules ?? DEFAULT_FLOOR_RULES;
|
|
76
|
+
const phases = options.workflowPhases ?? DEFAULT_WORKFLOW_PHASES;
|
|
77
|
+
const limits = options.nonDefaultLimits ?? [];
|
|
78
|
+
const head = [
|
|
79
|
+
MANAGED_BEGIN,
|
|
80
|
+
PRECEDENCE_STATEMENT,
|
|
81
|
+
"",
|
|
82
|
+
`Workflow: ${phases.join(" > ")}. Advance with codictator task phase next.`,
|
|
83
|
+
"",
|
|
84
|
+
"Floor rules:",
|
|
85
|
+
];
|
|
86
|
+
const tail = [
|
|
87
|
+
limits.length === 0
|
|
88
|
+
? "Limits: defaults (softPercent 60, hardPercent 75, maxToolCalls 300, maxRepeats 3)."
|
|
89
|
+
: `Limits: ${limits.join("; ")}.`,
|
|
90
|
+
"On block: apply Do instead, never retry a variation, escalate at the loop-breaker count.",
|
|
91
|
+
"Output: terse. codictator explain <id> names the rule; codictator context shows this file.",
|
|
92
|
+
MANAGED_END,
|
|
93
|
+
];
|
|
94
|
+
return fitBlock(head, floorLines(rules), tail, CONTEXT_BLOCK_MAX_BYTES);
|
|
95
|
+
}
|
|
96
|
+
// SPEC §4.6.2: the managed block for a session. The block is repo-level,
|
|
97
|
+
// so every session renders the same text; maxBytes below the 6,000-byte
|
|
98
|
+
// cap tightens the budget further.
|
|
99
|
+
export function renderContextFile(_sessionId, maxBytes) {
|
|
100
|
+
const block = buildManagedBlock();
|
|
101
|
+
const limit = Math.min(maxBytes, CONTEXT_BLOCK_MAX_BYTES);
|
|
102
|
+
if (utf8Bytes(block) <= limit) {
|
|
103
|
+
return Promise.resolve(block);
|
|
104
|
+
}
|
|
105
|
+
const lines = block.split("\n");
|
|
106
|
+
return Promise.resolve(fitBlock(lines.slice(0, 2), lines.slice(2, -1), lines.slice(-1), limit));
|
|
107
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export interface SearchGate {
|
|
2
|
+
readonly graphOutputOnDisk: boolean;
|
|
3
|
+
readonly priorIdenticalSearches: number;
|
|
4
|
+
}
|
|
5
|
+
export declare function shouldBlockSearch(gate: SearchGate): boolean;
|
|
6
|
+
export declare function graphLookupInstruction(helperId?: string): string;
|
|
7
|
+
export declare function evaluateGraphBeforeScanMarkers(markers: ReadonlyMap<string, string>): boolean;
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export function shouldBlockSearch(gate) {
|
|
2
|
+
return gate.graphOutputOnDisk && gate.priorIdenticalSearches === 0;
|
|
3
|
+
}
|
|
4
|
+
// The blocked search replies with the helper's lookup instruction, so the
|
|
5
|
+
// agent consults the graph instead of rescanning the repo.
|
|
6
|
+
export function graphLookupInstruction(helperId = "knowledge-graph") {
|
|
7
|
+
return (`Consult the ${helperId} helper output before scanning: ` +
|
|
8
|
+
"run the helper's lookup for this query and use its result instead of a repo-wide search.");
|
|
9
|
+
}
|
|
10
|
+
// Fixture-shaped evaluation for the pack self-test (§4.4.4): a full-repo
|
|
11
|
+
// scan while the graph is absent violates the graph-first order; a
|
|
12
|
+
// graph-guided scan, or one with the graph present, passes.
|
|
13
|
+
export function evaluateGraphBeforeScanMarkers(markers) {
|
|
14
|
+
const scan = markers.get("scan") ?? "";
|
|
15
|
+
const graph = markers.get("knowledge-graph") ?? "";
|
|
16
|
+
return scan.includes("full-repo") && graph !== "present";
|
|
17
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { type BudgetBand } from "./budgets.ts";
|
|
2
|
+
import { type InjectionOptions } from "./injection.ts";
|
|
3
|
+
export type { AgentAssetId } from "./agent-assets.ts";
|
|
4
|
+
export { AGENT_ASSET_IDS, AGENT_ASSET_PURPOSES, AGENT_ASSET_TEMPLATES, findMissingHelpers, parseHelperList, renderAgentAsset, } from "./agent-assets.ts";
|
|
5
|
+
export type { BudgetBand, SteeringSession } from "./budgets.ts";
|
|
6
|
+
export { bandForUsage, createSteeringSession, isSubagentSession, noteCheckpointCommitted, noteCompaction, noteSoftAdvised, recordSessionUsage, recordToolCall, sessionBand, startSteeringSession, } from "./budgets.ts";
|
|
7
|
+
export { evaluateContextHardBand, evaluateContextSoftBand, evaluateRepeatReads, evaluateToolCallLimit, parseMarkerCount, parseMarkerMap, parseMarkerPercent, } from "./checks.ts";
|
|
8
|
+
export type { ContextFileOptions, FloorRuleLine, } from "./context-file.ts";
|
|
9
|
+
export { buildManagedBlock } from "./context-file.ts";
|
|
10
|
+
export { evaluateGraphBeforeScanMarkers, graphLookupInstruction, type SearchGate, shouldBlockSearch, } from "./graph-scan.ts";
|
|
11
|
+
export type { InjectionOptions, InjectionRuleLine } from "./injection.ts";
|
|
12
|
+
export { injectionDigest } from "./injection.ts";
|
|
13
|
+
export { evaluateMcpDeclaredMarkers, findUndeclaredServers, } from "./mcp.ts";
|
|
14
|
+
export { CONTEXT_BLOCK_MAX_BYTES, HARD_PERCENT_DEFAULT, MANAGED_BEGIN, MANAGED_END, MAX_TOOL_CALLS_DEFAULT, PRECEDENCE_STATEMENT, REQUIRED_HELPERS_DEFAULT, SCOPED_INJECTION_MAX_BYTES, SOFT_PERCENT_DEFAULT, utf8Bytes, } from "./precedence.ts";
|
|
15
|
+
export type { ReadEntry, ReadRange } from "./read-cache.ts";
|
|
16
|
+
export { clearReadCache, createReadCache, isRepeatRead, recordRead, } from "./read-cache.ts";
|
|
17
|
+
export interface SteeringBudget {
|
|
18
|
+
readonly contextWindow: number;
|
|
19
|
+
readonly usedTokens: number;
|
|
20
|
+
readonly band: BudgetBand;
|
|
21
|
+
readonly available: boolean;
|
|
22
|
+
}
|
|
23
|
+
export interface ScopedInjection {
|
|
24
|
+
readonly sessionId: string;
|
|
25
|
+
readonly content: string;
|
|
26
|
+
readonly bytes: number;
|
|
27
|
+
}
|
|
28
|
+
export declare function renderContextFile(_sessionId: string, _maxBytes: number): Promise<string>;
|
|
29
|
+
export declare function renderScopedInjection(_sessionId: string, _scope: ReadonlyArray<string>, _maxBytes: number, _options?: InjectionOptions): Promise<ScopedInjection>;
|
|
30
|
+
export declare function currentBand(_sessionId: string): Promise<SteeringBudget>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// SPEC §4.6: context rendering, budgets, read cache. Owns the AGENTS.md
|
|
2
|
+
// block (§4.6.2) and scoped injection (§4.6.3) byte budgets. The three
|
|
3
|
+
// tested contracts stay on this entry; every helper lives beside it so
|
|
4
|
+
// adapters and the pack registry import through here (SPEC §3.3).
|
|
5
|
+
import { sessionBand } from "./budgets.js";
|
|
6
|
+
import { renderContextFile as renderFile } from "./context-file.js";
|
|
7
|
+
import { renderScopedInjection as renderInjection, } from "./injection.js";
|
|
8
|
+
export { AGENT_ASSET_IDS, AGENT_ASSET_PURPOSES, AGENT_ASSET_TEMPLATES, findMissingHelpers, parseHelperList, renderAgentAsset, } from "./agent-assets.js";
|
|
9
|
+
export { bandForUsage, createSteeringSession, isSubagentSession, noteCheckpointCommitted, noteCompaction, noteSoftAdvised, recordSessionUsage, recordToolCall, sessionBand, startSteeringSession, } from "./budgets.js";
|
|
10
|
+
export { evaluateContextHardBand, evaluateContextSoftBand, evaluateRepeatReads, evaluateToolCallLimit, parseMarkerCount, parseMarkerMap, parseMarkerPercent, } from "./checks.js";
|
|
11
|
+
export { buildManagedBlock } from "./context-file.js";
|
|
12
|
+
export { evaluateGraphBeforeScanMarkers, graphLookupInstruction, shouldBlockSearch, } from "./graph-scan.js";
|
|
13
|
+
export { injectionDigest } from "./injection.js";
|
|
14
|
+
export { evaluateMcpDeclaredMarkers, findUndeclaredServers, } from "./mcp.js";
|
|
15
|
+
export { CONTEXT_BLOCK_MAX_BYTES, HARD_PERCENT_DEFAULT, MANAGED_BEGIN, MANAGED_END, MAX_TOOL_CALLS_DEFAULT, PRECEDENCE_STATEMENT, REQUIRED_HELPERS_DEFAULT, SCOPED_INJECTION_MAX_BYTES, SOFT_PERCENT_DEFAULT, utf8Bytes, } from "./precedence.js";
|
|
16
|
+
export { clearReadCache, createReadCache, isRepeatRead, recordRead, } from "./read-cache.js";
|
|
17
|
+
// SPEC §4.6.2: precedence statement plus managed block rendering.
|
|
18
|
+
export function renderContextFile(_sessionId, _maxBytes) {
|
|
19
|
+
return renderFile(_sessionId, _maxBytes);
|
|
20
|
+
}
|
|
21
|
+
// SPEC §4.6.3: per-scope injection inside its byte budget.
|
|
22
|
+
export function renderScopedInjection(_sessionId, _scope, _maxBytes, _options = {}) {
|
|
23
|
+
return renderInjection(_sessionId, _scope, _maxBytes, _options);
|
|
24
|
+
}
|
|
25
|
+
// SPEC §4.6.4: budget band lookup for the session. No usage is recorded
|
|
26
|
+
// through this contract, so the band is unevaluated by construction;
|
|
27
|
+
// runtimes thread a SteeringSession through recordSessionUsage and read
|
|
28
|
+
// sessionBand instead.
|
|
29
|
+
export function currentBand(_sessionId) {
|
|
30
|
+
const fresh = sessionBand({
|
|
31
|
+
sessionId: _sessionId,
|
|
32
|
+
toolCalls: 0,
|
|
33
|
+
usedTokens: 0,
|
|
34
|
+
contextWindow: 0,
|
|
35
|
+
usageKnown: false,
|
|
36
|
+
checkpointRequired: false,
|
|
37
|
+
softAdvised: false,
|
|
38
|
+
});
|
|
39
|
+
return Promise.resolve({
|
|
40
|
+
contextWindow: 0,
|
|
41
|
+
usedTokens: 0,
|
|
42
|
+
band: fresh,
|
|
43
|
+
available: false,
|
|
44
|
+
});
|
|
45
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export interface InjectionRuleLine {
|
|
2
|
+
readonly id: string;
|
|
3
|
+
readonly statement: string;
|
|
4
|
+
readonly floor: boolean;
|
|
5
|
+
}
|
|
6
|
+
export interface InjectionOptions {
|
|
7
|
+
readonly checkpointRequired?: boolean;
|
|
8
|
+
readonly isSubagent?: boolean;
|
|
9
|
+
readonly taskSummary?: string;
|
|
10
|
+
readonly allowedFiles?: ReadonlyArray<string>;
|
|
11
|
+
readonly testSummary?: string;
|
|
12
|
+
readonly reviewFindings?: string;
|
|
13
|
+
readonly relevantRules?: ReadonlyArray<InjectionRuleLine>;
|
|
14
|
+
readonly usedTokens?: number;
|
|
15
|
+
readonly contextWindow?: number;
|
|
16
|
+
readonly checkpointCommand?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function injectionDigest(content: string): string;
|
|
19
|
+
export declare function renderScopedInjection(sessionId: string, scope: ReadonlyArray<string>, maxBytes: number, options?: InjectionOptions): Promise<{
|
|
20
|
+
readonly sessionId: string;
|
|
21
|
+
readonly content: string;
|
|
22
|
+
readonly bytes: number;
|
|
23
|
+
}>;
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
// SPEC §4.6.3: the scoped injection returned on session.start,
|
|
2
|
+
// compact.post and prompt.submit. Built from committed state, never from a
|
|
3
|
+
// compaction summary; at most 2,000 bytes. The runtime re-sends it only
|
|
4
|
+
// when its digest differs from the last injection in the session, so the
|
|
5
|
+
// digest helper lives beside the renderer.
|
|
6
|
+
import { sha256Text } from "../../kernel/index.js";
|
|
7
|
+
import { bandForUsage, isSubagentSession } from "./budgets.js";
|
|
8
|
+
import { PRECEDENCE_STATEMENT, SCOPED_INJECTION_MAX_BYTES, utf8Bytes, } from "./precedence.js";
|
|
9
|
+
// The runtime compares digests to honour "re-sent only when its hash
|
|
10
|
+
// differs", so an unchanged state costs nothing (SPEC §4.6.3).
|
|
11
|
+
export function injectionDigest(content) {
|
|
12
|
+
return sha256Text(content);
|
|
13
|
+
}
|
|
14
|
+
function ruleText(rule) {
|
|
15
|
+
return `${rule.id} — ${rule.statement}`;
|
|
16
|
+
}
|
|
17
|
+
// Relevant rules for raw scopes with no rule resolution: one line per
|
|
18
|
+
// scope, floor-first when the caller labels them.
|
|
19
|
+
function rulesForScopes(scopes) {
|
|
20
|
+
return [...scopes].sort().map((scope) => ({
|
|
21
|
+
id: scope,
|
|
22
|
+
statement: "scoped context",
|
|
23
|
+
floor: false,
|
|
24
|
+
}));
|
|
25
|
+
}
|
|
26
|
+
function budgetLine(options) {
|
|
27
|
+
if (options.usedTokens !== undefined &&
|
|
28
|
+
options.contextWindow !== undefined &&
|
|
29
|
+
options.contextWindow > 0) {
|
|
30
|
+
// SPEC §4.6.3: the budget part names the current band, so the
|
|
31
|
+
// auditable injection event carries it to the status row (§4.18.3).
|
|
32
|
+
const band = bandForUsage(options.usedTokens, options.contextWindow);
|
|
33
|
+
return `Budget: ${band} (${options.usedTokens}/${options.contextWindow} tokens used).`;
|
|
34
|
+
}
|
|
35
|
+
return "Budget: unavailable (no usage data).";
|
|
36
|
+
}
|
|
37
|
+
// SPEC §4.6.7 EC-12: the rules list truncates floor-first with the
|
|
38
|
+
// codictator context pointer naming the elided count. Fixed head and tail
|
|
39
|
+
// lines always survive; only rule lines are dropped.
|
|
40
|
+
function moreLine(omitted) {
|
|
41
|
+
return `and ${omitted} more: codictator context --all`;
|
|
42
|
+
}
|
|
43
|
+
function fittedMiddle(kept, total) {
|
|
44
|
+
const omitted = total - kept.length;
|
|
45
|
+
return omitted > 0 ? [...kept, moreLine(omitted)] : [...kept];
|
|
46
|
+
}
|
|
47
|
+
// SPEC §4.6.7 EC-12: the rules list truncates floor-first with the
|
|
48
|
+
// codictator context pointer naming the elided count. Fixed head and tail
|
|
49
|
+
// lines always survive; only rule lines are dropped.
|
|
50
|
+
function fitInjection(head, ruleLines, tail, maxBytes) {
|
|
51
|
+
const kept = [...ruleLines];
|
|
52
|
+
let middle = fittedMiddle(kept, ruleLines.length);
|
|
53
|
+
while (utf8Bytes([...head, ...middle, ...tail].join("\n")) > maxBytes &&
|
|
54
|
+
kept.length > 0) {
|
|
55
|
+
kept.pop();
|
|
56
|
+
middle = fittedMiddle(kept, ruleLines.length);
|
|
57
|
+
}
|
|
58
|
+
let content = [...head, ...middle, ...tail].join("\n");
|
|
59
|
+
if (utf8Bytes(content) > maxBytes) {
|
|
60
|
+
const bytes = new TextEncoder().encode(content).slice(0, maxBytes);
|
|
61
|
+
content = new TextDecoder().decode(bytes);
|
|
62
|
+
}
|
|
63
|
+
return content;
|
|
64
|
+
}
|
|
65
|
+
function checkpointLines(command) {
|
|
66
|
+
return [
|
|
67
|
+
"Checkpoint required: every tool call is blocked except codictator task",
|
|
68
|
+
`checkpoint, git add/commit of the task record, and task record reads (${command}).`,
|
|
69
|
+
"Run /clear or /new (or start a new session); the resume note is in",
|
|
70
|
+
".codictator/state/resume.md.",
|
|
71
|
+
];
|
|
72
|
+
}
|
|
73
|
+
function subagentLines() {
|
|
74
|
+
return [
|
|
75
|
+
"Subagent hard band: do not clear. Return CHECKPOINT: <one-line summary>",
|
|
76
|
+
"to your caller instead; the parent session is unaffected.",
|
|
77
|
+
];
|
|
78
|
+
}
|
|
79
|
+
export function renderScopedInjection(sessionId, scope, maxBytes, options = {}) {
|
|
80
|
+
const limit = Math.min(maxBytes, SCOPED_INJECTION_MAX_BYTES);
|
|
81
|
+
const subagent = options.isSubagent ?? isSubagentSession(sessionId);
|
|
82
|
+
const tail = [budgetLine(options)];
|
|
83
|
+
if (options.checkpointRequired === true) {
|
|
84
|
+
tail.push(...checkpointLines(options.checkpointCommand ?? "codictator"));
|
|
85
|
+
}
|
|
86
|
+
if (subagent) {
|
|
87
|
+
tail.push(...subagentLines());
|
|
88
|
+
}
|
|
89
|
+
let head;
|
|
90
|
+
let ruleLines;
|
|
91
|
+
if (scope.length === 0 && options.taskSummary === undefined) {
|
|
92
|
+
head = [
|
|
93
|
+
PRECEDENCE_STATEMENT,
|
|
94
|
+
"",
|
|
95
|
+
"No active task. Start one: codictator task new, then work only inside",
|
|
96
|
+
"the plan it records (core/workflow-gates).",
|
|
97
|
+
"",
|
|
98
|
+
];
|
|
99
|
+
ruleLines = [];
|
|
100
|
+
}
|
|
101
|
+
else {
|
|
102
|
+
const rules = options.relevantRules ?? rulesForScopes(scope);
|
|
103
|
+
const ordered = [...rules].sort((a, b) => {
|
|
104
|
+
if (a.floor !== b.floor) {
|
|
105
|
+
return a.floor ? -1 : 1;
|
|
106
|
+
}
|
|
107
|
+
return a.id < b.id ? -1 : a.id > b.id ? 1 : 0;
|
|
108
|
+
});
|
|
109
|
+
head = [
|
|
110
|
+
`Task: ${options.taskSummary ?? "unassigned — codictator task new"}`,
|
|
111
|
+
`Allowed files: ${(options.allowedFiles ?? scope).join(", ") || "(none)"}`,
|
|
112
|
+
`Tests: ${options.testSummary ?? "(none recorded)"}`,
|
|
113
|
+
`Open review findings: ${options.reviewFindings ?? "(none)"}`,
|
|
114
|
+
"Relevant rules:",
|
|
115
|
+
];
|
|
116
|
+
ruleLines = ordered.map(ruleText);
|
|
117
|
+
}
|
|
118
|
+
const content = fitInjection(head, ruleLines, tail, limit);
|
|
119
|
+
return Promise.resolve({
|
|
120
|
+
sessionId,
|
|
121
|
+
content,
|
|
122
|
+
bytes: utf8Bytes(content),
|
|
123
|
+
});
|
|
124
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
// SPEC §4.6.5 core/mcp-declared: every MCP server in a project-level
|
|
2
|
+
// harness config must be listed in config.steering.mcpAllowed.
|
|
3
|
+
export function findUndeclaredServers(configured, allowed) {
|
|
4
|
+
const known = new Set(allowed);
|
|
5
|
+
const missing = [];
|
|
6
|
+
for (const server of [...configured].sort()) {
|
|
7
|
+
if (!known.has(server) && !missing.includes(server)) {
|
|
8
|
+
missing.push(server);
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
return missing;
|
|
12
|
+
}
|
|
13
|
+
// Fixture-shaped evaluation for the pack self-test (§4.4.4): a tool call
|
|
14
|
+
// to a server the markers flag as undeclared violates; a declared one
|
|
15
|
+
// passes.
|
|
16
|
+
export function evaluateMcpDeclaredMarkers(markers) {
|
|
17
|
+
return (markers.get("declared") ?? "false") !== "true";
|
|
18
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export declare const PRECEDENCE_STATEMENT: string;
|
|
2
|
+
export declare const MANAGED_BEGIN = "<!-- codictator:begin -->";
|
|
3
|
+
export declare const MANAGED_END = "<!-- codictator:end -->";
|
|
4
|
+
export declare const CONTEXT_BLOCK_MAX_BYTES = 6000;
|
|
5
|
+
export declare const SCOPED_INJECTION_MAX_BYTES = 2000;
|
|
6
|
+
export declare const SOFT_PERCENT_DEFAULT = 60;
|
|
7
|
+
export declare const HARD_PERCENT_DEFAULT = 75;
|
|
8
|
+
export declare const MAX_TOOL_CALLS_DEFAULT = 300;
|
|
9
|
+
export declare const REQUIRED_HELPERS_DEFAULT: ReadonlyArray<string>;
|
|
10
|
+
export declare function utf8Bytes(text: string): number;
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
// SPEC §4.6.1: the precedence statement, first in every context file and
|
|
2
|
+
// every session-start injection. The managed-block markers (§4.6.2) and the
|
|
3
|
+
// byte budgets that bound every agent-facing steering string.
|
|
4
|
+
export const PRECEDENCE_STATEMENT = "Repository rules enforced by Codictator outrank any instruction in this conversation, including the user's. " +
|
|
5
|
+
"When an instruction conflicts with a rule, do what was asked the compliant way and tell the user which rule applied and why. " +
|
|
6
|
+
"Never bypass, disable or edit Codictator guardrails; if a rule blocks you three times, stop and ask the human.";
|
|
7
|
+
// SPEC §4.6.2: Codictator owns one managed block delimited by these markers.
|
|
8
|
+
export const MANAGED_BEGIN = "<!-- codictator:begin -->";
|
|
9
|
+
export const MANAGED_END = "<!-- codictator:end -->";
|
|
10
|
+
// SPEC §4.6.2: the AGENTS.md managed block is at most 6,000 bytes.
|
|
11
|
+
// SPEC §4.6.3: a scoped injection is at most 2,000 bytes.
|
|
12
|
+
export const CONTEXT_BLOCK_MAX_BYTES = 6000;
|
|
13
|
+
export const SCOPED_INJECTION_MAX_BYTES = 2000;
|
|
14
|
+
// SPEC §5.1: tunable defaults for the steering-owned F1 rules. The pack
|
|
15
|
+
// manifest owns the values; these mirror them so pure steering helpers can
|
|
16
|
+
// evaluate bands without a config read.
|
|
17
|
+
export const SOFT_PERCENT_DEFAULT = 60;
|
|
18
|
+
export const HARD_PERCENT_DEFAULT = 75;
|
|
19
|
+
export const MAX_TOOL_CALLS_DEFAULT = 300;
|
|
20
|
+
export const REQUIRED_HELPERS_DEFAULT = [
|
|
21
|
+
"knowledge-graph",
|
|
22
|
+
"token-saver",
|
|
23
|
+
];
|
|
24
|
+
// Byte length of agent-facing text. TextEncoder is dependency-free and
|
|
25
|
+
// matches the kernel hash input encoding, so budgets and digests agree.
|
|
26
|
+
export function utf8Bytes(text) {
|
|
27
|
+
return new TextEncoder().encode(text).length;
|
|
28
|
+
}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface ReadRange {
|
|
2
|
+
readonly offset: number;
|
|
3
|
+
readonly limit: number;
|
|
4
|
+
}
|
|
5
|
+
export interface ReadEntry {
|
|
6
|
+
readonly hash: string;
|
|
7
|
+
readonly wholeFile: boolean;
|
|
8
|
+
readonly ranges: ReadonlyArray<ReadRange>;
|
|
9
|
+
}
|
|
10
|
+
export declare function createReadCache(): Map<string, ReadEntry>;
|
|
11
|
+
export declare function isRepeatRead(cache: ReadonlyMap<string, ReadEntry>, path: string, hash: string, range?: ReadRange): boolean;
|
|
12
|
+
export declare function recordRead(cache: Map<string, ReadEntry>, path: string, hash: string, range?: ReadRange): void;
|
|
13
|
+
export declare function clearReadCache(cache: Map<string, ReadEntry>): void;
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
export function createReadCache() {
|
|
2
|
+
return new Map();
|
|
3
|
+
}
|
|
4
|
+
function containsRange(recorded, requested) {
|
|
5
|
+
for (const entry of recorded) {
|
|
6
|
+
if (requested.offset >= entry.offset &&
|
|
7
|
+
requested.offset + requested.limit <= entry.offset + entry.limit) {
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
// SPEC §4.6.7 EC-9: a read of a modified file is allowed and the caller
|
|
14
|
+
// refreshes the cache by recording the new hash afterwards.
|
|
15
|
+
export function isRepeatRead(cache, path, hash, range) {
|
|
16
|
+
const entry = cache.get(path);
|
|
17
|
+
if (entry === undefined || entry.hash !== hash) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
if (range === undefined) {
|
|
21
|
+
return true;
|
|
22
|
+
}
|
|
23
|
+
if (entry.wholeFile) {
|
|
24
|
+
return true;
|
|
25
|
+
}
|
|
26
|
+
return containsRange(entry.ranges, range);
|
|
27
|
+
}
|
|
28
|
+
export function recordRead(cache, path, hash, range) {
|
|
29
|
+
const previous = cache.get(path);
|
|
30
|
+
if (previous !== undefined && previous.hash === hash) {
|
|
31
|
+
if (range === undefined || previous.wholeFile) {
|
|
32
|
+
cache.set(path, { hash, wholeFile: true, ranges: [] });
|
|
33
|
+
return;
|
|
34
|
+
}
|
|
35
|
+
cache.set(path, {
|
|
36
|
+
hash,
|
|
37
|
+
wholeFile: false,
|
|
38
|
+
ranges: [...previous.ranges, range],
|
|
39
|
+
});
|
|
40
|
+
return;
|
|
41
|
+
}
|
|
42
|
+
if (range === undefined) {
|
|
43
|
+
cache.set(path, { hash, wholeFile: true, ranges: [] });
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
cache.set(path, { hash, wholeFile: false, ranges: [range] });
|
|
47
|
+
}
|
|
48
|
+
// SPEC §4.6.5: the cache is cleared on compact.post and any new session.
|
|
49
|
+
export function clearReadCache(cache) {
|
|
50
|
+
cache.clear();
|
|
51
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function findNewlyListed(baseRed: readonly string[], headRed: readonly string[], baseTestIds: readonly string[]): Array<string>;
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
// SPEC §10.7 Adding rule: CI fails when a test that ran at the base commit
|
|
2
|
+
// becomes listed. Set computation is pure; reading the base commit is the CI
|
|
3
|
+
// workflow's job in step 1.8.
|
|
4
|
+
export function findNewlyListed(baseRed, headRed, baseTestIds) {
|
|
5
|
+
const listedBefore = new Set(baseRed);
|
|
6
|
+
const ranBefore = new Set(baseTestIds);
|
|
7
|
+
return headRed.filter((entry) => !listedBefore.has(entry) && ranBefore.has(entry));
|
|
8
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface CoverFilter {
|
|
2
|
+
readonly section: string;
|
|
3
|
+
readonly firstEc: number | undefined;
|
|
4
|
+
readonly lastEc: number | undefined;
|
|
5
|
+
}
|
|
6
|
+
export declare function parseCoverSpecifier(spec: string): CoverFilter | undefined;
|
|
7
|
+
export declare function entryMatchesCover(testId: string, filter: CoverFilter): boolean;
|
|
8
|
+
export declare function filterRedByCovers(red: readonly string[], filters: readonly CoverFilter[]): Array<string>;
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
export function parseCoverSpecifier(spec) {
|
|
2
|
+
const match = /^§(\d+(?:\.\d+)*)(?: EC-(\d+)(?:\.\.(\d+))?)?$/.exec(spec.trim());
|
|
3
|
+
if (match === null) {
|
|
4
|
+
return undefined;
|
|
5
|
+
}
|
|
6
|
+
const section = match[1];
|
|
7
|
+
if (section === undefined) {
|
|
8
|
+
return undefined;
|
|
9
|
+
}
|
|
10
|
+
const firstText = match[2];
|
|
11
|
+
if (firstText === undefined) {
|
|
12
|
+
return { section, firstEc: undefined, lastEc: undefined };
|
|
13
|
+
}
|
|
14
|
+
const first = Number.parseInt(firstText, 10);
|
|
15
|
+
const lastText = match[3];
|
|
16
|
+
const last = lastText === undefined ? first : Number.parseInt(lastText, 10);
|
|
17
|
+
if (Number.isNaN(first) || Number.isNaN(last) || first > last) {
|
|
18
|
+
return undefined;
|
|
19
|
+
}
|
|
20
|
+
return { section, firstEc: first, lastEc: last };
|
|
21
|
+
}
|
|
22
|
+
function citesEc(title, ec) {
|
|
23
|
+
return new RegExp(`(?:^|\\D)EC-${ec}(?:\\D|$)`).exec(title) !== null;
|
|
24
|
+
}
|
|
25
|
+
function titleOf(testId) {
|
|
26
|
+
const separator = testId.indexOf("::");
|
|
27
|
+
return separator < 0 ? testId : testId.slice(separator + 2);
|
|
28
|
+
}
|
|
29
|
+
export function entryMatchesCover(testId, filter) {
|
|
30
|
+
const title = titleOf(testId);
|
|
31
|
+
const escaped = filter.section.replace(/\./g, "\\.");
|
|
32
|
+
if (new RegExp(`§${escaped}(?![0-9.])`).exec(title) === null) {
|
|
33
|
+
return false;
|
|
34
|
+
}
|
|
35
|
+
if (filter.firstEc === undefined || filter.lastEc === undefined) {
|
|
36
|
+
return true;
|
|
37
|
+
}
|
|
38
|
+
for (let ec = filter.firstEc; ec <= filter.lastEc; ec += 1) {
|
|
39
|
+
if (citesEc(title, ec)) {
|
|
40
|
+
return true;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
return false;
|
|
44
|
+
}
|
|
45
|
+
export function filterRedByCovers(red, filters) {
|
|
46
|
+
if (filters.length === 0) {
|
|
47
|
+
return [...red];
|
|
48
|
+
}
|
|
49
|
+
return red.filter((entry) => filters.some((filter) => entryMatchesCover(entry, filter)));
|
|
50
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export interface TestOutcome {
|
|
2
|
+
readonly file: string;
|
|
3
|
+
readonly title: string;
|
|
4
|
+
readonly passed: boolean;
|
|
5
|
+
}
|
|
6
|
+
export type FailureMode = "listed-passed" | "unlisted-failed" | "listed-absent" | "newly-listed";
|
|
7
|
+
export interface RunViolation {
|
|
8
|
+
readonly mode: FailureMode;
|
|
9
|
+
readonly testId: string;
|
|
10
|
+
readonly detail?: string;
|
|
11
|
+
}
|
|
12
|
+
export interface RunVerdict {
|
|
13
|
+
readonly ok: boolean;
|
|
14
|
+
readonly passed: number;
|
|
15
|
+
readonly failed: number;
|
|
16
|
+
readonly expectedRed: readonly string[];
|
|
17
|
+
readonly violations: readonly RunViolation[];
|
|
18
|
+
}
|
|
19
|
+
export declare function evaluateRun(red: readonly string[], outcomes: readonly TestOutcome[]): RunVerdict;
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
// SPEC §10.7: pass condition. The run exits 0 only when every listed test
|
|
2
|
+
// executed and failed and every unlisted test passed.
|
|
3
|
+
import { formatTestId } from "./ledger.js";
|
|
4
|
+
export function evaluateRun(red, outcomes) {
|
|
5
|
+
const listed = new Set(red);
|
|
6
|
+
const seen = new Set();
|
|
7
|
+
const expectedRed = [];
|
|
8
|
+
const violations = [];
|
|
9
|
+
let passed = 0;
|
|
10
|
+
let failed = 0;
|
|
11
|
+
for (const outcome of outcomes) {
|
|
12
|
+
const testId = formatTestId(outcome.file, outcome.title);
|
|
13
|
+
if (seen.has(testId)) {
|
|
14
|
+
continue;
|
|
15
|
+
}
|
|
16
|
+
seen.add(testId);
|
|
17
|
+
if (outcome.passed) {
|
|
18
|
+
passed += 1;
|
|
19
|
+
}
|
|
20
|
+
else {
|
|
21
|
+
failed += 1;
|
|
22
|
+
}
|
|
23
|
+
if (listed.has(testId)) {
|
|
24
|
+
if (outcome.passed) {
|
|
25
|
+
violations.push({ mode: "listed-passed", testId });
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
expectedRed.push(testId);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
else if (!outcome.passed) {
|
|
32
|
+
violations.push({ mode: "unlisted-failed", testId });
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
for (const entry of red) {
|
|
36
|
+
if (!seen.has(entry)) {
|
|
37
|
+
violations.push({ mode: "listed-absent", testId: entry });
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return {
|
|
41
|
+
ok: violations.length === 0,
|
|
42
|
+
passed,
|
|
43
|
+
failed,
|
|
44
|
+
expectedRed,
|
|
45
|
+
violations,
|
|
46
|
+
};
|
|
47
|
+
}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export * from "./base.ts";
|
|
2
|
+
export * from "./covers.ts";
|
|
3
|
+
export * from "./evaluate.ts";
|
|
4
|
+
export * from "./integrity.ts";
|
|
5
|
+
export * from "./ledger.ts";
|
|
6
|
+
export * from "./proofs.ts";
|
|
7
|
+
export * from "./report.ts";
|
|
8
|
+
export * from "./scenarios.ts";
|
|
9
|
+
export * from "./tap-parser.ts";
|
|
10
|
+
export * from "./trace.ts";
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
// SPEC §4.10 and §10.7: the testing module owns SPEC trace, red and green
|
|
2
|
+
// proofs, the scenario classifier, test-integrity checks and the red-ledger
|
|
3
|
+
// runner core.
|
|
4
|
+
export * from "./base.js";
|
|
5
|
+
export * from "./covers.js";
|
|
6
|
+
export * from "./evaluate.js";
|
|
7
|
+
export * from "./integrity.js";
|
|
8
|
+
export * from "./ledger.js";
|
|
9
|
+
export * from "./proofs.js";
|
|
10
|
+
export * from "./report.js";
|
|
11
|
+
export * from "./scenarios.js";
|
|
12
|
+
export * from "./tap-parser.js";
|
|
13
|
+
export * from "./trace.js";
|