kirograph 0.17.0 → 0.20.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 (815) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +105 -1822
  3. package/dist/architecture/layers/dart.d.ts +10 -0
  4. package/dist/architecture/layers/dart.d.ts.map +1 -0
  5. package/dist/architecture/layers/dart.js +112 -0
  6. package/dist/architecture/layers/dart.js.map +7 -0
  7. package/dist/architecture/layers/elixir.d.ts +6 -0
  8. package/dist/architecture/layers/elixir.d.ts.map +1 -0
  9. package/dist/architecture/layers/index.d.ts.map +1 -1
  10. package/dist/architecture/layers/index.js +3 -1
  11. package/dist/architecture/layers/index.js.map +2 -2
  12. package/dist/architecture/layers/ocaml.d.ts +6 -0
  13. package/dist/architecture/layers/ocaml.d.ts.map +1 -0
  14. package/dist/architecture/layers/scala.d.ts +6 -0
  15. package/dist/architecture/layers/scala.d.ts.map +1 -0
  16. package/dist/architecture/layers/solidity.d.ts +6 -0
  17. package/dist/architecture/layers/solidity.d.ts.map +1 -0
  18. package/dist/architecture/layers/vue.d.ts +6 -0
  19. package/dist/architecture/layers/vue.d.ts.map +1 -0
  20. package/dist/architecture/manifest/elm.d.ts +3 -0
  21. package/dist/architecture/manifest/elm.d.ts.map +1 -0
  22. package/dist/architecture/manifest/index.d.ts.map +1 -1
  23. package/dist/architecture/manifest/ocaml.d.ts +3 -0
  24. package/dist/architecture/manifest/ocaml.d.ts.map +1 -0
  25. package/dist/architecture/manifest/scala.d.ts +3 -0
  26. package/dist/architecture/manifest/scala.d.ts.map +1 -0
  27. package/dist/bin/banner.d.ts.map +1 -1
  28. package/dist/bin/banner.js +74 -6
  29. package/dist/bin/banner.js.map +2 -2
  30. package/dist/bin/commands/affected.d.ts.map +1 -1
  31. package/dist/bin/commands/attack-surface.d.ts +3 -0
  32. package/dist/bin/commands/attack-surface.d.ts.map +1 -0
  33. package/dist/bin/commands/attack-surface.js +164 -0
  34. package/dist/bin/commands/attack-surface.js.map +7 -0
  35. package/dist/bin/commands/benchmark.d.ts +9 -0
  36. package/dist/bin/commands/benchmark.d.ts.map +1 -0
  37. package/dist/bin/commands/benchmark.js +206 -0
  38. package/dist/bin/commands/benchmark.js.map +7 -0
  39. package/dist/bin/commands/budget.d.ts +6 -0
  40. package/dist/bin/commands/budget.d.ts.map +1 -0
  41. package/dist/bin/commands/budget.js +70 -0
  42. package/dist/bin/commands/budget.js.map +7 -0
  43. package/dist/bin/commands/caveman.d.ts +7 -0
  44. package/dist/bin/commands/caveman.d.ts.map +1 -0
  45. package/dist/bin/commands/communities.d.ts +3 -0
  46. package/dist/bin/commands/communities.d.ts.map +1 -0
  47. package/dist/bin/commands/communities.js +77 -0
  48. package/dist/bin/commands/communities.js.map +7 -0
  49. package/dist/bin/commands/compression.d.ts +7 -0
  50. package/dist/bin/commands/compression.d.ts.map +1 -0
  51. package/dist/bin/commands/context.d.ts.map +1 -1
  52. package/dist/bin/commands/data.d.ts +3 -0
  53. package/dist/bin/commands/data.d.ts.map +1 -0
  54. package/dist/bin/commands/dead-code.d.ts +3 -0
  55. package/dist/bin/commands/dead-code.d.ts.map +1 -0
  56. package/dist/bin/commands/dep-confusion.d.ts +3 -0
  57. package/dist/bin/commands/dep-confusion.d.ts.map +1 -0
  58. package/dist/bin/commands/dep-confusion.js +119 -0
  59. package/dist/bin/commands/dep-confusion.js.map +7 -0
  60. package/dist/bin/commands/docs.d.ts +3 -0
  61. package/dist/bin/commands/docs.d.ts.map +1 -0
  62. package/dist/bin/commands/exec.d.ts +11 -0
  63. package/dist/bin/commands/exec.d.ts.map +1 -0
  64. package/dist/bin/commands/export.d.ts +3 -0
  65. package/dist/bin/commands/export.d.ts.map +1 -0
  66. package/dist/bin/commands/export.js +304 -10
  67. package/dist/bin/commands/export.js.map +2 -2
  68. package/dist/bin/commands/flows.d.ts +3 -0
  69. package/dist/bin/commands/flows.d.ts.map +1 -0
  70. package/dist/bin/commands/flows.js +97 -0
  71. package/dist/bin/commands/flows.js.map +7 -0
  72. package/dist/bin/commands/gain.d.ts +6 -0
  73. package/dist/bin/commands/gain.d.ts.map +1 -0
  74. package/dist/bin/commands/help.d.ts +7 -0
  75. package/dist/bin/commands/help.d.ts.map +1 -1
  76. package/dist/bin/commands/help.js +399 -101
  77. package/dist/bin/commands/help.js.map +2 -2
  78. package/dist/bin/commands/hotspots.d.ts +3 -0
  79. package/dist/bin/commands/hotspots.d.ts.map +1 -0
  80. package/dist/bin/commands/hotspots.js +94 -1
  81. package/dist/bin/commands/hotspots.js.map +3 -3
  82. package/dist/bin/commands/install.d.ts.map +1 -1
  83. package/dist/bin/commands/install.js +90 -8
  84. package/dist/bin/commands/install.js.map +2 -2
  85. package/dist/bin/commands/licenses.d.ts +3 -0
  86. package/dist/bin/commands/licenses.d.ts.map +1 -0
  87. package/dist/bin/commands/licenses.js +201 -0
  88. package/dist/bin/commands/licenses.js.map +7 -0
  89. package/dist/bin/commands/memory.d.ts +16 -0
  90. package/dist/bin/commands/memory.d.ts.map +1 -0
  91. package/dist/bin/commands/memory.js +151 -4
  92. package/dist/bin/commands/memory.js.map +2 -2
  93. package/dist/bin/commands/path.d.ts +3 -0
  94. package/dist/bin/commands/path.d.ts.map +1 -0
  95. package/dist/bin/commands/pattern.d.ts +3 -0
  96. package/dist/bin/commands/pattern.d.ts.map +1 -0
  97. package/dist/bin/commands/pattern.js +592 -0
  98. package/dist/bin/commands/pattern.js.map +7 -0
  99. package/dist/bin/commands/query.d.ts.map +1 -1
  100. package/dist/bin/commands/reachability.d.ts +3 -0
  101. package/dist/bin/commands/reachability.d.ts.map +1 -0
  102. package/dist/bin/commands/reachability.js +160 -0
  103. package/dist/bin/commands/reachability.js.map +7 -0
  104. package/dist/bin/commands/read.d.ts +6 -0
  105. package/dist/bin/commands/read.d.ts.map +1 -0
  106. package/dist/bin/commands/read.js +100 -0
  107. package/dist/bin/commands/read.js.map +7 -0
  108. package/dist/bin/commands/refactor.d.ts +3 -0
  109. package/dist/bin/commands/refactor.d.ts.map +1 -0
  110. package/dist/bin/commands/refactor.js +116 -0
  111. package/dist/bin/commands/refactor.js.map +7 -0
  112. package/dist/bin/commands/remediation.d.ts +3 -0
  113. package/dist/bin/commands/remediation.d.ts.map +1 -0
  114. package/dist/bin/commands/remediation.js +133 -0
  115. package/dist/bin/commands/remediation.js.map +7 -0
  116. package/dist/bin/commands/sbom.d.ts +3 -0
  117. package/dist/bin/commands/sbom.d.ts.map +1 -0
  118. package/dist/bin/commands/sbom.js +76 -0
  119. package/dist/bin/commands/sbom.js.map +7 -0
  120. package/dist/bin/commands/security-ci-report.d.ts +9 -0
  121. package/dist/bin/commands/security-ci-report.d.ts.map +1 -0
  122. package/dist/bin/commands/security-ci-report.js +267 -0
  123. package/dist/bin/commands/security-ci-report.js.map +7 -0
  124. package/dist/bin/commands/security-export.d.ts +2 -0
  125. package/dist/bin/commands/security-export.d.ts.map +1 -0
  126. package/dist/bin/commands/security-export.js +1349 -0
  127. package/dist/bin/commands/security-export.js.map +7 -0
  128. package/dist/bin/commands/security-flows.d.ts +3 -0
  129. package/dist/bin/commands/security-flows.d.ts.map +1 -0
  130. package/dist/bin/commands/security-flows.js +126 -0
  131. package/dist/bin/commands/security-flows.js.map +7 -0
  132. package/dist/bin/commands/security-secrets.d.ts +3 -0
  133. package/dist/bin/commands/security-secrets.d.ts.map +1 -0
  134. package/dist/bin/commands/security-secrets.js +170 -0
  135. package/dist/bin/commands/security-secrets.js.map +7 -0
  136. package/dist/bin/commands/security.d.ts +3 -0
  137. package/dist/bin/commands/security.d.ts.map +1 -0
  138. package/dist/bin/commands/security.js +208 -0
  139. package/dist/bin/commands/security.js.map +7 -0
  140. package/dist/bin/commands/snapshot.d.ts +3 -0
  141. package/dist/bin/commands/snapshot.d.ts.map +1 -0
  142. package/dist/bin/commands/staleness.d.ts +3 -0
  143. package/dist/bin/commands/staleness.d.ts.map +1 -0
  144. package/dist/bin/commands/staleness.js +144 -0
  145. package/dist/bin/commands/staleness.js.map +7 -0
  146. package/dist/bin/commands/status.d.ts.map +1 -1
  147. package/dist/bin/commands/status.js +129 -2
  148. package/dist/bin/commands/status.js.map +2 -2
  149. package/dist/bin/commands/supply-chain.d.ts +3 -0
  150. package/dist/bin/commands/supply-chain.d.ts.map +1 -0
  151. package/dist/bin/commands/supply-chain.js +138 -0
  152. package/dist/bin/commands/supply-chain.js.map +7 -0
  153. package/dist/bin/commands/surprising.d.ts +3 -0
  154. package/dist/bin/commands/surprising.d.ts.map +1 -0
  155. package/dist/bin/commands/sync.d.ts.map +1 -1
  156. package/dist/bin/commands/uninit.d.ts.map +1 -1
  157. package/dist/bin/commands/uninit.js +109 -60
  158. package/dist/bin/commands/uninit.js.map +2 -2
  159. package/dist/bin/commands/utils.d.ts +5 -0
  160. package/dist/bin/commands/utils.d.ts.map +1 -1
  161. package/dist/bin/commands/vex.d.ts +3 -0
  162. package/dist/bin/commands/vex.d.ts.map +1 -0
  163. package/dist/bin/commands/vex.js +76 -0
  164. package/dist/bin/commands/vex.js.map +7 -0
  165. package/dist/bin/commands/vuln-suppress.d.ts +3 -0
  166. package/dist/bin/commands/vuln-suppress.d.ts.map +1 -0
  167. package/dist/bin/commands/vuln-suppress.js +95 -0
  168. package/dist/bin/commands/vuln-suppress.js.map +7 -0
  169. package/dist/bin/commands/vulns.d.ts +3 -0
  170. package/dist/bin/commands/vulns.d.ts.map +1 -0
  171. package/dist/bin/commands/vulns.js +382 -0
  172. package/dist/bin/commands/vulns.js.map +7 -0
  173. package/dist/bin/installer/archive.d.ts +47 -0
  174. package/dist/bin/installer/archive.d.ts.map +1 -0
  175. package/dist/bin/installer/auto-detect.d.ts +16 -0
  176. package/dist/bin/installer/auto-detect.d.ts.map +1 -0
  177. package/dist/bin/installer/auto-detect.js +125 -0
  178. package/dist/bin/installer/auto-detect.js.map +7 -0
  179. package/dist/bin/installer/caveman.d.ts +12 -0
  180. package/dist/bin/installer/caveman.d.ts.map +1 -0
  181. package/dist/bin/installer/cli-agent.d.ts +7 -2
  182. package/dist/bin/installer/cli-agent.d.ts.map +1 -1
  183. package/dist/bin/installer/cli-agent.js +32 -5
  184. package/dist/bin/installer/cli-agent.js.map +2 -2
  185. package/dist/bin/installer/common.d.ts +36 -0
  186. package/dist/bin/installer/common.d.ts.map +1 -0
  187. package/dist/bin/installer/common.js +48 -0
  188. package/dist/bin/installer/common.js.map +2 -2
  189. package/dist/bin/installer/config-prompt.d.ts +1 -1
  190. package/dist/bin/installer/config-prompt.d.ts.map +1 -1
  191. package/dist/bin/installer/config-prompt.js +85 -2
  192. package/dist/bin/installer/config-prompt.js.map +2 -2
  193. package/dist/bin/installer/dashboard.d.ts.map +1 -1
  194. package/dist/bin/installer/detect.d.ts +30 -0
  195. package/dist/bin/installer/detect.d.ts.map +1 -0
  196. package/dist/bin/installer/detect.js +309 -0
  197. package/dist/bin/installer/detect.js.map +7 -0
  198. package/dist/bin/installer/hooks.d.ts +4 -1
  199. package/dist/bin/installer/hooks.d.ts.map +1 -1
  200. package/dist/bin/installer/hooks.js +34 -0
  201. package/dist/bin/installer/hooks.js.map +2 -2
  202. package/dist/bin/installer/index.d.ts +5 -4
  203. package/dist/bin/installer/index.d.ts.map +1 -1
  204. package/dist/bin/installer/index.js +46 -8
  205. package/dist/bin/installer/index.js.map +2 -2
  206. package/dist/bin/installer/instructions.d.ts +14 -0
  207. package/dist/bin/installer/instructions.d.ts.map +1 -0
  208. package/dist/bin/installer/instructions.js +209 -3
  209. package/dist/bin/installer/instructions.js.map +2 -2
  210. package/dist/bin/installer/mcp.d.ts.map +1 -1
  211. package/dist/bin/installer/prompts.d.ts +17 -0
  212. package/dist/bin/installer/prompts.d.ts.map +1 -1
  213. package/dist/bin/installer/qdrant-dashboard.d.ts.map +1 -1
  214. package/dist/bin/installer/steering.d.ts +14 -2
  215. package/dist/bin/installer/steering.d.ts.map +1 -1
  216. package/dist/bin/installer/steering.js +488 -0
  217. package/dist/bin/installer/steering.js.map +2 -2
  218. package/dist/bin/installer/targets/aider.d.ts +6 -0
  219. package/dist/bin/installer/targets/aider.d.ts.map +1 -0
  220. package/dist/bin/installer/targets/aider.js +3 -3
  221. package/dist/bin/installer/targets/aider.js.map +2 -2
  222. package/dist/bin/installer/targets/amp.d.ts +6 -0
  223. package/dist/bin/installer/targets/amp.d.ts.map +1 -0
  224. package/dist/bin/installer/targets/amp.js +3 -3
  225. package/dist/bin/installer/targets/amp.js.map +2 -2
  226. package/dist/bin/installer/targets/antigravity.d.ts +13 -0
  227. package/dist/bin/installer/targets/antigravity.d.ts.map +1 -0
  228. package/dist/bin/installer/targets/antigravity.js +35 -6
  229. package/dist/bin/installer/targets/antigravity.js.map +2 -2
  230. package/dist/bin/installer/targets/augment.d.ts +6 -0
  231. package/dist/bin/installer/targets/augment.d.ts.map +1 -0
  232. package/dist/bin/installer/targets/augment.js +3 -3
  233. package/dist/bin/installer/targets/augment.js.map +2 -2
  234. package/dist/bin/installer/targets/claude.d.ts +6 -0
  235. package/dist/bin/installer/targets/claude.d.ts.map +1 -0
  236. package/dist/bin/installer/targets/claude.js +49 -5
  237. package/dist/bin/installer/targets/claude.js.map +2 -2
  238. package/dist/bin/installer/targets/cline.d.ts +13 -0
  239. package/dist/bin/installer/targets/cline.d.ts.map +1 -0
  240. package/dist/bin/installer/targets/cline.js +32 -6
  241. package/dist/bin/installer/targets/cline.js.map +2 -2
  242. package/dist/bin/installer/targets/codex.d.ts +6 -0
  243. package/dist/bin/installer/targets/codex.d.ts.map +1 -0
  244. package/dist/bin/installer/targets/codex.js +64 -12
  245. package/dist/bin/installer/targets/codex.js.map +2 -2
  246. package/dist/bin/installer/targets/continue.d.ts +12 -0
  247. package/dist/bin/installer/targets/continue.d.ts.map +1 -0
  248. package/dist/bin/installer/targets/continue.js +2 -2
  249. package/dist/bin/installer/targets/continue.js.map +2 -2
  250. package/dist/bin/installer/targets/copilot-cli.d.ts +12 -0
  251. package/dist/bin/installer/targets/copilot-cli.d.ts.map +1 -0
  252. package/dist/bin/installer/targets/copilot-cli.js +101 -0
  253. package/dist/bin/installer/targets/copilot-cli.js.map +7 -0
  254. package/dist/bin/installer/targets/copilot.d.ts +6 -0
  255. package/dist/bin/installer/targets/copilot.d.ts.map +1 -0
  256. package/dist/bin/installer/targets/copilot.js +31 -5
  257. package/dist/bin/installer/targets/copilot.js.map +2 -2
  258. package/dist/bin/installer/targets/cursor.d.ts +6 -0
  259. package/dist/bin/installer/targets/cursor.d.ts.map +1 -0
  260. package/dist/bin/installer/targets/cursor.js +4 -4
  261. package/dist/bin/installer/targets/cursor.js.map +2 -2
  262. package/dist/bin/installer/targets/devin.d.ts +13 -0
  263. package/dist/bin/installer/targets/devin.d.ts.map +1 -0
  264. package/dist/bin/installer/targets/devin.js +2 -2
  265. package/dist/bin/installer/targets/devin.js.map +2 -2
  266. package/dist/bin/installer/targets/gemini-cli.d.ts +16 -0
  267. package/dist/bin/installer/targets/gemini-cli.d.ts.map +1 -0
  268. package/dist/bin/installer/targets/gemini-cli.js +2 -2
  269. package/dist/bin/installer/targets/gemini-cli.js.map +2 -2
  270. package/dist/bin/installer/targets/generic.d.ts +59 -0
  271. package/dist/bin/installer/targets/generic.d.ts.map +1 -0
  272. package/dist/bin/installer/targets/generic.js +2 -14
  273. package/dist/bin/installer/targets/generic.js.map +2 -2
  274. package/dist/bin/installer/targets/goose.d.ts +6 -0
  275. package/dist/bin/installer/targets/goose.d.ts.map +1 -0
  276. package/dist/bin/installer/targets/goose.js +3 -3
  277. package/dist/bin/installer/targets/goose.js.map +2 -2
  278. package/dist/bin/installer/targets/index.d.ts +11 -0
  279. package/dist/bin/installer/targets/index.d.ts.map +1 -0
  280. package/dist/bin/installer/targets/index.js +250 -0
  281. package/dist/bin/installer/targets/index.js.map +2 -2
  282. package/dist/bin/installer/targets/junie.d.ts +13 -0
  283. package/dist/bin/installer/targets/junie.d.ts.map +1 -0
  284. package/dist/bin/installer/targets/junie.js +2 -2
  285. package/dist/bin/installer/targets/junie.js.map +2 -2
  286. package/dist/bin/installer/targets/kilo.d.ts +12 -0
  287. package/dist/bin/installer/targets/kilo.d.ts.map +1 -0
  288. package/dist/bin/installer/targets/kilo.js +2 -2
  289. package/dist/bin/installer/targets/kilo.js.map +2 -2
  290. package/dist/bin/installer/targets/kiro.d.ts +5 -0
  291. package/dist/bin/installer/targets/kiro.d.ts.map +1 -0
  292. package/dist/bin/installer/targets/kiro.js +4 -4
  293. package/dist/bin/installer/targets/kiro.js.map +2 -2
  294. package/dist/bin/installer/targets/opencode.d.ts +13 -0
  295. package/dist/bin/installer/targets/opencode.d.ts.map +1 -0
  296. package/dist/bin/installer/targets/opencode.js +2 -2
  297. package/dist/bin/installer/targets/opencode.js.map +2 -2
  298. package/dist/bin/installer/targets/openhands.d.ts +6 -0
  299. package/dist/bin/installer/targets/openhands.d.ts.map +1 -0
  300. package/dist/bin/installer/targets/openhands.js +3 -3
  301. package/dist/bin/installer/targets/openhands.js.map +2 -2
  302. package/dist/bin/installer/targets/qoder.d.ts +12 -0
  303. package/dist/bin/installer/targets/qoder.d.ts.map +1 -0
  304. package/dist/bin/installer/targets/qoder.js +91 -0
  305. package/dist/bin/installer/targets/qoder.js.map +7 -0
  306. package/dist/bin/installer/targets/qwen.d.ts +12 -0
  307. package/dist/bin/installer/targets/qwen.d.ts.map +1 -0
  308. package/dist/bin/installer/targets/qwen.js +96 -0
  309. package/dist/bin/installer/targets/qwen.js.map +7 -0
  310. package/dist/bin/installer/targets/replit.d.ts +6 -0
  311. package/dist/bin/installer/targets/replit.d.ts.map +1 -0
  312. package/dist/bin/installer/targets/replit.js +3 -3
  313. package/dist/bin/installer/targets/replit.js.map +2 -2
  314. package/dist/bin/installer/targets/roo.d.ts +13 -0
  315. package/dist/bin/installer/targets/roo.d.ts.map +1 -0
  316. package/dist/bin/installer/targets/roo.js +2 -2
  317. package/dist/bin/installer/targets/roo.js.map +2 -2
  318. package/dist/bin/installer/targets/tabnine.d.ts +6 -0
  319. package/dist/bin/installer/targets/tabnine.d.ts.map +1 -0
  320. package/dist/bin/installer/targets/tabnine.js +3 -3
  321. package/dist/bin/installer/targets/tabnine.js.map +2 -2
  322. package/dist/bin/installer/targets/trae.d.ts +6 -0
  323. package/dist/bin/installer/targets/trae.d.ts.map +1 -0
  324. package/dist/bin/installer/targets/trae.js +5 -5
  325. package/dist/bin/installer/targets/trae.js.map +2 -2
  326. package/dist/bin/installer/targets/warp.d.ts +12 -0
  327. package/dist/bin/installer/targets/warp.d.ts.map +1 -0
  328. package/dist/bin/installer/targets/warp.js +2 -2
  329. package/dist/bin/installer/targets/warp.js.map +2 -2
  330. package/dist/bin/installer/targets/windsurf.d.ts +13 -0
  331. package/dist/bin/installer/targets/windsurf.d.ts.map +1 -0
  332. package/dist/bin/installer/targets/windsurf.js +35 -6
  333. package/dist/bin/installer/targets/windsurf.js.map +2 -2
  334. package/dist/bin/kirograph.js +74 -6
  335. package/dist/bin/kirograph.js.map +3 -3
  336. package/dist/bin/progress.d.ts +16 -1
  337. package/dist/bin/progress.d.ts.map +1 -1
  338. package/dist/compression/filters/aws.d.ts +9 -0
  339. package/dist/compression/filters/aws.d.ts.map +1 -0
  340. package/dist/compression/filters/docker.d.ts +6 -0
  341. package/dist/compression/filters/docker.d.ts.map +1 -0
  342. package/dist/compression/filters/files.d.ts +6 -0
  343. package/dist/compression/filters/files.d.ts.map +1 -0
  344. package/dist/compression/filters/generic.d.ts +7 -0
  345. package/dist/compression/filters/generic.d.ts.map +1 -0
  346. package/dist/compression/filters/git.d.ts +6 -0
  347. package/dist/compression/filters/git.d.ts.map +1 -0
  348. package/dist/compression/filters/github.d.ts +6 -0
  349. package/dist/compression/filters/github.d.ts.map +1 -0
  350. package/dist/compression/filters/lint.d.ts +6 -0
  351. package/dist/compression/filters/lint.d.ts.map +1 -0
  352. package/dist/compression/filters/misc.d.ts +6 -0
  353. package/dist/compression/filters/misc.d.ts.map +1 -0
  354. package/dist/compression/filters/package.d.ts +6 -0
  355. package/dist/compression/filters/package.d.ts.map +1 -0
  356. package/dist/compression/filters/test.d.ts +6 -0
  357. package/dist/compression/filters/test.d.ts.map +1 -0
  358. package/dist/compression/index.d.ts +29 -0
  359. package/dist/compression/index.d.ts.map +1 -0
  360. package/dist/compression/naive-cost.d.ts +26 -0
  361. package/dist/compression/naive-cost.d.ts.map +1 -0
  362. package/dist/compression/tracker.d.ts +155 -0
  363. package/dist/compression/tracker.d.ts.map +1 -0
  364. package/dist/compression/tracker.js +80 -0
  365. package/dist/compression/tracker.js.map +2 -2
  366. package/dist/compression/types.d.ts +49 -0
  367. package/dist/compression/types.d.ts.map +1 -0
  368. package/dist/config.d.ts +90 -0
  369. package/dist/config.d.ts.map +1 -1
  370. package/dist/config.js +144 -3
  371. package/dist/config.js.map +2 -2
  372. package/dist/core/lock-manager.d.ts +2 -0
  373. package/dist/core/lock-manager.d.ts.map +1 -1
  374. package/dist/core/pipeline.d.ts +4 -1
  375. package/dist/core/pipeline.d.ts.map +1 -1
  376. package/dist/core/pipeline.js +78 -2
  377. package/dist/core/pipeline.js.map +2 -2
  378. package/dist/core/snapshot.d.ts +58 -0
  379. package/dist/core/snapshot.d.ts.map +1 -0
  380. package/dist/data/filters.d.ts +23 -0
  381. package/dist/data/filters.d.ts.map +1 -0
  382. package/dist/data/indexer.d.ts +25 -0
  383. package/dist/data/indexer.d.ts.map +1 -0
  384. package/dist/data/linker.d.ts +37 -0
  385. package/dist/data/linker.d.ts.map +1 -0
  386. package/dist/data/lint.d.ts +27 -0
  387. package/dist/data/lint.d.ts.map +1 -0
  388. package/dist/data/parsers/csv.d.ts +11 -0
  389. package/dist/data/parsers/csv.d.ts.map +1 -0
  390. package/dist/data/parsers/excel.d.ts +10 -0
  391. package/dist/data/parsers/excel.d.ts.map +1 -0
  392. package/dist/data/parsers/index.d.ts +28 -0
  393. package/dist/data/parsers/index.d.ts.map +1 -0
  394. package/dist/data/parsers/json-array.d.ts +9 -0
  395. package/dist/data/parsers/json-array.d.ts.map +1 -0
  396. package/dist/data/parsers/jsonl.d.ts +9 -0
  397. package/dist/data/parsers/jsonl.d.ts.map +1 -0
  398. package/dist/data/parsers/parquet.d.ts +10 -0
  399. package/dist/data/parsers/parquet.d.ts.map +1 -0
  400. package/dist/data/profiler.d.ts +29 -0
  401. package/dist/data/profiler.d.ts.map +1 -0
  402. package/dist/data/queries.d.ts +95 -0
  403. package/dist/data/queries.d.ts.map +1 -0
  404. package/dist/data/types.d.ts +103 -0
  405. package/dist/data/types.d.ts.map +1 -0
  406. package/dist/db/database.d.ts +57 -0
  407. package/dist/db/database.d.ts.map +1 -1
  408. package/dist/db/database.js +75 -5
  409. package/dist/db/database.js.map +2 -2
  410. package/dist/db/memory-schema.sql +5 -1
  411. package/dist/db/patterns-schema.sql +23 -0
  412. package/dist/db/schema.sql +3 -1
  413. package/dist/db/security-schema.sql +72 -0
  414. package/dist/docs/formats/asciidoc.d.ts +9 -0
  415. package/dist/docs/formats/asciidoc.d.ts.map +1 -0
  416. package/dist/docs/formats/html.d.ts +10 -0
  417. package/dist/docs/formats/html.d.ts.map +1 -0
  418. package/dist/docs/formats/index.d.ts +31 -0
  419. package/dist/docs/formats/index.d.ts.map +1 -0
  420. package/dist/docs/formats/markdown.d.ts +11 -0
  421. package/dist/docs/formats/markdown.d.ts.map +1 -0
  422. package/dist/docs/formats/openapi.d.ts +17 -0
  423. package/dist/docs/formats/openapi.d.ts.map +1 -0
  424. package/dist/docs/formats/org.d.ts +9 -0
  425. package/dist/docs/formats/org.d.ts.map +1 -0
  426. package/dist/docs/formats/plaintext.d.ts +11 -0
  427. package/dist/docs/formats/plaintext.d.ts.map +1 -0
  428. package/dist/docs/formats/rdoc.d.ts +10 -0
  429. package/dist/docs/formats/rdoc.d.ts.map +1 -0
  430. package/dist/docs/formats/rst.d.ts +11 -0
  431. package/dist/docs/formats/rst.d.ts.map +1 -0
  432. package/dist/docs/indexer.d.ts +49 -0
  433. package/dist/docs/indexer.d.ts.map +1 -0
  434. package/dist/docs/linker.d.ts +30 -0
  435. package/dist/docs/linker.d.ts.map +1 -0
  436. package/dist/docs/lint.d.ts +27 -0
  437. package/dist/docs/lint.d.ts.map +1 -0
  438. package/dist/docs/queries.d.ts +78 -0
  439. package/dist/docs/queries.d.ts.map +1 -0
  440. package/dist/docs/section-id.d.ts +48 -0
  441. package/dist/docs/section-id.d.ts.map +1 -0
  442. package/dist/docs/summarizer.d.ts +13 -0
  443. package/dist/docs/summarizer.d.ts.map +1 -0
  444. package/dist/docs/types.d.ts +71 -0
  445. package/dist/docs/types.d.ts.map +1 -0
  446. package/dist/docs/vectors.d.ts +54 -0
  447. package/dist/docs/vectors.d.ts.map +1 -0
  448. package/dist/extraction/extractor.d.ts +1 -1
  449. package/dist/extraction/extractor.d.ts.map +1 -1
  450. package/dist/extraction/extractor.js +81 -0
  451. package/dist/extraction/extractor.js.map +2 -2
  452. package/dist/extraction/grammars.d.ts +6 -0
  453. package/dist/extraction/grammars.d.ts.map +1 -1
  454. package/dist/extraction/grammars.js +32 -8
  455. package/dist/extraction/grammars.js.map +2 -2
  456. package/dist/extraction/languages.d.ts.map +1 -1
  457. package/dist/extraction/languages.js +43 -1
  458. package/dist/extraction/languages.js.map +2 -2
  459. package/dist/extraction/notebook.d.ts +14 -0
  460. package/dist/extraction/notebook.d.ts.map +1 -0
  461. package/dist/extraction/notebook.js +300 -0
  462. package/dist/extraction/notebook.js.map +7 -0
  463. package/dist/extraction/wasm/tree-sitter-astro.wasm +0 -0
  464. package/dist/extraction/wasm/tree-sitter-gdscript.wasm +0 -0
  465. package/dist/extraction/wasm/tree-sitter-julia.wasm +0 -0
  466. package/dist/extraction/wasm/tree-sitter-nix.wasm +0 -0
  467. package/dist/extraction/wasm/tree-sitter-perl.wasm +0 -0
  468. package/dist/extraction/wasm/tree-sitter-powershell.wasm +0 -0
  469. package/dist/extraction/wasm/tree-sitter-r.wasm +0 -0
  470. package/dist/extraction/wasm/tree-sitter-sql.wasm +0 -0
  471. package/dist/extraction/wasm/tree-sitter-verilog.wasm +0 -0
  472. package/dist/frameworks/amplify.d.ts +9 -0
  473. package/dist/frameworks/amplify.d.ts.map +1 -0
  474. package/dist/frameworks/angular.d.ts +9 -0
  475. package/dist/frameworks/angular.d.ts.map +1 -0
  476. package/dist/frameworks/ansible.d.ts +8 -0
  477. package/dist/frameworks/ansible.d.ts.map +1 -0
  478. package/dist/frameworks/cloudformation.d.ts +9 -0
  479. package/dist/frameworks/cloudformation.d.ts.map +1 -0
  480. package/dist/frameworks/docker.d.ts +9 -0
  481. package/dist/frameworks/docker.d.ts.map +1 -0
  482. package/dist/frameworks/elixir.d.ts +6 -0
  483. package/dist/frameworks/elixir.d.ts.map +1 -0
  484. package/dist/frameworks/flutter.d.ts +12 -0
  485. package/dist/frameworks/flutter.d.ts.map +1 -0
  486. package/dist/frameworks/flutter.js +130 -0
  487. package/dist/frameworks/flutter.js.map +7 -0
  488. package/dist/frameworks/iac.d.ts +10 -0
  489. package/dist/frameworks/iac.d.ts.map +1 -0
  490. package/dist/frameworks/index.d.ts +14 -0
  491. package/dist/frameworks/index.d.ts.map +1 -1
  492. package/dist/frameworks/index.js +7 -1
  493. package/dist/frameworks/index.js.map +3 -3
  494. package/dist/frameworks/kubernetes.d.ts +9 -0
  495. package/dist/frameworks/kubernetes.d.ts.map +1 -0
  496. package/dist/frameworks/pulumi.d.ts +9 -0
  497. package/dist/frameworks/pulumi.d.ts.map +1 -0
  498. package/dist/frameworks/scala.d.ts +6 -0
  499. package/dist/frameworks/scala.d.ts.map +1 -0
  500. package/dist/frameworks/solidity.d.ts +6 -0
  501. package/dist/frameworks/solidity.d.ts.map +1 -0
  502. package/dist/frameworks/terraform.d.ts +14 -0
  503. package/dist/frameworks/terraform.d.ts.map +1 -0
  504. package/dist/frameworks/vue.d.ts +7 -0
  505. package/dist/frameworks/vue.d.ts.map +1 -0
  506. package/dist/graph/communities.d.ts +43 -0
  507. package/dist/graph/communities.d.ts.map +1 -0
  508. package/dist/graph/communities.js +317 -0
  509. package/dist/graph/communities.js.map +7 -0
  510. package/dist/graph/flows.d.ts +55 -0
  511. package/dist/graph/flows.d.ts.map +1 -0
  512. package/dist/graph/flows.js +138 -0
  513. package/dist/graph/flows.js.map +7 -0
  514. package/dist/graph/refactor.d.ts +43 -0
  515. package/dist/graph/refactor.d.ts.map +1 -0
  516. package/dist/graph/refactor.js +155 -0
  517. package/dist/graph/refactor.js.map +7 -0
  518. package/dist/index.d.ts +36 -4
  519. package/dist/index.d.ts.map +1 -1
  520. package/dist/index.js +1 -1
  521. package/dist/index.js.map +2 -2
  522. package/dist/mcp/cache.d.ts +69 -0
  523. package/dist/mcp/cache.d.ts.map +1 -0
  524. package/dist/mcp/cache.js +172 -0
  525. package/dist/mcp/cache.js.map +7 -0
  526. package/dist/mcp/read-modes.d.ts +31 -0
  527. package/dist/mcp/read-modes.d.ts.map +1 -0
  528. package/dist/mcp/read-modes.js +295 -0
  529. package/dist/mcp/read-modes.js.map +7 -0
  530. package/dist/mcp/server.d.ts +1 -0
  531. package/dist/mcp/server.d.ts.map +1 -1
  532. package/dist/mcp/server.js +17 -3
  533. package/dist/mcp/server.js.map +2 -2
  534. package/dist/mcp/tool-names.d.ts +2 -0
  535. package/dist/mcp/tool-names.d.ts.map +1 -0
  536. package/dist/mcp/tool-names.js +24 -1
  537. package/dist/mcp/tool-names.js.map +2 -2
  538. package/dist/mcp/tools.d.ts +12 -0
  539. package/dist/mcp/tools.d.ts.map +1 -1
  540. package/dist/mcp/tools.js +1560 -4
  541. package/dist/mcp/tools.js.map +3 -3
  542. package/dist/memory/compress.d.ts +19 -0
  543. package/dist/memory/compress.d.ts.map +1 -0
  544. package/dist/memory/database.d.ts +92 -0
  545. package/dist/memory/database.d.ts.map +1 -0
  546. package/dist/memory/database.js +70 -2
  547. package/dist/memory/database.js.map +2 -2
  548. package/dist/memory/index.d.ts +71 -0
  549. package/dist/memory/index.d.ts.map +1 -0
  550. package/dist/memory/index.js +12 -2
  551. package/dist/memory/index.js.map +2 -2
  552. package/dist/memory/symbols.d.ts +21 -0
  553. package/dist/memory/symbols.d.ts.map +1 -0
  554. package/dist/memory/types.d.ts +78 -0
  555. package/dist/memory/types.d.ts.map +1 -0
  556. package/dist/memory/types.js.map +1 -1
  557. package/dist/memory/vectors.d.ts +43 -0
  558. package/dist/memory/vectors.d.ts.map +1 -0
  559. package/dist/patterns/graph.d.ts +16 -0
  560. package/dist/patterns/graph.d.ts.map +1 -0
  561. package/dist/patterns/graph.js +45 -0
  562. package/dist/patterns/graph.js.map +7 -0
  563. package/dist/patterns/index.d.ts +4 -0
  564. package/dist/patterns/index.d.ts.map +1 -0
  565. package/dist/patterns/index.js +39 -0
  566. package/dist/patterns/index.js.map +7 -0
  567. package/dist/patterns/indexer.d.ts +15 -0
  568. package/dist/patterns/indexer.d.ts.map +1 -0
  569. package/dist/patterns/indexer.js +97 -0
  570. package/dist/patterns/indexer.js.map +7 -0
  571. package/dist/patterns/library/command-injection-go.yaml +11 -0
  572. package/dist/patterns/library/dangerous-eval-js.yaml +14 -0
  573. package/dist/patterns/library/dangerous-exec-py.yaml +13 -0
  574. package/dist/patterns/library/dangerous-reflection-java.yaml +8 -0
  575. package/dist/patterns/library/path-traversal-go.yaml +11 -0
  576. package/dist/patterns/library/path-traversal-py.yaml +12 -0
  577. package/dist/patterns/library/path-traversal-readfile-js.yaml +14 -0
  578. package/dist/patterns/library/prototype-pollution-js.yaml +12 -0
  579. package/dist/patterns/library/sql-injection-concat-js.yaml +12 -0
  580. package/dist/patterns/library/sql-injection-java.yaml +13 -0
  581. package/dist/patterns/library/sql-injection-py.yaml +12 -0
  582. package/dist/patterns/library/sql-injection-template-js.yaml +13 -0
  583. package/dist/patterns/library/weak-crypto-md5-js.yaml +13 -0
  584. package/dist/patterns/library/weak-crypto-py.yaml +13 -0
  585. package/dist/patterns/loader.d.ts +18 -0
  586. package/dist/patterns/loader.d.ts.map +1 -0
  587. package/dist/patterns/loader.js +277 -0
  588. package/dist/patterns/loader.js.map +7 -0
  589. package/dist/patterns/runner.d.ts +42 -0
  590. package/dist/patterns/runner.d.ts.map +1 -0
  591. package/dist/patterns/runner.js +277 -0
  592. package/dist/patterns/runner.js.map +7 -0
  593. package/dist/patterns/types.d.ts +27 -0
  594. package/dist/patterns/types.d.ts.map +1 -0
  595. package/dist/patterns/types.js +34 -0
  596. package/dist/patterns/types.js.map +7 -0
  597. package/dist/resolution/bridges/android-rn.d.ts +13 -0
  598. package/dist/resolution/bridges/android-rn.d.ts.map +1 -0
  599. package/dist/resolution/bridges/android-rn.js +298 -0
  600. package/dist/resolution/bridges/android-rn.js.map +7 -0
  601. package/dist/resolution/bridges/expo-modules.d.ts +10 -0
  602. package/dist/resolution/bridges/expo-modules.d.ts.map +1 -0
  603. package/dist/resolution/bridges/expo-modules.js +155 -0
  604. package/dist/resolution/bridges/expo-modules.js.map +7 -0
  605. package/dist/resolution/bridges/flutter-channel.d.ts +14 -0
  606. package/dist/resolution/bridges/flutter-channel.d.ts.map +1 -0
  607. package/dist/resolution/bridges/flutter-channel.js +385 -0
  608. package/dist/resolution/bridges/flutter-channel.js.map +7 -0
  609. package/dist/resolution/bridges/index.d.ts +40 -0
  610. package/dist/resolution/bridges/index.d.ts.map +1 -0
  611. package/dist/resolution/bridges/index.js +80 -0
  612. package/dist/resolution/bridges/index.js.map +7 -0
  613. package/dist/resolution/bridges/native-events.d.ts +10 -0
  614. package/dist/resolution/bridges/native-events.d.ts.map +1 -0
  615. package/dist/resolution/bridges/native-events.js +188 -0
  616. package/dist/resolution/bridges/native-events.js.map +7 -0
  617. package/dist/resolution/bridges/native-views.d.ts +13 -0
  618. package/dist/resolution/bridges/native-views.d.ts.map +1 -0
  619. package/dist/resolution/bridges/native-views.js +244 -0
  620. package/dist/resolution/bridges/native-views.js.map +7 -0
  621. package/dist/resolution/bridges/react-native.d.ts +9 -0
  622. package/dist/resolution/bridges/react-native.d.ts.map +1 -0
  623. package/dist/resolution/bridges/react-native.js +161 -0
  624. package/dist/resolution/bridges/react-native.js.map +7 -0
  625. package/dist/resolution/bridges/swift-objc.d.ts +14 -0
  626. package/dist/resolution/bridges/swift-objc.d.ts.map +1 -0
  627. package/dist/resolution/bridges/swift-objc.js +227 -0
  628. package/dist/resolution/bridges/swift-objc.js.map +7 -0
  629. package/dist/resolution/bridges/turbomodules.d.ts +10 -0
  630. package/dist/resolution/bridges/turbomodules.d.ts.map +1 -0
  631. package/dist/resolution/bridges/turbomodules.js +216 -0
  632. package/dist/resolution/bridges/turbomodules.js.map +7 -0
  633. package/dist/resolution/index.d.ts +28 -3
  634. package/dist/resolution/index.d.ts.map +1 -1
  635. package/dist/resolution/index.js +61 -2
  636. package/dist/resolution/index.js.map +2 -2
  637. package/dist/security/attack-surface.d.ts +46 -0
  638. package/dist/security/attack-surface.d.ts.map +1 -0
  639. package/dist/security/attack-surface.js +206 -0
  640. package/dist/security/attack-surface.js.map +7 -0
  641. package/dist/security/context-warnings.d.ts +40 -0
  642. package/dist/security/context-warnings.d.ts.map +1 -0
  643. package/dist/security/context-warnings.js +123 -0
  644. package/dist/security/context-warnings.js.map +7 -0
  645. package/dist/security/data-flows.d.ts +33 -0
  646. package/dist/security/data-flows.d.ts.map +1 -0
  647. package/dist/security/data-flows.js +286 -0
  648. package/dist/security/data-flows.js.map +7 -0
  649. package/dist/security/dep-confusion.d.ts +23 -0
  650. package/dist/security/dep-confusion.d.ts.map +1 -0
  651. package/dist/security/dep-confusion.js +255 -0
  652. package/dist/security/dep-confusion.js.map +7 -0
  653. package/dist/security/errors.d.ts +16 -0
  654. package/dist/security/errors.d.ts.map +1 -0
  655. package/dist/security/errors.js +51 -0
  656. package/dist/security/errors.js.map +7 -0
  657. package/dist/security/export/fix-suggestions.d.ts +21 -0
  658. package/dist/security/export/fix-suggestions.d.ts.map +1 -0
  659. package/dist/security/export/fix-suggestions.js +58 -0
  660. package/dist/security/export/fix-suggestions.js.map +7 -0
  661. package/dist/security/export/sbom.d.ts +33 -0
  662. package/dist/security/export/sbom.d.ts.map +1 -0
  663. package/dist/security/export/sbom.js +230 -0
  664. package/dist/security/export/sbom.js.map +7 -0
  665. package/dist/security/export/serialization.d.ts +62 -0
  666. package/dist/security/export/serialization.d.ts.map +1 -0
  667. package/dist/security/export/serialization.js +142 -0
  668. package/dist/security/export/serialization.js.map +7 -0
  669. package/dist/security/export/vex.d.ts +58 -0
  670. package/dist/security/export/vex.d.ts.map +1 -0
  671. package/dist/security/export/vex.js +220 -0
  672. package/dist/security/export/vex.js.map +7 -0
  673. package/dist/security/index.d.ts +21 -0
  674. package/dist/security/index.d.ts.map +1 -0
  675. package/dist/security/index.js +67 -0
  676. package/dist/security/index.js.map +7 -0
  677. package/dist/security/integrator.d.ts +63 -0
  678. package/dist/security/integrator.d.ts.map +1 -0
  679. package/dist/security/integrator.js +491 -0
  680. package/dist/security/integrator.js.map +7 -0
  681. package/dist/security/license.d.ts +33 -0
  682. package/dist/security/license.d.ts.map +1 -0
  683. package/dist/security/license.js +70 -0
  684. package/dist/security/license.js.map +7 -0
  685. package/dist/security/manifest/adapter.d.ts +92 -0
  686. package/dist/security/manifest/adapter.d.ts.map +1 -0
  687. package/dist/security/manifest/adapter.js +243 -0
  688. package/dist/security/manifest/adapter.js.map +7 -0
  689. package/dist/security/manifest/parser.d.ts +73 -0
  690. package/dist/security/manifest/parser.d.ts.map +1 -0
  691. package/dist/security/manifest/parser.js +376 -0
  692. package/dist/security/manifest/parser.js.map +7 -0
  693. package/dist/security/manifest/plugins/cargo.d.ts +11 -0
  694. package/dist/security/manifest/plugins/cargo.d.ts.map +1 -0
  695. package/dist/security/manifest/plugins/cargo.js +233 -0
  696. package/dist/security/manifest/plugins/cargo.js.map +7 -0
  697. package/dist/security/manifest/plugins/composer.d.ts +11 -0
  698. package/dist/security/manifest/plugins/composer.d.ts.map +1 -0
  699. package/dist/security/manifest/plugins/composer.js +152 -0
  700. package/dist/security/manifest/plugins/composer.js.map +7 -0
  701. package/dist/security/manifest/plugins/go.d.ts +12 -0
  702. package/dist/security/manifest/plugins/go.d.ts.map +1 -0
  703. package/dist/security/manifest/plugins/go.js +146 -0
  704. package/dist/security/manifest/plugins/go.js.map +7 -0
  705. package/dist/security/manifest/plugins/gradle.d.ts +12 -0
  706. package/dist/security/manifest/plugins/gradle.d.ts.map +1 -0
  707. package/dist/security/manifest/plugins/gradle.js +159 -0
  708. package/dist/security/manifest/plugins/gradle.js.map +7 -0
  709. package/dist/security/manifest/plugins/hex.d.ts +11 -0
  710. package/dist/security/manifest/plugins/hex.d.ts.map +1 -0
  711. package/dist/security/manifest/plugins/hex.js +159 -0
  712. package/dist/security/manifest/plugins/hex.js.map +7 -0
  713. package/dist/security/manifest/plugins/maven.d.ts +11 -0
  714. package/dist/security/manifest/plugins/maven.d.ts.map +1 -0
  715. package/dist/security/manifest/plugins/maven.js +128 -0
  716. package/dist/security/manifest/plugins/maven.js.map +7 -0
  717. package/dist/security/manifest/plugins/npm.d.ts +11 -0
  718. package/dist/security/manifest/plugins/npm.d.ts.map +1 -0
  719. package/dist/security/manifest/plugins/npm.js +284 -0
  720. package/dist/security/manifest/plugins/npm.js.map +7 -0
  721. package/dist/security/manifest/plugins/nuget.d.ts +12 -0
  722. package/dist/security/manifest/plugins/nuget.d.ts.map +1 -0
  723. package/dist/security/manifest/plugins/nuget.js +186 -0
  724. package/dist/security/manifest/plugins/nuget.js.map +7 -0
  725. package/dist/security/manifest/plugins/pip.d.ts +11 -0
  726. package/dist/security/manifest/plugins/pip.d.ts.map +1 -0
  727. package/dist/security/manifest/plugins/pip.js +123 -0
  728. package/dist/security/manifest/plugins/pip.js.map +7 -0
  729. package/dist/security/manifest/plugins/pubspec.d.ts +11 -0
  730. package/dist/security/manifest/plugins/pubspec.d.ts.map +1 -0
  731. package/dist/security/manifest/plugins/pubspec.js +212 -0
  732. package/dist/security/manifest/plugins/pubspec.js.map +7 -0
  733. package/dist/security/manifest/plugins/pyproject.d.ts +3 -0
  734. package/dist/security/manifest/plugins/pyproject.d.ts.map +1 -0
  735. package/dist/security/manifest/plugins/pyproject.js +261 -0
  736. package/dist/security/manifest/plugins/pyproject.js.map +7 -0
  737. package/dist/security/manifest/plugins/rubygems.d.ts +11 -0
  738. package/dist/security/manifest/plugins/rubygems.d.ts.map +1 -0
  739. package/dist/security/manifest/plugins/rubygems.js +185 -0
  740. package/dist/security/manifest/plugins/rubygems.js.map +7 -0
  741. package/dist/security/manifest/plugins/swift.d.ts +11 -0
  742. package/dist/security/manifest/plugins/swift.d.ts.map +1 -0
  743. package/dist/security/manifest/plugins/swift.js +200 -0
  744. package/dist/security/manifest/plugins/swift.js.map +7 -0
  745. package/dist/security/owasp.d.ts +16 -0
  746. package/dist/security/owasp.d.ts.map +1 -0
  747. package/dist/security/owasp.js +104 -0
  748. package/dist/security/owasp.js.map +7 -0
  749. package/dist/security/pipeline.d.ts +37 -0
  750. package/dist/security/pipeline.d.ts.map +1 -0
  751. package/dist/security/pipeline.js +125 -0
  752. package/dist/security/pipeline.js.map +7 -0
  753. package/dist/security/reachability.d.ts +67 -0
  754. package/dist/security/reachability.d.ts.map +1 -0
  755. package/dist/security/reachability.js +276 -0
  756. package/dist/security/reachability.js.map +7 -0
  757. package/dist/security/remediation.d.ts +51 -0
  758. package/dist/security/remediation.d.ts.map +1 -0
  759. package/dist/security/remediation.js +126 -0
  760. package/dist/security/remediation.js.map +7 -0
  761. package/dist/security/secrets.d.ts +38 -0
  762. package/dist/security/secrets.d.ts.map +1 -0
  763. package/dist/security/secrets.js +176 -0
  764. package/dist/security/secrets.js.map +7 -0
  765. package/dist/security/staleness.d.ts +43 -0
  766. package/dist/security/staleness.d.ts.map +1 -0
  767. package/dist/security/staleness.js +231 -0
  768. package/dist/security/staleness.js.map +7 -0
  769. package/dist/security/supply-chain.d.ts +34 -0
  770. package/dist/security/supply-chain.d.ts.map +1 -0
  771. package/dist/security/supply-chain.js +301 -0
  772. package/dist/security/supply-chain.js.map +7 -0
  773. package/dist/security/suppressions.d.ts +18 -0
  774. package/dist/security/suppressions.d.ts.map +1 -0
  775. package/dist/security/suppressions.js +106 -0
  776. package/dist/security/suppressions.js.map +7 -0
  777. package/dist/security/types.d.ts +144 -0
  778. package/dist/security/types.d.ts.map +1 -0
  779. package/dist/security/types.js +17 -0
  780. package/dist/security/types.js.map +7 -0
  781. package/dist/security/vuln/client.d.ts +90 -0
  782. package/dist/security/vuln/client.d.ts.map +1 -0
  783. package/dist/security/vuln/client.js +355 -0
  784. package/dist/security/vuln/client.js.map +7 -0
  785. package/dist/security/vuln/epss-client.d.ts +26 -0
  786. package/dist/security/vuln/epss-client.d.ts.map +1 -0
  787. package/dist/security/vuln/epss-client.js +95 -0
  788. package/dist/security/vuln/epss-client.js.map +7 -0
  789. package/dist/security/vuln/index.d.ts +6 -0
  790. package/dist/security/vuln/index.d.ts.map +1 -0
  791. package/dist/security/vuln/index.js +29 -0
  792. package/dist/security/vuln/index.js.map +7 -0
  793. package/dist/security/vuln/osv-adapter.d.ts +58 -0
  794. package/dist/security/vuln/osv-adapter.d.ts.map +1 -0
  795. package/dist/security/vuln/osv-adapter.js +321 -0
  796. package/dist/security/vuln/osv-adapter.js.map +7 -0
  797. package/dist/security/vuln/types.d.ts +29 -0
  798. package/dist/security/vuln/types.d.ts.map +1 -0
  799. package/dist/security/vuln/types.js +17 -0
  800. package/dist/security/vuln/types.js.map +7 -0
  801. package/dist/sync/index.d.ts +4 -2
  802. package/dist/sync/index.d.ts.map +1 -1
  803. package/dist/types.d.ts +10 -4
  804. package/dist/types.d.ts.map +1 -1
  805. package/dist/types.js.map +2 -2
  806. package/dist/vectors/index.d.ts +11 -3
  807. package/dist/vectors/index.d.ts.map +1 -1
  808. package/dist/vectors/qdrant-index.d.ts +10 -3
  809. package/dist/vectors/qdrant-index.d.ts.map +1 -1
  810. package/dist/vectors/typesense-index.d.ts.map +1 -1
  811. package/dist/watchmen/index.js +83 -0
  812. package/dist/watchmen/index.js.map +7 -0
  813. package/dist/watchmen/synthesize.js +475 -0
  814. package/dist/watchmen/synthesize.js.map +7 -0
  815. package/package.json +6 -2
@@ -0,0 +1,295 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var read_modes_exports = {};
30
+ __export(read_modes_exports, {
31
+ executeReadMode: () => executeReadMode
32
+ });
33
+ module.exports = __toCommonJS(read_modes_exports);
34
+ var fs = __toESM(require("fs"));
35
+ var path = __toESM(require("path"));
36
+ var import_cache = require("./cache");
37
+ function executeReadMode(opts) {
38
+ const { mode, filePath, start, end, cg } = opts;
39
+ switch (mode) {
40
+ case "full":
41
+ return readFull(filePath);
42
+ case "map":
43
+ return readMap(filePath, cg);
44
+ case "signatures":
45
+ return readSignatures(filePath, cg);
46
+ case "diff":
47
+ return readDiff(filePath);
48
+ case "lines":
49
+ return readLines(filePath, start, end);
50
+ case "imports":
51
+ return readImports(filePath, cg);
52
+ case "exports":
53
+ return readExports(filePath, cg);
54
+ default:
55
+ return readFull(filePath);
56
+ }
57
+ }
58
+ function readFull(filePath) {
59
+ const content = fs.readFileSync(filePath, "utf8");
60
+ return {
61
+ content,
62
+ mode: "full",
63
+ tokenEstimate: Math.round(content.length / 4)
64
+ };
65
+ }
66
+ function readMap(filePath, cg) {
67
+ if (cg) {
68
+ const projectRoot = cg.getProjectRoot();
69
+ const relPath = path.isAbsolute(filePath) ? path.relative(projectRoot, filePath) : filePath;
70
+ try {
71
+ const db = cg.getDatabase();
72
+ const nodes = db.getNodesByFile(relPath);
73
+ if (nodes.length > 0) {
74
+ const lines = [`# ${relPath} \u2014 Structure Map (${nodes.length} symbols)
75
+ `];
76
+ const sorted = [...nodes].sort((a, b) => a.startLine - b.startLine);
77
+ for (const n of sorted) {
78
+ const exported = n.isExported ? " [exported]" : "";
79
+ lines.push(` L${n.startLine}-${n.endLine} ${n.kind} ${n.name}${exported}`);
80
+ }
81
+ const content2 = lines.join("\n");
82
+ return { content: content2, mode: "map", tokenEstimate: Math.round(content2.length / 4) };
83
+ }
84
+ } catch {
85
+ }
86
+ }
87
+ const raw = fs.readFileSync(filePath, "utf8");
88
+ const fileLines = raw.split("\n");
89
+ const structureLines = [`# ${path.basename(filePath)} \u2014 Structure Map
90
+ `];
91
+ const patterns = [
92
+ /^\s*(export\s+)?(async\s+)?function\s+(\w+)/,
93
+ /^\s*(export\s+)?(default\s+)?class\s+(\w+)/,
94
+ /^\s*(export\s+)?interface\s+(\w+)/,
95
+ /^\s*(export\s+)?type\s+(\w+)/,
96
+ /^\s*(export\s+)?enum\s+(\w+)/,
97
+ /^\s*(export\s+)?const\s+(\w+)\s*=/
98
+ ];
99
+ for (let i = 0; i < fileLines.length; i++) {
100
+ const line = fileLines[i];
101
+ for (const pat of patterns) {
102
+ if (pat.test(line)) {
103
+ structureLines.push(` L${i + 1} ${line.trim()}`);
104
+ break;
105
+ }
106
+ }
107
+ }
108
+ const content = structureLines.length > 1 ? structureLines.join("\n") : `# ${path.basename(filePath)} \u2014 No structure detected`;
109
+ return { content, mode: "map", tokenEstimate: Math.round(content.length / 4) };
110
+ }
111
+ function readSignatures(filePath, cg) {
112
+ if (cg) {
113
+ const projectRoot = cg.getProjectRoot();
114
+ const relPath = path.isAbsolute(filePath) ? path.relative(projectRoot, filePath) : filePath;
115
+ try {
116
+ const db = cg.getDatabase();
117
+ const nodes = db.getNodesByFile(relPath);
118
+ if (nodes.length > 0) {
119
+ const lines = [`# ${relPath} \u2014 Signatures
120
+ `];
121
+ const sorted = [...nodes].sort((a, b) => a.startLine - b.startLine);
122
+ for (const n of sorted) {
123
+ if (n.signature) {
124
+ lines.push(`${n.signature}`);
125
+ } else {
126
+ lines.push(`${n.kind} ${n.name} (L${n.startLine})`);
127
+ }
128
+ }
129
+ const content2 = lines.join("\n");
130
+ return { content: content2, mode: "signatures", tokenEstimate: Math.round(content2.length / 4) };
131
+ }
132
+ } catch {
133
+ }
134
+ }
135
+ const raw = fs.readFileSync(filePath, "utf8");
136
+ const fileLines = raw.split("\n");
137
+ const sigs = [`# ${path.basename(filePath)} \u2014 Signatures
138
+ `];
139
+ const patterns = [
140
+ /^\s*(export\s+)?(async\s+)?function\s+/,
141
+ /^\s*(export\s+)?(default\s+)?class\s+/,
142
+ /^\s*(export\s+)?interface\s+/,
143
+ /^\s*(export\s+)?type\s+\w+/
144
+ ];
145
+ for (let i = 0; i < fileLines.length; i++) {
146
+ const line = fileLines[i];
147
+ for (const pat of patterns) {
148
+ if (pat.test(line)) {
149
+ const sig = line.replace(/\{.*$/, "").trim();
150
+ sigs.push(sig);
151
+ break;
152
+ }
153
+ }
154
+ }
155
+ const content = sigs.length > 1 ? sigs.join("\n") : `# ${path.basename(filePath)} \u2014 No signatures found`;
156
+ return { content, mode: "signatures", tokenEstimate: Math.round(content.length / 4) };
157
+ }
158
+ function readDiff(filePath) {
159
+ const cache = (0, import_cache.getFileReadCache)();
160
+ const previousContent = cache.getPreviousContent(filePath);
161
+ if (!previousContent) {
162
+ const content2 = fs.readFileSync(filePath, "utf8");
163
+ return {
164
+ content: `[no previous version cached \u2014 showing full content]
165
+
166
+ ${content2}`,
167
+ mode: "diff",
168
+ tokenEstimate: Math.round(content2.length / 4)
169
+ };
170
+ }
171
+ const currentContent = fs.readFileSync(filePath, "utf8");
172
+ if (currentContent === previousContent) {
173
+ const msg = "[no changes since last read]";
174
+ return { content: msg, mode: "diff", tokenEstimate: 5 };
175
+ }
176
+ const oldLines = previousContent.split("\n");
177
+ const newLines = currentContent.split("\n");
178
+ const diffLines = [`# Diff: ${path.basename(filePath)}
179
+ `];
180
+ let i = 0, j = 0;
181
+ while (i < oldLines.length || j < newLines.length) {
182
+ if (i >= oldLines.length) {
183
+ diffLines.push(`+ ${newLines[j]}`);
184
+ j++;
185
+ } else if (j >= newLines.length) {
186
+ diffLines.push(`- ${oldLines[i]}`);
187
+ i++;
188
+ } else if (oldLines[i] === newLines[j]) {
189
+ i++;
190
+ j++;
191
+ } else {
192
+ let foundInNew = -1;
193
+ for (let k = j + 1; k < Math.min(j + 5, newLines.length); k++) {
194
+ if (newLines[k] === oldLines[i]) {
195
+ foundInNew = k;
196
+ break;
197
+ }
198
+ }
199
+ if (foundInNew >= 0) {
200
+ while (j < foundInNew) {
201
+ diffLines.push(`+ ${newLines[j]}`);
202
+ j++;
203
+ }
204
+ } else {
205
+ diffLines.push(`- ${oldLines[i]}`);
206
+ i++;
207
+ diffLines.push(`+ ${newLines[j]}`);
208
+ j++;
209
+ }
210
+ }
211
+ }
212
+ const content = diffLines.join("\n");
213
+ return { content, mode: "diff", tokenEstimate: Math.round(content.length / 4) };
214
+ }
215
+ function readLines(filePath, start, end) {
216
+ const raw = fs.readFileSync(filePath, "utf8");
217
+ const allLines = raw.split("\n");
218
+ const startLine = Math.max(1, start ?? 1);
219
+ const endLine = Math.min(allLines.length, end ?? allLines.length);
220
+ const selected = allLines.slice(startLine - 1, endLine);
221
+ const numbered = selected.map((line, idx) => `${startLine + idx}: ${line}`);
222
+ const content = `# ${path.basename(filePath)} \u2014 Lines ${startLine}-${endLine} of ${allLines.length}
223
+
224
+ ${numbered.join("\n")}`;
225
+ return { content, mode: "lines", tokenEstimate: Math.round(content.length / 4) };
226
+ }
227
+ function readImports(filePath, cg) {
228
+ if (cg) {
229
+ const projectRoot = cg.getProjectRoot();
230
+ const relPath = path.isAbsolute(filePath) ? path.relative(projectRoot, filePath) : filePath;
231
+ try {
232
+ const db = cg.getDatabase();
233
+ const nodes = db.getNodesByFile(relPath);
234
+ const importNodes = nodes.filter((n) => n.kind === "import");
235
+ if (importNodes.length > 0) {
236
+ const lines = [`# ${relPath} \u2014 Imports (${importNodes.length})
237
+ `];
238
+ for (const n of importNodes) {
239
+ lines.push(` ${n.name} (L${n.startLine})`);
240
+ }
241
+ const content2 = lines.join("\n");
242
+ return { content: content2, mode: "imports", tokenEstimate: Math.round(content2.length / 4) };
243
+ }
244
+ } catch {
245
+ }
246
+ }
247
+ const raw = fs.readFileSync(filePath, "utf8");
248
+ const fileLines = raw.split("\n");
249
+ const importLines = [`# ${path.basename(filePath)} \u2014 Imports
250
+ `];
251
+ for (const line of fileLines) {
252
+ if (/^\s*(import|from|require\()/.test(line)) {
253
+ importLines.push(` ${line.trim()}`);
254
+ }
255
+ }
256
+ const content = importLines.length > 1 ? importLines.join("\n") : `# ${path.basename(filePath)} \u2014 No imports found`;
257
+ return { content, mode: "imports", tokenEstimate: Math.round(content.length / 4) };
258
+ }
259
+ function readExports(filePath, cg) {
260
+ if (cg) {
261
+ const projectRoot = cg.getProjectRoot();
262
+ const relPath = path.isAbsolute(filePath) ? path.relative(projectRoot, filePath) : filePath;
263
+ try {
264
+ const db = cg.getDatabase();
265
+ const nodes = db.getNodesByFile(relPath);
266
+ const exportedNodes = nodes.filter((n) => n.isExported);
267
+ if (exportedNodes.length > 0) {
268
+ const lines = [`# ${relPath} \u2014 Exports (${exportedNodes.length})
269
+ `];
270
+ for (const n of exportedNodes) {
271
+ lines.push(` ${n.kind} ${n.name} (L${n.startLine})`);
272
+ }
273
+ const content2 = lines.join("\n");
274
+ return { content: content2, mode: "exports", tokenEstimate: Math.round(content2.length / 4) };
275
+ }
276
+ } catch {
277
+ }
278
+ }
279
+ const raw = fs.readFileSync(filePath, "utf8");
280
+ const fileLines = raw.split("\n");
281
+ const exportLines = [`# ${path.basename(filePath)} \u2014 Exports
282
+ `];
283
+ for (const line of fileLines) {
284
+ if (/^\s*export\s+/.test(line)) {
285
+ exportLines.push(` ${line.trim()}`);
286
+ }
287
+ }
288
+ const content = exportLines.length > 1 ? exportLines.join("\n") : `# ${path.basename(filePath)} \u2014 No exports found`;
289
+ return { content, mode: "exports", tokenEstimate: Math.round(content.length / 4) };
290
+ }
291
+ // Annotate the CommonJS export names for ESM import in node:
292
+ 0 && (module.exports = {
293
+ executeReadMode
294
+ });
295
+ //# sourceMappingURL=read-modes.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/mcp/read-modes.ts"],
4
+ "sourcesContent": ["/**\n * KiroGraph Read Modes\n *\n * Implements multiple read modes for the kirograph_read tool:\n * - full: entire file content (default)\n * - map: structure overview (symbols with line numbers)\n * - signatures: function/class signatures only\n * - diff: changes since last read\n * - lines: specific line range\n * - imports: import statements\n * - exports: exported symbols\n */\n\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport type KiroGraph from '../index';\nimport { getFileReadCache } from './cache';\n\nexport type ReadMode = 'full' | 'map' | 'signatures' | 'diff' | 'lines' | 'imports' | 'exports';\n\nexport interface ReadModeOptions {\n mode: ReadMode;\n filePath: string;\n start?: number;\n end?: number;\n cg?: KiroGraph | null;\n}\n\nexport interface ReadModeResult {\n content: string;\n mode: ReadMode;\n tokenEstimate: number;\n}\n\n/**\n * Execute a read mode against a file.\n */\nexport function executeReadMode(opts: ReadModeOptions): ReadModeResult {\n const { mode, filePath, start, end, cg } = opts;\n\n switch (mode) {\n case 'full':\n return readFull(filePath);\n case 'map':\n return readMap(filePath, cg);\n case 'signatures':\n return readSignatures(filePath, cg);\n case 'diff':\n return readDiff(filePath);\n case 'lines':\n return readLines(filePath, start, end);\n case 'imports':\n return readImports(filePath, cg);\n case 'exports':\n return readExports(filePath, cg);\n default:\n return readFull(filePath);\n }\n}\n\nfunction readFull(filePath: string): ReadModeResult {\n const content = fs.readFileSync(filePath, 'utf8');\n return {\n content,\n mode: 'full',\n tokenEstimate: Math.round(content.length / 4),\n };\n}\n\nfunction readMap(filePath: string, cg?: KiroGraph | null): ReadModeResult {\n if (cg) {\n // Use graph data \u2014 no file read needed\n const projectRoot = cg.getProjectRoot();\n const relPath = path.isAbsolute(filePath)\n ? path.relative(projectRoot, filePath)\n : filePath;\n\n try {\n const db = cg.getDatabase();\n const nodes = db.getNodesByFile(relPath);\n if (nodes.length > 0) {\n const lines = [`# ${relPath} \u2014 Structure Map (${nodes.length} symbols)\\n`];\n // Sort by line number\n const sorted = [...nodes].sort((a, b) => a.startLine - b.startLine);\n for (const n of sorted) {\n const exported = n.isExported ? ' [exported]' : '';\n lines.push(` L${n.startLine}-${n.endLine} ${n.kind} ${n.name}${exported}`);\n }\n const content = lines.join('\\n');\n return { content, mode: 'map', tokenEstimate: Math.round(content.length / 4) };\n }\n } catch {\n // Fall through to file-based approach\n }\n }\n\n // Fallback: parse file for structure indicators\n const raw = fs.readFileSync(filePath, 'utf8');\n const fileLines = raw.split('\\n');\n const structureLines: string[] = [`# ${path.basename(filePath)} \u2014 Structure Map\\n`];\n\n const patterns = [\n /^\\s*(export\\s+)?(async\\s+)?function\\s+(\\w+)/,\n /^\\s*(export\\s+)?(default\\s+)?class\\s+(\\w+)/,\n /^\\s*(export\\s+)?interface\\s+(\\w+)/,\n /^\\s*(export\\s+)?type\\s+(\\w+)/,\n /^\\s*(export\\s+)?enum\\s+(\\w+)/,\n /^\\s*(export\\s+)?const\\s+(\\w+)\\s*=/,\n ];\n\n for (let i = 0; i < fileLines.length; i++) {\n const line = fileLines[i]!;\n for (const pat of patterns) {\n if (pat.test(line)) {\n structureLines.push(` L${i + 1} ${line.trim()}`);\n break;\n }\n }\n }\n\n const content = structureLines.length > 1\n ? structureLines.join('\\n')\n : `# ${path.basename(filePath)} \u2014 No structure detected`;\n return { content, mode: 'map', tokenEstimate: Math.round(content.length / 4) };\n}\n\nfunction readSignatures(filePath: string, cg?: KiroGraph | null): ReadModeResult {\n if (cg) {\n const projectRoot = cg.getProjectRoot();\n const relPath = path.isAbsolute(filePath)\n ? path.relative(projectRoot, filePath)\n : filePath;\n\n try {\n const db = cg.getDatabase();\n const nodes = db.getNodesByFile(relPath);\n if (nodes.length > 0) {\n const lines = [`# ${relPath} \u2014 Signatures\\n`];\n const sorted = [...nodes].sort((a, b) => a.startLine - b.startLine);\n for (const n of sorted) {\n if (n.signature) {\n lines.push(`${n.signature}`);\n } else {\n lines.push(`${n.kind} ${n.name} (L${n.startLine})`);\n }\n }\n const content = lines.join('\\n');\n return { content, mode: 'signatures', tokenEstimate: Math.round(content.length / 4) };\n }\n } catch {\n // Fall through\n }\n }\n\n // Fallback: extract first line of each function/class\n const raw = fs.readFileSync(filePath, 'utf8');\n const fileLines = raw.split('\\n');\n const sigs: string[] = [`# ${path.basename(filePath)} \u2014 Signatures\\n`];\n\n const patterns = [\n /^\\s*(export\\s+)?(async\\s+)?function\\s+/,\n /^\\s*(export\\s+)?(default\\s+)?class\\s+/,\n /^\\s*(export\\s+)?interface\\s+/,\n /^\\s*(export\\s+)?type\\s+\\w+/,\n ];\n\n for (let i = 0; i < fileLines.length; i++) {\n const line = fileLines[i]!;\n for (const pat of patterns) {\n if (pat.test(line)) {\n // Take the line up to the opening brace or end\n const sig = line.replace(/\\{.*$/, '').trim();\n sigs.push(sig);\n break;\n }\n }\n }\n\n const content = sigs.length > 1\n ? sigs.join('\\n')\n : `# ${path.basename(filePath)} \u2014 No signatures found`;\n return { content, mode: 'signatures', tokenEstimate: Math.round(content.length / 4) };\n}\n\nfunction readDiff(filePath: string): ReadModeResult {\n const cache = getFileReadCache();\n const previousContent = cache.getPreviousContent(filePath);\n\n if (!previousContent) {\n // No previous version \u2014 return full content\n const content = fs.readFileSync(filePath, 'utf8');\n return {\n content: `[no previous version cached \u2014 showing full content]\\n\\n${content}`,\n mode: 'diff',\n tokenEstimate: Math.round(content.length / 4),\n };\n }\n\n const currentContent = fs.readFileSync(filePath, 'utf8');\n if (currentContent === previousContent) {\n const msg = '[no changes since last read]';\n return { content: msg, mode: 'diff', tokenEstimate: 5 };\n }\n\n // Simple line-based diff\n const oldLines = previousContent.split('\\n');\n const newLines = currentContent.split('\\n');\n const diffLines: string[] = [`# Diff: ${path.basename(filePath)}\\n`];\n\n let i = 0, j = 0;\n while (i < oldLines.length || j < newLines.length) {\n if (i >= oldLines.length) {\n diffLines.push(`+ ${newLines[j]}`);\n j++;\n } else if (j >= newLines.length) {\n diffLines.push(`- ${oldLines[i]}`);\n i++;\n } else if (oldLines[i] === newLines[j]) {\n i++;\n j++;\n } else {\n // Simple heuristic: look ahead for matching lines\n let foundInNew = -1;\n for (let k = j + 1; k < Math.min(j + 5, newLines.length); k++) {\n if (newLines[k] === oldLines[i]) { foundInNew = k; break; }\n }\n if (foundInNew >= 0) {\n // Lines were added\n while (j < foundInNew) {\n diffLines.push(`+ ${newLines[j]}`);\n j++;\n }\n } else {\n diffLines.push(`- ${oldLines[i]}`);\n i++;\n diffLines.push(`+ ${newLines[j]}`);\n j++;\n }\n }\n }\n\n const content = diffLines.join('\\n');\n return { content, mode: 'diff', tokenEstimate: Math.round(content.length / 4) };\n}\n\nfunction readLines(filePath: string, start?: number, end?: number): ReadModeResult {\n const raw = fs.readFileSync(filePath, 'utf8');\n const allLines = raw.split('\\n');\n const startLine = Math.max(1, start ?? 1);\n const endLine = Math.min(allLines.length, end ?? allLines.length);\n\n const selected = allLines.slice(startLine - 1, endLine);\n const numbered = selected.map((line, idx) => `${startLine + idx}: ${line}`);\n const content = `# ${path.basename(filePath)} \u2014 Lines ${startLine}-${endLine} of ${allLines.length}\\n\\n${numbered.join('\\n')}`;\n return { content, mode: 'lines', tokenEstimate: Math.round(content.length / 4) };\n}\n\nfunction readImports(filePath: string, cg?: KiroGraph | null): ReadModeResult {\n if (cg) {\n const projectRoot = cg.getProjectRoot();\n const relPath = path.isAbsolute(filePath)\n ? path.relative(projectRoot, filePath)\n : filePath;\n\n try {\n const db = cg.getDatabase();\n const nodes = db.getNodesByFile(relPath);\n const importNodes = nodes.filter(n => n.kind === 'import');\n if (importNodes.length > 0) {\n const lines = [`# ${relPath} \u2014 Imports (${importNodes.length})\\n`];\n for (const n of importNodes) {\n lines.push(` ${n.name} (L${n.startLine})`);\n }\n const content = lines.join('\\n');\n return { content, mode: 'imports', tokenEstimate: Math.round(content.length / 4) };\n }\n } catch {\n // Fall through\n }\n }\n\n // Fallback: regex-based import extraction\n const raw = fs.readFileSync(filePath, 'utf8');\n const fileLines = raw.split('\\n');\n const importLines: string[] = [`# ${path.basename(filePath)} \u2014 Imports\\n`];\n\n for (const line of fileLines) {\n if (/^\\s*(import|from|require\\()/.test(line)) {\n importLines.push(` ${line.trim()}`);\n }\n }\n\n const content = importLines.length > 1\n ? importLines.join('\\n')\n : `# ${path.basename(filePath)} \u2014 No imports found`;\n return { content, mode: 'imports', tokenEstimate: Math.round(content.length / 4) };\n}\n\nfunction readExports(filePath: string, cg?: KiroGraph | null): ReadModeResult {\n if (cg) {\n const projectRoot = cg.getProjectRoot();\n const relPath = path.isAbsolute(filePath)\n ? path.relative(projectRoot, filePath)\n : filePath;\n\n try {\n const db = cg.getDatabase();\n const nodes = db.getNodesByFile(relPath);\n const exportedNodes = nodes.filter(n => n.isExported);\n if (exportedNodes.length > 0) {\n const lines = [`# ${relPath} \u2014 Exports (${exportedNodes.length})\\n`];\n for (const n of exportedNodes) {\n lines.push(` ${n.kind} ${n.name} (L${n.startLine})`);\n }\n const content = lines.join('\\n');\n return { content, mode: 'exports', tokenEstimate: Math.round(content.length / 4) };\n }\n } catch {\n // Fall through\n }\n }\n\n // Fallback: regex-based export extraction\n const raw = fs.readFileSync(filePath, 'utf8');\n const fileLines = raw.split('\\n');\n const exportLines: string[] = [`# ${path.basename(filePath)} \u2014 Exports\\n`];\n\n for (const line of fileLines) {\n if (/^\\s*export\\s+/.test(line)) {\n exportLines.push(` ${line.trim()}`);\n }\n }\n\n const content = exportLines.length > 1\n ? exportLines.join('\\n')\n : `# ${path.basename(filePath)} \u2014 No exports found`;\n return { content, mode: 'exports', tokenEstimate: Math.round(content.length / 4) };\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["content"]
7
+ }
@@ -7,6 +7,7 @@ export declare class MCPServer {
7
7
  private cg;
8
8
  private toolHandler;
9
9
  private projectPath;
10
+ private config;
10
11
  constructor(projectPath?: string);
11
12
  start(): Promise<void>;
12
13
  private tryInit;
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAUH,qBAAa,SAAS;IACpB,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,WAAW,CAAgB;gBAEvB,WAAW,CAAC,EAAE,MAAM;IAK1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAQd,OAAO;YAYP,aAAa;IA4C3B,OAAO,CAAC,IAAI;CAKb"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/mcp/server.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,qBAAa,SAAS;IACpB,OAAO,CAAC,SAAS,CAAwB;IACzC,OAAO,CAAC,EAAE,CAA0B;IACpC,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,WAAW,CAAgB;IAEnC,OAAO,CAAC,MAAM,CAAoB;gBAEtB,WAAW,CAAC,EAAE,MAAM;IAM1B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;YAQd,OAAO;YAkBP,aAAa;IAiD3B,OAAO,CAAC,IAAI;CAKb"}
@@ -31,16 +31,20 @@ __export(server_exports, {
31
31
  MCPServer: () => MCPServer
32
32
  });
33
33
  module.exports = __toCommonJS(server_exports);
34
+ var path = __toESM(require("path"));
34
35
  var import__ = __toESM(require("../index"));
35
36
  var import_transport = require("./transport");
36
37
  var import_tools = require("./tools");
38
+ var import_runner = require("../patterns/runner");
37
39
  const SERVER_INFO = { name: "kirograph", version: "0.1.0" };
38
40
  const PROTOCOL_VERSION = "2024-11-05";
39
41
  class MCPServer {
40
42
  constructor(projectPath) {
41
43
  this.transport = new import_transport.StdioTransport();
42
44
  this.cg = null;
43
- this.projectPath = projectPath ?? null;
45
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
46
+ this.config = null;
47
+ this.projectPath = projectPath ? path.resolve(projectPath) : null;
44
48
  this.toolHandler = new import_tools.ToolHandler(null);
45
49
  }
46
50
  async start() {
@@ -64,6 +68,11 @@ class MCPServer {
64
68
  process.stderr.write(`[KiroGraph MCP] Failed to open ${root}: ${err}
65
69
  `);
66
70
  }
71
+ try {
72
+ const { loadConfig } = await Promise.resolve().then(() => require("../config.js"));
73
+ this.config = await loadConfig(root);
74
+ } catch {
75
+ }
67
76
  }
68
77
  async handleMessage(msg) {
69
78
  const req = msg;
@@ -82,8 +91,13 @@ class MCPServer {
82
91
  serverInfo: SERVER_INFO
83
92
  };
84
93
  }
85
- case "tools/list":
86
- return { tools: import_tools.tools };
94
+ case "tools/list": {
95
+ const dynamicTools = [...import_tools.tools];
96
+ if (this.config?.enablePatterns && new import_runner.PatternRunner().isAvailable()) {
97
+ dynamicTools.push(import_tools.LIVE_SEARCH_TOOL_DEFINITION);
98
+ }
99
+ return { tools: dynamicTools };
100
+ }
87
101
  case "tools/call": {
88
102
  const { name, arguments: args = {} } = req.params ?? {};
89
103
  try {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/mcp/server.ts"],
4
- "sourcesContent": ["/**\n * KiroGraph MCP Server\n * Implements the Model Context Protocol over stdio.\n */\n\nimport KiroGraph, { findNearestKiroGraphRoot } from '../index';\nimport { StdioTransport, ErrorCodes } from './transport';\nimport { tools, ToolHandler } from './tools';\nimport type { JsonRpcMessage } from './transport';\n\nconst SERVER_INFO = { name: 'kirograph', version: '0.1.0' };\nconst PROTOCOL_VERSION = '2024-11-05';\n\nexport class MCPServer {\n private transport = new StdioTransport();\n private cg: KiroGraph | null = null;\n private toolHandler: ToolHandler;\n private projectPath: string | null;\n\n constructor(projectPath?: string) {\n this.projectPath = projectPath ?? null;\n this.toolHandler = new ToolHandler(null);\n }\n\n async start(): Promise<void> {\n this.transport.start(this.handleMessage.bind(this));\n process.on('SIGINT', () => this.stop());\n process.on('SIGTERM', () => this.stop());\n process.stdin.on('end', () => this.stop());\n process.stdin.on('close', () => this.stop());\n }\n\n private async tryInit(projectPath: string): Promise<void> {\n const root = findNearestKiroGraphRoot(projectPath);\n if (!root) { this.projectPath = projectPath; return; }\n this.projectPath = root;\n try {\n this.cg = await KiroGraph.open(root);\n this.toolHandler.setDefaultKiroGraph(this.cg);\n } catch (err) {\n process.stderr.write(`[KiroGraph MCP] Failed to open ${root}: ${err}\\n`);\n }\n }\n\n private async handleMessage(msg: JsonRpcMessage): Promise<unknown> {\n const req = msg as any;\n\n switch (req.method) {\n case 'initialize': {\n const rootUri = req.params?.rootUri ?? req.params?.workspaceFolders?.[0]?.uri;\n if (rootUri) {\n const p = rootUri.startsWith('file://') ? decodeURIComponent(rootUri.replace(/^file:\\/\\/\\/?/, '')) : rootUri;\n await this.tryInit(p);\n } else if (this.projectPath) {\n await this.tryInit(this.projectPath);\n }\n return {\n protocolVersion: PROTOCOL_VERSION,\n capabilities: { tools: {} },\n serverInfo: SERVER_INFO,\n };\n }\n\n case 'tools/list':\n return { tools };\n\n case 'tools/call': {\n const { name, arguments: args = {} } = req.params ?? {};\n try {\n return await this.toolHandler.handle(name, args);\n } catch (err) {\n return {\n content: [{ type: 'text', text: `Error: ${err instanceof Error ? err.message : String(err)}` }],\n isError: true,\n };\n }\n }\n\n case 'notifications/initialized':\n case 'ping':\n return {};\n\n default:\n this.transport.sendError(req.id, ErrorCodes.MethodNotFound, `Unknown method: ${req.method}`);\n return undefined;\n }\n }\n\n private stop(): void {\n this.cg?.close();\n this.toolHandler.closeAll();\n process.exit(0);\n }\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,eAAoD;AACpD,uBAA2C;AAC3C,mBAAmC;AAGnC,MAAM,cAAc,EAAE,MAAM,aAAa,SAAS,QAAQ;AAC1D,MAAM,mBAAmB;AAElB,MAAM,UAAU;AAAA,EAMrB,YAAY,aAAsB;AALlC,SAAQ,YAAY,IAAI,gCAAe;AACvC,SAAQ,KAAuB;AAK7B,SAAK,cAAc,eAAe;AAClC,SAAK,cAAc,IAAI,yBAAY,IAAI;AAAA,EACzC;AAAA,EAEA,MAAM,QAAuB;AAC3B,SAAK,UAAU,MAAM,KAAK,cAAc,KAAK,IAAI,CAAC;AAClD,YAAQ,GAAG,UAAU,MAAM,KAAK,KAAK,CAAC;AACtC,YAAQ,GAAG,WAAW,MAAM,KAAK,KAAK,CAAC;AACvC,YAAQ,MAAM,GAAG,OAAO,MAAM,KAAK,KAAK,CAAC;AACzC,YAAQ,MAAM,GAAG,SAAS,MAAM,KAAK,KAAK,CAAC;AAAA,EAC7C;AAAA,EAEA,MAAc,QAAQ,aAAoC;AACxD,UAAM,WAAO,mCAAyB,WAAW;AACjD,QAAI,CAAC,MAAM;AAAE,WAAK,cAAc;AAAa;AAAA,IAAQ;AACrD,SAAK,cAAc;AACnB,QAAI;AACF,WAAK,KAAK,MAAM,SAAAA,QAAU,KAAK,IAAI;AACnC,WAAK,YAAY,oBAAoB,KAAK,EAAE;AAAA,IAC9C,SAAS,KAAK;AACZ,cAAQ,OAAO,MAAM,kCAAkC,IAAI,KAAK,GAAG;AAAA,CAAI;AAAA,IACzE;AAAA,EACF;AAAA,EAEA,MAAc,cAAc,KAAuC;AACjE,UAAM,MAAM;AAEZ,YAAQ,IAAI,QAAQ;AAAA,MAClB,KAAK,cAAc;AACjB,cAAM,UAAU,IAAI,QAAQ,WAAW,IAAI,QAAQ,mBAAmB,CAAC,GAAG;AAC1E,YAAI,SAAS;AACX,gBAAM,IAAI,QAAQ,WAAW,SAAS,IAAI,mBAAmB,QAAQ,QAAQ,iBAAiB,EAAE,CAAC,IAAI;AACrG,gBAAM,KAAK,QAAQ,CAAC;AAAA,QACtB,WAAW,KAAK,aAAa;AAC3B,gBAAM,KAAK,QAAQ,KAAK,WAAW;AAAA,QACrC;AACA,eAAO;AAAA,UACL,iBAAiB;AAAA,UACjB,cAAc,EAAE,OAAO,CAAC,EAAE;AAAA,UAC1B,YAAY;AAAA,QACd;AAAA,MACF;AAAA,MAEA,KAAK;AACH,eAAO,EAAE,0BAAM;AAAA,MAEjB,KAAK,cAAc;AACjB,cAAM,EAAE,MAAM,WAAW,OAAO,CAAC,EAAE,IAAI,IAAI,UAAU,CAAC;AACtD,YAAI;AACF,iBAAO,MAAM,KAAK,YAAY,OAAO,MAAM,IAAI;AAAA,QACjD,SAAS,KAAK;AACZ,iBAAO;AAAA,YACL,SAAS,CAAC,EAAE,MAAM,QAAQ,MAAM,UAAU,eAAe,QAAQ,IAAI,UAAU,OAAO,GAAG,CAAC,GAAG,CAAC;AAAA,YAC9F,SAAS;AAAA,UACX;AAAA,QACF;AAAA,MACF;AAAA,MAEA,KAAK;AAAA,MACL,KAAK;AACH,eAAO,CAAC;AAAA,MAEV;AACE,aAAK,UAAU,UAAU,IAAI,IAAI,4BAAW,gBAAgB,mBAAmB,IAAI,MAAM,EAAE;AAC3F,eAAO;AAAA,IACX;AAAA,EACF;AAAA,EAEQ,OAAa;AACnB,SAAK,IAAI,MAAM;AACf,SAAK,YAAY,SAAS;AAC1B,YAAQ,KAAK,CAAC;AAAA,EAChB;AACF;",
4
+ "sourcesContent": ["/**\n * KiroGraph MCP Server\n * Implements the Model Context Protocol over stdio.\n */\n\nimport * as path from 'path';\nimport KiroGraph, { findNearestKiroGraphRoot } from '../index';\nimport { StdioTransport, ErrorCodes } from './transport';\nimport { tools, ToolHandler, LIVE_SEARCH_TOOL_DEFINITION } from './tools';\nimport { PatternRunner } from '../patterns/runner';\nimport type { JsonRpcMessage } from './transport';\n\nconst SERVER_INFO = { name: 'kirograph', version: '0.1.0' };\nconst PROTOCOL_VERSION = '2024-11-05';\n\nexport class MCPServer {\n private transport = new StdioTransport();\n private cg: KiroGraph | null = null;\n private toolHandler: ToolHandler;\n private projectPath: string | null;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n private config: any | null = null;\n\n constructor(projectPath?: string) {\n // Normalize to absolute path immediately to prevent any path traversal\n this.projectPath = projectPath ? path.resolve(projectPath) : null;\n this.toolHandler = new ToolHandler(null);\n }\n\n async start(): Promise<void> {\n this.transport.start(this.handleMessage.bind(this));\n process.on('SIGINT', () => this.stop());\n process.on('SIGTERM', () => this.stop());\n process.stdin.on('end', () => this.stop());\n process.stdin.on('close', () => this.stop());\n }\n\n private async tryInit(projectPath: string): Promise<void> {\n const root = findNearestKiroGraphRoot(projectPath);\n if (!root) { this.projectPath = projectPath; return; }\n this.projectPath = root;\n try {\n this.cg = await KiroGraph.open(root);\n this.toolHandler.setDefaultKiroGraph(this.cg);\n } catch (err) {\n process.stderr.write(`[KiroGraph MCP] Failed to open ${root}: ${err}\\n`);\n }\n try {\n const { loadConfig } = await Promise.resolve().then(() => require('../config.js'));\n this.config = await loadConfig(root);\n } catch {\n // config is optional \u2014 proceed without it\n }\n }\n\n private async handleMessage(msg: JsonRpcMessage): Promise<unknown> {\n const req = msg as any;\n\n switch (req.method) {\n case 'initialize': {\n const rootUri = req.params?.rootUri ?? req.params?.workspaceFolders?.[0]?.uri;\n if (rootUri) {\n const p = rootUri.startsWith('file://') ? decodeURIComponent(rootUri.replace(/^file:\\/\\/\\/?/, '')) : rootUri;\n await this.tryInit(p);\n } else if (this.projectPath) {\n await this.tryInit(this.projectPath);\n }\n return {\n protocolVersion: PROTOCOL_VERSION,\n capabilities: { tools: {} },\n serverInfo: SERVER_INFO,\n };\n }\n\n case 'tools/list': {\n const dynamicTools = [...tools];\n if (this.config?.enablePatterns && new PatternRunner().isAvailable()) {\n dynamicTools.push(LIVE_SEARCH_TOOL_DEFINITION);\n }\n return { tools: dynamicTools };\n }\n\n case 'tools/call': {\n const { name, arguments: args = {} } = req.params ?? {};\n try {\n return await this.toolHandler.handle(name, args);\n } catch (err) {\n return {\n content: [{ type: 'text', text: `Error: ${err instanceof Error ? err.message : String(err)}` }],\n isError: true,\n };\n }\n }\n\n case 'notifications/initialized':\n case 'ping':\n return {};\n\n default:\n this.transport.sendError(req.id, ErrorCodes.MethodNotFound, `Unknown method: ${req.method}`);\n return undefined;\n }\n }\n\n private stop(): void {\n this.cg?.close();\n this.toolHandler.closeAll();\n process.exit(0);\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["KiroGraph"]
7
7
  }
@@ -0,0 +1,2 @@
1
+ export declare const KIROGRAPH_TOOL_NAMES: string[];
2
+ //# sourceMappingURL=tool-names.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-names.d.ts","sourceRoot":"","sources":["../../src/mcp/tool-names.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,oBAAoB,UA6DhC,CAAC"}
@@ -42,6 +42,11 @@ const KIROGRAPH_TOOL_NAMES = [
42
42
  "kirograph_type_hierarchy",
43
43
  "kirograph_exec",
44
44
  "kirograph_gain",
45
+ "kirograph_read",
46
+ "kirograph_budget",
47
+ "kirograph_flows",
48
+ "kirograph_communities",
49
+ "kirograph_refactor",
45
50
  "kirograph_mem_search",
46
51
  "kirograph_mem_store",
47
52
  "kirograph_mem_timeline",
@@ -58,7 +63,25 @@ const KIROGRAPH_TOOL_NAMES = [
58
63
  "kirograph_data_search",
59
64
  "kirograph_data_join",
60
65
  "kirograph_data_correlations",
61
- "kirograph_data_quality"
66
+ "kirograph_data_quality",
67
+ "kirograph_security",
68
+ "kirograph_vulns",
69
+ "kirograph_sbom",
70
+ "kirograph_vex",
71
+ "kirograph_reachability",
72
+ "kirograph_vuln_add",
73
+ "kirograph_vuln_suppress",
74
+ "kirograph_staleness",
75
+ "kirograph_licenses",
76
+ "kirograph_attack_surface",
77
+ "kirograph_secrets",
78
+ "kirograph_security_flows",
79
+ "kirograph_supply_chain",
80
+ "kirograph_dep_confusion",
81
+ "kirograph_remediation",
82
+ "kirograph_pattern_coverage",
83
+ "kirograph_pattern_save_baseline",
84
+ "kirograph_pattern_diff"
62
85
  ];
63
86
  // Annotate the CommonJS export names for ESM import in node:
64
87
  0 && (module.exports = {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/mcp/tool-names.ts"],
4
- "sourcesContent": ["export const KIROGRAPH_TOOL_NAMES = [\n 'kirograph_search',\n 'kirograph_context',\n 'kirograph_callers',\n 'kirograph_callees',\n 'kirograph_impact',\n 'kirograph_node',\n 'kirograph_status',\n 'kirograph_files',\n 'kirograph_dead_code',\n 'kirograph_circular_deps',\n 'kirograph_path',\n 'kirograph_architecture',\n 'kirograph_coupling',\n 'kirograph_package',\n 'kirograph_hotspots',\n 'kirograph_surprising',\n 'kirograph_diff',\n 'kirograph_type_hierarchy',\n 'kirograph_exec',\n 'kirograph_gain',\n 'kirograph_mem_search',\n 'kirograph_mem_store',\n 'kirograph_mem_timeline',\n 'kirograph_mem_status',\n 'kirograph_docs_toc',\n 'kirograph_docs_search',\n 'kirograph_docs_section',\n 'kirograph_docs_outline',\n 'kirograph_docs_refs',\n 'kirograph_data_list',\n 'kirograph_data_describe',\n 'kirograph_data_query',\n 'kirograph_data_aggregate',\n 'kirograph_data_search',\n 'kirograph_data_join',\n 'kirograph_data_correlations',\n 'kirograph_data_quality',\n];\n\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,uBAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;",
4
+ "sourcesContent": ["export const KIROGRAPH_TOOL_NAMES = [\n 'kirograph_search',\n 'kirograph_context',\n 'kirograph_callers',\n 'kirograph_callees',\n 'kirograph_impact',\n 'kirograph_node',\n 'kirograph_status',\n 'kirograph_files',\n 'kirograph_dead_code',\n 'kirograph_circular_deps',\n 'kirograph_path',\n 'kirograph_architecture',\n 'kirograph_coupling',\n 'kirograph_package',\n 'kirograph_hotspots',\n 'kirograph_surprising',\n 'kirograph_diff',\n 'kirograph_type_hierarchy',\n 'kirograph_exec',\n 'kirograph_gain',\n 'kirograph_read',\n 'kirograph_budget',\n 'kirograph_flows',\n 'kirograph_communities',\n 'kirograph_refactor',\n 'kirograph_mem_search',\n 'kirograph_mem_store',\n 'kirograph_mem_timeline',\n 'kirograph_mem_status',\n 'kirograph_docs_toc',\n 'kirograph_docs_search',\n 'kirograph_docs_section',\n 'kirograph_docs_outline',\n 'kirograph_docs_refs',\n 'kirograph_data_list',\n 'kirograph_data_describe',\n 'kirograph_data_query',\n 'kirograph_data_aggregate',\n 'kirograph_data_search',\n 'kirograph_data_join',\n 'kirograph_data_correlations',\n 'kirograph_data_quality',\n 'kirograph_security',\n 'kirograph_vulns',\n 'kirograph_sbom',\n 'kirograph_vex',\n 'kirograph_reachability',\n 'kirograph_vuln_add',\n 'kirograph_vuln_suppress',\n 'kirograph_staleness',\n 'kirograph_licenses',\n 'kirograph_attack_surface',\n 'kirograph_secrets',\n 'kirograph_security_flows',\n 'kirograph_supply_chain',\n 'kirograph_dep_confusion',\n 'kirograph_remediation',\n 'kirograph_pattern_coverage',\n 'kirograph_pattern_save_baseline',\n 'kirograph_pattern_diff',\n];\n\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,uBAAuB;AAAA,EAClC;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,7 @@
2
2
  * KiroGraph MCP Tool Definitions + Handlers
3
3
  */
4
4
  import KiroGraph from '../index';
5
+ export { KIROGRAPH_TOOL_NAMES } from './tool-names';
5
6
  export interface ToolDefinition {
6
7
  name: string;
7
8
  description: string;
@@ -17,13 +18,24 @@ export interface ToolDefinition {
17
18
  };
18
19
  }
19
20
  export declare const tools: ToolDefinition[];
21
+ /**
22
+ * Dynamic tool definition for kirograph_live_search.
23
+ * NOT included in the static `tools` array — injected into tools/list at runtime
24
+ * only when config.enablePatterns === true AND @ast-grep/napi is available.
25
+ * NOT added to KIROGRAPH_TOOL_NAMES (which is a static list for Kiro autoApprove).
26
+ */
27
+ export declare const LIVE_SEARCH_TOOL_DEFINITION: ToolDefinition;
20
28
  export declare class ToolHandler {
21
29
  private defaultCg;
22
30
  private connections;
31
+ /** Anti-loop: track recent data_query calls per dataset for pagination detection. */
32
+ private queryTracker;
23
33
  constructor(cg: KiroGraph | null);
24
34
  setDefaultKiroGraph(cg: KiroGraph): void;
25
35
  /** Close all cached cross-project connections. */
26
36
  closeAll(): void;
37
+ /** Anti-loop: detect pagination patterns and warn the agent. */
38
+ private checkPaginationLoop;
27
39
  private getConnection;
28
40
  handle(toolName: string, args: Record<string, unknown>): Promise<{
29
41
  content: Array<{
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,SAAuC,MAAM,UAAU,CAAC;AA6B/D,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;YAAC,OAAO,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;QACtG,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED,eAAO,MAAM,KAAK,EAAE,cAAc,EAsNjC,CAAC;AAEF,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,WAAW,CAAgC;gBAEvC,EAAE,EAAE,SAAS,GAAG,IAAI;IAIhC,mBAAmB,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI;IAIxC,kDAAkD;IAClD,QAAQ,IAAI,IAAI;YAOF,aAAa;IAarB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;YAW/H,QAAQ;CAgavB"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAMH,OAAO,SAAuC,MAAM,UAAU,CAAC;AAK/D,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AAyDpD,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,WAAW,EAAE,MAAM,CAAC;YAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;YAAC,OAAO,CAAC,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;QACtG,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;KACrB,CAAC;CACH;AAED,eAAO,MAAM,KAAK,EAAE,cAAc,EA4xBjC,CAAC;AAEF;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,EAAE,cAczC,CAAC;AAEF,qBAAa,WAAW;IACtB,OAAO,CAAC,SAAS,CAAmB;IACpC,OAAO,CAAC,WAAW,CAAgC;IACnD,qFAAqF;IACrF,OAAO,CAAC,YAAY,CAA8D;gBAEtE,EAAE,EAAE,SAAS,GAAG,IAAI;IAIhC,mBAAmB,CAAC,EAAE,EAAE,SAAS,GAAG,IAAI;IAIxC,kDAAkD;IAClD,QAAQ,IAAI,IAAI;IAOhB,gEAAgE;IAChE,OAAO,CAAC,mBAAmB;YAiCb,aAAa;IAerB,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,IAAI,EAAE,MAAM,CAAA;SAAE,CAAC,CAAC;QAAC,OAAO,CAAC,EAAE,OAAO,CAAA;KAAE,CAAC;YAoC/H,QAAQ;CA02FvB"}