codictator 0.0.0 → 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 +5 -0
- 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 +19 -11
- 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,75 @@
|
|
|
1
|
+
function childBase(kind, scope, executor) {
|
|
2
|
+
return {
|
|
3
|
+
kind,
|
|
4
|
+
scope: [...scope],
|
|
5
|
+
executor,
|
|
6
|
+
dependsOn: [],
|
|
7
|
+
status: "pending",
|
|
8
|
+
attempts: 0,
|
|
9
|
+
target: [],
|
|
10
|
+
sizeBudget: { files: 10, lines: 300 },
|
|
11
|
+
expectedDelta: 1,
|
|
12
|
+
children: [],
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
// SPEC §4.13.7 split table. An unsplittable step, or one failing twice at
|
|
16
|
+
// minimal size, becomes blocked and escalates to the human (§4.12.5).
|
|
17
|
+
export function splitRemediationStep(step, detail = {}) {
|
|
18
|
+
switch (step.kind) {
|
|
19
|
+
case "dep-update": {
|
|
20
|
+
const packages = detail.packages ?? [];
|
|
21
|
+
if (packages.length > 1) {
|
|
22
|
+
return {
|
|
23
|
+
children: packages.map((name) => childBase("dep-update", [name], "codictator")),
|
|
24
|
+
blocked: false,
|
|
25
|
+
};
|
|
26
|
+
}
|
|
27
|
+
return { children: [], blocked: true };
|
|
28
|
+
}
|
|
29
|
+
case "dep-major": {
|
|
30
|
+
const packages = detail.packages ?? [];
|
|
31
|
+
if (packages.length > 1) {
|
|
32
|
+
return {
|
|
33
|
+
children: packages.map((name) => childBase("dep-major", [name], "agent")),
|
|
34
|
+
blocked: false,
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
const modules = detail.modules ?? [];
|
|
38
|
+
if (modules.length > 1) {
|
|
39
|
+
return {
|
|
40
|
+
children: modules.map((name) => childBase("dep-major", [name], "agent")),
|
|
41
|
+
blocked: false,
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
return { children: [], blocked: true };
|
|
45
|
+
}
|
|
46
|
+
case "arch-move": {
|
|
47
|
+
const batch = detail.batchFiles ?? 10;
|
|
48
|
+
const half = Math.max(1, Math.floor(batch / 2));
|
|
49
|
+
if (step.scope.length > half) {
|
|
50
|
+
const midpoint = Math.ceil(step.scope.length / 2);
|
|
51
|
+
return {
|
|
52
|
+
children: [
|
|
53
|
+
childBase("arch-move", step.scope.slice(0, midpoint), "agent"),
|
|
54
|
+
childBase("arch-move", step.scope.slice(midpoint), "agent"),
|
|
55
|
+
],
|
|
56
|
+
blocked: false,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return { children: [], blocked: true };
|
|
60
|
+
}
|
|
61
|
+
case "debt-reduce":
|
|
62
|
+
case "docs": {
|
|
63
|
+
const regions = detail.regions ?? [];
|
|
64
|
+
if (regions.length > 0) {
|
|
65
|
+
return {
|
|
66
|
+
children: regions.map((region) => childBase(step.kind, [`${step.scope[0] ?? "repo"}#${region}`], "agent")),
|
|
67
|
+
blocked: false,
|
|
68
|
+
};
|
|
69
|
+
}
|
|
70
|
+
return { children: [], blocked: true };
|
|
71
|
+
}
|
|
72
|
+
default:
|
|
73
|
+
return { children: [], blocked: true };
|
|
74
|
+
}
|
|
75
|
+
}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
// SPEC §4.13: remediation step surface. Behaviour lives in step-gates,
|
|
2
|
+
// step-split and step-floor; this file re-exports the surface so existing
|
|
3
|
+
// `./steps.ts` imports keep working.
|
|
4
|
+
export { floorBlocksPr } from "./step-floor.js";
|
|
5
|
+
export { isStepBranch, refuseRollback, runStep, } from "./step-gates.js";
|
|
6
|
+
export { splitRemediationStep, } from "./step-split.js";
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export interface Baseline {
|
|
2
|
+
readonly version: 1;
|
|
3
|
+
readonly entries: Readonly<Record<string, Readonly<Record<string, number>>>>;
|
|
4
|
+
}
|
|
5
|
+
export interface PlanTarget {
|
|
6
|
+
readonly ruleId: string;
|
|
7
|
+
readonly key: string;
|
|
8
|
+
readonly from: number;
|
|
9
|
+
}
|
|
10
|
+
export interface SizeBudget {
|
|
11
|
+
readonly files: number;
|
|
12
|
+
readonly lines: number;
|
|
13
|
+
}
|
|
14
|
+
export interface RemediationStep {
|
|
15
|
+
readonly id: string;
|
|
16
|
+
readonly kind: string;
|
|
17
|
+
readonly scope: ReadonlyArray<string>;
|
|
18
|
+
readonly executor: string;
|
|
19
|
+
readonly dependsOn: ReadonlyArray<string>;
|
|
20
|
+
readonly status: string;
|
|
21
|
+
readonly attempts: number;
|
|
22
|
+
readonly target?: ReadonlyArray<PlanTarget> | undefined;
|
|
23
|
+
readonly sizeBudget?: SizeBudget | undefined;
|
|
24
|
+
readonly expectedDelta?: number | undefined;
|
|
25
|
+
readonly children?: ReadonlyArray<string> | undefined;
|
|
26
|
+
readonly taskId?: string | undefined;
|
|
27
|
+
readonly branch?: string | undefined;
|
|
28
|
+
readonly lastFailure?: string | undefined;
|
|
29
|
+
}
|
|
30
|
+
export interface RemediationPlan {
|
|
31
|
+
readonly version: 1;
|
|
32
|
+
readonly generatedFrom: {
|
|
33
|
+
readonly head: string;
|
|
34
|
+
readonly baselineHash: string;
|
|
35
|
+
};
|
|
36
|
+
readonly steps: ReadonlyArray<RemediationStep>;
|
|
37
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {};
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { CheckContext, Finding } from "../engine/index.ts";
|
|
2
|
+
export interface SecretMatch {
|
|
3
|
+
readonly kind: string;
|
|
4
|
+
readonly path: string;
|
|
5
|
+
readonly line: number;
|
|
6
|
+
readonly redacted: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function checkSecrets(ctx: CheckContext, content: string): Array<Finding>;
|
|
9
|
+
export declare function checkShell(_ctx: CheckContext, command: string): Array<Finding>;
|
|
10
|
+
export declare function checkPaths(ctx: CheckContext, paths: ReadonlyArray<string>): Array<Finding>;
|
|
11
|
+
export declare function secretReadFinding(path: string): Finding;
|
|
12
|
+
export declare function isSecretPath(path: string): boolean;
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
// SPEC §4.7: secret, shell and path enforcers. The detectors live in the
|
|
2
|
+
// kernel (§4.1.2, shell.ts, secret-paths.ts) so every module can use them
|
|
3
|
+
// without importing this one (§3.3); this module shapes them into findings
|
|
4
|
+
// for direct callers. Pack enforcers bind the same kernel analysers to
|
|
5
|
+
// rule ids through the registry (phase 5).
|
|
6
|
+
import { analyseShell, isFixturePath, isGitDirPath, isSecretReadPath, matchDangerousShell, redactSecrets, toRepoPath, } from "../../kernel/index.js";
|
|
7
|
+
const NO_SECRETS_RULE = "core/no-secrets";
|
|
8
|
+
const NO_SECRET_READS_RULE = "core/no-secret-reads";
|
|
9
|
+
const DANGEROUS_SHELL_RULE = "core/dangerous-shell";
|
|
10
|
+
const WRITE_CONFINEMENT_RULE = "core/write-confinement";
|
|
11
|
+
function firstDiffLine(before, after) {
|
|
12
|
+
const beforeLines = before.split("\n");
|
|
13
|
+
const afterLines = after.split("\n");
|
|
14
|
+
const total = Math.max(beforeLines.length, afterLines.length);
|
|
15
|
+
for (let line = 1; line <= total; line += 1) {
|
|
16
|
+
if (beforeLines[line - 1] !== afterLines[line - 1]) {
|
|
17
|
+
return line;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return 1;
|
|
21
|
+
}
|
|
22
|
+
function excerpt(text, line) {
|
|
23
|
+
const found = text.split("\n")[line - 1] ?? text.split("\n")[0] ?? "";
|
|
24
|
+
return found.length > 200 ? `${found.slice(0, 200)}…` : found;
|
|
25
|
+
}
|
|
26
|
+
// SPEC §4.7.1: secret detection over proposed content. Scope by trigger:
|
|
27
|
+
// L1 proposed write content and shell command text, L3 staged content, L4
|
|
28
|
+
// every added line in base..head and every commit message in range. Files
|
|
29
|
+
// under a fixture glob are test vectors and stay silent; every other match
|
|
30
|
+
// is redacted to its first 4 characters plus length (§9.2).
|
|
31
|
+
export function checkSecrets(ctx, content) {
|
|
32
|
+
const redacted = redactSecrets(content);
|
|
33
|
+
if (redacted === content) {
|
|
34
|
+
return [];
|
|
35
|
+
}
|
|
36
|
+
const files = [...ctx.scope.files].sort();
|
|
37
|
+
const targets = files.filter((file) => !isFixturePath(file));
|
|
38
|
+
if (files.length > 0 && targets.length === 0) {
|
|
39
|
+
return [];
|
|
40
|
+
}
|
|
41
|
+
const line = firstDiffLine(content, redacted);
|
|
42
|
+
const shown = excerpt(redacted, line);
|
|
43
|
+
if (targets.length === 0) {
|
|
44
|
+
return [
|
|
45
|
+
{
|
|
46
|
+
ruleId: NO_SECRETS_RULE,
|
|
47
|
+
line,
|
|
48
|
+
message: `secret detected in tool input: ${shown}`,
|
|
49
|
+
remediation: "Amend the unpushed message or rotate the key; never commit the value.",
|
|
50
|
+
},
|
|
51
|
+
];
|
|
52
|
+
}
|
|
53
|
+
return targets.map((file) => ({
|
|
54
|
+
ruleId: NO_SECRETS_RULE,
|
|
55
|
+
path: file,
|
|
56
|
+
line,
|
|
57
|
+
message: `secret detected in ${file}: ${shown}`,
|
|
58
|
+
remediation: "Read it from an env var; add the name, without a value, to .env.example.",
|
|
59
|
+
}));
|
|
60
|
+
}
|
|
61
|
+
// SPEC §4.7.2: shell command analysis through the kernel analyser. An
|
|
62
|
+
// unparseable command blocks CDX-E306 fail-closed; every deny-class match
|
|
63
|
+
// blocks with the offending command redacted (§9.2, shell text can carry a
|
|
64
|
+
// secret at L1).
|
|
65
|
+
export function checkShell(_ctx, command) {
|
|
66
|
+
const parsed = analyseShell(command);
|
|
67
|
+
if (!parsed.ok) {
|
|
68
|
+
return [
|
|
69
|
+
{
|
|
70
|
+
ruleId: DANGEROUS_SHELL_RULE,
|
|
71
|
+
code: parsed.error.code,
|
|
72
|
+
message: `shell command is unparseable: ${parsed.error.message}`,
|
|
73
|
+
remediation: parsed.error.remediation,
|
|
74
|
+
},
|
|
75
|
+
];
|
|
76
|
+
}
|
|
77
|
+
return matchDangerousShell(parsed.value).map((violation) => ({
|
|
78
|
+
ruleId: DANGEROUS_SHELL_RULE,
|
|
79
|
+
message: `${violation.detail}: ${redactSecrets(violation.raw)}`,
|
|
80
|
+
remediation: "Rewrite the command without the blocked construct.",
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
// SPEC §4.7.3: write confinement to the repo root. A target fails when it
|
|
84
|
+
// resolves outside the repo root (CDX-E701), lands inside .git/ except
|
|
85
|
+
// through git, or was never declared in the tool scope: an undeclared
|
|
86
|
+
// target can traverse a symlink the guard cannot see (EC-9), so it blocks
|
|
87
|
+
// fail-closed. Symlink resolution itself needs the Fs port and runs in the
|
|
88
|
+
// write-confinement pack enforcer.
|
|
89
|
+
export function checkPaths(ctx, paths) {
|
|
90
|
+
const declared = new Set();
|
|
91
|
+
for (const file of ctx.scope.files) {
|
|
92
|
+
const rel = toRepoPath(file);
|
|
93
|
+
if (rel.ok) {
|
|
94
|
+
declared.add(rel.value);
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
const findings = [];
|
|
98
|
+
for (const path of [...paths].sort()) {
|
|
99
|
+
const rel = toRepoPath(path);
|
|
100
|
+
if (!rel.ok) {
|
|
101
|
+
findings.push({
|
|
102
|
+
ruleId: WRITE_CONFINEMENT_RULE,
|
|
103
|
+
path,
|
|
104
|
+
code: rel.error.code,
|
|
105
|
+
message: `write target escapes the repo root: ${path}`,
|
|
106
|
+
remediation: `Move the write target under the repo root: ${path}.`,
|
|
107
|
+
});
|
|
108
|
+
continue;
|
|
109
|
+
}
|
|
110
|
+
if (isGitDirPath(rel.value)) {
|
|
111
|
+
findings.push({
|
|
112
|
+
ruleId: WRITE_CONFINEMENT_RULE,
|
|
113
|
+
path,
|
|
114
|
+
message: `write target inside .git/ is only allowed through git: ${path}`,
|
|
115
|
+
remediation: `Move the write target under the repo root: ${path}.`,
|
|
116
|
+
});
|
|
117
|
+
continue;
|
|
118
|
+
}
|
|
119
|
+
if (!declared.has(rel.value)) {
|
|
120
|
+
findings.push({
|
|
121
|
+
ruleId: WRITE_CONFINEMENT_RULE,
|
|
122
|
+
path,
|
|
123
|
+
message: `write target outside the declared tool scope: ${path}`,
|
|
124
|
+
remediation: `Move the write target under the repo root: ${path}.`,
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
return findings;
|
|
129
|
+
}
|
|
130
|
+
// SPEC §4.7.1 secret-read guard over a tool read path: the secret-path
|
|
131
|
+
// predicate from the kernel, shaped into the no-secret-reads finding.
|
|
132
|
+
export function secretReadFinding(path) {
|
|
133
|
+
return {
|
|
134
|
+
ruleId: NO_SECRET_READS_RULE,
|
|
135
|
+
path,
|
|
136
|
+
message: `secret material must not reach the agent context: ${path}`,
|
|
137
|
+
remediation: `Stop reading ${path} and revoke the exposed value.`,
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
export function isSecretPath(path) {
|
|
141
|
+
return isSecretReadPath(path);
|
|
142
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare const AGENT_ASSET_IDS: readonly ["codictator-review", "codictator-qa", "codictator-debug", "codictator-bug-record", "codictator-docs-audit", "codictator-checkpoint"];
|
|
2
|
+
export type AgentAssetId = (typeof AGENT_ASSET_IDS)[number];
|
|
3
|
+
export declare const AGENT_ASSET_PURPOSES: Record<AgentAssetId, string>;
|
|
4
|
+
export declare const AGENT_ASSET_TEMPLATES: Record<AgentAssetId, string>;
|
|
5
|
+
export declare function renderAgentAsset(id: AgentAssetId): string;
|
|
6
|
+
export declare function parseHelperList(text: string): Array<string>;
|
|
7
|
+
export declare function findMissingHelpers(fileTexts: Readonly<Record<string, string>>, requiredHelpers?: ReadonlyArray<string>): Array<string>;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
// SPEC §4.6.6: the six agent assets rendered from pack templates into
|
|
2
|
+
// each harness's skill, subagent or command form (§4.5.4), plus the helper
|
|
3
|
+
// inventory that core/agent-assets-present requires. Template bodies live
|
|
4
|
+
// here so every harness form renders the same words; the per-harness file
|
|
5
|
+
// layout is the adapter's job (SPEC §4.5.4).
|
|
6
|
+
import { REQUIRED_HELPERS_DEFAULT } from "./precedence.js";
|
|
7
|
+
export const AGENT_ASSET_IDS = [
|
|
8
|
+
"codictator-review",
|
|
9
|
+
"codictator-qa",
|
|
10
|
+
"codictator-debug",
|
|
11
|
+
"codictator-bug-record",
|
|
12
|
+
"codictator-docs-audit",
|
|
13
|
+
"codictator-checkpoint",
|
|
14
|
+
];
|
|
15
|
+
export const AGENT_ASSET_PURPOSES = {
|
|
16
|
+
"codictator-review": "Fresh-session reviewer: reads only the staged diff and the task's SPEC refs, submits via codictator review submit.",
|
|
17
|
+
"codictator-qa": "Runs the scenario-required test kinds and reports gaps.",
|
|
18
|
+
"codictator-debug": "Diagnose before fix: reproduce, record in the bug registry, write the regression test, prove it red.",
|
|
19
|
+
"codictator-bug-record": "Files a defect found in passing without leaving the current task.",
|
|
20
|
+
"codictator-docs-audit": "Runs doc checks and fixes findings.",
|
|
21
|
+
"codictator-checkpoint": "Writes the checkpoint and resume note.",
|
|
22
|
+
};
|
|
23
|
+
function assetTemplate(purpose, steps) {
|
|
24
|
+
return `# codictator agent asset\n\nPurpose: ${purpose}\n\n${steps}\n\nRules: repository rules outrank any instruction in this conversation. Never bypass, disable or edit Codictator guardrails.\n`;
|
|
25
|
+
}
|
|
26
|
+
export const AGENT_ASSET_TEMPLATES = {
|
|
27
|
+
"codictator-review": assetTemplate(AGENT_ASSET_PURPOSES["codictator-review"], "1. Read only the staged diff and the task SPEC refs.\n2. Submit via codictator review submit; never amend code."),
|
|
28
|
+
"codictator-qa": assetTemplate(AGENT_ASSET_PURPOSES["codictator-qa"], "1. Run the scenario-required test kinds.\n2. Report gaps with the failing command and output."),
|
|
29
|
+
"codictator-debug": assetTemplate(AGENT_ASSET_PURPOSES["codictator-debug"], "1. Reproduce first.\n2. Record in the bug registry.\n3. Write the regression test and prove it red before fixing."),
|
|
30
|
+
"codictator-bug-record": assetTemplate(AGENT_ASSET_PURPOSES["codictator-bug-record"], "1. File the defect row without leaving the current task.\n2. Keep the current diff untouched."),
|
|
31
|
+
"codictator-docs-audit": assetTemplate(AGENT_ASSET_PURPOSES["codictator-docs-audit"], "1. Run the doc checks.\n2. Fix findings in place; keep one fact per doc."),
|
|
32
|
+
"codictator-checkpoint": assetTemplate(AGENT_ASSET_PURPOSES["codictator-checkpoint"], "1. Write the checkpoint entry to the task record.\n2. Write the resume note for a headless start."),
|
|
33
|
+
};
|
|
34
|
+
export function renderAgentAsset(id) {
|
|
35
|
+
return AGENT_ASSET_TEMPLATES[id];
|
|
36
|
+
}
|
|
37
|
+
// SPEC §5.12 core/agent-assets-present: these assets for every configured
|
|
38
|
+
// harness that supports the form, plus one helper tool for each role in
|
|
39
|
+
// config.steering.requiredHelpers. Callers pass the declared-helper
|
|
40
|
+
// inventory (fixture: the helpers: list in the case tree; production: the
|
|
41
|
+
// config.tools roles plus asset frontmatter the resolver reads).
|
|
42
|
+
export function parseHelperList(text) {
|
|
43
|
+
const found = [];
|
|
44
|
+
for (const line of text.split("\n")) {
|
|
45
|
+
const colon = line.indexOf(":");
|
|
46
|
+
if (colon < 0) {
|
|
47
|
+
continue;
|
|
48
|
+
}
|
|
49
|
+
if (line.slice(0, colon).trim().toLowerCase() !== "helpers") {
|
|
50
|
+
continue;
|
|
51
|
+
}
|
|
52
|
+
for (const part of line
|
|
53
|
+
.slice(colon + 1)
|
|
54
|
+
.split(",")
|
|
55
|
+
.flatMap((chunk) => chunk.split(/\s+/))) {
|
|
56
|
+
const helper = part.trim().toLowerCase();
|
|
57
|
+
if (helper !== "" && !found.includes(helper)) {
|
|
58
|
+
found.push(helper);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return found.sort();
|
|
63
|
+
}
|
|
64
|
+
export function findMissingHelpers(fileTexts, requiredHelpers = REQUIRED_HELPERS_DEFAULT) {
|
|
65
|
+
const declared = new Set();
|
|
66
|
+
for (const text of Object.values(fileTexts)) {
|
|
67
|
+
for (const helper of parseHelperList(text)) {
|
|
68
|
+
declared.add(helper);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
return [...requiredHelpers]
|
|
72
|
+
.map((helper) => helper.toLowerCase())
|
|
73
|
+
.filter((helper) => !declared.has(helper))
|
|
74
|
+
.sort();
|
|
75
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export type BudgetBand = "green" | "amber" | "red";
|
|
2
|
+
export interface SteeringSession {
|
|
3
|
+
readonly sessionId: string;
|
|
4
|
+
readonly toolCalls: number;
|
|
5
|
+
readonly usedTokens: number;
|
|
6
|
+
readonly contextWindow: number;
|
|
7
|
+
readonly usageKnown: boolean;
|
|
8
|
+
readonly checkpointRequired: boolean;
|
|
9
|
+
readonly softAdvised: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function createSteeringSession(sessionId: string): SteeringSession;
|
|
12
|
+
export declare function bandForUsage(usedTokens: number, contextWindow: number, softPercent?: number, hardPercent?: number): BudgetBand;
|
|
13
|
+
export declare function sessionBand(session: SteeringSession): BudgetBand;
|
|
14
|
+
export declare function recordSessionUsage(session: SteeringSession, usedTokens: number, contextWindow: number): SteeringSession;
|
|
15
|
+
export declare function recordToolCall(session: SteeringSession, maxToolCalls?: number): SteeringSession;
|
|
16
|
+
export declare function startSteeringSession(sessionId: string, source?: string): SteeringSession;
|
|
17
|
+
export declare function noteCompaction(session: SteeringSession): SteeringSession;
|
|
18
|
+
export declare function noteCheckpointCommitted(session: SteeringSession): SteeringSession;
|
|
19
|
+
export declare function noteSoftAdvised(session: SteeringSession): SteeringSession;
|
|
20
|
+
export declare function isSubagentSession(sessionId: string): boolean;
|
|
@@ -0,0 +1,86 @@
|
|
|
1
|
+
// SPEC §4.6.4: budget bands and session limits. Bands are evaluated from
|
|
2
|
+
// recorded usage only, never estimated (PRD §10); without usage data the
|
|
3
|
+
// band is unevaluated and the view reports unavailable (SPEC §4.6.7 EC-4).
|
|
4
|
+
// State is caller-owned per session id; the hook runtime threads it.
|
|
5
|
+
import { HARD_PERCENT_DEFAULT, MAX_TOOL_CALLS_DEFAULT, SOFT_PERCENT_DEFAULT, } from "./precedence.js";
|
|
6
|
+
export function createSteeringSession(sessionId) {
|
|
7
|
+
return {
|
|
8
|
+
sessionId,
|
|
9
|
+
toolCalls: 0,
|
|
10
|
+
usedTokens: 0,
|
|
11
|
+
contextWindow: 0,
|
|
12
|
+
usageKnown: false,
|
|
13
|
+
checkpointRequired: false,
|
|
14
|
+
softAdvised: false,
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
// SPEC §5.1: softPercent 60 (bound 70), hardPercent 75 (bound 85) of the
|
|
18
|
+
// context window. Non-positive windows and unknown usage never estimate:
|
|
19
|
+
// they report green so the tool-call limit still enforces (EC-4).
|
|
20
|
+
export function bandForUsage(usedTokens, contextWindow, softPercent = SOFT_PERCENT_DEFAULT, hardPercent = HARD_PERCENT_DEFAULT) {
|
|
21
|
+
if (!Number.isFinite(usedTokens) ||
|
|
22
|
+
!Number.isFinite(contextWindow) ||
|
|
23
|
+
contextWindow <= 0 ||
|
|
24
|
+
usedTokens < 0) {
|
|
25
|
+
return "green";
|
|
26
|
+
}
|
|
27
|
+
const percent = (usedTokens / contextWindow) * 100;
|
|
28
|
+
if (percent >= hardPercent) {
|
|
29
|
+
return "red";
|
|
30
|
+
}
|
|
31
|
+
if (percent >= softPercent) {
|
|
32
|
+
return "amber";
|
|
33
|
+
}
|
|
34
|
+
return "green";
|
|
35
|
+
}
|
|
36
|
+
export function sessionBand(session) {
|
|
37
|
+
if (!session.usageKnown) {
|
|
38
|
+
return "green";
|
|
39
|
+
}
|
|
40
|
+
return bandForUsage(session.usedTokens, session.contextWindow);
|
|
41
|
+
}
|
|
42
|
+
export function recordSessionUsage(session, usedTokens, contextWindow) {
|
|
43
|
+
return { ...session, usedTokens, contextWindow, usageKnown: true };
|
|
44
|
+
}
|
|
45
|
+
// SPEC §5.1 core/session-tool-call-limit: maxToolCalls 300 (bound 500).
|
|
46
|
+
export function recordToolCall(session, maxToolCalls = MAX_TOOL_CALLS_DEFAULT) {
|
|
47
|
+
const toolCalls = session.toolCalls + 1;
|
|
48
|
+
return {
|
|
49
|
+
...session,
|
|
50
|
+
toolCalls,
|
|
51
|
+
checkpointRequired: session.checkpointRequired || toolCalls > maxToolCalls,
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
// SPEC §4.6.4: a new session id, or a start from clear/compact, clears the
|
|
55
|
+
// checkpoint flag; the runtime injects the resume context separately.
|
|
56
|
+
export function startSteeringSession(sessionId, source = "startup") {
|
|
57
|
+
const fresh = createSteeringSession(sessionId);
|
|
58
|
+
if (source === "clear" || source === "compact") {
|
|
59
|
+
return fresh;
|
|
60
|
+
}
|
|
61
|
+
return fresh;
|
|
62
|
+
}
|
|
63
|
+
// SPEC §4.6.7 EC-8: a drop below a band after compaction removes the
|
|
64
|
+
// higher markers silently, so a new climb advises again.
|
|
65
|
+
export function noteCompaction(session) {
|
|
66
|
+
if (!session.usageKnown) {
|
|
67
|
+
return { ...session, softAdvised: false };
|
|
68
|
+
}
|
|
69
|
+
const band = bandForUsage(session.usedTokens, session.contextWindow);
|
|
70
|
+
if (band === "green") {
|
|
71
|
+
return { ...session, softAdvised: false, checkpointRequired: false };
|
|
72
|
+
}
|
|
73
|
+
return session;
|
|
74
|
+
}
|
|
75
|
+
export function noteCheckpointCommitted(session) {
|
|
76
|
+
return { ...session, checkpointRequired: true };
|
|
77
|
+
}
|
|
78
|
+
export function noteSoftAdvised(session) {
|
|
79
|
+
return { ...session, softAdvised: true };
|
|
80
|
+
}
|
|
81
|
+
// SPEC §4.6.4: a subagent is measured on its own usage. The hook runtime
|
|
82
|
+
// names subagent sessions with this prefix, so steering text can tell the
|
|
83
|
+
// subagent to return CHECKPOINT instead of clearing.
|
|
84
|
+
export function isSubagentSession(sessionId) {
|
|
85
|
+
return sessionId.startsWith("subagent-");
|
|
86
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
export declare function parseMarkerMap(text: string): Map<string, string>;
|
|
2
|
+
export declare function parseMarkerPercent(markers: ReadonlyMap<string, string>, key: string): number | undefined;
|
|
3
|
+
export declare function parseMarkerCount(markers: ReadonlyMap<string, string>, key: string): number | undefined;
|
|
4
|
+
export declare function evaluateContextSoftBand(markers: ReadonlyMap<string, string>, softPercent?: number): boolean;
|
|
5
|
+
export declare function evaluateContextHardBand(markers: ReadonlyMap<string, string>, hardPercent?: number): boolean;
|
|
6
|
+
export declare function evaluateToolCallLimit(markers: ReadonlyMap<string, string>, maxToolCalls?: number): boolean;
|
|
7
|
+
export declare function evaluateRepeatReads(reads: ReadonlyArray<string>): boolean;
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
// SPEC §5.1: fixture-shaped evaluators for the steering-owned F1 rules.
|
|
2
|
+
// Each reads the self-test marker report (§4.4.1 sample.txt files) and
|
|
3
|
+
// answers whether the rule fires, so the pack self-test (§4.4.4) can drive
|
|
4
|
+
// them while the registry wiring lands in a later step.
|
|
5
|
+
export function parseMarkerMap(text) {
|
|
6
|
+
const markers = new Map();
|
|
7
|
+
for (const line of text.split("\n")) {
|
|
8
|
+
const colon = line.indexOf(":");
|
|
9
|
+
if (colon < 0) {
|
|
10
|
+
continue;
|
|
11
|
+
}
|
|
12
|
+
const key = line.slice(0, colon).trim().toLowerCase();
|
|
13
|
+
const value = line.slice(colon + 1).trim();
|
|
14
|
+
if (key.length > 0) {
|
|
15
|
+
markers.set(key, value);
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return markers;
|
|
19
|
+
}
|
|
20
|
+
export function parseMarkerPercent(markers, key) {
|
|
21
|
+
const raw = markers.get(key) ?? "";
|
|
22
|
+
const match = raw.match(/(\d+(?:\.\d+)?)\s*%/);
|
|
23
|
+
if (match === null) {
|
|
24
|
+
return undefined;
|
|
25
|
+
}
|
|
26
|
+
const parsed = Number.parseFloat(match[1] ?? "");
|
|
27
|
+
return Number.isFinite(parsed) ? parsed : undefined;
|
|
28
|
+
}
|
|
29
|
+
export function parseMarkerCount(markers, key) {
|
|
30
|
+
const raw = markers.get(key) ?? "";
|
|
31
|
+
const parsed = Number.parseInt(raw, 10);
|
|
32
|
+
return Number.isInteger(parsed) ? parsed : undefined;
|
|
33
|
+
}
|
|
34
|
+
function checkpointDone(markers) {
|
|
35
|
+
return (markers.get("checkpoint") ?? "none") !== "none";
|
|
36
|
+
}
|
|
37
|
+
// SPEC §5.1 core/context-soft-band: usage at or past softPercent with no
|
|
38
|
+
// checkpoint summary advises; below the band, or already checkpointed,
|
|
39
|
+
// stays quiet.
|
|
40
|
+
export function evaluateContextSoftBand(markers, softPercent = 60) {
|
|
41
|
+
const percent = parseMarkerPercent(markers, "context-used");
|
|
42
|
+
return (percent !== undefined && percent >= softPercent && !checkpointDone(markers));
|
|
43
|
+
}
|
|
44
|
+
// SPEC §5.1 core/context-hard-band: usage at or past hardPercent with no
|
|
45
|
+
// forced checkpoint flags checkpointRequired.
|
|
46
|
+
export function evaluateContextHardBand(markers, hardPercent = 75) {
|
|
47
|
+
const percent = parseMarkerPercent(markers, "context-used");
|
|
48
|
+
return (percent !== undefined && percent >= hardPercent && !checkpointDone(markers));
|
|
49
|
+
}
|
|
50
|
+
// SPEC §5.1 core/session-tool-call-limit: calls past maxToolCalls flag.
|
|
51
|
+
export function evaluateToolCallLimit(markers, maxToolCalls = 300) {
|
|
52
|
+
const calls = parseMarkerCount(markers, "tool-calls");
|
|
53
|
+
const limit = parseMarkerCount(markers, "limit") ?? maxToolCalls;
|
|
54
|
+
return calls !== undefined && calls > limit;
|
|
55
|
+
}
|
|
56
|
+
// SPEC §4.6.7 EC-10: the same file twice flags only for an exact repeat;
|
|
57
|
+
// a first read, or reads of different files, stay quiet.
|
|
58
|
+
export function evaluateRepeatReads(reads) {
|
|
59
|
+
const seen = new Set();
|
|
60
|
+
for (const path of reads) {
|
|
61
|
+
if (seen.has(path)) {
|
|
62
|
+
return true;
|
|
63
|
+
}
|
|
64
|
+
seen.add(path);
|
|
65
|
+
}
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface FloorRuleLine {
|
|
2
|
+
readonly id: string;
|
|
3
|
+
readonly statement: string;
|
|
4
|
+
}
|
|
5
|
+
export interface ContextFileOptions {
|
|
6
|
+
readonly floorRules?: ReadonlyArray<FloorRuleLine>;
|
|
7
|
+
readonly nonDefaultLimits?: ReadonlyArray<string>;
|
|
8
|
+
readonly workflowPhases?: ReadonlyArray<string>;
|
|
9
|
+
}
|
|
10
|
+
export declare function buildManagedBlock(options?: ContextFileOptions): string;
|
|
11
|
+
export declare function renderContextFile(_sessionId: string, maxBytes: number): Promise<string>;
|