glancey 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (336) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +435 -0
  3. package/dist/__tests__/ast-chunker.test.d.ts +2 -0
  4. package/dist/__tests__/ast-chunker.test.d.ts.map +1 -0
  5. package/dist/__tests__/ast-chunker.test.js +307 -0
  6. package/dist/__tests__/ast-chunker.test.js.map +1 -0
  7. package/dist/__tests__/config.test.d.ts +2 -0
  8. package/dist/__tests__/config.test.d.ts.map +1 -0
  9. package/dist/__tests__/config.test.js +242 -0
  10. package/dist/__tests__/config.test.js.map +1 -0
  11. package/dist/__tests__/dashboard/beads.test.d.ts +2 -0
  12. package/dist/__tests__/dashboard/beads.test.d.ts.map +1 -0
  13. package/dist/__tests__/dashboard/beads.test.js +151 -0
  14. package/dist/__tests__/dashboard/beads.test.js.map +1 -0
  15. package/dist/__tests__/dashboard/index.test.d.ts +2 -0
  16. package/dist/__tests__/dashboard/index.test.d.ts.map +1 -0
  17. package/dist/__tests__/dashboard/index.test.js +116 -0
  18. package/dist/__tests__/dashboard/index.test.js.map +1 -0
  19. package/dist/__tests__/dashboard/routes.test.d.ts +2 -0
  20. package/dist/__tests__/dashboard/routes.test.d.ts.map +1 -0
  21. package/dist/__tests__/dashboard/routes.test.js +125 -0
  22. package/dist/__tests__/dashboard/routes.test.js.map +1 -0
  23. package/dist/__tests__/dashboard/server.test.d.ts +2 -0
  24. package/dist/__tests__/dashboard/server.test.d.ts.map +1 -0
  25. package/dist/__tests__/dashboard/server.test.js +75 -0
  26. package/dist/__tests__/dashboard/server.test.js.map +1 -0
  27. package/dist/__tests__/dashboard/state.test.d.ts +2 -0
  28. package/dist/__tests__/dashboard/state.test.d.ts.map +1 -0
  29. package/dist/__tests__/dashboard/state.test.js +124 -0
  30. package/dist/__tests__/dashboard/state.test.js.map +1 -0
  31. package/dist/__tests__/dashboard/token-tracking.test.d.ts +2 -0
  32. package/dist/__tests__/dashboard/token-tracking.test.d.ts.map +1 -0
  33. package/dist/__tests__/dashboard/token-tracking.test.js +315 -0
  34. package/dist/__tests__/dashboard/token-tracking.test.js.map +1 -0
  35. package/dist/__tests__/embeddings/factory.test.d.ts +2 -0
  36. package/dist/__tests__/embeddings/factory.test.d.ts.map +1 -0
  37. package/dist/__tests__/embeddings/factory.test.js +157 -0
  38. package/dist/__tests__/embeddings/factory.test.js.map +1 -0
  39. package/dist/__tests__/embeddings/gemini.test.d.ts +2 -0
  40. package/dist/__tests__/embeddings/gemini.test.d.ts.map +1 -0
  41. package/dist/__tests__/embeddings/gemini.test.js +178 -0
  42. package/dist/__tests__/embeddings/gemini.test.js.map +1 -0
  43. package/dist/__tests__/embeddings/ollama.test.d.ts +2 -0
  44. package/dist/__tests__/embeddings/ollama.test.d.ts.map +1 -0
  45. package/dist/__tests__/embeddings/ollama.test.js +273 -0
  46. package/dist/__tests__/embeddings/ollama.test.js.map +1 -0
  47. package/dist/__tests__/embeddings/rate-limiter.test.d.ts +2 -0
  48. package/dist/__tests__/embeddings/rate-limiter.test.d.ts.map +1 -0
  49. package/dist/__tests__/embeddings/rate-limiter.test.js +163 -0
  50. package/dist/__tests__/embeddings/rate-limiter.test.js.map +1 -0
  51. package/dist/__tests__/embeddings/retry.test.d.ts +2 -0
  52. package/dist/__tests__/embeddings/retry.test.d.ts.map +1 -0
  53. package/dist/__tests__/embeddings/retry.test.js +334 -0
  54. package/dist/__tests__/embeddings/retry.test.js.map +1 -0
  55. package/dist/__tests__/embeddings/types.test.d.ts +2 -0
  56. package/dist/__tests__/embeddings/types.test.d.ts.map +1 -0
  57. package/dist/__tests__/embeddings/types.test.js +31 -0
  58. package/dist/__tests__/embeddings/types.test.js.map +1 -0
  59. package/dist/__tests__/mocks/embedding-backend.mock.d.ts +10 -0
  60. package/dist/__tests__/mocks/embedding-backend.mock.d.ts.map +1 -0
  61. package/dist/__tests__/mocks/embedding-backend.mock.js +39 -0
  62. package/dist/__tests__/mocks/embedding-backend.mock.js.map +1 -0
  63. package/dist/__tests__/mocks/fetch.mock.d.ts +49 -0
  64. package/dist/__tests__/mocks/fetch.mock.d.ts.map +1 -0
  65. package/dist/__tests__/mocks/fetch.mock.js +102 -0
  66. package/dist/__tests__/mocks/fetch.mock.js.map +1 -0
  67. package/dist/__tests__/mocks/lancedb.mock.d.ts +38 -0
  68. package/dist/__tests__/mocks/lancedb.mock.d.ts.map +1 -0
  69. package/dist/__tests__/mocks/lancedb.mock.js +63 -0
  70. package/dist/__tests__/mocks/lancedb.mock.js.map +1 -0
  71. package/dist/__tests__/search/clustering.test.d.ts +2 -0
  72. package/dist/__tests__/search/clustering.test.d.ts.map +1 -0
  73. package/dist/__tests__/search/clustering.test.js +230 -0
  74. package/dist/__tests__/search/clustering.test.js.map +1 -0
  75. package/dist/__tests__/search/hybrid-search.test.d.ts +2 -0
  76. package/dist/__tests__/search/hybrid-search.test.d.ts.map +1 -0
  77. package/dist/__tests__/search/hybrid-search.test.js +279 -0
  78. package/dist/__tests__/search/hybrid-search.test.js.map +1 -0
  79. package/dist/__tests__/search/indexer.test.d.ts +2 -0
  80. package/dist/__tests__/search/indexer.test.d.ts.map +1 -0
  81. package/dist/__tests__/search/indexer.test.js +1305 -0
  82. package/dist/__tests__/search/indexer.test.js.map +1 -0
  83. package/dist/__tests__/search/tree-sitter-chunker.test.d.ts +2 -0
  84. package/dist/__tests__/search/tree-sitter-chunker.test.d.ts.map +1 -0
  85. package/dist/__tests__/search/tree-sitter-chunker.test.js +228 -0
  86. package/dist/__tests__/search/tree-sitter-chunker.test.js.map +1 -0
  87. package/dist/__tests__/setup.d.ts +2 -0
  88. package/dist/__tests__/setup.d.ts.map +1 -0
  89. package/dist/__tests__/setup.js +11 -0
  90. package/dist/__tests__/setup.js.map +1 -0
  91. package/dist/__tests__/tools/clustering-handlers.test.d.ts +2 -0
  92. package/dist/__tests__/tools/clustering-handlers.test.d.ts.map +1 -0
  93. package/dist/__tests__/tools/clustering-handlers.test.js +286 -0
  94. package/dist/__tests__/tools/clustering-handlers.test.js.map +1 -0
  95. package/dist/__tests__/tools/commit-handlers.test.d.ts +2 -0
  96. package/dist/__tests__/tools/commit-handlers.test.d.ts.map +1 -0
  97. package/dist/__tests__/tools/commit-handlers.test.js +153 -0
  98. package/dist/__tests__/tools/commit-handlers.test.js.map +1 -0
  99. package/dist/__tests__/tools/index-handlers.test.d.ts +2 -0
  100. package/dist/__tests__/tools/index-handlers.test.d.ts.map +1 -0
  101. package/dist/__tests__/tools/index-handlers.test.js +184 -0
  102. package/dist/__tests__/tools/index-handlers.test.js.map +1 -0
  103. package/dist/__tests__/tools/instructions-handlers.test.d.ts +2 -0
  104. package/dist/__tests__/tools/instructions-handlers.test.d.ts.map +1 -0
  105. package/dist/__tests__/tools/instructions-handlers.test.js +53 -0
  106. package/dist/__tests__/tools/instructions-handlers.test.js.map +1 -0
  107. package/dist/__tests__/tools/memory-handlers.test.d.ts +2 -0
  108. package/dist/__tests__/tools/memory-handlers.test.d.ts.map +1 -0
  109. package/dist/__tests__/tools/memory-handlers.test.js +175 -0
  110. package/dist/__tests__/tools/memory-handlers.test.js.map +1 -0
  111. package/dist/__tests__/tools/search-handlers.test.d.ts +2 -0
  112. package/dist/__tests__/tools/search-handlers.test.d.ts.map +1 -0
  113. package/dist/__tests__/tools/search-handlers.test.js +229 -0
  114. package/dist/__tests__/tools/search-handlers.test.js.map +1 -0
  115. package/dist/__tests__/tools/symbol-handlers.test.d.ts +2 -0
  116. package/dist/__tests__/tools/symbol-handlers.test.d.ts.map +1 -0
  117. package/dist/__tests__/tools/symbol-handlers.test.js +348 -0
  118. package/dist/__tests__/tools/symbol-handlers.test.js.map +1 -0
  119. package/dist/__tests__/tools/worktree-handlers.test.d.ts +2 -0
  120. package/dist/__tests__/tools/worktree-handlers.test.d.ts.map +1 -0
  121. package/dist/__tests__/tools/worktree-handlers.test.js +297 -0
  122. package/dist/__tests__/tools/worktree-handlers.test.js.map +1 -0
  123. package/dist/__tests__/utils/cache.test.d.ts +2 -0
  124. package/dist/__tests__/utils/cache.test.d.ts.map +1 -0
  125. package/dist/__tests__/utils/cache.test.js +147 -0
  126. package/dist/__tests__/utils/cache.test.js.map +1 -0
  127. package/dist/__tests__/utils/concurrency.test.d.ts +2 -0
  128. package/dist/__tests__/utils/concurrency.test.d.ts.map +1 -0
  129. package/dist/__tests__/utils/concurrency.test.js +83 -0
  130. package/dist/__tests__/utils/concurrency.test.js.map +1 -0
  131. package/dist/__tests__/utils/errors.test.d.ts +2 -0
  132. package/dist/__tests__/utils/errors.test.d.ts.map +1 -0
  133. package/dist/__tests__/utils/errors.test.js +136 -0
  134. package/dist/__tests__/utils/errors.test.js.map +1 -0
  135. package/dist/__tests__/utils/logger.test.d.ts +2 -0
  136. package/dist/__tests__/utils/logger.test.d.ts.map +1 -0
  137. package/dist/__tests__/utils/logger.test.js +131 -0
  138. package/dist/__tests__/utils/logger.test.js.map +1 -0
  139. package/dist/__tests__/utils/type-guards.test.d.ts +2 -0
  140. package/dist/__tests__/utils/type-guards.test.d.ts.map +1 -0
  141. package/dist/__tests__/utils/type-guards.test.js +80 -0
  142. package/dist/__tests__/utils/type-guards.test.js.map +1 -0
  143. package/dist/__tests__/worktree/worktree-manager.test.d.ts +2 -0
  144. package/dist/__tests__/worktree/worktree-manager.test.d.ts.map +1 -0
  145. package/dist/__tests__/worktree/worktree-manager.test.js +403 -0
  146. package/dist/__tests__/worktree/worktree-manager.test.js.map +1 -0
  147. package/dist/config.d.ts +191 -0
  148. package/dist/config.d.ts.map +1 -0
  149. package/dist/config.js +788 -0
  150. package/dist/config.js.map +1 -0
  151. package/dist/dashboard/beads.d.ts +35 -0
  152. package/dist/dashboard/beads.d.ts.map +1 -0
  153. package/dist/dashboard/beads.js +102 -0
  154. package/dist/dashboard/beads.js.map +1 -0
  155. package/dist/dashboard/events.d.ts +64 -0
  156. package/dist/dashboard/events.d.ts.map +1 -0
  157. package/dist/dashboard/events.js +211 -0
  158. package/dist/dashboard/events.js.map +1 -0
  159. package/dist/dashboard/index.d.ts +69 -0
  160. package/dist/dashboard/index.d.ts.map +1 -0
  161. package/dist/dashboard/index.js +93 -0
  162. package/dist/dashboard/index.js.map +1 -0
  163. package/dist/dashboard/routes.d.ts +6 -0
  164. package/dist/dashboard/routes.d.ts.map +1 -0
  165. package/dist/dashboard/routes.js +505 -0
  166. package/dist/dashboard/routes.js.map +1 -0
  167. package/dist/dashboard/server.d.ts +27 -0
  168. package/dist/dashboard/server.d.ts.map +1 -0
  169. package/dist/dashboard/server.js +72 -0
  170. package/dist/dashboard/server.js.map +1 -0
  171. package/dist/dashboard/state.d.ts +172 -0
  172. package/dist/dashboard/state.d.ts.map +1 -0
  173. package/dist/dashboard/state.js +362 -0
  174. package/dist/dashboard/state.js.map +1 -0
  175. package/dist/dashboard/token-tracking.d.ts +143 -0
  176. package/dist/dashboard/token-tracking.d.ts.map +1 -0
  177. package/dist/dashboard/token-tracking.js +363 -0
  178. package/dist/dashboard/token-tracking.js.map +1 -0
  179. package/dist/dashboard/ui.d.ts +6 -0
  180. package/dist/dashboard/ui.d.ts.map +1 -0
  181. package/dist/dashboard/ui.js +2710 -0
  182. package/dist/dashboard/ui.js.map +1 -0
  183. package/dist/embeddings/gemini.d.ts +28 -0
  184. package/dist/embeddings/gemini.d.ts.map +1 -0
  185. package/dist/embeddings/gemini.js +165 -0
  186. package/dist/embeddings/gemini.js.map +1 -0
  187. package/dist/embeddings/index.d.ts +34 -0
  188. package/dist/embeddings/index.d.ts.map +1 -0
  189. package/dist/embeddings/index.js +120 -0
  190. package/dist/embeddings/index.js.map +1 -0
  191. package/dist/embeddings/ollama.d.ts +22 -0
  192. package/dist/embeddings/ollama.d.ts.map +1 -0
  193. package/dist/embeddings/ollama.js +179 -0
  194. package/dist/embeddings/ollama.js.map +1 -0
  195. package/dist/embeddings/rate-limiter.d.ts +75 -0
  196. package/dist/embeddings/rate-limiter.d.ts.map +1 -0
  197. package/dist/embeddings/rate-limiter.js +145 -0
  198. package/dist/embeddings/rate-limiter.js.map +1 -0
  199. package/dist/embeddings/retry.d.ts +20 -0
  200. package/dist/embeddings/retry.d.ts.map +1 -0
  201. package/dist/embeddings/retry.js +227 -0
  202. package/dist/embeddings/retry.js.map +1 -0
  203. package/dist/embeddings/types.d.ts +103 -0
  204. package/dist/embeddings/types.d.ts.map +1 -0
  205. package/dist/embeddings/types.js +23 -0
  206. package/dist/embeddings/types.js.map +1 -0
  207. package/dist/index.d.ts +12 -0
  208. package/dist/index.d.ts.map +1 -0
  209. package/dist/index.js +2028 -0
  210. package/dist/index.js.map +1 -0
  211. package/dist/memory/index.d.ts +63 -0
  212. package/dist/memory/index.d.ts.map +1 -0
  213. package/dist/memory/index.js +168 -0
  214. package/dist/memory/index.js.map +1 -0
  215. package/dist/search/ast-chunker.d.ts +29 -0
  216. package/dist/search/ast-chunker.d.ts.map +1 -0
  217. package/dist/search/ast-chunker.js +236 -0
  218. package/dist/search/ast-chunker.js.map +1 -0
  219. package/dist/search/chunk-utils.d.ts +24 -0
  220. package/dist/search/chunk-utils.d.ts.map +1 -0
  221. package/dist/search/chunk-utils.js +41 -0
  222. package/dist/search/chunk-utils.js.map +1 -0
  223. package/dist/search/clustering.d.ts +77 -0
  224. package/dist/search/clustering.d.ts.map +1 -0
  225. package/dist/search/clustering.js +455 -0
  226. package/dist/search/clustering.js.map +1 -0
  227. package/dist/search/indexer.d.ts +377 -0
  228. package/dist/search/indexer.d.ts.map +1 -0
  229. package/dist/search/indexer.js +1557 -0
  230. package/dist/search/indexer.js.map +1 -0
  231. package/dist/search/tree-sitter-chunker.d.ts +64 -0
  232. package/dist/search/tree-sitter-chunker.d.ts.map +1 -0
  233. package/dist/search/tree-sitter-chunker.js +412 -0
  234. package/dist/search/tree-sitter-chunker.js.map +1 -0
  235. package/dist/symbols/index.d.ts +14 -0
  236. package/dist/symbols/index.d.ts.map +1 -0
  237. package/dist/symbols/index.js +19 -0
  238. package/dist/symbols/index.js.map +1 -0
  239. package/dist/symbols/name-path.d.ts +113 -0
  240. package/dist/symbols/name-path.d.ts.map +1 -0
  241. package/dist/symbols/name-path.js +194 -0
  242. package/dist/symbols/name-path.js.map +1 -0
  243. package/dist/symbols/pattern-search.d.ts +14 -0
  244. package/dist/symbols/pattern-search.d.ts.map +1 -0
  245. package/dist/symbols/pattern-search.js +224 -0
  246. package/dist/symbols/pattern-search.js.map +1 -0
  247. package/dist/symbols/reference-finder.d.ts +38 -0
  248. package/dist/symbols/reference-finder.d.ts.map +1 -0
  249. package/dist/symbols/reference-finder.js +376 -0
  250. package/dist/symbols/reference-finder.js.map +1 -0
  251. package/dist/symbols/symbol-editor.d.ts +81 -0
  252. package/dist/symbols/symbol-editor.d.ts.map +1 -0
  253. package/dist/symbols/symbol-editor.js +257 -0
  254. package/dist/symbols/symbol-editor.js.map +1 -0
  255. package/dist/symbols/symbol-extractor.d.ts +49 -0
  256. package/dist/symbols/symbol-extractor.d.ts.map +1 -0
  257. package/dist/symbols/symbol-extractor.js +593 -0
  258. package/dist/symbols/symbol-extractor.js.map +1 -0
  259. package/dist/symbols/symbol-renamer.d.ts +81 -0
  260. package/dist/symbols/symbol-renamer.d.ts.map +1 -0
  261. package/dist/symbols/symbol-renamer.js +204 -0
  262. package/dist/symbols/symbol-renamer.js.map +1 -0
  263. package/dist/symbols/types.d.ts +234 -0
  264. package/dist/symbols/types.d.ts.map +1 -0
  265. package/dist/symbols/types.js +106 -0
  266. package/dist/symbols/types.js.map +1 -0
  267. package/dist/tools/clustering-handlers.d.ts +70 -0
  268. package/dist/tools/clustering-handlers.d.ts.map +1 -0
  269. package/dist/tools/clustering-handlers.js +150 -0
  270. package/dist/tools/clustering-handlers.js.map +1 -0
  271. package/dist/tools/commit-handlers.d.ts +77 -0
  272. package/dist/tools/commit-handlers.d.ts.map +1 -0
  273. package/dist/tools/commit-handlers.js +251 -0
  274. package/dist/tools/commit-handlers.js.map +1 -0
  275. package/dist/tools/index-handlers.d.ts +31 -0
  276. package/dist/tools/index-handlers.d.ts.map +1 -0
  277. package/dist/tools/index-handlers.js +53 -0
  278. package/dist/tools/index-handlers.js.map +1 -0
  279. package/dist/tools/instructions-handlers.d.ts +25 -0
  280. package/dist/tools/instructions-handlers.d.ts.map +1 -0
  281. package/dist/tools/instructions-handlers.js +36 -0
  282. package/dist/tools/instructions-handlers.js.map +1 -0
  283. package/dist/tools/memory-handlers.d.ts +95 -0
  284. package/dist/tools/memory-handlers.d.ts.map +1 -0
  285. package/dist/tools/memory-handlers.js +126 -0
  286. package/dist/tools/memory-handlers.js.map +1 -0
  287. package/dist/tools/search-handlers.d.ts +51 -0
  288. package/dist/tools/search-handlers.d.ts.map +1 -0
  289. package/dist/tools/search-handlers.js +128 -0
  290. package/dist/tools/search-handlers.js.map +1 -0
  291. package/dist/tools/symbol-handlers.d.ts +171 -0
  292. package/dist/tools/symbol-handlers.d.ts.map +1 -0
  293. package/dist/tools/symbol-handlers.js +456 -0
  294. package/dist/tools/symbol-handlers.js.map +1 -0
  295. package/dist/tools/types.d.ts +32 -0
  296. package/dist/tools/types.d.ts.map +1 -0
  297. package/dist/tools/types.js +17 -0
  298. package/dist/tools/types.js.map +1 -0
  299. package/dist/tools/worktree-handlers.d.ts +96 -0
  300. package/dist/tools/worktree-handlers.d.ts.map +1 -0
  301. package/dist/tools/worktree-handlers.js +186 -0
  302. package/dist/tools/worktree-handlers.js.map +1 -0
  303. package/dist/utils/cache.d.ts +77 -0
  304. package/dist/utils/cache.d.ts.map +1 -0
  305. package/dist/utils/cache.js +134 -0
  306. package/dist/utils/cache.js.map +1 -0
  307. package/dist/utils/concurrency.d.ts +32 -0
  308. package/dist/utils/concurrency.d.ts.map +1 -0
  309. package/dist/utils/concurrency.js +57 -0
  310. package/dist/utils/concurrency.js.map +1 -0
  311. package/dist/utils/errors.d.ts +36 -0
  312. package/dist/utils/errors.d.ts.map +1 -0
  313. package/dist/utils/errors.js +91 -0
  314. package/dist/utils/errors.js.map +1 -0
  315. package/dist/utils/logger.d.ts +37 -0
  316. package/dist/utils/logger.d.ts.map +1 -0
  317. package/dist/utils/logger.js +114 -0
  318. package/dist/utils/logger.js.map +1 -0
  319. package/dist/utils/type-guards.d.ts +17 -0
  320. package/dist/utils/type-guards.d.ts.map +1 -0
  321. package/dist/utils/type-guards.js +25 -0
  322. package/dist/utils/type-guards.js.map +1 -0
  323. package/dist/worktree/index.d.ts +6 -0
  324. package/dist/worktree/index.d.ts.map +1 -0
  325. package/dist/worktree/index.js +6 -0
  326. package/dist/worktree/index.js.map +1 -0
  327. package/dist/worktree/types.d.ts +101 -0
  328. package/dist/worktree/types.d.ts.map +1 -0
  329. package/dist/worktree/types.js +6 -0
  330. package/dist/worktree/types.js.map +1 -0
  331. package/dist/worktree/worktree-manager.d.ts +80 -0
  332. package/dist/worktree/worktree-manager.d.ts.map +1 -0
  333. package/dist/worktree/worktree-manager.js +407 -0
  334. package/dist/worktree/worktree-manager.js.map +1 -0
  335. package/package.json +87 -0
  336. package/scripts/postinstall.js +48 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-handlers.js","sourceRoot":"","sources":["../../src/tools/index-handlers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAYnE;;GAEG;AACH,MAAM,UAAU,sBAAsB,CACpC,IAAyC;IAEzC,OAAO;QACL,QAAQ,EAAE,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS;QACnE,eAAe,EAAE,aAAa,CAAC,IAAI,EAAE,eAAe,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,SAAS;QACxF,YAAY,EAAE,SAAS,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,KAAK;QACvE,UAAU,EAAE,SAAS,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK;KAClE,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,IAAuB,EACvB,OAAoB,EACpB,UAA8C;IAE9C,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,aAAa,CAChD,IAAI,CAAC,QAAQ,EACb,IAAI,CAAC,eAAe,EACpB,IAAI,CAAC,YAAY,IAAI,KAAK,EAC1B,UAAU,EACV,IAAI,CAAC,UAAU,IAAI,KAAK,CACzB,CAAC;IAEF,MAAM,IAAI,GAAG,MAAM,CAAC,QAAQ;QAC1B,CAAC,CAAC,gCAAgC;QAClC,CAAC,CAAC,MAAM,CAAC,WAAW;YAClB,CAAC,CAAC,oBAAoB;YACtB,CAAC,CAAC,cAAc,CAAC;IAErB,OAAO,kBAAkB,CACvB,GAAG,IAAI,aAAa,MAAM,CAAC,YAAY,iBAAiB,MAAM,CAAC,aAAa,UAAU,EACtF,OAAO,CAAC,YAAY,CACrB,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,oBAAoB,CAAC,OAAoB;IAC7D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;IACjD,IAAI,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAEjD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,UAAU;YACR,2CAA2C;gBAC3C,WAAW,MAAM,CAAC,gBAAgB,IAAI;gBACtC,wBAAwB;gBACxB,uDAAuD;gBACvD,2DAA2D;gBAC3D,UAAU,CAAC;IACf,CAAC;IAED,OAAO,kBAAkB,CAAC,UAAU,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,OAAoB;IACzD,MAAM,OAAO,CAAC,OAAO,CAAC,UAAU,EAAE,CAAC;IACnC,OAAO,kBAAkB,CAAC,gBAAgB,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;AACpE,CAAC"}
@@ -0,0 +1,25 @@
1
+ /**
2
+ * Tool handlers for project instructions.
3
+ */
4
+ import type { ToolResponse } from './types.js';
5
+ /**
6
+ * Interface for config loader (for testability).
7
+ */
8
+ export interface IConfigLoader {
9
+ loadConfig(projectPath: string): Promise<Record<string, unknown>>;
10
+ getInstructions(config: Record<string, unknown>): string | undefined;
11
+ }
12
+ /**
13
+ * Context for instructions tools.
14
+ */
15
+ export interface InstructionsToolContext {
16
+ projectPath: string;
17
+ priorityInstructions: string;
18
+ /** Optional config loader (for testing). */
19
+ configLoader?: IConfigLoader;
20
+ }
21
+ /**
22
+ * Handle get_project_instructions tool.
23
+ */
24
+ export declare function handleGetProjectInstructions(context: InstructionsToolContext): Promise<ToolResponse>;
25
+ //# sourceMappingURL=instructions-handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instructions-handlers.d.ts","sourceRoot":"","sources":["../../src/tools/instructions-handlers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAE/C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,UAAU,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IAClE,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,GAAG,SAAS,CAAC;CACtE;AAED;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,4CAA4C;IAC5C,YAAY,CAAC,EAAE,aAAa,CAAC;CAC9B;AAiBD;;GAEG;AACH,wBAAsB,4BAA4B,CAChD,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,YAAY,CAAC,CAgBvB"}
@@ -0,0 +1,36 @@
1
+ /**
2
+ * Tool handlers for project instructions.
3
+ */
4
+ import { loadConfig, getInstructions } from '../config.js';
5
+ /**
6
+ * Default config loader using actual config module.
7
+ */
8
+ const defaultConfigLoader = {
9
+ loadConfig,
10
+ getInstructions,
11
+ };
12
+ /**
13
+ * Get or use default config loader.
14
+ */
15
+ function getConfigLoader(context) {
16
+ return context.configLoader ?? defaultConfigLoader;
17
+ }
18
+ /**
19
+ * Handle get_project_instructions tool.
20
+ */
21
+ export async function handleGetProjectInstructions(context) {
22
+ const loader = getConfigLoader(context);
23
+ const config = await loader.loadConfig(context.projectPath);
24
+ const projectInstructions = loader.getInstructions(config);
25
+ const fullInstructions = context.priorityInstructions + (projectInstructions || '');
26
+ return {
27
+ content: [
28
+ {
29
+ type: 'text',
30
+ text: fullInstructions ||
31
+ 'No project instructions configured. Add an "instructions" field to .glancey.json.',
32
+ },
33
+ ],
34
+ };
35
+ }
36
+ //# sourceMappingURL=instructions-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instructions-handlers.js","sourceRoot":"","sources":["../../src/tools/instructions-handlers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAqB3D;;GAEG;AACH,MAAM,mBAAmB,GAAkB;IACzC,UAAU;IACV,eAAe;CAChB,CAAC;AAEF;;GAEG;AACH,SAAS,eAAe,CAAC,OAAgC;IACvD,OAAO,OAAO,CAAC,YAAY,IAAI,mBAAmB,CAAC;AACrD,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,OAAgC;IAEhC,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;IAC5D,MAAM,mBAAmB,GAAG,MAAM,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC3D,MAAM,gBAAgB,GAAG,OAAO,CAAC,oBAAoB,GAAG,CAAC,mBAAmB,IAAI,EAAE,CAAC,CAAC;IAEpF,OAAO;QACL,OAAO,EAAE;YACP;gBACE,IAAI,EAAE,MAAM;gBACZ,IAAI,EACF,gBAAgB;oBAChB,mFAAmF;aACtF;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,95 @@
1
+ /**
2
+ * Tool handlers for memory operations.
3
+ */
4
+ import { type MemoryInfo } from '../memory/index.js';
5
+ import type { ToolResponse } from './types.js';
6
+ /**
7
+ * Interface for memory manager operations (for testability).
8
+ */
9
+ export interface IMemoryManager {
10
+ writeMemory(name: string, content: string): Promise<void>;
11
+ readMemory(name: string): Promise<string>;
12
+ listMemories(): Promise<MemoryInfo[]>;
13
+ deleteMemory(name: string): Promise<void>;
14
+ editMemory(name: string, needle: string, repl: string, mode: 'literal' | 'regex'): Promise<{
15
+ matchCount: number;
16
+ }>;
17
+ }
18
+ /**
19
+ * Context for memory tools.
20
+ */
21
+ export interface MemoryToolContext {
22
+ projectPath: string;
23
+ toolGuidance: string;
24
+ /** Optional memory manager instance (for testing). Uses MemoryManager if not provided. */
25
+ memoryManager?: IMemoryManager;
26
+ }
27
+ /**
28
+ * Arguments for write_memory tool.
29
+ */
30
+ export interface WriteMemoryArgs {
31
+ memoryFileName: string;
32
+ content: string;
33
+ }
34
+ /**
35
+ * Parse and validate write_memory arguments.
36
+ */
37
+ export declare function parseWriteMemoryArgs(args: Record<string, unknown> | undefined): WriteMemoryArgs;
38
+ /**
39
+ * Handle write_memory tool.
40
+ */
41
+ export declare function handleWriteMemory(args: WriteMemoryArgs, context: MemoryToolContext): Promise<ToolResponse>;
42
+ /**
43
+ * Arguments for read_memory tool.
44
+ */
45
+ export interface ReadMemoryArgs {
46
+ memoryFileName: string;
47
+ }
48
+ /**
49
+ * Parse and validate read_memory arguments.
50
+ */
51
+ export declare function parseReadMemoryArgs(args: Record<string, unknown> | undefined): ReadMemoryArgs;
52
+ /**
53
+ * Handle read_memory tool.
54
+ */
55
+ export declare function handleReadMemory(args: ReadMemoryArgs, context: MemoryToolContext): Promise<ToolResponse>;
56
+ /**
57
+ * Format memory list for display.
58
+ */
59
+ export declare function formatMemoryList(memories: MemoryInfo[]): string;
60
+ /**
61
+ * Handle list_memories tool.
62
+ */
63
+ export declare function handleListMemories(context: MemoryToolContext): Promise<ToolResponse>;
64
+ /**
65
+ * Arguments for delete_memory tool.
66
+ */
67
+ export interface DeleteMemoryArgs {
68
+ memoryFileName: string;
69
+ }
70
+ /**
71
+ * Parse and validate delete_memory arguments.
72
+ */
73
+ export declare function parseDeleteMemoryArgs(args: Record<string, unknown> | undefined): DeleteMemoryArgs;
74
+ /**
75
+ * Handle delete_memory tool.
76
+ */
77
+ export declare function handleDeleteMemory(args: DeleteMemoryArgs, context: MemoryToolContext): Promise<ToolResponse>;
78
+ /**
79
+ * Arguments for edit_memory tool.
80
+ */
81
+ export interface EditMemoryArgs {
82
+ memoryFileName: string;
83
+ needle: string;
84
+ repl: string;
85
+ mode: 'literal' | 'regex';
86
+ }
87
+ /**
88
+ * Parse and validate edit_memory arguments.
89
+ */
90
+ export declare function parseEditMemoryArgs(args: Record<string, unknown> | undefined): EditMemoryArgs;
91
+ /**
92
+ * Handle edit_memory tool.
93
+ */
94
+ export declare function handleEditMemory(args: EditMemoryArgs, context: MemoryToolContext): Promise<ToolResponse>;
95
+ //# sourceMappingURL=memory-handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-handlers.d.ts","sourceRoot":"","sources":["../../src/tools/memory-handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,126 @@
1
+ /**
2
+ * Tool handlers for memory operations.
3
+ */
4
+ import { MemoryManager } from '../memory/index.js';
5
+ import { createToolResponse } from './types.js';
6
+ import { isString } from '../utils/type-guards.js';
7
+ import { GlanceyError } from '../utils/errors.js';
8
+ /**
9
+ * Get or create a memory manager instance.
10
+ */
11
+ function getMemoryManager(context) {
12
+ return context.memoryManager ?? new MemoryManager(context.projectPath);
13
+ }
14
+ /**
15
+ * Parse and validate write_memory arguments.
16
+ */
17
+ export function parseWriteMemoryArgs(args) {
18
+ const memoryFileName = isString(args?.memory_file_name) ? args.memory_file_name : '';
19
+ const content = isString(args?.content) ? args.content : '';
20
+ if (!memoryFileName || !content) {
21
+ throw new GlanceyError('memory_file_name and content are required', 'validation', {
22
+ tool: 'write_memory',
23
+ });
24
+ }
25
+ return { memoryFileName, content };
26
+ }
27
+ /**
28
+ * Handle write_memory tool.
29
+ */
30
+ export async function handleWriteMemory(args, context) {
31
+ const memoryManager = getMemoryManager(context);
32
+ await memoryManager.writeMemory(args.memoryFileName, args.content);
33
+ return createToolResponse(`Memory "${args.memoryFileName}" saved successfully.`, context.toolGuidance);
34
+ }
35
+ /**
36
+ * Parse and validate read_memory arguments.
37
+ */
38
+ export function parseReadMemoryArgs(args) {
39
+ const memoryFileName = isString(args?.memory_file_name) ? args.memory_file_name : '';
40
+ if (!memoryFileName) {
41
+ throw new GlanceyError('memory_file_name is required', 'validation', {
42
+ tool: 'read_memory',
43
+ });
44
+ }
45
+ return { memoryFileName };
46
+ }
47
+ /**
48
+ * Handle read_memory tool.
49
+ */
50
+ export async function handleReadMemory(args, context) {
51
+ const memoryManager = getMemoryManager(context);
52
+ const content = await memoryManager.readMemory(args.memoryFileName);
53
+ return createToolResponse(`## Memory: ${args.memoryFileName}\n\n${content}`, context.toolGuidance);
54
+ }
55
+ /**
56
+ * Format memory list for display.
57
+ */
58
+ export function formatMemoryList(memories) {
59
+ if (memories.length === 0) {
60
+ return 'No memories found.';
61
+ }
62
+ const header = `## Available Memories (${memories.length})\n\n`;
63
+ const rows = memories.map((m) => {
64
+ const sizeKb = (m.size / 1024).toFixed(1);
65
+ const date = m.lastModified.toISOString().split('T')[0];
66
+ return `- **${m.name}** (${sizeKb} KB, modified ${date})`;
67
+ });
68
+ return header + rows.join('\n');
69
+ }
70
+ /**
71
+ * Handle list_memories tool.
72
+ */
73
+ export async function handleListMemories(context) {
74
+ const memoryManager = getMemoryManager(context);
75
+ const memories = await memoryManager.listMemories();
76
+ return createToolResponse(formatMemoryList(memories), context.toolGuidance);
77
+ }
78
+ /**
79
+ * Parse and validate delete_memory arguments.
80
+ */
81
+ export function parseDeleteMemoryArgs(args) {
82
+ const memoryFileName = isString(args?.memory_file_name) ? args.memory_file_name : '';
83
+ if (!memoryFileName) {
84
+ throw new GlanceyError('memory_file_name is required', 'validation', {
85
+ tool: 'delete_memory',
86
+ });
87
+ }
88
+ return { memoryFileName };
89
+ }
90
+ /**
91
+ * Handle delete_memory tool.
92
+ */
93
+ export async function handleDeleteMemory(args, context) {
94
+ const memoryManager = getMemoryManager(context);
95
+ await memoryManager.deleteMemory(args.memoryFileName);
96
+ return createToolResponse(`Memory "${args.memoryFileName}" deleted successfully.`, context.toolGuidance);
97
+ }
98
+ /**
99
+ * Parse and validate edit_memory arguments.
100
+ */
101
+ export function parseEditMemoryArgs(args) {
102
+ const memoryFileName = isString(args?.memory_file_name) ? args.memory_file_name : '';
103
+ const needle = isString(args?.needle) ? args.needle : '';
104
+ const repl = isString(args?.repl) ? args.repl : '';
105
+ const mode = isString(args?.mode) ? args.mode : '';
106
+ if (!memoryFileName || !needle || mode === '') {
107
+ throw new GlanceyError('memory_file_name, needle, repl, and mode are required', 'validation', {
108
+ tool: 'edit_memory',
109
+ });
110
+ }
111
+ if (mode !== 'literal' && mode !== 'regex') {
112
+ throw new GlanceyError('mode must be "literal" or "regex"', 'validation', {
113
+ tool: 'edit_memory',
114
+ });
115
+ }
116
+ return { memoryFileName, needle, repl, mode };
117
+ }
118
+ /**
119
+ * Handle edit_memory tool.
120
+ */
121
+ export async function handleEditMemory(args, context) {
122
+ const memoryManager = getMemoryManager(context);
123
+ const result = await memoryManager.editMemory(args.memoryFileName, args.needle, args.repl, args.mode);
124
+ return createToolResponse(`Memory "${args.memoryFileName}" edited. ${result.matchCount} replacement(s) made.`, context.toolGuidance);
125
+ }
126
+ //# sourceMappingURL=memory-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"memory-handlers.js","sourceRoot":"","sources":["../../src/tools/memory-handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Tool handlers for search operations.
3
+ */
4
+ import type { CodeChunk, SimilarCodeResult } from '../search/indexer.js';
5
+ import type { ToolContext, ToolResponse } from './types.js';
6
+ /**
7
+ * Arguments for search_code tool.
8
+ */
9
+ export interface SearchCodeArgs {
10
+ query: string;
11
+ limit?: number;
12
+ pathPattern?: string;
13
+ languages?: string[];
14
+ }
15
+ /**
16
+ * Parse and validate search_code arguments.
17
+ */
18
+ export declare function parseSearchCodeArgs(args: Record<string, unknown> | undefined): SearchCodeArgs;
19
+ /**
20
+ * Format search results for display.
21
+ */
22
+ export declare function formatSearchResults(results: CodeChunk[]): string;
23
+ /**
24
+ * Handle search_code tool.
25
+ */
26
+ export declare function handleSearchCode(args: SearchCodeArgs, context: ToolContext): Promise<ToolResponse>;
27
+ /**
28
+ * Arguments for search_similar tool.
29
+ */
30
+ export interface SearchSimilarArgs {
31
+ code?: string;
32
+ filepath?: string;
33
+ startLine?: number;
34
+ endLine?: number;
35
+ limit?: number;
36
+ threshold?: number;
37
+ excludeSelf?: boolean;
38
+ }
39
+ /**
40
+ * Parse and validate search_similar arguments.
41
+ */
42
+ export declare function parseSearchSimilarArgs(args: Record<string, unknown> | undefined): SearchSimilarArgs;
43
+ /**
44
+ * Format similar code results for display.
45
+ */
46
+ export declare function formatSimilarResults(results: SimilarCodeResult[]): string;
47
+ /**
48
+ * Handle search_similar tool.
49
+ */
50
+ export declare function handleSearchSimilar(args: SearchSimilarArgs, context: ToolContext): Promise<ToolResponse>;
51
+ //# sourceMappingURL=search-handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-handlers.d.ts","sourceRoot":"","sources":["../../src/tools/search-handlers.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAM5D;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GAAG,cAAc,CAY7F;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,MAAM,CAehE;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,IAAI,EAAE,cAAc,EACpB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CAuBvB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CACpC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACxC,iBAAiB,CAmBnB;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,iBAAiB,EAAE,GAAG,MAAM,CAezE;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,iBAAiB,EACvB,OAAO,EAAE,WAAW,GACnB,OAAO,CAAC,YAAY,CAAC,CAqBvB"}
@@ -0,0 +1,128 @@
1
+ /**
2
+ * Tool handlers for search operations.
3
+ */
4
+ import { createToolResponse } from './types.js';
5
+ import { isString, isNumber, isStringArray } from '../utils/type-guards.js';
6
+ import { GlanceyError } from '../utils/errors.js';
7
+ import { dashboardState } from '../dashboard/state.js';
8
+ /**
9
+ * Parse and validate search_code arguments.
10
+ */
11
+ export function parseSearchCodeArgs(args) {
12
+ const query = isString(args?.query) ? args.query : '';
13
+ if (!query) {
14
+ throw new GlanceyError('query is required', 'validation', { tool: 'search_code' });
15
+ }
16
+ return {
17
+ query,
18
+ limit: isNumber(args?.limit) ? args.limit : 10,
19
+ pathPattern: isString(args?.pathPattern) ? args.pathPattern : undefined,
20
+ languages: isStringArray(args?.languages) ? args.languages : undefined,
21
+ };
22
+ }
23
+ /**
24
+ * Format search results for display.
25
+ */
26
+ export function formatSearchResults(results) {
27
+ if (results.length === 0) {
28
+ return 'No results found.';
29
+ }
30
+ return results
31
+ .map((r, i) => {
32
+ let header = `## Result ${i + 1}: ${r.filepath}:${r.startLine}-${r.endLine}`;
33
+ if (r.symbolName) {
34
+ const typeLabel = r.symbolType ? ` (${r.symbolType})` : '';
35
+ header += `\n**Symbol:** \`${r.symbolName}\`${typeLabel}`;
36
+ }
37
+ return `${header}\n\`\`\`${r.language}\n${r.content}\n\`\`\``;
38
+ })
39
+ .join('\n\n');
40
+ }
41
+ /**
42
+ * Handle search_code tool.
43
+ */
44
+ export async function handleSearchCode(args, context) {
45
+ const results = await context.indexer.search({
46
+ query: args.query,
47
+ limit: args.limit,
48
+ pathPattern: args.pathPattern,
49
+ languages: args.languages,
50
+ });
51
+ const formatted = formatSearchResults(results);
52
+ // Track token savings (optional - may not be available in tests)
53
+ try {
54
+ const status = await context.indexer.getStatus();
55
+ const charsReturned = formatted.length;
56
+ const matchedFiles = new Set(results.map((r) => r.filepath)).size;
57
+ dashboardState
58
+ .getTokenTracker()
59
+ .recordSearchCode(charsReturned, matchedFiles, status.fileCount ?? 0);
60
+ }
61
+ catch {
62
+ // Token tracking not available, continue silently
63
+ }
64
+ return createToolResponse(formatted, context.toolGuidance);
65
+ }
66
+ /**
67
+ * Parse and validate search_similar arguments.
68
+ */
69
+ export function parseSearchSimilarArgs(args) {
70
+ const code = isString(args?.code) ? args.code : undefined;
71
+ const filepath = isString(args?.filepath) ? args.filepath : undefined;
72
+ if (!code && !filepath) {
73
+ throw new GlanceyError('Either code or filepath must be provided', 'validation', {
74
+ tool: 'search_similar',
75
+ });
76
+ }
77
+ return {
78
+ code,
79
+ filepath,
80
+ startLine: isNumber(args?.startLine) ? args.startLine : undefined,
81
+ endLine: isNumber(args?.endLine) ? args.endLine : undefined,
82
+ limit: isNumber(args?.limit) ? args.limit : 10,
83
+ threshold: isNumber(args?.threshold) ? args.threshold : undefined,
84
+ excludeSelf: args?.excludeSelf !== false, // Default to true
85
+ };
86
+ }
87
+ /**
88
+ * Format similar code results for display.
89
+ */
90
+ export function formatSimilarResults(results) {
91
+ if (results.length === 0) {
92
+ return 'No similar code found.';
93
+ }
94
+ return results
95
+ .map((r, i) => {
96
+ let header = `## Similar ${i + 1}: ${r.filepath}:${r.startLine}-${r.endLine} (${(r.similarity * 100).toFixed(1)}% similar)`;
97
+ if (r.symbolName) {
98
+ const typeLabel = r.symbolType ? ` (${r.symbolType})` : '';
99
+ header += `\n**Symbol:** \`${r.symbolName}\`${typeLabel}`;
100
+ }
101
+ return `${header}\n\`\`\`${r.language}\n${r.content}\n\`\`\``;
102
+ })
103
+ .join('\n\n');
104
+ }
105
+ /**
106
+ * Handle search_similar tool.
107
+ */
108
+ export async function handleSearchSimilar(args, context) {
109
+ const results = await context.indexer.searchSimilar({
110
+ code: args.code,
111
+ filepath: args.filepath,
112
+ startLine: args.startLine,
113
+ endLine: args.endLine,
114
+ limit: args.limit,
115
+ threshold: args.threshold,
116
+ excludeSelf: args.excludeSelf,
117
+ });
118
+ const formatted = formatSimilarResults(results);
119
+ // Track token savings (optional)
120
+ try {
121
+ dashboardState.getTokenTracker().recordSearchSimilar(formatted.length, results.length);
122
+ }
123
+ catch {
124
+ // Token tracking not available
125
+ }
126
+ return createToolResponse(formatted, context.toolGuidance);
127
+ }
128
+ //# sourceMappingURL=search-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"search-handlers.js","sourceRoot":"","sources":["../../src/tools/search-handlers.ts"],"names":[],"mappings":"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"}