circle-ir-ai 1.1.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 (420) hide show
  1. package/CHANGELOG.md +105 -0
  2. package/LICENSE +15 -0
  3. package/README.md +336 -0
  4. package/dist/action-queue/aggregator.d.ts +40 -0
  5. package/dist/action-queue/aggregator.d.ts.map +1 -0
  6. package/dist/action-queue/aggregator.js +375 -0
  7. package/dist/action-queue/aggregator.js.map +1 -0
  8. package/dist/action-queue/index.d.ts +14 -0
  9. package/dist/action-queue/index.d.ts.map +1 -0
  10. package/dist/action-queue/index.js +17 -0
  11. package/dist/action-queue/index.js.map +1 -0
  12. package/dist/action-queue/queue.d.ts +74 -0
  13. package/dist/action-queue/queue.d.ts.map +1 -0
  14. package/dist/action-queue/queue.js +433 -0
  15. package/dist/action-queue/queue.js.map +1 -0
  16. package/dist/action-queue/types.d.ts +162 -0
  17. package/dist/action-queue/types.d.ts.map +1 -0
  18. package/dist/action-queue/types.js +44 -0
  19. package/dist/action-queue/types.js.map +1 -0
  20. package/dist/agents/enrichment-agent.d.ts +16 -0
  21. package/dist/agents/enrichment-agent.d.ts.map +1 -0
  22. package/dist/agents/enrichment-agent.js +102 -0
  23. package/dist/agents/enrichment-agent.js.map +1 -0
  24. package/dist/agents/index.d.ts +12 -0
  25. package/dist/agents/index.d.ts.map +1 -0
  26. package/dist/agents/index.js +15 -0
  27. package/dist/agents/index.js.map +1 -0
  28. package/dist/agents/mastra/agents.d.ts +373 -0
  29. package/dist/agents/mastra/agents.d.ts.map +1 -0
  30. package/dist/agents/mastra/agents.js +347 -0
  31. package/dist/agents/mastra/agents.js.map +1 -0
  32. package/dist/agents/mastra/index.d.ts +12 -0
  33. package/dist/agents/mastra/index.d.ts.map +1 -0
  34. package/dist/agents/mastra/index.js +17 -0
  35. package/dist/agents/mastra/index.js.map +1 -0
  36. package/dist/agents/mastra/instance.d.ts +383 -0
  37. package/dist/agents/mastra/instance.d.ts.map +1 -0
  38. package/dist/agents/mastra/instance.js +37 -0
  39. package/dist/agents/mastra/instance.js.map +1 -0
  40. package/dist/agents/mastra/steps.d.ts +300 -0
  41. package/dist/agents/mastra/steps.d.ts.map +1 -0
  42. package/dist/agents/mastra/steps.js +468 -0
  43. package/dist/agents/mastra/steps.js.map +1 -0
  44. package/dist/agents/mastra/swarm.d.ts +106 -0
  45. package/dist/agents/mastra/swarm.d.ts.map +1 -0
  46. package/dist/agents/mastra/swarm.js +501 -0
  47. package/dist/agents/mastra/swarm.js.map +1 -0
  48. package/dist/agents/mastra/workflow.d.ts +81 -0
  49. package/dist/agents/mastra/workflow.d.ts.map +1 -0
  50. package/dist/agents/mastra/workflow.js +460 -0
  51. package/dist/agents/mastra/workflow.js.map +1 -0
  52. package/dist/agents/multi/agents/security.d.ts +29 -0
  53. package/dist/agents/multi/agents/security.d.ts.map +1 -0
  54. package/dist/agents/multi/agents/security.js +830 -0
  55. package/dist/agents/multi/agents/security.js.map +1 -0
  56. package/dist/agents/multi/extractor.d.ts +21 -0
  57. package/dist/agents/multi/extractor.d.ts.map +1 -0
  58. package/dist/agents/multi/extractor.js +483 -0
  59. package/dist/agents/multi/extractor.js.map +1 -0
  60. package/dist/agents/multi/index.d.ts +32 -0
  61. package/dist/agents/multi/index.d.ts.map +1 -0
  62. package/dist/agents/multi/index.js +34 -0
  63. package/dist/agents/multi/index.js.map +1 -0
  64. package/dist/agents/multi/runner.d.ts +79 -0
  65. package/dist/agents/multi/runner.d.ts.map +1 -0
  66. package/dist/agents/multi/runner.js +323 -0
  67. package/dist/agents/multi/runner.js.map +1 -0
  68. package/dist/agents/security-agent.d.ts +16 -0
  69. package/dist/agents/security-agent.d.ts.map +1 -0
  70. package/dist/agents/security-agent.js +299 -0
  71. package/dist/agents/security-agent.js.map +1 -0
  72. package/dist/agents/types.d.ts +373 -0
  73. package/dist/agents/types.d.ts.map +1 -0
  74. package/dist/agents/types.js +14 -0
  75. package/dist/agents/types.js.map +1 -0
  76. package/dist/agents/verification-agent.d.ts +23 -0
  77. package/dist/agents/verification-agent.d.ts.map +1 -0
  78. package/dist/agents/verification-agent.js +217 -0
  79. package/dist/agents/verification-agent.js.map +1 -0
  80. package/dist/agents/workflow.d.ts +30 -0
  81. package/dist/agents/workflow.d.ts.map +1 -0
  82. package/dist/agents/workflow.js +79 -0
  83. package/dist/agents/workflow.js.map +1 -0
  84. package/dist/analysis/enriched.d.ts +16 -0
  85. package/dist/analysis/enriched.d.ts.map +1 -0
  86. package/dist/analysis/enriched.js +297 -0
  87. package/dist/analysis/enriched.js.map +1 -0
  88. package/dist/analysis/llm-correlated-predicates.d.ts +80 -0
  89. package/dist/analysis/llm-correlated-predicates.d.ts.map +1 -0
  90. package/dist/analysis/llm-correlated-predicates.js +255 -0
  91. package/dist/analysis/llm-correlated-predicates.js.map +1 -0
  92. package/dist/analysis/llm-cross-file-taint.d.ts +86 -0
  93. package/dist/analysis/llm-cross-file-taint.d.ts.map +1 -0
  94. package/dist/analysis/llm-cross-file-taint.js +264 -0
  95. package/dist/analysis/llm-cross-file-taint.js.map +1 -0
  96. package/dist/analysis/pattern-discovery.d.ts +79 -0
  97. package/dist/analysis/pattern-discovery.d.ts.map +1 -0
  98. package/dist/analysis/pattern-discovery.js +447 -0
  99. package/dist/analysis/pattern-discovery.js.map +1 -0
  100. package/dist/cache/file-cache.d.ts +89 -0
  101. package/dist/cache/file-cache.d.ts.map +1 -0
  102. package/dist/cache/file-cache.js +208 -0
  103. package/dist/cache/file-cache.js.map +1 -0
  104. package/dist/cache/index.d.ts +6 -0
  105. package/dist/cache/index.d.ts.map +1 -0
  106. package/dist/cache/index.js +5 -0
  107. package/dist/cache/index.js.map +1 -0
  108. package/dist/cli/args.d.ts +52 -0
  109. package/dist/cli/args.d.ts.map +1 -0
  110. package/dist/cli/args.js +422 -0
  111. package/dist/cli/args.js.map +1 -0
  112. package/dist/cli/colors.d.ts +31 -0
  113. package/dist/cli/colors.d.ts.map +1 -0
  114. package/dist/cli/colors.js +80 -0
  115. package/dist/cli/colors.js.map +1 -0
  116. package/dist/cli/commands/analyze-skill.d.ts +33 -0
  117. package/dist/cli/commands/analyze-skill.d.ts.map +1 -0
  118. package/dist/cli/commands/analyze-skill.js +217 -0
  119. package/dist/cli/commands/analyze-skill.js.map +1 -0
  120. package/dist/cli/commands/analyze.d.ts +18 -0
  121. package/dist/cli/commands/analyze.d.ts.map +1 -0
  122. package/dist/cli/commands/analyze.js +30 -0
  123. package/dist/cli/commands/analyze.js.map +1 -0
  124. package/dist/cli/commands/benchmark-runner.d.ts +42 -0
  125. package/dist/cli/commands/benchmark-runner.d.ts.map +1 -0
  126. package/dist/cli/commands/benchmark-runner.js +18 -0
  127. package/dist/cli/commands/benchmark-runner.js.map +1 -0
  128. package/dist/cli/commands/benchmark.d.ts +11 -0
  129. package/dist/cli/commands/benchmark.d.ts.map +1 -0
  130. package/dist/cli/commands/benchmark.js +90 -0
  131. package/dist/cli/commands/benchmark.js.map +1 -0
  132. package/dist/cli/commands/dead-code.d.ts +11 -0
  133. package/dist/cli/commands/dead-code.d.ts.map +1 -0
  134. package/dist/cli/commands/dead-code.js +65 -0
  135. package/dist/cli/commands/dead-code.js.map +1 -0
  136. package/dist/cli/commands/generate-spec.d.ts +11 -0
  137. package/dist/cli/commands/generate-spec.d.ts.map +1 -0
  138. package/dist/cli/commands/generate-spec.js +67 -0
  139. package/dist/cli/commands/generate-spec.js.map +1 -0
  140. package/dist/cli/commands/health.d.ts +11 -0
  141. package/dist/cli/commands/health.d.ts.map +1 -0
  142. package/dist/cli/commands/health.js +67 -0
  143. package/dist/cli/commands/health.js.map +1 -0
  144. package/dist/cli/commands/project.d.ts +21 -0
  145. package/dist/cli/commands/project.d.ts.map +1 -0
  146. package/dist/cli/commands/project.js +92 -0
  147. package/dist/cli/commands/project.js.map +1 -0
  148. package/dist/cli/commands/scan.d.ts +11 -0
  149. package/dist/cli/commands/scan.d.ts.map +1 -0
  150. package/dist/cli/commands/scan.js +68 -0
  151. package/dist/cli/commands/scan.js.map +1 -0
  152. package/dist/cli/commands/secrets.d.ts +11 -0
  153. package/dist/cli/commands/secrets.d.ts.map +1 -0
  154. package/dist/cli/commands/secrets.js +71 -0
  155. package/dist/cli/commands/secrets.js.map +1 -0
  156. package/dist/cli/commands/swarm.d.ts +20 -0
  157. package/dist/cli/commands/swarm.d.ts.map +1 -0
  158. package/dist/cli/commands/swarm.js +174 -0
  159. package/dist/cli/commands/swarm.js.map +1 -0
  160. package/dist/cli/config.d.ts +103 -0
  161. package/dist/cli/config.d.ts.map +1 -0
  162. package/dist/cli/config.js +307 -0
  163. package/dist/cli/config.js.map +1 -0
  164. package/dist/cli/discovery.d.ts +31 -0
  165. package/dist/cli/discovery.d.ts.map +1 -0
  166. package/dist/cli/discovery.js +212 -0
  167. package/dist/cli/discovery.js.map +1 -0
  168. package/dist/cli/formatters/index.d.ts +15 -0
  169. package/dist/cli/formatters/index.d.ts.map +1 -0
  170. package/dist/cli/formatters/index.js +51 -0
  171. package/dist/cli/formatters/index.js.map +1 -0
  172. package/dist/cli/formatters/json.d.ts +11 -0
  173. package/dist/cli/formatters/json.d.ts.map +1 -0
  174. package/dist/cli/formatters/json.js +12 -0
  175. package/dist/cli/formatters/json.js.map +1 -0
  176. package/dist/cli/formatters/project-json.d.ts +11 -0
  177. package/dist/cli/formatters/project-json.d.ts.map +1 -0
  178. package/dist/cli/formatters/project-json.js +12 -0
  179. package/dist/cli/formatters/project-json.js.map +1 -0
  180. package/dist/cli/formatters/project-sarif.d.ts +11 -0
  181. package/dist/cli/formatters/project-sarif.d.ts.map +1 -0
  182. package/dist/cli/formatters/project-sarif.js +127 -0
  183. package/dist/cli/formatters/project-sarif.js.map +1 -0
  184. package/dist/cli/formatters/project-summary.d.ts +11 -0
  185. package/dist/cli/formatters/project-summary.d.ts.map +1 -0
  186. package/dist/cli/formatters/project-summary.js +202 -0
  187. package/dist/cli/formatters/project-summary.js.map +1 -0
  188. package/dist/cli/formatters/sarif-shared.d.ts +101 -0
  189. package/dist/cli/formatters/sarif-shared.d.ts.map +1 -0
  190. package/dist/cli/formatters/sarif-shared.js +57 -0
  191. package/dist/cli/formatters/sarif-shared.js.map +1 -0
  192. package/dist/cli/formatters/sarif.d.ts +12 -0
  193. package/dist/cli/formatters/sarif.d.ts.map +1 -0
  194. package/dist/cli/formatters/sarif.js +92 -0
  195. package/dist/cli/formatters/sarif.js.map +1 -0
  196. package/dist/cli/formatters/summary.d.ts +11 -0
  197. package/dist/cli/formatters/summary.d.ts.map +1 -0
  198. package/dist/cli/formatters/summary.js +240 -0
  199. package/dist/cli/formatters/summary.js.map +1 -0
  200. package/dist/cli/formatters/two-phase-summary.d.ts +11 -0
  201. package/dist/cli/formatters/two-phase-summary.d.ts.map +1 -0
  202. package/dist/cli/formatters/two-phase-summary.js +188 -0
  203. package/dist/cli/formatters/two-phase-summary.js.map +1 -0
  204. package/dist/cli/index.d.ts +15 -0
  205. package/dist/cli/index.d.ts.map +1 -0
  206. package/dist/cli/index.js +555 -0
  207. package/dist/cli/index.js.map +1 -0
  208. package/dist/components/clustering.d.ts +60 -0
  209. package/dist/components/clustering.d.ts.map +1 -0
  210. package/dist/components/clustering.js +129 -0
  211. package/dist/components/clustering.js.map +1 -0
  212. package/dist/components/enrichment.d.ts +45 -0
  213. package/dist/components/enrichment.d.ts.map +1 -0
  214. package/dist/components/enrichment.js +193 -0
  215. package/dist/components/enrichment.js.map +1 -0
  216. package/dist/components/index.d.ts +29 -0
  217. package/dist/components/index.d.ts.map +1 -0
  218. package/dist/components/index.js +56 -0
  219. package/dist/components/index.js.map +1 -0
  220. package/dist/dead-code/detector.d.ts +200 -0
  221. package/dist/dead-code/detector.d.ts.map +1 -0
  222. package/dist/dead-code/detector.js +1003 -0
  223. package/dist/dead-code/detector.js.map +1 -0
  224. package/dist/dead-code/index.d.ts +7 -0
  225. package/dist/dead-code/index.d.ts.map +1 -0
  226. package/dist/dead-code/index.js +7 -0
  227. package/dist/dead-code/index.js.map +1 -0
  228. package/dist/extractors/index.d.ts +15 -0
  229. package/dist/extractors/index.d.ts.map +1 -0
  230. package/dist/extractors/index.js +14 -0
  231. package/dist/extractors/index.js.map +1 -0
  232. package/dist/extractors/natural-language.d.ts +46 -0
  233. package/dist/extractors/natural-language.d.ts.map +1 -0
  234. package/dist/extractors/natural-language.js +228 -0
  235. package/dist/extractors/natural-language.js.map +1 -0
  236. package/dist/extractors/tree-sitter.d.ts +33 -0
  237. package/dist/extractors/tree-sitter.d.ts.map +1 -0
  238. package/dist/extractors/tree-sitter.js +69 -0
  239. package/dist/extractors/tree-sitter.js.map +1 -0
  240. package/dist/extractors/types.d.ts +62 -0
  241. package/dist/extractors/types.d.ts.map +1 -0
  242. package/dist/extractors/types.js +54 -0
  243. package/dist/extractors/types.js.map +1 -0
  244. package/dist/health-score/calculator.d.ts +123 -0
  245. package/dist/health-score/calculator.d.ts.map +1 -0
  246. package/dist/health-score/calculator.js +444 -0
  247. package/dist/health-score/calculator.js.map +1 -0
  248. package/dist/health-score/index.d.ts +12 -0
  249. package/dist/health-score/index.d.ts.map +1 -0
  250. package/dist/health-score/index.js +14 -0
  251. package/dist/health-score/index.js.map +1 -0
  252. package/dist/health-score/metrics.d.ts +142 -0
  253. package/dist/health-score/metrics.d.ts.map +1 -0
  254. package/dist/health-score/metrics.js +332 -0
  255. package/dist/health-score/metrics.js.map +1 -0
  256. package/dist/index.d.ts +26 -0
  257. package/dist/index.d.ts.map +1 -0
  258. package/dist/index.js +43 -0
  259. package/dist/index.js.map +1 -0
  260. package/dist/llm/ax-client.d.ts +477 -0
  261. package/dist/llm/ax-client.d.ts.map +1 -0
  262. package/dist/llm/ax-client.js +1641 -0
  263. package/dist/llm/ax-client.js.map +1 -0
  264. package/dist/llm/config.d.ts +58 -0
  265. package/dist/llm/config.d.ts.map +1 -0
  266. package/dist/llm/config.js +97 -0
  267. package/dist/llm/config.js.map +1 -0
  268. package/dist/llm/discovery.d.ts +123 -0
  269. package/dist/llm/discovery.d.ts.map +1 -0
  270. package/dist/llm/discovery.js +505 -0
  271. package/dist/llm/discovery.js.map +1 -0
  272. package/dist/llm/enrichment.d.ts +108 -0
  273. package/dist/llm/enrichment.d.ts.map +1 -0
  274. package/dist/llm/enrichment.js +312 -0
  275. package/dist/llm/enrichment.js.map +1 -0
  276. package/dist/llm/index.d.ts +13 -0
  277. package/dist/llm/index.d.ts.map +1 -0
  278. package/dist/llm/index.js +22 -0
  279. package/dist/llm/index.js.map +1 -0
  280. package/dist/llm/language-context.d.ts +64 -0
  281. package/dist/llm/language-context.d.ts.map +1 -0
  282. package/dist/llm/language-context.js +492 -0
  283. package/dist/llm/language-context.js.map +1 -0
  284. package/dist/llm/pattern-verification.d.ts +39 -0
  285. package/dist/llm/pattern-verification.d.ts.map +1 -0
  286. package/dist/llm/pattern-verification.js +127 -0
  287. package/dist/llm/pattern-verification.js.map +1 -0
  288. package/dist/llm/prompt-security.d.ts +120 -0
  289. package/dist/llm/prompt-security.d.ts.map +1 -0
  290. package/dist/llm/prompt-security.js +301 -0
  291. package/dist/llm/prompt-security.js.map +1 -0
  292. package/dist/llm/prompts/index.d.ts +31 -0
  293. package/dist/llm/prompts/index.d.ts.map +1 -0
  294. package/dist/llm/prompts/index.js +92 -0
  295. package/dist/llm/prompts/index.js.map +1 -0
  296. package/dist/llm/prompts/rust.d.ts +30 -0
  297. package/dist/llm/prompts/rust.d.ts.map +1 -0
  298. package/dist/llm/prompts/rust.js +121 -0
  299. package/dist/llm/prompts/rust.js.map +1 -0
  300. package/dist/llm/schemas.d.ts +892 -0
  301. package/dist/llm/schemas.d.ts.map +1 -0
  302. package/dist/llm/schemas.js +258 -0
  303. package/dist/llm/schemas.js.map +1 -0
  304. package/dist/llm/verification.d.ts +127 -0
  305. package/dist/llm/verification.d.ts.map +1 -0
  306. package/dist/llm/verification.js +394 -0
  307. package/dist/llm/verification.js.map +1 -0
  308. package/dist/project/analyzer.d.ts +30 -0
  309. package/dist/project/analyzer.d.ts.map +1 -0
  310. package/dist/project/analyzer.js +358 -0
  311. package/dist/project/analyzer.js.map +1 -0
  312. package/dist/project/call-graph.d.ts +22 -0
  313. package/dist/project/call-graph.d.ts.map +1 -0
  314. package/dist/project/call-graph.js +246 -0
  315. package/dist/project/call-graph.js.map +1 -0
  316. package/dist/project/index.d.ts +18 -0
  317. package/dist/project/index.d.ts.map +1 -0
  318. package/dist/project/index.js +20 -0
  319. package/dist/project/index.js.map +1 -0
  320. package/dist/project/taint-paths.d.ts +22 -0
  321. package/dist/project/taint-paths.d.ts.map +1 -0
  322. package/dist/project/taint-paths.js +265 -0
  323. package/dist/project/taint-paths.js.map +1 -0
  324. package/dist/project/two-phase-analyzer.d.ts +143 -0
  325. package/dist/project/two-phase-analyzer.d.ts.map +1 -0
  326. package/dist/project/two-phase-analyzer.js +646 -0
  327. package/dist/project/two-phase-analyzer.js.map +1 -0
  328. package/dist/project/type-hierarchy.d.ts +28 -0
  329. package/dist/project/type-hierarchy.d.ts.map +1 -0
  330. package/dist/project/type-hierarchy.js +218 -0
  331. package/dist/project/type-hierarchy.js.map +1 -0
  332. package/dist/secret-scan/index.d.ts +12 -0
  333. package/dist/secret-scan/index.d.ts.map +1 -0
  334. package/dist/secret-scan/index.js +14 -0
  335. package/dist/secret-scan/index.js.map +1 -0
  336. package/dist/secret-scan/patterns.d.ts +38 -0
  337. package/dist/secret-scan/patterns.d.ts.map +1 -0
  338. package/dist/secret-scan/patterns.js +473 -0
  339. package/dist/secret-scan/patterns.js.map +1 -0
  340. package/dist/secret-scan/scanner.d.ts +162 -0
  341. package/dist/secret-scan/scanner.d.ts.map +1 -0
  342. package/dist/secret-scan/scanner.js +511 -0
  343. package/dist/secret-scan/scanner.js.map +1 -0
  344. package/dist/security-scan/index.d.ts +12 -0
  345. package/dist/security-scan/index.d.ts.map +1 -0
  346. package/dist/security-scan/index.js +15 -0
  347. package/dist/security-scan/index.js.map +1 -0
  348. package/dist/security-scan/owasp-mapping.d.ts +29 -0
  349. package/dist/security-scan/owasp-mapping.d.ts.map +1 -0
  350. package/dist/security-scan/owasp-mapping.js +246 -0
  351. package/dist/security-scan/owasp-mapping.js.map +1 -0
  352. package/dist/security-scan/scanner.d.ts +204 -0
  353. package/dist/security-scan/scanner.d.ts.map +1 -0
  354. package/dist/security-scan/scanner.js +693 -0
  355. package/dist/security-scan/scanner.js.map +1 -0
  356. package/dist/security-scan/trend-tracker.d.ts +150 -0
  357. package/dist/security-scan/trend-tracker.d.ts.map +1 -0
  358. package/dist/security-scan/trend-tracker.js +299 -0
  359. package/dist/security-scan/trend-tracker.js.map +1 -0
  360. package/dist/skills/bundle-loader.d.ts +26 -0
  361. package/dist/skills/bundle-loader.d.ts.map +1 -0
  362. package/dist/skills/bundle-loader.js +284 -0
  363. package/dist/skills/bundle-loader.js.map +1 -0
  364. package/dist/skills/capability-mismatch.d.ts +21 -0
  365. package/dist/skills/capability-mismatch.d.ts.map +1 -0
  366. package/dist/skills/capability-mismatch.js +188 -0
  367. package/dist/skills/capability-mismatch.js.map +1 -0
  368. package/dist/skills/index.d.ts +10 -0
  369. package/dist/skills/index.d.ts.map +1 -0
  370. package/dist/skills/index.js +9 -0
  371. package/dist/skills/index.js.map +1 -0
  372. package/dist/skills/skill-analyzer.d.ts +16 -0
  373. package/dist/skills/skill-analyzer.d.ts.map +1 -0
  374. package/dist/skills/skill-analyzer.js +361 -0
  375. package/dist/skills/skill-analyzer.js.map +1 -0
  376. package/dist/skills/types.d.ts +195 -0
  377. package/dist/skills/types.d.ts.map +1 -0
  378. package/dist/skills/types.js +7 -0
  379. package/dist/skills/types.js.map +1 -0
  380. package/dist/specifica/conflict-resolver.d.ts +23 -0
  381. package/dist/specifica/conflict-resolver.d.ts.map +1 -0
  382. package/dist/specifica/conflict-resolver.js +129 -0
  383. package/dist/specifica/conflict-resolver.js.map +1 -0
  384. package/dist/specifica/evidence-aggregator.d.ts +33 -0
  385. package/dist/specifica/evidence-aggregator.d.ts.map +1 -0
  386. package/dist/specifica/evidence-aggregator.js +236 -0
  387. package/dist/specifica/evidence-aggregator.js.map +1 -0
  388. package/dist/specifica/evidence-extractor.d.ts +13 -0
  389. package/dist/specifica/evidence-extractor.d.ts.map +1 -0
  390. package/dist/specifica/evidence-extractor.js +431 -0
  391. package/dist/specifica/evidence-extractor.js.map +1 -0
  392. package/dist/specifica/feature-clustering.d.ts +19 -0
  393. package/dist/specifica/feature-clustering.d.ts.map +1 -0
  394. package/dist/specifica/feature-clustering.js +231 -0
  395. package/dist/specifica/feature-clustering.js.map +1 -0
  396. package/dist/specifica/generator.d.ts +16 -0
  397. package/dist/specifica/generator.d.ts.map +1 -0
  398. package/dist/specifica/generator.js +277 -0
  399. package/dist/specifica/generator.js.map +1 -0
  400. package/dist/specifica/index.d.ts +15 -0
  401. package/dist/specifica/index.d.ts.map +1 -0
  402. package/dist/specifica/index.js +18 -0
  403. package/dist/specifica/index.js.map +1 -0
  404. package/dist/specifica/prompts.d.ts +21 -0
  405. package/dist/specifica/prompts.d.ts.map +1 -0
  406. package/dist/specifica/prompts.js +196 -0
  407. package/dist/specifica/prompts.js.map +1 -0
  408. package/dist/specifica/spec-generator.d.ts +22 -0
  409. package/dist/specifica/spec-generator.d.ts.map +1 -0
  410. package/dist/specifica/spec-generator.js +229 -0
  411. package/dist/specifica/spec-generator.js.map +1 -0
  412. package/dist/specifica/types.d.ts +213 -0
  413. package/dist/specifica/types.d.ts.map +1 -0
  414. package/dist/specifica/types.js +7 -0
  415. package/dist/specifica/types.js.map +1 -0
  416. package/dist/utils/logger.d.ts +17 -0
  417. package/dist/utils/logger.d.ts.map +1 -0
  418. package/dist/utils/logger.js +51 -0
  419. package/dist/utils/logger.js.map +1 -0
  420. package/package.json +99 -0
@@ -0,0 +1,361 @@
1
+ /**
2
+ * Skill Analyzer
3
+ *
4
+ * Main orchestrator for analyzing AI skill bundles.
5
+ * Coordinates extraction, taint analysis, and cross-artifact reasoning.
6
+ */
7
+ import { loadSkillBundle, validateSkillBundle } from './bundle-loader.js';
8
+ import { createDefaultExtractorRegistry } from '../extractors/index.js';
9
+ import { detectCapabilityMismatches } from './capability-mismatch.js';
10
+ /**
11
+ * Analyze a skill bundle
12
+ *
13
+ * @param skillPath - Path to skill directory
14
+ * @param options - Analysis options
15
+ * @returns Analysis result with findings and trust score
16
+ */
17
+ export async function analyzeSkillBundle(skillPath, options = {}) {
18
+ const startTime = Date.now();
19
+ // Default options
20
+ const { enableCrossArtifact = true, enableVerification = true, minConfidence = 0.7, minSeverity = 'low', onProgress, } = options;
21
+ try {
22
+ // Phase 1: Load skill bundle
23
+ onProgress?.({
24
+ phase: 'loading',
25
+ progress: 0,
26
+ message: 'Loading skill bundle...',
27
+ });
28
+ const bundle = await loadSkillBundle(skillPath);
29
+ // Validate bundle structure
30
+ const validationErrors = await validateSkillBundle(bundle);
31
+ if (validationErrors.length > 0) {
32
+ throw new Error(`Invalid skill bundle: ${validationErrors.join(', ')}`);
33
+ }
34
+ onProgress?.({
35
+ phase: 'loading',
36
+ progress: 10,
37
+ message: `Loaded skill: ${bundle.name}`,
38
+ });
39
+ // Phase 2: Extract CircleIR from all artifacts
40
+ onProgress?.({
41
+ phase: 'extracting',
42
+ progress: 20,
43
+ message: 'Extracting from artifacts...',
44
+ });
45
+ const extracted = await extractAllArtifacts(bundle, onProgress);
46
+ onProgress?.({
47
+ phase: 'extracting',
48
+ progress: 50,
49
+ message: `Extracted ${extracted.length} artifacts`,
50
+ });
51
+ // Phase 3: Run unified taint analysis
52
+ onProgress?.({
53
+ phase: 'analyzing',
54
+ progress: 60,
55
+ message: 'Running taint analysis...',
56
+ });
57
+ const findings = await analyzeExtractedArtifacts(bundle, extracted, enableCrossArtifact, onProgress);
58
+ onProgress?.({
59
+ phase: 'analyzing',
60
+ progress: 80,
61
+ message: `Found ${findings.length} potential issues`,
62
+ });
63
+ // Phase 4: Filter by confidence and severity
64
+ const filteredFindings = findings.filter((f) => f.confidence >= minConfidence && compareSeverity(f.severity, minSeverity) >= 0);
65
+ // Phase 5: Calculate trust score
66
+ const score = calculateTrustScore(filteredFindings);
67
+ // Phase 6: Generate recommendations
68
+ const recommendations = generateRecommendations(filteredFindings);
69
+ onProgress?.({
70
+ phase: 'reporting',
71
+ progress: 100,
72
+ message: 'Analysis complete',
73
+ });
74
+ const endTime = Date.now();
75
+ return {
76
+ skillId: bundle.skillId,
77
+ name: bundle.name,
78
+ version: bundle.version,
79
+ findings: filteredFindings,
80
+ score,
81
+ recommendations,
82
+ metadata: {
83
+ timestamp: new Date().toISOString(),
84
+ durationMs: endTime - startTime,
85
+ artifactsAnalyzed: extracted.map((e) => e.artifact),
86
+ extractorsUsed: [...new Set(extracted.map((e) => e.extractor))],
87
+ },
88
+ };
89
+ }
90
+ catch (error) {
91
+ throw new Error(`Skill analysis failed: ${error instanceof Error ? error.message : error}`);
92
+ }
93
+ }
94
+ /**
95
+ * Extract CircleIR from all artifacts in the bundle
96
+ */
97
+ async function extractAllArtifacts(bundle, onProgress) {
98
+ const extracted = [];
99
+ const registry = await createDefaultExtractorRegistry();
100
+ // Extract from SKILL.md
101
+ const skillMdExtractor = registry.findExtractor('SKILL.md');
102
+ if (skillMdExtractor) {
103
+ onProgress?.({
104
+ phase: 'extracting',
105
+ artifact: 'SKILL.md',
106
+ progress: 25,
107
+ message: 'Extracting from SKILL.md...',
108
+ });
109
+ const startTime = Date.now();
110
+ const ir = await skillMdExtractor.extract(bundle.skillMd, 'SKILL.md');
111
+ const extractionTimeMs = Date.now() - startTime;
112
+ extracted.push({
113
+ artifact: 'SKILL.md',
114
+ ir,
115
+ extractor: skillMdExtractor.name,
116
+ extractionTimeMs,
117
+ });
118
+ }
119
+ // Extract from code files
120
+ let codeProgress = 0;
121
+ for (const file of bundle.codeFiles) {
122
+ const extractor = registry.findExtractor(file.path);
123
+ if (extractor) {
124
+ codeProgress++;
125
+ const progressPercent = 25 + (codeProgress / bundle.codeFiles.length) * 20;
126
+ onProgress?.({
127
+ phase: 'extracting',
128
+ artifact: file.path,
129
+ progress: progressPercent,
130
+ message: `Extracting from ${file.path}...`,
131
+ });
132
+ const startTime = Date.now();
133
+ const ir = await extractor.extract(file.content, file.path);
134
+ const extractionTimeMs = Date.now() - startTime;
135
+ extracted.push({
136
+ artifact: file.path,
137
+ ir,
138
+ extractor: extractor.name,
139
+ extractionTimeMs,
140
+ });
141
+ }
142
+ }
143
+ return extracted;
144
+ }
145
+ /**
146
+ * Analyze extracted artifacts and generate findings
147
+ */
148
+ async function analyzeExtractedArtifacts(bundle, extracted, enableCrossArtifact, onProgress) {
149
+ const findings = [];
150
+ // Collect all vulnerabilities from individual artifacts
151
+ // IMPORTANT: Skip SKILL.md - it declares capabilities, not vulnerabilities
152
+ for (const artifact of extracted) {
153
+ if (artifact.artifact === 'SKILL.md') {
154
+ // SKILL.md is only used for capability mismatch detection (cross-artifact analysis)
155
+ // Its sinks represent DECLARED capabilities, not actual vulnerabilities
156
+ continue;
157
+ }
158
+ const artifactFindings = extractFindingsFromIR(artifact.ir, artifact.artifact);
159
+ findings.push(...artifactFindings);
160
+ }
161
+ // Cross-artifact analysis (capability mismatch detection)
162
+ if (enableCrossArtifact) {
163
+ onProgress?.({
164
+ phase: 'analyzing',
165
+ progress: 70,
166
+ message: 'Detecting capability mismatches...',
167
+ });
168
+ const skillMdIR = extracted.find((e) => e.artifact === 'SKILL.md')?.ir;
169
+ const codeIRs = extracted.filter((e) => e.artifact !== 'SKILL.md');
170
+ if (skillMdIR && codeIRs.length > 0) {
171
+ const mismatches = await detectCapabilityMismatches(skillMdIR, codeIRs);
172
+ findings.push(...mismatches);
173
+ }
174
+ }
175
+ // Deduplicate findings (same vulnerability detected multiple times)
176
+ const deduplicated = deduplicateFindings(findings);
177
+ return deduplicated;
178
+ }
179
+ /**
180
+ * Extract findings from CircleIR
181
+ */
182
+ function extractFindingsFromIR(ir, artifact) {
183
+ const findings = [];
184
+ // Extract vulnerability findings from sources/sinks
185
+ const { sources, sinks } = ir.taint;
186
+ // For now, create findings from sinks (vulnerabilities)
187
+ for (const sink of sinks || []) {
188
+ // FILTER: Skip common false positives in validation functions
189
+ if (isLikelyValidationCodeFalsePositive(sink)) {
190
+ continue;
191
+ }
192
+ // Determine severity from CWE (simplified)
193
+ const severity = getSeverityFromCWE(sink.cwe);
194
+ findings.push({
195
+ type: 'vulnerability',
196
+ severity,
197
+ artifact,
198
+ title: `${sink.type} vulnerability`,
199
+ description: `Potential ${sink.type} at ${sink.location}`,
200
+ evidence: {
201
+ sink,
202
+ cwe: sink.cwe,
203
+ location: sink.location,
204
+ },
205
+ confidence: sink.confidence || 0.8,
206
+ cwe: sink.cwe,
207
+ location: {
208
+ line: sink.line,
209
+ snippet: sink.location,
210
+ },
211
+ });
212
+ }
213
+ return findings;
214
+ }
215
+ /**
216
+ * Check if a sink is likely a false positive from validation code
217
+ *
218
+ * Common patterns:
219
+ * - path.resolve() inside validatePath() function
220
+ * - path.resolve() followed by startsWith() check
221
+ * - File operations inside validation functions
222
+ */
223
+ function isLikelyValidationCodeFalsePositive(sink) {
224
+ const location = sink.location?.toLowerCase() || '';
225
+ // Path traversal in validation functions (path.resolve in validatePath, validateInput, etc.)
226
+ if (sink.type === 'path_traversal' && sink.cwe === 'CWE-22') {
227
+ if (location.includes('validatepath') ||
228
+ location.includes('validateinput') ||
229
+ location.includes('sanitizepath') ||
230
+ location.includes('sanitizeinput') ||
231
+ location.includes('validate(') ||
232
+ location.includes('sanitize(')) {
233
+ return true;
234
+ }
235
+ // path.resolve() in validation contexts
236
+ if (location.includes('path.resolve') && location.includes('validate')) {
237
+ return true;
238
+ }
239
+ }
240
+ return false;
241
+ }
242
+ /**
243
+ * Get severity from CWE code (simplified heuristic)
244
+ */
245
+ function getSeverityFromCWE(cwe) {
246
+ // SQL injection, command injection, code injection = critical
247
+ if (cwe.match(/CWE-(89|78|94)/)) {
248
+ return 'critical';
249
+ }
250
+ // XSS, path traversal, SSRF = high
251
+ if (cwe.match(/CWE-(79|22|918)/)) {
252
+ return 'high';
253
+ }
254
+ // Others = medium
255
+ return 'medium';
256
+ }
257
+ /**
258
+ * Calculate trust score from findings (0.0-1.0)
259
+ *
260
+ * Perfect score: 1.0 (no issues)
261
+ * Failing score: 0.0 (critical issues)
262
+ */
263
+ function calculateTrustScore(findings) {
264
+ if (findings.length === 0) {
265
+ return 1.0; // Perfect score
266
+ }
267
+ // Severity weights
268
+ const weights = {
269
+ critical: 1.0,
270
+ high: 0.7,
271
+ medium: 0.4,
272
+ low: 0.2,
273
+ info: 0.1,
274
+ };
275
+ // Calculate weighted penalty
276
+ let penalty = 0;
277
+ for (const finding of findings) {
278
+ const weight = weights[finding.severity];
279
+ const confidenceAdjusted = weight * finding.confidence;
280
+ penalty += confidenceAdjusted;
281
+ }
282
+ // Normalize to 0-1 scale (assuming max 10 critical issues = 0.0 score)
283
+ const maxPenalty = 10.0;
284
+ const score = Math.max(0, 1.0 - penalty / maxPenalty);
285
+ return Math.round(score * 100) / 100; // Round to 2 decimal places
286
+ }
287
+ /**
288
+ * Generate actionable recommendations based on findings
289
+ */
290
+ function generateRecommendations(findings) {
291
+ const recommendations = [];
292
+ // Group findings by type
293
+ const byType = new Map();
294
+ for (const finding of findings) {
295
+ const existing = byType.get(finding.type) || [];
296
+ existing.push(finding);
297
+ byType.set(finding.type, existing);
298
+ }
299
+ // Generate recommendations per type
300
+ if (byType.has('capability_mismatch')) {
301
+ recommendations.push('Update SKILL.md to accurately describe all capabilities and data access patterns');
302
+ }
303
+ if (byType.has('vulnerability')) {
304
+ const vulnFindings = byType.get('vulnerability');
305
+ const hasCritical = vulnFindings.some((f) => f.severity === 'critical');
306
+ if (hasCritical) {
307
+ recommendations.push('Fix critical vulnerabilities before deployment');
308
+ }
309
+ recommendations.push('Add input validation and sanitization for all user-controlled data');
310
+ }
311
+ if (byType.has('excessive_permission')) {
312
+ recommendations.push('Review and minimize MCP permissions to principle of least privilege');
313
+ }
314
+ if (byType.has('prompt_injection')) {
315
+ recommendations.push('Add prompt injection defenses to SKILL.md instructions');
316
+ }
317
+ if (recommendations.length === 0) {
318
+ recommendations.push('No critical issues found - skill passes security analysis');
319
+ }
320
+ return recommendations;
321
+ }
322
+ /**
323
+ * Compare severity levels
324
+ * Returns: 1 if a > b, 0 if a === b, -1 if a < b
325
+ */
326
+ function compareSeverity(a, b) {
327
+ const order = ['info', 'low', 'medium', 'high', 'critical'];
328
+ const aIndex = order.indexOf(a);
329
+ const bIndex = order.indexOf(b);
330
+ return Math.sign(aIndex - bIndex);
331
+ }
332
+ /**
333
+ * Deduplicate findings based on unique characteristics
334
+ *
335
+ * Two findings are considered duplicates if they have:
336
+ * - Same artifact
337
+ * - Same type
338
+ * - Same CWE (if present)
339
+ * - Same location line (if present)
340
+ *
341
+ * When duplicates are found, keeps the one with highest confidence.
342
+ */
343
+ function deduplicateFindings(findings) {
344
+ const uniqueMap = new Map();
345
+ for (const finding of findings) {
346
+ // Create unique key
347
+ const key = [
348
+ finding.artifact,
349
+ finding.type,
350
+ finding.cwe || 'no-cwe',
351
+ finding.location?.line || 'no-line',
352
+ ].join('|');
353
+ const existing = uniqueMap.get(key);
354
+ // Keep the finding with higher confidence
355
+ if (!existing || finding.confidence > existing.confidence) {
356
+ uniqueMap.set(key, finding);
357
+ }
358
+ }
359
+ return Array.from(uniqueMap.values());
360
+ }
361
+ //# sourceMappingURL=skill-analyzer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-analyzer.js","sourceRoot":"","sources":["../../src/skills/skill-analyzer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,195 @@
1
+ /**
2
+ * Skills Analysis Types
3
+ *
4
+ * Type definitions for AI skill bundles and analysis results.
5
+ */
6
+ import type { CircleIR } from 'circle-ir';
7
+ /**
8
+ * Skill Bundle - A complete AI skill package
9
+ *
10
+ * Skills are multi-artifact bundles containing:
11
+ * - SKILL.md: Natural language instructions (executed by LLM)
12
+ * - Code files: Implementation (executed by runtime)
13
+ * - MCP config: Permissions and tool definitions
14
+ * - Plugin files: Additional code
15
+ */
16
+ export interface SkillBundle {
17
+ /** Unique skill identifier */
18
+ skillId: string;
19
+ /** Human-readable name */
20
+ name: string;
21
+ /** Semantic version */
22
+ version: string;
23
+ /** SKILL.md content (instructions executed by LLM) */
24
+ skillMd: string;
25
+ /** Code implementation files */
26
+ codeFiles: SkillCodeFile[];
27
+ /** MCP server configuration (optional) */
28
+ mcpConfig?: MCPServerConfig;
29
+ /** Plugin files (optional) */
30
+ pluginFiles: SkillCodeFile[];
31
+ /** Root filesystem path */
32
+ rootPath: string;
33
+ }
34
+ /**
35
+ * Code file within a skill
36
+ */
37
+ export interface SkillCodeFile {
38
+ /** Relative path within skill bundle */
39
+ path: string;
40
+ /** File content */
41
+ content: string;
42
+ /** Programming language */
43
+ language: 'java' | 'javascript' | 'typescript' | 'python' | 'rust';
44
+ }
45
+ /**
46
+ * MCP (Model Context Protocol) Server Configuration
47
+ */
48
+ export interface MCPServerConfig {
49
+ /** Server name */
50
+ name: string;
51
+ /** Server version */
52
+ version: string;
53
+ /** Requested permissions */
54
+ permissions: MCPPermission[];
55
+ /** Available tools */
56
+ tools: MCPTool[];
57
+ /** Available resources (optional) */
58
+ resources?: MCPResource[];
59
+ }
60
+ /**
61
+ * MCP Permission request
62
+ */
63
+ export interface MCPPermission {
64
+ /** Permission type */
65
+ type: 'filesystem' | 'network' | 'env' | 'process';
66
+ /** Scope (path, URL pattern, env var name, etc.) */
67
+ scope: string;
68
+ /** Operations allowed */
69
+ operations: string[];
70
+ }
71
+ /**
72
+ * MCP Tool definition
73
+ */
74
+ export interface MCPTool {
75
+ /** Tool name */
76
+ name: string;
77
+ /** Tool description */
78
+ description: string;
79
+ /** Input schema (JSON Schema) */
80
+ inputSchema: Record<string, unknown>;
81
+ /** Output schema (JSON Schema, optional) */
82
+ outputSchema?: Record<string, unknown>;
83
+ }
84
+ /**
85
+ * MCP Resource definition
86
+ */
87
+ export interface MCPResource {
88
+ /** Resource URI */
89
+ uri: string;
90
+ /** Resource name */
91
+ name: string;
92
+ /** MIME type (optional) */
93
+ mimeType?: string;
94
+ }
95
+ /**
96
+ * Skill Analysis Result
97
+ */
98
+ export interface SkillAnalysisResult {
99
+ /** Skill identifier */
100
+ skillId: string;
101
+ /** Skill name */
102
+ name: string;
103
+ /** Skill version */
104
+ version: string;
105
+ /** All findings */
106
+ findings: SkillFinding[];
107
+ /** Trust score (0.0-1.0) */
108
+ score: number;
109
+ /** Actionable recommendations */
110
+ recommendations: string[];
111
+ /** Analysis metadata */
112
+ metadata: {
113
+ /** Analysis timestamp */
114
+ timestamp: string;
115
+ /** Analysis duration (ms) */
116
+ durationMs: number;
117
+ /** Artifacts analyzed */
118
+ artifactsAnalyzed: string[];
119
+ /** Extractors used */
120
+ extractorsUsed: string[];
121
+ };
122
+ }
123
+ /**
124
+ * Skill Finding - A security issue or observation
125
+ */
126
+ export interface SkillFinding {
127
+ /** Finding type */
128
+ type: SkillFindingType;
129
+ /** Severity level */
130
+ severity: 'critical' | 'high' | 'medium' | 'low' | 'info';
131
+ /** Which artifact contains the issue */
132
+ artifact: string;
133
+ /** Short title */
134
+ title: string;
135
+ /** Detailed description */
136
+ description: string;
137
+ /** Supporting evidence */
138
+ evidence: Record<string, unknown>;
139
+ /** Confidence score (0.0-1.0) */
140
+ confidence: number;
141
+ /** CWE identifier (if applicable) */
142
+ cwe?: string;
143
+ /** Location in artifact */
144
+ location?: {
145
+ line?: number;
146
+ column?: number;
147
+ snippet?: string;
148
+ };
149
+ }
150
+ /**
151
+ * Skill Finding Types
152
+ */
153
+ export type SkillFindingType = 'capability_mismatch' | 'excessive_permission' | 'undisclosed_exfiltration' | 'vulnerability' | 'prompt_injection' | 'social_engineering' | 'capability_escalation' | 'missing_sanitization' | 'insecure_defaults';
154
+ /**
155
+ * Skill Analysis Options
156
+ */
157
+ export interface SkillAnalysisOptions {
158
+ /** Enable cross-artifact analysis (default: true) */
159
+ enableCrossArtifact?: boolean;
160
+ /** Enable LLM verification (default: true) */
161
+ enableVerification?: boolean;
162
+ /** Minimum confidence threshold for findings (default: 0.7) */
163
+ minConfidence?: number;
164
+ /** Minimum severity to report (default: 'low') */
165
+ minSeverity?: 'critical' | 'high' | 'medium' | 'low' | 'info';
166
+ /** Progress callback */
167
+ onProgress?: (status: AnalysisProgress) => void;
168
+ }
169
+ /**
170
+ * Analysis progress status
171
+ */
172
+ export interface AnalysisProgress {
173
+ /** Current phase */
174
+ phase: 'loading' | 'extracting' | 'analyzing' | 'verifying' | 'reporting';
175
+ /** Current artifact being processed */
176
+ artifact?: string;
177
+ /** Progress percentage (0-100) */
178
+ progress: number;
179
+ /** Status message */
180
+ message: string;
181
+ }
182
+ /**
183
+ * Extracted artifact (intermediate result)
184
+ */
185
+ export interface ExtractedArtifact {
186
+ /** Artifact path */
187
+ artifact: string;
188
+ /** Extracted CircleIR */
189
+ ir: CircleIR;
190
+ /** Extractor used */
191
+ extractor: string;
192
+ /** Extraction time (ms) */
193
+ extractionTimeMs: number;
194
+ }
195
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/skills/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * Skills Analysis Types
3
+ *
4
+ * Type definitions for AI skill bundles and analysis results.
5
+ */
6
+ export {};
7
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/skills/types.ts"],"names":[],"mappings":"AAAA;;;;GAIG"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * Conflict Resolver
3
+ *
4
+ * Handles conflicts when .specifica/ files already exist
5
+ */
6
+ import type { ConflictResolution } from './types.js';
7
+ /**
8
+ * Resolve conflict when spec file already exists
9
+ */
10
+ export declare function resolveConflict(filePath: string, resolution: ConflictResolution): Promise<'skip' | 'overwrite' | 'merge' | 'rename'>;
11
+ /**
12
+ * Check if file exists
13
+ */
14
+ export declare function fileExists(filePath: string): boolean;
15
+ /**
16
+ * Get conflict strategy from CLI flags
17
+ */
18
+ export declare function getConflictStrategy(flags: {
19
+ overwrite?: boolean;
20
+ skip?: boolean;
21
+ backup?: boolean;
22
+ }): ConflictResolution;
23
+ //# sourceMappingURL=conflict-resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conflict-resolver.d.ts","sourceRoot":"","sources":["../../src/specifica/conflict-resolver.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;GAEG;AACH,wBAAsB,eAAe,CACnC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,kBAAkB,GAC7B,OAAO,CAAC,MAAM,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAC,CA0BpD;AAiFD;;GAEG;AACH,wBAAgB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAEpD;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE;IACzC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,kBAAkB,CAiBrB"}