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,171 @@
1
+ /**
2
+ * Tool handlers for symbol analysis and editing operations.
3
+ */
4
+ import { SymbolKind, type Symbol as SymbolType, type SymbolsOverview, type EditResult } from '../symbols/index.js';
5
+ import type { ToolResponse } from './types.js';
6
+ /**
7
+ * Context for symbol tools.
8
+ */
9
+ export interface SymbolToolContext {
10
+ projectPath: string;
11
+ toolGuidance: string;
12
+ }
13
+ /**
14
+ * Arguments for get_symbols_overview tool.
15
+ */
16
+ export interface GetSymbolsOverviewArgs {
17
+ relativePath: string;
18
+ depth?: number;
19
+ }
20
+ /**
21
+ * Parse and validate get_symbols_overview arguments.
22
+ */
23
+ export declare function parseGetSymbolsOverviewArgs(args: Record<string, unknown> | undefined): GetSymbolsOverviewArgs;
24
+ /**
25
+ * Format symbols overview for display.
26
+ */
27
+ export declare function formatSymbolsOverview(overview: SymbolsOverview): string;
28
+ /**
29
+ * Handle get_symbols_overview tool.
30
+ */
31
+ export declare function handleGetSymbolsOverview(args: GetSymbolsOverviewArgs, context: SymbolToolContext): Promise<ToolResponse>;
32
+ /**
33
+ * Arguments for find_symbol tool.
34
+ */
35
+ export interface FindSymbolArgs {
36
+ namePathPattern: string;
37
+ relativePath?: string;
38
+ depth?: number;
39
+ includeBody?: boolean;
40
+ substringMatching?: boolean;
41
+ includeKinds?: SymbolKind[];
42
+ excludeKinds?: SymbolKind[];
43
+ }
44
+ /**
45
+ * Parse and validate find_symbol arguments.
46
+ */
47
+ export declare function parseFindSymbolArgs(args: Record<string, unknown> | undefined): FindSymbolArgs;
48
+ /**
49
+ * Get files to search for symbols.
50
+ */
51
+ export declare function getFilesToSearch(projectPath: string, relativePath?: string): Promise<string[]>;
52
+ /**
53
+ * Format matched symbols for display.
54
+ */
55
+ export declare function formatMatchedSymbols(matchedSymbols: Array<{
56
+ symbol: SymbolType;
57
+ file: string;
58
+ }>, namePathPattern: string): string;
59
+ /**
60
+ * Handle find_symbol tool.
61
+ */
62
+ export declare function handleFindSymbol(args: FindSymbolArgs, context: SymbolToolContext): Promise<ToolResponse>;
63
+ /**
64
+ * Arguments for find_referencing_symbols tool.
65
+ */
66
+ export interface FindReferencingSymbolsArgs {
67
+ namePath: string;
68
+ relativePath: string;
69
+ includeInfo?: boolean;
70
+ includeKinds?: SymbolKind[];
71
+ excludeKinds?: SymbolKind[];
72
+ }
73
+ /**
74
+ * Parse and validate find_referencing_symbols arguments.
75
+ */
76
+ export declare function parseFindReferencingSymbolsArgs(args: Record<string, unknown> | undefined): FindReferencingSymbolsArgs;
77
+ /**
78
+ * Handle find_referencing_symbols tool.
79
+ */
80
+ export declare function handleFindReferencingSymbols(args: FindReferencingSymbolsArgs, context: SymbolToolContext): Promise<ToolResponse>;
81
+ /**
82
+ * Arguments for search_for_pattern tool.
83
+ */
84
+ export interface SearchForPatternArgs {
85
+ substringPattern: string;
86
+ relativePath?: string;
87
+ restrictSearchToCodeFiles?: boolean;
88
+ pathsIncludeGlob?: string;
89
+ pathsExcludeGlob?: string;
90
+ contextLinesBefore?: number;
91
+ contextLinesAfter?: number;
92
+ maxAnswerChars?: number;
93
+ }
94
+ /**
95
+ * Parse and validate search_for_pattern arguments.
96
+ */
97
+ export declare function parseSearchForPatternArgs(args: Record<string, unknown> | undefined): SearchForPatternArgs;
98
+ /**
99
+ * Handle search_for_pattern tool.
100
+ */
101
+ export declare function handleSearchForPattern(args: SearchForPatternArgs, context: SymbolToolContext): Promise<ToolResponse>;
102
+ /**
103
+ * Arguments for replace_symbol_body tool.
104
+ */
105
+ export interface ReplaceSymbolBodyArgs {
106
+ namePath: string;
107
+ relativePath: string;
108
+ body: string;
109
+ }
110
+ /**
111
+ * Parse and validate replace_symbol_body arguments.
112
+ */
113
+ export declare function parseReplaceSymbolBodyArgs(args: Record<string, unknown> | undefined): ReplaceSymbolBodyArgs;
114
+ /**
115
+ * Format symbol edit result for display.
116
+ */
117
+ export declare function formatSymbolEditResult(result: EditResult, operation: string): string;
118
+ /**
119
+ * Handle replace_symbol_body tool.
120
+ */
121
+ export declare function handleReplaceSymbolBody(args: ReplaceSymbolBodyArgs, context: SymbolToolContext): Promise<ToolResponse>;
122
+ /**
123
+ * Arguments for insert_before_symbol tool.
124
+ */
125
+ export interface InsertBeforeSymbolArgs {
126
+ namePath: string;
127
+ relativePath: string;
128
+ body: string;
129
+ }
130
+ /**
131
+ * Parse and validate insert_before_symbol arguments.
132
+ */
133
+ export declare function parseInsertBeforeSymbolArgs(args: Record<string, unknown> | undefined): InsertBeforeSymbolArgs;
134
+ /**
135
+ * Handle insert_before_symbol tool.
136
+ */
137
+ export declare function handleInsertBeforeSymbol(args: InsertBeforeSymbolArgs, context: SymbolToolContext): Promise<ToolResponse>;
138
+ /**
139
+ * Arguments for insert_after_symbol tool.
140
+ */
141
+ export interface InsertAfterSymbolArgs {
142
+ namePath: string;
143
+ relativePath: string;
144
+ body: string;
145
+ }
146
+ /**
147
+ * Parse and validate insert_after_symbol arguments.
148
+ */
149
+ export declare function parseInsertAfterSymbolArgs(args: Record<string, unknown> | undefined): InsertAfterSymbolArgs;
150
+ /**
151
+ * Handle insert_after_symbol tool.
152
+ */
153
+ export declare function handleInsertAfterSymbol(args: InsertAfterSymbolArgs, context: SymbolToolContext): Promise<ToolResponse>;
154
+ /**
155
+ * Arguments for rename_symbol tool.
156
+ */
157
+ export interface RenameSymbolArgs {
158
+ namePath: string;
159
+ relativePath: string;
160
+ newName: string;
161
+ dryRun?: boolean;
162
+ }
163
+ /**
164
+ * Parse and validate rename_symbol arguments.
165
+ */
166
+ export declare function parseRenameSymbolArgs(args: Record<string, unknown> | undefined): RenameSymbolArgs;
167
+ /**
168
+ * Handle rename_symbol tool.
169
+ */
170
+ export declare function handleRenameSymbol(args: RenameSymbolArgs, context: SymbolToolContext): Promise<ToolResponse>;
171
+ //# sourceMappingURL=symbol-handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-handlers.d.ts","sourceRoot":"","sources":["../../src/tools/symbol-handlers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,456 @@
1
+ /**
2
+ * Tool handlers for symbol analysis and editing operations.
3
+ */
4
+ import * as fs from 'fs';
5
+ import * as path from 'path';
6
+ import { SymbolExtractor, searchForPattern, formatPatternSearchResults, ReferenceFinder, formatReferencesResult, SymbolEditor, SymbolRenamer, formatRenameResult, SymbolKindNames, parseNamePath, matchNamePath, formatNamePath, } from '../symbols/index.js';
7
+ import { createToolResponse } from './types.js';
8
+ import { isString, isNumber, isBoolean } from '../utils/type-guards.js';
9
+ import { GlanceyError } from '../utils/errors.js';
10
+ import { dashboardState } from '../dashboard/state.js';
11
+ /**
12
+ * Parse and validate get_symbols_overview arguments.
13
+ */
14
+ export function parseGetSymbolsOverviewArgs(args) {
15
+ const relativePath = isString(args?.relative_path) ? args.relative_path : '';
16
+ if (!relativePath) {
17
+ throw new GlanceyError('relative_path is required', 'validation', {
18
+ tool: 'get_symbols_overview',
19
+ });
20
+ }
21
+ return {
22
+ relativePath,
23
+ depth: isNumber(args?.depth) ? args.depth : 0,
24
+ };
25
+ }
26
+ /**
27
+ * Format symbols overview for display.
28
+ */
29
+ export function formatSymbolsOverview(overview) {
30
+ const parts = [];
31
+ parts.push(`## Symbols in ${overview.filepath}\n`);
32
+ parts.push(`Total: ${overview.totalSymbols} symbols\n`);
33
+ for (const [kindName, entries] of Object.entries(overview.byKind)) {
34
+ parts.push(`\n### ${kindName} (${entries.length})\n`);
35
+ for (const entry of entries) {
36
+ const childInfo = entry.children ? ` [${entry.children} children]` : '';
37
+ parts.push(`- **${entry.name}** (${entry.lines})${childInfo}`);
38
+ }
39
+ }
40
+ return parts.join('\n');
41
+ }
42
+ /**
43
+ * Handle get_symbols_overview tool.
44
+ */
45
+ export async function handleGetSymbolsOverview(args, context) {
46
+ const extractor = new SymbolExtractor(context.projectPath);
47
+ const overview = await extractor.getSymbolsOverview(args.relativePath, args.depth ?? 0);
48
+ const formatted = formatSymbolsOverview(overview);
49
+ // Track token savings (optional)
50
+ try {
51
+ const estimatedFileLines = Math.max(100, overview.totalSymbols * 15); // ~15 lines per symbol on average
52
+ dashboardState.getTokenTracker().recordSymbolsOverview(formatted.length, estimatedFileLines);
53
+ }
54
+ catch {
55
+ // Token tracking not available
56
+ }
57
+ return createToolResponse(formatted, context.toolGuidance);
58
+ }
59
+ /**
60
+ * Parse and validate find_symbol arguments.
61
+ */
62
+ export function parseFindSymbolArgs(args) {
63
+ const namePathPattern = isString(args?.name_path_pattern) ? args.name_path_pattern : '';
64
+ if (!namePathPattern) {
65
+ throw new GlanceyError('name_path_pattern is required', 'validation', {
66
+ tool: 'find_symbol',
67
+ });
68
+ }
69
+ return {
70
+ namePathPattern,
71
+ relativePath: isString(args?.relative_path) ? args.relative_path : undefined,
72
+ depth: isNumber(args?.depth) ? args.depth : 0,
73
+ includeBody: isBoolean(args?.include_body) ? args.include_body : false,
74
+ substringMatching: isBoolean(args?.substring_matching) ? args.substring_matching : false,
75
+ includeKinds: Array.isArray(args?.include_kinds)
76
+ ? args.include_kinds
77
+ : undefined,
78
+ excludeKinds: Array.isArray(args?.exclude_kinds)
79
+ ? args.exclude_kinds
80
+ : undefined,
81
+ };
82
+ }
83
+ /**
84
+ * Code file extensions to search.
85
+ */
86
+ const CODE_EXTENSIONS = [
87
+ '*.ts',
88
+ '*.tsx',
89
+ '*.js',
90
+ '*.jsx',
91
+ '*.py',
92
+ '*.go',
93
+ '*.rs',
94
+ '*.java',
95
+ '*.rb',
96
+ ];
97
+ /**
98
+ * Get files to search for symbols.
99
+ */
100
+ export async function getFilesToSearch(projectPath, relativePath) {
101
+ const files = [];
102
+ const { glob: globFn } = await import('glob');
103
+ if (relativePath) {
104
+ const fullPath = path.join(projectPath, relativePath);
105
+ try {
106
+ const fsStat = fs.statSync(fullPath);
107
+ if (fsStat.isFile()) {
108
+ files.push(relativePath);
109
+ }
110
+ else {
111
+ // Directory - find all analyzable files
112
+ for (const ext of CODE_EXTENSIONS) {
113
+ const matches = await globFn(`**/${ext}`, {
114
+ cwd: fullPath,
115
+ ignore: ['node_modules/**', 'dist/**', '.git/**'],
116
+ });
117
+ files.push(...matches.map((f) => path.join(relativePath, f)));
118
+ }
119
+ }
120
+ }
121
+ catch {
122
+ throw new GlanceyError(`Path not found: ${relativePath}`, 'validation', {
123
+ tool: 'find_symbol',
124
+ });
125
+ }
126
+ }
127
+ else {
128
+ // Search whole codebase
129
+ for (const ext of CODE_EXTENSIONS) {
130
+ const matches = await globFn(`**/${ext}`, {
131
+ cwd: projectPath,
132
+ ignore: ['node_modules/**', 'dist/**', '.git/**'],
133
+ });
134
+ files.push(...matches);
135
+ }
136
+ }
137
+ return files;
138
+ }
139
+ /**
140
+ * Format matched symbols for display.
141
+ */
142
+ export function formatMatchedSymbols(matchedSymbols, namePathPattern) {
143
+ if (matchedSymbols.length === 0) {
144
+ return `No symbols found matching pattern: ${namePathPattern}`;
145
+ }
146
+ const parts = [];
147
+ parts.push(`Found ${matchedSymbols.length} matching symbol(s):\n`);
148
+ for (const { symbol } of matchedSymbols) {
149
+ const kindName = SymbolKindNames[symbol.kind];
150
+ parts.push(`\n## ${formatNamePath(symbol.namePath)} (${kindName})`);
151
+ parts.push(`**Location:** ${symbol.location.filepath}:${symbol.location.startLine}-${symbol.location.endLine}`);
152
+ if (symbol.body) {
153
+ parts.push('\n```');
154
+ parts.push(symbol.body);
155
+ parts.push('```');
156
+ }
157
+ if (symbol.children && symbol.children.length > 0) {
158
+ parts.push(`\n**Children:** ${symbol.children.length}`);
159
+ for (const child of symbol.children) {
160
+ const childKind = SymbolKindNames[child.kind];
161
+ parts.push(` - ${child.name} (${childKind}, lines ${child.location.startLine}-${child.location.endLine})`);
162
+ }
163
+ }
164
+ }
165
+ return parts.join('\n');
166
+ }
167
+ /**
168
+ * Handle find_symbol tool.
169
+ */
170
+ export async function handleFindSymbol(args, context) {
171
+ const extractor = new SymbolExtractor(context.projectPath);
172
+ const files = await getFilesToSearch(context.projectPath, args.relativePath);
173
+ // Parse the pattern
174
+ const pattern = parseNamePath(args.namePathPattern);
175
+ // Find matching symbols
176
+ const matchedSymbols = [];
177
+ for (const file of files.slice(0, 100)) {
178
+ // Limit to prevent timeout
179
+ try {
180
+ const symbols = await extractor.extractSymbols(file, args.includeBody ?? false);
181
+ const findMatches = (syms, currentDepth) => {
182
+ for (const sym of syms) {
183
+ // Apply kind filters
184
+ if (args.excludeKinds && args.excludeKinds.includes(sym.kind))
185
+ continue;
186
+ if (args.includeKinds && !args.includeKinds.includes(sym.kind))
187
+ continue;
188
+ if (matchNamePath(sym.namePath, pattern, args.substringMatching ?? false)) {
189
+ matchedSymbols.push({ symbol: sym, file });
190
+ }
191
+ // Search children up to requested depth
192
+ if (currentDepth < (args.depth ?? 0) && sym.children) {
193
+ findMatches(sym.children, currentDepth + 1);
194
+ }
195
+ }
196
+ };
197
+ findMatches(symbols, 0);
198
+ }
199
+ catch {
200
+ // Skip files that can't be analyzed
201
+ }
202
+ }
203
+ const formatted = formatMatchedSymbols(matchedSymbols, args.namePathPattern);
204
+ // Track token savings (optional)
205
+ try {
206
+ dashboardState.getTokenTracker().recordFindSymbol(formatted.length, files.length);
207
+ }
208
+ catch {
209
+ // Token tracking not available
210
+ }
211
+ return createToolResponse(formatted, context.toolGuidance);
212
+ }
213
+ /**
214
+ * Parse and validate find_referencing_symbols arguments.
215
+ */
216
+ export function parseFindReferencingSymbolsArgs(args) {
217
+ const namePath = isString(args?.name_path) ? args.name_path : '';
218
+ const relativePath = isString(args?.relative_path) ? args.relative_path : '';
219
+ if (!namePath || !relativePath) {
220
+ throw new GlanceyError('name_path and relative_path are required', 'validation', {
221
+ tool: 'find_referencing_symbols',
222
+ });
223
+ }
224
+ return {
225
+ namePath,
226
+ relativePath,
227
+ includeInfo: isBoolean(args?.include_info) ? args.include_info : false,
228
+ includeKinds: Array.isArray(args?.include_kinds)
229
+ ? args.include_kinds
230
+ : undefined,
231
+ excludeKinds: Array.isArray(args?.exclude_kinds)
232
+ ? args.exclude_kinds
233
+ : undefined,
234
+ };
235
+ }
236
+ /**
237
+ * Handle find_referencing_symbols tool.
238
+ */
239
+ export async function handleFindReferencingSymbols(args, context) {
240
+ const finder = new ReferenceFinder(context.projectPath);
241
+ const references = await finder.findReferences({
242
+ namePath: args.namePath,
243
+ relativePath: args.relativePath,
244
+ includeInfo: args.includeInfo,
245
+ includeKinds: args.includeKinds,
246
+ excludeKinds: args.excludeKinds,
247
+ });
248
+ return createToolResponse(formatReferencesResult(references), context.toolGuidance);
249
+ }
250
+ /**
251
+ * Parse and validate search_for_pattern arguments.
252
+ */
253
+ export function parseSearchForPatternArgs(args) {
254
+ const substringPattern = isString(args?.substring_pattern) ? args.substring_pattern : '';
255
+ if (!substringPattern) {
256
+ throw new GlanceyError('substring_pattern is required', 'validation', {
257
+ tool: 'search_for_pattern',
258
+ });
259
+ }
260
+ return {
261
+ substringPattern,
262
+ relativePath: isString(args?.relative_path) ? args.relative_path : undefined,
263
+ restrictSearchToCodeFiles: isBoolean(args?.restrict_search_to_code_files)
264
+ ? args.restrict_search_to_code_files
265
+ : false,
266
+ pathsIncludeGlob: isString(args?.paths_include_glob) ? args.paths_include_glob : undefined,
267
+ pathsExcludeGlob: isString(args?.paths_exclude_glob) ? args.paths_exclude_glob : undefined,
268
+ contextLinesBefore: isNumber(args?.context_lines_before) ? args.context_lines_before : 0,
269
+ contextLinesAfter: isNumber(args?.context_lines_after) ? args.context_lines_after : 0,
270
+ maxAnswerChars: isNumber(args?.max_answer_chars) ? args.max_answer_chars : 50000,
271
+ };
272
+ }
273
+ /**
274
+ * Handle search_for_pattern tool.
275
+ */
276
+ export async function handleSearchForPattern(args, context) {
277
+ const result = await searchForPattern(context.projectPath, {
278
+ substringPattern: args.substringPattern,
279
+ relativePath: args.relativePath,
280
+ restrictSearchToCodeFiles: args.restrictSearchToCodeFiles,
281
+ pathsIncludeGlob: args.pathsIncludeGlob,
282
+ pathsExcludeGlob: args.pathsExcludeGlob,
283
+ contextLinesBefore: args.contextLinesBefore,
284
+ contextLinesAfter: args.contextLinesAfter,
285
+ maxAnswerChars: args.maxAnswerChars,
286
+ });
287
+ return createToolResponse(formatPatternSearchResults(result), context.toolGuidance);
288
+ }
289
+ /**
290
+ * Parse and validate replace_symbol_body arguments.
291
+ */
292
+ export function parseReplaceSymbolBodyArgs(args) {
293
+ const namePath = isString(args?.name_path) ? args.name_path : '';
294
+ const relativePath = isString(args?.relative_path) ? args.relative_path : '';
295
+ const body = isString(args?.body) ? args.body : '';
296
+ if (!namePath || !relativePath || !body) {
297
+ throw new GlanceyError('name_path, relative_path, and body are required', 'validation', {
298
+ tool: 'replace_symbol_body',
299
+ });
300
+ }
301
+ return { namePath, relativePath, body };
302
+ }
303
+ /**
304
+ * Format symbol edit result for display.
305
+ */
306
+ export function formatSymbolEditResult(result, operation) {
307
+ if (!result.success) {
308
+ return `Failed to ${operation}: ${result.error}`;
309
+ }
310
+ return (`Symbol "${result.symbolName}" ${operation} in ${result.filepath}.\n` +
311
+ `New location: lines ${result.newRange?.startLine}-${result.newRange?.endLine}`);
312
+ }
313
+ /**
314
+ * Handle replace_symbol_body tool.
315
+ */
316
+ export async function handleReplaceSymbolBody(args, context) {
317
+ const editor = new SymbolEditor(context.projectPath);
318
+ const result = await editor.replaceSymbolBody({
319
+ namePath: args.namePath,
320
+ relativePath: args.relativePath,
321
+ body: args.body,
322
+ });
323
+ if (!result.success) {
324
+ return {
325
+ content: [
326
+ {
327
+ type: 'text',
328
+ text: `Failed to replace symbol: ${result.error}` + context.toolGuidance,
329
+ },
330
+ ],
331
+ isError: true,
332
+ };
333
+ }
334
+ return createToolResponse(formatSymbolEditResult(result, 'replaced'), context.toolGuidance);
335
+ }
336
+ /**
337
+ * Parse and validate insert_before_symbol arguments.
338
+ */
339
+ export function parseInsertBeforeSymbolArgs(args) {
340
+ const namePath = isString(args?.name_path) ? args.name_path : '';
341
+ const relativePath = isString(args?.relative_path) ? args.relative_path : '';
342
+ const body = isString(args?.body) ? args.body : '';
343
+ if (!namePath || !relativePath || !body) {
344
+ throw new GlanceyError('name_path, relative_path, and body are required', 'validation', {
345
+ tool: 'insert_before_symbol',
346
+ });
347
+ }
348
+ return { namePath, relativePath, body };
349
+ }
350
+ /**
351
+ * Handle insert_before_symbol tool.
352
+ */
353
+ export async function handleInsertBeforeSymbol(args, context) {
354
+ const editor = new SymbolEditor(context.projectPath);
355
+ const result = await editor.insertBeforeSymbol({
356
+ namePath: args.namePath,
357
+ relativePath: args.relativePath,
358
+ body: args.body,
359
+ });
360
+ if (!result.success) {
361
+ return {
362
+ content: [
363
+ {
364
+ type: 'text',
365
+ text: `Failed to insert before symbol: ${result.error}` + context.toolGuidance,
366
+ },
367
+ ],
368
+ isError: true,
369
+ };
370
+ }
371
+ return createToolResponse(`Content inserted before "${result.symbolName}" in ${result.filepath}.\n` +
372
+ `Inserted at: lines ${result.newRange?.startLine}-${result.newRange?.endLine}`, context.toolGuidance);
373
+ }
374
+ /**
375
+ * Parse and validate insert_after_symbol arguments.
376
+ */
377
+ export function parseInsertAfterSymbolArgs(args) {
378
+ const namePath = isString(args?.name_path) ? args.name_path : '';
379
+ const relativePath = isString(args?.relative_path) ? args.relative_path : '';
380
+ const body = isString(args?.body) ? args.body : '';
381
+ if (!namePath || !relativePath || !body) {
382
+ throw new GlanceyError('name_path, relative_path, and body are required', 'validation', {
383
+ tool: 'insert_after_symbol',
384
+ });
385
+ }
386
+ return { namePath, relativePath, body };
387
+ }
388
+ /**
389
+ * Handle insert_after_symbol tool.
390
+ */
391
+ export async function handleInsertAfterSymbol(args, context) {
392
+ const editor = new SymbolEditor(context.projectPath);
393
+ const result = await editor.insertAfterSymbol({
394
+ namePath: args.namePath,
395
+ relativePath: args.relativePath,
396
+ body: args.body,
397
+ });
398
+ if (!result.success) {
399
+ return {
400
+ content: [
401
+ {
402
+ type: 'text',
403
+ text: `Failed to insert after symbol: ${result.error}` + context.toolGuidance,
404
+ },
405
+ ],
406
+ isError: true,
407
+ };
408
+ }
409
+ return createToolResponse(`Content inserted after "${result.symbolName}" in ${result.filepath}.\n` +
410
+ `Inserted at: lines ${result.newRange?.startLine}-${result.newRange?.endLine}`, context.toolGuidance);
411
+ }
412
+ /**
413
+ * Parse and validate rename_symbol arguments.
414
+ */
415
+ export function parseRenameSymbolArgs(args) {
416
+ const namePath = isString(args?.name_path) ? args.name_path : '';
417
+ const relativePath = isString(args?.relative_path) ? args.relative_path : '';
418
+ const newName = isString(args?.new_name) ? args.new_name : '';
419
+ if (!namePath || !relativePath || !newName) {
420
+ throw new GlanceyError('name_path, relative_path, and new_name are required', 'validation', {
421
+ tool: 'rename_symbol',
422
+ });
423
+ }
424
+ return {
425
+ namePath,
426
+ relativePath,
427
+ newName,
428
+ dryRun: isBoolean(args?.dry_run) ? args.dry_run : false,
429
+ };
430
+ }
431
+ /**
432
+ * Handle rename_symbol tool.
433
+ */
434
+ export async function handleRenameSymbol(args, context) {
435
+ const renamer = new SymbolRenamer(context.projectPath);
436
+ const result = await renamer.renameSymbol({
437
+ namePath: args.namePath,
438
+ relativePath: args.relativePath,
439
+ newName: args.newName,
440
+ dryRun: args.dryRun,
441
+ });
442
+ if (!result.success) {
443
+ return {
444
+ content: [
445
+ {
446
+ type: 'text',
447
+ text: `Failed to rename symbol: ${result.error}` + context.toolGuidance,
448
+ },
449
+ ],
450
+ isError: true,
451
+ };
452
+ }
453
+ const modeLabel = args.dryRun ? ' (dry run)' : '';
454
+ return createToolResponse(formatRenameResult(result) + modeLabel, context.toolGuidance);
455
+ }
456
+ //# sourceMappingURL=symbol-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"symbol-handlers.js","sourceRoot":"","sources":["../../src/tools/symbol-handlers.ts"],"names":[],"mappings":"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"}