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.
Files changed (835) 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/violating/basic/case.json +10 -0
  189. package/dist/builtin-packs/typescript/fixtures/no-phantom-import/passing/basic/case.json +10 -0
  190. package/dist/builtin-packs/typescript/fixtures/no-phantom-import/passing/host-provided/case.json +10 -0
  191. package/dist/builtin-packs/typescript/fixtures/no-phantom-import/violating/basic/case.json +10 -0
  192. package/dist/builtin-packs/typescript/fixtures/no-phantom-import/violating/host-provided/case.json +10 -0
  193. package/dist/builtin-packs/typescript/fixtures/security-patterns/passing/basic/case.json +10 -0
  194. package/dist/builtin-packs/typescript/fixtures/security-patterns/violating/basic/case.json +10 -0
  195. package/dist/builtin-packs/typescript/fixtures/typecheck/passing/basic/case.json +10 -0
  196. package/dist/builtin-packs/typescript/fixtures/typecheck/violating/basic/case.json +10 -0
  197. package/dist/builtin-packs/typescript/index.ts +85 -0
  198. package/dist/builtin-packs/typescript/lex.ts +199 -0
  199. package/dist/builtin-packs/typescript/measures-exports.ts +173 -0
  200. package/dist/builtin-packs/typescript/measures-functions.ts +138 -0
  201. package/dist/builtin-packs/typescript/measures.ts +10 -0
  202. package/dist/builtin-packs/typescript/naming.ts +47 -0
  203. package/dist/builtin-packs/typescript/pack.json +169 -0
  204. package/dist/builtin-packs/typescript/patterns.ts +93 -0
  205. package/dist/builtin-packs/typescript/resolve.ts +224 -0
  206. package/dist/builtin-packs/typescript/strict.ts +177 -0
  207. package/dist/builtin-packs/typescript/titles.ts +184 -0
  208. package/dist/cli/baseline.d.ts +3 -0
  209. package/dist/cli/baseline.js +67 -0
  210. package/dist/cli/ci-bot-change.d.ts +3 -0
  211. package/dist/cli/ci-bot-change.js +54 -0
  212. package/dist/cli/ci-range.d.ts +18 -0
  213. package/dist/cli/ci-range.js +228 -0
  214. package/dist/cli/ci-summary.d.ts +3 -0
  215. package/dist/cli/ci-summary.js +45 -0
  216. package/dist/cli/ci.d.ts +4 -0
  217. package/dist/cli/ci.js +195 -0
  218. package/dist/cli/commands.d.ts +5 -0
  219. package/dist/cli/commands.js +39 -0
  220. package/dist/cli/deps.d.ts +3 -0
  221. package/dist/cli/deps.js +115 -0
  222. package/dist/cli/drift.d.ts +11 -0
  223. package/dist/cli/drift.js +91 -0
  224. package/dist/cli/evaluate.d.ts +20 -0
  225. package/dist/cli/evaluate.js +213 -0
  226. package/dist/cli/gate-scope.d.ts +10 -0
  227. package/dist/cli/gate-scope.js +82 -0
  228. package/dist/cli/git-hook.d.ts +3 -0
  229. package/dist/cli/git-hook.js +179 -0
  230. package/dist/cli/guardrail.d.ts +5 -0
  231. package/dist/cli/guardrail.js +190 -0
  232. package/dist/cli/index.d.ts +12 -0
  233. package/dist/cli/index.js +198 -0
  234. package/dist/cli/init-plan.d.ts +23 -0
  235. package/dist/cli/init-plan.js +135 -0
  236. package/dist/cli/init.d.ts +3 -0
  237. package/dist/cli/init.js +122 -0
  238. package/dist/cli/inspect-status.d.ts +8 -0
  239. package/dist/cli/inspect-status.js +164 -0
  240. package/dist/cli/inspect.d.ts +5 -0
  241. package/dist/cli/inspect.js +98 -0
  242. package/dist/cli/main.d.ts +2 -0
  243. package/dist/cli/main.js +60 -0
  244. package/dist/cli/pack-adapters.d.ts +3 -0
  245. package/dist/cli/pack-adapters.js +81 -0
  246. package/dist/cli/packs.d.ts +6 -0
  247. package/dist/cli/packs.js +131 -0
  248. package/dist/cli/plan-launcher.d.ts +1 -0
  249. package/dist/cli/plan-launcher.js +222 -0
  250. package/dist/cli/plan.d.ts +25 -0
  251. package/dist/cli/plan.js +121 -0
  252. package/dist/cli/proofs-test.d.ts +3 -0
  253. package/dist/cli/proofs-test.js +77 -0
  254. package/dist/cli/proofs.d.ts +3 -0
  255. package/dist/cli/proofs.js +168 -0
  256. package/dist/cli/remediation.d.ts +3 -0
  257. package/dist/cli/remediation.js +107 -0
  258. package/dist/cli/report.d.ts +4 -0
  259. package/dist/cli/report.js +93 -0
  260. package/dist/cli/serve-eval.d.ts +2 -0
  261. package/dist/cli/serve-eval.js +165 -0
  262. package/dist/cli/serve-log.d.ts +2 -0
  263. package/dist/cli/serve-log.js +150 -0
  264. package/dist/cli/serve-methods.d.ts +2 -0
  265. package/dist/cli/serve-methods.js +181 -0
  266. package/dist/cli/serve-protocol.d.ts +35 -0
  267. package/dist/cli/serve-protocol.js +97 -0
  268. package/dist/cli/serve-run.d.ts +9 -0
  269. package/dist/cli/serve-run.js +135 -0
  270. package/dist/cli/serve-server.d.ts +5 -0
  271. package/dist/cli/serve-server.js +120 -0
  272. package/dist/cli/serve-shared.d.ts +34 -0
  273. package/dist/cli/serve-shared.js +20 -0
  274. package/dist/cli/serve-status.d.ts +2 -0
  275. package/dist/cli/serve-status.js +130 -0
  276. package/dist/cli/serve-transport.d.ts +2 -0
  277. package/dist/cli/serve-transport.js +114 -0
  278. package/dist/cli/shared.d.ts +35 -0
  279. package/dist/cli/shared.js +181 -0
  280. package/dist/cli/task-advance.d.ts +3 -0
  281. package/dist/cli/task-advance.js +144 -0
  282. package/dist/cli/task-phases.d.ts +3 -0
  283. package/dist/cli/task-phases.js +77 -0
  284. package/dist/cli/tasks.d.ts +12 -0
  285. package/dist/cli/tasks.js +176 -0
  286. package/dist/cli/transparency.d.ts +4 -0
  287. package/dist/cli/transparency.js +197 -0
  288. package/dist/cli/waivers.d.ts +3 -0
  289. package/dist/cli/waivers.js +195 -0
  290. package/dist/features/adapters/claude-code.d.ts +8 -0
  291. package/dist/features/adapters/claude-code.js +198 -0
  292. package/dist/features/adapters/claude-shaped.d.ts +3 -0
  293. package/dist/features/adapters/claude-shaped.js +176 -0
  294. package/dist/features/adapters/codex-cli.d.ts +8 -0
  295. package/dist/features/adapters/codex-cli.js +180 -0
  296. package/dist/features/adapters/contract.d.ts +104 -0
  297. package/dist/features/adapters/contract.js +17 -0
  298. package/dist/features/adapters/copilot-capabilities.d.ts +2 -0
  299. package/dist/features/adapters/copilot-capabilities.js +46 -0
  300. package/dist/features/adapters/copilot.d.ts +8 -0
  301. package/dist/features/adapters/copilot.js +207 -0
  302. package/dist/features/adapters/cursor.d.ts +8 -0
  303. package/dist/features/adapters/cursor.js +245 -0
  304. package/dist/features/adapters/custom-event.d.ts +3 -0
  305. package/dist/features/adapters/custom-event.js +180 -0
  306. package/dist/features/adapters/custom-load.d.ts +3 -0
  307. package/dist/features/adapters/custom-load.js +185 -0
  308. package/dist/features/adapters/custom-shape.d.ts +21 -0
  309. package/dist/features/adapters/custom-shape.js +87 -0
  310. package/dist/features/adapters/custom.d.ts +9 -0
  311. package/dist/features/adapters/custom.js +130 -0
  312. package/dist/features/adapters/effective-cache.d.ts +5 -0
  313. package/dist/features/adapters/effective-cache.js +45 -0
  314. package/dist/features/adapters/gemini-cli.d.ts +6 -0
  315. package/dist/features/adapters/gemini-cli.js +160 -0
  316. package/dist/features/adapters/gemini-tables.d.ts +7 -0
  317. package/dist/features/adapters/gemini-tables.js +104 -0
  318. package/dist/features/adapters/hook-dispatch.d.ts +7 -0
  319. package/dist/features/adapters/hook-dispatch.js +97 -0
  320. package/dist/features/adapters/hook-injection.d.ts +12 -0
  321. package/dist/features/adapters/hook-injection.js +75 -0
  322. package/dist/features/adapters/hook-load.d.ts +15 -0
  323. package/dist/features/adapters/hook-load.js +152 -0
  324. package/dist/features/adapters/hook-scope.d.ts +3 -0
  325. package/dist/features/adapters/hook-scope.js +54 -0
  326. package/dist/features/adapters/index.d.ts +22 -0
  327. package/dist/features/adapters/index.js +86 -0
  328. package/dist/features/adapters/muse-code.d.ts +8 -0
  329. package/dist/features/adapters/muse-code.js +223 -0
  330. package/dist/features/adapters/opencode-bridge.d.ts +1 -0
  331. package/dist/features/adapters/opencode-bridge.js +230 -0
  332. package/dist/features/adapters/opencode-capabilities.d.ts +2 -0
  333. package/dist/features/adapters/opencode-capabilities.js +47 -0
  334. package/dist/features/adapters/opencode-parse.d.ts +3 -0
  335. package/dist/features/adapters/opencode-parse.js +137 -0
  336. package/dist/features/adapters/opencode-tables.d.ts +5 -0
  337. package/dist/features/adapters/opencode-tables.js +63 -0
  338. package/dist/features/adapters/opencode.d.ts +10 -0
  339. package/dist/features/adapters/opencode.js +97 -0
  340. package/dist/features/adapters/runtime.d.ts +25 -0
  341. package/dist/features/adapters/runtime.js +148 -0
  342. package/dist/features/adapters/universal.d.ts +7 -0
  343. package/dist/features/adapters/universal.js +89 -0
  344. package/dist/features/arch/arch-profiles.d.ts +3 -0
  345. package/dist/features/arch/arch-profiles.js +5 -0
  346. package/dist/features/arch/checks.d.ts +25 -0
  347. package/dist/features/arch/checks.js +173 -0
  348. package/dist/features/arch/codictator-modules.d.ts +4 -0
  349. package/dist/features/arch/codictator-modules.js +180 -0
  350. package/dist/features/arch/cycle-walk.d.ts +1 -0
  351. package/dist/features/arch/cycle-walk.js +36 -0
  352. package/dist/features/arch/edge-checks.d.ts +13 -0
  353. package/dist/features/arch/edge-checks.js +186 -0
  354. package/dist/features/arch/graph.d.ts +32 -0
  355. package/dist/features/arch/graph.js +202 -0
  356. package/dist/features/arch/index.d.ts +29 -0
  357. package/dist/features/arch/index.js +16 -0
  358. package/dist/features/arch/layer-rules.d.ts +3 -0
  359. package/dist/features/arch/layer-rules.js +38 -0
  360. package/dist/features/arch/module-map-validation.d.ts +3 -0
  361. package/dist/features/arch/module-map-validation.js +30 -0
  362. package/dist/features/arch/module-mapping.d.ts +15 -0
  363. package/dist/features/arch/module-mapping.js +184 -0
  364. package/dist/features/arch/profiles.d.ts +4 -0
  365. package/dist/features/arch/profiles.js +8 -0
  366. package/dist/features/audit/append.d.ts +26 -0
  367. package/dist/features/audit/append.js +205 -0
  368. package/dist/features/audit/explain-table-tail.d.ts +2 -0
  369. package/dist/features/audit/explain-table-tail.js +29 -0
  370. package/dist/features/audit/explain-table.d.ts +8 -0
  371. package/dist/features/audit/explain-table.js +48 -0
  372. package/dist/features/audit/explain.d.ts +7 -0
  373. package/dist/features/audit/explain.js +87 -0
  374. package/dist/features/audit/index.d.ts +37 -0
  375. package/dist/features/audit/index.js +17 -0
  376. package/dist/features/audit/injection-event.d.ts +11 -0
  377. package/dist/features/audit/injection-event.js +17 -0
  378. package/dist/features/audit/read.d.ts +8 -0
  379. package/dist/features/audit/read.js +62 -0
  380. package/dist/features/audit/summarize.d.ts +1 -0
  381. package/dist/features/audit/summarize.js +41 -0
  382. package/dist/features/audit/surfaces.d.ts +47 -0
  383. package/dist/features/audit/surfaces.js +165 -0
  384. package/dist/features/audit/token-saver-evidence.d.ts +14 -0
  385. package/dist/features/audit/token-saver-evidence.js +85 -0
  386. package/dist/features/ci/changes.d.ts +28 -0
  387. package/dist/features/ci/changes.js +88 -0
  388. package/dist/features/ci/index.d.ts +22 -0
  389. package/dist/features/ci/index.js +75 -0
  390. package/dist/features/ci/protection-read.d.ts +3 -0
  391. package/dist/features/ci/protection-read.js +264 -0
  392. package/dist/features/ci/protection.d.ts +25 -0
  393. package/dist/features/ci/protection.js +77 -0
  394. package/dist/features/ci/workflow.d.ts +23 -0
  395. package/dist/features/ci/workflow.js +261 -0
  396. package/dist/features/config/human.d.ts +4 -0
  397. package/dist/features/config/human.js +31 -0
  398. package/dist/features/config/index.d.ts +37 -0
  399. package/dist/features/config/index.js +129 -0
  400. package/dist/features/config/pack-data.d.ts +18 -0
  401. package/dist/features/config/pack-data.js +116 -0
  402. package/dist/features/config/validate-sections.d.ts +6 -0
  403. package/dist/features/config/validate-sections.js +198 -0
  404. package/dist/features/config/validate-shared.d.ts +8 -0
  405. package/dist/features/config/validate-shared.js +69 -0
  406. package/dist/features/config/validate-tunables.d.ts +1 -0
  407. package/dist/features/config/validate-tunables.js +89 -0
  408. package/dist/features/config/validate.d.ts +2 -0
  409. package/dist/features/config/validate.js +57 -0
  410. package/dist/features/deps/bots.d.ts +5 -0
  411. package/dist/features/deps/bots.js +39 -0
  412. package/dist/features/deps/capabilities.d.ts +3 -0
  413. package/dist/features/deps/capabilities.js +91 -0
  414. package/dist/features/deps/check.d.ts +18 -0
  415. package/dist/features/deps/check.js +70 -0
  416. package/dist/features/deps/dependabot.d.ts +10 -0
  417. package/dist/features/deps/dependabot.js +154 -0
  418. package/dist/features/deps/eval.d.ts +41 -0
  419. package/dist/features/deps/eval.js +24 -0
  420. package/dist/features/deps/fields.d.ts +4 -0
  421. package/dist/features/deps/fields.js +18 -0
  422. package/dist/features/deps/index.d.ts +67 -0
  423. package/dist/features/deps/index.js +27 -0
  424. package/dist/features/deps/lockfile.d.ts +8 -0
  425. package/dist/features/deps/lockfile.js +87 -0
  426. package/dist/features/deps/npm.d.ts +22 -0
  427. package/dist/features/deps/npm.js +172 -0
  428. package/dist/features/deps/npmrc.d.ts +12 -0
  429. package/dist/features/deps/npmrc.js +50 -0
  430. package/dist/features/deps/nuget.d.ts +25 -0
  431. package/dist/features/deps/nuget.js +112 -0
  432. package/dist/features/deps/osv-ranges.d.ts +12 -0
  433. package/dist/features/deps/osv-ranges.js +83 -0
  434. package/dist/features/deps/osv.d.ts +16 -0
  435. package/dist/features/deps/osv.js +144 -0
  436. package/dist/features/deps/pypi-pyproject.d.ts +7 -0
  437. package/dist/features/deps/pypi-pyproject.js +118 -0
  438. package/dist/features/deps/pypi.d.ts +29 -0
  439. package/dist/features/deps/pypi.js +137 -0
  440. package/dist/features/deps/registry.d.ts +29 -0
  441. package/dist/features/deps/registry.js +147 -0
  442. package/dist/features/deps/renovate.d.ts +15 -0
  443. package/dist/features/deps/renovate.js +98 -0
  444. package/dist/features/deps/selection.d.ts +20 -0
  445. package/dist/features/deps/selection.js +150 -0
  446. package/dist/features/deps/snapshot-verdicts.d.ts +16 -0
  447. package/dist/features/deps/snapshot-verdicts.js +184 -0
  448. package/dist/features/deps/stable.d.ts +19 -0
  449. package/dist/features/deps/stable.js +106 -0
  450. package/dist/features/deps/step-size.d.ts +7 -0
  451. package/dist/features/deps/step-size.js +24 -0
  452. package/dist/features/deps/upgrade.d.ts +35 -0
  453. package/dist/features/deps/upgrade.js +114 -0
  454. package/dist/features/deps/verdicts.d.ts +21 -0
  455. package/dist/features/deps/verdicts.js +219 -0
  456. package/dist/features/engine/evaluate.d.ts +12 -0
  457. package/dist/features/engine/evaluate.js +165 -0
  458. package/dist/features/engine/index.d.ts +21 -0
  459. package/dist/features/engine/index.js +24 -0
  460. package/dist/features/engine/message.d.ts +3 -0
  461. package/dist/features/engine/message.js +69 -0
  462. package/dist/features/engine/ratchet.d.ts +1 -0
  463. package/dist/features/engine/ratchet.js +63 -0
  464. package/dist/features/engine/run-enforcer.d.ts +4 -0
  465. package/dist/features/engine/run-enforcer.js +82 -0
  466. package/dist/features/engine/waivers.d.ts +23 -0
  467. package/dist/features/engine/waivers.js +169 -0
  468. package/dist/features/generator/draft.d.ts +7 -0
  469. package/dist/features/generator/draft.js +148 -0
  470. package/dist/features/generator/index.d.ts +22 -0
  471. package/dist/features/generator/index.js +8 -0
  472. package/dist/features/generator/llm-draft.d.ts +3 -0
  473. package/dist/features/generator/llm-draft.js +93 -0
  474. package/dist/features/generator/prompt.d.ts +25 -0
  475. package/dist/features/generator/prompt.js +105 -0
  476. package/dist/features/generator/self-test.d.ts +12 -0
  477. package/dist/features/generator/self-test.js +65 -0
  478. package/dist/features/generator/templates.d.ts +26 -0
  479. package/dist/features/generator/templates.js +177 -0
  480. package/dist/features/integrity/drift.d.ts +19 -0
  481. package/dist/features/integrity/drift.js +168 -0
  482. package/dist/features/integrity/hooks.d.ts +19 -0
  483. package/dist/features/integrity/hooks.js +54 -0
  484. package/dist/features/integrity/index.d.ts +10 -0
  485. package/dist/features/integrity/index.js +14 -0
  486. package/dist/features/integrity/manifest.d.ts +15 -0
  487. package/dist/features/integrity/manifest.js +26 -0
  488. package/dist/features/integrity/self-protection.d.ts +12 -0
  489. package/dist/features/integrity/self-protection.js +144 -0
  490. package/dist/features/llm/attempt.d.ts +17 -0
  491. package/dist/features/llm/attempt.js +99 -0
  492. package/dist/features/llm/errors.d.ts +5 -0
  493. package/dist/features/llm/errors.js +18 -0
  494. package/dist/features/llm/index.d.ts +23 -0
  495. package/dist/features/llm/index.js +46 -0
  496. package/dist/features/llm/presets.d.ts +25 -0
  497. package/dist/features/llm/presets.js +159 -0
  498. package/dist/features/llm/wire.d.ts +17 -0
  499. package/dist/features/llm/wire.js +163 -0
  500. package/dist/features/packs/accept.d.ts +7 -0
  501. package/dist/features/packs/accept.js +73 -0
  502. package/dist/features/packs/enforcers/arch-guards.d.ts +12 -0
  503. package/dist/features/packs/enforcers/arch-guards.js +193 -0
  504. package/dist/features/packs/enforcers/binding.d.ts +31 -0
  505. package/dist/features/packs/enforcers/binding.js +157 -0
  506. package/dist/features/packs/enforcers/ci-guards.d.ts +10 -0
  507. package/dist/features/packs/enforcers/ci-guards.js +128 -0
  508. package/dist/features/packs/enforcers/code-health.d.ts +9 -0
  509. package/dist/features/packs/enforcers/code-health.js +180 -0
  510. package/dist/features/packs/enforcers/code.d.ts +5 -0
  511. package/dist/features/packs/enforcers/code.js +128 -0
  512. package/dist/features/packs/enforcers/command-forbid.d.ts +8 -0
  513. package/dist/features/packs/enforcers/command-forbid.js +61 -0
  514. package/dist/features/packs/enforcers/deps-guards.d.ts +15 -0
  515. package/dist/features/packs/enforcers/deps-guards.js +235 -0
  516. package/dist/features/packs/enforcers/deps-policy-guards.d.ts +9 -0
  517. package/dist/features/packs/enforcers/deps-policy-guards.js +135 -0
  518. package/dist/features/packs/enforcers/docs-guards-measures.d.ts +9 -0
  519. package/dist/features/packs/enforcers/docs-guards-measures.js +117 -0
  520. package/dist/features/packs/enforcers/docs-guards.d.ts +11 -0
  521. package/dist/features/packs/enforcers/docs-guards.js +180 -0
  522. package/dist/features/packs/enforcers/external-attribute.d.ts +18 -0
  523. package/dist/features/packs/enforcers/external-attribute.js +122 -0
  524. package/dist/features/packs/enforcers/external-bind.d.ts +4 -0
  525. package/dist/features/packs/enforcers/external-bind.js +172 -0
  526. package/dist/features/packs/enforcers/external-check.d.ts +7 -0
  527. package/dist/features/packs/enforcers/external-check.js +131 -0
  528. package/dist/features/packs/enforcers/external-output.d.ts +30 -0
  529. package/dist/features/packs/enforcers/external-output.js +144 -0
  530. package/dist/features/packs/enforcers/external-probe.d.ts +4 -0
  531. package/dist/features/packs/enforcers/external-probe.js +65 -0
  532. package/dist/features/packs/enforcers/external-runs.d.ts +33 -0
  533. package/dist/features/packs/enforcers/external-runs.js +162 -0
  534. package/dist/features/packs/enforcers/external-sarif.d.ts +3 -0
  535. package/dist/features/packs/enforcers/external-sarif.js +103 -0
  536. package/dist/features/packs/enforcers/external.d.ts +39 -0
  537. package/dist/features/packs/enforcers/external.js +11 -0
  538. package/dist/features/packs/enforcers/gate-guards.d.ts +12 -0
  539. package/dist/features/packs/enforcers/gate-guards.js +170 -0
  540. package/dist/features/packs/enforcers/health-abstraction.d.ts +5 -0
  541. package/dist/features/packs/enforcers/health-abstraction.js +126 -0
  542. package/dist/features/packs/enforcers/health-duplication.d.ts +5 -0
  543. package/dist/features/packs/enforcers/health-duplication.js +197 -0
  544. package/dist/features/packs/enforcers/health-lex-imports.d.ts +5 -0
  545. package/dist/features/packs/enforcers/health-lex-imports.js +225 -0
  546. package/dist/features/packs/enforcers/health-lex-template.d.ts +10 -0
  547. package/dist/features/packs/enforcers/health-lex-template.js +67 -0
  548. package/dist/features/packs/enforcers/health-lex.d.ts +8 -0
  549. package/dist/features/packs/enforcers/health-lex.js +227 -0
  550. package/dist/features/packs/enforcers/health-markers.d.ts +3 -0
  551. package/dist/features/packs/enforcers/health-markers.js +31 -0
  552. package/dist/features/packs/enforcers/health-measures.d.ts +24 -0
  553. package/dist/features/packs/enforcers/health-measures.js +214 -0
  554. package/dist/features/packs/enforcers/health-refs.d.ts +6 -0
  555. package/dist/features/packs/enforcers/health-refs.js +61 -0
  556. package/dist/features/packs/enforcers/integrity-guards-repo.d.ts +6 -0
  557. package/dist/features/packs/enforcers/integrity-guards-repo.js +189 -0
  558. package/dist/features/packs/enforcers/integrity-guards.d.ts +12 -0
  559. package/dist/features/packs/enforcers/integrity-guards.js +202 -0
  560. package/dist/features/packs/enforcers/jsonkey.d.ts +13 -0
  561. package/dist/features/packs/enforcers/jsonkey.js +95 -0
  562. package/dist/features/packs/enforcers/parametric.d.ts +7 -0
  563. package/dist/features/packs/enforcers/parametric.js +138 -0
  564. package/dist/features/packs/enforcers/pattern.d.ts +11 -0
  565. package/dist/features/packs/enforcers/pattern.js +88 -0
  566. package/dist/features/packs/enforcers/placement.d.ts +10 -0
  567. package/dist/features/packs/enforcers/placement.js +54 -0
  568. package/dist/features/packs/enforcers/py-checks.d.ts +7 -0
  569. package/dist/features/packs/enforcers/py-checks.js +131 -0
  570. package/dist/features/packs/enforcers/py-lex.d.ts +10 -0
  571. package/dist/features/packs/enforcers/py-lex.js +271 -0
  572. package/dist/features/packs/enforcers/py-phantom.d.ts +6 -0
  573. package/dist/features/packs/enforcers/py-phantom.js +163 -0
  574. package/dist/features/packs/enforcers/py-pins.d.ts +16 -0
  575. package/dist/features/packs/enforcers/py-pins.js +184 -0
  576. package/dist/features/packs/enforcers/py-security-patterns.d.ts +18 -0
  577. package/dist/features/packs/enforcers/py-security-patterns.js +70 -0
  578. package/dist/features/packs/enforcers/records-guards.d.ts +12 -0
  579. package/dist/features/packs/enforcers/records-guards.js +178 -0
  580. package/dist/features/packs/enforcers/remediation-guards.d.ts +6 -0
  581. package/dist/features/packs/enforcers/remediation-guards.js +42 -0
  582. package/dist/features/packs/enforcers/required.d.ts +10 -0
  583. package/dist/features/packs/enforcers/required.js +65 -0
  584. package/dist/features/packs/enforcers/secret-scan.d.ts +22 -0
  585. package/dist/features/packs/enforcers/secret-scan.js +179 -0
  586. package/dist/features/packs/enforcers/shell-analyse.d.ts +14 -0
  587. package/dist/features/packs/enforcers/shell-analyse.js +105 -0
  588. package/dist/features/packs/enforcers/sizes.d.ts +10 -0
  589. package/dist/features/packs/enforcers/sizes.js +82 -0
  590. package/dist/features/packs/enforcers/steering-guards.d.ts +11 -0
  591. package/dist/features/packs/enforcers/steering-guards.js +162 -0
  592. package/dist/features/packs/enforcers/testing-guards.d.ts +10 -0
  593. package/dist/features/packs/enforcers/testing-guards.js +118 -0
  594. package/dist/features/packs/enforcers/ts-checks.d.ts +7 -0
  595. package/dist/features/packs/enforcers/ts-checks.js +101 -0
  596. package/dist/features/packs/enforcers/ts-phantom-host.d.ts +11 -0
  597. package/dist/features/packs/enforcers/ts-phantom-host.js +155 -0
  598. package/dist/features/packs/enforcers/ts-phantom.d.ts +6 -0
  599. package/dist/features/packs/enforcers/ts-phantom.js +117 -0
  600. package/dist/features/packs/enforcers/ts-security-patterns.d.ts +18 -0
  601. package/dist/features/packs/enforcers/ts-security-patterns.js +93 -0
  602. package/dist/features/packs/enforcers/workflow-guards.d.ts +10 -0
  603. package/dist/features/packs/enforcers/workflow-guards.js +117 -0
  604. package/dist/features/packs/enforcers/write-confine.d.ts +13 -0
  605. package/dist/features/packs/enforcers/write-confine.js +131 -0
  606. package/dist/features/packs/hashes.d.ts +6 -0
  607. package/dist/features/packs/hashes.js +84 -0
  608. package/dist/features/packs/index.d.ts +22 -0
  609. package/dist/features/packs/index.js +15 -0
  610. package/dist/features/packs/loader.d.ts +13 -0
  611. package/dist/features/packs/loader.js +205 -0
  612. package/dist/features/packs/manifest.d.ts +17 -0
  613. package/dist/features/packs/manifest.js +180 -0
  614. package/dist/features/packs/params.d.ts +2 -0
  615. package/dist/features/packs/params.js +90 -0
  616. package/dist/features/packs/registry.d.ts +11 -0
  617. package/dist/features/packs/registry.js +136 -0
  618. package/dist/features/packs/selftest.d.ts +3 -0
  619. package/dist/features/packs/selftest.js +127 -0
  620. package/dist/features/records/bug-grammar.d.ts +17 -0
  621. package/dist/features/records/bug-grammar.js +128 -0
  622. package/dist/features/records/bug-registry.d.ts +9 -0
  623. package/dist/features/records/bug-registry.js +67 -0
  624. package/dist/features/records/bug-rows-immutable.d.ts +3 -0
  625. package/dist/features/records/bug-rows-immutable.js +52 -0
  626. package/dist/features/records/bugs.d.ts +2 -0
  627. package/dist/features/records/bugs.js +24 -0
  628. package/dist/features/records/docs-lines.d.ts +16 -0
  629. package/dist/features/records/docs-lines.js +36 -0
  630. package/dist/features/records/docs-prose.d.ts +14 -0
  631. package/dist/features/records/docs-prose.js +252 -0
  632. package/dist/features/records/docs-structure.d.ts +17 -0
  633. package/dist/features/records/docs-structure.js +223 -0
  634. package/dist/features/records/docs.d.ts +9 -0
  635. package/dist/features/records/docs.js +238 -0
  636. package/dist/features/records/history-checks.d.ts +6 -0
  637. package/dist/features/records/history-checks.js +94 -0
  638. package/dist/features/records/history-parse.d.ts +16 -0
  639. package/dist/features/records/history-parse.js +101 -0
  640. package/dist/features/records/history-scope.d.ts +5 -0
  641. package/dist/features/records/history-scope.js +86 -0
  642. package/dist/features/records/history.d.ts +3 -0
  643. package/dist/features/records/history.js +5 -0
  644. package/dist/features/records/index.d.ts +8 -0
  645. package/dist/features/records/index.js +11 -0
  646. package/dist/features/remediation/adoption.d.ts +32 -0
  647. package/dist/features/remediation/adoption.js +131 -0
  648. package/dist/features/remediation/index.d.ts +12 -0
  649. package/dist/features/remediation/index.js +21 -0
  650. package/dist/features/remediation/plan-chains.d.ts +3 -0
  651. package/dist/features/remediation/plan-chains.js +111 -0
  652. package/dist/features/remediation/plan-generate.d.ts +3 -0
  653. package/dist/features/remediation/plan-generate.js +129 -0
  654. package/dist/features/remediation/plan-kinds.d.ts +32 -0
  655. package/dist/features/remediation/plan-kinds.js +42 -0
  656. package/dist/features/remediation/plan-markers.d.ts +2 -0
  657. package/dist/features/remediation/plan-markers.js +155 -0
  658. package/dist/features/remediation/plan-merge.d.ts +6 -0
  659. package/dist/features/remediation/plan-merge.js +33 -0
  660. package/dist/features/remediation/plan.d.ts +4 -0
  661. package/dist/features/remediation/plan.js +7 -0
  662. package/dist/features/remediation/step-floor.d.ts +5 -0
  663. package/dist/features/remediation/step-floor.js +76 -0
  664. package/dist/features/remediation/step-gates.d.ts +18 -0
  665. package/dist/features/remediation/step-gates.js +77 -0
  666. package/dist/features/remediation/step-split.d.ts +12 -0
  667. package/dist/features/remediation/step-split.js +75 -0
  668. package/dist/features/remediation/steps.d.ts +3 -0
  669. package/dist/features/remediation/steps.js +6 -0
  670. package/dist/features/remediation/types.d.ts +37 -0
  671. package/dist/features/remediation/types.js +1 -0
  672. package/dist/features/security/index.d.ts +12 -0
  673. package/dist/features/security/index.js +142 -0
  674. package/dist/features/steering/agent-assets.d.ts +7 -0
  675. package/dist/features/steering/agent-assets.js +75 -0
  676. package/dist/features/steering/budgets.d.ts +20 -0
  677. package/dist/features/steering/budgets.js +86 -0
  678. package/dist/features/steering/checks.d.ts +7 -0
  679. package/dist/features/steering/checks.js +67 -0
  680. package/dist/features/steering/context-file.d.ts +11 -0
  681. package/dist/features/steering/context-file.js +107 -0
  682. package/dist/features/steering/graph-scan.d.ts +7 -0
  683. package/dist/features/steering/graph-scan.js +17 -0
  684. package/dist/features/steering/index.d.ts +30 -0
  685. package/dist/features/steering/index.js +45 -0
  686. package/dist/features/steering/injection.d.ts +23 -0
  687. package/dist/features/steering/injection.js +124 -0
  688. package/dist/features/steering/mcp.d.ts +2 -0
  689. package/dist/features/steering/mcp.js +18 -0
  690. package/dist/features/steering/precedence.d.ts +10 -0
  691. package/dist/features/steering/precedence.js +28 -0
  692. package/dist/features/steering/read-cache.d.ts +13 -0
  693. package/dist/features/steering/read-cache.js +51 -0
  694. package/dist/features/testing/base.d.ts +1 -0
  695. package/dist/features/testing/base.js +8 -0
  696. package/dist/features/testing/covers.d.ts +8 -0
  697. package/dist/features/testing/covers.js +50 -0
  698. package/dist/features/testing/evaluate.d.ts +19 -0
  699. package/dist/features/testing/evaluate.js +47 -0
  700. package/dist/features/testing/index.d.ts +10 -0
  701. package/dist/features/testing/index.js +13 -0
  702. package/dist/features/testing/integrity.d.ts +28 -0
  703. package/dist/features/testing/integrity.js +140 -0
  704. package/dist/features/testing/ledger.d.ts +11 -0
  705. package/dist/features/testing/ledger.js +51 -0
  706. package/dist/features/testing/proofs.d.ts +26 -0
  707. package/dist/features/testing/proofs.js +88 -0
  708. package/dist/features/testing/report.d.ts +6 -0
  709. package/dist/features/testing/report.js +16 -0
  710. package/dist/features/testing/scenarios.d.ts +34 -0
  711. package/dist/features/testing/scenarios.js +90 -0
  712. package/dist/features/testing/tap-parser.d.ts +9 -0
  713. package/dist/features/testing/tap-parser.js +84 -0
  714. package/dist/features/testing/trace.d.ts +23 -0
  715. package/dist/features/testing/trace.js +110 -0
  716. package/dist/features/workflow/index.d.ts +14 -0
  717. package/dist/features/workflow/index.js +19 -0
  718. package/dist/features/workflow/loop.d.ts +5 -0
  719. package/dist/features/workflow/loop.js +36 -0
  720. package/dist/features/workflow/phases.d.ts +10 -0
  721. package/dist/features/workflow/phases.js +181 -0
  722. package/dist/features/workflow/review.d.ts +25 -0
  723. package/dist/features/workflow/review.js +112 -0
  724. package/dist/features/workflow/tasks.d.ts +73 -0
  725. package/dist/features/workflow/tasks.js +80 -0
  726. package/dist/features/workflow/writes.d.ts +8 -0
  727. package/dist/features/workflow/writes.js +96 -0
  728. package/dist/kernel/clock.d.ts +4 -0
  729. package/dist/kernel/clock.js +5 -0
  730. package/dist/kernel/config-keys.d.ts +2 -0
  731. package/dist/kernel/config-keys.js +5 -0
  732. package/dist/kernel/config-toml-keys.d.ts +2 -0
  733. package/dist/kernel/config-toml-keys.js +237 -0
  734. package/dist/kernel/config-yaml-keys.d.ts +2 -0
  735. package/dist/kernel/config-yaml-keys.js +177 -0
  736. package/dist/kernel/contracts.d.ts +76 -0
  737. package/dist/kernel/contracts.js +9 -0
  738. package/dist/kernel/entry.d.ts +1 -0
  739. package/dist/kernel/entry.js +31 -0
  740. package/dist/kernel/env.d.ts +4 -0
  741. package/dist/kernel/env.js +5 -0
  742. package/dist/kernel/errors.d.ts +7 -0
  743. package/dist/kernel/errors.js +6 -0
  744. package/dist/kernel/fs-confine.d.ts +14 -0
  745. package/dist/kernel/fs-confine.js +129 -0
  746. package/dist/kernel/fs-errors.d.ts +8 -0
  747. package/dist/kernel/fs-errors.js +37 -0
  748. package/dist/kernel/fs.d.ts +28 -0
  749. package/dist/kernel/fs.js +245 -0
  750. package/dist/kernel/git.d.ts +16 -0
  751. package/dist/kernel/git.js +125 -0
  752. package/dist/kernel/glob.d.ts +1 -0
  753. package/dist/kernel/glob.js +178 -0
  754. package/dist/kernel/hash.d.ts +3 -0
  755. package/dist/kernel/hash.js +12 -0
  756. package/dist/kernel/host.d.ts +3 -0
  757. package/dist/kernel/host.js +48 -0
  758. package/dist/kernel/index.d.ts +115 -0
  759. package/dist/kernel/index.js +33 -0
  760. package/dist/kernel/json.d.ts +4 -0
  761. package/dist/kernel/json.js +68 -0
  762. package/dist/kernel/net-allow.d.ts +8 -0
  763. package/dist/kernel/net-allow.js +45 -0
  764. package/dist/kernel/net-fetch.d.ts +5 -0
  765. package/dist/kernel/net-fetch.js +135 -0
  766. package/dist/kernel/net.d.ts +10 -0
  767. package/dist/kernel/net.js +24 -0
  768. package/dist/kernel/path.d.ts +3 -0
  769. package/dist/kernel/path.js +40 -0
  770. package/dist/kernel/pattern.d.ts +2 -0
  771. package/dist/kernel/pattern.js +116 -0
  772. package/dist/kernel/proc.d.ts +6 -0
  773. package/dist/kernel/proc.js +207 -0
  774. package/dist/kernel/read-cache.d.ts +6 -0
  775. package/dist/kernel/read-cache.js +27 -0
  776. package/dist/kernel/redact.d.ts +1 -0
  777. package/dist/kernel/redact.js +206 -0
  778. package/dist/kernel/repo-root.d.ts +3 -0
  779. package/dist/kernel/repo-root.js +29 -0
  780. package/dist/kernel/result.d.ts +10 -0
  781. package/dist/kernel/result.js +6 -0
  782. package/dist/kernel/schema-helpers.d.ts +11 -0
  783. package/dist/kernel/schema-helpers.js +101 -0
  784. package/dist/kernel/schema.d.ts +2 -0
  785. package/dist/kernel/schema.js +203 -0
  786. package/dist/kernel/secret-paths.d.ts +3 -0
  787. package/dist/kernel/secret-paths.js +56 -0
  788. package/dist/kernel/shell-bypass.d.ts +4 -0
  789. package/dist/kernel/shell-bypass.js +151 -0
  790. package/dist/kernel/shell-cmd.d.ts +6 -0
  791. package/dist/kernel/shell-cmd.js +196 -0
  792. package/dist/kernel/shell-deny-cmd.d.ts +7 -0
  793. package/dist/kernel/shell-deny-cmd.js +35 -0
  794. package/dist/kernel/shell-deny-destroy.d.ts +7 -0
  795. package/dist/kernel/shell-deny-destroy.js +71 -0
  796. package/dist/kernel/shell-deny-escalate.d.ts +7 -0
  797. package/dist/kernel/shell-deny-escalate.js +96 -0
  798. package/dist/kernel/shell-deny-target.d.ts +4 -0
  799. package/dist/kernel/shell-deny-target.js +51 -0
  800. package/dist/kernel/shell-deny.d.ts +8 -0
  801. package/dist/kernel/shell-deny.js +171 -0
  802. package/dist/kernel/shell-scan.d.ts +3 -0
  803. package/dist/kernel/shell-scan.js +226 -0
  804. package/dist/kernel/shell-word.d.ts +15 -0
  805. package/dist/kernel/shell-word.js +216 -0
  806. package/dist/kernel/shell.d.ts +22 -0
  807. package/dist/kernel/shell.js +2 -0
  808. package/dist/kernel/stdin.d.ts +2 -0
  809. package/dist/kernel/stdin.js +59 -0
  810. package/dist/kernel/test-report.d.ts +7 -0
  811. package/dist/kernel/test-report.js +112 -0
  812. package/dist/kernel/version.d.ts +2 -0
  813. package/dist/kernel/version.js +46 -0
  814. package/dist/tsconfig.build.tsbuildinfo +1 -0
  815. package/package.json +19 -11
  816. package/schema/accepted.schema.json +20 -0
  817. package/schema/baseline.schema.json +17 -0
  818. package/schema/capability.schema.json +31 -0
  819. package/schema/cli/error.schema.json +15 -0
  820. package/schema/cli/explain.schema.json +19 -0
  821. package/schema/cli/report.schema.json +15 -0
  822. package/schema/cli/status.schema.json +51 -0
  823. package/schema/cli/verify.schema.json +15 -0
  824. package/schema/config.schema.json +43 -0
  825. package/schema/event-log.schema.json +52 -0
  826. package/schema/hook-decision.schema.json +13 -0
  827. package/schema/hook-event.schema.json +50 -0
  828. package/schema/manifest.schema.json +26 -0
  829. package/schema/pack-draft.schema.json +42 -0
  830. package/schema/pack.schema.json +70 -0
  831. package/schema/registry-snapshot.schema.json +41 -0
  832. package/schema/remediation-plan.schema.json +44 -0
  833. package/schema/review-findings.schema.json +25 -0
  834. package/schema/task-record.schema.json +49 -0
  835. package/schema/waivers.schema.json +29 -0
@@ -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
+ }
@@ -0,0 +1,8 @@
1
+ import type { EventLogLine } from "../features/audit/index.ts";
2
+ import type { Result } from "../kernel/index.ts";
3
+ import type { CommandRequest } from "./shared.ts";
4
+ export declare function readLogEvents(root: string): Promise<{
5
+ events: ReadonlyArray<EventLogLine>;
6
+ corrupt: number;
7
+ } | undefined>;
8
+ export declare function handleStatus(req: CommandRequest): Promise<Result<number>>;
@@ -0,0 +1,164 @@
1
+ // SPEC §4.18.3: the status screen. Split from the verify command
2
+ // (inspect.ts) by responsibility: read-only screen here, trigger evaluation
3
+ // there. The event log, config and ports stay caller-owned.
4
+ import { parseArgs } from "node:util";
5
+ import { CLAUDE_CODE_CAPABILITIES, CODEX_CAPABILITIES, COPILOT_CAPABILITIES, MUSE_CAPABILITIES, OPENCODE_CAPABILITIES, UNIVERSAL_CAPABILITIES, } from "../features/adapters/index.js";
6
+ import { buildStatusJson, buildStatusText, readEvents, summarizeTokenSaverEvidence, tokenSaverHelper, } from "../features/audit/index.js";
7
+ import { ENGINE_VERSION } from "../features/config/index.js";
8
+ import { REQUIRED_HELPERS_DEFAULT } from "../features/steering/index.js";
9
+ import { ok } from "../kernel/index.js";
10
+ import { fail, loadRepoConfig, needRoot, portsFor, printHuman, printJson, usageError, } from "./shared.js";
11
+ // SPEC §4.18.1: the repo's event lines through caller-owned ports against
12
+ // the logical root "." (the Fs port takes repo-relative paths only).
13
+ export async function readLogEvents(root) {
14
+ const ports = await portsFor(root);
15
+ if (!ports.ok) {
16
+ return undefined;
17
+ }
18
+ const read = await readEvents(ports.value, ".");
19
+ return read.ok ? read.value : undefined;
20
+ }
21
+ function harnessStates(observed) {
22
+ const declarations = [
23
+ MUSE_CAPABILITIES,
24
+ UNIVERSAL_CAPABILITIES,
25
+ CLAUDE_CODE_CAPABILITIES,
26
+ COPILOT_CAPABILITIES,
27
+ CODEX_CAPABILITIES,
28
+ OPENCODE_CAPABILITIES,
29
+ ];
30
+ return declarations.map((candidate) => ({
31
+ harness: candidate.harness,
32
+ state: observed.has(candidate.harness)
33
+ ? "active"
34
+ : "unverified",
35
+ layers: `L0:${candidate.layers.L0} L1:${candidate.layers.L1} L2:${candidate.layers.L2} L3:${candidate.layers.L3} L4:${candidate.layers.L4} L5:${candidate.layers.L5}`,
36
+ }));
37
+ }
38
+ function isRecord(value) {
39
+ return typeof value === "object" && value !== null && !Array.isArray(value);
40
+ }
41
+ // SPEC §4.6.6: the required helper roles come from config.steering, falling
42
+ // back to the pack default; a role is present when config.tools declares it
43
+ // (by role or id) at an exact pin.
44
+ function requiredRoles(steering) {
45
+ if (isRecord(steering)) {
46
+ const key = "requiredHelpers";
47
+ const found = steering[key];
48
+ if (Array.isArray(found) &&
49
+ found.every((entry) => typeof entry === "string")) {
50
+ return [...found];
51
+ }
52
+ }
53
+ return [...REQUIRED_HELPERS_DEFAULT];
54
+ }
55
+ function matchHelper(entry, role) {
56
+ if (!isRecord(entry)) {
57
+ return undefined;
58
+ }
59
+ const idKey = "id";
60
+ const roleKey = "role";
61
+ const versionKey = "version";
62
+ const pinKey = "pin";
63
+ const id = entry[idKey];
64
+ if (typeof id !== "string" || id === "") {
65
+ return undefined;
66
+ }
67
+ if (entry[roleKey] !== role && id !== role) {
68
+ return undefined;
69
+ }
70
+ const version = entry[versionKey];
71
+ const pin = isRecord(version) ? version[pinKey] : undefined;
72
+ if (typeof pin === "string" && pin !== "") {
73
+ return { role, present: true, detail: `${id} ${pin}` };
74
+ }
75
+ return { role, present: false };
76
+ }
77
+ function helperDetail(tools, role) {
78
+ if (!Array.isArray(tools)) {
79
+ return { role, present: false };
80
+ }
81
+ for (const entry of tools) {
82
+ const matched = matchHelper(entry, role);
83
+ if (matched !== undefined) {
84
+ return matched;
85
+ }
86
+ }
87
+ return { role, present: false };
88
+ }
89
+ async function collectStatusParts(root, engineVersion) {
90
+ const log = await readLogEvents(root);
91
+ const events = log?.events ?? [];
92
+ const observed = new Set(events.map((event) => event.harness ?? "").filter((h) => h !== ""));
93
+ const packs = {};
94
+ let helpers = [];
95
+ const configured = await loadRepoConfig(root, undefined, engineVersion);
96
+ if (configured.ok) {
97
+ for (const pack of configured.value.effective.config.packs) {
98
+ packs[pack.id] =
99
+ typeof pack.version === "string" ? pack.version : "unpinned";
100
+ }
101
+ helpers = requiredRoles(configured.value.effective.config.steering).map((role) => helperDetail(configured.value.effective.config.tools, role));
102
+ // SPEC §4.6.6 + §4.18.3: the token-saver role is satisfied by the
103
+ // engine itself, so with no external pin the row carries live
104
+ // evidence instead of probing a binary. All-absent evidence reads
105
+ // missing: a finding, not a pass.
106
+ helpers = helpers.map((helper) => helper.role === "token-saver" && !helper.present
107
+ ? tokenSaverHelper(summarizeTokenSaverEvidence(events))
108
+ : helper);
109
+ }
110
+ return { events, corrupt: log?.corrupt ?? 0, observed, packs, helpers };
111
+ }
112
+ function terseArgs(args, count) {
113
+ try {
114
+ const parsed = parseArgs({
115
+ args: [...args],
116
+ options: {},
117
+ allowPositionals: true,
118
+ });
119
+ return parsed.positionals.length === count;
120
+ }
121
+ catch {
122
+ return false;
123
+ }
124
+ }
125
+ // SPEC §4.18.3: one screen with engine, packs, harness states, task, waivers,
126
+ // ratchet, deps, integrity, escalations and remediation progress.
127
+ export async function handleStatus(req) {
128
+ if (!terseArgs(req.args, 0)) {
129
+ return usageError("usage: codictator status");
130
+ }
131
+ const root = await needRoot(req);
132
+ if (typeof root !== "string") {
133
+ return root;
134
+ }
135
+ const ports = await portsFor(root);
136
+ if (!ports.ok) {
137
+ return fail("CDX-E903", ports.error.message, ports.error.remediation, req.json);
138
+ }
139
+ const parts = await collectStatusParts(root, req.engineVersion ?? ENGINE_VERSION);
140
+ const input = {
141
+ engineVersion: req.engineVersion ?? ENGINE_VERSION,
142
+ packs: parts.packs,
143
+ harnesses: harnessStates(parts.observed),
144
+ helpers: parts.helpers,
145
+ events: parts.events.length,
146
+ corrupt: parts.corrupt,
147
+ gap: parts.events.length === 0,
148
+ task: undefined,
149
+ waivers: undefined,
150
+ ratchet: undefined,
151
+ deps: undefined,
152
+ integrity: undefined,
153
+ escalations: undefined,
154
+ remediation: undefined,
155
+ now: ports.value.clock.now(),
156
+ };
157
+ if (req.json) {
158
+ printJson(buildStatusJson(input));
159
+ }
160
+ else {
161
+ printHuman(buildStatusText(input), req.quiet);
162
+ }
163
+ return ok(0);
164
+ }
@@ -0,0 +1,5 @@
1
+ import type { Finding, Result } from "../kernel/index.ts";
2
+ import type { CommandRequest } from "./shared.ts";
3
+ export declare function printFinding(finding: Finding, quiet: boolean): void;
4
+ export declare function handleVerify(req: CommandRequest): Promise<Result<number>>;
5
+ export { handleStatus, readLogEvents } from "./inspect-status.ts";