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/installer/index.ts"],
4
+ "sourcesContent": ["/**\n * KiroGraph Installer for Kiro\n *\n * Wires up:\n * 1. .kiro/settings/mcp.json \u2014 registers the MCP server (IDE + CLI)\n * 2. .kiro/hooks/*.json \u2014 auto-sync hooks for Kiro IDE\n * 3. .kiro/steering/kirograph.md \u2014 teaches Kiro to use the graph tools (IDE + CLI)\n * 4. .kiro/agents/kirograph.json \u2014 custom agent config for Kiro CLI\n */\n\nimport * as path from 'path';\nimport * as readline from 'readline';\nimport { spawnSync } from 'child_process';\nimport { updateConfig } from '../../config';\nimport { printBanner } from '../banner';\nimport { renderIndexProgress } from '../progress';\nimport { dim, reset } from '../ui';\nimport { ask } from './prompts';\nimport { promptConfigOptions } from './config-prompt';\nimport { writeMcpConfig } from './mcp';\nimport { writeHooks } from './hooks';\nimport { writeSteering } from './steering';\nimport { writeCliAgent } from './cli-agent';\nimport { openTypesenseDashboard } from './dashboard';\nimport { ensureQdrantUI, openQdrantDashboard } from './qdrant-dashboard';\n\nexport async function runInstaller(): Promise<void> {\n printBanner();\n\n const rl = readline.createInterface({ input: process.stdin, output: process.stdout });\n\n try {\n const cwd = process.cwd();\n const kiroDir = path.join(cwd, '.kiro');\n\n console.log(` Workspace: ${cwd}\\n`);\n\n const proceed = await ask(rl, ' Install KiroGraph for this Kiro workspace? (Y/n) ');\n if (proceed.toLowerCase() === 'n') { console.log(' Cancelled.'); rl.close(); return; }\n console.log();\n\n // 1. MCP config\n writeMcpConfig(kiroDir);\n\n // 2. IDE hooks\n writeHooks(kiroDir);\n\n // 3. Steering written after config prompt (needs cavemanMode) \u2014 deferred below\n\n // 3b. Prompt for config options and persist\n const patch = await promptConfigOptions(rl);\n try {\n await updateConfig(cwd, patch);\n console.log(`\\n Configuration saved to ${cwd}/.kirograph/config.json`);\n console.log(` \u2022 enableEmbeddings: ${patch.enableEmbeddings}`);\n if ('embeddingModel' in patch) {\n console.log(` \u2022 embeddingModel: ${patch.embeddingModel} ${dim}(${patch.embeddingDim}-dim)${reset}`);\n }\n if (patch.enableEmbeddings) {\n console.log(` \u2022 semanticEngine: ${patch.semanticEngine}`);\n if (patch.semanticEngine === 'sqlite-vec') {\n console.log(`\\n Installing sqlite-vec dependencies...`);\n const result = spawnSync('npm', ['install', 'better-sqlite3', 'sqlite-vec'], { stdio: 'inherit', shell: true });\n if (result.status === 0) {\n console.log(` \u2713 better-sqlite3 and sqlite-vec installed`);\n } else {\n console.warn(` \u2717 npm install failed (exit ${result.status}). Run manually:`);\n console.warn(` npm install better-sqlite3 sqlite-vec`);\n }\n } else if (patch.semanticEngine === 'orama') {\n console.log(`\\n Installing Orama dependencies...`);\n const result = spawnSync('npm', ['install', '@orama/orama', '@orama/plugin-data-persistence'], { stdio: 'inherit', shell: true });\n if (result.status === 0) {\n console.log(` \u2713 @orama/orama and @orama/plugin-data-persistence installed`);\n } else {\n console.warn(` \u2717 npm install failed (exit ${result.status}). Run manually:`);\n console.warn(` npm install @orama/orama @orama/plugin-data-persistence`);\n }\n } else if (patch.semanticEngine === 'pglite') {\n console.log(`\\n Installing PGlite dependencies...`);\n const result = spawnSync('npm', ['install', '@electric-sql/pglite'], { stdio: 'inherit', shell: true });\n if (result.status === 0) {\n console.log(` \u2713 @electric-sql/pglite installed`);\n } else {\n console.warn(` \u2717 npm install failed (exit ${result.status}). Run manually:`);\n console.warn(` npm install @electric-sql/pglite`);\n }\n } else if (patch.semanticEngine === 'lancedb') {\n console.log(`\\n Installing LanceDB dependencies...`);\n const result = spawnSync('npm', ['install', '@lancedb/lancedb'], { stdio: 'inherit', shell: true });\n if (result.status === 0) {\n console.log(` \u2713 @lancedb/lancedb installed`);\n } else {\n console.warn(` \u2717 npm install failed (exit ${result.status}). Run manually:`);\n console.warn(` npm install @lancedb/lancedb`);\n }\n } else if (patch.semanticEngine === 'qdrant') {\n console.log(`\\n Installing Qdrant dependencies...`);\n const result = spawnSync('npm', ['install', 'qdrant-local'], { stdio: 'inherit', shell: true });\n if (result.status === 0) {\n console.log(` \u2713 qdrant-local installed`);\n } else {\n console.warn(` \u2717 npm install failed (exit ${result.status}). Run manually:`);\n console.warn(` npm install qdrant-local`);\n }\n } else if (patch.semanticEngine === 'typesense') {\n console.log(`\\n Installing Typesense dependencies...`);\n const result = spawnSync('npm', ['install', 'typesense'], { stdio: 'inherit', shell: true });\n if (result.status === 0) {\n console.log(` \u2713 typesense installed`);\n console.log(` \u2139 The Typesense binary (~37MB) will be auto-downloaded on first index run.`);\n } else {\n console.warn(` \u2717 npm install failed (exit ${result.status}). Run manually:`);\n console.warn(` npm install typesense`);\n }\n }\n }\n console.log(` \u2022 extractDocstrings: ${patch.extractDocstrings}`);\n console.log(` \u2022 trackCallSites: ${patch.trackCallSites}`);\n console.log(` \u2022 enableArchitecture: ${patch.enableArchitecture}`);\n console.log(` \u2022 cavemanMode: ${patch.cavemanMode ?? 'off'}`);\n\n // 3. Steering + CLI agent \u2014 written here so they include cavemanMode\n writeSteering(kiroDir, patch.cavemanMode ?? 'off');\n\n // 4. CLI agent config\n writeCliAgent(kiroDir);\n } catch (err) {\n const reason = err instanceof Error ? err.message : String(err);\n console.error(`\\n \u2717 Failed to write configuration: ${reason}`);\n process.exit(1);\n }\n\n // 5. Pre-download Qdrant UI before indexing so Qdrant starts with static content dir\n if (patch.qdrantDashboard) {\n await ensureQdrantUI(cwd);\n }\n\n // 6. Optionally init + index\n const doIndex = await ask(rl, '\\n Initialize and index this project now? (Y/n) ');\n if (doIndex.toLowerCase() !== 'n') {\n const KiroGraph = (await Promise.resolve().then(() => require('../../index.js'))).default;\n\n const fileBytes = new Map<string, { loaded: number; total: number }>();\n const modelProgress = (file: string, loaded: number, total: number, done: boolean): void => {\n const entry = fileBytes.get(file) ?? { loaded: 0, total: 0 };\n if (total > 0) entry.total = total;\n entry.loaded = done ? entry.total : loaded;\n fileBytes.set(file, entry);\n\n // Only count files where we know the size (content-length was present)\n const knownFiles = Array.from(fileBytes.values()).filter(f => f.total > 0);\n const totalLoaded = knownFiles.reduce((s, f) => s + f.loaded, 0);\n const totalBytes = knownFiles.reduce((s, f) => s + f.total, 0);\n const pct = totalBytes > 0 ? Math.min((totalLoaded / totalBytes) * 100, 100) : 0;\n\n const filled = Math.round(pct / 5);\n const bar = '\u2588'.repeat(filled) + '\u2591'.repeat(20 - filled);\n const mb = (totalLoaded / 1024 / 1024).toFixed(1);\n const totalMb = (totalBytes / 1024 / 1024).toFixed(1);\n process.stdout.write(`\\r [${bar}] ${pct.toFixed(0).padStart(3)}% ${mb} / ${totalMb} MB `);\n };\n\n // Suppress noisy internal warnings from @huggingface/transformers during download\n const originalStderrWrite = process.stderr.write.bind(process.stderr);\n const stderrFilter = (chunk: unknown, ...args: unknown[]): boolean => {\n const str = typeof chunk === 'string' ? chunk : String(chunk);\n if (str.includes('content-length') || str.includes('dtype not specified')) return true;\n return (originalStderrWrite as (...a: unknown[]) => boolean)(chunk, ...args);\n };\n process.stderr.write = stderrFilter as typeof process.stderr.write;\n\n let cg;\n try {\n if (!KiroGraph.isInitialized(cwd)) {\n process.stdout.write(' Downloading embedding model\u2026\\n');\n cg = await KiroGraph.init(cwd, undefined, modelProgress);\n process.stdout.write('\\n');\n console.log(' \u2713 Created .kirograph/');\n } else {\n cg = await KiroGraph.open(cwd, modelProgress);\n if (fileBytes.size > 0) process.stdout.write('\\n');\n }\n } finally {\n process.stderr.write = originalStderrWrite;\n }\n console.log(' Indexing...');\n const result = await cg.indexAll({ onProgress: renderIndexProgress });\n process.stdout.write('\\n');\n console.log(` \u2713 Indexed ${result.filesIndexed} files, ${result.nodesCreated} symbols, ${result.edgesCreated} edges`);\n cg.close();\n\n if (patch.typesenseDashboard) {\n const dashboardServer = await openTypesenseDashboard(cwd);\n console.log(` ${dim}Press Ctrl+C to stop the dashboard server when done.${reset}`);\n await new Promise<void>(resolve => {\n process.on('SIGINT', () => {\n if (dashboardServer) {\n dashboardServer.close(() => resolve());\n } else {\n resolve();\n }\n });\n });\n return; // rl.close() handled in finally\n }\n\n if (patch.qdrantDashboard) {\n await openQdrantDashboard(cwd);\n }\n }\n\n console.log('\\n Done! Restart Kiro IDE for the MCP server to load.');\n console.log(' For Kiro CLI, use the \"kirograph\" agent: kiro-cli --agent kirograph\\n');\n } finally {\n rl.close();\n }\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * KiroGraph Installer — MCP server registration
3
+ */
4
+ export declare function writeMcpConfig(kiroDir: string): void;
5
+ //# sourceMappingURL=mcp.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../../../src/bin/installer/mcp.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiBH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CA0BpD"}
@@ -0,0 +1,80 @@
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 mcp_exports = {};
30
+ __export(mcp_exports, {
31
+ writeMcpConfig: () => writeMcpConfig
32
+ });
33
+ module.exports = __toCommonJS(mcp_exports);
34
+ var fs = __toESM(require("fs"));
35
+ var path = __toESM(require("path"));
36
+ function ensureDir(p) {
37
+ fs.mkdirSync(p, { recursive: true });
38
+ }
39
+ function readJson(p) {
40
+ try {
41
+ return JSON.parse(fs.readFileSync(p, "utf8"));
42
+ } catch {
43
+ return {};
44
+ }
45
+ }
46
+ function writeJson(p, data) {
47
+ fs.writeFileSync(p, JSON.stringify(data, null, 2) + "\n");
48
+ }
49
+ function writeMcpConfig(kiroDir) {
50
+ const mcpPath = path.join(kiroDir, "settings", "mcp.json");
51
+ ensureDir(path.dirname(mcpPath));
52
+ const existing = readJson(mcpPath);
53
+ existing.mcpServers = existing.mcpServers ?? {};
54
+ existing.mcpServers.kirograph = {
55
+ command: "kirograph",
56
+ args: ["serve", "--mcp"],
57
+ disabled: false,
58
+ autoApprove: [
59
+ "kirograph_search",
60
+ "kirograph_context",
61
+ "kirograph_callers",
62
+ "kirograph_callees",
63
+ "kirograph_impact",
64
+ "kirograph_node",
65
+ "kirograph_status",
66
+ "kirograph_files",
67
+ "kirograph_dead_code",
68
+ "kirograph_circular_deps",
69
+ "kirograph_path",
70
+ "kirograph_type_hierarchy"
71
+ ]
72
+ };
73
+ writeJson(mcpPath, existing);
74
+ console.log(` \u2713 MCP server registered in ${mcpPath}`);
75
+ }
76
+ // Annotate the CommonJS export names for ESM import in node:
77
+ 0 && (module.exports = {
78
+ writeMcpConfig
79
+ });
80
+ //# sourceMappingURL=mcp.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/bin/installer/mcp.ts"],
4
+ "sourcesContent": ["/**\n * KiroGraph Installer \u2014 MCP server registration\n */\n\nimport * as fs from 'fs';\nimport * as path from 'path';\n\nfunction ensureDir(p: string): void {\n fs.mkdirSync(p, { recursive: true });\n}\n\nfunction readJson(p: string): any {\n try { return JSON.parse(fs.readFileSync(p, 'utf8')); } catch { return {}; }\n}\n\nfunction writeJson(p: string, data: unknown): void {\n fs.writeFileSync(p, JSON.stringify(data, null, 2) + '\\n');\n}\n\nexport function writeMcpConfig(kiroDir: string): void {\n const mcpPath = path.join(kiroDir, 'settings', 'mcp.json');\n ensureDir(path.dirname(mcpPath));\n const existing = readJson(mcpPath);\n existing.mcpServers = existing.mcpServers ?? {};\n existing.mcpServers.kirograph = {\n command: 'kirograph',\n args: ['serve', '--mcp'],\n disabled: false,\n autoApprove: [\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_type_hierarchy',\n ],\n };\n writeJson(mcpPath, existing);\n console.log(` \u2713 MCP server registered in ${mcpPath}`);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,SAAoB;AACpB,WAAsB;AAEtB,SAAS,UAAU,GAAiB;AAClC,KAAG,UAAU,GAAG,EAAE,WAAW,KAAK,CAAC;AACrC;AAEA,SAAS,SAAS,GAAgB;AAChC,MAAI;AAAE,WAAO,KAAK,MAAM,GAAG,aAAa,GAAG,MAAM,CAAC;AAAA,EAAG,QAAQ;AAAE,WAAO,CAAC;AAAA,EAAG;AAC5E;AAEA,SAAS,UAAU,GAAW,MAAqB;AACjD,KAAG,cAAc,GAAG,KAAK,UAAU,MAAM,MAAM,CAAC,IAAI,IAAI;AAC1D;AAEO,SAAS,eAAe,SAAuB;AACpD,QAAM,UAAU,KAAK,KAAK,SAAS,YAAY,UAAU;AACzD,YAAU,KAAK,QAAQ,OAAO,CAAC;AAC/B,QAAM,WAAW,SAAS,OAAO;AACjC,WAAS,aAAa,SAAS,cAAc,CAAC;AAC9C,WAAS,WAAW,YAAY;AAAA,IAC9B,SAAS;AAAA,IACT,MAAM,CAAC,SAAS,OAAO;AAAA,IACvB,UAAU;AAAA,IACV,aAAa;AAAA,MACX;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,IACF;AAAA,EACF;AACA,YAAU,SAAS,QAAQ;AAC3B,UAAQ,IAAI,qCAAgC,OAAO,EAAE;AACvD;",
6
+ "names": []
7
+ }
@@ -0,0 +1,28 @@
1
+ /**
2
+ * KiroGraph Installer — interactive prompt helpers
3
+ */
4
+ import * as readline from 'readline';
5
+ export declare const violet = "\u001B[38;5;99m";
6
+ export declare const reset = "\u001B[0m";
7
+ export declare const dim = "\u001B[2m";
8
+ export declare function ask(rl: readline.Interface, question: string): Promise<string>;
9
+ /**
10
+ * Prompt a yes/no question, re-prompting on invalid input.
11
+ * Accepts: "" (use default), "y", "Y", "n", "N".
12
+ */
13
+ export declare function askBool(rl: readline.Interface, question: string, description: string, defaultYes?: boolean): Promise<boolean>;
14
+ /**
15
+ * Prompt for a string value, returning the default on empty input.
16
+ */
17
+ export declare function askString(rl: readline.Interface, question: string, description: string, defaultValue: string): Promise<string>;
18
+ /**
19
+ * Interactive arrow-key selection menu.
20
+ * Temporarily pauses the readline interface to take over raw stdin,
21
+ * then resumes it when done so subsequent prompts work normally.
22
+ */
23
+ export declare function arrowSelect<T>(rl: readline.Interface, label: string, options: Array<{
24
+ value: T;
25
+ label: string;
26
+ description: string;
27
+ }>, defaultIndex?: number): Promise<T>;
28
+ //# sourceMappingURL=prompts.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompts.d.ts","sourceRoot":"","sources":["../../../src/bin/installer/prompts.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,QAAQ,MAAM,UAAU,CAAC;AAIrC,eAAO,MAAM,MAAM,oBAAkB,CAAC;AACtC,eAAO,MAAM,KAAK,cAAa,CAAC;AAChC,eAAO,MAAM,GAAG,cAAe,CAAC;AAMhC,wBAAgB,GAAG,CAAC,EAAE,EAAE,QAAQ,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAE7E;AAED;;;GAGG;AACH,wBAAsB,OAAO,CAC3B,EAAE,EAAE,QAAQ,CAAC,SAAS,EACtB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,UAAU,UAAO,GAChB,OAAO,CAAC,OAAO,CAAC,CAUlB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,EAAE,EAAE,QAAQ,CAAC,SAAS,EACtB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAIjB;AAED;;;;GAIG;AACH,wBAAsB,WAAW,CAAC,CAAC,EACjC,EAAE,EAAE,QAAQ,CAAC,SAAS,EACtB,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,KAAK,CAAC;IAAE,KAAK,EAAE,CAAC,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,EAChE,YAAY,SAAI,GACf,OAAO,CAAC,CAAC,CAAC,CAqEZ"}
@@ -0,0 +1,134 @@
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 prompts_exports = {};
20
+ __export(prompts_exports, {
21
+ arrowSelect: () => arrowSelect,
22
+ ask: () => ask,
23
+ askBool: () => askBool,
24
+ askString: () => askString,
25
+ dim: () => dim,
26
+ reset: () => reset,
27
+ violet: () => violet
28
+ });
29
+ module.exports = __toCommonJS(prompts_exports);
30
+ const violet = "\x1B[38;5;99m";
31
+ const reset = "\x1B[0m";
32
+ const dim = "\x1B[2m";
33
+ const bold = "\x1B[1m";
34
+ const green = "\x1B[32m";
35
+ function ask(rl, question) {
36
+ return new Promise((resolve) => rl.question(question, resolve));
37
+ }
38
+ async function askBool(rl, question, description, defaultYes = true) {
39
+ const hint = defaultYes ? "Y/n" : "y/N";
40
+ console.log(`
41
+ ${dim}${description}${reset}`);
42
+ while (true) {
43
+ const raw = await ask(rl, ` ${violet}${question}${reset} ${dim}(${hint})${reset} `);
44
+ if (raw === "") return defaultYes;
45
+ if (raw === "y" || raw === "Y") return true;
46
+ if (raw === "n" || raw === "N") return false;
47
+ console.log(` Please enter y or n.`);
48
+ }
49
+ }
50
+ async function askString(rl, question, description, defaultValue) {
51
+ console.log(`
52
+ ${dim}${description}${reset}`);
53
+ const raw = await ask(rl, ` ${violet}${question}${reset} ${dim}(${defaultValue})${reset} `);
54
+ return raw === "" ? defaultValue : raw;
55
+ }
56
+ async function arrowSelect(rl, label, options, defaultIndex = 0) {
57
+ const CURSOR_UP = "\x1B[A";
58
+ const CURSOR_DOWN = "\x1B[B";
59
+ const CLEAR_LINE = "\x1B[2K\x1B[G";
60
+ function descLineCount(desc) {
61
+ const termWidth = process.stdout.columns || 80;
62
+ return Math.max(1, Math.ceil((desc.length + 4) / termWidth));
63
+ }
64
+ let selected = defaultIndex;
65
+ let prevDescLines = descLineCount(options[defaultIndex].description);
66
+ function render(first) {
67
+ if (!first) {
68
+ process.stdout.write(`\x1B[${options.length + prevDescLines}A`);
69
+ }
70
+ for (let i = 0; i < options.length; i++) {
71
+ const active = i === selected;
72
+ const cursor = active ? `${green}${bold}\u276F${reset}` : " ";
73
+ const text = active ? `${bold}${options[i].label}${reset}` : `${dim}${options[i].label}${reset}`;
74
+ process.stdout.write(`${CLEAR_LINE} ${cursor} ${text}
75
+ `);
76
+ }
77
+ const desc = options[selected].description;
78
+ process.stdout.write(`${CLEAR_LINE} ${dim}${desc}${reset}
79
+ `);
80
+ prevDescLines = descLineCount(desc);
81
+ }
82
+ return new Promise((resolve) => {
83
+ console.log(`
84
+ ${violet}${label}${reset}`);
85
+ render(true);
86
+ rl.pause();
87
+ const stdin = process.stdin;
88
+ const wasTTY = stdin.isTTY;
89
+ if (wasTTY) stdin.setRawMode(true);
90
+ stdin.resume();
91
+ stdin.setEncoding("utf8");
92
+ function onData(key) {
93
+ if (key === CURSOR_UP || key === "\x1B[A") {
94
+ selected = (selected - 1 + options.length) % options.length;
95
+ render(false);
96
+ } else if (key === CURSOR_DOWN || key === "\x1B[B") {
97
+ selected = (selected + 1) % options.length;
98
+ render(false);
99
+ } else if (key === "\r" || key === "\n" || key === " ") {
100
+ stdin.removeListener("data", onData);
101
+ if (wasTTY) stdin.setRawMode(false);
102
+ stdin.pause();
103
+ rl.resume();
104
+ process.stdout.write(`\x1B[${options.length + prevDescLines}A`);
105
+ for (let i = 0; i < options.length; i++) {
106
+ const active = i === selected;
107
+ const cursor = active ? `${green}${bold}\u276F${reset}` : " ";
108
+ const text = active ? `${green}${bold}${options[i].label}${reset}` : `${dim}${options[i].label}${reset}`;
109
+ process.stdout.write(`${CLEAR_LINE} ${cursor} ${text}
110
+ `);
111
+ }
112
+ process.stdout.write(`${CLEAR_LINE}
113
+ `);
114
+ resolve(options[selected].value);
115
+ } else if (key === "") {
116
+ stdin.removeListener("data", onData);
117
+ if (wasTTY) stdin.setRawMode(false);
118
+ process.exit(1);
119
+ }
120
+ }
121
+ stdin.on("data", onData);
122
+ });
123
+ }
124
+ // Annotate the CommonJS export names for ESM import in node:
125
+ 0 && (module.exports = {
126
+ arrowSelect,
127
+ ask,
128
+ askBool,
129
+ askString,
130
+ dim,
131
+ reset,
132
+ violet
133
+ });
134
+ //# sourceMappingURL=prompts.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/bin/installer/prompts.ts"],
4
+ "sourcesContent": ["/**\n * KiroGraph Installer \u2014 interactive prompt helpers\n */\n\nimport * as readline from 'readline';\n\n// \u2500\u2500 ANSI \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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 const violet = '\\x1b[38;5;99m';\nexport const reset = '\\x1b[0m';\nexport const dim = '\\x1b[2m';\nconst bold = '\\x1b[1m';\nconst green = '\\x1b[32m';\n\n// \u2500\u2500 Primitives \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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 ask(rl: readline.Interface, question: string): Promise<string> {\n return new Promise(resolve => rl.question(question, resolve));\n}\n\n/**\n * Prompt a yes/no question, re-prompting on invalid input.\n * Accepts: \"\" (use default), \"y\", \"Y\", \"n\", \"N\".\n */\nexport async function askBool(\n rl: readline.Interface,\n question: string,\n description: string,\n defaultYes = true,\n): Promise<boolean> {\n const hint = defaultYes ? 'Y/n' : 'y/N';\n console.log(`\\n ${dim}${description}${reset}`);\n while (true) {\n const raw = await ask(rl, ` ${violet}${question}${reset} ${dim}(${hint})${reset} `);\n if (raw === '') return defaultYes;\n if (raw === 'y' || raw === 'Y') return true;\n if (raw === 'n' || raw === 'N') return false;\n console.log(` Please enter y or n.`);\n }\n}\n\n/**\n * Prompt for a string value, returning the default on empty input.\n */\nexport async function askString(\n rl: readline.Interface,\n question: string,\n description: string,\n defaultValue: string,\n): Promise<string> {\n console.log(`\\n ${dim}${description}${reset}`);\n const raw = await ask(rl, ` ${violet}${question}${reset} ${dim}(${defaultValue})${reset} `);\n return raw === '' ? defaultValue : raw;\n}\n\n/**\n * Interactive arrow-key selection menu.\n * Temporarily pauses the readline interface to take over raw stdin,\n * then resumes it when done so subsequent prompts work normally.\n */\nexport async function arrowSelect<T>(\n rl: readline.Interface,\n label: string,\n options: Array<{ value: T; label: string; description: string }>,\n defaultIndex = 0,\n): Promise<T> {\n const CURSOR_UP = '\\x1b[A';\n const CURSOR_DOWN = '\\x1b[B';\n const CLEAR_LINE = '\\x1b[2K\\x1b[G';\n\n function descLineCount(desc: string): number {\n const termWidth = process.stdout.columns || 80;\n return Math.max(1, Math.ceil((desc.length + 4) / termWidth));\n }\n\n let selected = defaultIndex;\n let prevDescLines = descLineCount(options[defaultIndex]!.description);\n\n function render(first: boolean) {\n if (!first) {\n process.stdout.write(`\\x1b[${options.length + prevDescLines}A`);\n }\n for (let i = 0; i < options.length; i++) {\n const active = i === selected;\n const cursor = active ? `${green}${bold}\u276F${reset}` : ' ';\n const text = active ? `${bold}${options[i]!.label}${reset}` : `${dim}${options[i]!.label}${reset}`;\n process.stdout.write(`${CLEAR_LINE} ${cursor} ${text}\\n`);\n }\n const desc = options[selected]!.description;\n process.stdout.write(`${CLEAR_LINE} ${dim}${desc}${reset}\\n`);\n prevDescLines = descLineCount(desc);\n }\n\n return new Promise(resolve => {\n console.log(`\\n ${violet}${label}${reset}`);\n render(true);\n\n rl.pause();\n const stdin = process.stdin;\n const wasTTY = stdin.isTTY;\n if (wasTTY) stdin.setRawMode(true);\n stdin.resume();\n stdin.setEncoding('utf8');\n\n function onData(key: string) {\n if (key === CURSOR_UP || key === '\\x1b[A') {\n selected = (selected - 1 + options.length) % options.length;\n render(false);\n } else if (key === CURSOR_DOWN || key === '\\x1b[B') {\n selected = (selected + 1) % options.length;\n render(false);\n } else if (key === '\\r' || key === '\\n' || key === ' ') {\n stdin.removeListener('data', onData);\n if (wasTTY) stdin.setRawMode(false);\n stdin.pause();\n rl.resume();\n process.stdout.write(`\\x1b[${options.length + prevDescLines}A`);\n for (let i = 0; i < options.length; i++) {\n const active = i === selected;\n const cursor = active ? `${green}${bold}\u276F${reset}` : ' ';\n const text = active ? `${green}${bold}${options[i]!.label}${reset}` : `${dim}${options[i]!.label}${reset}`;\n process.stdout.write(`${CLEAR_LINE} ${cursor} ${text}\\n`);\n }\n process.stdout.write(`${CLEAR_LINE}\\n`);\n resolve(options[selected]!.value);\n } else if (key === '\\x03') {\n stdin.removeListener('data', onData);\n if (wasTTY) stdin.setRawMode(false);\n process.exit(1);\n }\n }\n\n stdin.on('data', onData);\n });\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,4 @@
1
+ /** Download the Qdrant Web UI if not already cached. Returns true on success. */
2
+ export declare function ensureQdrantUI(projectRoot: string): Promise<boolean>;
3
+ export declare function openQdrantDashboard(projectRoot: string): Promise<void>;
4
+ //# sourceMappingURL=qdrant-dashboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"qdrant-dashboard.d.ts","sourceRoot":"","sources":["../../../src/bin/installer/qdrant-dashboard.ts"],"names":[],"mappings":"AAsFA,iFAAiF;AACjF,wBAAsB,cAAc,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAc1E;AAED,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAsB5E"}
@@ -0,0 +1,115 @@
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 qdrant_dashboard_exports = {};
30
+ __export(qdrant_dashboard_exports, {
31
+ ensureQdrantUI: () => ensureQdrantUI,
32
+ openQdrantDashboard: () => openQdrantDashboard
33
+ });
34
+ module.exports = __toCommonJS(qdrant_dashboard_exports);
35
+ var path = __toESM(require("path"));
36
+ var fs = __toESM(require("fs"));
37
+ var import_child_process = require("child_process");
38
+ var import_ui = require("../ui");
39
+ var import_qdrant_index = require("../../vectors/qdrant-index");
40
+ var import_archive = require("./archive");
41
+ const SERVER_STATE_FILE = "qdrant-server.json";
42
+ const UI_RELEASES_API = "https://api.github.com/repos/qdrant/qdrant-web-ui/releases/latest";
43
+ async function downloadQdrantUI(cacheDir) {
44
+ const release = await (0, import_archive.fetchJson)(UI_RELEASES_API);
45
+ const asset = release.assets.find((a) => a.name === "dist-qdrant.zip");
46
+ if (!asset) throw new Error("dist-qdrant.zip not found in latest release");
47
+ const tmpZip = path.join(cacheDir, "..", "_qdrant-ui.zip");
48
+ fs.mkdirSync(path.dirname(tmpZip), { recursive: true });
49
+ await (0, import_archive.downloadFile)(asset.browser_download_url, tmpZip);
50
+ const tmpDir = path.join(cacheDir, "..", "_qdrant-ui-extract");
51
+ fs.mkdirSync(tmpDir, { recursive: true });
52
+ await (0, import_archive.extractZip)(tmpZip, tmpDir);
53
+ const distDir = path.join(tmpDir, "dist");
54
+ if (!fs.existsSync(distDir)) throw new Error("dist/ not found in zip");
55
+ fs.rmSync(cacheDir, { recursive: true, force: true });
56
+ fs.renameSync(distDir, cacheDir);
57
+ try {
58
+ fs.unlinkSync(tmpZip);
59
+ } catch {
60
+ }
61
+ try {
62
+ fs.rmSync(tmpDir, { recursive: true, force: true });
63
+ } catch {
64
+ }
65
+ }
66
+ function openBrowser(url) {
67
+ const cmd = process.platform === "darwin" ? "open" : process.platform === "win32" ? "start" : "xdg-open";
68
+ try {
69
+ (0, import_child_process.spawn)(cmd, [url], { stdio: "ignore", detached: true, shell: process.platform === "win32" }).unref();
70
+ } catch {
71
+ }
72
+ }
73
+ async function ensureQdrantUI(projectRoot) {
74
+ const cacheDir = path.join(projectRoot, ".kirograph", import_qdrant_index.DASHBOARD_SUBDIR);
75
+ const indexHtml = path.join(cacheDir, "index.html");
76
+ if (fs.existsSync(indexHtml)) return true;
77
+ process.stdout.write(` Downloading Qdrant Web UI (first time only)\u2026
78
+ `);
79
+ try {
80
+ await downloadQdrantUI(cacheDir);
81
+ process.stdout.write(` Qdrant Web UI ready.
82
+ `);
83
+ return true;
84
+ } catch (err) {
85
+ process.stdout.write(` Qdrant Web UI download failed: ${String(err)}
86
+ `);
87
+ return false;
88
+ }
89
+ }
90
+ async function openQdrantDashboard(projectRoot) {
91
+ const kirographDir = path.join(projectRoot, ".kirograph");
92
+ let port = null;
93
+ try {
94
+ const state = JSON.parse(fs.readFileSync(path.join(kirographDir, SERVER_STATE_FILE), "utf8"));
95
+ port = state.port;
96
+ } catch {
97
+ }
98
+ if (!port) {
99
+ process.stdout.write(` Qdrant server is not running \u2014 use kg qdrant start.
100
+ `);
101
+ return;
102
+ }
103
+ const url = `http://127.0.0.1:${port}/dashboard`;
104
+ console.log(`
105
+ ${import_ui.violet}${import_ui.bold}Qdrant Dashboard${import_ui.reset} ${import_ui.dim}(built-in)${import_ui.reset}`);
106
+ console.log(` ${import_ui.green}\u2713${import_ui.reset} Opening ${import_ui.violet}${url}${import_ui.reset}`);
107
+ console.log();
108
+ openBrowser(url);
109
+ }
110
+ // Annotate the CommonJS export names for ESM import in node:
111
+ 0 && (module.exports = {
112
+ ensureQdrantUI,
113
+ openQdrantDashboard
114
+ });
115
+ //# sourceMappingURL=qdrant-dashboard.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/bin/installer/qdrant-dashboard.ts"],
4
+ "sourcesContent": ["import * as path from 'path';\nimport * as fs from 'fs';\nimport { spawn } from 'child_process';\nimport { dim, reset, violet, bold, green } from '../ui';\nimport { DASHBOARD_SUBDIR } from '../../vectors/qdrant-index';\nimport { fetchJson, downloadFile, extractZip } from './archive';\n\nconst SERVER_STATE_FILE = 'qdrant-server.json';\ninterface ServerState { pid: number; port: number; }\n\nconst UI_RELEASES_API = 'https://api.github.com/repos/qdrant/qdrant-web-ui/releases/latest';\n\n// \u2500\u2500 Download \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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\nasync function downloadQdrantUI(cacheDir: string): Promise<void> {\n // Fetch latest release to get zip URL\n const release = await fetchJson(UI_RELEASES_API);\n const asset = (release.assets as any[]).find((a: any) => a.name === 'dist-qdrant.zip');\n if (!asset) throw new Error('dist-qdrant.zip not found in latest release');\n\n const tmpZip = path.join(cacheDir, '..', '_qdrant-ui.zip');\n fs.mkdirSync(path.dirname(tmpZip), { recursive: true });\n\n await downloadFile(asset.browser_download_url, tmpZip);\n\n // Extract to a temp dir using pure Node.js (no unzip binary needed)\n const tmpDir = path.join(cacheDir, '..', '_qdrant-ui-extract');\n fs.mkdirSync(tmpDir, { recursive: true });\n\n await extractZip(tmpZip, tmpDir);\n\n // Move dist/ contents to cacheDir\n const distDir = path.join(tmpDir, 'dist');\n if (!fs.existsSync(distDir)) throw new Error('dist/ not found in zip');\n\n fs.rmSync(cacheDir, { recursive: true, force: true });\n fs.renameSync(distDir, cacheDir);\n\n // Cleanup\n try { fs.unlinkSync(tmpZip); } catch { /* ignore */ }\n try { fs.rmSync(tmpDir, { recursive: true, force: true }); } catch { /* ignore */ }\n}\n\n// \u2500\u2500 Browser open \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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\nfunction openBrowser(url: string): void {\n const cmd = process.platform === 'darwin' ? 'open'\n : process.platform === 'win32' ? 'start'\n : 'xdg-open';\n try {\n spawn(cmd, [url], { stdio: 'ignore', detached: true, shell: process.platform === 'win32' }).unref();\n } catch { /* best-effort */ }\n}\n\n// \u2500\u2500 Public API \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\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/** Download the Qdrant Web UI if not already cached. Returns true on success. */\nexport async function ensureQdrantUI(projectRoot: string): Promise<boolean> {\n const cacheDir = path.join(projectRoot, '.kirograph', DASHBOARD_SUBDIR);\n const indexHtml = path.join(cacheDir, 'index.html');\n if (fs.existsSync(indexHtml)) return true;\n\n process.stdout.write(` Downloading Qdrant Web UI (first time only)\u2026\\n`);\n try {\n await downloadQdrantUI(cacheDir);\n process.stdout.write(` Qdrant Web UI ready.\\n`);\n return true;\n } catch (err) {\n process.stdout.write(` Qdrant Web UI download failed: ${String(err)}\\n`);\n return false;\n }\n}\n\nexport async function openQdrantDashboard(projectRoot: string): Promise<void> {\n const kirographDir = path.join(projectRoot, '.kirograph');\n\n // Read Qdrant server port\n let port: number | null = null;\n try {\n const state = JSON.parse(fs.readFileSync(path.join(kirographDir, SERVER_STATE_FILE), 'utf8')) as ServerState;\n port = state.port;\n } catch { /* not running */ }\n\n if (!port) {\n process.stdout.write(` Qdrant server is not running \u2014 use kg qdrant start.\\n`);\n return;\n }\n\n const url = `http://127.0.0.1:${port}/dashboard`;\n\n console.log(`\\n ${violet}${bold}Qdrant Dashboard${reset} ${dim}(built-in)${reset}`);\n console.log(` ${green}\u2713${reset} Opening ${violet}${url}${reset}`);\n console.log();\n\n openBrowser(url);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,WAAsB;AACtB,SAAoB;AACpB,2BAAsB;AACtB,gBAAgD;AAChD,0BAAiC;AACjC,qBAAoD;AAEpD,MAAM,oBAAoB;AAG1B,MAAM,kBAAkB;AAIxB,eAAe,iBAAiB,UAAiC;AAE/D,QAAM,UAAU,UAAM,0BAAU,eAAe;AAC/C,QAAM,QAAW,QAAQ,OAAiB,KAAK,CAAC,MAAW,EAAE,SAAS,iBAAiB;AACvF,MAAI,CAAC,MAAO,OAAM,IAAI,MAAM,6CAA6C;AAEzE,QAAM,SAAS,KAAK,KAAK,UAAU,MAAM,gBAAgB;AACzD,KAAG,UAAU,KAAK,QAAQ,MAAM,GAAG,EAAE,WAAW,KAAK,CAAC;AAEtD,YAAM,6BAAa,MAAM,sBAAsB,MAAM;AAGrD,QAAM,SAAS,KAAK,KAAK,UAAU,MAAM,oBAAoB;AAC7D,KAAG,UAAU,QAAQ,EAAE,WAAW,KAAK,CAAC;AAExC,YAAM,2BAAW,QAAQ,MAAM;AAG/B,QAAM,UAAU,KAAK,KAAK,QAAQ,MAAM;AACxC,MAAI,CAAC,GAAG,WAAW,OAAO,EAAG,OAAM,IAAI,MAAM,wBAAwB;AAErE,KAAG,OAAO,UAAU,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AACpD,KAAG,WAAW,SAAS,QAAQ;AAG/B,MAAI;AAAE,OAAG,WAAW,MAAM;AAAA,EAAG,QAAQ;AAAA,EAAe;AACpD,MAAI;AAAE,OAAG,OAAO,QAAQ,EAAE,WAAW,MAAM,OAAO,KAAK,CAAC;AAAA,EAAG,QAAQ;AAAA,EAAe;AACpF;AAIA,SAAS,YAAY,KAAmB;AACtC,QAAM,MAAM,QAAQ,aAAa,WAAW,SAChC,QAAQ,aAAa,UAAW,UAChC;AACZ,MAAI;AACF,oCAAM,KAAK,CAAC,GAAG,GAAG,EAAE,OAAO,UAAU,UAAU,MAAM,OAAO,QAAQ,aAAa,QAAQ,CAAC,EAAE,MAAM;AAAA,EACpG,QAAQ;AAAA,EAAoB;AAC9B;AAKA,eAAsB,eAAe,aAAuC;AAC1E,QAAM,WAAW,KAAK,KAAK,aAAa,cAAc,oCAAgB;AACtE,QAAM,YAAY,KAAK,KAAK,UAAU,YAAY;AAClD,MAAI,GAAG,WAAW,SAAS,EAAG,QAAO;AAErC,UAAQ,OAAO,MAAM;AAAA,CAAkD;AACvE,MAAI;AACF,UAAM,iBAAiB,QAAQ;AAC/B,YAAQ,OAAO,MAAM;AAAA,CAA0B;AAC/C,WAAO;AAAA,EACT,SAAS,KAAK;AACZ,YAAQ,OAAO,MAAM,oCAAoC,OAAO,GAAG,CAAC;AAAA,CAAI;AACxE,WAAO;AAAA,EACT;AACF;AAEA,eAAsB,oBAAoB,aAAoC;AAC5E,QAAM,eAAe,KAAK,KAAK,aAAa,YAAY;AAGxD,MAAI,OAAsB;AAC1B,MAAI;AACF,UAAM,QAAQ,KAAK,MAAM,GAAG,aAAa,KAAK,KAAK,cAAc,iBAAiB,GAAG,MAAM,CAAC;AAC5F,WAAO,MAAM;AAAA,EACf,QAAQ;AAAA,EAAoB;AAE5B,MAAI,CAAC,MAAM;AACT,YAAQ,OAAO,MAAM;AAAA,CAAyD;AAC9E;AAAA,EACF;AAEA,QAAM,MAAM,oBAAoB,IAAI;AAEpC,UAAQ,IAAI;AAAA,IAAO,gBAAM,GAAG,cAAI,mBAAmB,eAAK,KAAK,aAAG,aAAa,eAAK,EAAE;AACpF,UAAQ,IAAI,KAAK,eAAK,SAAI,eAAK,YAAY,gBAAM,GAAG,GAAG,GAAG,eAAK,EAAE;AACjE,UAAQ,IAAI;AAEZ,cAAY,GAAG;AACjB;",
6
+ "names": []
7
+ }
@@ -0,0 +1,5 @@
1
+ /**
2
+ * KiroGraph Installer — Kiro steering file
3
+ */
4
+ export declare function writeSteering(kiroDir: string): void;
5
+ //# sourceMappingURL=steering.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"steering.d.ts","sourceRoot":"","sources":["../../../src/bin/installer/steering.ts"],"names":[],"mappings":"AAAA;;GAEG;AAkEH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAMnD"}