prism-pr 1.0.0-alpha.47

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 (677) hide show
  1. package/README.md +964 -0
  2. package/bin/run.js +9 -0
  3. package/dist/ai/agents/architecture-reviewer.d.ts +3 -0
  4. package/dist/ai/agents/architecture-reviewer.d.ts.map +1 -0
  5. package/dist/ai/agents/architecture-reviewer.js +67 -0
  6. package/dist/ai/agents/architecture-reviewer.js.map +1 -0
  7. package/dist/ai/agents/blade-reviewer.d.ts +3 -0
  8. package/dist/ai/agents/blade-reviewer.d.ts.map +1 -0
  9. package/dist/ai/agents/blade-reviewer.js +59 -0
  10. package/dist/ai/agents/blade-reviewer.js.map +1 -0
  11. package/dist/ai/agents/config-reviewer.d.ts +3 -0
  12. package/dist/ai/agents/config-reviewer.d.ts.map +1 -0
  13. package/dist/ai/agents/config-reviewer.js +106 -0
  14. package/dist/ai/agents/config-reviewer.js.map +1 -0
  15. package/dist/ai/agents/csharp-reviewer.d.ts +3 -0
  16. package/dist/ai/agents/csharp-reviewer.d.ts.map +1 -0
  17. package/dist/ai/agents/csharp-reviewer.js +59 -0
  18. package/dist/ai/agents/csharp-reviewer.js.map +1 -0
  19. package/dist/ai/agents/css-reviewer.d.ts +3 -0
  20. package/dist/ai/agents/css-reviewer.d.ts.map +1 -0
  21. package/dist/ai/agents/css-reviewer.js +65 -0
  22. package/dist/ai/agents/css-reviewer.js.map +1 -0
  23. package/dist/ai/agents/framework-rules/index.d.ts +33 -0
  24. package/dist/ai/agents/framework-rules/index.d.ts.map +1 -0
  25. package/dist/ai/agents/framework-rules/index.js +67 -0
  26. package/dist/ai/agents/framework-rules/index.js.map +1 -0
  27. package/dist/ai/agents/framework-rules/normalize.d.ts +40 -0
  28. package/dist/ai/agents/framework-rules/normalize.d.ts.map +1 -0
  29. package/dist/ai/agents/framework-rules/normalize.js +102 -0
  30. package/dist/ai/agents/framework-rules/normalize.js.map +1 -0
  31. package/dist/ai/agents/framework-rules/routing-map.d.ts +3 -0
  32. package/dist/ai/agents/framework-rules/routing-map.d.ts.map +1 -0
  33. package/dist/ai/agents/framework-rules/routing-map.js +15 -0
  34. package/dist/ai/agents/framework-rules/routing-map.js.map +1 -0
  35. package/dist/ai/agents/html-reviewer.d.ts +3 -0
  36. package/dist/ai/agents/html-reviewer.d.ts.map +1 -0
  37. package/dist/ai/agents/html-reviewer.js +61 -0
  38. package/dist/ai/agents/html-reviewer.js.map +1 -0
  39. package/dist/ai/agents/performance-reviewer.d.ts +3 -0
  40. package/dist/ai/agents/performance-reviewer.d.ts.map +1 -0
  41. package/dist/ai/agents/performance-reviewer.js +60 -0
  42. package/dist/ai/agents/performance-reviewer.js.map +1 -0
  43. package/dist/ai/agents/php-reviewer.d.ts +3 -0
  44. package/dist/ai/agents/php-reviewer.d.ts.map +1 -0
  45. package/dist/ai/agents/php-reviewer.js +62 -0
  46. package/dist/ai/agents/php-reviewer.js.map +1 -0
  47. package/dist/ai/agents/prompts/architecture-reviewer.txt +39 -0
  48. package/dist/ai/agents/prompts/blade-reviewer.txt +39 -0
  49. package/dist/ai/agents/prompts/config-reviewer.txt +47 -0
  50. package/dist/ai/agents/prompts/csharp-reviewer.txt +39 -0
  51. package/dist/ai/agents/prompts/css-reviewer.txt +41 -0
  52. package/dist/ai/agents/prompts/html-reviewer.txt +43 -0
  53. package/dist/ai/agents/prompts/performance-reviewer.txt +38 -0
  54. package/dist/ai/agents/prompts/php-reviewer.txt +87 -0
  55. package/dist/ai/agents/prompts/python-reviewer.txt +42 -0
  56. package/dist/ai/agents/prompts/security-reviewer.txt +36 -0
  57. package/dist/ai/agents/prompts/sql-reviewer.txt +43 -0
  58. package/dist/ai/agents/prompts/testing-reviewer.txt +38 -0
  59. package/dist/ai/agents/prompts/ts-reviewer.txt +54 -0
  60. package/dist/ai/agents/prompts/ux-text-reviewer.txt +68 -0
  61. package/dist/ai/agents/python-reviewer.d.ts +3 -0
  62. package/dist/ai/agents/python-reviewer.d.ts.map +1 -0
  63. package/dist/ai/agents/python-reviewer.js +59 -0
  64. package/dist/ai/agents/python-reviewer.js.map +1 -0
  65. package/dist/ai/agents/registry.d.ts +20 -0
  66. package/dist/ai/agents/registry.d.ts.map +1 -0
  67. package/dist/ai/agents/registry.js +65 -0
  68. package/dist/ai/agents/registry.js.map +1 -0
  69. package/dist/ai/agents/security-reviewer.d.ts +3 -0
  70. package/dist/ai/agents/security-reviewer.d.ts.map +1 -0
  71. package/dist/ai/agents/security-reviewer.js +69 -0
  72. package/dist/ai/agents/security-reviewer.js.map +1 -0
  73. package/dist/ai/agents/shared/content-builder.d.ts +14 -0
  74. package/dist/ai/agents/shared/content-builder.d.ts.map +1 -0
  75. package/dist/ai/agents/shared/content-builder.js +158 -0
  76. package/dist/ai/agents/shared/content-builder.js.map +1 -0
  77. package/dist/ai/agents/shared/finding-schema.d.ts +54 -0
  78. package/dist/ai/agents/shared/finding-schema.d.ts.map +1 -0
  79. package/dist/ai/agents/shared/finding-schema.js +65 -0
  80. package/dist/ai/agents/shared/finding-schema.js.map +1 -0
  81. package/dist/ai/agents/shared/line-validator.d.ts +8 -0
  82. package/dist/ai/agents/shared/line-validator.d.ts.map +1 -0
  83. package/dist/ai/agents/shared/line-validator.js +12 -0
  84. package/dist/ai/agents/shared/line-validator.js.map +1 -0
  85. package/dist/ai/agents/shared/prompt-builder.d.ts +3 -0
  86. package/dist/ai/agents/shared/prompt-builder.d.ts.map +1 -0
  87. package/dist/ai/agents/shared/prompt-builder.js +68 -0
  88. package/dist/ai/agents/shared/prompt-builder.js.map +1 -0
  89. package/dist/ai/agents/sql-reviewer.d.ts +3 -0
  90. package/dist/ai/agents/sql-reviewer.d.ts.map +1 -0
  91. package/dist/ai/agents/sql-reviewer.js +61 -0
  92. package/dist/ai/agents/sql-reviewer.js.map +1 -0
  93. package/dist/ai/agents/testing-reviewer.d.ts +3 -0
  94. package/dist/ai/agents/testing-reviewer.d.ts.map +1 -0
  95. package/dist/ai/agents/testing-reviewer.js +80 -0
  96. package/dist/ai/agents/testing-reviewer.js.map +1 -0
  97. package/dist/ai/agents/ts-reviewer.d.ts +3 -0
  98. package/dist/ai/agents/ts-reviewer.d.ts.map +1 -0
  99. package/dist/ai/agents/ts-reviewer.js +63 -0
  100. package/dist/ai/agents/ts-reviewer.js.map +1 -0
  101. package/dist/ai/agents/ux-text-reviewer.d.ts +3 -0
  102. package/dist/ai/agents/ux-text-reviewer.d.ts.map +1 -0
  103. package/dist/ai/agents/ux-text-reviewer.js +116 -0
  104. package/dist/ai/agents/ux-text-reviewer.js.map +1 -0
  105. package/dist/ai/orchestrator/agent-classifier.d.ts +28 -0
  106. package/dist/ai/orchestrator/agent-classifier.d.ts.map +1 -0
  107. package/dist/ai/orchestrator/agent-classifier.js +137 -0
  108. package/dist/ai/orchestrator/agent-classifier.js.map +1 -0
  109. package/dist/ai/orchestrator/consolidation.d.ts +12 -0
  110. package/dist/ai/orchestrator/consolidation.d.ts.map +1 -0
  111. package/dist/ai/orchestrator/consolidation.js +34 -0
  112. package/dist/ai/orchestrator/consolidation.js.map +1 -0
  113. package/dist/ai/orchestrator/context-analyzer.d.ts +47 -0
  114. package/dist/ai/orchestrator/context-analyzer.d.ts.map +1 -0
  115. package/dist/ai/orchestrator/context-analyzer.js +368 -0
  116. package/dist/ai/orchestrator/context-analyzer.js.map +1 -0
  117. package/dist/ai/orchestrator/deduplicator.d.ts +43 -0
  118. package/dist/ai/orchestrator/deduplicator.d.ts.map +1 -0
  119. package/dist/ai/orchestrator/deduplicator.js +97 -0
  120. package/dist/ai/orchestrator/deduplicator.js.map +1 -0
  121. package/dist/ai/orchestrator/orchestrator.d.ts +57 -0
  122. package/dist/ai/orchestrator/orchestrator.d.ts.map +1 -0
  123. package/dist/ai/orchestrator/orchestrator.js +181 -0
  124. package/dist/ai/orchestrator/orchestrator.js.map +1 -0
  125. package/dist/ai/orchestrator/rule-based-strategy.d.ts +20 -0
  126. package/dist/ai/orchestrator/rule-based-strategy.d.ts.map +1 -0
  127. package/dist/ai/orchestrator/rule-based-strategy.js +55 -0
  128. package/dist/ai/orchestrator/rule-based-strategy.js.map +1 -0
  129. package/dist/ai/orchestrator/semaphore.d.ts +25 -0
  130. package/dist/ai/orchestrator/semaphore.d.ts.map +1 -0
  131. package/dist/ai/orchestrator/semaphore.js +52 -0
  132. package/dist/ai/orchestrator/semaphore.js.map +1 -0
  133. package/dist/ai/orchestrator/severity-pipeline.d.ts +21 -0
  134. package/dist/ai/orchestrator/severity-pipeline.d.ts.map +1 -0
  135. package/dist/ai/orchestrator/severity-pipeline.js +69 -0
  136. package/dist/ai/orchestrator/severity-pipeline.js.map +1 -0
  137. package/dist/ai/orchestrator/strategy.d.ts +20 -0
  138. package/dist/ai/orchestrator/strategy.d.ts.map +1 -0
  139. package/dist/ai/orchestrator/strategy.js +2 -0
  140. package/dist/ai/orchestrator/strategy.js.map +1 -0
  141. package/dist/ai/providers/anthropic-provider.d.ts +14 -0
  142. package/dist/ai/providers/anthropic-provider.d.ts.map +1 -0
  143. package/dist/ai/providers/anthropic-provider.js +108 -0
  144. package/dist/ai/providers/anthropic-provider.js.map +1 -0
  145. package/dist/ai/providers/claude-code-provider.d.ts +12 -0
  146. package/dist/ai/providers/claude-code-provider.d.ts.map +1 -0
  147. package/dist/ai/providers/claude-code-provider.js +103 -0
  148. package/dist/ai/providers/claude-code-provider.js.map +1 -0
  149. package/dist/ai/providers/errors.d.ts +22 -0
  150. package/dist/ai/providers/errors.d.ts.map +1 -0
  151. package/dist/ai/providers/errors.js +44 -0
  152. package/dist/ai/providers/errors.js.map +1 -0
  153. package/dist/ai/skills/skill-registry.d.ts +21 -0
  154. package/dist/ai/skills/skill-registry.d.ts.map +1 -0
  155. package/dist/ai/skills/skill-registry.js +27 -0
  156. package/dist/ai/skills/skill-registry.js.map +1 -0
  157. package/dist/ai/text-extractor/extractor.d.ts +15 -0
  158. package/dist/ai/text-extractor/extractor.d.ts.map +1 -0
  159. package/dist/ai/text-extractor/extractor.js +63 -0
  160. package/dist/ai/text-extractor/extractor.js.map +1 -0
  161. package/dist/ai/text-extractor/index.d.ts +4 -0
  162. package/dist/ai/text-extractor/index.d.ts.map +1 -0
  163. package/dist/ai/text-extractor/index.js +3 -0
  164. package/dist/ai/text-extractor/index.js.map +1 -0
  165. package/dist/ai/text-extractor/patterns.d.ts +21 -0
  166. package/dist/ai/text-extractor/patterns.d.ts.map +1 -0
  167. package/dist/ai/text-extractor/patterns.js +169 -0
  168. package/dist/ai/text-extractor/patterns.js.map +1 -0
  169. package/dist/ai/text-extractor/types.d.ts +47 -0
  170. package/dist/ai/text-extractor/types.d.ts.map +1 -0
  171. package/dist/ai/text-extractor/types.js +2 -0
  172. package/dist/ai/text-extractor/types.js.map +1 -0
  173. package/dist/bitbucket/client.d.ts +38 -0
  174. package/dist/bitbucket/client.d.ts.map +1 -0
  175. package/dist/bitbucket/client.js +448 -0
  176. package/dist/bitbucket/client.js.map +1 -0
  177. package/dist/bitbucket/errors.d.ts +75 -0
  178. package/dist/bitbucket/errors.d.ts.map +1 -0
  179. package/dist/bitbucket/errors.js +127 -0
  180. package/dist/bitbucket/errors.js.map +1 -0
  181. package/dist/bitbucket/mappers.d.ts +3 -0
  182. package/dist/bitbucket/mappers.d.ts.map +1 -0
  183. package/dist/bitbucket/mappers.js +14 -0
  184. package/dist/bitbucket/mappers.js.map +1 -0
  185. package/dist/commands/guard/check.d.ts +19 -0
  186. package/dist/commands/guard/check.d.ts.map +1 -0
  187. package/dist/commands/guard/check.js +224 -0
  188. package/dist/commands/guard/check.js.map +1 -0
  189. package/dist/commands/guard/index.d.ts +7 -0
  190. package/dist/commands/guard/index.d.ts.map +1 -0
  191. package/dist/commands/guard/index.js +65 -0
  192. package/dist/commands/guard/index.js.map +1 -0
  193. package/dist/commands/interactive.d.ts +10 -0
  194. package/dist/commands/interactive.d.ts.map +1 -0
  195. package/dist/commands/interactive.js +88 -0
  196. package/dist/commands/interactive.js.map +1 -0
  197. package/dist/commands/login.d.ts +35 -0
  198. package/dist/commands/login.d.ts.map +1 -0
  199. package/dist/commands/login.js +164 -0
  200. package/dist/commands/login.js.map +1 -0
  201. package/dist/commands/logout.d.ts +12 -0
  202. package/dist/commands/logout.d.ts.map +1 -0
  203. package/dist/commands/logout.js +23 -0
  204. package/dist/commands/logout.js.map +1 -0
  205. package/dist/commands/review/start.d.ts +22 -0
  206. package/dist/commands/review/start.d.ts.map +1 -0
  207. package/dist/commands/review/start.js +120 -0
  208. package/dist/commands/review/start.js.map +1 -0
  209. package/dist/commands/rules/push.d.ts +13 -0
  210. package/dist/commands/rules/push.d.ts.map +1 -0
  211. package/dist/commands/rules/push.js +75 -0
  212. package/dist/commands/rules/push.js.map +1 -0
  213. package/dist/commands/rules/stats.d.ts +14 -0
  214. package/dist/commands/rules/stats.d.ts.map +1 -0
  215. package/dist/commands/rules/stats.js +101 -0
  216. package/dist/commands/rules/stats.js.map +1 -0
  217. package/dist/commands/rules/sync.d.ts +15 -0
  218. package/dist/commands/rules/sync.d.ts.map +1 -0
  219. package/dist/commands/rules/sync.js +144 -0
  220. package/dist/commands/rules/sync.js.map +1 -0
  221. package/dist/config/config-manager.d.ts +14 -0
  222. package/dist/config/config-manager.d.ts.map +1 -0
  223. package/dist/config/config-manager.js +85 -0
  224. package/dist/config/config-manager.js.map +1 -0
  225. package/dist/config/convention-builder.d.ts +13 -0
  226. package/dist/config/convention-builder.d.ts.map +1 -0
  227. package/dist/config/convention-builder.js +31 -0
  228. package/dist/config/convention-builder.js.map +1 -0
  229. package/dist/config/credentials.d.ts +14 -0
  230. package/dist/config/credentials.d.ts.map +1 -0
  231. package/dist/config/credentials.js +85 -0
  232. package/dist/config/credentials.js.map +1 -0
  233. package/dist/config/encryption.d.ts +20 -0
  234. package/dist/config/encryption.d.ts.map +1 -0
  235. package/dist/config/encryption.js +94 -0
  236. package/dist/config/encryption.js.map +1 -0
  237. package/dist/config/repo-config-loader.d.ts +34 -0
  238. package/dist/config/repo-config-loader.d.ts.map +1 -0
  239. package/dist/config/repo-config-loader.js +103 -0
  240. package/dist/config/repo-config-loader.js.map +1 -0
  241. package/dist/core/cli-workflow-callbacks.d.ts +35 -0
  242. package/dist/core/cli-workflow-callbacks.d.ts.map +1 -0
  243. package/dist/core/cli-workflow-callbacks.js +141 -0
  244. package/dist/core/cli-workflow-callbacks.js.map +1 -0
  245. package/dist/core/comment-publisher.d.ts +61 -0
  246. package/dist/core/comment-publisher.d.ts.map +1 -0
  247. package/dist/core/comment-publisher.js +172 -0
  248. package/dist/core/comment-publisher.js.map +1 -0
  249. package/dist/core/integrity-checker.d.ts +22 -0
  250. package/dist/core/integrity-checker.d.ts.map +1 -0
  251. package/dist/core/integrity-checker.js +83 -0
  252. package/dist/core/integrity-checker.js.map +1 -0
  253. package/dist/core/review-workflow.d.ts +34 -0
  254. package/dist/core/review-workflow.d.ts.map +1 -0
  255. package/dist/core/review-workflow.js +21 -0
  256. package/dist/core/review-workflow.js.map +1 -0
  257. package/dist/core/session-manager.d.ts +107 -0
  258. package/dist/core/session-manager.d.ts.map +1 -0
  259. package/dist/core/session-manager.js +164 -0
  260. package/dist/core/session-manager.js.map +1 -0
  261. package/dist/core/workflow-callbacks.d.ts +74 -0
  262. package/dist/core/workflow-callbacks.d.ts.map +1 -0
  263. package/dist/core/workflow-callbacks.js +2 -0
  264. package/dist/core/workflow-callbacks.js.map +1 -0
  265. package/dist/core/workflow-engine.d.ts +48 -0
  266. package/dist/core/workflow-engine.d.ts.map +1 -0
  267. package/dist/core/workflow-engine.js +442 -0
  268. package/dist/core/workflow-engine.js.map +1 -0
  269. package/dist/errors/base.d.ts +6 -0
  270. package/dist/errors/base.d.ts.map +1 -0
  271. package/dist/errors/base.js +13 -0
  272. package/dist/errors/base.js.map +1 -0
  273. package/dist/errors/config-error.d.ts +5 -0
  274. package/dist/errors/config-error.d.ts.map +1 -0
  275. package/dist/errors/config-error.js +9 -0
  276. package/dist/errors/config-error.js.map +1 -0
  277. package/dist/errors/index.d.ts +5 -0
  278. package/dist/errors/index.d.ts.map +1 -0
  279. package/dist/errors/index.js +5 -0
  280. package/dist/errors/index.js.map +1 -0
  281. package/dist/errors/validation-error.d.ts +5 -0
  282. package/dist/errors/validation-error.d.ts.map +1 -0
  283. package/dist/errors/validation-error.js +9 -0
  284. package/dist/errors/validation-error.js.map +1 -0
  285. package/dist/errors/workflow-error.d.ts +6 -0
  286. package/dist/errors/workflow-error.d.ts.map +1 -0
  287. package/dist/errors/workflow-error.js +11 -0
  288. package/dist/errors/workflow-error.js.map +1 -0
  289. package/dist/guard/ast-grep-strategy.d.ts +25 -0
  290. package/dist/guard/ast-grep-strategy.d.ts.map +1 -0
  291. package/dist/guard/ast-grep-strategy.js +112 -0
  292. package/dist/guard/ast-grep-strategy.js.map +1 -0
  293. package/dist/guard/diff-pattern-matcher.d.ts +52 -0
  294. package/dist/guard/diff-pattern-matcher.d.ts.map +1 -0
  295. package/dist/guard/diff-pattern-matcher.js +325 -0
  296. package/dist/guard/diff-pattern-matcher.js.map +1 -0
  297. package/dist/guard/file-fetcher.d.ts +3 -0
  298. package/dist/guard/file-fetcher.d.ts.map +1 -0
  299. package/dist/guard/file-fetcher.js +21 -0
  300. package/dist/guard/file-fetcher.js.map +1 -0
  301. package/dist/guard/guard-engine.d.ts +8 -0
  302. package/dist/guard/guard-engine.d.ts.map +1 -0
  303. package/dist/guard/guard-engine.js +78 -0
  304. package/dist/guard/guard-engine.js.map +1 -0
  305. package/dist/guard/match-strategy.d.ts +14 -0
  306. package/dist/guard/match-strategy.d.ts.map +1 -0
  307. package/dist/guard/match-strategy.js +7 -0
  308. package/dist/guard/match-strategy.js.map +1 -0
  309. package/dist/guard/patterns-loader.d.ts +16 -0
  310. package/dist/guard/patterns-loader.d.ts.map +1 -0
  311. package/dist/guard/patterns-loader.js +61 -0
  312. package/dist/guard/patterns-loader.js.map +1 -0
  313. package/dist/guard/types.d.ts +61 -0
  314. package/dist/guard/types.d.ts.map +1 -0
  315. package/dist/guard/types.js +2 -0
  316. package/dist/guard/types.js.map +1 -0
  317. package/dist/memory/engram-client.d.ts +15 -0
  318. package/dist/memory/engram-client.d.ts.map +1 -0
  319. package/dist/memory/engram-client.js +167 -0
  320. package/dist/memory/engram-client.js.map +1 -0
  321. package/dist/memory/review-memory-service.d.ts +13 -0
  322. package/dist/memory/review-memory-service.d.ts.map +1 -0
  323. package/dist/memory/review-memory-service.js +43 -0
  324. package/dist/memory/review-memory-service.js.map +1 -0
  325. package/dist/persistence/database.d.ts +8 -0
  326. package/dist/persistence/database.d.ts.map +1 -0
  327. package/dist/persistence/database.js +58 -0
  328. package/dist/persistence/database.js.map +1 -0
  329. package/dist/persistence/false-positive-repository.d.ts +12 -0
  330. package/dist/persistence/false-positive-repository.d.ts.map +1 -0
  331. package/dist/persistence/false-positive-repository.js +58 -0
  332. package/dist/persistence/false-positive-repository.js.map +1 -0
  333. package/dist/persistence/migrations/0000_peaceful_blur.sql +66 -0
  334. package/dist/persistence/migrations/0001_phase3a_schema.sql +15 -0
  335. package/dist/persistence/migrations/0002_stack_profile.sql +1 -0
  336. package/dist/persistence/migrations/0003_known_workspaces.sql +5 -0
  337. package/dist/persistence/migrations/0004_review_memory.sql +24 -0
  338. package/dist/persistence/migrations/meta/0000_snapshot.json +468 -0
  339. package/dist/persistence/migrations/meta/_journal.json +41 -0
  340. package/dist/persistence/profile-repository.d.ts +33 -0
  341. package/dist/persistence/profile-repository.d.ts.map +1 -0
  342. package/dist/persistence/profile-repository.js +94 -0
  343. package/dist/persistence/profile-repository.js.map +1 -0
  344. package/dist/persistence/repository.d.ts +70 -0
  345. package/dist/persistence/repository.d.ts.map +1 -0
  346. package/dist/persistence/repository.js +225 -0
  347. package/dist/persistence/repository.js.map +1 -0
  348. package/dist/persistence/schema.d.ts +1333 -0
  349. package/dist/persistence/schema.d.ts.map +1 -0
  350. package/dist/persistence/schema.js +92 -0
  351. package/dist/persistence/schema.js.map +1 -0
  352. package/dist/persistence/workspace-repository.d.ts +14 -0
  353. package/dist/persistence/workspace-repository.d.ts.map +1 -0
  354. package/dist/persistence/workspace-repository.js +30 -0
  355. package/dist/persistence/workspace-repository.js.map +1 -0
  356. package/dist/rules-engine/finding-aggregator.d.ts +13 -0
  357. package/dist/rules-engine/finding-aggregator.d.ts.map +1 -0
  358. package/dist/rules-engine/finding-aggregator.js +135 -0
  359. package/dist/rules-engine/finding-aggregator.js.map +1 -0
  360. package/dist/rules-engine/pattern-generator.d.ts +26 -0
  361. package/dist/rules-engine/pattern-generator.d.ts.map +1 -0
  362. package/dist/rules-engine/pattern-generator.js +116 -0
  363. package/dist/rules-engine/pattern-generator.js.map +1 -0
  364. package/dist/rules-engine/rule-prompt-builder.d.ts +32 -0
  365. package/dist/rules-engine/rule-prompt-builder.d.ts.map +1 -0
  366. package/dist/rules-engine/rule-prompt-builder.js +124 -0
  367. package/dist/rules-engine/rule-prompt-builder.js.map +1 -0
  368. package/dist/rules-engine/types.d.ts +80 -0
  369. package/dist/rules-engine/types.d.ts.map +1 -0
  370. package/dist/rules-engine/types.js +18 -0
  371. package/dist/rules-engine/types.js.map +1 -0
  372. package/dist/rules-repo/rules-cache.d.ts +14 -0
  373. package/dist/rules-repo/rules-cache.d.ts.map +1 -0
  374. package/dist/rules-repo/rules-cache.js +43 -0
  375. package/dist/rules-repo/rules-cache.js.map +1 -0
  376. package/dist/rules-repo/rules-repo-client.d.ts +27 -0
  377. package/dist/rules-repo/rules-repo-client.d.ts.map +1 -0
  378. package/dist/rules-repo/rules-repo-client.js +85 -0
  379. package/dist/rules-repo/rules-repo-client.js.map +1 -0
  380. package/dist/rules-repo/types.d.ts +16 -0
  381. package/dist/rules-repo/types.d.ts.map +1 -0
  382. package/dist/rules-repo/types.js +10 -0
  383. package/dist/rules-repo/types.js.map +1 -0
  384. package/dist/stack-detector/ai-stack-fallback.d.ts +12 -0
  385. package/dist/stack-detector/ai-stack-fallback.d.ts.map +1 -0
  386. package/dist/stack-detector/ai-stack-fallback.js +67 -0
  387. package/dist/stack-detector/ai-stack-fallback.js.map +1 -0
  388. package/dist/stack-detector/ai-stack-schema.d.ts +28 -0
  389. package/dist/stack-detector/ai-stack-schema.d.ts.map +1 -0
  390. package/dist/stack-detector/ai-stack-schema.js +13 -0
  391. package/dist/stack-detector/ai-stack-schema.js.map +1 -0
  392. package/dist/stack-detector/formatter.d.ts +7 -0
  393. package/dist/stack-detector/formatter.d.ts.map +1 -0
  394. package/dist/stack-detector/formatter.js +37 -0
  395. package/dist/stack-detector/formatter.js.map +1 -0
  396. package/dist/stack-detector/index.d.ts +7 -0
  397. package/dist/stack-detector/index.d.ts.map +1 -0
  398. package/dist/stack-detector/index.js +5 -0
  399. package/dist/stack-detector/index.js.map +1 -0
  400. package/dist/stack-detector/merge-profiles.d.ts +5 -0
  401. package/dist/stack-detector/merge-profiles.d.ts.map +1 -0
  402. package/dist/stack-detector/merge-profiles.js +36 -0
  403. package/dist/stack-detector/merge-profiles.js.map +1 -0
  404. package/dist/stack-detector/parsers.d.ts +12 -0
  405. package/dist/stack-detector/parsers.d.ts.map +1 -0
  406. package/dist/stack-detector/parsers.js +259 -0
  407. package/dist/stack-detector/parsers.js.map +1 -0
  408. package/dist/stack-detector/stack-detector.d.ts +11 -0
  409. package/dist/stack-detector/stack-detector.d.ts.map +1 -0
  410. package/dist/stack-detector/stack-detector.js +83 -0
  411. package/dist/stack-detector/stack-detector.js.map +1 -0
  412. package/dist/stack-detector/types.d.ts +13 -0
  413. package/dist/stack-detector/types.d.ts.map +1 -0
  414. package/dist/stack-detector/types.js +2 -0
  415. package/dist/stack-detector/types.js.map +1 -0
  416. package/dist/tui/app.d.ts +9 -0
  417. package/dist/tui/app.d.ts.map +1 -0
  418. package/dist/tui/app.js +45 -0
  419. package/dist/tui/app.js.map +1 -0
  420. package/dist/tui/callbacks/tui-workflow-callbacks.d.ts +32 -0
  421. package/dist/tui/callbacks/tui-workflow-callbacks.d.ts.map +1 -0
  422. package/dist/tui/callbacks/tui-workflow-callbacks.js +88 -0
  423. package/dist/tui/callbacks/tui-workflow-callbacks.js.map +1 -0
  424. package/dist/tui/components/key-hint.d.ts +7 -0
  425. package/dist/tui/components/key-hint.d.ts.map +1 -0
  426. package/dist/tui/components/key-hint.js +6 -0
  427. package/dist/tui/components/key-hint.js.map +1 -0
  428. package/dist/tui/components/scroll-list.d.ts +20 -0
  429. package/dist/tui/components/scroll-list.d.ts.map +1 -0
  430. package/dist/tui/components/scroll-list.js +85 -0
  431. package/dist/tui/components/scroll-list.js.map +1 -0
  432. package/dist/tui/components/searchable-list.d.ts +15 -0
  433. package/dist/tui/components/searchable-list.d.ts.map +1 -0
  434. package/dist/tui/components/searchable-list.js +97 -0
  435. package/dist/tui/components/searchable-list.js.map +1 -0
  436. package/dist/tui/components/severity-badge.d.ts +6 -0
  437. package/dist/tui/components/severity-badge.d.ts.map +1 -0
  438. package/dist/tui/components/severity-badge.js +17 -0
  439. package/dist/tui/components/severity-badge.js.map +1 -0
  440. package/dist/tui/components/severity-selector.d.ts +9 -0
  441. package/dist/tui/components/severity-selector.d.ts.map +1 -0
  442. package/dist/tui/components/severity-selector.js +29 -0
  443. package/dist/tui/components/severity-selector.js.map +1 -0
  444. package/dist/tui/components/spinner.d.ts +6 -0
  445. package/dist/tui/components/spinner.d.ts.map +1 -0
  446. package/dist/tui/components/spinner.js +19 -0
  447. package/dist/tui/components/spinner.js.map +1 -0
  448. package/dist/tui/components/status-bar.d.ts +10 -0
  449. package/dist/tui/components/status-bar.d.ts.map +1 -0
  450. package/dist/tui/components/status-bar.js +7 -0
  451. package/dist/tui/components/status-bar.js.map +1 -0
  452. package/dist/tui/deps-context.d.ts +27 -0
  453. package/dist/tui/deps-context.d.ts.map +1 -0
  454. package/dist/tui/deps-context.js +9 -0
  455. package/dist/tui/deps-context.js.map +1 -0
  456. package/dist/tui/error-boundary.d.ts +16 -0
  457. package/dist/tui/error-boundary.d.ts.map +1 -0
  458. package/dist/tui/error-boundary.js +30 -0
  459. package/dist/tui/error-boundary.js.map +1 -0
  460. package/dist/tui/hooks/use-agent-recommendations.d.ts +10 -0
  461. package/dist/tui/hooks/use-agent-recommendations.d.ts.map +1 -0
  462. package/dist/tui/hooks/use-agent-recommendations.js +66 -0
  463. package/dist/tui/hooks/use-agent-recommendations.js.map +1 -0
  464. package/dist/tui/hooks/use-auth.d.ts +14 -0
  465. package/dist/tui/hooks/use-auth.d.ts.map +1 -0
  466. package/dist/tui/hooks/use-auth.js +32 -0
  467. package/dist/tui/hooks/use-auth.js.map +1 -0
  468. package/dist/tui/hooks/use-bitbucket.d.ts +18 -0
  469. package/dist/tui/hooks/use-bitbucket.d.ts.map +1 -0
  470. package/dist/tui/hooks/use-bitbucket.js +31 -0
  471. package/dist/tui/hooks/use-bitbucket.js.map +1 -0
  472. package/dist/tui/hooks/use-review.d.ts +6 -0
  473. package/dist/tui/hooks/use-review.d.ts.map +1 -0
  474. package/dist/tui/hooks/use-review.js +24 -0
  475. package/dist/tui/hooks/use-review.js.map +1 -0
  476. package/dist/tui/hooks/use-session.d.ts +47 -0
  477. package/dist/tui/hooks/use-session.d.ts.map +1 -0
  478. package/dist/tui/hooks/use-session.js +17 -0
  479. package/dist/tui/hooks/use-session.js.map +1 -0
  480. package/dist/tui/screen-router.d.ts +3 -0
  481. package/dist/tui/screen-router.d.ts.map +1 -0
  482. package/dist/tui/screen-router.js +73 -0
  483. package/dist/tui/screen-router.js.map +1 -0
  484. package/dist/tui/screens/agent-select.d.ts +3 -0
  485. package/dist/tui/screens/agent-select.d.ts.map +1 -0
  486. package/dist/tui/screens/agent-select.js +173 -0
  487. package/dist/tui/screens/agent-select.js.map +1 -0
  488. package/dist/tui/screens/finding-detail.d.ts +3 -0
  489. package/dist/tui/screens/finding-detail.d.ts.map +1 -0
  490. package/dist/tui/screens/finding-detail.js +48 -0
  491. package/dist/tui/screens/finding-detail.js.map +1 -0
  492. package/dist/tui/screens/findings-list.d.ts +3 -0
  493. package/dist/tui/screens/findings-list.d.ts.map +1 -0
  494. package/dist/tui/screens/findings-list.js +108 -0
  495. package/dist/tui/screens/findings-list.js.map +1 -0
  496. package/dist/tui/screens/guard-detail.d.ts +3 -0
  497. package/dist/tui/screens/guard-detail.d.ts.map +1 -0
  498. package/dist/tui/screens/guard-detail.js +41 -0
  499. package/dist/tui/screens/guard-detail.js.map +1 -0
  500. package/dist/tui/screens/guard-home.d.ts +3 -0
  501. package/dist/tui/screens/guard-home.d.ts.map +1 -0
  502. package/dist/tui/screens/guard-home.js +81 -0
  503. package/dist/tui/screens/guard-home.js.map +1 -0
  504. package/dist/tui/screens/guard-results.d.ts +3 -0
  505. package/dist/tui/screens/guard-results.d.ts.map +1 -0
  506. package/dist/tui/screens/guard-results.js +103 -0
  507. package/dist/tui/screens/guard-results.js.map +1 -0
  508. package/dist/tui/screens/guard-running.d.ts +3 -0
  509. package/dist/tui/screens/guard-running.d.ts.map +1 -0
  510. package/dist/tui/screens/guard-running.js +92 -0
  511. package/dist/tui/screens/guard-running.js.map +1 -0
  512. package/dist/tui/screens/home.d.ts +3 -0
  513. package/dist/tui/screens/home.d.ts.map +1 -0
  514. package/dist/tui/screens/home.js +44 -0
  515. package/dist/tui/screens/home.js.map +1 -0
  516. package/dist/tui/screens/integrity-report.d.ts +3 -0
  517. package/dist/tui/screens/integrity-report.d.ts.map +1 -0
  518. package/dist/tui/screens/integrity-report.js +29 -0
  519. package/dist/tui/screens/integrity-report.js.map +1 -0
  520. package/dist/tui/screens/login.d.ts +3 -0
  521. package/dist/tui/screens/login.d.ts.map +1 -0
  522. package/dist/tui/screens/login.js +81 -0
  523. package/dist/tui/screens/login.js.map +1 -0
  524. package/dist/tui/screens/pr-list.d.ts +3 -0
  525. package/dist/tui/screens/pr-list.d.ts.map +1 -0
  526. package/dist/tui/screens/pr-list.js +76 -0
  527. package/dist/tui/screens/pr-list.js.map +1 -0
  528. package/dist/tui/screens/publish-confirm.d.ts +3 -0
  529. package/dist/tui/screens/publish-confirm.d.ts.map +1 -0
  530. package/dist/tui/screens/publish-confirm.js +42 -0
  531. package/dist/tui/screens/publish-confirm.js.map +1 -0
  532. package/dist/tui/screens/publishing.d.ts +3 -0
  533. package/dist/tui/screens/publishing.d.ts.map +1 -0
  534. package/dist/tui/screens/publishing.js +50 -0
  535. package/dist/tui/screens/publishing.js.map +1 -0
  536. package/dist/tui/screens/repo-select.d.ts +3 -0
  537. package/dist/tui/screens/repo-select.d.ts.map +1 -0
  538. package/dist/tui/screens/repo-select.js +76 -0
  539. package/dist/tui/screens/repo-select.js.map +1 -0
  540. package/dist/tui/screens/review-running.d.ts +3 -0
  541. package/dist/tui/screens/review-running.d.ts.map +1 -0
  542. package/dist/tui/screens/review-running.js +187 -0
  543. package/dist/tui/screens/review-running.js.map +1 -0
  544. package/dist/tui/screens/session-detail.d.ts +7 -0
  545. package/dist/tui/screens/session-detail.d.ts.map +1 -0
  546. package/dist/tui/screens/session-detail.js +28 -0
  547. package/dist/tui/screens/session-detail.js.map +1 -0
  548. package/dist/tui/screens/session-list.d.ts +7 -0
  549. package/dist/tui/screens/session-list.d.ts.map +1 -0
  550. package/dist/tui/screens/session-list.js +38 -0
  551. package/dist/tui/screens/session-list.js.map +1 -0
  552. package/dist/tui/screens/url-input.d.ts +3 -0
  553. package/dist/tui/screens/url-input.d.ts.map +1 -0
  554. package/dist/tui/screens/url-input.js +111 -0
  555. package/dist/tui/screens/url-input.js.map +1 -0
  556. package/dist/tui/screens/welcome.d.ts +3 -0
  557. package/dist/tui/screens/welcome.d.ts.map +1 -0
  558. package/dist/tui/screens/welcome.js +48 -0
  559. package/dist/tui/screens/welcome.js.map +1 -0
  560. package/dist/tui/screens/workspace-select.d.ts +3 -0
  561. package/dist/tui/screens/workspace-select.d.ts.map +1 -0
  562. package/dist/tui/screens/workspace-select.js +128 -0
  563. package/dist/tui/screens/workspace-select.js.map +1 -0
  564. package/dist/tui/state/router-context.d.ts +14 -0
  565. package/dist/tui/state/router-context.d.ts.map +1 -0
  566. package/dist/tui/state/router-context.js +9 -0
  567. package/dist/tui/state/router-context.js.map +1 -0
  568. package/dist/tui/state/router-reducer.d.ts +23 -0
  569. package/dist/tui/state/router-reducer.d.ts.map +1 -0
  570. package/dist/tui/state/router-reducer.js +21 -0
  571. package/dist/tui/state/router-reducer.js.map +1 -0
  572. package/dist/tui/state/tui-context.d.ts +11 -0
  573. package/dist/tui/state/tui-context.d.ts.map +1 -0
  574. package/dist/tui/state/tui-context.js +9 -0
  575. package/dist/tui/state/tui-context.js.map +1 -0
  576. package/dist/tui/state/tui-reducer.d.ts +212 -0
  577. package/dist/tui/state/tui-reducer.d.ts.map +1 -0
  578. package/dist/tui/state/tui-reducer.js +321 -0
  579. package/dist/tui/state/tui-reducer.js.map +1 -0
  580. package/dist/tui/utils/group-by-file.d.ts +7 -0
  581. package/dist/tui/utils/group-by-file.d.ts.map +1 -0
  582. package/dist/tui/utils/group-by-file.js +18 -0
  583. package/dist/tui/utils/group-by-file.js.map +1 -0
  584. package/dist/tui/utils/group-matches-by-file.d.ts +7 -0
  585. package/dist/tui/utils/group-matches-by-file.d.ts.map +1 -0
  586. package/dist/tui/utils/group-matches-by-file.js +18 -0
  587. package/dist/tui/utils/group-matches-by-file.js.map +1 -0
  588. package/dist/tui/utils/group-repos-by-project.d.ts +9 -0
  589. package/dist/tui/utils/group-repos-by-project.d.ts.map +1 -0
  590. package/dist/tui/utils/group-repos-by-project.js +48 -0
  591. package/dist/tui/utils/group-repos-by-project.js.map +1 -0
  592. package/dist/types/agent.d.ts +46 -0
  593. package/dist/types/agent.d.ts.map +1 -0
  594. package/dist/types/agent.js +2 -0
  595. package/dist/types/agent.js.map +1 -0
  596. package/dist/types/bitbucket.d.ts +90 -0
  597. package/dist/types/bitbucket.d.ts.map +1 -0
  598. package/dist/types/bitbucket.js +2 -0
  599. package/dist/types/bitbucket.js.map +1 -0
  600. package/dist/types/config.d.ts +17 -0
  601. package/dist/types/config.d.ts.map +1 -0
  602. package/dist/types/config.js +2 -0
  603. package/dist/types/config.js.map +1 -0
  604. package/dist/types/diff.d.ts +24 -0
  605. package/dist/types/diff.d.ts.map +1 -0
  606. package/dist/types/diff.js +2 -0
  607. package/dist/types/diff.js.map +1 -0
  608. package/dist/types/engram.d.ts +29 -0
  609. package/dist/types/engram.d.ts.map +1 -0
  610. package/dist/types/engram.js +2 -0
  611. package/dist/types/engram.js.map +1 -0
  612. package/dist/types/false-positive.d.ts +12 -0
  613. package/dist/types/false-positive.d.ts.map +1 -0
  614. package/dist/types/false-positive.js +2 -0
  615. package/dist/types/false-positive.js.map +1 -0
  616. package/dist/types/index.d.ts +14 -0
  617. package/dist/types/index.d.ts.map +1 -0
  618. package/dist/types/index.js +3 -0
  619. package/dist/types/index.js.map +1 -0
  620. package/dist/types/provider.d.ts +31 -0
  621. package/dist/types/provider.d.ts.map +1 -0
  622. package/dist/types/provider.js +2 -0
  623. package/dist/types/provider.js.map +1 -0
  624. package/dist/types/repo-config.d.ts +336 -0
  625. package/dist/types/repo-config.d.ts.map +1 -0
  626. package/dist/types/repo-config.js +62 -0
  627. package/dist/types/repo-config.js.map +1 -0
  628. package/dist/types/review-finding.d.ts +34 -0
  629. package/dist/types/review-finding.d.ts.map +1 -0
  630. package/dist/types/review-finding.js +11 -0
  631. package/dist/types/review-finding.js.map +1 -0
  632. package/dist/types/review-session.d.ts +21 -0
  633. package/dist/types/review-session.d.ts.map +1 -0
  634. package/dist/types/review-session.js +2 -0
  635. package/dist/types/review-session.js.map +1 -0
  636. package/dist/types/skill.d.ts +7 -0
  637. package/dist/types/skill.d.ts.map +1 -0
  638. package/dist/types/skill.js +2 -0
  639. package/dist/types/skill.js.map +1 -0
  640. package/dist/utils/comment-formatter.d.ts +19 -0
  641. package/dist/utils/comment-formatter.d.ts.map +1 -0
  642. package/dist/utils/comment-formatter.js +53 -0
  643. package/dist/utils/comment-formatter.js.map +1 -0
  644. package/dist/utils/cost-estimator.d.ts +19 -0
  645. package/dist/utils/cost-estimator.d.ts.map +1 -0
  646. package/dist/utils/cost-estimator.js +32 -0
  647. package/dist/utils/cost-estimator.js.map +1 -0
  648. package/dist/utils/diff-parser.d.ts +7 -0
  649. package/dist/utils/diff-parser.d.ts.map +1 -0
  650. package/dist/utils/diff-parser.js +175 -0
  651. package/dist/utils/diff-parser.js.map +1 -0
  652. package/dist/utils/file-filter.d.ts +16 -0
  653. package/dist/utils/file-filter.d.ts.map +1 -0
  654. package/dist/utils/file-filter.js +64 -0
  655. package/dist/utils/file-filter.js.map +1 -0
  656. package/dist/utils/hash.d.ts +25 -0
  657. package/dist/utils/hash.d.ts.map +1 -0
  658. package/dist/utils/hash.js +45 -0
  659. package/dist/utils/hash.js.map +1 -0
  660. package/dist/utils/logger.d.ts +17 -0
  661. package/dist/utils/logger.d.ts.map +1 -0
  662. package/dist/utils/logger.js +40 -0
  663. package/dist/utils/logger.js.map +1 -0
  664. package/dist/utils/parse-bitbucket-url.d.ts +12 -0
  665. package/dist/utils/parse-bitbucket-url.d.ts.map +1 -0
  666. package/dist/utils/parse-bitbucket-url.js +41 -0
  667. package/dist/utils/parse-bitbucket-url.js.map +1 -0
  668. package/dist/utils/paths.d.ts +6 -0
  669. package/dist/utils/paths.d.ts.map +1 -0
  670. package/dist/utils/paths.js +27 -0
  671. package/dist/utils/paths.js.map +1 -0
  672. package/dist/utils/summary-generator.d.ts +17 -0
  673. package/dist/utils/summary-generator.d.ts.map +1 -0
  674. package/dist/utils/summary-generator.js +76 -0
  675. package/dist/utils/summary-generator.js.map +1 -0
  676. package/oclif.manifest.json +467 -0
  677. package/package.json +100 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"anthropic-provider.js","sourceRoot":"","sources":["../../../src/ai/providers/anthropic-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { ModelProvider, AnalyzeParams, AnalyzeResult, TokenUsage, CostEstimate } from '../../types/index.js';
2
+ export declare class ClaudeCodeProvider implements ModelProvider {
3
+ private readonly model;
4
+ constructor(params?: {
5
+ model?: string;
6
+ });
7
+ analyze(params: AnalyzeParams): Promise<AnalyzeResult>;
8
+ estimateCost(_usage: TokenUsage): CostEstimate;
9
+ private exec;
10
+ private parseResponse;
11
+ }
12
+ //# sourceMappingURL=claude-code-provider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code-provider.d.ts","sourceRoot":"","sources":["../../../src/ai/providers/claude-code-provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,aAAa,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAoBlH,qBAAa,kBAAmB,YAAW,aAAa;IACtD,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;gBAEnB,MAAM,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE;IAIjC,OAAO,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC;IAkB5D,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,YAAY;IAS9C,OAAO,CAAC,IAAI;IA2CZ,OAAO,CAAC,aAAa;CA0CtB"}
@@ -0,0 +1,103 @@
1
+ import { spawn } from 'node:child_process';
2
+ import { ProviderAuthError, ProviderServerError, ProviderResponseError } from './errors.js';
3
+ const DEFAULT_MODEL = 'sonnet';
4
+ export class ClaudeCodeProvider {
5
+ model;
6
+ constructor(params) {
7
+ this.model = params?.model ?? DEFAULT_MODEL;
8
+ }
9
+ async analyze(params) {
10
+ const model = params.model ?? this.model;
11
+ const schemaStr = JSON.stringify(params.toolSchema);
12
+ const args = [
13
+ '-p',
14
+ '--output-format', 'json',
15
+ '--json-schema', schemaStr,
16
+ '--system-prompt', params.systemPrompt,
17
+ '--tools', '',
18
+ '--no-session-persistence',
19
+ '--model', model,
20
+ ];
21
+ const stdout = await this.exec(args, params.userContent);
22
+ return this.parseResponse(stdout);
23
+ }
24
+ estimateCost(_usage) {
25
+ return {
26
+ inputCost: 0,
27
+ outputCost: 0,
28
+ totalCost: 0,
29
+ model: this.model,
30
+ };
31
+ }
32
+ exec(args, input) {
33
+ return new Promise((resolve, reject) => {
34
+ const proc = spawn('claude', args, { stdio: ['pipe', 'pipe', 'pipe'] });
35
+ let stdout = '';
36
+ let stderr = '';
37
+ proc.stdout.on('data', (chunk) => { stdout += chunk.toString(); });
38
+ proc.stderr.on('data', (chunk) => { stderr += chunk.toString(); });
39
+ proc.on('error', (error) => {
40
+ if (error.code === 'ENOENT') {
41
+ reject(new ProviderAuthError('claude CLI not found. Install Claude Code: https://docs.anthropic.com/en/docs/claude-code'));
42
+ return;
43
+ }
44
+ reject(new ProviderServerError(`Claude Code CLI error: ${error.message}`, 1));
45
+ });
46
+ proc.on('close', (code) => {
47
+ if (code !== 0) {
48
+ if (/auth|login/i.test(stderr)) {
49
+ reject(new ProviderAuthError(`Claude Code authentication required. Run: claude login\n${stderr}`));
50
+ return;
51
+ }
52
+ reject(new ProviderServerError(`Claude Code CLI exited with code ${code}: ${stderr || 'unknown error'}`, code ?? 1));
53
+ return;
54
+ }
55
+ resolve(stdout);
56
+ });
57
+ // Pipe user content via stdin
58
+ proc.stdin.write(input);
59
+ proc.stdin.end();
60
+ });
61
+ }
62
+ parseResponse(stdout) {
63
+ let response;
64
+ try {
65
+ response = JSON.parse(stdout);
66
+ }
67
+ catch {
68
+ throw new ProviderResponseError('Failed to parse Claude Code JSON response', stdout);
69
+ }
70
+ if (response.is_error || response.subtype === 'error') {
71
+ if (/not logged in|login/i.test(response.result)) {
72
+ throw new ProviderAuthError(`Claude Code authentication required. Run: claude login`);
73
+ }
74
+ throw new ProviderResponseError(`Claude Code returned error: ${response.result}`, stdout);
75
+ }
76
+ // Prefer structured_output (from --json-schema), fall back to parsing result
77
+ let findings;
78
+ if (response.structured_output?.findings !== undefined) {
79
+ findings = response.structured_output.findings;
80
+ }
81
+ else {
82
+ try {
83
+ const parsed = JSON.parse(response.result);
84
+ findings = parsed.findings ?? [];
85
+ }
86
+ catch {
87
+ throw new ProviderResponseError('Failed to parse findings from Claude Code response', response.result);
88
+ }
89
+ }
90
+ const usage = {
91
+ inputTokens: response.usage.input_tokens,
92
+ outputTokens: response.usage.output_tokens,
93
+ };
94
+ if (response.usage.cache_read_input_tokens !== undefined) {
95
+ usage.cacheReadTokens = response.usage.cache_read_input_tokens;
96
+ }
97
+ if (response.usage.cache_creation_input_tokens !== undefined) {
98
+ usage.cacheWriteTokens = response.usage.cache_creation_input_tokens;
99
+ }
100
+ return { findings, usage };
101
+ }
102
+ }
103
+ //# sourceMappingURL=claude-code-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude-code-provider.js","sourceRoot":"","sources":["../../../src/ai/providers/claude-code-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Provider error hierarchy.
3
+ * All errors extend ProviderError which extends Error.
4
+ */
5
+ export declare class ProviderError extends Error {
6
+ constructor(message: string);
7
+ }
8
+ export declare class ProviderAuthError extends ProviderError {
9
+ constructor(message: string);
10
+ }
11
+ export declare class ProviderRateLimitError extends ProviderError {
12
+ constructor(message: string);
13
+ }
14
+ export declare class ProviderServerError extends ProviderError {
15
+ readonly statusCode: number;
16
+ constructor(message: string, statusCode: number);
17
+ }
18
+ export declare class ProviderResponseError extends ProviderError {
19
+ readonly rawContent: string;
20
+ constructor(message: string, rawContent: string);
21
+ }
22
+ //# sourceMappingURL=errors.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../src/ai/providers/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,qBAAa,aAAc,SAAQ,KAAK;gBAC1B,OAAO,EAAE,MAAM;CAK5B;AAED,qBAAa,iBAAkB,SAAQ,aAAa;gBACtC,OAAO,EAAE,MAAM;CAK5B;AAED,qBAAa,sBAAuB,SAAQ,aAAa;gBAC3C,OAAO,EAAE,MAAM;CAK5B;AAED,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAMhD;AAED,qBAAa,qBAAsB,SAAQ,aAAa;IACtD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;gBAEhB,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM;CAMhD"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Provider error hierarchy.
3
+ * All errors extend ProviderError which extends Error.
4
+ */
5
+ export class ProviderError extends Error {
6
+ constructor(message) {
7
+ super(message);
8
+ this.name = 'ProviderError';
9
+ Object.setPrototypeOf(this, new.target.prototype);
10
+ }
11
+ }
12
+ export class ProviderAuthError extends ProviderError {
13
+ constructor(message) {
14
+ super(message);
15
+ this.name = 'ProviderAuthError';
16
+ Object.setPrototypeOf(this, new.target.prototype);
17
+ }
18
+ }
19
+ export class ProviderRateLimitError extends ProviderError {
20
+ constructor(message) {
21
+ super(message);
22
+ this.name = 'ProviderRateLimitError';
23
+ Object.setPrototypeOf(this, new.target.prototype);
24
+ }
25
+ }
26
+ export class ProviderServerError extends ProviderError {
27
+ statusCode;
28
+ constructor(message, statusCode) {
29
+ super(message);
30
+ this.name = 'ProviderServerError';
31
+ this.statusCode = statusCode;
32
+ Object.setPrototypeOf(this, new.target.prototype);
33
+ }
34
+ }
35
+ export class ProviderResponseError extends ProviderError {
36
+ rawContent;
37
+ constructor(message, rawContent) {
38
+ super(message);
39
+ this.name = 'ProviderResponseError';
40
+ this.rawContent = rawContent;
41
+ Object.setPrototypeOf(this, new.target.prototype);
42
+ }
43
+ }
44
+ //# sourceMappingURL=errors.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../src/ai/providers/errors.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,OAAO,aAAc,SAAQ,KAAK;IACtC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,OAAO,iBAAkB,SAAQ,aAAa;IAClD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC;QAChC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,OAAO,sBAAuB,SAAQ,aAAa;IACvD,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,aAAa;IAC3C,UAAU,CAAS;IAE5B,YAAY,OAAe,EAAE,UAAkB;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;QAClC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,aAAa;IAC7C,UAAU,CAAS;IAE5B,YAAY,OAAe,EAAE,UAAkB;QAC7C,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;QACpC,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,CAAC;CACF"}
@@ -0,0 +1,21 @@
1
+ import type { Skill } from '../../types/skill.js';
2
+ /**
3
+ * Registry that maps skills to agents.
4
+ * A skill is "universal" if its agentIds array is empty — it applies to all agents.
5
+ * A targeted skill applies only to the agents listed in its agentIds array.
6
+ */
7
+ export declare class SkillRegistry {
8
+ private readonly skills;
9
+ constructor(skills?: Skill[]);
10
+ /**
11
+ * Returns skills that apply to the given agent:
12
+ * - skills where agentIds includes agentId (targeted)
13
+ * - skills where agentIds is empty (universal)
14
+ */
15
+ getSkillsForAgent(agentId: string): Skill[];
16
+ /**
17
+ * Returns a defensive copy of all registered skills.
18
+ */
19
+ getAllSkills(): Skill[];
20
+ }
21
+ //# sourceMappingURL=skill-registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-registry.d.ts","sourceRoot":"","sources":["../../../src/ai/skills/skill-registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD;;;;GAIG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAU;gBAErB,MAAM,GAAE,KAAK,EAAO;IAKhC;;;;OAIG;IACH,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,EAAE;IAM3C;;OAEG;IACH,YAAY,IAAI,KAAK,EAAE;CAGxB"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * Registry that maps skills to agents.
3
+ * A skill is "universal" if its agentIds array is empty — it applies to all agents.
4
+ * A targeted skill applies only to the agents listed in its agentIds array.
5
+ */
6
+ export class SkillRegistry {
7
+ skills;
8
+ constructor(skills = []) {
9
+ // Defensive copy so external mutations don't affect the registry
10
+ this.skills = [...skills];
11
+ }
12
+ /**
13
+ * Returns skills that apply to the given agent:
14
+ * - skills where agentIds includes agentId (targeted)
15
+ * - skills where agentIds is empty (universal)
16
+ */
17
+ getSkillsForAgent(agentId) {
18
+ return this.skills.filter((skill) => skill.agentIds.length === 0 || skill.agentIds.includes(agentId));
19
+ }
20
+ /**
21
+ * Returns a defensive copy of all registered skills.
22
+ */
23
+ getAllSkills() {
24
+ return [...this.skills];
25
+ }
26
+ }
27
+ //# sourceMappingURL=skill-registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-registry.js","sourceRoot":"","sources":["../../../src/ai/skills/skill-registry.ts"],"names":[],"mappings":"AAEA;;;;GAIG;AACH,MAAM,OAAO,aAAa;IACP,MAAM,CAAU;IAEjC,YAAY,SAAkB,EAAE;QAC9B,iEAAiE;QACjE,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;IAC5B,CAAC;IAED;;;;OAIG;IACH,iBAAiB,CAAC,OAAe;QAC/B,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,CACvB,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAC3E,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;CACF"}
@@ -0,0 +1,15 @@
1
+ import type { DiffFile } from '../../types/diff.js';
2
+ import type { ExtractionResult } from './types.js';
3
+ /**
4
+ * Extract user-facing text strings from diff addition lines.
5
+ *
6
+ * Processing flow:
7
+ * 1. For each DiffFile, check if its extension is in SUPPORTED_EXTENSIONS
8
+ * 2. For each addition line in matching files, apply all eligible patterns
9
+ * 3. Collect ExtractedText results, deduplicating by (filePath + lineNumber + text)
10
+ * 4. Return ExtractionResult with counts
11
+ *
12
+ * This is a pure synchronous function — no AI calls, no async.
13
+ */
14
+ export declare function extractUserFacingText(files: readonly DiffFile[]): ExtractionResult;
15
+ //# sourceMappingURL=extractor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractor.d.ts","sourceRoot":"","sources":["../../../src/ai/text-extractor/extractor.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,KAAK,EAAiB,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGlE;;;;;;;;;;GAUG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,SAAS,QAAQ,EAAE,GAAG,gBAAgB,CAwDlF"}
@@ -0,0 +1,63 @@
1
+ import path from 'node:path';
2
+ import { EXTRACTION_PATTERNS, SUPPORTED_EXTENSIONS } from './patterns.js';
3
+ /**
4
+ * Extract user-facing text strings from diff addition lines.
5
+ *
6
+ * Processing flow:
7
+ * 1. For each DiffFile, check if its extension is in SUPPORTED_EXTENSIONS
8
+ * 2. For each addition line in matching files, apply all eligible patterns
9
+ * 3. Collect ExtractedText results, deduplicating by (filePath + lineNumber + text)
10
+ * 4. Return ExtractionResult with counts
11
+ *
12
+ * This is a pure synchronous function — no AI calls, no async.
13
+ */
14
+ export function extractUserFacingText(files) {
15
+ const texts = [];
16
+ const seen = new Set();
17
+ let fileCount = 0;
18
+ let skippedFiles = 0;
19
+ for (const file of files) {
20
+ const ext = path.extname(file.newPath).toLowerCase();
21
+ // Find patterns that apply to this file type
22
+ const applicablePatterns = EXTRACTION_PATTERNS.filter((p) => p.fileTypes.has(ext));
23
+ if (!SUPPORTED_EXTENSIONS.has(ext) || applicablePatterns.length === 0) {
24
+ skippedFiles++;
25
+ continue;
26
+ }
27
+ fileCount++;
28
+ for (const hunk of file.hunks) {
29
+ for (const line of hunk.lines) {
30
+ // Only process addition lines with valid line numbers
31
+ if (line.type !== 'addition' || line.lineNumber === null)
32
+ continue;
33
+ const lineNumber = line.lineNumber;
34
+ for (const pattern of applicablePatterns) {
35
+ if (!pattern.fileTypes.has(ext))
36
+ continue;
37
+ // Use matchAll to capture multiple matches on a single line.
38
+ // Patterns do NOT have the 'g' flag — we add it here for matchAll.
39
+ const regexSource = pattern.regex.source;
40
+ const baseFlags = pattern.regex.flags.replace('g', '');
41
+ const globalRegex = new RegExp(regexSource, baseFlags + 'g');
42
+ for (const match of line.content.matchAll(globalRegex)) {
43
+ const extracted = pattern.extract(match);
44
+ if (extracted === null)
45
+ continue;
46
+ const dedupeKey = `${file.newPath}::${lineNumber}::${extracted}`;
47
+ if (seen.has(dedupeKey))
48
+ continue;
49
+ seen.add(dedupeKey);
50
+ texts.push({
51
+ filePath: file.newPath,
52
+ lineNumber,
53
+ text: extracted,
54
+ patternType: pattern.id,
55
+ });
56
+ }
57
+ }
58
+ }
59
+ }
60
+ }
61
+ return { texts, fileCount, skippedFiles };
62
+ }
63
+ //# sourceMappingURL=extractor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"extractor.js","sourceRoot":"","sources":["../../../src/ai/text-extractor/extractor.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,WAAW,CAAC;AAG7B,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAC;AAE1E;;;;;;;;;;GAUG;AACH,MAAM,UAAU,qBAAqB,CAAC,KAA0B;IAC9D,MAAM,KAAK,GAAoB,EAAE,CAAC;IAClC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;QAErD,6CAA6C;QAC7C,MAAM,kBAAkB,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;QAEnF,IAAI,CAAC,oBAAoB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,kBAAkB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACtE,YAAY,EAAE,CAAC;YACf,SAAS;QACX,CAAC;QAED,SAAS,EAAE,CAAC;QAEZ,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YAC9B,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAC9B,sDAAsD;gBACtD,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,CAAC,UAAU,KAAK,IAAI;oBAAE,SAAS;gBAEnE,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;gBAEnC,KAAK,MAAM,OAAO,IAAI,kBAAkB,EAAE,CAAC;oBACzC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC;wBAAE,SAAS;oBAE1C,6DAA6D;oBAC7D,mEAAmE;oBACnE,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC;oBACzC,MAAM,SAAS,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBACvD,MAAM,WAAW,GAAG,IAAI,MAAM,CAAC,WAAW,EAAE,SAAS,GAAG,GAAG,CAAC,CAAC;oBAE7D,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,EAAE,CAAC;wBACvD,MAAM,SAAS,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;wBACzC,IAAI,SAAS,KAAK,IAAI;4BAAE,SAAS;wBAEjC,MAAM,SAAS,GAAG,GAAG,IAAI,CAAC,OAAO,KAAK,UAAU,KAAK,SAAS,EAAE,CAAC;wBACjE,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;4BAAE,SAAS;wBAClC,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;wBAEpB,KAAK,CAAC,IAAI,CAAC;4BACT,QAAQ,EAAE,IAAI,CAAC,OAAO;4BACtB,UAAU;4BACV,IAAI,EAAE,SAAS;4BACf,WAAW,EAAE,OAAO,CAAC,EAAE;yBACxB,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,CAAC;AAC5C,CAAC"}
@@ -0,0 +1,4 @@
1
+ export { extractUserFacingText } from './extractor.js';
2
+ export { EXTRACTION_PATTERNS, SUPPORTED_EXTENSIONS, isLikelyUserText } from './patterns.js';
3
+ export type { ExtractedText, ExtractionResult, ExtractionPattern, PatternType } from './types.js';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/ai/text-extractor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAC5F,YAAY,EAAE,aAAa,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
@@ -0,0 +1,3 @@
1
+ export { extractUserFacingText } from './extractor.js';
2
+ export { EXTRACTION_PATTERNS, SUPPORTED_EXTENSIONS, isLikelyUserText } from './patterns.js';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/ai/text-extractor/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC"}
@@ -0,0 +1,21 @@
1
+ import type { ExtractionPattern } from './types.js';
2
+ /**
3
+ * File extensions supported by at least one extraction pattern.
4
+ * Used by the extractor to skip files that cannot yield any results.
5
+ */
6
+ export declare const SUPPORTED_EXTENSIONS: Set<string>;
7
+ /**
8
+ * Heuristic: returns true if the string looks like user-facing text
9
+ * rather than a code artifact, URL, or file path.
10
+ */
11
+ export declare function isLikelyUserText(text: string): boolean;
12
+ /**
13
+ * All extraction patterns in priority order.
14
+ * Patterns with overlapping matches are deduplicated by the extractor.
15
+ *
16
+ * NOTE: Regex must NOT have the global ('g') flag here.
17
+ * The extractor adds 'g' dynamically when calling matchAll().
18
+ * Tests use String.match() which requires non-global regex to return capture groups.
19
+ */
20
+ export declare const EXTRACTION_PATTERNS: readonly ExtractionPattern[];
21
+ //# sourceMappingURL=patterns.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patterns.d.ts","sourceRoot":"","sources":["../../../src/ai/text-extractor/patterns.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAEpD;;;GAGG;AACH,eAAO,MAAM,oBAAoB,aAE/B,CAAC;AAEH;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAYtD;AAkBD;;;;;;;GAOG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,iBAAiB,EAsG3D,CAAC"}
@@ -0,0 +1,169 @@
1
+ /**
2
+ * File extensions supported by at least one extraction pattern.
3
+ * Used by the extractor to skip files that cannot yield any results.
4
+ */
5
+ export const SUPPORTED_EXTENSIONS = new Set([
6
+ '.tsx', '.jsx', '.ts', '.js', '.vue', '.html', '.svelte', '.json',
7
+ ]);
8
+ /**
9
+ * Heuristic: returns true if the string looks like user-facing text
10
+ * rather than a code artifact, URL, or file path.
11
+ */
12
+ export function isLikelyUserText(text) {
13
+ const trimmed = text.trim();
14
+ if (trimmed.length < 2)
15
+ return false;
16
+ if (/=>/.test(trimmed))
17
+ return false;
18
+ if (/===/.test(trimmed))
19
+ return false;
20
+ if (/!==/.test(trimmed))
21
+ return false;
22
+ if (/^https?:\/\//.test(trimmed))
23
+ return false;
24
+ if (/^[./\\]/.test(trimmed))
25
+ return false;
26
+ if (/^\$\{/.test(trimmed))
27
+ return false;
28
+ // No alpha characters at all (neither ASCII nor accented Latin)
29
+ if (/^[^a-zA-ZÀ-ÿ]+$/.test(trimmed))
30
+ return false;
31
+ return true;
32
+ }
33
+ // File type sets (reused across patterns)
34
+ const JSX_TYPES = new Set(['.tsx', '.jsx']);
35
+ const JSX_WEB_TYPES = new Set(['.tsx', '.jsx', '.vue', '.html', '.svelte']);
36
+ const TS_JS_TYPES = new Set(['.ts', '.tsx', '.js', '.jsx']);
37
+ const TS_JS_VUE_SVELTE = new Set(['.ts', '.tsx', '.js', '.jsx', '.vue', '.svelte']);
38
+ const JSON_TYPES = new Set(['.json']);
39
+ /**
40
+ * Supported JSX/HTML text container tag names.
41
+ */
42
+ const JSX_TEXT_TAGS = [
43
+ 'Text', 'p', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6',
44
+ 'span', 'label', 'button', 'li', 'td', 'th',
45
+ 'caption', 'legend', 'figcaption', 'dt', 'dd', 'summary',
46
+ ].join('|');
47
+ /**
48
+ * All extraction patterns in priority order.
49
+ * Patterns with overlapping matches are deduplicated by the extractor.
50
+ *
51
+ * NOTE: Regex must NOT have the global ('g') flag here.
52
+ * The extractor adds 'g' dynamically when calling matchAll().
53
+ * Tests use String.match() which requires non-global regex to return capture groups.
54
+ */
55
+ export const EXTRACTION_PATTERNS = [
56
+ // ── Pattern 1: jsx-literal ──────────────────────────────────────────────────
57
+ // Matches visible text between JSX/HTML tags on a single line.
58
+ // e.g. <Text>Login to Bitbucket</Text> → "Login to Bitbucket"
59
+ {
60
+ id: 'jsx-literal',
61
+ regex: new RegExp(`>([^<>{}&]+)<\\/(?:${JSX_TEXT_TAGS})`),
62
+ extract(match) {
63
+ const text = match[1];
64
+ if (text === undefined)
65
+ return null;
66
+ const trimmed = text.trim();
67
+ // False positive guard: dynamic JSX expression
68
+ if (trimmed.includes('{'))
69
+ return null;
70
+ if (!isLikelyUserText(trimmed))
71
+ return null;
72
+ return trimmed;
73
+ },
74
+ fileTypes: JSX_TYPES,
75
+ },
76
+ // ── Pattern 2: string-prop ──────────────────────────────────────────────────
77
+ // Matches UI-facing string prop values in JSX/HTML attributes.
78
+ // e.g. placeholder="your email" → "your email"
79
+ {
80
+ id: 'string-prop',
81
+ regex: /(?:label|placeholder|title|alt|aria-label|message|description|tooltip|hint|helperText|errorText)\s*[=:]\s*["']([^"']+)["']/i,
82
+ extract(match) {
83
+ const text = match[1];
84
+ if (text === undefined)
85
+ return null;
86
+ const trimmed = text.trim();
87
+ if (trimmed.includes('{'))
88
+ return null;
89
+ if (!isLikelyUserText(trimmed))
90
+ return null;
91
+ return trimmed;
92
+ },
93
+ fileTypes: JSX_WEB_TYPES,
94
+ },
95
+ // ── Pattern 3: error-message ────────────────────────────────────────────────
96
+ // Matches user-visible error strings passed to error functions.
97
+ // e.g. setError('Username is required') → "Username is required"
98
+ {
99
+ id: 'error-message',
100
+ regex: /(?:setError|new\s+Error|this\.error)\s*\(\s*['"]([^'"]+)['"]\s*\)/,
101
+ extract(match) {
102
+ const text = match[1];
103
+ if (text === undefined)
104
+ return null;
105
+ const trimmed = text.trim();
106
+ if (!isLikelyUserText(trimmed))
107
+ return null;
108
+ return trimmed;
109
+ },
110
+ fileTypes: TS_JS_TYPES,
111
+ },
112
+ // ── Pattern 4: alert-confirm ────────────────────────────────────────────────
113
+ // Matches strings passed to browser dialog functions.
114
+ // e.g. alert('Are you shure?') → "Are you shure?"
115
+ {
116
+ id: 'alert-confirm',
117
+ regex: /(?:window\.)?(?:alert|confirm|prompt)\s*\(\s*['"]([^'"]+)['"]\s*\)/,
118
+ extract(match) {
119
+ const text = match[1];
120
+ if (text === undefined)
121
+ return null;
122
+ const trimmed = text.trim();
123
+ if (!isLikelyUserText(trimmed))
124
+ return null;
125
+ return trimmed;
126
+ },
127
+ fileTypes: TS_JS_VUE_SVELTE,
128
+ },
129
+ // ── Pattern 5: status-label ─────────────────────────────────────────────────
130
+ // Matches label: 'value' patterns in object literals.
131
+ // e.g. { key: 'Tab', label: 'switch field' } → "switch field"
132
+ {
133
+ id: 'status-label',
134
+ regex: /\blabel\s*:\s*['"]([^'"]+)['"]/,
135
+ extract(match) {
136
+ const text = match[1];
137
+ if (text === undefined)
138
+ return null;
139
+ const trimmed = text.trim();
140
+ if (!isLikelyUserText(trimmed))
141
+ return null;
142
+ return trimmed;
143
+ },
144
+ fileTypes: TS_JS_TYPES,
145
+ },
146
+ // ── Pattern 6: i18n-value ───────────────────────────────────────────────────
147
+ // Matches string values in JSON i18n/locale files.
148
+ // e.g. "greeting": "Bienvenido al sistema" → "Bienvenido al sistema"
149
+ {
150
+ id: 'i18n-value',
151
+ regex: /^\s*"[^"]+"\s*:\s*"([^"]+)"\s*,?\s*$/,
152
+ extract(match) {
153
+ const text = match[1];
154
+ if (text === undefined)
155
+ return null;
156
+ const trimmed = text.trim();
157
+ if (!isLikelyUserText(trimmed))
158
+ return null;
159
+ // Extra guard: skip URLs and file paths
160
+ if (/^https?:\/\//.test(trimmed))
161
+ return null;
162
+ if (/^[./\\]/.test(trimmed))
163
+ return null;
164
+ return trimmed;
165
+ },
166
+ fileTypes: JSON_TYPES,
167
+ },
168
+ ];
169
+ //# sourceMappingURL=patterns.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"patterns.js","sourceRoot":"","sources":["../../../src/ai/text-extractor/patterns.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,47 @@
1
+ /**
2
+ * The kind of pattern that matched a user-facing string.
3
+ * Each value maps 1:1 to an ExtractionPattern in patterns.ts.
4
+ */
5
+ export type PatternType = 'jsx-literal' | 'string-prop' | 'error-message' | 'alert-confirm' | 'status-label' | 'i18n-value';
6
+ /**
7
+ * A single user-facing text string extracted from a diff addition line.
8
+ */
9
+ export interface ExtractedText {
10
+ /** Resolved file path (DiffFile.newPath) */
11
+ readonly filePath: string;
12
+ /** Line number from the diff (DiffLine.lineNumber) — always from an addition line */
13
+ readonly lineNumber: number;
14
+ /** The extracted user-visible string, trimmed */
15
+ readonly text: string;
16
+ /** Which pattern matched this text */
17
+ readonly patternType: PatternType;
18
+ }
19
+ /**
20
+ * A named regex pattern that extracts user-facing text from source lines.
21
+ */
22
+ export interface ExtractionPattern {
23
+ /** Unique identifier — must match a PatternType value */
24
+ readonly id: PatternType;
25
+ /** Regex applied per-line. Must define at least one capture group for the text. */
26
+ readonly regex: RegExp;
27
+ /**
28
+ * Extract the user-facing string from a regex match.
29
+ * Returns the string if valid, or null to signal a false positive (skip).
30
+ * Receives the full RegExpMatchArray so it can inspect multiple groups.
31
+ */
32
+ readonly extract: (match: RegExpMatchArray) => string | null;
33
+ /** File extensions this pattern applies to (lowercase, with leading dot) */
34
+ readonly fileTypes: ReadonlySet<string>;
35
+ }
36
+ /**
37
+ * Result of running text extraction over a set of DiffFiles.
38
+ */
39
+ export interface ExtractionResult {
40
+ /** Extracted user-facing texts, deduplicated */
41
+ readonly texts: readonly ExtractedText[];
42
+ /** Number of files that were processed (had matching extensions) */
43
+ readonly fileCount: number;
44
+ /** Number of files skipped (extension not in any pattern's fileTypes) */
45
+ readonly skippedFiles: number;
46
+ }
47
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/ai/text-extractor/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,WAAW,GACnB,aAAa,GACb,aAAa,GACb,eAAe,GACf,eAAe,GACf,cAAc,GACd,YAAY,CAAC;AAEjB;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,4CAA4C;IAC5C,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,qFAAqF;IACrF,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,iDAAiD;IACjD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,sCAAsC;IACtC,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC;CACnC;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,yDAAyD;IACzD,QAAQ,CAAC,EAAE,EAAE,WAAW,CAAC;IACzB,mFAAmF;IACnF,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB;;;;OAIG;IACH,QAAQ,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,gBAAgB,KAAK,MAAM,GAAG,IAAI,CAAC;IAC7D,4EAA4E;IAC5E,QAAQ,CAAC,SAAS,EAAE,WAAW,CAAC,MAAM,CAAC,CAAC;CACzC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gDAAgD;IAChD,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,oEAAoE;IACpE,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,yEAAyE;IACzE,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;CAC/B"}