@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,154 @@
1
+ /**
2
+ * ANSI Color Utilities
3
+ *
4
+ * Provides ANSI color codes for terminal output with support for:
5
+ * - NO_COLOR environment variable (standard convention)
6
+ * - FORCE_COLOR environment variable (force colors even without TTY)
7
+ * - TTY detection for automatic color support
8
+ *
9
+ * Reference: https://no-color.org/
10
+ */
11
+ /**
12
+ * ANSI escape codes for colors and formatting
13
+ */
14
+ export declare const ANSI: {
15
+ readonly reset: "\u001B[0m";
16
+ readonly bold: "\u001B[1m";
17
+ readonly dim: "\u001B[2m";
18
+ readonly italic: "\u001B[3m";
19
+ readonly underline: "\u001B[4m";
20
+ readonly inverse: "\u001B[7m";
21
+ readonly strikethrough: "\u001B[9m";
22
+ readonly black: "\u001B[30m";
23
+ readonly red: "\u001B[31m";
24
+ readonly green: "\u001B[32m";
25
+ readonly yellow: "\u001B[33m";
26
+ readonly blue: "\u001B[34m";
27
+ readonly magenta: "\u001B[35m";
28
+ readonly cyan: "\u001B[36m";
29
+ readonly white: "\u001B[37m";
30
+ readonly gray: "\u001B[90m";
31
+ readonly bgBlack: "\u001B[40m";
32
+ readonly bgRed: "\u001B[41m";
33
+ readonly bgGreen: "\u001B[42m";
34
+ readonly bgYellow: "\u001B[43m";
35
+ readonly bgBlue: "\u001B[44m";
36
+ readonly bgMagenta: "\u001B[45m";
37
+ readonly bgCyan: "\u001B[46m";
38
+ readonly bgWhite: "\u001B[47m";
39
+ };
40
+ export type AnsiCode = keyof typeof ANSI;
41
+ /**
42
+ * Check if terminal supports colors.
43
+ *
44
+ * Priority:
45
+ * 1. NO_COLOR set (any value) -> false
46
+ * 2. FORCE_COLOR set (any value) -> true
47
+ * 3. Otherwise -> check if stdout is TTY
48
+ *
49
+ * @param env - Environment variables (defaults to process.env)
50
+ * @param isTTY - Whether stdout is a TTY (defaults to process.stdout.isTTY)
51
+ * @returns true if colors should be used
52
+ */
53
+ export declare function supportsColor(env?: Record<string, string | undefined>, isTTY?: boolean): boolean;
54
+ /**
55
+ * Apply ANSI color code to text, respecting color support.
56
+ *
57
+ * @param text - Text to colorize
58
+ * @param code - ANSI code to apply (from ANSI object)
59
+ * @param colored - Whether colors are enabled
60
+ * @returns Colorized text or plain text if colors disabled
61
+ */
62
+ export declare function colorize(text: string, code: string, colored: boolean): string;
63
+ /**
64
+ * Apply multiple ANSI codes to text.
65
+ *
66
+ * @param text - Text to colorize
67
+ * @param codes - Array of ANSI codes to apply
68
+ * @param colored - Whether colors are enabled
69
+ * @returns Colorized text or plain text if colors disabled
70
+ */
71
+ export declare function colorizeMulti(text: string, codes: string[], colored: boolean): string;
72
+ /**
73
+ * Severity levels for findings
74
+ */
75
+ export type Severity = 'error' | 'warning' | 'info';
76
+ /**
77
+ * Get ANSI color code for a severity level.
78
+ *
79
+ * @param severity - Finding severity
80
+ * @returns ANSI color code
81
+ */
82
+ export declare function getSeverityColor(severity: Severity): string;
83
+ /**
84
+ * Colorize text based on severity.
85
+ *
86
+ * @param text - Text to colorize
87
+ * @param severity - Finding severity
88
+ * @param colored - Whether colors are enabled
89
+ * @returns Colorized text
90
+ */
91
+ export declare function colorizeSeverity(text: string, severity: Severity, colored: boolean): string;
92
+ /**
93
+ * Get severity label with appropriate color.
94
+ *
95
+ * @param severity - Finding severity
96
+ * @param colored - Whether colors are enabled
97
+ * @returns Formatted severity label
98
+ */
99
+ export declare function formatSeverityLabel(severity: Severity, colored: boolean): string;
100
+ /**
101
+ * Create a colorizer function bound to a specific color state.
102
+ *
103
+ * @param colored - Whether colors are enabled
104
+ * @returns Object with color functions
105
+ */
106
+ export declare function createColorizer(colored: boolean): {
107
+ red: (text: string) => string;
108
+ green: (text: string) => string;
109
+ yellow: (text: string) => string;
110
+ blue: (text: string) => string;
111
+ cyan: (text: string) => string;
112
+ magenta: (text: string) => string;
113
+ gray: (text: string) => string;
114
+ white: (text: string) => string;
115
+ bold: (text: string) => string;
116
+ dim: (text: string) => string;
117
+ italic: (text: string) => string;
118
+ underline: (text: string) => string;
119
+ inverse: (text: string) => string;
120
+ error: (text: string) => string;
121
+ warning: (text: string) => string;
122
+ info: (text: string) => string;
123
+ };
124
+ /**
125
+ * Strip ANSI codes from text.
126
+ *
127
+ * @param text - Text potentially containing ANSI codes
128
+ * @returns Text with ANSI codes removed
129
+ */
130
+ export declare function stripAnsi(text: string): string;
131
+ /**
132
+ * Get the visible length of text (excluding ANSI codes).
133
+ *
134
+ * @param text - Text potentially containing ANSI codes
135
+ * @returns Visible character count
136
+ */
137
+ export declare function visibleLength(text: string): number;
138
+ /**
139
+ * Check if terminal supports Unicode characters (for box drawing, etc.).
140
+ *
141
+ * Detection logic:
142
+ * 1. Windows Terminal (WT_SESSION env) -> true
143
+ * 2. ConEmu terminal (ConEmuANSI=ON) -> true
144
+ * 3. TERM contains 'xterm', '256color', 'truecolor' -> true
145
+ * 4. LC_ALL, LC_CTYPE, or LANG contains 'UTF-8' or 'utf8' (case-insensitive) -> true
146
+ * 5. TERM is 'dumb' -> false
147
+ * 6. CI environments (CI=true, GITHUB_ACTIONS, etc.) -> true (most CI supports UTF-8)
148
+ * 7. Default: false (fall back to ASCII for safety)
149
+ *
150
+ * @param env - Environment variables (defaults to process.env)
151
+ * @returns true if Unicode characters should be used
152
+ */
153
+ export declare function supportsUnicode(env?: Record<string, string | undefined>): boolean;
154
+ //# sourceMappingURL=colors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.d.ts","sourceRoot":"","sources":["../../../src/cli/output/colors.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAMH;;GAEG;AACH,eAAO,MAAM,IAAI;;;;;;;;;;;;;;;;;;;;;;;;;CAgCP,CAAC;AAEX,MAAM,MAAM,QAAQ,GAAG,MAAM,OAAO,IAAI,CAAC;AAMzC;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,CAC3B,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,EACrD,KAAK,GAAE,OAAwC,GAC9C,OAAO,CAaT;AAMD;;;;;;;GAOG;AACH,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAK7E;AAED;;;;;;;GAOG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAKrF;AAMD;;GAEG;AACH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,SAAS,GAAG,MAAM,CAAC;AAEpD;;;;;GAKG;AACH,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,GAAG,MAAM,CAW3D;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAE3F;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAShF;AAMD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,OAAO;gBAEhC,MAAM;kBACJ,MAAM;mBACL,MAAM;iBACR,MAAM;iBACN,MAAM;oBACH,MAAM;iBACT,MAAM;kBACL,MAAM;iBACP,MAAM;gBACP,MAAM;mBACH,MAAM;sBACH,MAAM;oBACR,MAAM;kBACR,MAAM;oBACJ,MAAM;iBACT,MAAM;EAEtB;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAG9C;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAElD;AAMD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAe,GAAG,OAAO,CA8C9F"}
@@ -0,0 +1,255 @@
1
+ /**
2
+ * ANSI Color Utilities
3
+ *
4
+ * Provides ANSI color codes for terminal output with support for:
5
+ * - NO_COLOR environment variable (standard convention)
6
+ * - FORCE_COLOR environment variable (force colors even without TTY)
7
+ * - TTY detection for automatic color support
8
+ *
9
+ * Reference: https://no-color.org/
10
+ */
11
+ // =============================================================================
12
+ // ANSI Color Codes
13
+ // =============================================================================
14
+ /**
15
+ * ANSI escape codes for colors and formatting
16
+ */
17
+ export const ANSI = {
18
+ // Reset
19
+ reset: '\x1b[0m',
20
+ // Formatting
21
+ bold: '\x1b[1m',
22
+ dim: '\x1b[2m',
23
+ italic: '\x1b[3m',
24
+ underline: '\x1b[4m',
25
+ inverse: '\x1b[7m',
26
+ strikethrough: '\x1b[9m',
27
+ // Foreground colors
28
+ black: '\x1b[30m',
29
+ red: '\x1b[31m',
30
+ green: '\x1b[32m',
31
+ yellow: '\x1b[33m',
32
+ blue: '\x1b[34m',
33
+ magenta: '\x1b[35m',
34
+ cyan: '\x1b[36m',
35
+ white: '\x1b[37m',
36
+ gray: '\x1b[90m',
37
+ // Background colors
38
+ bgBlack: '\x1b[40m',
39
+ bgRed: '\x1b[41m',
40
+ bgGreen: '\x1b[42m',
41
+ bgYellow: '\x1b[43m',
42
+ bgBlue: '\x1b[44m',
43
+ bgMagenta: '\x1b[45m',
44
+ bgCyan: '\x1b[46m',
45
+ bgWhite: '\x1b[47m',
46
+ };
47
+ // =============================================================================
48
+ // Color Support Detection
49
+ // =============================================================================
50
+ /**
51
+ * Check if terminal supports colors.
52
+ *
53
+ * Priority:
54
+ * 1. NO_COLOR set (any value) -> false
55
+ * 2. FORCE_COLOR set (any value) -> true
56
+ * 3. Otherwise -> check if stdout is TTY
57
+ *
58
+ * @param env - Environment variables (defaults to process.env)
59
+ * @param isTTY - Whether stdout is a TTY (defaults to process.stdout.isTTY)
60
+ * @returns true if colors should be used
61
+ */
62
+ export function supportsColor(env = process.env, isTTY = process.stdout?.isTTY ?? false) {
63
+ // NO_COLOR takes precedence (standard convention)
64
+ if (env['NO_COLOR'] !== undefined) {
65
+ return false;
66
+ }
67
+ // FORCE_COLOR forces colors even without TTY
68
+ if (env['FORCE_COLOR'] !== undefined) {
69
+ return true;
70
+ }
71
+ // Fall back to TTY detection
72
+ return isTTY;
73
+ }
74
+ // =============================================================================
75
+ // Colorization Utilities
76
+ // =============================================================================
77
+ /**
78
+ * Apply ANSI color code to text, respecting color support.
79
+ *
80
+ * @param text - Text to colorize
81
+ * @param code - ANSI code to apply (from ANSI object)
82
+ * @param colored - Whether colors are enabled
83
+ * @returns Colorized text or plain text if colors disabled
84
+ */
85
+ export function colorize(text, code, colored) {
86
+ if (!colored) {
87
+ return text;
88
+ }
89
+ return `${code}${text}${ANSI.reset}`;
90
+ }
91
+ /**
92
+ * Apply multiple ANSI codes to text.
93
+ *
94
+ * @param text - Text to colorize
95
+ * @param codes - Array of ANSI codes to apply
96
+ * @param colored - Whether colors are enabled
97
+ * @returns Colorized text or plain text if colors disabled
98
+ */
99
+ export function colorizeMulti(text, codes, colored) {
100
+ if (!colored || codes.length === 0) {
101
+ return text;
102
+ }
103
+ return `${codes.join('')}${text}${ANSI.reset}`;
104
+ }
105
+ /**
106
+ * Get ANSI color code for a severity level.
107
+ *
108
+ * @param severity - Finding severity
109
+ * @returns ANSI color code
110
+ */
111
+ export function getSeverityColor(severity) {
112
+ switch (severity) {
113
+ case 'error':
114
+ return ANSI.red;
115
+ case 'warning':
116
+ return ANSI.yellow;
117
+ case 'info':
118
+ return ANSI.blue;
119
+ default:
120
+ return '';
121
+ }
122
+ }
123
+ /**
124
+ * Colorize text based on severity.
125
+ *
126
+ * @param text - Text to colorize
127
+ * @param severity - Finding severity
128
+ * @param colored - Whether colors are enabled
129
+ * @returns Colorized text
130
+ */
131
+ export function colorizeSeverity(text, severity, colored) {
132
+ return colorize(text, getSeverityColor(severity), colored);
133
+ }
134
+ /**
135
+ * Get severity label with appropriate color.
136
+ *
137
+ * @param severity - Finding severity
138
+ * @param colored - Whether colors are enabled
139
+ * @returns Formatted severity label
140
+ */
141
+ export function formatSeverityLabel(severity, colored) {
142
+ const labels = {
143
+ error: 'error',
144
+ warning: 'warning',
145
+ info: 'info',
146
+ };
147
+ const label = labels[severity] ?? severity;
148
+ return colorize(label, getSeverityColor(severity), colored);
149
+ }
150
+ // =============================================================================
151
+ // Convenience Functions
152
+ // =============================================================================
153
+ /**
154
+ * Create a colorizer function bound to a specific color state.
155
+ *
156
+ * @param colored - Whether colors are enabled
157
+ * @returns Object with color functions
158
+ */
159
+ export function createColorizer(colored) {
160
+ return {
161
+ red: (text) => colorize(text, ANSI.red, colored),
162
+ green: (text) => colorize(text, ANSI.green, colored),
163
+ yellow: (text) => colorize(text, ANSI.yellow, colored),
164
+ blue: (text) => colorize(text, ANSI.blue, colored),
165
+ cyan: (text) => colorize(text, ANSI.cyan, colored),
166
+ magenta: (text) => colorize(text, ANSI.magenta, colored),
167
+ gray: (text) => colorize(text, ANSI.gray, colored),
168
+ white: (text) => colorize(text, ANSI.white, colored),
169
+ bold: (text) => colorize(text, ANSI.bold, colored),
170
+ dim: (text) => colorize(text, ANSI.dim, colored),
171
+ italic: (text) => colorize(text, ANSI.italic, colored),
172
+ underline: (text) => colorize(text, ANSI.underline, colored),
173
+ inverse: (text) => colorize(text, ANSI.inverse, colored),
174
+ error: (text) => colorizeSeverity(text, 'error', colored),
175
+ warning: (text) => colorizeSeverity(text, 'warning', colored),
176
+ info: (text) => colorizeSeverity(text, 'info', colored),
177
+ };
178
+ }
179
+ /**
180
+ * Strip ANSI codes from text.
181
+ *
182
+ * @param text - Text potentially containing ANSI codes
183
+ * @returns Text with ANSI codes removed
184
+ */
185
+ export function stripAnsi(text) {
186
+ // eslint-disable-next-line no-control-regex
187
+ return text.replace(/\x1b\[[0-9;]*m/g, '');
188
+ }
189
+ /**
190
+ * Get the visible length of text (excluding ANSI codes).
191
+ *
192
+ * @param text - Text potentially containing ANSI codes
193
+ * @returns Visible character count
194
+ */
195
+ export function visibleLength(text) {
196
+ return stripAnsi(text).length;
197
+ }
198
+ // =============================================================================
199
+ // Unicode Support Detection
200
+ // =============================================================================
201
+ /**
202
+ * Check if terminal supports Unicode characters (for box drawing, etc.).
203
+ *
204
+ * Detection logic:
205
+ * 1. Windows Terminal (WT_SESSION env) -> true
206
+ * 2. ConEmu terminal (ConEmuANSI=ON) -> true
207
+ * 3. TERM contains 'xterm', '256color', 'truecolor' -> true
208
+ * 4. LC_ALL, LC_CTYPE, or LANG contains 'UTF-8' or 'utf8' (case-insensitive) -> true
209
+ * 5. TERM is 'dumb' -> false
210
+ * 6. CI environments (CI=true, GITHUB_ACTIONS, etc.) -> true (most CI supports UTF-8)
211
+ * 7. Default: false (fall back to ASCII for safety)
212
+ *
213
+ * @param env - Environment variables (defaults to process.env)
214
+ * @returns true if Unicode characters should be used
215
+ */
216
+ export function supportsUnicode(env = process.env) {
217
+ // Windows Terminal explicitly supports Unicode
218
+ if (env['WT_SESSION'] !== undefined) {
219
+ return true;
220
+ }
221
+ // ConEmu supports Unicode when ANSI is enabled
222
+ if (env['ConEmuANSI'] === 'ON') {
223
+ return true;
224
+ }
225
+ // Check TERM for modern terminal indicators
226
+ const term = env['TERM']?.toLowerCase() ?? '';
227
+ // Dumb terminals don't support Unicode
228
+ if (term === 'dumb') {
229
+ return false;
230
+ }
231
+ // xterm variants and color terminals typically support Unicode
232
+ if (term.includes('xterm') || term.includes('256color') || term.includes('truecolor')) {
233
+ return true;
234
+ }
235
+ // Check locale settings for UTF-8
236
+ const localeVars = [env['LC_ALL'], env['LC_CTYPE'], env['LANG']].filter(Boolean);
237
+ for (const locale of localeVars) {
238
+ if (locale && /utf-?8/i.test(locale)) {
239
+ return true;
240
+ }
241
+ }
242
+ // CI environments typically support UTF-8
243
+ if (env['CI'] === 'true' ||
244
+ env['GITHUB_ACTIONS'] !== undefined ||
245
+ env['GITLAB_CI'] !== undefined ||
246
+ env['CIRCLECI'] !== undefined ||
247
+ env['TRAVIS'] !== undefined ||
248
+ env['TF_BUILD'] !== undefined // Azure DevOps
249
+ ) {
250
+ return true;
251
+ }
252
+ // Default to false for safety (ASCII fallback)
253
+ return false;
254
+ }
255
+ //# sourceMappingURL=colors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"colors.js","sourceRoot":"","sources":["../../../src/cli/output/colors.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,157 @@
1
+ /**
2
+ * CLI Error Types and Formatters
3
+ *
4
+ * Provides user-facing error types and formatting for terminal output.
5
+ * All error messages include actionable guidance.
6
+ */
7
+ /**
8
+ * CLI-specific error codes
9
+ */
10
+ export declare const CLIErrorCode: {
11
+ readonly NOT_GIT_REPO: "CLI_NOT_GIT_REPO";
12
+ readonly GIT_NOT_FOUND: "CLI_GIT_NOT_FOUND";
13
+ readonly INVALID_PATH: "CLI_INVALID_PATH";
14
+ readonly NO_CREDENTIALS: "CLI_NO_CREDENTIALS";
15
+ readonly NO_CHANGES: "CLI_NO_CHANGES";
16
+ readonly INVALID_CONFIG: "CLI_INVALID_CONFIG";
17
+ readonly CONFIG_NOT_FOUND: "CLI_CONFIG_NOT_FOUND";
18
+ readonly INVALID_OPTIONS: "CLI_INVALID_OPTIONS";
19
+ readonly EXECUTION_FAILED: "CLI_EXECUTION_FAILED";
20
+ };
21
+ export type CLIErrorCode = (typeof CLIErrorCode)[keyof typeof CLIErrorCode];
22
+ /**
23
+ * Base class for CLI errors
24
+ */
25
+ export declare abstract class CLIError extends Error {
26
+ abstract readonly code: CLIErrorCode;
27
+ abstract readonly hint?: string;
28
+ constructor(message: string);
29
+ }
30
+ /**
31
+ * Error when not in a git repository
32
+ */
33
+ export declare class NotAGitRepoError extends CLIError {
34
+ readonly code: "CLI_NOT_GIT_REPO";
35
+ readonly hint: string;
36
+ readonly path?: string;
37
+ constructor(path?: string);
38
+ }
39
+ /**
40
+ * Error when git is not available in PATH
41
+ */
42
+ export declare class GitNotFoundError extends CLIError {
43
+ readonly code: "CLI_GIT_NOT_FOUND";
44
+ readonly hint: string;
45
+ constructor(message?: string);
46
+ }
47
+ /**
48
+ * Error when the provided path is invalid or inaccessible
49
+ */
50
+ export declare class InvalidPathError extends CLIError {
51
+ readonly code: "CLI_INVALID_PATH";
52
+ readonly hint: string;
53
+ readonly path?: string;
54
+ constructor(message: string, path?: string);
55
+ }
56
+ /**
57
+ * Error when no API credentials are found
58
+ */
59
+ export declare class NoCredentialsError extends CLIError {
60
+ readonly code: "CLI_NO_CREDENTIALS";
61
+ readonly hint: string;
62
+ constructor();
63
+ }
64
+ /**
65
+ * Error when no changes are found to review
66
+ */
67
+ export declare class NoChangesError extends CLIError {
68
+ readonly code: "CLI_NO_CHANGES";
69
+ readonly hint: string;
70
+ readonly base?: string;
71
+ readonly head?: string;
72
+ constructor(base?: string, head?: string);
73
+ }
74
+ /**
75
+ * Error when configuration is invalid
76
+ */
77
+ export declare class InvalidConfigError extends CLIError {
78
+ readonly code: "CLI_INVALID_CONFIG";
79
+ readonly hint: string;
80
+ readonly configPath: string;
81
+ readonly details: string[];
82
+ constructor(configPath: string, details: string[]);
83
+ }
84
+ /**
85
+ * Error when config file is not found
86
+ */
87
+ export declare class ConfigNotFoundError extends CLIError {
88
+ readonly code: "CLI_CONFIG_NOT_FOUND";
89
+ readonly hint: string;
90
+ readonly configPath: string;
91
+ constructor(configPath: string);
92
+ }
93
+ /**
94
+ * Error for invalid CLI options
95
+ */
96
+ export declare class InvalidOptionsError extends CLIError {
97
+ readonly code: "CLI_INVALID_OPTIONS";
98
+ readonly hint: string;
99
+ readonly option: string;
100
+ readonly reason: string;
101
+ constructor(option: string, reason: string, hint: string);
102
+ }
103
+ /**
104
+ * Error for execution failures
105
+ */
106
+ export declare class ExecutionFailedError extends CLIError {
107
+ readonly code: "CLI_EXECUTION_FAILED";
108
+ readonly hint?: string;
109
+ readonly stage: string;
110
+ readonly originalCause?: Error;
111
+ constructor(stage: string, message: string, originalCause?: Error);
112
+ }
113
+ /**
114
+ * Format a CLI error for terminal display
115
+ *
116
+ * @param error - CLI error to format
117
+ * @param colored - Whether to use ANSI colors
118
+ * @returns Formatted error string
119
+ */
120
+ export declare function formatCLIError(error: CLIError | Error, colored?: boolean): string;
121
+ /**
122
+ * Format NotAGitRepoError with guidance
123
+ */
124
+ export declare function formatNotAGitRepoError(error: NotAGitRepoError, colored: boolean): string;
125
+ /**
126
+ * Format NoCredentialsError with env var instructions
127
+ */
128
+ export declare function formatNoCredentialsError(error: NoCredentialsError, colored: boolean): string;
129
+ /**
130
+ * Format NoChangesError with success styling (not actually an error state)
131
+ */
132
+ export declare function formatNoChangesError(error: NoChangesError, colored: boolean): string;
133
+ /**
134
+ * Format InvalidConfigError with validation details
135
+ */
136
+ export declare function formatInvalidConfigError(error: InvalidConfigError, colored: boolean): string;
137
+ /**
138
+ * Type guard for CLIError
139
+ */
140
+ export declare function isCLIError(error: unknown): error is CLIError;
141
+ /**
142
+ * Type guard for NotAGitRepoError
143
+ */
144
+ export declare function isNotAGitRepoError(error: unknown): error is NotAGitRepoError;
145
+ /**
146
+ * Type guard for NoCredentialsError
147
+ */
148
+ export declare function isNoCredentialsError(error: unknown): error is NoCredentialsError;
149
+ /**
150
+ * Type guard for NoChangesError
151
+ */
152
+ export declare function isNoChangesError(error: unknown): error is NoChangesError;
153
+ /**
154
+ * Type guard for InvalidConfigError
155
+ */
156
+ export declare function isInvalidConfigError(error: unknown): error is InvalidConfigError;
157
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/cli/output/errors.ts"],"names":[],"mappings":"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"}