@oddessentials/odd-ai-reviewers 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (370) hide show
  1. package/README.md +190 -0
  2. package/dist/__tests__/hermetic-setup.d.ts +55 -0
  3. package/dist/__tests__/hermetic-setup.d.ts.map +1 -0
  4. package/dist/__tests__/hermetic-setup.js +62 -0
  5. package/dist/__tests__/hermetic-setup.js.map +1 -0
  6. package/dist/__tests__/test-utils/hermetic.d.ts +84 -0
  7. package/dist/__tests__/test-utils/hermetic.d.ts.map +1 -0
  8. package/dist/__tests__/test-utils/hermetic.js +147 -0
  9. package/dist/__tests__/test-utils/hermetic.js.map +1 -0
  10. package/dist/agents/ai_semantic_review.d.ts +12 -0
  11. package/dist/agents/ai_semantic_review.d.ts.map +1 -0
  12. package/dist/agents/ai_semantic_review.js +317 -0
  13. package/dist/agents/ai_semantic_review.js.map +1 -0
  14. package/dist/agents/control_flow/budget.d.ts +162 -0
  15. package/dist/agents/control_flow/budget.d.ts.map +1 -0
  16. package/dist/agents/control_flow/budget.js +331 -0
  17. package/dist/agents/control_flow/budget.js.map +1 -0
  18. package/dist/agents/control_flow/cfg-builder.d.ts +26 -0
  19. package/dist/agents/control_flow/cfg-builder.d.ts.map +1 -0
  20. package/dist/agents/control_flow/cfg-builder.js +776 -0
  21. package/dist/agents/control_flow/cfg-builder.js.map +1 -0
  22. package/dist/agents/control_flow/cfg-types.d.ts +186 -0
  23. package/dist/agents/control_flow/cfg-types.d.ts.map +1 -0
  24. package/dist/agents/control_flow/cfg-types.js +114 -0
  25. package/dist/agents/control_flow/cfg-types.js.map +1 -0
  26. package/dist/agents/control_flow/finding-generator.d.ts +118 -0
  27. package/dist/agents/control_flow/finding-generator.d.ts.map +1 -0
  28. package/dist/agents/control_flow/finding-generator.js +354 -0
  29. package/dist/agents/control_flow/finding-generator.js.map +1 -0
  30. package/dist/agents/control_flow/index.d.ts +39 -0
  31. package/dist/agents/control_flow/index.d.ts.map +1 -0
  32. package/dist/agents/control_flow/index.js +270 -0
  33. package/dist/agents/control_flow/index.js.map +1 -0
  34. package/dist/agents/control_flow/logger.d.ts +333 -0
  35. package/dist/agents/control_flow/logger.d.ts.map +1 -0
  36. package/dist/agents/control_flow/logger.js +607 -0
  37. package/dist/agents/control_flow/logger.js.map +1 -0
  38. package/dist/agents/control_flow/mitigation-detector.d.ts +207 -0
  39. package/dist/agents/control_flow/mitigation-detector.d.ts.map +1 -0
  40. package/dist/agents/control_flow/mitigation-detector.js +625 -0
  41. package/dist/agents/control_flow/mitigation-detector.js.map +1 -0
  42. package/dist/agents/control_flow/mitigation-patterns.d.ts +53 -0
  43. package/dist/agents/control_flow/mitigation-patterns.d.ts.map +1 -0
  44. package/dist/agents/control_flow/mitigation-patterns.js +620 -0
  45. package/dist/agents/control_flow/mitigation-patterns.js.map +1 -0
  46. package/dist/agents/control_flow/path-analyzer.d.ts +287 -0
  47. package/dist/agents/control_flow/path-analyzer.d.ts.map +1 -0
  48. package/dist/agents/control_flow/path-analyzer.js +695 -0
  49. package/dist/agents/control_flow/path-analyzer.js.map +1 -0
  50. package/dist/agents/control_flow/pattern-validator.d.ts +132 -0
  51. package/dist/agents/control_flow/pattern-validator.d.ts.map +1 -0
  52. package/dist/agents/control_flow/pattern-validator.js +420 -0
  53. package/dist/agents/control_flow/pattern-validator.js.map +1 -0
  54. package/dist/agents/control_flow/timeout-regex.d.ts +144 -0
  55. package/dist/agents/control_flow/timeout-regex.d.ts.map +1 -0
  56. package/dist/agents/control_flow/timeout-regex.js +339 -0
  57. package/dist/agents/control_flow/timeout-regex.js.map +1 -0
  58. package/dist/agents/control_flow/types.d.ts +782 -0
  59. package/dist/agents/control_flow/types.d.ts.map +1 -0
  60. package/dist/agents/control_flow/types.js +428 -0
  61. package/dist/agents/control_flow/types.js.map +1 -0
  62. package/dist/agents/control_flow/vulnerability-detector.d.ts +85 -0
  63. package/dist/agents/control_flow/vulnerability-detector.d.ts.map +1 -0
  64. package/dist/agents/control_flow/vulnerability-detector.js +493 -0
  65. package/dist/agents/control_flow/vulnerability-detector.js.map +1 -0
  66. package/dist/agents/date-utils.d.ts +19 -0
  67. package/dist/agents/date-utils.d.ts.map +1 -0
  68. package/dist/agents/date-utils.js +29 -0
  69. package/dist/agents/date-utils.js.map +1 -0
  70. package/dist/agents/index.d.ts +25 -0
  71. package/dist/agents/index.d.ts.map +1 -0
  72. package/dist/agents/index.js +50 -0
  73. package/dist/agents/index.js.map +1 -0
  74. package/dist/agents/json-utils.d.ts +34 -0
  75. package/dist/agents/json-utils.d.ts.map +1 -0
  76. package/dist/agents/json-utils.js +62 -0
  77. package/dist/agents/json-utils.js.map +1 -0
  78. package/dist/agents/local_llm.d.ts +24 -0
  79. package/dist/agents/local_llm.d.ts.map +1 -0
  80. package/dist/agents/local_llm.js +566 -0
  81. package/dist/agents/local_llm.js.map +1 -0
  82. package/dist/agents/metadata.d.ts +57 -0
  83. package/dist/agents/metadata.d.ts.map +1 -0
  84. package/dist/agents/metadata.js +45 -0
  85. package/dist/agents/metadata.js.map +1 -0
  86. package/dist/agents/opencode.d.ts +18 -0
  87. package/dist/agents/opencode.d.ts.map +1 -0
  88. package/dist/agents/opencode.js +364 -0
  89. package/dist/agents/opencode.js.map +1 -0
  90. package/dist/agents/path-filter.d.ts +25 -0
  91. package/dist/agents/path-filter.d.ts.map +1 -0
  92. package/dist/agents/path-filter.js +43 -0
  93. package/dist/agents/path-filter.js.map +1 -0
  94. package/dist/agents/pr_agent.d.ts +3 -0
  95. package/dist/agents/pr_agent.d.ts.map +1 -0
  96. package/dist/agents/pr_agent.js +312 -0
  97. package/dist/agents/pr_agent.js.map +1 -0
  98. package/dist/agents/retry.d.ts +12 -0
  99. package/dist/agents/retry.d.ts.map +1 -0
  100. package/dist/agents/retry.js +65 -0
  101. package/dist/agents/retry.js.map +1 -0
  102. package/dist/agents/reviewdog.d.ts +24 -0
  103. package/dist/agents/reviewdog.d.ts.map +1 -0
  104. package/dist/agents/reviewdog.js +259 -0
  105. package/dist/agents/reviewdog.js.map +1 -0
  106. package/dist/agents/security.d.ts +49 -0
  107. package/dist/agents/security.d.ts.map +1 -0
  108. package/dist/agents/security.js +302 -0
  109. package/dist/agents/security.js.map +1 -0
  110. package/dist/agents/semgrep.d.ts +8 -0
  111. package/dist/agents/semgrep.d.ts.map +1 -0
  112. package/dist/agents/semgrep.js +157 -0
  113. package/dist/agents/semgrep.js.map +1 -0
  114. package/dist/agents/types.d.ts +450 -0
  115. package/dist/agents/types.d.ts.map +1 -0
  116. package/dist/agents/types.js +127 -0
  117. package/dist/agents/types.js.map +1 -0
  118. package/dist/budget.d.ts +59 -0
  119. package/dist/budget.d.ts.map +1 -0
  120. package/dist/budget.js +82 -0
  121. package/dist/budget.js.map +1 -0
  122. package/dist/cache/key.d.ts +49 -0
  123. package/dist/cache/key.d.ts.map +1 -0
  124. package/dist/cache/key.js +71 -0
  125. package/dist/cache/key.js.map +1 -0
  126. package/dist/cache/store.d.ts +47 -0
  127. package/dist/cache/store.d.ts.map +1 -0
  128. package/dist/cache/store.js +328 -0
  129. package/dist/cache/store.js.map +1 -0
  130. package/dist/cli/commands/check.d.ts +60 -0
  131. package/dist/cli/commands/check.d.ts.map +1 -0
  132. package/dist/cli/commands/check.js +163 -0
  133. package/dist/cli/commands/check.js.map +1 -0
  134. package/dist/cli/commands/index.d.ts +12 -0
  135. package/dist/cli/commands/index.d.ts.map +1 -0
  136. package/dist/cli/commands/index.js +12 -0
  137. package/dist/cli/commands/index.js.map +1 -0
  138. package/dist/cli/commands/local-review.d.ts +149 -0
  139. package/dist/cli/commands/local-review.d.ts.map +1 -0
  140. package/dist/cli/commands/local-review.js +755 -0
  141. package/dist/cli/commands/local-review.js.map +1 -0
  142. package/dist/cli/config-wizard.d.ts +87 -0
  143. package/dist/cli/config-wizard.d.ts.map +1 -0
  144. package/dist/cli/config-wizard.js +240 -0
  145. package/dist/cli/config-wizard.js.map +1 -0
  146. package/dist/cli/dependencies/catalog.d.ts +44 -0
  147. package/dist/cli/dependencies/catalog.d.ts.map +1 -0
  148. package/dist/cli/dependencies/catalog.js +89 -0
  149. package/dist/cli/dependencies/catalog.js.map +1 -0
  150. package/dist/cli/dependencies/checker.d.ts +42 -0
  151. package/dist/cli/dependencies/checker.d.ts.map +1 -0
  152. package/dist/cli/dependencies/checker.js +240 -0
  153. package/dist/cli/dependencies/checker.js.map +1 -0
  154. package/dist/cli/dependencies/index.d.ts +16 -0
  155. package/dist/cli/dependencies/index.d.ts.map +1 -0
  156. package/dist/cli/dependencies/index.js +16 -0
  157. package/dist/cli/dependencies/index.js.map +1 -0
  158. package/dist/cli/dependencies/messages.d.ts +58 -0
  159. package/dist/cli/dependencies/messages.d.ts.map +1 -0
  160. package/dist/cli/dependencies/messages.js +183 -0
  161. package/dist/cli/dependencies/messages.js.map +1 -0
  162. package/dist/cli/dependencies/platform.d.ts +25 -0
  163. package/dist/cli/dependencies/platform.d.ts.map +1 -0
  164. package/dist/cli/dependencies/platform.js +42 -0
  165. package/dist/cli/dependencies/platform.js.map +1 -0
  166. package/dist/cli/dependencies/schemas.d.ts +65 -0
  167. package/dist/cli/dependencies/schemas.d.ts.map +1 -0
  168. package/dist/cli/dependencies/schemas.js +42 -0
  169. package/dist/cli/dependencies/schemas.js.map +1 -0
  170. package/dist/cli/dependencies/types.d.ts +112 -0
  171. package/dist/cli/dependencies/types.d.ts.map +1 -0
  172. package/dist/cli/dependencies/types.js +6 -0
  173. package/dist/cli/dependencies/types.js.map +1 -0
  174. package/dist/cli/dependencies/version.d.ts +67 -0
  175. package/dist/cli/dependencies/version.d.ts.map +1 -0
  176. package/dist/cli/dependencies/version.js +125 -0
  177. package/dist/cli/dependencies/version.js.map +1 -0
  178. package/dist/cli/git-context.d.ts +105 -0
  179. package/dist/cli/git-context.d.ts.map +1 -0
  180. package/dist/cli/git-context.js +313 -0
  181. package/dist/cli/git-context.js.map +1 -0
  182. package/dist/cli/interactive-prompts.d.ts +126 -0
  183. package/dist/cli/interactive-prompts.d.ts.map +1 -0
  184. package/dist/cli/interactive-prompts.js +128 -0
  185. package/dist/cli/interactive-prompts.js.map +1 -0
  186. package/dist/cli/options/index.d.ts +7 -0
  187. package/dist/cli/options/index.d.ts.map +1 -0
  188. package/dist/cli/options/index.js +11 -0
  189. package/dist/cli/options/index.js.map +1 -0
  190. package/dist/cli/options/local-review-options.d.ts +221 -0
  191. package/dist/cli/options/local-review-options.d.ts.map +1 -0
  192. package/dist/cli/options/local-review-options.js +332 -0
  193. package/dist/cli/options/local-review-options.js.map +1 -0
  194. package/dist/cli/output/colors.d.ts +154 -0
  195. package/dist/cli/output/colors.d.ts.map +1 -0
  196. package/dist/cli/output/colors.js +255 -0
  197. package/dist/cli/output/colors.js.map +1 -0
  198. package/dist/cli/output/errors.d.ts +157 -0
  199. package/dist/cli/output/errors.d.ts.map +1 -0
  200. package/dist/cli/output/errors.js +266 -0
  201. package/dist/cli/output/errors.js.map +1 -0
  202. package/dist/cli/output/index.d.ts +12 -0
  203. package/dist/cli/output/index.d.ts.map +1 -0
  204. package/dist/cli/output/index.js +15 -0
  205. package/dist/cli/output/index.js.map +1 -0
  206. package/dist/cli/output/progress.d.ts +237 -0
  207. package/dist/cli/output/progress.d.ts.map +1 -0
  208. package/dist/cli/output/progress.js +405 -0
  209. package/dist/cli/output/progress.js.map +1 -0
  210. package/dist/cli/signals.d.ts +145 -0
  211. package/dist/cli/signals.d.ts.map +1 -0
  212. package/dist/cli/signals.js +223 -0
  213. package/dist/cli/signals.js.map +1 -0
  214. package/dist/cli/validation-report.d.ts +106 -0
  215. package/dist/cli/validation-report.d.ts.map +1 -0
  216. package/dist/cli/validation-report.js +108 -0
  217. package/dist/cli/validation-report.js.map +1 -0
  218. package/dist/config/index.d.ts +9 -0
  219. package/dist/config/index.d.ts.map +1 -0
  220. package/dist/config/index.js +12 -0
  221. package/dist/config/index.js.map +1 -0
  222. package/dist/config/mitigation-config.d.ts +94 -0
  223. package/dist/config/mitigation-config.d.ts.map +1 -0
  224. package/dist/config/mitigation-config.js +430 -0
  225. package/dist/config/mitigation-config.js.map +1 -0
  226. package/dist/config/providers.d.ts +118 -0
  227. package/dist/config/providers.d.ts.map +1 -0
  228. package/dist/config/providers.js +229 -0
  229. package/dist/config/providers.js.map +1 -0
  230. package/dist/config/schemas.d.ts +278 -0
  231. package/dist/config/schemas.d.ts.map +1 -0
  232. package/dist/config/schemas.js +111 -0
  233. package/dist/config/schemas.js.map +1 -0
  234. package/dist/config/zero-config.d.ts +126 -0
  235. package/dist/config/zero-config.d.ts.map +1 -0
  236. package/dist/config/zero-config.js +243 -0
  237. package/dist/config/zero-config.js.map +1 -0
  238. package/dist/config.d.ts +110 -0
  239. package/dist/config.d.ts.map +1 -0
  240. package/dist/config.js +302 -0
  241. package/dist/config.js.map +1 -0
  242. package/dist/diff.d.ts +224 -0
  243. package/dist/diff.d.ts.map +1 -0
  244. package/dist/diff.js +832 -0
  245. package/dist/diff.js.map +1 -0
  246. package/dist/git-validators.d.ts +106 -0
  247. package/dist/git-validators.d.ts.map +1 -0
  248. package/dist/git-validators.js +224 -0
  249. package/dist/git-validators.js.map +1 -0
  250. package/dist/main.d.ts +61 -0
  251. package/dist/main.d.ts.map +1 -0
  252. package/dist/main.js +704 -0
  253. package/dist/main.js.map +1 -0
  254. package/dist/phases/execute.d.ts +60 -0
  255. package/dist/phases/execute.d.ts.map +1 -0
  256. package/dist/phases/execute.js +168 -0
  257. package/dist/phases/execute.js.map +1 -0
  258. package/dist/phases/index.d.ts +9 -0
  259. package/dist/phases/index.d.ts.map +1 -0
  260. package/dist/phases/index.js +9 -0
  261. package/dist/phases/index.js.map +1 -0
  262. package/dist/phases/preflight.d.ts +40 -0
  263. package/dist/phases/preflight.d.ts.map +1 -0
  264. package/dist/phases/preflight.js +122 -0
  265. package/dist/phases/preflight.js.map +1 -0
  266. package/dist/phases/report.d.ts +51 -0
  267. package/dist/phases/report.d.ts.map +1 -0
  268. package/dist/phases/report.js +152 -0
  269. package/dist/phases/report.js.map +1 -0
  270. package/dist/policy.d.ts +33 -0
  271. package/dist/policy.d.ts.map +1 -0
  272. package/dist/policy.js +34 -0
  273. package/dist/policy.js.map +1 -0
  274. package/dist/preflight.d.ts +181 -0
  275. package/dist/preflight.d.ts.map +1 -0
  276. package/dist/preflight.js +627 -0
  277. package/dist/preflight.js.map +1 -0
  278. package/dist/report/ado.d.ts +53 -0
  279. package/dist/report/ado.d.ts.map +1 -0
  280. package/dist/report/ado.js +411 -0
  281. package/dist/report/ado.js.map +1 -0
  282. package/dist/report/agent-icons.d.ts +36 -0
  283. package/dist/report/agent-icons.d.ts.map +1 -0
  284. package/dist/report/agent-icons.js +46 -0
  285. package/dist/report/agent-icons.js.map +1 -0
  286. package/dist/report/base.d.ts +30 -0
  287. package/dist/report/base.d.ts.map +1 -0
  288. package/dist/report/base.js +64 -0
  289. package/dist/report/base.js.map +1 -0
  290. package/dist/report/formats.d.ts +206 -0
  291. package/dist/report/formats.d.ts.map +1 -0
  292. package/dist/report/formats.js +481 -0
  293. package/dist/report/formats.js.map +1 -0
  294. package/dist/report/github.d.ts +44 -0
  295. package/dist/report/github.d.ts.map +1 -0
  296. package/dist/report/github.js +409 -0
  297. package/dist/report/github.js.map +1 -0
  298. package/dist/report/line-resolver.d.ts +208 -0
  299. package/dist/report/line-resolver.d.ts.map +1 -0
  300. package/dist/report/line-resolver.js +578 -0
  301. package/dist/report/line-resolver.js.map +1 -0
  302. package/dist/report/resolution.d.ts +158 -0
  303. package/dist/report/resolution.d.ts.map +1 -0
  304. package/dist/report/resolution.js +272 -0
  305. package/dist/report/resolution.js.map +1 -0
  306. package/dist/report/sanitize.d.ts +32 -0
  307. package/dist/report/sanitize.d.ts.map +1 -0
  308. package/dist/report/sanitize.js +84 -0
  309. package/dist/report/sanitize.js.map +1 -0
  310. package/dist/report/terminal.d.ts +440 -0
  311. package/dist/report/terminal.d.ts.map +1 -0
  312. package/dist/report/terminal.js +840 -0
  313. package/dist/report/terminal.js.map +1 -0
  314. package/dist/reviewignore.d.ts +125 -0
  315. package/dist/reviewignore.d.ts.map +1 -0
  316. package/dist/reviewignore.js +335 -0
  317. package/dist/reviewignore.js.map +1 -0
  318. package/dist/security-logger.d.ts +178 -0
  319. package/dist/security-logger.d.ts.map +1 -0
  320. package/dist/security-logger.js +256 -0
  321. package/dist/security-logger.js.map +1 -0
  322. package/dist/telemetry/backends/console.d.ts +24 -0
  323. package/dist/telemetry/backends/console.d.ts.map +1 -0
  324. package/dist/telemetry/backends/console.js +54 -0
  325. package/dist/telemetry/backends/console.js.map +1 -0
  326. package/dist/telemetry/backends/jsonl.d.ts +31 -0
  327. package/dist/telemetry/backends/jsonl.d.ts.map +1 -0
  328. package/dist/telemetry/backends/jsonl.js +121 -0
  329. package/dist/telemetry/backends/jsonl.js.map +1 -0
  330. package/dist/telemetry/emitter.d.ts +43 -0
  331. package/dist/telemetry/emitter.d.ts.map +1 -0
  332. package/dist/telemetry/emitter.js +83 -0
  333. package/dist/telemetry/emitter.js.map +1 -0
  334. package/dist/telemetry/hook.d.ts +53 -0
  335. package/dist/telemetry/hook.d.ts.map +1 -0
  336. package/dist/telemetry/hook.js +118 -0
  337. package/dist/telemetry/hook.js.map +1 -0
  338. package/dist/telemetry/index.d.ts +58 -0
  339. package/dist/telemetry/index.d.ts.map +1 -0
  340. package/dist/telemetry/index.js +143 -0
  341. package/dist/telemetry/index.js.map +1 -0
  342. package/dist/telemetry/types.d.ts +139 -0
  343. package/dist/telemetry/types.d.ts.map +1 -0
  344. package/dist/telemetry/types.js +133 -0
  345. package/dist/telemetry/types.js.map +1 -0
  346. package/dist/trust.d.ts +65 -0
  347. package/dist/trust.d.ts.map +1 -0
  348. package/dist/trust.js +78 -0
  349. package/dist/trust.js.map +1 -0
  350. package/dist/types/assert-never.d.ts +30 -0
  351. package/dist/types/assert-never.d.ts.map +1 -0
  352. package/dist/types/assert-never.js +32 -0
  353. package/dist/types/assert-never.js.map +1 -0
  354. package/dist/types/branded.d.ts +172 -0
  355. package/dist/types/branded.d.ts.map +1 -0
  356. package/dist/types/branded.js +262 -0
  357. package/dist/types/branded.js.map +1 -0
  358. package/dist/types/errors.d.ts +320 -0
  359. package/dist/types/errors.d.ts.map +1 -0
  360. package/dist/types/errors.js +551 -0
  361. package/dist/types/errors.js.map +1 -0
  362. package/dist/types/index.d.ts +37 -0
  363. package/dist/types/index.d.ts.map +1 -0
  364. package/dist/types/index.js +77 -0
  365. package/dist/types/index.js.map +1 -0
  366. package/dist/types/result.d.ts +323 -0
  367. package/dist/types/result.d.ts.map +1 -0
  368. package/dist/types/result.js +423 -0
  369. package/dist/types/result.js.map +1 -0
  370. package/package.json +63 -0
@@ -0,0 +1,65 @@
1
+ /**
2
+ * Zod schemas for runtime validation of dependency check results.
3
+ * @module cli/dependencies/schemas
4
+ */
5
+ import { z } from 'zod';
6
+ /**
7
+ * Schema for supported platforms.
8
+ */
9
+ export declare const PlatformSchema: z.ZodEnum<{
10
+ darwin: "darwin";
11
+ linux: "linux";
12
+ win32: "win32";
13
+ }>;
14
+ /**
15
+ * Schema for dependency check status.
16
+ */
17
+ export declare const DependencyStatusSchema: z.ZodEnum<{
18
+ available: "available";
19
+ missing: "missing";
20
+ unhealthy: "unhealthy";
21
+ "version-mismatch": "version-mismatch";
22
+ }>;
23
+ /**
24
+ * Schema for a single dependency check result.
25
+ */
26
+ export declare const DependencyCheckResultSchema: z.ZodObject<{
27
+ name: z.ZodString;
28
+ status: z.ZodEnum<{
29
+ available: "available";
30
+ missing: "missing";
31
+ unhealthy: "unhealthy";
32
+ "version-mismatch": "version-mismatch";
33
+ }>;
34
+ version: z.ZodNullable<z.ZodString>;
35
+ error: z.ZodNullable<z.ZodString>;
36
+ }, z.core.$strip>;
37
+ /**
38
+ * Schema for aggregated dependency check summary.
39
+ */
40
+ export declare const DependencyCheckSummarySchema: z.ZodObject<{
41
+ results: z.ZodArray<z.ZodObject<{
42
+ name: z.ZodString;
43
+ status: z.ZodEnum<{
44
+ available: "available";
45
+ missing: "missing";
46
+ unhealthy: "unhealthy";
47
+ "version-mismatch": "version-mismatch";
48
+ }>;
49
+ version: z.ZodNullable<z.ZodString>;
50
+ error: z.ZodNullable<z.ZodString>;
51
+ }, z.core.$strip>>;
52
+ missingRequired: z.ZodArray<z.ZodString>;
53
+ missingOptional: z.ZodArray<z.ZodString>;
54
+ unhealthy: z.ZodArray<z.ZodString>;
55
+ versionWarnings: z.ZodArray<z.ZodString>;
56
+ hasBlockingIssues: z.ZodBoolean;
57
+ hasWarnings: z.ZodBoolean;
58
+ runnablePasses: z.ZodArray<z.ZodString>;
59
+ skippedPasses: z.ZodArray<z.ZodString>;
60
+ }, z.core.$strip>;
61
+ export type PlatformFromSchema = z.infer<typeof PlatformSchema>;
62
+ export type DependencyStatusFromSchema = z.infer<typeof DependencyStatusSchema>;
63
+ export type DependencyCheckResultFromSchema = z.infer<typeof DependencyCheckResultSchema>;
64
+ export type DependencyCheckSummaryFromSchema = z.infer<typeof DependencyCheckSummarySchema>;
65
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../../src/cli/dependencies/schemas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,eAAO,MAAM,cAAc;;;;EAAuC,CAAC;AAEnE;;GAEG;AACH,eAAO,MAAM,sBAAsB;;;;;EAKjC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,2BAA2B;;;;;;;;;;iBAKtC,CAAC;AAEH;;GAEG;AACH,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;iBAUvC,CAAC;AAGH,MAAM,MAAM,kBAAkB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAChE,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,sBAAsB,CAAC,CAAC;AAChF,MAAM,MAAM,+BAA+B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AAC1F,MAAM,MAAM,gCAAgC,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,4BAA4B,CAAC,CAAC"}
@@ -0,0 +1,42 @@
1
+ /**
2
+ * Zod schemas for runtime validation of dependency check results.
3
+ * @module cli/dependencies/schemas
4
+ */
5
+ import { z } from 'zod';
6
+ /**
7
+ * Schema for supported platforms.
8
+ */
9
+ export const PlatformSchema = z.enum(['darwin', 'win32', 'linux']);
10
+ /**
11
+ * Schema for dependency check status.
12
+ */
13
+ export const DependencyStatusSchema = z.enum([
14
+ 'available',
15
+ 'missing',
16
+ 'unhealthy',
17
+ 'version-mismatch',
18
+ ]);
19
+ /**
20
+ * Schema for a single dependency check result.
21
+ */
22
+ export const DependencyCheckResultSchema = z.object({
23
+ name: z.string(),
24
+ status: DependencyStatusSchema,
25
+ version: z.string().nullable(),
26
+ error: z.string().nullable(),
27
+ });
28
+ /**
29
+ * Schema for aggregated dependency check summary.
30
+ */
31
+ export const DependencyCheckSummarySchema = z.object({
32
+ results: z.array(DependencyCheckResultSchema),
33
+ missingRequired: z.array(z.string()),
34
+ missingOptional: z.array(z.string()),
35
+ unhealthy: z.array(z.string()),
36
+ versionWarnings: z.array(z.string()),
37
+ hasBlockingIssues: z.boolean(),
38
+ hasWarnings: z.boolean(),
39
+ runnablePasses: z.array(z.string()),
40
+ skippedPasses: z.array(z.string()),
41
+ });
42
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../../src/cli/dependencies/schemas.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC;AAEnE;;GAEG;AACH,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,CAAC,IAAI,CAAC;IAC3C,WAAW;IACX,SAAS;IACT,WAAW;IACX,kBAAkB;CACnB,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,CAAC,MAAM,CAAC;IAClD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,MAAM,EAAE,sBAAsB;IAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC;AAEH;;GAEG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,CAAC,MAAM,CAAC;IACnD,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,2BAA2B,CAAC;IAC7C,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC9B,eAAe,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACpC,iBAAiB,EAAE,CAAC,CAAC,OAAO,EAAE;IAC9B,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE;IACxB,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IACnC,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CACnC,CAAC,CAAC"}
@@ -0,0 +1,112 @@
1
+ /**
2
+ * TypeScript types and interfaces for CLI dependency detection.
3
+ * @module cli/dependencies/types
4
+ */
5
+ /**
6
+ * Supported platforms for dependency detection.
7
+ */
8
+ export type Platform = 'darwin' | 'win32' | 'linux';
9
+ /**
10
+ * Status of a dependency check.
11
+ * - available: Tool works, version verified
12
+ * - missing: ENOENT - binary not found in PATH
13
+ * - unhealthy: Binary exists but --version failed or returned unparseable output
14
+ * - version-mismatch: Below minimum required version
15
+ */
16
+ export type DependencyStatus = 'available' | 'missing' | 'unhealthy' | 'version-mismatch';
17
+ /**
18
+ * Per-platform installation command mapping.
19
+ */
20
+ export interface PlatformInstructions {
21
+ darwin: string;
22
+ win32: string;
23
+ linux: string;
24
+ }
25
+ /**
26
+ * Centralized catalog entry for a required external tool.
27
+ */
28
+ export interface ExternalDependency {
29
+ /** Tool identifier (e.g., 'semgrep') */
30
+ name: string;
31
+ /** Human-readable name for error messages */
32
+ displayName: string;
33
+ /** Binary and args for version check (e.g., ['semgrep', ['--version']]) */
34
+ versionCommand: [string, string[]];
35
+ /** Pattern to extract version from output */
36
+ versionRegex: RegExp;
37
+ /** Minimum required version (semver), null if no minimum */
38
+ minVersion: string | null;
39
+ /** Official documentation URL */
40
+ docsUrl: string;
41
+ /** Per-platform install commands */
42
+ installInstructions: PlatformInstructions;
43
+ }
44
+ /**
45
+ * Result of checking a single dependency.
46
+ */
47
+ export interface DependencyCheckResult {
48
+ /** Dependency name */
49
+ name: string;
50
+ /** Check result status */
51
+ status: DependencyStatus;
52
+ /** Detected version (null if missing/unparseable) */
53
+ version: string | null;
54
+ /** Error message (for unhealthy/missing states) */
55
+ error: string | null;
56
+ }
57
+ /**
58
+ * Aggregated result of checking all dependencies for a run.
59
+ */
60
+ export interface DependencyCheckSummary {
61
+ /** Individual check results */
62
+ results: DependencyCheckResult[];
63
+ /** Dependencies missing for required passes */
64
+ missingRequired: string[];
65
+ /** Dependencies missing for optional passes */
66
+ missingOptional: string[];
67
+ /** Dependencies in unhealthy state */
68
+ unhealthy: string[];
69
+ /** Dependencies below recommended version */
70
+ versionWarnings: string[];
71
+ /** True if any required dependency unavailable */
72
+ hasBlockingIssues: boolean;
73
+ /** True if any non-blocking issues exist */
74
+ hasWarnings: boolean;
75
+ /** Names of passes that can run (all deps available) */
76
+ runnablePasses: string[];
77
+ /** Names of passes skipped due to missing/unhealthy deps */
78
+ skippedPasses: string[];
79
+ }
80
+ /**
81
+ * Information about a skipped pass and why it was skipped.
82
+ */
83
+ export interface SkippedPassInfo {
84
+ /** Pass name */
85
+ name: string;
86
+ /** The missing dependency that caused the skip */
87
+ missingDep: string;
88
+ /** Reason for skip: missing or unhealthy */
89
+ reason: 'missing' | 'unhealthy';
90
+ }
91
+ /**
92
+ * Information about a pass and its required dependencies.
93
+ */
94
+ export interface PassDependencyInfo {
95
+ /** Pass name from config */
96
+ passName: string;
97
+ /** Whether pass is marked as required */
98
+ required: boolean;
99
+ /** Agent IDs used by this pass */
100
+ agents: string[];
101
+ /** External tools needed (derived from agents) */
102
+ dependencies: string[];
103
+ }
104
+ /**
105
+ * Registry of all known external dependencies.
106
+ */
107
+ export type DependencyCatalog = Record<string, ExternalDependency>;
108
+ /**
109
+ * Mapping from agent IDs to their required external tools.
110
+ */
111
+ export type AgentDependencyMap = Record<string, string[]>;
112
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/cli/dependencies/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,OAAO,CAAC;AAEpD;;;;;;GAMG;AACH,MAAM,MAAM,gBAAgB,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,kBAAkB,CAAC;AAE1F;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,wCAAwC;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,6CAA6C;IAC7C,WAAW,EAAE,MAAM,CAAC;IACpB,2EAA2E;IAC3E,cAAc,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;IACnC,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,4DAA4D;IAC5D,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,oCAAoC;IACpC,mBAAmB,EAAE,oBAAoB,CAAC;CAC3C;AAID;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,sBAAsB;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,0BAA0B;IAC1B,MAAM,EAAE,gBAAgB,CAAC;IACzB,qDAAqD;IACrD,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,mDAAmD;IACnD,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACtB;AAED;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,+BAA+B;IAC/B,OAAO,EAAE,qBAAqB,EAAE,CAAC;IACjC,+CAA+C;IAC/C,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,+CAA+C;IAC/C,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,sCAAsC;IACtC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,6CAA6C;IAC7C,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,kDAAkD;IAClD,iBAAiB,EAAE,OAAO,CAAC;IAC3B,4CAA4C;IAC5C,WAAW,EAAE,OAAO,CAAC;IACrB,wDAAwD;IACxD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,4DAA4D;IAC5D,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,gBAAgB;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,kDAAkD;IAClD,UAAU,EAAE,MAAM,CAAC;IACnB,4CAA4C;IAC5C,MAAM,EAAE,SAAS,GAAG,WAAW,CAAC;CACjC;AAID;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,4BAA4B;IAC5B,QAAQ,EAAE,MAAM,CAAC;IACjB,yCAAyC;IACzC,QAAQ,EAAE,OAAO,CAAC;IAClB,kCAAkC;IAClC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,kDAAkD;IAClD,YAAY,EAAE,MAAM,EAAE,CAAC;CACxB;AAID;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,kBAAkB,CAAC,CAAC;AAEnE;;GAEG;AACH,MAAM,MAAM,kBAAkB,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * TypeScript types and interfaces for CLI dependency detection.
3
+ * @module cli/dependencies/types
4
+ */
5
+ export {};
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/cli/dependencies/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
@@ -0,0 +1,67 @@
1
+ /**
2
+ * Version parsing and comparison utilities for dependency checking.
3
+ * @module cli/dependencies/version
4
+ */
5
+ /**
6
+ * Parsed semantic version components.
7
+ */
8
+ export interface ParsedVersion {
9
+ major: number;
10
+ minor: number;
11
+ patch: number;
12
+ raw: string;
13
+ }
14
+ /**
15
+ * Parses a version string from command output.
16
+ *
17
+ * @param output - Raw output from --version command
18
+ * @param regex - Optional custom regex to extract version (must have capture groups for major.minor.patch or single group for full version)
19
+ * @returns Parsed version or null if parsing failed
20
+ *
21
+ * @example
22
+ * ```ts
23
+ * parseVersion('semgrep 1.56.0'); // { major: 1, minor: 56, patch: 0, raw: '1.56.0' }
24
+ * parseVersion('reviewdog version: 0.17.4'); // { major: 0, minor: 17, patch: 4, raw: '0.17.4' }
25
+ * parseVersion('invalid output'); // null
26
+ * ```
27
+ */
28
+ export declare function parseVersion(output: string, regex?: RegExp): ParsedVersion | null;
29
+ /**
30
+ * Compares two parsed versions.
31
+ *
32
+ * @param a - First version
33
+ * @param b - Second version
34
+ * @returns -1 if a < b, 0 if a == b, 1 if a > b
35
+ *
36
+ * @example
37
+ * ```ts
38
+ * compareVersions(v1_0_0, v1_0_1); // -1
39
+ * compareVersions(v1_0_0, v1_0_0); // 0
40
+ * compareVersions(v2_0_0, v1_9_9); // 1
41
+ * ```
42
+ */
43
+ export declare function compareVersions(a: ParsedVersion, b: ParsedVersion): -1 | 0 | 1;
44
+ /**
45
+ * Checks if an installed version meets the minimum required version.
46
+ *
47
+ * @param installed - The installed version
48
+ * @param minimum - The minimum required version string (e.g., "1.0.0")
49
+ * @returns true if installed >= minimum, false otherwise
50
+ *
51
+ * @example
52
+ * ```ts
53
+ * meetsMinimum({ major: 1, minor: 5, patch: 0, raw: '1.5.0' }, '1.0.0'); // true
54
+ * meetsMinimum({ major: 0, minor: 9, patch: 0, raw: '0.9.0' }, '1.0.0'); // false
55
+ * ```
56
+ */
57
+ export declare function meetsMinimum(installed: ParsedVersion, minimum: string): boolean;
58
+ /**
59
+ * Extracts version string from command output using a regex.
60
+ * Convenience function that returns just the raw version string.
61
+ *
62
+ * @param output - Raw output from --version command
63
+ * @param regex - Optional custom regex
64
+ * @returns Version string or null if parsing failed
65
+ */
66
+ export declare function extractVersionString(output: string, regex?: RegExp): string | null;
67
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/cli/dependencies/version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;CACb;AAQD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI,CAkDjF;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,EAAE,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAW9E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,YAAY,CAAC,SAAS,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAS/E;AAED;;;;;;;GAOG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGlF"}
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Version parsing and comparison utilities for dependency checking.
3
+ * @module cli/dependencies/version
4
+ */
5
+ /**
6
+ * Default regex pattern to extract semver from version output.
7
+ * Matches patterns like "1.2.3", "v1.2.3", embedded in any text.
8
+ */
9
+ const DEFAULT_VERSION_REGEX = /(\d+)\.(\d+)\.(\d+)/;
10
+ /**
11
+ * Parses a version string from command output.
12
+ *
13
+ * @param output - Raw output from --version command
14
+ * @param regex - Optional custom regex to extract version (must have capture groups for major.minor.patch or single group for full version)
15
+ * @returns Parsed version or null if parsing failed
16
+ *
17
+ * @example
18
+ * ```ts
19
+ * parseVersion('semgrep 1.56.0'); // { major: 1, minor: 56, patch: 0, raw: '1.56.0' }
20
+ * parseVersion('reviewdog version: 0.17.4'); // { major: 0, minor: 17, patch: 4, raw: '0.17.4' }
21
+ * parseVersion('invalid output'); // null
22
+ * ```
23
+ */
24
+ export function parseVersion(output, regex) {
25
+ const pattern = regex ?? DEFAULT_VERSION_REGEX;
26
+ const match = output.match(pattern);
27
+ if (!match) {
28
+ return null;
29
+ }
30
+ // If regex has 3+ capture groups, use them as major/minor/patch
31
+ if (match.length >= 4 && match[1] && match[2] && match[3]) {
32
+ const major = parseInt(match[1], 10);
33
+ const minor = parseInt(match[2], 10);
34
+ const patch = parseInt(match[3], 10);
35
+ if (isNaN(major) || isNaN(minor) || isNaN(patch)) {
36
+ return null;
37
+ }
38
+ return {
39
+ major,
40
+ minor,
41
+ patch,
42
+ raw: `${major}.${minor}.${patch}`,
43
+ };
44
+ }
45
+ // If regex has single capture group, try to parse it as semver
46
+ if (match.length >= 2 && match[1]) {
47
+ const versionStr = match[1];
48
+ const parts = versionStr.split('.');
49
+ if (parts.length >= 3 && parts[0] && parts[1] && parts[2]) {
50
+ const major = parseInt(parts[0], 10);
51
+ const minor = parseInt(parts[1], 10);
52
+ const patch = parseInt(parts[2], 10);
53
+ if (isNaN(major) || isNaN(minor) || isNaN(patch)) {
54
+ return null;
55
+ }
56
+ return {
57
+ major,
58
+ minor,
59
+ patch,
60
+ raw: `${major}.${minor}.${patch}`,
61
+ };
62
+ }
63
+ }
64
+ return null;
65
+ }
66
+ /**
67
+ * Compares two parsed versions.
68
+ *
69
+ * @param a - First version
70
+ * @param b - Second version
71
+ * @returns -1 if a < b, 0 if a == b, 1 if a > b
72
+ *
73
+ * @example
74
+ * ```ts
75
+ * compareVersions(v1_0_0, v1_0_1); // -1
76
+ * compareVersions(v1_0_0, v1_0_0); // 0
77
+ * compareVersions(v2_0_0, v1_9_9); // 1
78
+ * ```
79
+ */
80
+ export function compareVersions(a, b) {
81
+ if (a.major !== b.major) {
82
+ return a.major > b.major ? 1 : -1;
83
+ }
84
+ if (a.minor !== b.minor) {
85
+ return a.minor > b.minor ? 1 : -1;
86
+ }
87
+ if (a.patch !== b.patch) {
88
+ return a.patch > b.patch ? 1 : -1;
89
+ }
90
+ return 0;
91
+ }
92
+ /**
93
+ * Checks if an installed version meets the minimum required version.
94
+ *
95
+ * @param installed - The installed version
96
+ * @param minimum - The minimum required version string (e.g., "1.0.0")
97
+ * @returns true if installed >= minimum, false otherwise
98
+ *
99
+ * @example
100
+ * ```ts
101
+ * meetsMinimum({ major: 1, minor: 5, patch: 0, raw: '1.5.0' }, '1.0.0'); // true
102
+ * meetsMinimum({ major: 0, minor: 9, patch: 0, raw: '0.9.0' }, '1.0.0'); // false
103
+ * ```
104
+ */
105
+ export function meetsMinimum(installed, minimum) {
106
+ const minVersion = parseVersion(minimum);
107
+ if (!minVersion) {
108
+ // If we can't parse the minimum, assume it's met (fail open)
109
+ return true;
110
+ }
111
+ return compareVersions(installed, minVersion) >= 0;
112
+ }
113
+ /**
114
+ * Extracts version string from command output using a regex.
115
+ * Convenience function that returns just the raw version string.
116
+ *
117
+ * @param output - Raw output from --version command
118
+ * @param regex - Optional custom regex
119
+ * @returns Version string or null if parsing failed
120
+ */
121
+ export function extractVersionString(output, regex) {
122
+ const parsed = parseVersion(output, regex);
123
+ return parsed?.raw ?? null;
124
+ }
125
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/cli/dependencies/version.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH;;;GAGG;AACH,MAAM,qBAAqB,GAAG,qBAAqB,CAAC;AAEpD;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,YAAY,CAAC,MAAc,EAAE,KAAc;IACzD,MAAM,OAAO,GAAG,KAAK,IAAI,qBAAqB,CAAC;IAC/C,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAEpC,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,IAAI,CAAC;IACd,CAAC;IAED,gEAAgE;IAChE,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAC1D,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAErC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACjD,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO;YACL,KAAK;YACL,KAAK;YACL,KAAK;YACL,GAAG,EAAE,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE;SAClC,CAAC;IACJ,CAAC;IAED,+DAA+D;IAC/D,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAClC,MAAM,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC5B,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAEpC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1D,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACrC,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YAErC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjD,OAAO,IAAI,CAAC;YACd,CAAC;YAED,OAAO;gBACL,KAAK;gBACL,KAAK;gBACL,KAAK;gBACL,GAAG,EAAE,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,EAAE;aAClC,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,eAAe,CAAC,CAAgB,EAAE,CAAgB;IAChE,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QACxB,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QACxB,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,IAAI,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC;QACxB,OAAO,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IACpC,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,YAAY,CAAC,SAAwB,EAAE,OAAe;IACpE,MAAM,UAAU,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;IAEzC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,6DAA6D;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,OAAO,eAAe,CAAC,SAAS,EAAE,UAAU,CAAC,IAAI,CAAC,CAAC;AACrD,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,KAAc;IACjE,MAAM,MAAM,GAAG,YAAY,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC3C,OAAO,MAAM,EAAE,GAAG,IAAI,IAAI,CAAC;AAC7B,CAAC"}
@@ -0,0 +1,105 @@
1
+ /**
2
+ * Git Context Module
3
+ *
4
+ * Provides git repository detection and context inference for local review mode.
5
+ * Uses the path argument as working directory for all operations, enabling
6
+ * `ai-review /some/other/repo` from any directory.
7
+ *
8
+ * Security: All inputs validated via existing assertSafePath/assertSafeGitRef.
9
+ * All git commands use execFileSync with shell: false.
10
+ */
11
+ import { type Result } from '../types/result.js';
12
+ /**
13
+ * Normalize a path to use forward slashes.
14
+ *
15
+ * This is critical for Windows compatibility. The path validators reject
16
+ * backslashes as potential shell metacharacters, but Windows paths naturally
17
+ * use backslashes. Forward slashes work on all platforms including Windows.
18
+ *
19
+ * @param p - Path to normalize
20
+ * @returns Path with all backslashes converted to forward slashes
21
+ */
22
+ export declare function normalizePath(p: string): string;
23
+ /**
24
+ * Git context for local review operations
25
+ */
26
+ export interface GitContext {
27
+ /** Absolute path to repository root (contains .git) */
28
+ repoRoot: string;
29
+ /** Current branch name (or 'HEAD' if detached) */
30
+ currentBranch: string;
31
+ /** Detected default branch (main/master/develop) */
32
+ defaultBase: string;
33
+ /** Whether working tree has uncommitted changes */
34
+ hasUncommitted: boolean;
35
+ /** Whether index has staged changes */
36
+ hasStaged: boolean;
37
+ }
38
+ /**
39
+ * Error codes for git context operations
40
+ * Values match the contract in contracts/git-context.md
41
+ */
42
+ export declare const GitContextErrorCode: {
43
+ readonly NOT_GIT_REPO: "NOT_GIT_REPO";
44
+ readonly GIT_NOT_FOUND: "GIT_NOT_FOUND";
45
+ readonly INVALID_PATH: "INVALID_PATH";
46
+ };
47
+ export type GitContextErrorCode = (typeof GitContextErrorCode)[keyof typeof GitContextErrorCode];
48
+ /**
49
+ * Error type for git context operations
50
+ */
51
+ export interface GitContextError {
52
+ code: GitContextErrorCode;
53
+ message: string;
54
+ path?: string;
55
+ }
56
+ /**
57
+ * Find the root directory of a git repository by walking up the directory tree.
58
+ *
59
+ * @param cwd - Starting directory (must be absolute path)
60
+ * @returns Result with absolute path to repo root or error
61
+ */
62
+ export declare function findGitRoot(cwd: string): Result<string, GitContextError>;
63
+ /**
64
+ * Get the current branch name.
65
+ *
66
+ * @param repoPath - Path to repository root
67
+ * @returns Branch name or 'HEAD' if detached
68
+ */
69
+ export declare function getCurrentBranch(repoPath: string): string;
70
+ /**
71
+ * Detect the default/base branch for the repository.
72
+ *
73
+ * Priority order:
74
+ * 1. origin/HEAD target (e.g., "origin/main")
75
+ * 2. Local or remote 'main' branch
76
+ * 3. Local or remote 'master' branch
77
+ * 4. Local or remote 'develop' branch
78
+ * 5. First available branch
79
+ *
80
+ * @param repoPath - Path to repository root
81
+ * @returns Branch name (always returns something)
82
+ */
83
+ export declare function detectDefaultBranch(repoPath: string): string;
84
+ /**
85
+ * Check if the working tree has uncommitted changes.
86
+ *
87
+ * @param repoPath - Path to repository root
88
+ * @returns true if there are uncommitted changes (staged or unstaged)
89
+ */
90
+ export declare function hasUncommittedChanges(repoPath: string): boolean;
91
+ /**
92
+ * Check if the index has staged changes.
93
+ *
94
+ * @param repoPath - Path to repository root
95
+ * @returns true if there are staged changes
96
+ */
97
+ export declare function hasStagedChanges(repoPath: string): boolean;
98
+ /**
99
+ * Infer complete git context for local review.
100
+ *
101
+ * @param cwd - Starting directory (path argument from CLI)
102
+ * @returns Result with GitContext or error
103
+ */
104
+ export declare function inferGitContext(cwd: string): Result<GitContext, GitContextError>;
105
+ //# sourceMappingURL=git-context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"git-context.d.ts","sourceRoot":"","sources":["../../src/cli/git-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,EAAE,KAAK,MAAM,EAAW,MAAM,oBAAoB,CAAC;AAM1D;;;;;;;;;GASG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AAMD;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,uDAAuD;IACvD,QAAQ,EAAE,MAAM,CAAC;IACjB,kDAAkD;IAClD,aAAa,EAAE,MAAM,CAAC;IACtB,oDAAoD;IACpD,WAAW,EAAE,MAAM,CAAC;IACpB,mDAAmD;IACnD,cAAc,EAAE,OAAO,CAAC;IACxB,uCAAuC;IACvC,SAAS,EAAE,OAAO,CAAC;CACpB;AAED;;;GAGG;AACH,eAAO,MAAM,mBAAmB;;;;CAItB,CAAC;AAEX,MAAM,MAAM,mBAAmB,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,OAAO,mBAAmB,CAAC,CAAC;AAEjG;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,mBAAmB,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAwCD;;;;;GAKG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CA0DxE;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAczD;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAwE5D;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAc/D;AAED;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAc1D;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,UAAU,EAAE,eAAe,CAAC,CAmChF"}