kirograph 0.12.1

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 (434) hide show
  1. package/README.md +1171 -0
  2. package/dist/architecture/index.d.ts +11 -0
  3. package/dist/architecture/index.d.ts.map +1 -0
  4. package/dist/architecture/index.js +207 -0
  5. package/dist/architecture/index.js.map +7 -0
  6. package/dist/architecture/layers/csharp.d.ts +6 -0
  7. package/dist/architecture/layers/csharp.d.ts.map +1 -0
  8. package/dist/architecture/layers/csharp.js +100 -0
  9. package/dist/architecture/layers/csharp.js.map +7 -0
  10. package/dist/architecture/layers/elixir.js +116 -0
  11. package/dist/architecture/layers/elixir.js.map +7 -0
  12. package/dist/architecture/layers/go.d.ts +7 -0
  13. package/dist/architecture/layers/go.d.ts.map +1 -0
  14. package/dist/architecture/layers/go.js +117 -0
  15. package/dist/architecture/layers/go.js.map +7 -0
  16. package/dist/architecture/layers/index.d.ts +30 -0
  17. package/dist/architecture/layers/index.d.ts.map +1 -0
  18. package/dist/architecture/layers/index.js +100 -0
  19. package/dist/architecture/layers/index.js.map +7 -0
  20. package/dist/architecture/layers/java.d.ts +7 -0
  21. package/dist/architecture/layers/java.d.ts.map +1 -0
  22. package/dist/architecture/layers/java.js +119 -0
  23. package/dist/architecture/layers/java.js.map +7 -0
  24. package/dist/architecture/layers/python.d.ts +7 -0
  25. package/dist/architecture/layers/python.d.ts.map +1 -0
  26. package/dist/architecture/layers/python.js +111 -0
  27. package/dist/architecture/layers/python.js.map +7 -0
  28. package/dist/architecture/layers/ruby.d.ts +6 -0
  29. package/dist/architecture/layers/ruby.d.ts.map +1 -0
  30. package/dist/architecture/layers/ruby.js +95 -0
  31. package/dist/architecture/layers/ruby.js.map +7 -0
  32. package/dist/architecture/layers/rust.d.ts +6 -0
  33. package/dist/architecture/layers/rust.d.ts.map +1 -0
  34. package/dist/architecture/layers/rust.js +98 -0
  35. package/dist/architecture/layers/rust.js.map +7 -0
  36. package/dist/architecture/layers/types.d.ts +2 -0
  37. package/dist/architecture/layers/types.d.ts.map +1 -0
  38. package/dist/architecture/layers/types.js +17 -0
  39. package/dist/architecture/layers/types.js.map +7 -0
  40. package/dist/architecture/layers/typescript.d.ts +9 -0
  41. package/dist/architecture/layers/typescript.d.ts.map +1 -0
  42. package/dist/architecture/layers/typescript.js +143 -0
  43. package/dist/architecture/layers/typescript.js.map +7 -0
  44. package/dist/architecture/manifest/cargo.d.ts +3 -0
  45. package/dist/architecture/manifest/cargo.d.ts.map +1 -0
  46. package/dist/architecture/manifest/cargo.js +94 -0
  47. package/dist/architecture/manifest/cargo.js.map +7 -0
  48. package/dist/architecture/manifest/csproj.d.ts +3 -0
  49. package/dist/architecture/manifest/csproj.d.ts.map +1 -0
  50. package/dist/architecture/manifest/csproj.js +75 -0
  51. package/dist/architecture/manifest/csproj.js.map +7 -0
  52. package/dist/architecture/manifest/go.d.ts +3 -0
  53. package/dist/architecture/manifest/go.d.ts.map +1 -0
  54. package/dist/architecture/manifest/go.js +85 -0
  55. package/dist/architecture/manifest/go.js.map +7 -0
  56. package/dist/architecture/manifest/gradle.d.ts +3 -0
  57. package/dist/architecture/manifest/gradle.d.ts.map +1 -0
  58. package/dist/architecture/manifest/gradle.js +80 -0
  59. package/dist/architecture/manifest/gradle.js.map +7 -0
  60. package/dist/architecture/manifest/index.d.ts +12 -0
  61. package/dist/architecture/manifest/index.d.ts.map +1 -0
  62. package/dist/architecture/manifest/index.js +130 -0
  63. package/dist/architecture/manifest/index.js.map +7 -0
  64. package/dist/architecture/manifest/maven.d.ts +3 -0
  65. package/dist/architecture/manifest/maven.d.ts.map +1 -0
  66. package/dist/architecture/manifest/maven.js +76 -0
  67. package/dist/architecture/manifest/maven.js.map +7 -0
  68. package/dist/architecture/manifest/npm.d.ts +3 -0
  69. package/dist/architecture/manifest/npm.d.ts.map +1 -0
  70. package/dist/architecture/manifest/npm.js +103 -0
  71. package/dist/architecture/manifest/npm.js.map +7 -0
  72. package/dist/architecture/manifest/python.d.ts +3 -0
  73. package/dist/architecture/manifest/python.d.ts.map +1 -0
  74. package/dist/architecture/manifest/python.js +105 -0
  75. package/dist/architecture/manifest/python.js.map +7 -0
  76. package/dist/architecture/manifest/types.d.ts +2 -0
  77. package/dist/architecture/manifest/types.d.ts.map +1 -0
  78. package/dist/architecture/manifest/types.js +17 -0
  79. package/dist/architecture/manifest/types.js.map +7 -0
  80. package/dist/architecture/types.d.ts +91 -0
  81. package/dist/architecture/types.d.ts.map +1 -0
  82. package/dist/architecture/types.js +17 -0
  83. package/dist/architecture/types.js.map +7 -0
  84. package/dist/assets/logo.png +0 -0
  85. package/dist/banner.d.ts +6 -0
  86. package/dist/banner.d.ts.map +1 -0
  87. package/dist/banner.js +67 -0
  88. package/dist/banner.js.map +1 -0
  89. package/dist/bin/banner.d.ts +6 -0
  90. package/dist/bin/banner.d.ts.map +1 -0
  91. package/dist/bin/banner.js +88 -0
  92. package/dist/bin/banner.js.map +7 -0
  93. package/dist/bin/commands/affected.d.ts +3 -0
  94. package/dist/bin/commands/affected.d.ts.map +1 -0
  95. package/dist/bin/commands/affected.js +78 -0
  96. package/dist/bin/commands/affected.js.map +7 -0
  97. package/dist/bin/commands/architecture.d.ts +3 -0
  98. package/dist/bin/commands/architecture.d.ts.map +1 -0
  99. package/dist/bin/commands/architecture.js +125 -0
  100. package/dist/bin/commands/architecture.js.map +7 -0
  101. package/dist/bin/commands/caveman.js +136 -0
  102. package/dist/bin/commands/caveman.js.map +7 -0
  103. package/dist/bin/commands/context.d.ts +3 -0
  104. package/dist/bin/commands/context.d.ts.map +1 -0
  105. package/dist/bin/commands/context.js +81 -0
  106. package/dist/bin/commands/context.js.map +7 -0
  107. package/dist/bin/commands/coupling.d.ts +3 -0
  108. package/dist/bin/commands/coupling.d.ts.map +1 -0
  109. package/dist/bin/commands/coupling.js +164 -0
  110. package/dist/bin/commands/coupling.js.map +7 -0
  111. package/dist/bin/commands/dashboard.d.ts +3 -0
  112. package/dist/bin/commands/dashboard.d.ts.map +1 -0
  113. package/dist/bin/commands/dashboard.js +209 -0
  114. package/dist/bin/commands/dashboard.js.map +7 -0
  115. package/dist/bin/commands/dead-code.js +77 -0
  116. package/dist/bin/commands/dead-code.js.map +7 -0
  117. package/dist/bin/commands/export.js +2620 -0
  118. package/dist/bin/commands/export.js.map +7 -0
  119. package/dist/bin/commands/files.d.ts +3 -0
  120. package/dist/bin/commands/files.d.ts.map +1 -0
  121. package/dist/bin/commands/files.js +104 -0
  122. package/dist/bin/commands/files.js.map +7 -0
  123. package/dist/bin/commands/help.d.ts +4 -0
  124. package/dist/bin/commands/help.d.ts.map +1 -0
  125. package/dist/bin/commands/help.js +212 -0
  126. package/dist/bin/commands/help.js.map +7 -0
  127. package/dist/bin/commands/hotspots.js +77 -0
  128. package/dist/bin/commands/hotspots.js.map +7 -0
  129. package/dist/bin/commands/index.d.ts +3 -0
  130. package/dist/bin/commands/index.d.ts.map +1 -0
  131. package/dist/bin/commands/index.js +58 -0
  132. package/dist/bin/commands/index.js.map +7 -0
  133. package/dist/bin/commands/init.d.ts +3 -0
  134. package/dist/bin/commands/init.d.ts.map +1 -0
  135. package/dist/bin/commands/init.js +68 -0
  136. package/dist/bin/commands/init.js.map +7 -0
  137. package/dist/bin/commands/install.d.ts +3 -0
  138. package/dist/bin/commands/install.d.ts.map +1 -0
  139. package/dist/bin/commands/install.js +34 -0
  140. package/dist/bin/commands/install.js.map +7 -0
  141. package/dist/bin/commands/mark-dirty.d.ts +3 -0
  142. package/dist/bin/commands/mark-dirty.d.ts.map +1 -0
  143. package/dist/bin/commands/mark-dirty.js +51 -0
  144. package/dist/bin/commands/mark-dirty.js.map +7 -0
  145. package/dist/bin/commands/package.d.ts +3 -0
  146. package/dist/bin/commands/package.d.ts.map +1 -0
  147. package/dist/bin/commands/package.js +139 -0
  148. package/dist/bin/commands/package.js.map +7 -0
  149. package/dist/bin/commands/path.js +93 -0
  150. package/dist/bin/commands/path.js.map +7 -0
  151. package/dist/bin/commands/qdrant.d.ts +3 -0
  152. package/dist/bin/commands/qdrant.d.ts.map +1 -0
  153. package/dist/bin/commands/qdrant.js +159 -0
  154. package/dist/bin/commands/qdrant.js.map +1 -0
  155. package/dist/bin/commands/query.d.ts +3 -0
  156. package/dist/bin/commands/query.d.ts.map +1 -0
  157. package/dist/bin/commands/query.js +47 -0
  158. package/dist/bin/commands/query.js.map +7 -0
  159. package/dist/bin/commands/serve.d.ts +3 -0
  160. package/dist/bin/commands/serve.d.ts.map +1 -0
  161. package/dist/bin/commands/serve.js +59 -0
  162. package/dist/bin/commands/serve.js.map +7 -0
  163. package/dist/bin/commands/snapshot.js +122 -0
  164. package/dist/bin/commands/snapshot.js.map +7 -0
  165. package/dist/bin/commands/status.d.ts +3 -0
  166. package/dist/bin/commands/status.d.ts.map +1 -0
  167. package/dist/bin/commands/status.js +107 -0
  168. package/dist/bin/commands/status.js.map +7 -0
  169. package/dist/bin/commands/stop.d.ts +3 -0
  170. package/dist/bin/commands/stop.d.ts.map +1 -0
  171. package/dist/bin/commands/stop.js +81 -0
  172. package/dist/bin/commands/stop.js.map +1 -0
  173. package/dist/bin/commands/surprising.js +79 -0
  174. package/dist/bin/commands/surprising.js.map +7 -0
  175. package/dist/bin/commands/sync-if-dirty.d.ts +3 -0
  176. package/dist/bin/commands/sync-if-dirty.d.ts.map +1 -0
  177. package/dist/bin/commands/sync-if-dirty.js +67 -0
  178. package/dist/bin/commands/sync-if-dirty.js.map +7 -0
  179. package/dist/bin/commands/sync.d.ts +3 -0
  180. package/dist/bin/commands/sync.d.ts.map +1 -0
  181. package/dist/bin/commands/sync.js +81 -0
  182. package/dist/bin/commands/sync.js.map +7 -0
  183. package/dist/bin/commands/typesense.d.ts +3 -0
  184. package/dist/bin/commands/typesense.d.ts.map +1 -0
  185. package/dist/bin/commands/typesense.js +126 -0
  186. package/dist/bin/commands/typesense.js.map +1 -0
  187. package/dist/bin/commands/uninit.d.ts +4 -0
  188. package/dist/bin/commands/uninit.d.ts.map +1 -0
  189. package/dist/bin/commands/uninit.js +123 -0
  190. package/dist/bin/commands/uninit.js.map +7 -0
  191. package/dist/bin/commands/unlock.d.ts +3 -0
  192. package/dist/bin/commands/unlock.d.ts.map +1 -0
  193. package/dist/bin/commands/unlock.js +53 -0
  194. package/dist/bin/commands/unlock.js.map +7 -0
  195. package/dist/bin/commands/utils.d.ts +12 -0
  196. package/dist/bin/commands/utils.d.ts.map +1 -0
  197. package/dist/bin/commands/utils.js +56 -0
  198. package/dist/bin/commands/utils.js.map +7 -0
  199. package/dist/bin/installer/archive.js +230 -0
  200. package/dist/bin/installer/archive.js.map +7 -0
  201. package/dist/bin/installer/caveman.js +57 -0
  202. package/dist/bin/installer/caveman.js.map +7 -0
  203. package/dist/bin/installer/cli-agent.d.ts +15 -0
  204. package/dist/bin/installer/cli-agent.d.ts.map +1 -0
  205. package/dist/bin/installer/cli-agent.js +89 -0
  206. package/dist/bin/installer/cli-agent.js.map +7 -0
  207. package/dist/bin/installer/config-prompt.d.ts +13 -0
  208. package/dist/bin/installer/config-prompt.d.ts.map +1 -0
  209. package/dist/bin/installer/config-prompt.js +158 -0
  210. package/dist/bin/installer/config-prompt.js.map +7 -0
  211. package/dist/bin/installer/dashboard.d.ts +3 -0
  212. package/dist/bin/installer/dashboard.d.ts.map +1 -0
  213. package/dist/bin/installer/dashboard.js +149 -0
  214. package/dist/bin/installer/dashboard.js.map +7 -0
  215. package/dist/bin/installer/hooks.d.ts +5 -0
  216. package/dist/bin/installer/hooks.d.ts.map +1 -0
  217. package/dist/bin/installer/hooks.js +155 -0
  218. package/dist/bin/installer/hooks.js.map +7 -0
  219. package/dist/bin/installer/index.d.ts +11 -0
  220. package/dist/bin/installer/index.d.ts.map +1 -0
  221. package/dist/bin/installer/index.js +228 -0
  222. package/dist/bin/installer/index.js.map +7 -0
  223. package/dist/bin/installer/mcp.d.ts +5 -0
  224. package/dist/bin/installer/mcp.d.ts.map +1 -0
  225. package/dist/bin/installer/mcp.js +80 -0
  226. package/dist/bin/installer/mcp.js.map +7 -0
  227. package/dist/bin/installer/prompts.d.ts +28 -0
  228. package/dist/bin/installer/prompts.d.ts.map +1 -0
  229. package/dist/bin/installer/prompts.js +134 -0
  230. package/dist/bin/installer/prompts.js.map +7 -0
  231. package/dist/bin/installer/qdrant-dashboard.d.ts +4 -0
  232. package/dist/bin/installer/qdrant-dashboard.d.ts.map +1 -0
  233. package/dist/bin/installer/qdrant-dashboard.js +115 -0
  234. package/dist/bin/installer/qdrant-dashboard.js.map +7 -0
  235. package/dist/bin/installer/steering.d.ts +5 -0
  236. package/dist/bin/installer/steering.d.ts.map +1 -0
  237. package/dist/bin/installer/steering.js +283 -0
  238. package/dist/bin/installer/steering.js.map +7 -0
  239. package/dist/bin/kirograph.d.ts +6 -0
  240. package/dist/bin/kirograph.d.ts.map +1 -0
  241. package/dist/bin/kirograph.js +95 -0
  242. package/dist/bin/kirograph.js.map +7 -0
  243. package/dist/bin/progress.d.ts +14 -0
  244. package/dist/bin/progress.d.ts.map +1 -0
  245. package/dist/bin/progress.js +201 -0
  246. package/dist/bin/progress.js.map +7 -0
  247. package/dist/bin/ui.d.ts +11 -0
  248. package/dist/bin/ui.d.ts.map +1 -0
  249. package/dist/bin/ui.js +71 -0
  250. package/dist/bin/ui.js.map +7 -0
  251. package/dist/config.d.ts +48 -0
  252. package/dist/config.d.ts.map +1 -0
  253. package/dist/config.js +273 -0
  254. package/dist/config.js.map +7 -0
  255. package/dist/context/index.d.ts +61 -0
  256. package/dist/context/index.d.ts.map +1 -0
  257. package/dist/context/index.js +224 -0
  258. package/dist/context/index.js.map +7 -0
  259. package/dist/core/file-tree.d.ts +15 -0
  260. package/dist/core/file-tree.d.ts.map +1 -0
  261. package/dist/core/file-tree.js +69 -0
  262. package/dist/core/file-tree.js.map +7 -0
  263. package/dist/core/lock-manager.d.ts +20 -0
  264. package/dist/core/lock-manager.d.ts.map +1 -0
  265. package/dist/core/lock-manager.js +120 -0
  266. package/dist/core/lock-manager.js.map +7 -0
  267. package/dist/core/pipeline.d.ts +37 -0
  268. package/dist/core/pipeline.d.ts.map +1 -0
  269. package/dist/core/pipeline.js +375 -0
  270. package/dist/core/pipeline.js.map +7 -0
  271. package/dist/core/snapshot.js +141 -0
  272. package/dist/core/snapshot.js.map +7 -0
  273. package/dist/db/database.d.ts +133 -0
  274. package/dist/db/database.d.ts.map +1 -0
  275. package/dist/db/database.js +929 -0
  276. package/dist/db/database.js.map +7 -0
  277. package/dist/db/schema.sql +174 -0
  278. package/dist/errors.d.ts +49 -0
  279. package/dist/errors.d.ts.map +1 -0
  280. package/dist/errors.js +160 -0
  281. package/dist/errors.js.map +7 -0
  282. package/dist/extraction/extractor.d.ts +29 -0
  283. package/dist/extraction/extractor.d.ts.map +1 -0
  284. package/dist/extraction/extractor.js +764 -0
  285. package/dist/extraction/extractor.js.map +7 -0
  286. package/dist/extraction/grammars.d.ts +48 -0
  287. package/dist/extraction/grammars.d.ts.map +1 -0
  288. package/dist/extraction/grammars.js +166 -0
  289. package/dist/extraction/grammars.js.map +7 -0
  290. package/dist/extraction/languages.d.ts +9 -0
  291. package/dist/extraction/languages.d.ts.map +1 -0
  292. package/dist/extraction/languages.js +103 -0
  293. package/dist/extraction/languages.js.map +7 -0
  294. package/dist/extraction/wasm/tree-sitter-pascal.wasm +0 -0
  295. package/dist/frameworks/csharp.d.ts +8 -0
  296. package/dist/frameworks/csharp.d.ts.map +1 -0
  297. package/dist/frameworks/csharp.js +93 -0
  298. package/dist/frameworks/csharp.js.map +7 -0
  299. package/dist/frameworks/elixir.js +142 -0
  300. package/dist/frameworks/elixir.js.map +7 -0
  301. package/dist/frameworks/express.d.ts +8 -0
  302. package/dist/frameworks/express.d.ts.map +1 -0
  303. package/dist/frameworks/express.js +143 -0
  304. package/dist/frameworks/express.js.map +7 -0
  305. package/dist/frameworks/go.d.ts +8 -0
  306. package/dist/frameworks/go.d.ts.map +1 -0
  307. package/dist/frameworks/go.js +85 -0
  308. package/dist/frameworks/go.js.map +7 -0
  309. package/dist/frameworks/index.d.ts +30 -0
  310. package/dist/frameworks/index.d.ts.map +1 -0
  311. package/dist/frameworks/index.js +243 -0
  312. package/dist/frameworks/index.js.map +7 -0
  313. package/dist/frameworks/java.d.ts +8 -0
  314. package/dist/frameworks/java.d.ts.map +1 -0
  315. package/dist/frameworks/java.js +87 -0
  316. package/dist/frameworks/java.js.map +7 -0
  317. package/dist/frameworks/laravel.d.ts +9 -0
  318. package/dist/frameworks/laravel.d.ts.map +1 -0
  319. package/dist/frameworks/laravel.js +115 -0
  320. package/dist/frameworks/laravel.js.map +7 -0
  321. package/dist/frameworks/python.d.ts +10 -0
  322. package/dist/frameworks/python.d.ts.map +1 -0
  323. package/dist/frameworks/python.js +158 -0
  324. package/dist/frameworks/python.js.map +7 -0
  325. package/dist/frameworks/react.d.ts +9 -0
  326. package/dist/frameworks/react.d.ts.map +1 -0
  327. package/dist/frameworks/react.js +230 -0
  328. package/dist/frameworks/react.js.map +7 -0
  329. package/dist/frameworks/ruby.d.ts +8 -0
  330. package/dist/frameworks/ruby.d.ts.map +1 -0
  331. package/dist/frameworks/ruby.js +136 -0
  332. package/dist/frameworks/ruby.js.map +7 -0
  333. package/dist/frameworks/rust.d.ts +8 -0
  334. package/dist/frameworks/rust.d.ts.map +1 -0
  335. package/dist/frameworks/rust.js +82 -0
  336. package/dist/frameworks/rust.js.map +7 -0
  337. package/dist/frameworks/svelte.d.ts +8 -0
  338. package/dist/frameworks/svelte.d.ts.map +1 -0
  339. package/dist/frameworks/svelte.js +174 -0
  340. package/dist/frameworks/svelte.js.map +7 -0
  341. package/dist/frameworks/swift.d.ts +10 -0
  342. package/dist/frameworks/swift.d.ts.map +1 -0
  343. package/dist/frameworks/swift.js +151 -0
  344. package/dist/frameworks/swift.js.map +7 -0
  345. package/dist/frameworks/types.d.ts +37 -0
  346. package/dist/frameworks/types.d.ts.map +1 -0
  347. package/dist/frameworks/types.js +17 -0
  348. package/dist/frameworks/types.js.map +7 -0
  349. package/dist/graph/queries.d.ts +53 -0
  350. package/dist/graph/queries.d.ts.map +1 -0
  351. package/dist/graph/queries.js +224 -0
  352. package/dist/graph/queries.js.map +7 -0
  353. package/dist/graph/traversal.d.ts +35 -0
  354. package/dist/graph/traversal.d.ts.map +1 -0
  355. package/dist/graph/traversal.js +148 -0
  356. package/dist/graph/traversal.js.map +7 -0
  357. package/dist/index.d.ts +102 -0
  358. package/dist/index.d.ts.map +1 -0
  359. package/dist/index.js +303 -0
  360. package/dist/index.js.map +7 -0
  361. package/dist/installer/index.d.ts +10 -0
  362. package/dist/installer/index.d.ts.map +1 -0
  363. package/dist/installer/index.js +526 -0
  364. package/dist/installer/index.js.map +1 -0
  365. package/dist/mcp/server.d.ts +16 -0
  366. package/dist/mcp/server.d.ts.map +1 -0
  367. package/dist/mcp/server.js +116 -0
  368. package/dist/mcp/server.js.map +7 -0
  369. package/dist/mcp/tools.d.ts +37 -0
  370. package/dist/mcp/tools.d.ts.map +1 -0
  371. package/dist/mcp/tools.js +779 -0
  372. package/dist/mcp/tools.js.map +7 -0
  373. package/dist/mcp/transport.d.ts +29 -0
  374. package/dist/mcp/transport.d.ts.map +1 -0
  375. package/dist/mcp/transport.js +70 -0
  376. package/dist/mcp/transport.js.map +7 -0
  377. package/dist/resolution/index.d.ts +56 -0
  378. package/dist/resolution/index.d.ts.map +1 -0
  379. package/dist/resolution/index.js +384 -0
  380. package/dist/resolution/index.js.map +7 -0
  381. package/dist/resolution/name-matcher.d.ts +25 -0
  382. package/dist/resolution/name-matcher.d.ts.map +1 -0
  383. package/dist/resolution/name-matcher.js +60 -0
  384. package/dist/resolution/name-matcher.js.map +7 -0
  385. package/dist/scripts/postinstall.js +64 -0
  386. package/dist/search/query-utils.d.ts +21 -0
  387. package/dist/search/query-utils.d.ts.map +1 -0
  388. package/dist/search/query-utils.js +219 -0
  389. package/dist/search/query-utils.js.map +7 -0
  390. package/dist/search/searcher.d.ts +15 -0
  391. package/dist/search/searcher.d.ts.map +1 -0
  392. package/dist/search/searcher.js +49 -0
  393. package/dist/search/searcher.js.map +7 -0
  394. package/dist/sync/index.d.ts +33 -0
  395. package/dist/sync/index.d.ts.map +1 -0
  396. package/dist/sync/index.js +200 -0
  397. package/dist/sync/index.js.map +7 -0
  398. package/dist/types.d.ts +131 -0
  399. package/dist/types.d.ts.map +1 -0
  400. package/dist/types.js +37 -0
  401. package/dist/types.js.map +7 -0
  402. package/dist/utils.d.ts +52 -0
  403. package/dist/utils.d.ts.map +1 -0
  404. package/dist/utils.js +254 -0
  405. package/dist/utils.js.map +7 -0
  406. package/dist/vectors/index.d.ts +71 -0
  407. package/dist/vectors/index.d.ts.map +1 -0
  408. package/dist/vectors/index.js +480 -0
  409. package/dist/vectors/index.js.map +7 -0
  410. package/dist/vectors/lancedb-index.d.ts +50 -0
  411. package/dist/vectors/lancedb-index.d.ts.map +1 -0
  412. package/dist/vectors/lancedb-index.js +153 -0
  413. package/dist/vectors/lancedb-index.js.map +7 -0
  414. package/dist/vectors/orama-index.d.ts +54 -0
  415. package/dist/vectors/orama-index.d.ts.map +1 -0
  416. package/dist/vectors/orama-index.js +213 -0
  417. package/dist/vectors/orama-index.js.map +7 -0
  418. package/dist/vectors/pglite-index.d.ts +53 -0
  419. package/dist/vectors/pglite-index.d.ts.map +1 -0
  420. package/dist/vectors/pglite-index.js +194 -0
  421. package/dist/vectors/pglite-index.js.map +7 -0
  422. package/dist/vectors/qdrant-index.d.ts +70 -0
  423. package/dist/vectors/qdrant-index.d.ts.map +1 -0
  424. package/dist/vectors/qdrant-index.js +364 -0
  425. package/dist/vectors/qdrant-index.js.map +7 -0
  426. package/dist/vectors/typesense-index.d.ts +75 -0
  427. package/dist/vectors/typesense-index.d.ts.map +1 -0
  428. package/dist/vectors/typesense-index.js +453 -0
  429. package/dist/vectors/typesense-index.js.map +7 -0
  430. package/dist/vectors/vec-index.d.ts +52 -0
  431. package/dist/vectors/vec-index.d.ts.map +1 -0
  432. package/dist/vectors/vec-index.js +198 -0
  433. package/dist/vectors/vec-index.js.map +7 -0
  434. package/package.json +67 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/bin/progress.ts"],
4
+ "sourcesContent": ["/**\n * KiroGraph CLI Progress Renderer\n *\n * Renders indexAll/sync progress events to stdout.\n * Lives in src/bin/ because it is a display concern \u2014 not part of the core library.\n */\n\nimport type { IndexProgress, SyncResult } from '../types';\n\n// \u2500\u2500 ANSI helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst _v = '\\x1b[38;5;99m'; // violet\nconst _r = '\\x1b[0m'; // reset\nconst _d = '\\x1b[2m'; // dim\nconst _g = '\\x1b[38;5;114m'; // green\n\nfunction _bar(pct: number, width = 20): string {\n const filled = Math.floor(pct / (100 / width));\n return '\u2588'.repeat(filled) + '\u2591'.repeat(width - filled);\n}\n\nfunction _num(n: number): string {\n return n.toLocaleString();\n}\n\n// \u2500\u2500 Renderer \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * Renders a single indexAll progress event to stdout.\n * Scanning and framework detection print a persistent line (with \\n).\n * Parsing, resolving, and embeddings overwrite the current line (\\r).\n */\nexport function renderIndexProgress(p: IndexProgress): void {\n const pct = p.total > 0 ? Math.round((p.current / p.total) * 100) : 0;\n\n if (p.phase === 'scanning') {\n process.stdout.write(` ${_v}\u2713 scanning${_r} ${_v}${p.current}${_r} ${_d}files found${_r}\\n`);\n\n } else if (p.phase === 'parsing') {\n process.stdout.write(`\\r ${_v}parsing${_r} [${_bar(pct)}] ${_v}${pct}%${_r}${' '.repeat(8)}`);\n if (p.current === p.total) process.stdout.write('\\n');\n\n } else if (p.phase === 'resolving') {\n if (p.current === 0 && p.total <= 1) {\n process.stdout.write(`\\r ${_v}resolving${_r} cross-file references\u2026${' '.repeat(20)}`);\n } else if (p.total > 0) {\n const bar = _bar(pct);\n const suffix = p.current === p.total\n ? `${_v}${p.current}${_r}${_d}/${p.total} refs${_r}\\n`\n : `${_v}${p.current}${_r}${_d}/${p.total}${_r}${' '.repeat(10)}`;\n const prefix = p.current === p.total ? `\\r ${_v}\u2713 resolving${_r}` : `\\r ${_v}resolving${_r} `;\n process.stdout.write(`${prefix} [${bar}] ${suffix}`);\n }\n\n } else if (p.phase === 'detecting frameworks') {\n if (p.current === 1) {\n const frameworks = (p.meta?.frameworks as string[]) ?? [];\n const languages = (p.meta?.languages as string[]) ?? [];\n const fwLabel = frameworks.length > 0 ? `${_v}${frameworks.join(', ')}${_r}` : `${_d}none${_r}`;\n const langLabel = languages.length > 0 ? `${_v}${languages.join(', ')}${_r}` : `${_d}none${_r}`;\n process.stdout.write(` ${_v}\u2713 languages${_r} detected: ${langLabel}\\n`);\n process.stdout.write(` ${_v}\u2713 frameworks${_r} detected: ${fwLabel}\\n`);\n }\n\n } else if (p.phase === 'embeddings') {\n if (p.current === -1) {\n // Large-codebase pre-flight warning emitted by VectorManager\n process.stdout.write(`\\n \\x1b[33m\u26A0 Large codebase: ${_num(p.total)} embeddable symbols detected.\\x1b[0m\\n`);\n process.stdout.write(` \\x1b[33m Embedding may be slow or memory-intensive. Consider setting enableEmbeddings: false\\x1b[0m\\n`);\n process.stdout.write(` \\x1b[33m for codebases this large, or use a lighter model (e.g. Xenova/all-MiniLM-L6-v2).\\x1b[0m\\n\\n`);\n } else {\n process.stdout.write(`\\r ${_v}embeddings${_r} [${_bar(pct)}] ${_v}${pct}%${_r}${' '.repeat(10)}`);\n if (p.current === p.total && p.total > 0) process.stdout.write('\\n');\n }\n\n } else {\n process.stdout.write(`\\r ${_v}${p.phase}${_r} ${p.current}/${p.total}${' '.repeat(20)}`);\n }\n}\n\n\n// \u2500\u2500 Sync Progress Renderer \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * Renders a single sync progress event to stdout.\n * Same visual style as renderIndexProgress but tailored for incremental sync.\n */\nexport function renderSyncProgress(p: IndexProgress): void {\n const pct = p.total > 0 ? Math.round((p.current / p.total) * 100) : 0;\n\n if (p.phase === 'scanning') {\n if (p.current > 0) {\n process.stdout.write(`\\r ${_v}\u2713 scanning${_r} ${_v}${_num(p.current)}${_r} ${_d}files found${_r}\\n`);\n } else {\n process.stdout.write(`\\r ${_v}scanning${_r} ${_d}detecting changes\u2026${_r}${' '.repeat(20)}`);\n }\n\n } else if (p.phase === 'parsing') {\n process.stdout.write(`\\r ${_v}parsing${_r} [${_bar(pct)}] ${_v}${pct}%${_r}${' '.repeat(8)}`);\n if (p.current === p.total) process.stdout.write('\\n');\n\n } else if (p.phase === 'resolving') {\n if (p.current === 0 && p.total <= 1) {\n process.stdout.write(`\\r ${_v}resolving${_r} cross-file references\u2026${' '.repeat(20)}`);\n } else if (p.total > 0) {\n const bar = _bar(pct);\n const suffix = p.current === p.total\n ? `${_v}${_num(p.current)}${_r}${_d}/${_num(p.total)} refs${_r}\\n`\n : `${_v}${_num(p.current)}${_r}${_d}/${_num(p.total)}${_r}${' '.repeat(10)}`;\n const prefix = p.current === p.total ? `\\r ${_v}\u2713 resolving${_r}` : `\\r ${_v}resolving${_r} `;\n process.stdout.write(`${prefix} [${bar}] ${suffix}`);\n }\n\n } else if (p.phase === 'embeddings') {\n if (p.current === -1) {\n process.stdout.write(`\\n \\x1b[33m\u26A0 Large codebase: ${_num(p.total)} embeddable symbols detected.\\x1b[0m\\n`);\n process.stdout.write(` \\x1b[33m Embedding may be slow or memory-intensive. Consider setting enableEmbeddings: false\\x1b[0m\\n`);\n process.stdout.write(` \\x1b[33m for codebases this large, or use a lighter model (e.g. Xenova/all-MiniLM-L6-v2).\\x1b[0m\\n\\n`);\n } else {\n process.stdout.write(`\\r ${_v}embeddings${_r} [${_bar(pct)}] ${_v}${pct}%${_r}${' '.repeat(10)}`);\n if (p.current === p.total && p.total > 0) process.stdout.write('\\n');\n }\n\n } else {\n process.stdout.write(`\\r ${_v}${p.phase}${_r} ${p.current}/${p.total}${' '.repeat(20)}`);\n }\n}\n\n/**\n * Verbose sync progress renderer for `sync --progress`.\n * Prints each file as it is processed, errors inline, and a running count.\n * Exclude-cleanup removals are shown with a distinct prefix.\n */\nexport function renderSyncProgressVerbose(p: IndexProgress): void {\n if (p.phase === 'scanning') {\n if (p.meta?.excludeCleanup && p.meta.file) {\n // A file is being removed because it now matches an exclude pattern\n process.stdout.write(` ${_d}exclude${_r} ${_d}${p.meta.file}${_r}\\n`);\n } else if (p.current > 0) {\n process.stdout.write(` ${_v}\u2713 scanning${_r} ${_v}${_num(p.current)}${_r} ${_d}files found${_r}\\n`);\n } else {\n process.stdout.write(` ${_v}scanning${_r} ${_d}detecting changes\u2026${_r}\\n`);\n }\n\n } else if (p.phase === 'parsing') {\n if (p.currentFile) {\n const short = p.currentFile.length > 60\n ? '\u2026' + p.currentFile.slice(p.currentFile.length - 59)\n : p.currentFile;\n process.stdout.write(` ${_v}parse${_r} ${_d}[${_num(p.current)}/${_num(p.total)}]${_r} ${short}\\n`);\n }\n\n } else if (p.phase === 'resolving') {\n if (p.current === 0 && p.total <= 1) {\n process.stdout.write(` ${_v}resolving${_r} cross-file references\u2026\\n`);\n } else if (p.total > 0 && p.current === p.total) {\n process.stdout.write(` ${_v}\u2713 resolving${_r} ${_v}${_num(p.current)}${_r}${_d}/${_num(p.total)} refs${_r}\\n`);\n }\n\n } else if (p.phase === 'embeddings') {\n if (p.current === -1) {\n process.stdout.write(`\\n \\x1b[33m\u26A0 Large codebase: ${_num(p.total)} embeddable symbols detected.\\x1b[0m\\n`);\n process.stdout.write(` \\x1b[33m Embedding may be slow or memory-intensive. Consider setting enableEmbeddings: false\\x1b[0m\\n`);\n process.stdout.write(` \\x1b[33m for codebases this large, or use a lighter model (e.g. Xenova/all-MiniLM-L6-v2).\\x1b[0m\\n\\n`);\n } else {\n const pct = p.total > 0 ? Math.round((p.current / p.total) * 100) : 0;\n process.stdout.write(`\\r ${_v}embeddings${_r} [${_bar(pct)}] ${_v}${pct}%${_r}${' '.repeat(10)}`);\n if (p.current === p.total && p.total > 0) process.stdout.write('\\n');\n }\n\n } else if (p.phase === 'architecture') {\n if (p.meta?.msg) {\n process.stdout.write(` ${_v}architecture${_r} ${_d}${p.meta.msg}${_r}\\n`);\n } else if (p.current === p.total && p.total > 0) {\n process.stdout.write(` ${_v}\u2713 architecture${_r}\\n`);\n }\n\n } else {\n process.stdout.write(` ${_v}${p.phase}${_r} ${p.current}/${p.total}\\n`);\n }\n}\n\n/**\n * Renders the final sync summary with before/after counts.\n */\nexport function renderSyncSummary(result: SyncResult): void {\n const secs = (result.duration / 1000).toFixed(1);\n const filesChanged = result.added.length + result.modified.length;\n const filesDeleted = result.removed.length;\n\n console.log(`\\n ${_g}\u2713${_r} sync complete ${_d}(${secs}s)${_r}`);\n console.log(` ${_d}files scanned:${_r} ${_v}${_num(result.filesScanned)}${_r}`);\n console.log(` ${_d}files changed:${_r} ${_v}${_num(filesChanged)}${_r}`);\n console.log(` ${_d}files deleted:${_r} ${_v}${_num(filesDeleted)}${_r}`);\n console.log(` ${_d}nodes added:${_r} ${_v}${_num(result.nodesCreated)}${_r}`);\n console.log(` ${_d}nodes updated:${_r} ${_v}${_num(result.nodesUpdated)}${_r}`);\n console.log(` ${_d}nodes removed:${_r} ${_v}${_num(result.nodesRemoved)}${_r}`);\n console.log(` ${_d}edges added:${_r} ${_v}${_num(result.edgesCreated)}${_r}`);\n console.log(` ${_d}edges removed:${_r} ${_v}${_num(result.edgesRemoved)}${_r}`);\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,11 @@
1
+ export declare const violet = "\u001B[38;5;99m";
2
+ export declare const bold = "\u001B[1m";
3
+ export declare const dim = "\u001B[2m";
4
+ export declare const green = "\u001B[38;5;114m";
5
+ export declare const reset = "\u001B[0m";
6
+ export declare function label(text: string): string;
7
+ export declare function value(text: string): string;
8
+ export declare function section(text: string): string;
9
+ /** Render a two-column table with violet borders. Entries: [label, value] pairs. */
10
+ export declare function renderTable(entries: [string, string][], indent?: string): string;
11
+ //# sourceMappingURL=ui.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ui.d.ts","sourceRoot":"","sources":["../../src/bin/ui.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,MAAM,oBAAkB,CAAC;AACtC,eAAO,MAAM,IAAI,cAAc,CAAC;AAChC,eAAO,MAAM,GAAG,cAAe,CAAC;AAChC,eAAO,MAAM,KAAK,qBAAoB,CAAC;AACvC,eAAO,MAAM,KAAK,cAAa,CAAC;AAEhC,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAoC;AAC/E,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAA8C;AACzF,wBAAgB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAA8C;AAE3F,oFAAoF;AACpF,wBAAgB,WAAW,CAAC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE,MAAM,SAAO,GAAG,MAAM,CAa9E"}
package/dist/bin/ui.js ADDED
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var ui_exports = {};
20
+ __export(ui_exports, {
21
+ bold: () => bold,
22
+ dim: () => dim,
23
+ green: () => green,
24
+ label: () => label,
25
+ renderTable: () => renderTable,
26
+ reset: () => reset,
27
+ section: () => section,
28
+ value: () => value,
29
+ violet: () => violet
30
+ });
31
+ module.exports = __toCommonJS(ui_exports);
32
+ const violet = "\x1B[38;5;99m";
33
+ const bold = "\x1B[1m";
34
+ const dim = "\x1B[2m";
35
+ const green = "\x1B[38;5;114m";
36
+ const reset = "\x1B[0m";
37
+ function label(text) {
38
+ return `${dim}${text}${reset}`;
39
+ }
40
+ function value(text) {
41
+ return `${violet}${bold}${text}${reset}`;
42
+ }
43
+ function section(text) {
44
+ return `${violet}${bold}${text}${reset}`;
45
+ }
46
+ function renderTable(entries, indent = " ") {
47
+ if (entries.length === 0) return "";
48
+ const colW = Math.max(...entries.map(([k]) => k.length));
49
+ const top = `${indent}${violet}\u250C${"\u2500".repeat(colW + 2)}\u252C${"\u2500".repeat(18)}\u2510${reset}`;
50
+ const bottom = `${indent}${violet}\u2514${"\u2500".repeat(colW + 2)}\u2534${"\u2500".repeat(18)}\u2518${reset}`;
51
+ const rows = entries.map(([k, v], i) => {
52
+ const sep = i < entries.length - 1 ? `
53
+ ${indent}${violet}\u251C${"\u2500".repeat(colW + 2)}\u253C${"\u2500".repeat(18)}\u2524${reset}` : "";
54
+ const pad = " ".repeat(colW - k.length);
55
+ return `${indent}${violet}\u2502${reset} ${dim}${k}${reset}${pad} ${violet}\u2502${reset} ${violet}${bold}${v}${reset}${" ".repeat(Math.max(0, 16 - v.length))} ${violet}\u2502${reset}${sep}`;
56
+ });
57
+ return [top, ...rows, bottom].join("\n");
58
+ }
59
+ // Annotate the CommonJS export names for ESM import in node:
60
+ 0 && (module.exports = {
61
+ bold,
62
+ dim,
63
+ green,
64
+ label,
65
+ renderTable,
66
+ reset,
67
+ section,
68
+ value,
69
+ violet
70
+ });
71
+ //# sourceMappingURL=ui.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/bin/ui.ts"],
4
+ "sourcesContent": ["export const violet = '\\x1b[38;5;99m';\nexport const bold = '\\x1b[1m';\nexport const dim = '\\x1b[2m';\nexport const green = '\\x1b[38;5;114m';\nexport const reset = '\\x1b[0m';\n\nexport function label(text: string): string { return `${dim}${text}${reset}`; }\nexport function value(text: string): string { return `${violet}${bold}${text}${reset}`; }\nexport function section(text: string): string { return `${violet}${bold}${text}${reset}`; }\n\n/** Render a two-column table with violet borders. Entries: [label, value] pairs. */\nexport function renderTable(entries: [string, string][], indent = ' '): string {\n if (entries.length === 0) return '';\n const colW = Math.max(...entries.map(([k]) => k.length));\n const top = `${indent}${violet}\u250C${'\u2500'.repeat(colW + 2)}\u252C${'\u2500'.repeat(18)}\u2510${reset}`;\n const bottom = `${indent}${violet}\u2514${'\u2500'.repeat(colW + 2)}\u2534${'\u2500'.repeat(18)}\u2518${reset}`;\n const rows = entries.map(([k, v], i) => {\n const sep = i < entries.length - 1\n ? `\\n${indent}${violet}\u251C${'\u2500'.repeat(colW + 2)}\u253C${'\u2500'.repeat(18)}\u2524${reset}`\n : '';\n const pad = ' '.repeat(colW - k.length);\n return `${indent}${violet}\u2502${reset} ${dim}${k}${reset}${pad} ${violet}\u2502${reset} ${violet}${bold}${v}${reset}${' '.repeat(Math.max(0, 16 - v.length))} ${violet}\u2502${reset}${sep}`;\n });\n return [top, ...rows, bottom].join('\\n');\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,SAAS;AACf,MAAM,OAAS;AACf,MAAM,MAAS;AACf,MAAM,QAAS;AACf,MAAM,QAAS;AAEf,SAAS,MAAM,MAAsB;AAAE,SAAO,GAAG,GAAG,GAAG,IAAI,GAAG,KAAK;AAAI;AACvE,SAAS,MAAM,MAAsB;AAAE,SAAO,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK;AAAI;AACjF,SAAS,QAAQ,MAAsB;AAAE,SAAO,GAAG,MAAM,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK;AAAI;AAGnF,SAAS,YAAY,SAA6B,SAAS,MAAc;AAC9E,MAAI,QAAQ,WAAW,EAAG,QAAO;AACjC,QAAM,OAAO,KAAK,IAAI,GAAG,QAAQ,IAAI,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC;AACvD,QAAM,MAAS,GAAG,MAAM,GAAG,MAAM,SAAI,SAAI,OAAO,OAAO,CAAC,CAAC,SAAI,SAAI,OAAO,EAAE,CAAC,SAAI,KAAK;AACpF,QAAM,SAAS,GAAG,MAAM,GAAG,MAAM,SAAI,SAAI,OAAO,OAAO,CAAC,CAAC,SAAI,SAAI,OAAO,EAAE,CAAC,SAAI,KAAK;AACpF,QAAM,OAAO,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,GAAG,MAAM;AACtC,UAAM,MAAM,IAAI,QAAQ,SAAS,IAC7B;AAAA,EAAK,MAAM,GAAG,MAAM,SAAI,SAAI,OAAO,OAAO,CAAC,CAAC,SAAI,SAAI,OAAO,EAAE,CAAC,SAAI,KAAK,KACvE;AACJ,UAAM,MAAM,IAAI,OAAO,OAAO,EAAE,MAAM;AACtC,WAAO,GAAG,MAAM,GAAG,MAAM,SAAI,KAAK,IAAI,GAAG,GAAG,CAAC,GAAG,KAAK,GAAG,GAAG,IAAI,MAAM,SAAI,KAAK,IAAI,MAAM,GAAG,IAAI,GAAG,CAAC,GAAG,KAAK,GAAG,IAAI,OAAO,KAAK,IAAI,GAAG,KAAK,EAAE,MAAM,CAAC,CAAC,IAAI,MAAM,SAAI,KAAK,GAAG,GAAG;AAAA,EAC/K,CAAC;AACD,SAAO,CAAC,KAAK,GAAG,MAAM,MAAM,EAAE,KAAK,IAAI;AACzC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,48 @@
1
+ /**
2
+ * KiroGraph Config System
3
+ *
4
+ * Mirrors CodeGraph src/config.ts — load, save, validate, and provide defaults
5
+ * for KiroGraph configuration.
6
+ */
7
+ export interface KiroGraphConfig {
8
+ version: number;
9
+ languages: string[];
10
+ include: string[];
11
+ exclude: string[];
12
+ maxFileSize: number;
13
+ extractDocstrings: boolean;
14
+ trackCallSites: boolean;
15
+ enableEmbeddings: boolean;
16
+ embeddingModel: string;
17
+ embeddingDim: number;
18
+ /** @deprecated Use semanticEngine instead. Kept for backwards compatibility. */
19
+ useVecIndex: boolean;
20
+ semanticEngine: 'cosine' | 'sqlite-vec' | 'orama' | 'pglite' | 'lancedb' | 'qdrant' | 'typesense';
21
+ typesenseDashboard: boolean;
22
+ qdrantDashboard: boolean;
23
+ minLogLevel: 'debug' | 'info' | 'warn' | 'error';
24
+ frameworkHints: string[];
25
+ fuzzyResolutionThreshold: number;
26
+ /** Enable architecture analysis (package graph + layer detection). Default: false. */
27
+ enableArchitecture: boolean;
28
+ /**
29
+ * User-defined layer → glob pattern overrides.
30
+ * When set, config-defined layers win over auto-detected ones.
31
+ * Example: { "api": ["src/routes/**", "src/controllers/**"] }
32
+ */
33
+ architectureLayers?: Record<string, string[]>;
34
+ }
35
+ /**
36
+ * Returns false if the pattern is potentially dangerous (ReDoS risk) or too long.
37
+ * Checks for catastrophic backtracking patterns like (a+)+ or (a|a)+.
38
+ */
39
+ export declare function isSafeRegex(pattern: string): boolean;
40
+ export declare function createDefaultConfig(_projectRoot?: string): KiroGraphConfig;
41
+ export declare function validateConfig(config: unknown): KiroGraphConfig;
42
+ export declare function loadConfig(projectRoot: string): Promise<KiroGraphConfig>;
43
+ export declare function saveConfig(projectRoot: string, config: KiroGraphConfig): Promise<void>;
44
+ export declare function updateConfig(projectRoot: string, patch: Partial<KiroGraphConfig>): Promise<KiroGraphConfig>;
45
+ export declare function addIncludePatterns(projectRoot: string, patterns: string[]): Promise<void>;
46
+ export declare function addExcludePatterns(projectRoot: string, patterns: string[]): Promise<void>;
47
+ export declare function shouldIncludeFile(config: KiroGraphConfig, relPath: string): boolean;
48
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AASH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,cAAc,EAAE,OAAO,CAAC;IAExB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,gFAAgF;IAChF,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,QAAQ,GAAG,YAAY,GAAG,OAAO,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,GAAG,WAAW,CAAC;IAClG,kBAAkB,EAAE,OAAO,CAAC;IAC5B,eAAe,EAAE,OAAO,CAAC;IACzB,WAAW,EAAE,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,CAAC;IACjD,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,wBAAwB,EAAE,MAAM,CAAC;IACjC,sFAAsF;IACtF,kBAAkB,EAAE,OAAO,CAAC;IAC5B;;;;OAIG;IACH,kBAAkB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;CAC/C;AAmBD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAOpD;AAID,wBAAgB,mBAAmB,CAAC,YAAY,CAAC,EAAE,MAAM,GAAG,eAAe,CAqB1E;AAID,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,eAAe,CA8F/D;AA+BD,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAsB9E;AAED,wBAAsB,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAK5F;AAUD,wBAAsB,YAAY,CAChC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,OAAO,CAAC,eAAe,CAAC,GAC9B,OAAO,CAAC,eAAe,CAAC,CAK1B;AAED,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAM/F;AAED,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAM/F;AAID,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAUnF"}
package/dist/config.js ADDED
@@ -0,0 +1,273 @@
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 config_exports = {};
30
+ __export(config_exports, {
31
+ addExcludePatterns: () => addExcludePatterns,
32
+ addIncludePatterns: () => addIncludePatterns,
33
+ createDefaultConfig: () => createDefaultConfig,
34
+ isSafeRegex: () => isSafeRegex,
35
+ loadConfig: () => loadConfig,
36
+ saveConfig: () => saveConfig,
37
+ shouldIncludeFile: () => shouldIncludeFile,
38
+ updateConfig: () => updateConfig,
39
+ validateConfig: () => validateConfig
40
+ });
41
+ module.exports = __toCommonJS(config_exports);
42
+ var fs = __toESM(require("fs"));
43
+ var path = __toESM(require("path"));
44
+ var import_picomatch = __toESM(require("picomatch"));
45
+ var import_errors = require("./errors");
46
+ const KIROGRAPH_DIR = ".kirograph";
47
+ const CONFIG_FILE = "config.json";
48
+ const KNOWN_FIELDS = /* @__PURE__ */ new Set([
49
+ "version",
50
+ "languages",
51
+ "include",
52
+ "exclude",
53
+ "maxFileSize",
54
+ "extractDocstrings",
55
+ "trackCallSites",
56
+ "enableEmbeddings",
57
+ "embeddingModel",
58
+ "embeddingDim",
59
+ "useVecIndex",
60
+ "semanticEngine",
61
+ "typesenseDashboard",
62
+ "qdrantDashboard",
63
+ "minLogLevel",
64
+ "frameworkHints",
65
+ "fuzzyResolutionThreshold",
66
+ "enableArchitecture",
67
+ "architectureLayers",
68
+ "cavemanMode",
69
+ "syncWarningThreshold"
70
+ ]);
71
+ const LOG_LEVELS = /* @__PURE__ */ new Set(["debug", "info", "warn", "error"]);
72
+ function isSafeRegex(pattern) {
73
+ if (pattern.length > 100) return false;
74
+ if (/\([^)]*[+*][^)]*\)[+*?]/.test(pattern)) return false;
75
+ if (/\([^)]*\|[^)]*\)[+*]/.test(pattern)) return false;
76
+ return true;
77
+ }
78
+ function createDefaultConfig(_projectRoot) {
79
+ return {
80
+ version: 2,
81
+ languages: [],
82
+ include: [],
83
+ exclude: ["**/node_modules/**", "**/dist/**", "**/build/**", "**/.git/**", "*.min.js", "**/.kirograph/**"],
84
+ maxFileSize: 1048576,
85
+ extractDocstrings: true,
86
+ trackCallSites: true,
87
+ enableEmbeddings: false,
88
+ embeddingModel: "nomic-ai/nomic-embed-text-v1.5",
89
+ embeddingDim: 768,
90
+ useVecIndex: false,
91
+ semanticEngine: "cosine",
92
+ typesenseDashboard: false,
93
+ qdrantDashboard: false,
94
+ minLogLevel: "warn",
95
+ frameworkHints: [],
96
+ fuzzyResolutionThreshold: 0.5,
97
+ enableArchitecture: false,
98
+ cavemanMode: "off",
99
+ syncWarningThreshold: 10
100
+ };
101
+ }
102
+ function validateConfig(config) {
103
+ const defaults = createDefaultConfig();
104
+ if (typeof config !== "object" || config === null) {
105
+ return defaults;
106
+ }
107
+ const raw = config;
108
+ for (const key of Object.keys(raw)) {
109
+ if (!KNOWN_FIELDS.has(key)) {
110
+ (0, import_errors.logWarn)(`Unknown config field: ${key}`);
111
+ }
112
+ }
113
+ const version = typeof raw.version === "number" ? raw.version : defaults.version;
114
+ const languages = Array.isArray(raw.languages) && raw.languages.every((l) => typeof l === "string") ? raw.languages : defaults.languages;
115
+ const maxFileSize = typeof raw.maxFileSize === "number" && raw.maxFileSize > 0 ? raw.maxFileSize : defaults.maxFileSize;
116
+ const extractDocstrings = typeof raw.extractDocstrings === "boolean" ? raw.extractDocstrings : defaults.extractDocstrings;
117
+ const trackCallSites = typeof raw.trackCallSites === "boolean" ? raw.trackCallSites : defaults.trackCallSites;
118
+ const enableEmbeddings = typeof raw.enableEmbeddings === "boolean" ? raw.enableEmbeddings : defaults.enableEmbeddings;
119
+ const embeddingModel = typeof raw.embeddingModel === "string" && raw.embeddingModel.length > 0 ? raw.embeddingModel : defaults.embeddingModel;
120
+ const embeddingDim = typeof raw.embeddingDim === "number" && raw.embeddingDim > 0 ? raw.embeddingDim : defaults.embeddingDim;
121
+ const useVecIndex = typeof raw.useVecIndex === "boolean" ? raw.useVecIndex : defaults.useVecIndex;
122
+ const SEMANTIC_ENGINES = /* @__PURE__ */ new Set(["cosine", "sqlite-vec", "orama", "pglite", "lancedb", "qdrant", "typesense"]);
123
+ const semanticEngine = typeof raw.semanticEngine === "string" && SEMANTIC_ENGINES.has(raw.semanticEngine) ? raw.semanticEngine : useVecIndex ? "sqlite-vec" : defaults.semanticEngine;
124
+ const typesenseDashboard = typeof raw.typesenseDashboard === "boolean" ? raw.typesenseDashboard : defaults.typesenseDashboard;
125
+ const qdrantDashboard = typeof raw.qdrantDashboard === "boolean" ? raw.qdrantDashboard : defaults.qdrantDashboard;
126
+ const minLogLevel = typeof raw.minLogLevel === "string" && LOG_LEVELS.has(raw.minLogLevel) ? raw.minLogLevel : defaults.minLogLevel;
127
+ const frameworkHints = Array.isArray(raw.frameworkHints) && raw.frameworkHints.every((h) => typeof h === "string") ? raw.frameworkHints : defaults.frameworkHints;
128
+ const fuzzyResolutionThreshold = typeof raw.fuzzyResolutionThreshold === "number" && raw.fuzzyResolutionThreshold >= 0 && raw.fuzzyResolutionThreshold <= 1 ? raw.fuzzyResolutionThreshold : defaults.fuzzyResolutionThreshold;
129
+ const enableArchitecture = typeof raw.enableArchitecture === "boolean" ? raw.enableArchitecture : defaults.enableArchitecture;
130
+ const architectureLayers = _validateArchitectureLayers(raw.architectureLayers);
131
+ const CAVEMAN_MODES = /* @__PURE__ */ new Set(["off", "lite", "full", "ultra"]);
132
+ const cavemanMode = typeof raw.cavemanMode === "string" && CAVEMAN_MODES.has(raw.cavemanMode) ? raw.cavemanMode : defaults.cavemanMode;
133
+ const syncWarningThreshold = typeof raw.syncWarningThreshold === "number" && raw.syncWarningThreshold >= 0 ? Math.round(raw.syncWarningThreshold) : defaults.syncWarningThreshold;
134
+ const include = _validatePatterns(raw.include, defaults.include);
135
+ const exclude = _validatePatterns(raw.exclude, defaults.exclude);
136
+ return {
137
+ version,
138
+ languages,
139
+ include,
140
+ exclude,
141
+ maxFileSize,
142
+ extractDocstrings,
143
+ trackCallSites,
144
+ enableEmbeddings,
145
+ embeddingModel,
146
+ embeddingDim,
147
+ useVecIndex,
148
+ semanticEngine,
149
+ typesenseDashboard,
150
+ qdrantDashboard,
151
+ minLogLevel,
152
+ frameworkHints,
153
+ fuzzyResolutionThreshold,
154
+ enableArchitecture,
155
+ cavemanMode,
156
+ syncWarningThreshold,
157
+ ...architectureLayers !== void 0 ? { architectureLayers } : {}
158
+ };
159
+ }
160
+ function _validateArchitectureLayers(raw) {
161
+ if (raw === void 0 || raw === null) return void 0;
162
+ if (typeof raw !== "object" || Array.isArray(raw)) return void 0;
163
+ const result = {};
164
+ for (const [key, val] of Object.entries(raw)) {
165
+ if (typeof key !== "string") continue;
166
+ if (!Array.isArray(val)) continue;
167
+ const patterns = val.filter((p) => typeof p === "string" && isSafeRegex(p));
168
+ if (patterns.length > 0) result[key] = patterns;
169
+ }
170
+ return Object.keys(result).length > 0 ? result : void 0;
171
+ }
172
+ function _validatePatterns(raw, fallback) {
173
+ if (!Array.isArray(raw)) return fallback;
174
+ const valid = [];
175
+ for (const p of raw) {
176
+ if (typeof p !== "string") continue;
177
+ if (!isSafeRegex(p)) {
178
+ (0, import_errors.logWarn)(`Unsafe regex pattern skipped: ${p}`);
179
+ continue;
180
+ }
181
+ valid.push(p);
182
+ }
183
+ return valid;
184
+ }
185
+ const SHALLOW_TO_RECURSIVE = {
186
+ "node_modules/**": "**/node_modules/**",
187
+ "dist/**": "**/dist/**",
188
+ "build/**": "**/build/**",
189
+ ".git/**": "**/.git/**",
190
+ ".kirograph/**": "**/.kirograph/**"
191
+ };
192
+ function migrateExcludePatterns(patterns) {
193
+ return patterns.map((p) => SHALLOW_TO_RECURSIVE[p] ?? p);
194
+ }
195
+ async function loadConfig(projectRoot) {
196
+ const dir = path.join(projectRoot, KIROGRAPH_DIR);
197
+ const cfgPath = path.join(dir, CONFIG_FILE);
198
+ if (!fs.existsSync(cfgPath)) {
199
+ const defaults = createDefaultConfig(projectRoot);
200
+ await fs.promises.mkdir(dir, { recursive: true });
201
+ await _writeAtomic(cfgPath, defaults);
202
+ return defaults;
203
+ }
204
+ let raw;
205
+ try {
206
+ const text = await fs.promises.readFile(cfgPath, "utf8");
207
+ raw = JSON.parse(text);
208
+ } catch (err) {
209
+ (0, import_errors.logError)("Config parse error", { path: cfgPath, error: err instanceof Error ? err.message : String(err) });
210
+ return createDefaultConfig(projectRoot);
211
+ }
212
+ const config = validateConfig(raw);
213
+ if (config.version < 2) {
214
+ config.version = 2;
215
+ config.exclude = migrateExcludePatterns(config.exclude);
216
+ await fs.promises.mkdir(dir, { recursive: true });
217
+ await _writeAtomic(cfgPath, config);
218
+ }
219
+ return config;
220
+ }
221
+ async function saveConfig(projectRoot, config) {
222
+ const dir = path.join(projectRoot, KIROGRAPH_DIR);
223
+ const cfgPath = path.join(dir, CONFIG_FILE);
224
+ await fs.promises.mkdir(dir, { recursive: true });
225
+ await _writeAtomic(cfgPath, config);
226
+ }
227
+ async function _writeAtomic(cfgPath, config) {
228
+ const tmp = cfgPath + ".tmp";
229
+ await fs.promises.writeFile(tmp, JSON.stringify(config, null, 2), "utf8");
230
+ await fs.promises.rename(tmp, cfgPath);
231
+ }
232
+ async function updateConfig(projectRoot, patch) {
233
+ const current = await loadConfig(projectRoot);
234
+ const updated = validateConfig({ ...current, ...patch });
235
+ await saveConfig(projectRoot, updated);
236
+ return updated;
237
+ }
238
+ async function addIncludePatterns(projectRoot, patterns) {
239
+ const config = await loadConfig(projectRoot);
240
+ const existing = new Set(config.include);
241
+ const toAdd = patterns.filter((p) => isSafeRegex(p) && !existing.has(p));
242
+ if (toAdd.length === 0) return;
243
+ await saveConfig(projectRoot, { ...config, include: [...config.include, ...toAdd] });
244
+ }
245
+ async function addExcludePatterns(projectRoot, patterns) {
246
+ const config = await loadConfig(projectRoot);
247
+ const existing = new Set(config.exclude);
248
+ const toAdd = patterns.filter((p) => isSafeRegex(p) && !existing.has(p));
249
+ if (toAdd.length === 0) return;
250
+ await saveConfig(projectRoot, { ...config, exclude: [...config.exclude, ...toAdd] });
251
+ }
252
+ function shouldIncludeFile(config, relPath) {
253
+ for (const pattern of config.exclude) {
254
+ if ((0, import_picomatch.default)(pattern)(relPath)) return false;
255
+ }
256
+ if (config.include.length > 0) {
257
+ return config.include.some((pattern) => (0, import_picomatch.default)(pattern)(relPath));
258
+ }
259
+ return true;
260
+ }
261
+ // Annotate the CommonJS export names for ESM import in node:
262
+ 0 && (module.exports = {
263
+ addExcludePatterns,
264
+ addIncludePatterns,
265
+ createDefaultConfig,
266
+ isSafeRegex,
267
+ loadConfig,
268
+ saveConfig,
269
+ shouldIncludeFile,
270
+ updateConfig,
271
+ validateConfig
272
+ });
273
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../src/config.ts"],
4
+ "sourcesContent": ["/**\n * KiroGraph Config System\n *\n * Mirrors CodeGraph src/config.ts \u2014 load, save, validate, and provide defaults\n * for KiroGraph configuration.\n */\n\nimport * as fs from 'fs';\nimport * as path from 'path';\nimport picomatch from 'picomatch';\nimport { logWarn, logError } from './errors';\n\n// \u2500\u2500 Types \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport interface KiroGraphConfig {\n version: number;\n languages: string[];\n include: string[];\n exclude: string[];\n maxFileSize: number;\n extractDocstrings: boolean;\n trackCallSites: boolean;\n // Parity fields:\n enableEmbeddings: boolean;\n embeddingModel: string;\n embeddingDim: number;\n /** @deprecated Use semanticEngine instead. Kept for backwards compatibility. */\n useVecIndex: boolean;\n semanticEngine: 'cosine' | 'sqlite-vec' | 'orama' | 'pglite' | 'lancedb' | 'qdrant' | 'typesense';\n typesenseDashboard: boolean;\n qdrantDashboard: boolean;\n minLogLevel: 'debug' | 'info' | 'warn' | 'error';\n frameworkHints: string[];\n fuzzyResolutionThreshold: number; // 0.0\u20131.0\n /** Enable architecture analysis (package graph + layer detection). Default: false. */\n enableArchitecture: boolean;\n /**\n * User-defined layer \u2192 glob pattern overrides.\n * When set, config-defined layers win over auto-detected ones.\n * Example: { \"api\": [\"src/routes/**\", \"src/controllers/**\"] }\n */\n architectureLayers?: Record<string, string[]>;\n /** Agent communication style injected at agentSpawn. Default: 'off'. */\n cavemanMode: 'off' | 'lite' | 'full' | 'ultra';\n /**\n * Number of pending (unindexed) files above which kirograph_status warns the agent.\n * Set to 0 to disable the warning. Default: 10.\n */\n syncWarningThreshold: number;\n}\n\n// \u2500\u2500 Constants \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nconst KIROGRAPH_DIR = '.kirograph';\nconst CONFIG_FILE = 'config.json';\n\nconst KNOWN_FIELDS = new Set<string>([\n 'version', 'languages', 'include', 'exclude', 'maxFileSize',\n 'extractDocstrings', 'trackCallSites', 'enableEmbeddings', 'embeddingModel', 'embeddingDim',\n 'useVecIndex', 'semanticEngine', 'typesenseDashboard', 'qdrantDashboard',\n 'minLogLevel', 'frameworkHints', 'fuzzyResolutionThreshold',\n 'enableArchitecture', 'architectureLayers', 'cavemanMode', 'syncWarningThreshold',\n]);\n\nconst LOG_LEVELS = new Set(['debug', 'info', 'warn', 'error']);\n\n// \u2500\u2500 ReDoS-safe regex check \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * Returns false if the pattern is potentially dangerous (ReDoS risk) or too long.\n * Checks for catastrophic backtracking patterns like (a+)+ or (a|a)+.\n */\nexport function isSafeRegex(pattern: string): boolean {\n if (pattern.length > 100) return false;\n // Detect nested quantifiers: (x+)+ or (x*)+ or (x+)* etc.\n if (/\\([^)]*[+*][^)]*\\)[+*?]/.test(pattern)) return false;\n // Detect alternation with overlap: (a|a)+ style\n if (/\\([^)]*\\|[^)]*\\)[+*]/.test(pattern)) return false;\n return true;\n}\n\n// \u2500\u2500 Default config \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport function createDefaultConfig(_projectRoot?: string): KiroGraphConfig {\n return {\n version: 2,\n languages: [],\n include: [],\n exclude: ['**/node_modules/**', '**/dist/**', '**/build/**', '**/.git/**', '*.min.js', '**/.kirograph/**'],\n maxFileSize: 1_048_576,\n extractDocstrings: true,\n trackCallSites: true,\n enableEmbeddings: false,\n embeddingModel: 'nomic-ai/nomic-embed-text-v1.5',\n embeddingDim: 768,\n useVecIndex: false,\n semanticEngine: 'cosine',\n typesenseDashboard: false,\n qdrantDashboard: false,\n minLogLevel: 'warn',\n frameworkHints: [],\n fuzzyResolutionThreshold: 0.5,\n enableArchitecture: false,\n cavemanMode: 'off',\n syncWarningThreshold: 10,\n };\n}\n\n// \u2500\u2500 Validation \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport function validateConfig(config: unknown): KiroGraphConfig {\n const defaults = createDefaultConfig();\n\n if (typeof config !== 'object' || config === null) {\n return defaults;\n }\n\n const raw = config as Record<string, unknown>;\n\n // Warn about unknown fields\n for (const key of Object.keys(raw)) {\n if (!KNOWN_FIELDS.has(key)) {\n logWarn(`Unknown config field: ${key}`);\n }\n }\n\n // Validate and coerce each field\n const version = typeof raw.version === 'number' ? raw.version : defaults.version;\n const languages = Array.isArray(raw.languages) && raw.languages.every(l => typeof l === 'string')\n ? (raw.languages as string[])\n : defaults.languages;\n const maxFileSize = typeof raw.maxFileSize === 'number' && raw.maxFileSize > 0\n ? raw.maxFileSize\n : defaults.maxFileSize;\n const extractDocstrings = typeof raw.extractDocstrings === 'boolean'\n ? raw.extractDocstrings\n : defaults.extractDocstrings;\n const trackCallSites = typeof raw.trackCallSites === 'boolean'\n ? raw.trackCallSites\n : defaults.trackCallSites;\n const enableEmbeddings = typeof raw.enableEmbeddings === 'boolean'\n ? raw.enableEmbeddings\n : defaults.enableEmbeddings;\n const embeddingModel = typeof raw.embeddingModel === 'string' && raw.embeddingModel.length > 0\n ? raw.embeddingModel\n : defaults.embeddingModel;\n const embeddingDim = typeof raw.embeddingDim === 'number' && raw.embeddingDim > 0\n ? raw.embeddingDim\n : defaults.embeddingDim;\n const useVecIndex = typeof raw.useVecIndex === 'boolean'\n ? raw.useVecIndex\n : defaults.useVecIndex;\n const SEMANTIC_ENGINES = new Set(['cosine', 'sqlite-vec', 'orama', 'pglite', 'lancedb', 'qdrant', 'typesense']);\n // useVecIndex is a legacy alias: if set and no explicit semanticEngine, map it\n const semanticEngine = typeof raw.semanticEngine === 'string' && SEMANTIC_ENGINES.has(raw.semanticEngine)\n ? (raw.semanticEngine as KiroGraphConfig['semanticEngine'])\n : useVecIndex ? 'sqlite-vec' : defaults.semanticEngine;\n const typesenseDashboard = typeof raw.typesenseDashboard === 'boolean'\n ? raw.typesenseDashboard\n : defaults.typesenseDashboard;\n const qdrantDashboard = typeof raw.qdrantDashboard === 'boolean'\n ? raw.qdrantDashboard\n : defaults.qdrantDashboard;\n const minLogLevel = typeof raw.minLogLevel === 'string' && LOG_LEVELS.has(raw.minLogLevel)\n ? (raw.minLogLevel as KiroGraphConfig['minLogLevel'])\n : defaults.minLogLevel;\n const frameworkHints = Array.isArray(raw.frameworkHints) && raw.frameworkHints.every(h => typeof h === 'string')\n ? (raw.frameworkHints as string[])\n : defaults.frameworkHints;\n const fuzzyResolutionThreshold = typeof raw.fuzzyResolutionThreshold === 'number'\n && raw.fuzzyResolutionThreshold >= 0\n && raw.fuzzyResolutionThreshold <= 1\n ? raw.fuzzyResolutionThreshold\n : defaults.fuzzyResolutionThreshold;\n const enableArchitecture = typeof raw.enableArchitecture === 'boolean'\n ? raw.enableArchitecture\n : defaults.enableArchitecture;\n const architectureLayers = _validateArchitectureLayers(raw.architectureLayers);\n const CAVEMAN_MODES = new Set(['off', 'lite', 'full', 'ultra']);\n const cavemanMode = typeof raw.cavemanMode === 'string' && CAVEMAN_MODES.has(raw.cavemanMode)\n ? (raw.cavemanMode as KiroGraphConfig['cavemanMode'])\n : defaults.cavemanMode;\n const syncWarningThreshold = typeof raw.syncWarningThreshold === 'number' && raw.syncWarningThreshold >= 0\n ? Math.round(raw.syncWarningThreshold)\n : defaults.syncWarningThreshold;\n\n // Validate glob patterns \u2014 exclude unsafe regex patterns\n const include = _validatePatterns(raw.include, defaults.include);\n const exclude = _validatePatterns(raw.exclude, defaults.exclude);\n\n return {\n version,\n languages,\n include,\n exclude,\n maxFileSize,\n extractDocstrings,\n trackCallSites,\n enableEmbeddings,\n embeddingModel,\n embeddingDim,\n useVecIndex,\n semanticEngine,\n typesenseDashboard,\n qdrantDashboard,\n minLogLevel,\n frameworkHints,\n fuzzyResolutionThreshold,\n enableArchitecture,\n cavemanMode,\n syncWarningThreshold,\n ...(architectureLayers !== undefined ? { architectureLayers } : {}),\n };\n}\n\nfunction _validateArchitectureLayers(raw: unknown): Record<string, string[]> | undefined {\n if (raw === undefined || raw === null) return undefined;\n if (typeof raw !== 'object' || Array.isArray(raw)) return undefined;\n const result: Record<string, string[]> = {};\n for (const [key, val] of Object.entries(raw as Record<string, unknown>)) {\n if (typeof key !== 'string') continue;\n if (!Array.isArray(val)) continue;\n const patterns = val.filter((p): p is string => typeof p === 'string' && isSafeRegex(p));\n if (patterns.length > 0) result[key] = patterns;\n }\n return Object.keys(result).length > 0 ? result : undefined;\n}\n\nfunction _validatePatterns(raw: unknown, fallback: string[]): string[] {\n if (!Array.isArray(raw)) return fallback;\n const valid: string[] = [];\n for (const p of raw) {\n if (typeof p !== 'string') continue;\n if (!isSafeRegex(p)) {\n logWarn(`Unsafe regex pattern skipped: ${p}`);\n continue;\n }\n valid.push(p);\n }\n return valid;\n}\n\n// \u2500\u2500 Migration helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\n/**\n * Upgrades shallow exclude patterns (e.g. \"node_modules/**\") to recursive ones\n * (e.g. \"** /node_modules/**\") so nested directories are excluded at any depth.\n */\nconst SHALLOW_TO_RECURSIVE: Record<string, string> = {\n 'node_modules/**': '**/node_modules/**',\n 'dist/**': '**/dist/**',\n 'build/**': '**/build/**',\n '.git/**': '**/.git/**',\n '.kirograph/**': '**/.kirograph/**',\n};\n\nfunction migrateExcludePatterns(patterns: string[]): string[] {\n return patterns.map(p => SHALLOW_TO_RECURSIVE[p] ?? p);\n}\n\n// \u2500\u2500 Load / Save \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport async function loadConfig(projectRoot: string): Promise<KiroGraphConfig> {\n const dir = path.join(projectRoot, KIROGRAPH_DIR);\n const cfgPath = path.join(dir, CONFIG_FILE);\n\n if (!fs.existsSync(cfgPath)) {\n // Create default config file\n const defaults = createDefaultConfig(projectRoot);\n await fs.promises.mkdir(dir, { recursive: true });\n await _writeAtomic(cfgPath, defaults);\n return defaults;\n }\n\n let raw: unknown;\n try {\n const text = await fs.promises.readFile(cfgPath, 'utf8');\n raw = JSON.parse(text);\n } catch (err) {\n logError('Config parse error', { path: cfgPath, error: err instanceof Error ? err.message : String(err) });\n return createDefaultConfig(projectRoot);\n }\n\n const config = validateConfig(raw);\n\n // Migrate v1 \u2192 v2: upgrade shallow exclude patterns to recursive\n if (config.version < 2) {\n config.version = 2;\n config.exclude = migrateExcludePatterns(config.exclude);\n await fs.promises.mkdir(dir, { recursive: true });\n await _writeAtomic(cfgPath, config);\n }\n\n return config;\n}\n\nexport async function saveConfig(projectRoot: string, config: KiroGraphConfig): Promise<void> {\n const dir = path.join(projectRoot, KIROGRAPH_DIR);\n const cfgPath = path.join(dir, CONFIG_FILE);\n await fs.promises.mkdir(dir, { recursive: true });\n await _writeAtomic(cfgPath, config);\n}\n\nasync function _writeAtomic(cfgPath: string, config: KiroGraphConfig): Promise<void> {\n const tmp = cfgPath + '.tmp';\n await fs.promises.writeFile(tmp, JSON.stringify(config, null, 2), 'utf8');\n await fs.promises.rename(tmp, cfgPath);\n}\n\n// \u2500\u2500 Update helpers \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport async function updateConfig(\n projectRoot: string,\n patch: Partial<KiroGraphConfig>\n): Promise<KiroGraphConfig> {\n const current = await loadConfig(projectRoot);\n const updated = validateConfig({ ...current, ...patch });\n await saveConfig(projectRoot, updated);\n return updated;\n}\n\nexport async function addIncludePatterns(projectRoot: string, patterns: string[]): Promise<void> {\n const config = await loadConfig(projectRoot);\n const existing = new Set(config.include);\n const toAdd = patterns.filter(p => isSafeRegex(p) && !existing.has(p));\n if (toAdd.length === 0) return;\n await saveConfig(projectRoot, { ...config, include: [...config.include, ...toAdd] });\n}\n\nexport async function addExcludePatterns(projectRoot: string, patterns: string[]): Promise<void> {\n const config = await loadConfig(projectRoot);\n const existing = new Set(config.exclude);\n const toAdd = patterns.filter(p => isSafeRegex(p) && !existing.has(p));\n if (toAdd.length === 0) return;\n await saveConfig(projectRoot, { ...config, exclude: [...config.exclude, ...toAdd] });\n}\n\n// \u2500\u2500 File inclusion check \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\n\nexport function shouldIncludeFile(config: KiroGraphConfig, relPath: string): boolean {\n // Check exclude patterns first\n for (const pattern of config.exclude) {\n if (picomatch(pattern)(relPath)) return false;\n }\n // If include patterns are specified, file must match at least one\n if (config.include.length > 0) {\n return config.include.some(pattern => picomatch(pattern)(relPath));\n }\n return true;\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["picomatch"]
7
+ }
@@ -0,0 +1,61 @@
1
+ /**
2
+ * KiroGraph Context Builder
3
+ *
4
+ * Implements hybrid search (exact name + semantic + full-text) to assemble
5
+ * relevant code context for a given query.
6
+ * Mirrors CodeGraph src/context/index.ts
7
+ */
8
+ import type { Node, TaskContext } from '../types';
9
+ import type { GraphDatabase } from '../db/database';
10
+ import type { ReferenceResolver } from '../resolution/index';
11
+ import type { VectorManager } from '../vectors/index';
12
+ export interface ContextOptions {
13
+ maxNodes?: number;
14
+ maxCodeBlocks?: number;
15
+ maxCodeBlockSize?: number;
16
+ traversalDepth?: number;
17
+ }
18
+ export declare class ContextBuilder {
19
+ private readonly db;
20
+ private readonly resolver;
21
+ private readonly vectors;
22
+ private readonly projectRoot;
23
+ constructor(db: GraphDatabase, resolver: ReferenceResolver, vectors: VectorManager, projectRoot: string);
24
+ /**
25
+ * Find relevant nodes for the given query using hybrid search.
26
+ *
27
+ * Pipeline:
28
+ * 1. Extract symbol tokens from query
29
+ * 2. Exact name lookup (priority: 'exact')
30
+ * 3. Semantic search via VectorManager (priority: 'semantic')
31
+ * 4. Full-text search fallback (priority: 'fts')
32
+ * 5. Merge and deduplicate by node ID
33
+ * 6. Resolve import nodes to their definitions via 'imports' edge
34
+ * 7. Exclude 'import' and 'export' node kinds
35
+ * 8. Priority-based trimming when exceeding maxNodes
36
+ */
37
+ findRelevantContext(query: string, opts?: ContextOptions): Promise<Node[]>;
38
+ /**
39
+ * Build a full TaskContext for the given task description.
40
+ * Finds relevant nodes, gathers their edges and source snippets, and returns
41
+ * the structured context used by MCP tools and the query API.
42
+ */
43
+ buildTaskContext(task: string, opts?: {
44
+ maxNodes?: number;
45
+ includeCode?: boolean;
46
+ }): Promise<TaskContext>;
47
+ private _readNodeSource;
48
+ /**
49
+ * Build a formatted context string for the given query.
50
+ *
51
+ * Each node is formatted as:
52
+ * [filePath:line] kind name
53
+ * ```
54
+ * {snippet}
55
+ * ```
56
+ *
57
+ * Returns NO_RESULTS_MESSAGE when no nodes are found.
58
+ */
59
+ build(query: string, opts?: ContextOptions): Promise<string>;
60
+ }
61
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/context/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAIH,OAAO,KAAK,EAAE,IAAI,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AACpD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAkBtD,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAqBD,qBAAa,cAAc;IAEvB,OAAO,CAAC,QAAQ,CAAC,EAAE;IACnB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,WAAW;gBAHX,EAAE,EAAE,aAAa,EACjB,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,MAAM;IAGtC;;;;;;;;;;;;OAYG;IACG,mBAAmB,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC;IAsFhF;;;;OAIG;IACG,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,OAAO,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,CAAC;IA0B/G,OAAO,CAAC,eAAe;IAQvB;;;;;;;;;;OAUG;IACG,KAAK,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC;CAqBnE"}