codictator 0.0.0 → 0.1.3

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.
Files changed (840) hide show
  1. package/LICENSE +9 -0
  2. package/README.md +5 -0
  3. package/dist/builtin-packs/core/fixtures/agent-assets-present/passing/basic/case.json +10 -0
  4. package/dist/builtin-packs/core/fixtures/agent-assets-present/violating/basic/case.json +10 -0
  5. package/dist/builtin-packs/core/fixtures/arch-boundaries/passing/basic/case.json +10 -0
  6. package/dist/builtin-packs/core/fixtures/arch-boundaries/violating/basic/case.json +10 -0
  7. package/dist/builtin-packs/core/fixtures/arch-module-mapped/passing/basic/case.json +10 -0
  8. package/dist/builtin-packs/core/fixtures/arch-module-mapped/violating/basic/case.json +10 -0
  9. package/dist/builtin-packs/core/fixtures/arch-module-size/passing/basic/case.json +10 -0
  10. package/dist/builtin-packs/core/fixtures/arch-module-size/violating/basic/case.json +10 -0
  11. package/dist/builtin-packs/core/fixtures/arch-no-cycles/passing/basic/case.json +10 -0
  12. package/dist/builtin-packs/core/fixtures/arch-no-cycles/violating/basic/case.json +10 -0
  13. package/dist/builtin-packs/core/fixtures/arch-profile-declared/passing/basic/case.json +10 -0
  14. package/dist/builtin-packs/core/fixtures/arch-profile-declared/violating/basic/case.json +10 -0
  15. package/dist/builtin-packs/core/fixtures/arch-public-entry/passing/basic/case.json +10 -0
  16. package/dist/builtin-packs/core/fixtures/arch-public-entry/violating/basic/case.json +10 -0
  17. package/dist/builtin-packs/core/fixtures/branch-protection/passing/basic/case.json +10 -0
  18. package/dist/builtin-packs/core/fixtures/branch-protection/violating/basic/case.json +10 -0
  19. package/dist/builtin-packs/core/fixtures/bug-registry/passing/basic/case.json +10 -0
  20. package/dist/builtin-packs/core/fixtures/bug-registry/violating/basic/case.json +10 -0
  21. package/dist/builtin-packs/core/fixtures/bug-rows-immutable/passing/basic/case.json +10 -0
  22. package/dist/builtin-packs/core/fixtures/bug-rows-immutable/violating/basic/case.json +10 -0
  23. package/dist/builtin-packs/core/fixtures/ci-actions-pinned/passing/basic/case.json +10 -0
  24. package/dist/builtin-packs/core/fixtures/ci-actions-pinned/violating/basic/case.json +10 -0
  25. package/dist/builtin-packs/core/fixtures/ci-present/passing/basic/case.json +10 -0
  26. package/dist/builtin-packs/core/fixtures/ci-present/violating/basic/case.json +10 -0
  27. package/dist/builtin-packs/core/fixtures/ci-required-check/passing/basic/case.json +10 -0
  28. package/dist/builtin-packs/core/fixtures/ci-required-check/violating/basic/case.json +10 -0
  29. package/dist/builtin-packs/core/fixtures/compiler-strict/passing/basic/case.json +10 -0
  30. package/dist/builtin-packs/core/fixtures/compiler-strict/violating/basic/case.json +10 -0
  31. package/dist/builtin-packs/core/fixtures/complexity/passing/basic/case.json +10 -0
  32. package/dist/builtin-packs/core/fixtures/complexity/violating/basic/case.json +10 -0
  33. package/dist/builtin-packs/core/fixtures/context-hard-band/passing/basic/case.json +10 -0
  34. package/dist/builtin-packs/core/fixtures/context-hard-band/violating/basic/case.json +10 -0
  35. package/dist/builtin-packs/core/fixtures/context-soft-band/passing/basic/case.json +10 -0
  36. package/dist/builtin-packs/core/fixtures/context-soft-band/violating/basic/case.json +10 -0
  37. package/dist/builtin-packs/core/fixtures/conventional-commit/passing/basic/case.json +10 -0
  38. package/dist/builtin-packs/core/fixtures/conventional-commit/violating/basic/case.json +10 -0
  39. package/dist/builtin-packs/core/fixtures/coverage-floor/passing/basic/case.json +10 -0
  40. package/dist/builtin-packs/core/fixtures/coverage-floor/violating/basic/case.json +10 -0
  41. package/dist/builtin-packs/core/fixtures/custom-pack-selftest/passing/basic/case.json +10 -0
  42. package/dist/builtin-packs/core/fixtures/custom-pack-selftest/violating/basic/case.json +10 -0
  43. package/dist/builtin-packs/core/fixtures/dangerous-shell/passing/basic/case.json +10 -0
  44. package/dist/builtin-packs/core/fixtures/dangerous-shell/violating/basic/case.json +10 -0
  45. package/dist/builtin-packs/core/fixtures/dead-code/passing/basic/case.json +10 -0
  46. package/dist/builtin-packs/core/fixtures/dead-code/violating/basic/case.json +10 -0
  47. package/dist/builtin-packs/core/fixtures/dep-exact-pin/passing/basic/case.json +10 -0
  48. package/dist/builtin-packs/core/fixtures/dep-exact-pin/violating/basic/case.json +10 -0
  49. package/dist/builtin-packs/core/fixtures/dep-latest-stable/passing/basic/case.json +10 -0
  50. package/dist/builtin-packs/core/fixtures/dep-latest-stable/violating/basic/case.json +10 -0
  51. package/dist/builtin-packs/core/fixtures/dep-license/passing/basic/case.json +10 -0
  52. package/dist/builtin-packs/core/fixtures/dep-license/violating/basic/case.json +10 -0
  53. package/dist/builtin-packs/core/fixtures/dep-lockfile/passing/basic/case.json +10 -0
  54. package/dist/builtin-packs/core/fixtures/dep-lockfile/violating/basic/case.json +10 -0
  55. package/dist/builtin-packs/core/fixtures/dep-new-needs-reason/passing/basic/case.json +10 -0
  56. package/dist/builtin-packs/core/fixtures/dep-new-needs-reason/violating/basic/case.json +10 -0
  57. package/dist/builtin-packs/core/fixtures/dep-no-deprecated/passing/basic/case.json +10 -0
  58. package/dist/builtin-packs/core/fixtures/dep-no-deprecated/violating/basic/case.json +10 -0
  59. package/dist/builtin-packs/core/fixtures/dep-no-vulnerable/passing/basic/case.json +10 -0
  60. package/dist/builtin-packs/core/fixtures/dep-no-vulnerable/violating/basic/case.json +10 -0
  61. package/dist/builtin-packs/core/fixtures/dep-one-per-capability/passing/basic/case.json +10 -0
  62. package/dist/builtin-packs/core/fixtures/dep-one-per-capability/violating/basic/case.json +10 -0
  63. package/dist/builtin-packs/core/fixtures/diagnose-before-fix/passing/basic/case.json +10 -0
  64. package/dist/builtin-packs/core/fixtures/diagnose-before-fix/violating/basic/case.json +10 -0
  65. package/dist/builtin-packs/core/fixtures/doc-breadth/passing/basic/case.json +10 -0
  66. package/dist/builtin-packs/core/fixtures/doc-breadth/violating/basic/case.json +10 -0
  67. package/dist/builtin-packs/core/fixtures/doc-density/passing/basic/case.json +10 -0
  68. package/dist/builtin-packs/core/fixtures/doc-density/violating/basic/case.json +10 -0
  69. package/dist/builtin-packs/core/fixtures/doc-links-valid/passing/basic/case.json +10 -0
  70. package/dist/builtin-packs/core/fixtures/doc-links-valid/violating/basic/case.json +10 -0
  71. package/dist/builtin-packs/core/fixtures/doc-no-corpus-counts/passing/basic/case.json +10 -0
  72. package/dist/builtin-packs/core/fixtures/doc-no-corpus-counts/violating/basic/case.json +10 -0
  73. package/dist/builtin-packs/core/fixtures/doc-no-inline-changelog/passing/basic/case.json +10 -0
  74. package/dist/builtin-packs/core/fixtures/doc-no-inline-changelog/violating/basic/case.json +10 -0
  75. package/dist/builtin-packs/core/fixtures/doc-one-level/passing/basic/case.json +10 -0
  76. package/dist/builtin-packs/core/fixtures/doc-one-level/violating/basic/case.json +10 -0
  77. package/dist/builtin-packs/core/fixtures/doc-placement/passing/basic/case.json +10 -0
  78. package/dist/builtin-packs/core/fixtures/doc-placement/violating/basic/case.json +10 -0
  79. package/dist/builtin-packs/core/fixtures/doc-router-leaf/passing/basic/case.json +10 -0
  80. package/dist/builtin-packs/core/fixtures/doc-router-leaf/violating/basic/case.json +10 -0
  81. package/dist/builtin-packs/core/fixtures/doc-single-owner/passing/basic/case.json +10 -0
  82. package/dist/builtin-packs/core/fixtures/doc-single-owner/violating/basic/case.json +10 -0
  83. package/dist/builtin-packs/core/fixtures/doc-size/passing/basic/case.json +10 -0
  84. package/dist/builtin-packs/core/fixtures/doc-size/violating/basic/case.json +10 -0
  85. package/dist/builtin-packs/core/fixtures/duplication/passing/basic/case.json +10 -0
  86. package/dist/builtin-packs/core/fixtures/duplication/violating/basic/case.json +10 -0
  87. package/dist/builtin-packs/core/fixtures/engine-version-match/passing/basic/case.json +10 -0
  88. package/dist/builtin-packs/core/fixtures/engine-version-match/violating/basic/case.json +10 -0
  89. package/dist/builtin-packs/core/fixtures/file-naming/passing/basic/case.json +10 -0
  90. package/dist/builtin-packs/core/fixtures/file-naming/violating/basic/case.json +10 -0
  91. package/dist/builtin-packs/core/fixtures/file-size/passing/basic/case.json +10 -0
  92. package/dist/builtin-packs/core/fixtures/file-size/violating/basic/case.json +10 -0
  93. package/dist/builtin-packs/core/fixtures/function-size/passing/basic/case.json +10 -0
  94. package/dist/builtin-packs/core/fixtures/function-size/violating/basic/case.json +10 -0
  95. package/dist/builtin-packs/core/fixtures/graph-before-scan/passing/basic/case.json +10 -0
  96. package/dist/builtin-packs/core/fixtures/graph-before-scan/violating/basic/case.json +10 -0
  97. package/dist/builtin-packs/core/fixtures/guardrail-manifest/passing/basic/case.json +10 -0
  98. package/dist/builtin-packs/core/fixtures/guardrail-manifest/violating/basic/case.json +10 -0
  99. package/dist/builtin-packs/core/fixtures/history-append-only/passing/basic/case.json +10 -0
  100. package/dist/builtin-packs/core/fixtures/history-append-only/violating/basic/case.json +10 -0
  101. package/dist/builtin-packs/core/fixtures/history-entry/passing/basic/case.json +10 -0
  102. package/dist/builtin-packs/core/fixtures/history-entry/violating/basic/case.json +10 -0
  103. package/dist/builtin-packs/core/fixtures/history-entry-complete/passing/basic/case.json +10 -0
  104. package/dist/builtin-packs/core/fixtures/history-entry-complete/violating/basic/case.json +10 -0
  105. package/dist/builtin-packs/core/fixtures/hooks-active/passing/basic/case.json +10 -0
  106. package/dist/builtin-packs/core/fixtures/hooks-active/violating/basic/case.json +10 -0
  107. package/dist/builtin-packs/core/fixtures/loop-breaker/passing/basic/case.json +10 -0
  108. package/dist/builtin-packs/core/fixtures/loop-breaker/violating/basic/case.json +10 -0
  109. package/dist/builtin-packs/core/fixtures/max-file-bytes/passing/basic/case.json +10 -0
  110. package/dist/builtin-packs/core/fixtures/max-file-bytes/violating/basic/case.json +10 -0
  111. package/dist/builtin-packs/core/fixtures/mcp-declared/passing/basic/case.json +10 -0
  112. package/dist/builtin-packs/core/fixtures/mcp-declared/violating/basic/case.json +10 -0
  113. package/dist/builtin-packs/core/fixtures/no-assertion-loss/passing/basic/case.json +10 -0
  114. package/dist/builtin-packs/core/fixtures/no-assertion-loss/violating/basic/case.json +10 -0
  115. package/dist/builtin-packs/core/fixtures/no-baseline-raise/passing/basic/case.json +10 -0
  116. package/dist/builtin-packs/core/fixtures/no-baseline-raise/violating/basic/case.json +10 -0
  117. package/dist/builtin-packs/core/fixtures/no-bypass/passing/basic/case.json +10 -0
  118. package/dist/builtin-packs/core/fixtures/no-bypass/violating/basic/case.json +10 -0
  119. package/dist/builtin-packs/core/fixtures/no-fixture-shrink/passing/basic/case.json +10 -0
  120. package/dist/builtin-packs/core/fixtures/no-fixture-shrink/violating/basic/case.json +10 -0
  121. package/dist/builtin-packs/core/fixtures/no-guard-removal/passing/basic/case.json +10 -0
  122. package/dist/builtin-packs/core/fixtures/no-guard-removal/violating/basic/case.json +10 -0
  123. package/dist/builtin-packs/core/fixtures/no-new-suppressions/passing/basic/case.json +10 -0
  124. package/dist/builtin-packs/core/fixtures/no-new-suppressions/violating/basic/case.json +10 -0
  125. package/dist/builtin-packs/core/fixtures/no-secret-reads/passing/basic/case.json +10 -0
  126. package/dist/builtin-packs/core/fixtures/no-secret-reads/violating/basic/case.json +10 -0
  127. package/dist/builtin-packs/core/fixtures/no-secrets/passing/basic/case.json +10 -0
  128. package/dist/builtin-packs/core/fixtures/no-secrets/violating/basic/case.json +10 -0
  129. package/dist/builtin-packs/core/fixtures/no-skipped-tests/passing/basic/case.json +10 -0
  130. package/dist/builtin-packs/core/fixtures/no-skipped-tests/violating/basic/case.json +10 -0
  131. package/dist/builtin-packs/core/fixtures/no-speculative-abstraction/passing/basic/case.json +10 -0
  132. package/dist/builtin-packs/core/fixtures/no-speculative-abstraction/violating/basic/case.json +10 -0
  133. package/dist/builtin-packs/core/fixtures/no-threshold-lowering/passing/basic/case.json +10 -0
  134. package/dist/builtin-packs/core/fixtures/no-threshold-lowering/violating/basic/case.json +10 -0
  135. package/dist/builtin-packs/core/fixtures/perf-budgets/passing/basic/case.json +10 -0
  136. package/dist/builtin-packs/core/fixtures/perf-budgets/violating/basic/case.json +10 -0
  137. package/dist/builtin-packs/core/fixtures/ratchet-touched-improves/passing/basic/case.json +10 -0
  138. package/dist/builtin-packs/core/fixtures/ratchet-touched-improves/violating/basic/case.json +10 -0
  139. package/dist/builtin-packs/core/fixtures/read-dedupe/passing/basic/case.json +10 -0
  140. package/dist/builtin-packs/core/fixtures/read-dedupe/violating/basic/case.json +10 -0
  141. package/dist/builtin-packs/core/fixtures/red-before-green/passing/basic/case.json +10 -0
  142. package/dist/builtin-packs/core/fixtures/red-before-green/violating/basic/case.json +10 -0
  143. package/dist/builtin-packs/core/fixtures/regression-test-for-fix/passing/basic/case.json +10 -0
  144. package/dist/builtin-packs/core/fixtures/regression-test-for-fix/violating/basic/case.json +10 -0
  145. package/dist/builtin-packs/core/fixtures/remediation-step-size/passing/basic/case.json +10 -0
  146. package/dist/builtin-packs/core/fixtures/remediation-step-size/violating/basic/case.json +10 -0
  147. package/dist/builtin-packs/core/fixtures/repo-hygiene/passing/basic/case.json +10 -0
  148. package/dist/builtin-packs/core/fixtures/repo-hygiene/violating/basic/case.json +10 -0
  149. package/dist/builtin-packs/core/fixtures/review-gate/passing/basic/case.json +10 -0
  150. package/dist/builtin-packs/core/fixtures/review-gate/violating/basic/case.json +10 -0
  151. package/dist/builtin-packs/core/fixtures/review-round-cap/passing/basic/case.json +10 -0
  152. package/dist/builtin-packs/core/fixtures/review-round-cap/violating/basic/case.json +10 -0
  153. package/dist/builtin-packs/core/fixtures/session-tool-call-limit/passing/basic/case.json +10 -0
  154. package/dist/builtin-packs/core/fixtures/session-tool-call-limit/violating/basic/case.json +10 -0
  155. package/dist/builtin-packs/core/fixtures/spec-trace/passing/basic/case.json +10 -0
  156. package/dist/builtin-packs/core/fixtures/spec-trace/violating/basic/case.json +10 -0
  157. package/dist/builtin-packs/core/fixtures/test-command-intact/passing/basic/case.json +10 -0
  158. package/dist/builtin-packs/core/fixtures/test-command-intact/violating/basic/case.json +10 -0
  159. package/dist/builtin-packs/core/fixtures/test-kinds-by-scenario/passing/basic/case.json +10 -0
  160. package/dist/builtin-packs/core/fixtures/test-kinds-by-scenario/violating/basic/case.json +10 -0
  161. package/dist/builtin-packs/core/fixtures/waivers-valid/passing/basic/case.json +10 -0
  162. package/dist/builtin-packs/core/fixtures/waivers-valid/violating/basic/case.json +10 -0
  163. package/dist/builtin-packs/core/fixtures/workflow-gates/passing/basic/case.json +10 -0
  164. package/dist/builtin-packs/core/fixtures/workflow-gates/violating/basic/case.json +10 -0
  165. package/dist/builtin-packs/core/fixtures/write-confinement/passing/basic/case.json +10 -0
  166. package/dist/builtin-packs/core/fixtures/write-confinement/violating/basic/case.json +10 -0
  167. package/dist/builtin-packs/core/fixtures/writes-within-plan/passing/basic/case.json +10 -0
  168. package/dist/builtin-packs/core/fixtures/writes-within-plan/violating/basic/case.json +10 -0
  169. package/dist/builtin-packs/core/index.ts +8 -0
  170. package/dist/builtin-packs/core/pack.json +2057 -0
  171. package/dist/builtin-packs/dotnet/index.ts +47 -0
  172. package/dist/builtin-packs/python/extract.ts +245 -0
  173. package/dist/builtin-packs/python/fixtures/lint/passing/basic/case.json +10 -0
  174. package/dist/builtin-packs/python/fixtures/lint/violating/basic/case.json +10 -0
  175. package/dist/builtin-packs/python/fixtures/no-phantom-import/passing/basic/case.json +12 -0
  176. package/dist/builtin-packs/python/fixtures/no-phantom-import/violating/basic/case.json +11 -0
  177. package/dist/builtin-packs/python/fixtures/security-patterns/passing/basic/case.json +10 -0
  178. package/dist/builtin-packs/python/fixtures/security-patterns/violating/basic/case.json +10 -0
  179. package/dist/builtin-packs/python/fixtures/typecheck/passing/basic/case.json +10 -0
  180. package/dist/builtin-packs/python/fixtures/typecheck/violating/basic/case.json +10 -0
  181. package/dist/builtin-packs/python/index.ts +57 -0
  182. package/dist/builtin-packs/python/pack.json +116 -0
  183. package/dist/builtin-packs/typescript/extract-clauses.ts +153 -0
  184. package/dist/builtin-packs/typescript/extract-literals.ts +111 -0
  185. package/dist/builtin-packs/typescript/extract-words.ts +79 -0
  186. package/dist/builtin-packs/typescript/extract.ts +77 -0
  187. package/dist/builtin-packs/typescript/fixtures/lint/passing/basic/case.json +10 -0
  188. package/dist/builtin-packs/typescript/fixtures/lint/passing/exported/case.json +8 -0
  189. package/dist/builtin-packs/typescript/fixtures/lint/violating/basic/case.json +10 -0
  190. package/dist/builtin-packs/typescript/fixtures/no-phantom-import/passing/basic/case.json +10 -0
  191. package/dist/builtin-packs/typescript/fixtures/no-phantom-import/passing/host-provided/case.json +10 -0
  192. package/dist/builtin-packs/typescript/fixtures/no-phantom-import/violating/basic/case.json +10 -0
  193. package/dist/builtin-packs/typescript/fixtures/no-phantom-import/violating/host-provided/case.json +10 -0
  194. package/dist/builtin-packs/typescript/fixtures/security-patterns/passing/basic/case.json +10 -0
  195. package/dist/builtin-packs/typescript/fixtures/security-patterns/violating/basic/case.json +10 -0
  196. package/dist/builtin-packs/typescript/fixtures/typecheck/passing/basic/case.json +10 -0
  197. package/dist/builtin-packs/typescript/fixtures/typecheck/violating/basic/case.json +10 -0
  198. package/dist/builtin-packs/typescript/index.ts +85 -0
  199. package/dist/builtin-packs/typescript/lex.ts +199 -0
  200. package/dist/builtin-packs/typescript/measures-exports.ts +173 -0
  201. package/dist/builtin-packs/typescript/measures-functions.ts +138 -0
  202. package/dist/builtin-packs/typescript/measures.ts +10 -0
  203. package/dist/builtin-packs/typescript/naming.ts +47 -0
  204. package/dist/builtin-packs/typescript/pack.json +169 -0
  205. package/dist/builtin-packs/typescript/patterns.ts +93 -0
  206. package/dist/builtin-packs/typescript/resolve.ts +224 -0
  207. package/dist/builtin-packs/typescript/strict.ts +177 -0
  208. package/dist/builtin-packs/typescript/titles.ts +184 -0
  209. package/dist/cli/baseline.d.ts +3 -0
  210. package/dist/cli/baseline.js +67 -0
  211. package/dist/cli/ci-bot-change.d.ts +3 -0
  212. package/dist/cli/ci-bot-change.js +54 -0
  213. package/dist/cli/ci-range.d.ts +18 -0
  214. package/dist/cli/ci-range.js +228 -0
  215. package/dist/cli/ci-summary.d.ts +3 -0
  216. package/dist/cli/ci-summary.js +45 -0
  217. package/dist/cli/ci.d.ts +4 -0
  218. package/dist/cli/ci.js +195 -0
  219. package/dist/cli/commands.d.ts +5 -0
  220. package/dist/cli/commands.js +39 -0
  221. package/dist/cli/deps.d.ts +3 -0
  222. package/dist/cli/deps.js +115 -0
  223. package/dist/cli/drift.d.ts +11 -0
  224. package/dist/cli/drift.js +91 -0
  225. package/dist/cli/evaluate.d.ts +20 -0
  226. package/dist/cli/evaluate.js +213 -0
  227. package/dist/cli/gate-scope.d.ts +11 -0
  228. package/dist/cli/gate-scope.js +93 -0
  229. package/dist/cli/git-hook.d.ts +3 -0
  230. package/dist/cli/git-hook.js +184 -0
  231. package/dist/cli/guardrail.d.ts +5 -0
  232. package/dist/cli/guardrail.js +190 -0
  233. package/dist/cli/index.d.ts +12 -0
  234. package/dist/cli/index.js +198 -0
  235. package/dist/cli/init-plan.d.ts +23 -0
  236. package/dist/cli/init-plan.js +135 -0
  237. package/dist/cli/init.d.ts +3 -0
  238. package/dist/cli/init.js +122 -0
  239. package/dist/cli/inspect-status.d.ts +8 -0
  240. package/dist/cli/inspect-status.js +164 -0
  241. package/dist/cli/inspect.d.ts +5 -0
  242. package/dist/cli/inspect.js +98 -0
  243. package/dist/cli/main.d.ts +2 -0
  244. package/dist/cli/main.js +60 -0
  245. package/dist/cli/pack-adapters.d.ts +3 -0
  246. package/dist/cli/pack-adapters.js +81 -0
  247. package/dist/cli/packs.d.ts +6 -0
  248. package/dist/cli/packs.js +131 -0
  249. package/dist/cli/plan-launcher.d.ts +2 -0
  250. package/dist/cli/plan-launcher.js +272 -0
  251. package/dist/cli/plan.d.ts +25 -0
  252. package/dist/cli/plan.js +121 -0
  253. package/dist/cli/proofs-test.d.ts +3 -0
  254. package/dist/cli/proofs-test.js +77 -0
  255. package/dist/cli/proofs.d.ts +3 -0
  256. package/dist/cli/proofs.js +168 -0
  257. package/dist/cli/remediation.d.ts +3 -0
  258. package/dist/cli/remediation.js +107 -0
  259. package/dist/cli/report.d.ts +4 -0
  260. package/dist/cli/report.js +93 -0
  261. package/dist/cli/serve-eval.d.ts +2 -0
  262. package/dist/cli/serve-eval.js +165 -0
  263. package/dist/cli/serve-log.d.ts +2 -0
  264. package/dist/cli/serve-log.js +150 -0
  265. package/dist/cli/serve-methods.d.ts +2 -0
  266. package/dist/cli/serve-methods.js +181 -0
  267. package/dist/cli/serve-protocol.d.ts +35 -0
  268. package/dist/cli/serve-protocol.js +97 -0
  269. package/dist/cli/serve-run.d.ts +9 -0
  270. package/dist/cli/serve-run.js +135 -0
  271. package/dist/cli/serve-server.d.ts +5 -0
  272. package/dist/cli/serve-server.js +120 -0
  273. package/dist/cli/serve-shared.d.ts +34 -0
  274. package/dist/cli/serve-shared.js +20 -0
  275. package/dist/cli/serve-status.d.ts +2 -0
  276. package/dist/cli/serve-status.js +130 -0
  277. package/dist/cli/serve-transport.d.ts +2 -0
  278. package/dist/cli/serve-transport.js +114 -0
  279. package/dist/cli/shared.d.ts +35 -0
  280. package/dist/cli/shared.js +181 -0
  281. package/dist/cli/task-advance.d.ts +3 -0
  282. package/dist/cli/task-advance.js +144 -0
  283. package/dist/cli/task-phases.d.ts +3 -0
  284. package/dist/cli/task-phases.js +77 -0
  285. package/dist/cli/tasks.d.ts +12 -0
  286. package/dist/cli/tasks.js +176 -0
  287. package/dist/cli/transparency.d.ts +4 -0
  288. package/dist/cli/transparency.js +197 -0
  289. package/dist/cli/waivers.d.ts +3 -0
  290. package/dist/cli/waivers.js +195 -0
  291. package/dist/features/adapters/claude-code.d.ts +8 -0
  292. package/dist/features/adapters/claude-code.js +198 -0
  293. package/dist/features/adapters/claude-shaped.d.ts +4 -0
  294. package/dist/features/adapters/claude-shaped.js +174 -0
  295. package/dist/features/adapters/codex-cli.d.ts +8 -0
  296. package/dist/features/adapters/codex-cli.js +180 -0
  297. package/dist/features/adapters/contract.d.ts +104 -0
  298. package/dist/features/adapters/contract.js +17 -0
  299. package/dist/features/adapters/copilot-capabilities.d.ts +2 -0
  300. package/dist/features/adapters/copilot-capabilities.js +46 -0
  301. package/dist/features/adapters/copilot.d.ts +8 -0
  302. package/dist/features/adapters/copilot.js +200 -0
  303. package/dist/features/adapters/cursor.d.ts +8 -0
  304. package/dist/features/adapters/cursor.js +245 -0
  305. package/dist/features/adapters/custom-event.d.ts +3 -0
  306. package/dist/features/adapters/custom-event.js +180 -0
  307. package/dist/features/adapters/custom-load.d.ts +3 -0
  308. package/dist/features/adapters/custom-load.js +185 -0
  309. package/dist/features/adapters/custom-shape.d.ts +21 -0
  310. package/dist/features/adapters/custom-shape.js +87 -0
  311. package/dist/features/adapters/custom.d.ts +9 -0
  312. package/dist/features/adapters/custom.js +130 -0
  313. package/dist/features/adapters/effective-cache.d.ts +5 -0
  314. package/dist/features/adapters/effective-cache.js +45 -0
  315. package/dist/features/adapters/gemini-cli.d.ts +6 -0
  316. package/dist/features/adapters/gemini-cli.js +160 -0
  317. package/dist/features/adapters/gemini-tables.d.ts +7 -0
  318. package/dist/features/adapters/gemini-tables.js +104 -0
  319. package/dist/features/adapters/hook-dispatch.d.ts +7 -0
  320. package/dist/features/adapters/hook-dispatch.js +97 -0
  321. package/dist/features/adapters/hook-injection.d.ts +12 -0
  322. package/dist/features/adapters/hook-injection.js +75 -0
  323. package/dist/features/adapters/hook-load.d.ts +15 -0
  324. package/dist/features/adapters/hook-load.js +152 -0
  325. package/dist/features/adapters/hook-scope.d.ts +3 -0
  326. package/dist/features/adapters/hook-scope.js +54 -0
  327. package/dist/features/adapters/index.d.ts +22 -0
  328. package/dist/features/adapters/index.js +86 -0
  329. package/dist/features/adapters/muse-code.d.ts +8 -0
  330. package/dist/features/adapters/muse-code.js +223 -0
  331. package/dist/features/adapters/opencode-bridge.d.ts +1 -0
  332. package/dist/features/adapters/opencode-bridge.js +230 -0
  333. package/dist/features/adapters/opencode-capabilities.d.ts +2 -0
  334. package/dist/features/adapters/opencode-capabilities.js +47 -0
  335. package/dist/features/adapters/opencode-parse.d.ts +3 -0
  336. package/dist/features/adapters/opencode-parse.js +137 -0
  337. package/dist/features/adapters/opencode-tables.d.ts +5 -0
  338. package/dist/features/adapters/opencode-tables.js +63 -0
  339. package/dist/features/adapters/opencode.d.ts +10 -0
  340. package/dist/features/adapters/opencode.js +97 -0
  341. package/dist/features/adapters/runtime.d.ts +25 -0
  342. package/dist/features/adapters/runtime.js +148 -0
  343. package/dist/features/adapters/universal.d.ts +7 -0
  344. package/dist/features/adapters/universal.js +89 -0
  345. package/dist/features/arch/arch-profiles.d.ts +3 -0
  346. package/dist/features/arch/arch-profiles.js +5 -0
  347. package/dist/features/arch/checks.d.ts +25 -0
  348. package/dist/features/arch/checks.js +173 -0
  349. package/dist/features/arch/codictator-modules.d.ts +4 -0
  350. package/dist/features/arch/codictator-modules.js +180 -0
  351. package/dist/features/arch/cycle-walk.d.ts +1 -0
  352. package/dist/features/arch/cycle-walk.js +36 -0
  353. package/dist/features/arch/edge-checks.d.ts +13 -0
  354. package/dist/features/arch/edge-checks.js +186 -0
  355. package/dist/features/arch/graph.d.ts +32 -0
  356. package/dist/features/arch/graph.js +202 -0
  357. package/dist/features/arch/index.d.ts +29 -0
  358. package/dist/features/arch/index.js +16 -0
  359. package/dist/features/arch/layer-rules.d.ts +3 -0
  360. package/dist/features/arch/layer-rules.js +38 -0
  361. package/dist/features/arch/module-map-validation.d.ts +3 -0
  362. package/dist/features/arch/module-map-validation.js +30 -0
  363. package/dist/features/arch/module-mapping.d.ts +15 -0
  364. package/dist/features/arch/module-mapping.js +184 -0
  365. package/dist/features/arch/profiles.d.ts +4 -0
  366. package/dist/features/arch/profiles.js +8 -0
  367. package/dist/features/audit/append.d.ts +26 -0
  368. package/dist/features/audit/append.js +210 -0
  369. package/dist/features/audit/explain-table-tail.d.ts +2 -0
  370. package/dist/features/audit/explain-table-tail.js +29 -0
  371. package/dist/features/audit/explain-table.d.ts +8 -0
  372. package/dist/features/audit/explain-table.js +48 -0
  373. package/dist/features/audit/explain.d.ts +7 -0
  374. package/dist/features/audit/explain.js +87 -0
  375. package/dist/features/audit/index.d.ts +37 -0
  376. package/dist/features/audit/index.js +17 -0
  377. package/dist/features/audit/injection-event.d.ts +11 -0
  378. package/dist/features/audit/injection-event.js +17 -0
  379. package/dist/features/audit/read.d.ts +8 -0
  380. package/dist/features/audit/read.js +62 -0
  381. package/dist/features/audit/summarize.d.ts +1 -0
  382. package/dist/features/audit/summarize.js +41 -0
  383. package/dist/features/audit/surfaces.d.ts +47 -0
  384. package/dist/features/audit/surfaces.js +172 -0
  385. package/dist/features/audit/token-saver-evidence.d.ts +14 -0
  386. package/dist/features/audit/token-saver-evidence.js +85 -0
  387. package/dist/features/ci/changes.d.ts +28 -0
  388. package/dist/features/ci/changes.js +88 -0
  389. package/dist/features/ci/index.d.ts +22 -0
  390. package/dist/features/ci/index.js +75 -0
  391. package/dist/features/ci/protection-read.d.ts +3 -0
  392. package/dist/features/ci/protection-read.js +264 -0
  393. package/dist/features/ci/protection.d.ts +25 -0
  394. package/dist/features/ci/protection.js +101 -0
  395. package/dist/features/ci/workflow.d.ts +23 -0
  396. package/dist/features/ci/workflow.js +261 -0
  397. package/dist/features/config/human.d.ts +4 -0
  398. package/dist/features/config/human.js +31 -0
  399. package/dist/features/config/index.d.ts +37 -0
  400. package/dist/features/config/index.js +129 -0
  401. package/dist/features/config/pack-data.d.ts +18 -0
  402. package/dist/features/config/pack-data.js +116 -0
  403. package/dist/features/config/validate-sections.d.ts +6 -0
  404. package/dist/features/config/validate-sections.js +198 -0
  405. package/dist/features/config/validate-shared.d.ts +8 -0
  406. package/dist/features/config/validate-shared.js +69 -0
  407. package/dist/features/config/validate-tunables.d.ts +1 -0
  408. package/dist/features/config/validate-tunables.js +89 -0
  409. package/dist/features/config/validate.d.ts +2 -0
  410. package/dist/features/config/validate.js +57 -0
  411. package/dist/features/deps/bots.d.ts +5 -0
  412. package/dist/features/deps/bots.js +39 -0
  413. package/dist/features/deps/capabilities.d.ts +3 -0
  414. package/dist/features/deps/capabilities.js +91 -0
  415. package/dist/features/deps/check.d.ts +18 -0
  416. package/dist/features/deps/check.js +70 -0
  417. package/dist/features/deps/dependabot.d.ts +10 -0
  418. package/dist/features/deps/dependabot.js +154 -0
  419. package/dist/features/deps/eval.d.ts +41 -0
  420. package/dist/features/deps/eval.js +24 -0
  421. package/dist/features/deps/fields.d.ts +4 -0
  422. package/dist/features/deps/fields.js +18 -0
  423. package/dist/features/deps/index.d.ts +67 -0
  424. package/dist/features/deps/index.js +27 -0
  425. package/dist/features/deps/lockfile.d.ts +8 -0
  426. package/dist/features/deps/lockfile.js +87 -0
  427. package/dist/features/deps/npm.d.ts +22 -0
  428. package/dist/features/deps/npm.js +187 -0
  429. package/dist/features/deps/npmrc.d.ts +12 -0
  430. package/dist/features/deps/npmrc.js +50 -0
  431. package/dist/features/deps/nuget.d.ts +25 -0
  432. package/dist/features/deps/nuget.js +112 -0
  433. package/dist/features/deps/osv-ranges.d.ts +12 -0
  434. package/dist/features/deps/osv-ranges.js +83 -0
  435. package/dist/features/deps/osv.d.ts +16 -0
  436. package/dist/features/deps/osv.js +144 -0
  437. package/dist/features/deps/pypi-pyproject.d.ts +7 -0
  438. package/dist/features/deps/pypi-pyproject.js +118 -0
  439. package/dist/features/deps/pypi.d.ts +29 -0
  440. package/dist/features/deps/pypi.js +137 -0
  441. package/dist/features/deps/registry.d.ts +29 -0
  442. package/dist/features/deps/registry.js +158 -0
  443. package/dist/features/deps/renovate.d.ts +15 -0
  444. package/dist/features/deps/renovate.js +98 -0
  445. package/dist/features/deps/selection.d.ts +20 -0
  446. package/dist/features/deps/selection.js +150 -0
  447. package/dist/features/deps/snapshot-verdicts.d.ts +16 -0
  448. package/dist/features/deps/snapshot-verdicts.js +184 -0
  449. package/dist/features/deps/stable.d.ts +19 -0
  450. package/dist/features/deps/stable.js +131 -0
  451. package/dist/features/deps/step-size.d.ts +7 -0
  452. package/dist/features/deps/step-size.js +24 -0
  453. package/dist/features/deps/upgrade.d.ts +35 -0
  454. package/dist/features/deps/upgrade.js +124 -0
  455. package/dist/features/deps/verdicts.d.ts +21 -0
  456. package/dist/features/deps/verdicts.js +219 -0
  457. package/dist/features/engine/evaluate.d.ts +12 -0
  458. package/dist/features/engine/evaluate.js +170 -0
  459. package/dist/features/engine/index.d.ts +21 -0
  460. package/dist/features/engine/index.js +24 -0
  461. package/dist/features/engine/message.d.ts +3 -0
  462. package/dist/features/engine/message.js +69 -0
  463. package/dist/features/engine/ratchet.d.ts +1 -0
  464. package/dist/features/engine/ratchet.js +63 -0
  465. package/dist/features/engine/run-enforcer.d.ts +4 -0
  466. package/dist/features/engine/run-enforcer.js +82 -0
  467. package/dist/features/engine/waivers.d.ts +23 -0
  468. package/dist/features/engine/waivers.js +169 -0
  469. package/dist/features/generator/draft.d.ts +7 -0
  470. package/dist/features/generator/draft.js +148 -0
  471. package/dist/features/generator/index.d.ts +22 -0
  472. package/dist/features/generator/index.js +8 -0
  473. package/dist/features/generator/llm-draft.d.ts +3 -0
  474. package/dist/features/generator/llm-draft.js +93 -0
  475. package/dist/features/generator/prompt.d.ts +25 -0
  476. package/dist/features/generator/prompt.js +105 -0
  477. package/dist/features/generator/self-test.d.ts +12 -0
  478. package/dist/features/generator/self-test.js +65 -0
  479. package/dist/features/generator/templates.d.ts +26 -0
  480. package/dist/features/generator/templates.js +177 -0
  481. package/dist/features/integrity/drift.d.ts +19 -0
  482. package/dist/features/integrity/drift.js +168 -0
  483. package/dist/features/integrity/hooks.d.ts +19 -0
  484. package/dist/features/integrity/hooks.js +54 -0
  485. package/dist/features/integrity/index.d.ts +10 -0
  486. package/dist/features/integrity/index.js +14 -0
  487. package/dist/features/integrity/manifest.d.ts +15 -0
  488. package/dist/features/integrity/manifest.js +26 -0
  489. package/dist/features/integrity/self-protection.d.ts +12 -0
  490. package/dist/features/integrity/self-protection.js +144 -0
  491. package/dist/features/llm/attempt.d.ts +17 -0
  492. package/dist/features/llm/attempt.js +99 -0
  493. package/dist/features/llm/errors.d.ts +5 -0
  494. package/dist/features/llm/errors.js +18 -0
  495. package/dist/features/llm/index.d.ts +23 -0
  496. package/dist/features/llm/index.js +46 -0
  497. package/dist/features/llm/presets.d.ts +25 -0
  498. package/dist/features/llm/presets.js +159 -0
  499. package/dist/features/llm/wire.d.ts +17 -0
  500. package/dist/features/llm/wire.js +163 -0
  501. package/dist/features/packs/accept.d.ts +7 -0
  502. package/dist/features/packs/accept.js +73 -0
  503. package/dist/features/packs/enforcers/arch-guards.d.ts +12 -0
  504. package/dist/features/packs/enforcers/arch-guards.js +193 -0
  505. package/dist/features/packs/enforcers/binding.d.ts +31 -0
  506. package/dist/features/packs/enforcers/binding.js +157 -0
  507. package/dist/features/packs/enforcers/ci-guards.d.ts +10 -0
  508. package/dist/features/packs/enforcers/ci-guards.js +131 -0
  509. package/dist/features/packs/enforcers/code-health.d.ts +9 -0
  510. package/dist/features/packs/enforcers/code-health.js +180 -0
  511. package/dist/features/packs/enforcers/code.d.ts +5 -0
  512. package/dist/features/packs/enforcers/code.js +129 -0
  513. package/dist/features/packs/enforcers/command-forbid.d.ts +8 -0
  514. package/dist/features/packs/enforcers/command-forbid.js +61 -0
  515. package/dist/features/packs/enforcers/deps-guards.d.ts +15 -0
  516. package/dist/features/packs/enforcers/deps-guards.js +235 -0
  517. package/dist/features/packs/enforcers/deps-policy-guards.d.ts +9 -0
  518. package/dist/features/packs/enforcers/deps-policy-guards.js +135 -0
  519. package/dist/features/packs/enforcers/docs-guards-measures.d.ts +9 -0
  520. package/dist/features/packs/enforcers/docs-guards-measures.js +117 -0
  521. package/dist/features/packs/enforcers/docs-guards.d.ts +11 -0
  522. package/dist/features/packs/enforcers/docs-guards.js +180 -0
  523. package/dist/features/packs/enforcers/engine-version-guards.d.ts +6 -0
  524. package/dist/features/packs/enforcers/engine-version-guards.js +42 -0
  525. package/dist/features/packs/enforcers/external-attribute.d.ts +18 -0
  526. package/dist/features/packs/enforcers/external-attribute.js +122 -0
  527. package/dist/features/packs/enforcers/external-bind.d.ts +4 -0
  528. package/dist/features/packs/enforcers/external-bind.js +206 -0
  529. package/dist/features/packs/enforcers/external-check.d.ts +7 -0
  530. package/dist/features/packs/enforcers/external-check.js +131 -0
  531. package/dist/features/packs/enforcers/external-output.d.ts +30 -0
  532. package/dist/features/packs/enforcers/external-output.js +144 -0
  533. package/dist/features/packs/enforcers/external-probe.d.ts +4 -0
  534. package/dist/features/packs/enforcers/external-probe.js +65 -0
  535. package/dist/features/packs/enforcers/external-runs.d.ts +33 -0
  536. package/dist/features/packs/enforcers/external-runs.js +162 -0
  537. package/dist/features/packs/enforcers/external-sarif.d.ts +3 -0
  538. package/dist/features/packs/enforcers/external-sarif.js +109 -0
  539. package/dist/features/packs/enforcers/external.d.ts +39 -0
  540. package/dist/features/packs/enforcers/external.js +11 -0
  541. package/dist/features/packs/enforcers/gate-guards.d.ts +11 -0
  542. package/dist/features/packs/enforcers/gate-guards.js +117 -0
  543. package/dist/features/packs/enforcers/health-abstraction.d.ts +5 -0
  544. package/dist/features/packs/enforcers/health-abstraction.js +126 -0
  545. package/dist/features/packs/enforcers/health-duplication.d.ts +5 -0
  546. package/dist/features/packs/enforcers/health-duplication.js +197 -0
  547. package/dist/features/packs/enforcers/health-lex-imports.d.ts +5 -0
  548. package/dist/features/packs/enforcers/health-lex-imports.js +225 -0
  549. package/dist/features/packs/enforcers/health-lex-template.d.ts +10 -0
  550. package/dist/features/packs/enforcers/health-lex-template.js +67 -0
  551. package/dist/features/packs/enforcers/health-lex.d.ts +8 -0
  552. package/dist/features/packs/enforcers/health-lex.js +227 -0
  553. package/dist/features/packs/enforcers/health-markers.d.ts +3 -0
  554. package/dist/features/packs/enforcers/health-markers.js +31 -0
  555. package/dist/features/packs/enforcers/health-measures.d.ts +26 -0
  556. package/dist/features/packs/enforcers/health-measures.js +223 -0
  557. package/dist/features/packs/enforcers/health-refs.d.ts +5 -0
  558. package/dist/features/packs/enforcers/health-refs.js +76 -0
  559. package/dist/features/packs/enforcers/integrity-guards-repo.d.ts +6 -0
  560. package/dist/features/packs/enforcers/integrity-guards-repo.js +189 -0
  561. package/dist/features/packs/enforcers/integrity-guards.d.ts +12 -0
  562. package/dist/features/packs/enforcers/integrity-guards.js +202 -0
  563. package/dist/features/packs/enforcers/jsonkey.d.ts +13 -0
  564. package/dist/features/packs/enforcers/jsonkey.js +95 -0
  565. package/dist/features/packs/enforcers/parametric.d.ts +7 -0
  566. package/dist/features/packs/enforcers/parametric.js +138 -0
  567. package/dist/features/packs/enforcers/pattern.d.ts +11 -0
  568. package/dist/features/packs/enforcers/pattern.js +88 -0
  569. package/dist/features/packs/enforcers/placement.d.ts +10 -0
  570. package/dist/features/packs/enforcers/placement.js +54 -0
  571. package/dist/features/packs/enforcers/py-checks.d.ts +7 -0
  572. package/dist/features/packs/enforcers/py-checks.js +131 -0
  573. package/dist/features/packs/enforcers/py-lex.d.ts +10 -0
  574. package/dist/features/packs/enforcers/py-lex.js +271 -0
  575. package/dist/features/packs/enforcers/py-phantom.d.ts +6 -0
  576. package/dist/features/packs/enforcers/py-phantom.js +163 -0
  577. package/dist/features/packs/enforcers/py-pins.d.ts +16 -0
  578. package/dist/features/packs/enforcers/py-pins.js +184 -0
  579. package/dist/features/packs/enforcers/py-security-patterns.d.ts +18 -0
  580. package/dist/features/packs/enforcers/py-security-patterns.js +70 -0
  581. package/dist/features/packs/enforcers/records-guards.d.ts +12 -0
  582. package/dist/features/packs/enforcers/records-guards.js +178 -0
  583. package/dist/features/packs/enforcers/remediation-guards.d.ts +6 -0
  584. package/dist/features/packs/enforcers/remediation-guards.js +42 -0
  585. package/dist/features/packs/enforcers/required.d.ts +10 -0
  586. package/dist/features/packs/enforcers/required.js +65 -0
  587. package/dist/features/packs/enforcers/secret-scan.d.ts +6 -0
  588. package/dist/features/packs/enforcers/secret-scan.js +173 -0
  589. package/dist/features/packs/enforcers/shell-analyse.d.ts +14 -0
  590. package/dist/features/packs/enforcers/shell-analyse.js +105 -0
  591. package/dist/features/packs/enforcers/sizes.d.ts +10 -0
  592. package/dist/features/packs/enforcers/sizes.js +82 -0
  593. package/dist/features/packs/enforcers/steering-guards.d.ts +11 -0
  594. package/dist/features/packs/enforcers/steering-guards.js +162 -0
  595. package/dist/features/packs/enforcers/testing-guards.d.ts +10 -0
  596. package/dist/features/packs/enforcers/testing-guards.js +118 -0
  597. package/dist/features/packs/enforcers/ts-checks.d.ts +7 -0
  598. package/dist/features/packs/enforcers/ts-checks.js +147 -0
  599. package/dist/features/packs/enforcers/ts-phantom-host.d.ts +11 -0
  600. package/dist/features/packs/enforcers/ts-phantom-host.js +155 -0
  601. package/dist/features/packs/enforcers/ts-phantom.d.ts +6 -0
  602. package/dist/features/packs/enforcers/ts-phantom.js +117 -0
  603. package/dist/features/packs/enforcers/ts-security-patterns.d.ts +18 -0
  604. package/dist/features/packs/enforcers/ts-security-patterns.js +97 -0
  605. package/dist/features/packs/enforcers/workflow-guards.d.ts +10 -0
  606. package/dist/features/packs/enforcers/workflow-guards.js +117 -0
  607. package/dist/features/packs/enforcers/write-confine.d.ts +13 -0
  608. package/dist/features/packs/enforcers/write-confine.js +131 -0
  609. package/dist/features/packs/hashes.d.ts +6 -0
  610. package/dist/features/packs/hashes.js +84 -0
  611. package/dist/features/packs/index.d.ts +22 -0
  612. package/dist/features/packs/index.js +15 -0
  613. package/dist/features/packs/loader.d.ts +13 -0
  614. package/dist/features/packs/loader.js +205 -0
  615. package/dist/features/packs/manifest-decl.d.ts +13 -0
  616. package/dist/features/packs/manifest-decl.js +121 -0
  617. package/dist/features/packs/manifest.d.ts +7 -0
  618. package/dist/features/packs/manifest.js +95 -0
  619. package/dist/features/packs/params.d.ts +2 -0
  620. package/dist/features/packs/params.js +90 -0
  621. package/dist/features/packs/registry.d.ts +11 -0
  622. package/dist/features/packs/registry.js +136 -0
  623. package/dist/features/packs/selftest.d.ts +3 -0
  624. package/dist/features/packs/selftest.js +144 -0
  625. package/dist/features/records/bug-grammar.d.ts +17 -0
  626. package/dist/features/records/bug-grammar.js +128 -0
  627. package/dist/features/records/bug-registry.d.ts +9 -0
  628. package/dist/features/records/bug-registry.js +67 -0
  629. package/dist/features/records/bug-rows-immutable.d.ts +3 -0
  630. package/dist/features/records/bug-rows-immutable.js +52 -0
  631. package/dist/features/records/bugs.d.ts +2 -0
  632. package/dist/features/records/bugs.js +24 -0
  633. package/dist/features/records/docs-lines.d.ts +16 -0
  634. package/dist/features/records/docs-lines.js +36 -0
  635. package/dist/features/records/docs-prose.d.ts +14 -0
  636. package/dist/features/records/docs-prose.js +252 -0
  637. package/dist/features/records/docs-structure.d.ts +17 -0
  638. package/dist/features/records/docs-structure.js +223 -0
  639. package/dist/features/records/docs.d.ts +9 -0
  640. package/dist/features/records/docs.js +238 -0
  641. package/dist/features/records/history-checks.d.ts +6 -0
  642. package/dist/features/records/history-checks.js +94 -0
  643. package/dist/features/records/history-parse.d.ts +16 -0
  644. package/dist/features/records/history-parse.js +101 -0
  645. package/dist/features/records/history-scope.d.ts +5 -0
  646. package/dist/features/records/history-scope.js +86 -0
  647. package/dist/features/records/history.d.ts +3 -0
  648. package/dist/features/records/history.js +5 -0
  649. package/dist/features/records/index.d.ts +8 -0
  650. package/dist/features/records/index.js +11 -0
  651. package/dist/features/remediation/adoption.d.ts +32 -0
  652. package/dist/features/remediation/adoption.js +142 -0
  653. package/dist/features/remediation/index.d.ts +12 -0
  654. package/dist/features/remediation/index.js +21 -0
  655. package/dist/features/remediation/plan-chains.d.ts +3 -0
  656. package/dist/features/remediation/plan-chains.js +111 -0
  657. package/dist/features/remediation/plan-generate.d.ts +3 -0
  658. package/dist/features/remediation/plan-generate.js +129 -0
  659. package/dist/features/remediation/plan-kinds.d.ts +32 -0
  660. package/dist/features/remediation/plan-kinds.js +42 -0
  661. package/dist/features/remediation/plan-markers.d.ts +2 -0
  662. package/dist/features/remediation/plan-markers.js +155 -0
  663. package/dist/features/remediation/plan-merge.d.ts +6 -0
  664. package/dist/features/remediation/plan-merge.js +33 -0
  665. package/dist/features/remediation/plan.d.ts +4 -0
  666. package/dist/features/remediation/plan.js +7 -0
  667. package/dist/features/remediation/step-floor.d.ts +5 -0
  668. package/dist/features/remediation/step-floor.js +76 -0
  669. package/dist/features/remediation/step-gates.d.ts +18 -0
  670. package/dist/features/remediation/step-gates.js +77 -0
  671. package/dist/features/remediation/step-split.d.ts +12 -0
  672. package/dist/features/remediation/step-split.js +75 -0
  673. package/dist/features/remediation/steps.d.ts +3 -0
  674. package/dist/features/remediation/steps.js +6 -0
  675. package/dist/features/remediation/types.d.ts +37 -0
  676. package/dist/features/remediation/types.js +1 -0
  677. package/dist/features/security/index.d.ts +12 -0
  678. package/dist/features/security/index.js +142 -0
  679. package/dist/features/steering/agent-assets.d.ts +7 -0
  680. package/dist/features/steering/agent-assets.js +75 -0
  681. package/dist/features/steering/budgets.d.ts +20 -0
  682. package/dist/features/steering/budgets.js +86 -0
  683. package/dist/features/steering/checks.d.ts +7 -0
  684. package/dist/features/steering/checks.js +67 -0
  685. package/dist/features/steering/context-file.d.ts +11 -0
  686. package/dist/features/steering/context-file.js +107 -0
  687. package/dist/features/steering/graph-scan.d.ts +7 -0
  688. package/dist/features/steering/graph-scan.js +17 -0
  689. package/dist/features/steering/index.d.ts +30 -0
  690. package/dist/features/steering/index.js +45 -0
  691. package/dist/features/steering/injection.d.ts +23 -0
  692. package/dist/features/steering/injection.js +124 -0
  693. package/dist/features/steering/mcp.d.ts +2 -0
  694. package/dist/features/steering/mcp.js +18 -0
  695. package/dist/features/steering/precedence.d.ts +10 -0
  696. package/dist/features/steering/precedence.js +28 -0
  697. package/dist/features/steering/read-cache.d.ts +13 -0
  698. package/dist/features/steering/read-cache.js +51 -0
  699. package/dist/features/testing/base.d.ts +1 -0
  700. package/dist/features/testing/base.js +8 -0
  701. package/dist/features/testing/covers.d.ts +8 -0
  702. package/dist/features/testing/covers.js +50 -0
  703. package/dist/features/testing/evaluate.d.ts +19 -0
  704. package/dist/features/testing/evaluate.js +47 -0
  705. package/dist/features/testing/index.d.ts +10 -0
  706. package/dist/features/testing/index.js +13 -0
  707. package/dist/features/testing/integrity.d.ts +28 -0
  708. package/dist/features/testing/integrity.js +140 -0
  709. package/dist/features/testing/ledger.d.ts +11 -0
  710. package/dist/features/testing/ledger.js +51 -0
  711. package/dist/features/testing/proofs.d.ts +26 -0
  712. package/dist/features/testing/proofs.js +88 -0
  713. package/dist/features/testing/report.d.ts +6 -0
  714. package/dist/features/testing/report.js +16 -0
  715. package/dist/features/testing/scenarios.d.ts +34 -0
  716. package/dist/features/testing/scenarios.js +112 -0
  717. package/dist/features/testing/tap-parser.d.ts +9 -0
  718. package/dist/features/testing/tap-parser.js +96 -0
  719. package/dist/features/testing/trace.d.ts +23 -0
  720. package/dist/features/testing/trace.js +110 -0
  721. package/dist/features/workflow/index.d.ts +14 -0
  722. package/dist/features/workflow/index.js +19 -0
  723. package/dist/features/workflow/loop.d.ts +5 -0
  724. package/dist/features/workflow/loop.js +36 -0
  725. package/dist/features/workflow/phases.d.ts +10 -0
  726. package/dist/features/workflow/phases.js +184 -0
  727. package/dist/features/workflow/review.d.ts +25 -0
  728. package/dist/features/workflow/review.js +119 -0
  729. package/dist/features/workflow/tasks.d.ts +73 -0
  730. package/dist/features/workflow/tasks.js +80 -0
  731. package/dist/features/workflow/writes.d.ts +8 -0
  732. package/dist/features/workflow/writes.js +96 -0
  733. package/dist/kernel/clock.d.ts +4 -0
  734. package/dist/kernel/clock.js +5 -0
  735. package/dist/kernel/config-keys.d.ts +2 -0
  736. package/dist/kernel/config-keys.js +5 -0
  737. package/dist/kernel/config-toml-keys.d.ts +2 -0
  738. package/dist/kernel/config-toml-keys.js +237 -0
  739. package/dist/kernel/config-yaml-keys.d.ts +2 -0
  740. package/dist/kernel/config-yaml-keys.js +177 -0
  741. package/dist/kernel/contracts.d.ts +76 -0
  742. package/dist/kernel/contracts.js +9 -0
  743. package/dist/kernel/entry.d.ts +1 -0
  744. package/dist/kernel/entry.js +31 -0
  745. package/dist/kernel/env.d.ts +4 -0
  746. package/dist/kernel/env.js +5 -0
  747. package/dist/kernel/errors.d.ts +7 -0
  748. package/dist/kernel/errors.js +6 -0
  749. package/dist/kernel/fs-confine.d.ts +14 -0
  750. package/dist/kernel/fs-confine.js +129 -0
  751. package/dist/kernel/fs-errors.d.ts +8 -0
  752. package/dist/kernel/fs-errors.js +37 -0
  753. package/dist/kernel/fs.d.ts +28 -0
  754. package/dist/kernel/fs.js +245 -0
  755. package/dist/kernel/git.d.ts +16 -0
  756. package/dist/kernel/git.js +128 -0
  757. package/dist/kernel/glob.d.ts +1 -0
  758. package/dist/kernel/glob.js +178 -0
  759. package/dist/kernel/hash.d.ts +3 -0
  760. package/dist/kernel/hash.js +12 -0
  761. package/dist/kernel/host.d.ts +3 -0
  762. package/dist/kernel/host.js +48 -0
  763. package/dist/kernel/index.d.ts +115 -0
  764. package/dist/kernel/index.js +33 -0
  765. package/dist/kernel/json.d.ts +4 -0
  766. package/dist/kernel/json.js +68 -0
  767. package/dist/kernel/net-allow.d.ts +8 -0
  768. package/dist/kernel/net-allow.js +45 -0
  769. package/dist/kernel/net-fetch.d.ts +5 -0
  770. package/dist/kernel/net-fetch.js +135 -0
  771. package/dist/kernel/net.d.ts +10 -0
  772. package/dist/kernel/net.js +24 -0
  773. package/dist/kernel/path.d.ts +3 -0
  774. package/dist/kernel/path.js +40 -0
  775. package/dist/kernel/pattern.d.ts +2 -0
  776. package/dist/kernel/pattern.js +150 -0
  777. package/dist/kernel/proc.d.ts +6 -0
  778. package/dist/kernel/proc.js +207 -0
  779. package/dist/kernel/read-cache.d.ts +6 -0
  780. package/dist/kernel/read-cache.js +27 -0
  781. package/dist/kernel/redact.d.ts +1 -0
  782. package/dist/kernel/redact.js +206 -0
  783. package/dist/kernel/repo-root.d.ts +3 -0
  784. package/dist/kernel/repo-root.js +29 -0
  785. package/dist/kernel/result.d.ts +10 -0
  786. package/dist/kernel/result.js +6 -0
  787. package/dist/kernel/schema-helpers.d.ts +11 -0
  788. package/dist/kernel/schema-helpers.js +101 -0
  789. package/dist/kernel/schema.d.ts +2 -0
  790. package/dist/kernel/schema.js +203 -0
  791. package/dist/kernel/secret-paths.d.ts +3 -0
  792. package/dist/kernel/secret-paths.js +70 -0
  793. package/dist/kernel/shell-bypass.d.ts +4 -0
  794. package/dist/kernel/shell-bypass.js +151 -0
  795. package/dist/kernel/shell-cmd.d.ts +6 -0
  796. package/dist/kernel/shell-cmd.js +213 -0
  797. package/dist/kernel/shell-deny-cmd.d.ts +7 -0
  798. package/dist/kernel/shell-deny-cmd.js +35 -0
  799. package/dist/kernel/shell-deny-destroy.d.ts +7 -0
  800. package/dist/kernel/shell-deny-destroy.js +71 -0
  801. package/dist/kernel/shell-deny-escalate.d.ts +7 -0
  802. package/dist/kernel/shell-deny-escalate.js +96 -0
  803. package/dist/kernel/shell-deny-target.d.ts +4 -0
  804. package/dist/kernel/shell-deny-target.js +51 -0
  805. package/dist/kernel/shell-deny.d.ts +8 -0
  806. package/dist/kernel/shell-deny.js +171 -0
  807. package/dist/kernel/shell-scan.d.ts +3 -0
  808. package/dist/kernel/shell-scan.js +226 -0
  809. package/dist/kernel/shell-word.d.ts +15 -0
  810. package/dist/kernel/shell-word.js +216 -0
  811. package/dist/kernel/shell.d.ts +22 -0
  812. package/dist/kernel/shell.js +2 -0
  813. package/dist/kernel/stdin.d.ts +2 -0
  814. package/dist/kernel/stdin.js +59 -0
  815. package/dist/kernel/test-report.d.ts +7 -0
  816. package/dist/kernel/test-report.js +112 -0
  817. package/dist/kernel/version.d.ts +2 -0
  818. package/dist/kernel/version.js +46 -0
  819. package/dist/tsconfig.build.tsbuildinfo +1 -0
  820. package/package.json +19 -11
  821. package/schema/accepted.schema.json +20 -0
  822. package/schema/baseline.schema.json +17 -0
  823. package/schema/capability.schema.json +31 -0
  824. package/schema/cli/error.schema.json +15 -0
  825. package/schema/cli/explain.schema.json +19 -0
  826. package/schema/cli/report.schema.json +15 -0
  827. package/schema/cli/status.schema.json +51 -0
  828. package/schema/cli/verify.schema.json +15 -0
  829. package/schema/config.schema.json +43 -0
  830. package/schema/event-log.schema.json +52 -0
  831. package/schema/hook-decision.schema.json +13 -0
  832. package/schema/hook-event.schema.json +50 -0
  833. package/schema/manifest.schema.json +26 -0
  834. package/schema/pack-draft.schema.json +42 -0
  835. package/schema/pack.schema.json +70 -0
  836. package/schema/registry-snapshot.schema.json +41 -0
  837. package/schema/remediation-plan.schema.json +44 -0
  838. package/schema/review-findings.schema.json +25 -0
  839. package/schema/task-record.schema.json +49 -0
  840. package/schema/waivers.schema.json +29 -0
@@ -0,0 +1,190 @@
1
+ // SPEC §4.14.4 + §4.14.5 + §4.19.2: regen, install-hooks and uninstall.
2
+ // Regen re-renders guardrails from config and rewrites the manifest;
3
+ // install-hooks writes the hooks and points core.hooksPath at them;
4
+ // uninstall removes generated files with the CI warning.
5
+ import { parseArgs } from "node:util";
6
+ import { renderCustomRegenFragment } from "../features/adapters/index.js";
7
+ import { ENGINE_VERSION } from "../features/config/index.js";
8
+ import { EXPECTED_HOOKS_PATH, HOOK_NAMES, hookInstallPlan, renderHookScript, } from "../features/integrity/index.js";
9
+ import { err, ok, resolveRepoRoot } from "../kernel/index.js";
10
+ import { guardrailPlan, writePlan } from "./plan.js";
11
+ import { checkHuman, commandEnv, fail, loadRepoConfig, portsFor, printHuman, printJson, readStateText, usageError, } from "./shared.js";
12
+ function repoNameOf(root) {
13
+ return root.replaceAll("\\", "/").split("/").pop() ?? "repo";
14
+ }
15
+ // SPEC §4.14.5: regen re-renders from config, so a profile chosen at init
16
+ // survives regeneration instead of being dropped from the rewritten config.
17
+ function profileOf(architecture) {
18
+ if (typeof architecture === "object" && architecture !== null) {
19
+ const profile = architecture.profile;
20
+ if (typeof profile === "string" && profile !== "") {
21
+ return profile;
22
+ }
23
+ }
24
+ return "";
25
+ }
26
+ // SPEC §4.14.5: regen re-renders guardrails from config and rewrites the
27
+ // manifest; user text outside managed regions survives.
28
+ // Regen, install-hooks and uninstall reject positionals the same way.
29
+ function rejectPositionals(args, usage) {
30
+ try {
31
+ const parsed = parseArgs({
32
+ args: [...args],
33
+ options: {},
34
+ allowPositionals: true,
35
+ });
36
+ if (parsed.positionals.length > 0) {
37
+ return usageError(usage);
38
+ }
39
+ }
40
+ catch {
41
+ return usageError(usage);
42
+ }
43
+ return undefined;
44
+ }
45
+ export async function handleRegen(req) {
46
+ const rejected = rejectPositionals(req.args, "usage: codictator regen");
47
+ if (rejected !== undefined) {
48
+ return rejected;
49
+ }
50
+ const root = await resolveRepoRoot(req.cwd);
51
+ if (!root.ok) {
52
+ return fail("CDX-E703", root.error.message, root.error.remediation, req.json);
53
+ }
54
+ const loaded = await loadRepoConfig(root.value, undefined, req.engineVersion ?? ENGINE_VERSION);
55
+ if (!loaded.ok) {
56
+ return fail(loaded.error.code, loaded.error.message, "Fix .codictator/config.json, then retry.", req.json);
57
+ }
58
+ const agents = await readStateText(root.value, "AGENTS.md");
59
+ const configured = loaded.value.effective.config;
60
+ const profile = profileOf(configured.architecture);
61
+ const customFiles = await renderCustomRegenFragment(root.value, configured);
62
+ if (!customFiles.ok) {
63
+ return fail(customFiles.error.code, customFiles.error.message, customFiles.error.remediation, req.json);
64
+ }
65
+ const plan = guardrailPlan(loaded.value.effective.config.harnesses, profile, repoNameOf(root.value), agents, {
66
+ packs: configured.packs,
67
+ tunables: configured.tunables,
68
+ architecture: configured.architecture,
69
+ tools: configured.tools,
70
+ }, req.engineVersion ?? ENGINE_VERSION);
71
+ const wrote = await writePlan(root.value, { files: [...plan.files, ...customFiles.value] }, req.engineVersion ?? ENGINE_VERSION);
72
+ if (!wrote.ok) {
73
+ return fail("CDX-E903", wrote.error.message, wrote.error.remediation, req.json);
74
+ }
75
+ if (req.json) {
76
+ printJson({
77
+ regenerated: true,
78
+ root: root.value,
79
+ files: wrote.value.map((entry) => entry.path),
80
+ });
81
+ }
82
+ else {
83
+ for (const entry of wrote.value) {
84
+ printHuman(`regenerated ${entry.path}`, req.quiet);
85
+ }
86
+ }
87
+ return ok(0);
88
+ }
89
+ function encode(text) {
90
+ return new TextEncoder().encode(text);
91
+ }
92
+ async function writeHookFiles(root) {
93
+ const ports = await portsFor(root);
94
+ if (!ports.ok) {
95
+ return err(ports.error);
96
+ }
97
+ for (const hook of HOOK_NAMES) {
98
+ const done = await ports.value.fs.write(`${EXPECTED_HOOKS_PATH}/${hook}`, encode(renderHookScript(hook)));
99
+ if (!done.ok) {
100
+ return err(done.error);
101
+ }
102
+ }
103
+ const plan = hookInstallPlan({});
104
+ const attrs = await ports.value.fs.write(`${EXPECTED_HOOKS_PATH}/.gitattributes`, encode(plan.gitattributes));
105
+ if (!attrs.ok) {
106
+ return err(attrs.error);
107
+ }
108
+ return ok(true);
109
+ }
110
+ async function configureHooksPath(root, req) {
111
+ const ports = await portsFor(root);
112
+ if (!ports.ok) {
113
+ return;
114
+ }
115
+ const plan = hookInstallPlan({});
116
+ const set = await ports.value.proc.run(["git", "config", "core.hooksPath", plan.hooksPath], { cwd: root, env: {}, timeoutMs: 15000, maxOutputBytes: 65536 });
117
+ if (set.code !== 0) {
118
+ printHuman("warn: git config core.hooksPath failed; set it by hand", req.quiet);
119
+ }
120
+ }
121
+ // SPEC §4.14.4: install-hooks writes the hooks and points core.hooksPath
122
+ // at them; the npm prepare script and gitattributes remediation ship too.
123
+ export async function handleInstallHooks(req) {
124
+ const rejected = rejectPositionals(req.args, "usage: codictator install-hooks");
125
+ if (rejected !== undefined) {
126
+ return rejected;
127
+ }
128
+ const root = await resolveRepoRoot(req.cwd);
129
+ if (!root.ok) {
130
+ return fail("CDX-E703", root.error.message, root.error.remediation, req.json);
131
+ }
132
+ const written = await writeHookFiles(root.value);
133
+ if (!written.ok) {
134
+ return fail("CDX-E903", written.error.message, written.error.remediation, req.json);
135
+ }
136
+ await configureHooksPath(root.value, req);
137
+ const plan = hookInstallPlan({});
138
+ if (req.json) {
139
+ printJson({ installed: true, hooksPath: plan.hooksPath, root: root.value });
140
+ }
141
+ else {
142
+ printHuman(`hooks installed at ${plan.hooksPath}; prepare script: ${plan.prepareScript}`, req.quiet);
143
+ }
144
+ return ok(0);
145
+ }
146
+ async function removeGuardrails(root) {
147
+ const ports = await portsFor(root);
148
+ if (!ports.ok) {
149
+ return;
150
+ }
151
+ const targets = [
152
+ ".codictator/config.json",
153
+ ".codictator/manifest.json",
154
+ ".github/workflows/codictator.yml",
155
+ ...HOOK_NAMES.map((hook) => `${EXPECTED_HOOKS_PATH}/${hook}`),
156
+ ];
157
+ for (const target of targets) {
158
+ const seen = await ports.value.fs.exists(target);
159
+ if (seen.ok && seen.value) {
160
+ await ports.value.fs.remove(target);
161
+ }
162
+ }
163
+ }
164
+ // SPEC §4.19.2: uninstall removes generated files, records a guardrail
165
+ // entry, and prints that CI fails until its workflow and required check
166
+ // are removed too. Human-only.
167
+ export async function handleUninstall(req) {
168
+ const rejected = rejectPositionals(req.args, "usage: codictator uninstall");
169
+ if (rejected !== undefined) {
170
+ return rejected;
171
+ }
172
+ const human = checkHuman(commandEnv(), []);
173
+ if (!human.ok) {
174
+ return fail("CDX-E107", human.error.message, human.error.remediation, req.json);
175
+ }
176
+ const root = await resolveRepoRoot(req.cwd);
177
+ if (!root.ok) {
178
+ return fail("CDX-E703", root.error.message, root.error.remediation, req.json);
179
+ }
180
+ await removeGuardrails(root.value);
181
+ const note = "CI will fail until its workflow and required check are removed too.";
182
+ if (req.json) {
183
+ printJson({ uninstalled: true, root: root.value, note });
184
+ }
185
+ else {
186
+ printHuman(`uninstalled guardrails from ${root.value}`, req.quiet);
187
+ printHuman(note, req.quiet);
188
+ }
189
+ return ok(0);
190
+ }
@@ -0,0 +1,12 @@
1
+ import type { CdxError, Result } from "../kernel/index.ts";
2
+ export interface CliOptions {
3
+ readonly argv: ReadonlyArray<string>;
4
+ readonly cwd: string;
5
+ readonly stdinText?: string;
6
+ readonly nodeVersion?: string;
7
+ readonly engineVersion?: string;
8
+ }
9
+ export declare function runHook(options: CliOptions): Promise<number>;
10
+ export declare function runCommand(options: CliOptions): Promise<Result<number>>;
11
+ export declare function runServer(options: CliOptions): Promise<number>;
12
+ export type { CdxError };
@@ -0,0 +1,198 @@
1
+ // SPEC §4.19: composition root. Commands, hook entry, server. May import
2
+ // everything (§3.3); owns no §7 format.
3
+ import { HOOK_PAYLOAD_MAX_BYTES, hookBudgetMs, runHookEvent, staticBlock, supportedHarness, } from "../features/adapters/index.js";
4
+ import { appendEvent } from "../features/audit/index.js";
5
+ import { ENGINE_VERSION } from "../features/config/index.js";
6
+ import { err, NodeEnv, NodeFs, NodeGit, NodeNet, NodeProc, ok, readStdinText, SystemClock, } from "../kernel/index.js";
7
+ import { COMMANDS, USAGE } from "./commands.js";
8
+ import { loadEvalEnforcers } from "./evaluate.js";
9
+ import { startStdioServer } from "./serve-server.js";
10
+ import { MIN_NODE_MAJOR, nodeMajor, nodeTooOldMessage, printHuman, usageError, } from "./shared.js";
11
+ // SPEC §4.19.3 steps 3 and 5: the verdict line lands in the resolved repo's
12
+ // event log. An append failure is the engine's CDX-E801 path, never a throw
13
+ // here, so writer faults stay fail-closed without crashing the hook.
14
+ // SPEC §4.1.1: the Fs is already confined to root, so the logical root is
15
+ // "." and every audit path stays repo-relative.
16
+ async function appendLine(root, event, ports) {
17
+ const fsMade = await NodeFs.create({ root });
18
+ if (!fsMade.ok) {
19
+ return fsMade;
20
+ }
21
+ return appendEvent({
22
+ fs: fsMade.value,
23
+ proc: ports.proc,
24
+ net: ports.net,
25
+ clock: ports.clock,
26
+ git: new NodeGit(ports.proc, root),
27
+ env: ports.env,
28
+ }, ".", event);
29
+ }
30
+ // The old-node rejection: a static block when the harness has one,
31
+ // stderr plus exit 6 otherwise.
32
+ function oldNodeExit(harness, version) {
33
+ const staticReply = harness === ""
34
+ ? undefined
35
+ : staticBlock(harness, "CDX-E002", nodeTooOldMessage(version));
36
+ if (staticReply === undefined) {
37
+ process.stderr.write(`${nodeTooOldMessage(version)}\n`);
38
+ return 6;
39
+ }
40
+ return emitReply(staticReply.stdout, staticReply.stderr, staticReply.exitCode);
41
+ }
42
+ // A failed stdin wait fails closed: a static block when the harness has
43
+ // one, stderr plus exit 1 otherwise.
44
+ function blockedStdinExit(harness, code, message) {
45
+ const blocked = staticBlock(harness, code, message);
46
+ if (blocked === undefined) {
47
+ process.stderr.write(`${code} ${message}\n`);
48
+ return 1;
49
+ }
50
+ return emitReply(blocked.stdout, blocked.stderr, blocked.exitCode);
51
+ }
52
+ // The hook invocation resolves its stdin first: an idle pipe fails closed
53
+ // with CDX-E902 instead of hanging past the time limit (§4.5.5), while an
54
+ // unknown harness never had a payload and answers without I/O.
55
+ async function invokeHookEvent(harness, event, stdinText, cwd, ports, append, engineVersion) {
56
+ let text = stdinText;
57
+ if (text === undefined && supportedHarness(harness)) {
58
+ const stdin = await readStdinText(HOOK_PAYLOAD_MAX_BYTES, hookBudgetMs(harness));
59
+ if (!stdin.ok) {
60
+ return blockedStdinExit(harness, stdin.error.code, stdin.error.message);
61
+ }
62
+ text = stdin.value;
63
+ }
64
+ const reply = await runHookEvent({
65
+ harness,
66
+ event,
67
+ stdinText: text ?? "",
68
+ cwd,
69
+ ports,
70
+ append,
71
+ engineVersion,
72
+ // SPEC §4.19.3 step 5: the hook evaluates the same pack enforcers
73
+ // the verify path loads (core plus the configured builtin packs),
74
+ // resolved against the runtime's root-confined ports.
75
+ loadEnforcers: loadEvalEnforcers,
76
+ });
77
+ return emitReply(reply.stdout, reply.stderr, reply.exitCode);
78
+ }
79
+ function emitReply(stdout, stderr, exitCode) {
80
+ if (stdout !== "") {
81
+ process.stdout.write(stdout);
82
+ }
83
+ if (stderr !== "") {
84
+ process.stderr.write(stderr);
85
+ }
86
+ return exitCode;
87
+ }
88
+ // SPEC §4.19.3: hook runtime entry; an uncaught error becomes a block. The
89
+ // reply goes to stdout verbatim (the harness parses it; golden EC-14 pins
90
+ // stdout exactly), diagnostics to stderr, and the harness exit code returns.
91
+ // Nothing reads the disk before the runtime resolves the repo root, so
92
+ // unknown harnesses and empty payloads answer without I/O.
93
+ export async function runHook(options) {
94
+ const harness = options.argv[1] ?? "";
95
+ const event = options.argv[2] ?? "";
96
+ const version = options.nodeVersion ?? process.version;
97
+ if (nodeMajor(version) < MIN_NODE_MAJOR) {
98
+ return oldNodeExit(harness, version);
99
+ }
100
+ const ports = {
101
+ proc: new NodeProc(),
102
+ net: new NodeNet(),
103
+ clock: new SystemClock(),
104
+ env: new NodeEnv(),
105
+ };
106
+ const append = (root, line) => appendLine(root, line, ports);
107
+ return invokeHookEvent(harness, event, options.stdinText, options.cwd, ports, append, options.engineVersion ?? ENGINE_VERSION);
108
+ }
109
+ function scanGlobals(argv, cwd) {
110
+ let json = false;
111
+ let quiet = false;
112
+ let help = false;
113
+ let override;
114
+ const rest = [];
115
+ for (let index = 0; index < argv.length; index += 1) {
116
+ const token = argv[index] ?? "";
117
+ if (token === "--json") {
118
+ json = true;
119
+ }
120
+ else if (token === "--quiet") {
121
+ quiet = true;
122
+ }
123
+ else if (token === "--help" || token === "-h") {
124
+ help = true;
125
+ }
126
+ else if (token === "--cwd") {
127
+ const next = argv[index + 1];
128
+ if (next === undefined) {
129
+ return undefined;
130
+ }
131
+ override = next;
132
+ index += 1;
133
+ }
134
+ else if (token.startsWith("--cwd=")) {
135
+ override = token.slice("--cwd=".length);
136
+ }
137
+ else {
138
+ rest.push(token);
139
+ }
140
+ }
141
+ return { json, quiet, cwd: override ?? cwd, help, rest };
142
+ }
143
+ // SPEC §4.19 + §8.2: the command entry. The node floor fails as CDX-E002
144
+ // (exit 6); unknown commands or flags are usage errors (exit 2, no code).
145
+ async function runCommandImpl(options) {
146
+ const version = options.nodeVersion ?? process.version;
147
+ if (nodeMajor(version) < MIN_NODE_MAJOR) {
148
+ process.stderr.write(`${nodeTooOldMessage(version)}\n`);
149
+ return err({
150
+ code: "CDX-E002",
151
+ message: nodeTooOldMessage(version),
152
+ remediation: "Install a newer Node, then retry the tool call.",
153
+ });
154
+ }
155
+ const globals = scanGlobals(options.argv, options.cwd);
156
+ if (globals === undefined) {
157
+ return usageError(USAGE);
158
+ }
159
+ if (globals.help) {
160
+ printHuman(USAGE, globals.quiet);
161
+ return ok(0);
162
+ }
163
+ if (globals.rest.length === 0) {
164
+ return usageError(USAGE);
165
+ }
166
+ const [command, ...args] = globals.rest;
167
+ const handler = COMMANDS[command];
168
+ if (handler === undefined) {
169
+ return usageError(`${USAGE}\nunknown command "${command}"`);
170
+ }
171
+ return handler({
172
+ args,
173
+ json: globals.json,
174
+ quiet: globals.quiet,
175
+ cwd: globals.cwd,
176
+ nodeVersion: options.nodeVersion,
177
+ stdinText: undefined,
178
+ engineVersion: options.engineVersion ?? ENGINE_VERSION,
179
+ });
180
+ }
181
+ // SPEC §4.19: command dispatch (init, regen, verify, task, review, ...).
182
+ // The hook word routes back through the hook runtime; every other word
183
+ // goes through the command table in commands.ts. The hook reply is already emitted
184
+ // by runHook, so its harness exit code passes through as the value.
185
+ export function runCommand(options) {
186
+ if (options.argv[0] === "hook") {
187
+ return runHook(options).then((exitCode) => ({ ok: true, value: exitCode }));
188
+ }
189
+ return runCommandImpl(options);
190
+ }
191
+ // SPEC §7.15 + §4.19.5: stdio server entry for the vscode extension. The
192
+ // loop serves one NDJSON session on this process's stdio; commands run
193
+ // through the same table with per-call output capture (see serve-run.ts),
194
+ // so frames stay the only stdout bytes. A closed stdin (no piped client)
195
+ // exits 0 without serving.
196
+ export function runServer(options) {
197
+ return startStdioServer(options, runCommand);
198
+ }
@@ -0,0 +1,23 @@
1
+ import type { Result } from "../kernel/index.ts";
2
+ import { guardrailPlan } from "./plan.ts";
3
+ import type { CommandRequest } from "./shared.ts";
4
+ export interface InitFlags {
5
+ readonly harnesses: Array<string>;
6
+ readonly profile: string;
7
+ readonly packs: Array<string>;
8
+ readonly tools: Array<{
9
+ role: string;
10
+ command: string;
11
+ pin: string;
12
+ }>;
13
+ readonly repair: boolean;
14
+ }
15
+ export declare function ensureBaseline(root: string, req: CommandRequest): Promise<Result<boolean>>;
16
+ export declare function defaultHarnesses(flags: InitFlags): Array<string>;
17
+ export declare function reportExisting(req: CommandRequest, root: string): Result<number>;
18
+ export declare function checkFreshConfig(root: string, req: CommandRequest): Promise<Result<number>>;
19
+ export declare function emitInitResult(req: CommandRequest, root: string, written: ReadonlyArray<{
20
+ path: string;
21
+ }>, baselineWritten: boolean): Result<number>;
22
+ export declare function initPreamble(req: CommandRequest): Promise<string | Result<number>>;
23
+ export declare function buildGuardrailPlan(root: string, flags: InitFlags, planned: ReadonlyArray<string>, engineVersion?: string): Promise<ReturnType<typeof guardrailPlan>>;
@@ -0,0 +1,135 @@
1
+ // SPEC §4.13.1 + §4.14.1: init execution. Split from the init command
2
+ // (init.ts) by responsibility: flag parsing stays on the command, module
3
+ // detection, baseline, guards and plan assembly live here.
4
+ import { CODICTATOR_MODULES } from "../features/arch/index.js";
5
+ import { ENGINE_VERSION } from "../features/config/index.js";
6
+ import { captureBaseline } from "../features/remediation/index.js";
7
+ import { ok, parseJson, resolveRepoRoot, stableStringify, } from "../kernel/index.js";
8
+ import { buildHelperTool, guardrailPlan } from "./plan.js";
9
+ import { checkHuman, commandEnv, fail, loadRepoConfig, printHuman, printJson, readStateText, writeStateText, } from "./shared.js";
10
+ // SPEC §4.19.2: a helper tool proposal names the helper role, the binary
11
+ // and the exact pin from the human's registry lookup: role=command@pin.
12
+ function isRecord(value) {
13
+ return typeof value === "object" && value !== null && !Array.isArray(value);
14
+ }
15
+ // SPEC §4.11.2 + §3.3: on the Codictator repo itself, init proposes the
16
+ // canonical module map the arch guard dogfoods (profiles.ts), rewritten to
17
+ // repo-relative paths. Any other repo gets no modules; the human adds them.
18
+ async function detectCodictatorModules(root) {
19
+ const text = await readStateText(root, "packages/codictator/package.json");
20
+ if (text === undefined) {
21
+ return undefined;
22
+ }
23
+ const parsed = parseJson(text);
24
+ if (!parsed.ok || !isRecord(parsed.value)) {
25
+ return undefined;
26
+ }
27
+ const nameKey = "name";
28
+ if (parsed.value[nameKey] !== "codictator") {
29
+ return undefined;
30
+ }
31
+ return CODICTATOR_MODULES.map((mod) => ({
32
+ name: mod.name,
33
+ path: `packages/codictator/${mod.path}`,
34
+ ...(mod.kind === undefined ? {} : { kind: mod.kind }),
35
+ ...(mod.entry === undefined ? {} : { entry: mod.entry }),
36
+ dependsOn: [...mod.dependsOn],
37
+ }));
38
+ }
39
+ // SPEC §4.13.1 step 3: init captures the baseline. On a greenfield repo the
40
+ // first verify has no findings, so the capture is the empty ratchet. An
41
+ // existing baseline (repair, L3 tighten, capture) is never overwritten.
42
+ export async function ensureBaseline(root, req) {
43
+ const existing = await readStateText(root, ".codictator/baseline.json");
44
+ if (existing !== undefined) {
45
+ return ok(false);
46
+ }
47
+ const captured = await captureBaseline(root, []);
48
+ if (!captured.ok) {
49
+ return fail("CDX-E903", captured.error.message, captured.error.remediation, req.json);
50
+ }
51
+ const saved = await writeStateText(root, ".codictator/baseline.json", `${stableStringify(captured.value)}\n`);
52
+ if (!saved.ok) {
53
+ return fail("CDX-E903", saved.error.message, saved.error.remediation, req.json);
54
+ }
55
+ return ok(true);
56
+ }
57
+ // SPEC §4.19.2: init harnesses default to every known adapter id when no
58
+ // --harness flag is given; unknown ids fail as CDX-E301 via config
59
+ // validation, never silently.
60
+ const DEFAULT_HARNESSES = [
61
+ "muse-code",
62
+ "universal",
63
+ "claude-code",
64
+ "copilot",
65
+ "codex-cli",
66
+ "cursor",
67
+ "gemini-cli",
68
+ "opencode",
69
+ ];
70
+ export function defaultHarnesses(flags) {
71
+ return flags.harnesses.length > 0 ? flags.harnesses : [...DEFAULT_HARNESSES];
72
+ }
73
+ export function reportExisting(req, root) {
74
+ printHuman("already a Codictator repo; rerun with --repair to regenerate", req.quiet);
75
+ if (req.json) {
76
+ printJson({ initialized: false, reason: "exists", root });
77
+ }
78
+ return ok(0);
79
+ }
80
+ export async function checkFreshConfig(root, req) {
81
+ const fresh = await loadRepoConfig(root, undefined, req.engineVersion ?? ENGINE_VERSION);
82
+ if (!fresh.ok) {
83
+ return fail("CDX-E901", fresh.error.message, "Rerun codictator init --repair; report the mismatch.", req.json, fresh.error.detail);
84
+ }
85
+ return ok(0);
86
+ }
87
+ export function emitInitResult(req, root, written, baselineWritten) {
88
+ const files = baselineWritten === false
89
+ ? written
90
+ : [...written, { path: ".codictator/baseline.json" }];
91
+ if (req.json) {
92
+ printJson({
93
+ initialized: true,
94
+ root,
95
+ files: files.map((entry) => entry.path),
96
+ });
97
+ }
98
+ else {
99
+ for (const entry of files) {
100
+ printHuman(`wrote ${entry.path}`, req.quiet);
101
+ }
102
+ printHuman("init: run npm ci, then codictator install-hooks", req.quiet);
103
+ }
104
+ return ok(0);
105
+ }
106
+ export async function initPreamble(req) {
107
+ const human = checkHuman(commandEnv(), []);
108
+ if (!human.ok) {
109
+ return fail("CDX-E107", human.error.message, human.error.remediation, req.json);
110
+ }
111
+ const root = await resolveRepoRoot(req.cwd);
112
+ if (!root.ok) {
113
+ return fail("CDX-E703", root.error.message, root.error.remediation, req.json);
114
+ }
115
+ return root.value;
116
+ }
117
+ // The plan assembly handleInit writes: read-only inputs in, GuardrailPlan
118
+ // out. Writing stays on the command so the plan builder never touches
119
+ // the disk.
120
+ export async function buildGuardrailPlan(root, flags, planned, engineVersion = ENGINE_VERSION) {
121
+ const agents = await readStateText(root, "AGENTS.md");
122
+ const repoName = root.replaceAll("\\", "/").split("/").pop() ?? "repo";
123
+ const modules = await detectCodictatorModules(root);
124
+ const architecture = modules === undefined
125
+ ? undefined
126
+ : {
127
+ ...(flags.profile === "" ? {} : { profile: flags.profile }),
128
+ modules,
129
+ };
130
+ return guardrailPlan(planned, flags.profile, repoName, agents, {
131
+ packs: flags.packs.map((id) => ({ id, version: engineVersion })),
132
+ tools: flags.tools.map((tool) => buildHelperTool(tool)),
133
+ ...(architecture === undefined ? {} : { architecture }),
134
+ }, engineVersion);
135
+ }
@@ -0,0 +1,3 @@
1
+ import type { Result } from "../kernel/index.ts";
2
+ import type { CommandRequest } from "./shared.ts";
3
+ export declare function handleInit(req: CommandRequest): Promise<Result<number>>;
@@ -0,0 +1,122 @@
1
+ // SPEC §4.19.2 + §4.13.1: human-only adoption. Writes config, steering
2
+ // block, manifest, CI workflow, hooks and launcher; existing config needs
3
+ // --repair, unknown harnesses fail as CDX-E301 via validation.
4
+ import { parseArgs } from "node:util";
5
+ import { ENGINE_VERSION } from "../features/config/index.js";
6
+ import { isBuiltinPackId } from "../features/packs/index.js";
7
+ import { buildGuardrailPlan, checkFreshConfig, defaultHarnesses, emitInitResult, ensureBaseline, initPreamble, reportExisting, } from "./init-plan.js";
8
+ import { KNOWN_HELPER_ROLES, writePlan } from "./plan.js";
9
+ import { fail, readStateText, usageError } from "./shared.js";
10
+ const KNOWN_PROFILES = new Set([
11
+ "app",
12
+ "library",
13
+ "cli",
14
+ "service",
15
+ ]);
16
+ function parseToolSpec(spec) {
17
+ const eq = spec.indexOf("=");
18
+ if (eq < 0) {
19
+ return undefined;
20
+ }
21
+ const role = spec.slice(0, eq).trim();
22
+ const rest = spec.slice(eq + 1);
23
+ const at = rest.lastIndexOf("@");
24
+ if (at < 0) {
25
+ return undefined;
26
+ }
27
+ const command = rest.slice(0, at).trim();
28
+ const pin = rest.slice(at + 1).trim();
29
+ if (!KNOWN_HELPER_ROLES.has(role) || command === "" || pin === "") {
30
+ return undefined;
31
+ }
32
+ return { role, command, pin };
33
+ }
34
+ function narrowInitProfile(profile) {
35
+ if (profile !== undefined && profile !== "" && !KNOWN_PROFILES.has(profile)) {
36
+ return undefined;
37
+ }
38
+ return profile ?? "";
39
+ }
40
+ function narrowInitPacks(packs) {
41
+ const ids = [...(packs ?? [])];
42
+ if (ids.some((id) => !isBuiltinPackId(id))) {
43
+ return undefined;
44
+ }
45
+ return ids;
46
+ }
47
+ function narrowInitTools(specs) {
48
+ const tools = [];
49
+ for (const spec of specs ?? []) {
50
+ const tool = parseToolSpec(spec);
51
+ if (tool === undefined) {
52
+ return undefined;
53
+ }
54
+ tools.push(tool);
55
+ }
56
+ return tools;
57
+ }
58
+ function parseInitFlags(args) {
59
+ try {
60
+ const parsed = parseArgs({
61
+ args: [...args],
62
+ options: {
63
+ harness: { type: "string", multiple: true, default: [] },
64
+ profile: { type: "string", default: "" },
65
+ pack: { type: "string", multiple: true, default: [] },
66
+ tool: { type: "string", multiple: true, default: [] },
67
+ repair: { type: "boolean", default: false },
68
+ },
69
+ allowPositionals: true,
70
+ });
71
+ if (parsed.positionals.length > 0) {
72
+ return undefined;
73
+ }
74
+ const profile = narrowInitProfile(parsed.values.profile);
75
+ const packs = narrowInitPacks(parsed.values.pack);
76
+ const tools = narrowInitTools(parsed.values.tool);
77
+ if (profile === undefined || packs === undefined || tools === undefined) {
78
+ return undefined;
79
+ }
80
+ return {
81
+ harnesses: [...(parsed.values.harness ?? [])],
82
+ profile,
83
+ packs,
84
+ tools,
85
+ repair: parsed.values.repair ?? false,
86
+ };
87
+ }
88
+ catch {
89
+ return undefined;
90
+ }
91
+ }
92
+ const INIT_USAGE = "usage: codictator init [--harness <id> ...] [--profile <app|library|cli|service>] [--pack <id> ...] [--tool <role>=<command>@<pin> ...] [--repair]";
93
+ export async function handleInit(req) {
94
+ const flags = parseInitFlags(req.args);
95
+ if (flags === undefined) {
96
+ return usageError(INIT_USAGE);
97
+ }
98
+ const root = await initPreamble(req);
99
+ if (typeof root !== "string") {
100
+ return root;
101
+ }
102
+ const planned = defaultHarnesses(flags);
103
+ const engineVersion = req.engineVersion ?? ENGINE_VERSION;
104
+ const existing = await readStateText(root, ".codictator/config.json");
105
+ if (existing !== undefined && !flags.repair) {
106
+ return reportExisting(req, root);
107
+ }
108
+ const plan = await buildGuardrailPlan(root, flags, planned, engineVersion);
109
+ const wrote = await writePlan(root, plan, engineVersion);
110
+ if (!wrote.ok) {
111
+ return fail("CDX-E903", wrote.error.message, wrote.error.remediation, req.json);
112
+ }
113
+ const fresh = await checkFreshConfig(root, req);
114
+ if (!fresh.ok) {
115
+ return fresh;
116
+ }
117
+ const baseline = await ensureBaseline(root, req);
118
+ if (!baseline.ok) {
119
+ return fail(baseline.error.code, baseline.error.message, baseline.error.remediation, req.json);
120
+ }
121
+ return emitInitResult(req, root, wrote.value, baseline.value);
122
+ }