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,284 @@
1
+ /**
2
+ * Skill Bundle Loader
3
+ *
4
+ * Loads AI skill bundles from filesystem into SkillBundle structure.
5
+ */
6
+ import * as fs from 'fs/promises';
7
+ import * as path from 'path';
8
+ /**
9
+ * Load a skill bundle from filesystem
10
+ *
11
+ * Expected structure:
12
+ * skill-directory/
13
+ * ├── SKILL.md # Instructions (required)
14
+ * ├── package.json # Metadata (optional)
15
+ * ├── mcp-config.json # MCP configuration (optional)
16
+ * ├── src/ # Source code (optional)
17
+ * │ ├── index.ts
18
+ * │ └── ...
19
+ * └── plugin/ # Plugin files (optional)
20
+ * └── ...
21
+ */
22
+ export async function loadSkillBundle(skillPath) {
23
+ // Resolve absolute path
24
+ const absPath = path.resolve(skillPath);
25
+ // Check if path exists
26
+ const stats = await fs.stat(absPath);
27
+ if (!stats.isDirectory()) {
28
+ throw new Error(`Skill path must be a directory: ${skillPath}`);
29
+ }
30
+ // Load SKILL.md (required)
31
+ const skillMd = await loadSkillMd(absPath);
32
+ // Load package.json for metadata (optional)
33
+ const metadata = await loadPackageJson(absPath);
34
+ // Load MCP config (optional)
35
+ const mcpConfig = await loadMCPConfig(absPath);
36
+ // Discover and load code files
37
+ const codeFiles = await loadCodeFiles(absPath);
38
+ // Discover and load plugin files (optional)
39
+ const pluginFiles = await loadPluginFiles(absPath);
40
+ return {
41
+ skillId: metadata.skillId || path.basename(absPath),
42
+ name: metadata.name || path.basename(absPath),
43
+ version: metadata.version || '0.0.0',
44
+ skillMd,
45
+ codeFiles,
46
+ mcpConfig,
47
+ pluginFiles,
48
+ rootPath: absPath,
49
+ };
50
+ }
51
+ /**
52
+ * Load SKILL.md file (required)
53
+ */
54
+ async function loadSkillMd(skillPath) {
55
+ // Try different possible names
56
+ const possibleNames = ['SKILL.md', 'skill.md', 'INSTRUCTIONS.md', 'instructions.md', 'README.md'];
57
+ for (const name of possibleNames) {
58
+ const filePath = path.join(skillPath, name);
59
+ try {
60
+ const content = await fs.readFile(filePath, 'utf-8');
61
+ return content;
62
+ }
63
+ catch (error) {
64
+ // Try next name
65
+ continue;
66
+ }
67
+ }
68
+ throw new Error(`SKILL.md not found in ${skillPath}. Tried: ${possibleNames.join(', ')}`);
69
+ }
70
+ /**
71
+ * Load package.json for metadata (optional)
72
+ */
73
+ async function loadPackageJson(skillPath) {
74
+ const pkgPath = path.join(skillPath, 'package.json');
75
+ try {
76
+ const content = await fs.readFile(pkgPath, 'utf-8');
77
+ const pkg = JSON.parse(content);
78
+ return {
79
+ skillId: pkg.skillId || pkg.name,
80
+ name: pkg.name,
81
+ version: pkg.version,
82
+ };
83
+ }
84
+ catch (error) {
85
+ // package.json is optional
86
+ return {};
87
+ }
88
+ }
89
+ /**
90
+ * Load MCP server configuration (optional)
91
+ */
92
+ async function loadMCPConfig(skillPath) {
93
+ const possibleNames = ['mcp-config.json', 'mcp.json', '.mcp.json'];
94
+ for (const name of possibleNames) {
95
+ const filePath = path.join(skillPath, name);
96
+ try {
97
+ const content = await fs.readFile(filePath, 'utf-8');
98
+ const config = JSON.parse(content);
99
+ return config;
100
+ }
101
+ catch (error) {
102
+ // Try next name
103
+ continue;
104
+ }
105
+ }
106
+ // MCP config is optional
107
+ return undefined;
108
+ }
109
+ /**
110
+ * Discover and load code files recursively
111
+ */
112
+ async function loadCodeFiles(skillPath) {
113
+ const codeFiles = [];
114
+ // Directories to scan for code
115
+ const codeDirs = ['src', 'lib', '.']; // Also check root directory
116
+ // Extensions to consider as code
117
+ const codeExtensions = ['.ts', '.js', '.tsx', '.jsx', '.py', '.java', '.rs'];
118
+ for (const dir of codeDirs) {
119
+ const dirPath = path.join(skillPath, dir);
120
+ try {
121
+ const files = await findFilesRecursive(dirPath, codeExtensions);
122
+ for (const file of files) {
123
+ const content = await fs.readFile(file, 'utf-8');
124
+ const relativePath = path.relative(skillPath, file);
125
+ const language = detectLanguageFromExtension(path.extname(file));
126
+ if (language) {
127
+ codeFiles.push({
128
+ path: relativePath,
129
+ content,
130
+ language,
131
+ });
132
+ }
133
+ }
134
+ }
135
+ catch (error) {
136
+ // Directory might not exist, that's OK
137
+ continue;
138
+ }
139
+ }
140
+ return codeFiles;
141
+ }
142
+ /**
143
+ * Discover and load plugin files (optional)
144
+ */
145
+ async function loadPluginFiles(skillPath) {
146
+ const pluginPath = path.join(skillPath, 'plugin');
147
+ try {
148
+ const stats = await fs.stat(pluginPath);
149
+ if (!stats.isDirectory()) {
150
+ return [];
151
+ }
152
+ // Load all files in plugin directory
153
+ return await loadCodeFiles(pluginPath);
154
+ }
155
+ catch (error) {
156
+ // Plugin directory is optional
157
+ return [];
158
+ }
159
+ }
160
+ /**
161
+ * Check if a file or directory is a test file/directory
162
+ */
163
+ function isTestFileOrDirectory(name, isDirectory) {
164
+ // Test directory patterns
165
+ const testDirPatterns = ['__tests__', 'tests', 'test', '.test', '__test__', 'spec', '__specs__'];
166
+ // Test file patterns
167
+ const testFilePatterns = [
168
+ '.test.ts',
169
+ '.test.js',
170
+ '.test.tsx',
171
+ '.test.jsx',
172
+ '.spec.ts',
173
+ '.spec.js',
174
+ '.spec.tsx',
175
+ '.spec.jsx',
176
+ '.test.py',
177
+ '_test.py',
178
+ '.test.java',
179
+ '.test.rs',
180
+ 'test.config.ts',
181
+ 'test.config.js',
182
+ 'vitest.config.ts',
183
+ 'vitest.config.js',
184
+ 'jest.config.ts',
185
+ 'jest.config.js',
186
+ ];
187
+ if (isDirectory) {
188
+ // Check if directory name matches test patterns
189
+ return testDirPatterns.includes(name);
190
+ }
191
+ else {
192
+ // Check if file name matches test patterns
193
+ return testFilePatterns.some((pattern) => name.endsWith(pattern));
194
+ }
195
+ }
196
+ /**
197
+ * Find files recursively with specific extensions
198
+ */
199
+ async function findFilesRecursive(dir, extensions) {
200
+ const files = [];
201
+ try {
202
+ const entries = await fs.readdir(dir, { withFileTypes: true });
203
+ for (const entry of entries) {
204
+ const fullPath = path.join(dir, entry.name);
205
+ if (entry.isDirectory()) {
206
+ // Skip node_modules, .git, hidden directories, and test directories
207
+ if (entry.name.startsWith('.') ||
208
+ entry.name === 'node_modules' ||
209
+ isTestFileOrDirectory(entry.name, true)) {
210
+ continue;
211
+ }
212
+ // Recurse into subdirectory
213
+ const subFiles = await findFilesRecursive(fullPath, extensions);
214
+ files.push(...subFiles);
215
+ }
216
+ else if (entry.isFile()) {
217
+ // Skip test files
218
+ if (isTestFileOrDirectory(entry.name, false)) {
219
+ continue;
220
+ }
221
+ const ext = path.extname(entry.name);
222
+ if (extensions.includes(ext)) {
223
+ files.push(fullPath);
224
+ }
225
+ }
226
+ }
227
+ }
228
+ catch (error) {
229
+ // Directory might not exist or not accessible
230
+ }
231
+ return files;
232
+ }
233
+ /**
234
+ * Detect language from file extension
235
+ */
236
+ function detectLanguageFromExtension(ext) {
237
+ switch (ext.toLowerCase()) {
238
+ case '.java':
239
+ return 'java';
240
+ case '.js':
241
+ case '.jsx':
242
+ case '.mjs':
243
+ case '.cjs':
244
+ return 'javascript';
245
+ case '.ts':
246
+ case '.tsx':
247
+ case '.mts':
248
+ case '.cts':
249
+ return 'typescript';
250
+ case '.py':
251
+ return 'python';
252
+ case '.rs':
253
+ return 'rust';
254
+ default:
255
+ return undefined;
256
+ }
257
+ }
258
+ /**
259
+ * Validate skill bundle structure
260
+ */
261
+ export async function validateSkillBundle(bundle) {
262
+ const errors = [];
263
+ // Check required fields
264
+ if (!bundle.skillMd || bundle.skillMd.trim().length === 0) {
265
+ errors.push('SKILL.md is empty or missing');
266
+ }
267
+ if (!bundle.skillId) {
268
+ errors.push('Skill ID is missing');
269
+ }
270
+ if (!bundle.name) {
271
+ errors.push('Skill name is missing');
272
+ }
273
+ // Validate MCP config structure (if present)
274
+ if (bundle.mcpConfig) {
275
+ if (!bundle.mcpConfig.name) {
276
+ errors.push('MCP config missing name field');
277
+ }
278
+ if (!bundle.mcpConfig.version) {
279
+ errors.push('MCP config missing version field');
280
+ }
281
+ }
282
+ return errors;
283
+ }
284
+ //# sourceMappingURL=bundle-loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bundle-loader.js","sourceRoot":"","sources":["../../src/skills/bundle-loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Capability Mismatch Detection
3
+ *
4
+ * Detects mismatches between what SKILL.md declares and what code actually does.
5
+ *
6
+ * Examples:
7
+ * - SKILL.md says "reads user files" but code writes to network
8
+ * - SKILL.md says "queries database" but code executes shell commands
9
+ * - Code accesses sensitive data not mentioned in SKILL.md
10
+ */
11
+ import type { CircleIR } from 'circle-ir';
12
+ import type { SkillFinding, ExtractedArtifact } from './types.js';
13
+ /**
14
+ * Detect capability mismatches between SKILL.md and code
15
+ *
16
+ * @param skillMdIR - CircleIR extracted from SKILL.md
17
+ * @param codeArtifacts - CircleIR extracted from code files
18
+ * @returns List of capability mismatch findings
19
+ */
20
+ export declare function detectCapabilityMismatches(skillMdIR: CircleIR, codeArtifacts: ExtractedArtifact[]): Promise<SkillFinding[]>;
21
+ //# sourceMappingURL=capability-mismatch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-mismatch.d.ts","sourceRoot":"","sources":["../../src/skills/capability-mismatch.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,OAAO,KAAK,EAAE,QAAQ,EAA0B,MAAM,WAAW,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAGlE;;;;;;GAMG;AACH,wBAAsB,0BAA0B,CAC9C,SAAS,EAAE,QAAQ,EACnB,aAAa,EAAE,iBAAiB,EAAE,GACjC,OAAO,CAAC,YAAY,EAAE,CAAC,CA0CzB"}
@@ -0,0 +1,188 @@
1
+ /**
2
+ * Capability Mismatch Detection
3
+ *
4
+ * Detects mismatches between what SKILL.md declares and what code actually does.
5
+ *
6
+ * Examples:
7
+ * - SKILL.md says "reads user files" but code writes to network
8
+ * - SKILL.md says "queries database" but code executes shell commands
9
+ * - Code accesses sensitive data not mentioned in SKILL.md
10
+ */
11
+ import { getAxLLMClient } from '../llm/ax-client.js';
12
+ /**
13
+ * Detect capability mismatches between SKILL.md and code
14
+ *
15
+ * @param skillMdIR - CircleIR extracted from SKILL.md
16
+ * @param codeArtifacts - CircleIR extracted from code files
17
+ * @returns List of capability mismatch findings
18
+ */
19
+ export async function detectCapabilityMismatches(skillMdIR, codeArtifacts) {
20
+ const findings = [];
21
+ // Extract declared capabilities from SKILL.md
22
+ const declaredSources = skillMdIR.taint.sources || [];
23
+ const declaredSinks = skillMdIR.taint.sinks || [];
24
+ // Extract actual capabilities from code
25
+ const actualSources = [];
26
+ const actualSinks = [];
27
+ for (const artifact of codeArtifacts) {
28
+ for (const source of artifact.ir.taint.sources || []) {
29
+ actualSources.push({ ...source, artifact: artifact.artifact });
30
+ }
31
+ for (const sink of artifact.ir.taint.sinks || []) {
32
+ actualSinks.push({ ...sink, artifact: artifact.artifact });
33
+ }
34
+ }
35
+ // Use LLM to detect semantic mismatches
36
+ const mismatches = await detectMismatchesWithLLM(declaredSources, declaredSinks, actualSources, actualSinks);
37
+ // Convert to findings
38
+ for (const mismatch of mismatches) {
39
+ findings.push({
40
+ type: 'capability_mismatch',
41
+ severity: mismatch.severity,
42
+ artifact: mismatch.artifact,
43
+ title: mismatch.title,
44
+ description: mismatch.description,
45
+ evidence: mismatch.evidence,
46
+ confidence: mismatch.confidence,
47
+ });
48
+ }
49
+ return findings;
50
+ }
51
+ /**
52
+ * Use LLM to detect semantic capability mismatches
53
+ */
54
+ async function detectMismatchesWithLLM(declaredSources, declaredSinks, actualSources, actualSinks) {
55
+ const llm = getAxLLMClient();
56
+ const systemPrompt = `You are a security analyst detecting capability mismatches in AI skills.
57
+
58
+ A capability mismatch occurs when:
59
+ 1. The SKILL.md claims to do X, but the code does Y instead
60
+ 2. The code performs operation Y, but SKILL.md doesn't mention it
61
+ 3. The declared data access doesn't match actual data accessed in code
62
+
63
+ Your job: Find semantic mismatches between declared and actual capabilities.
64
+
65
+ Be strict:
66
+ - Only flag CLEAR mismatches with evidence
67
+ - Ignore trivial differences (e.g., "read file" vs "load file" are the same)
68
+ - Focus on SECURITY-RELEVANT mismatches (data access, dangerous operations)
69
+ - Assign high confidence only when mismatch is obvious
70
+
71
+ IMPORTANT - What is NOT a mismatch:
72
+ - Validation/sanitization code (e.g., validatePath, encodeURIComponent) - this is GOOD security practice
73
+ - SKILL.md says "secure HTTP request" and code uses encodeURIComponent - this is IMPLEMENTING security, not a mismatch
74
+ - SKILL.md says "sandboxed file access" and code validates paths - this is correct implementation
75
+ - Semantic equivalence: "accesses api.example.com" vs "makes HTTP request" are the same thing
76
+
77
+ Examples of TRUE mismatches:
78
+ 1. SKILL.md: "No network access" | Code: https.get() or https.request() → MISMATCH (undisclosed_capability, CRITICAL)
79
+ 2. SKILL.md: "Runs offline" | Code: fetch() or HTTP sinks → MISMATCH (undisclosed_capability, CRITICAL)
80
+ 3. SKILL.md: "Reads from database" | Code: no database calls found → MISMATCH (false_advertising)
81
+ 4. SKILL.md: "Accesses api.weather.com only" | Code: accesses api.analytics.com → MISMATCH (data_mismatch)
82
+ 5. SKILL.md: Says nothing about network | Code: makes HTTP requests to ANY domain → MISMATCH (undisclosed_capability)
83
+
84
+ CRITICAL - Network access is ALWAYS a mismatch if:
85
+ - SKILL.md says "no network", "offline", "no external access" BUT code has SSRF sinks (https.request, fetch, etc.)
86
+ - SKILL.md doesn't mention network access BUT code has SSRF sinks to ANY domain
87
+ - Network access is a SECURITY-CRITICAL capability that MUST be disclosed
88
+
89
+ Examples of FALSE matches (DO NOT FLAG):
90
+ 1. SKILL.md: "Validates input" | Code: uses regex validation → NOT a mismatch (implementing stated security)
91
+ 2. SKILL.md: "Reads files in workspace" | Code: calls validatePath() → NOT a mismatch (secure implementation)
92
+ 3. SKILL.md: "Makes HTTP request" | Code: uses encodeURIComponent on URL → NOT a mismatch (secure implementation)
93
+ 4. SKILL.md: "Accesses API" | Code: https.request() to that API → NOT a mismatch (documented network access)`;
94
+ const userPrompt = `Analyze this AI skill for capability mismatches:
95
+
96
+ **Declared Capabilities (from SKILL.md):**
97
+
98
+ Declared Sources (data inputs):
99
+ ${formatSources(declaredSources)}
100
+
101
+ Declared Sinks (dangerous operations):
102
+ ${formatSinks(declaredSinks)}
103
+
104
+ **Actual Capabilities (from code analysis):**
105
+
106
+ Actual Sources (data inputs):
107
+ ${formatActualSources(actualSources)}
108
+
109
+ Actual Sinks (dangerous operations):
110
+ ${formatActualSinks(actualSinks)}
111
+
112
+ **Task:** Find mismatches where:
113
+ 1. Code performs operations not declared in SKILL.md (undisclosed capabilities)
114
+ 2. SKILL.md declares operations not found in code (false advertising)
115
+ 3. Data access patterns differ significantly
116
+
117
+ Return JSON array of mismatches:
118
+ [
119
+ {
120
+ "type": "undisclosed_capability" | "false_advertising" | "data_mismatch",
121
+ "title": "Brief title (< 10 words)",
122
+ "description": "Detailed explanation with evidence",
123
+ "severity": "critical" | "high" | "medium" | "low",
124
+ "artifact": "which code file contains the issue",
125
+ "evidence": {
126
+ "declared": "what SKILL.md says",
127
+ "actual": "what code does",
128
+ "location": "specific code location"
129
+ },
130
+ "confidence": 0.0-1.0
131
+ }
132
+ ]
133
+
134
+ If no mismatches, return: []`;
135
+ try {
136
+ const result = await llm.chatJSON(systemPrompt, userPrompt, 'verification');
137
+ return result || [];
138
+ }
139
+ catch (error) {
140
+ console.error('LLM mismatch detection failed:', error);
141
+ return [];
142
+ }
143
+ }
144
+ /**
145
+ * Format sources for LLM prompt
146
+ */
147
+ function formatSources(sources) {
148
+ if (sources.length === 0) {
149
+ return ' (none declared)';
150
+ }
151
+ return sources
152
+ .map((s, i) => ` ${i + 1}. ${s.type} at ${s.location}\n Severity: ${s.severity}\n Confidence: ${(s.confidence || 0.8) * 100}%`)
153
+ .join('\n');
154
+ }
155
+ /**
156
+ * Format sinks for LLM prompt
157
+ */
158
+ function formatSinks(sinks) {
159
+ if (sinks.length === 0) {
160
+ return ' (none declared)';
161
+ }
162
+ return sinks
163
+ .map((s, i) => ` ${i + 1}. ${s.type} (${s.cwe}) at ${s.location}\n Confidence: ${(s.confidence || 0.8) * 100}%`)
164
+ .join('\n');
165
+ }
166
+ /**
167
+ * Format actual sources with artifact info
168
+ */
169
+ function formatActualSources(sources) {
170
+ if (sources.length === 0) {
171
+ return ' (no sources found in code)';
172
+ }
173
+ return sources
174
+ .map((s, i) => ` ${i + 1}. ${s.type} in ${s.artifact}:${s.line}\n Location: ${s.location}\n Confidence: ${(s.confidence || 0.8) * 100}%`)
175
+ .join('\n');
176
+ }
177
+ /**
178
+ * Format actual sinks with artifact info
179
+ */
180
+ function formatActualSinks(sinks) {
181
+ if (sinks.length === 0) {
182
+ return ' (no dangerous operations found in code)';
183
+ }
184
+ return sinks
185
+ .map((s, i) => ` ${i + 1}. ${s.type} (${s.cwe}) in ${s.artifact}:${s.line}\n Location: ${s.location}\n Confidence: ${(s.confidence || 0.8) * 100}%`)
186
+ .join('\n');
187
+ }
188
+ //# sourceMappingURL=capability-mismatch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"capability-mismatch.js","sourceRoot":"","sources":["../../src/skills/capability-mismatch.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Skills Analysis Module
3
+ *
4
+ * Analyze AI skill bundles (code + SKILL.md + MCP config) for security issues.
5
+ */
6
+ export type { SkillBundle, SkillCodeFile, MCPServerConfig, MCPPermission, MCPTool, MCPResource, SkillAnalysisResult, SkillFinding, SkillFindingType, SkillAnalysisOptions, AnalysisProgress, ExtractedArtifact, } from './types.js';
7
+ export { loadSkillBundle, validateSkillBundle } from './bundle-loader.js';
8
+ export { analyzeSkillBundle } from './skill-analyzer.js';
9
+ export { detectCapabilityMismatches } from './capability-mismatch.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,YAAY,EACV,WAAW,EACX,aAAa,EACb,eAAe,EACf,aAAa,EACb,OAAO,EACP,WAAW,EACX,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,oBAAoB,EACpB,gBAAgB,EAChB,iBAAiB,GAClB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Skills Analysis Module
3
+ *
4
+ * Analyze AI skill bundles (code + SKILL.md + MCP config) for security issues.
5
+ */
6
+ export { loadSkillBundle, validateSkillBundle } from './bundle-loader.js';
7
+ export { analyzeSkillBundle } from './skill-analyzer.js';
8
+ export { detectCapabilityMismatches } from './capability-mismatch.js';
9
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/skills/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAiBH,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,0BAA0B,CAAC"}
@@ -0,0 +1,16 @@
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 { type SkillAnalysisResult, type SkillAnalysisOptions } from './types.js';
8
+ /**
9
+ * Analyze a skill bundle
10
+ *
11
+ * @param skillPath - Path to skill directory
12
+ * @param options - Analysis options
13
+ * @returns Analysis result with findings and trust score
14
+ */
15
+ export declare function analyzeSkillBundle(skillPath: string, options?: SkillAnalysisOptions): Promise<SkillAnalysisResult>;
16
+ //# sourceMappingURL=skill-analyzer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"skill-analyzer.d.ts","sourceRoot":"","sources":["../../src/skills/skill-analyzer.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAEL,KAAK,mBAAmB,EAExB,KAAK,oBAAoB,EAE1B,MAAM,YAAY,CAAC;AAKpB;;;;;;GAMG;AACH,wBAAsB,kBAAkB,CACtC,SAAS,EAAE,MAAM,EACjB,OAAO,GAAE,oBAAyB,GACjC,OAAO,CAAC,mBAAmB,CAAC,CAyG9B"}