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,377 @@
1
+ import type { EmbeddingBackend } from '../embeddings/index.js';
2
+ import { type ConceptCluster, type ClusteringResult, type ClusteringOptions } from './clustering.js';
3
+ /**
4
+ * Represents a chunk of code that has been indexed.
5
+ * Each chunk contains a portion of a source file with its location metadata.
6
+ */
7
+ export interface CodeChunk {
8
+ /** Unique identifier for this chunk (format: filepath:startLine-endLine) */
9
+ id: string;
10
+ /** Relative path to the source file from the project root */
11
+ filepath: string;
12
+ /** The actual source code content of this chunk */
13
+ content: string;
14
+ /** Starting line number in the source file (1-indexed) */
15
+ startLine: number;
16
+ /** Ending line number in the source file (1-indexed) */
17
+ endLine: number;
18
+ /** Programming language of the source code */
19
+ language: string;
20
+ /** Vector embedding for semantic search (populated during indexing) */
21
+ embedding?: number[];
22
+ /** Type of code symbol (function, class, method, etc.) - from AST chunking */
23
+ symbolType?: 'function' | 'class' | 'method' | 'interface' | 'type' | 'variable' | 'import' | 'other';
24
+ /** Name of the code symbol (e.g., 'UserService', 'MyClass.constructor') - from AST chunking */
25
+ symbolName?: string;
26
+ }
27
+ /**
28
+ * Statistics about chunking method usage during indexing.
29
+ * Tracks how many files used AST-aware vs line-based chunking.
30
+ */
31
+ export interface ChunkingStats {
32
+ /** Number of files chunked with AST parsing (TypeScript/JavaScript) */
33
+ astChunked: number;
34
+ /** Number of files chunked with tree-sitter parsing (Python, Go, etc.) */
35
+ treeSitterChunked: number;
36
+ /** Number of files that fell back to line-based chunking */
37
+ lineBasedChunked: number;
38
+ /** Files where AST parsing failed and fell back to line-based */
39
+ astFallbacks: string[];
40
+ /** Files where tree-sitter parsing failed and fell back to line-based */
41
+ treeSitterFallbacks: string[];
42
+ }
43
+ /**
44
+ * Status information about the code index.
45
+ */
46
+ export interface IndexStatus {
47
+ /** Whether the codebase has been indexed */
48
+ indexed: boolean;
49
+ /** Number of files that have been indexed */
50
+ fileCount: number;
51
+ /** Total number of code chunks in the index */
52
+ chunkCount: number;
53
+ /** ISO timestamp of the last index update, or null if never indexed */
54
+ lastUpdated: string | null;
55
+ /** Path to the LanceDB index directory */
56
+ indexPath: string;
57
+ /** Name of the embedding backend used */
58
+ embeddingBackend?: string;
59
+ /** Model identifier used for embeddings */
60
+ embeddingModel?: string;
61
+ /** Whether index corruption was detected */
62
+ corrupted?: boolean;
63
+ /** Description of detected corruption */
64
+ corruptionReason?: string;
65
+ /** Whether the current embedding backend differs from the indexed backend */
66
+ backendMismatch?: boolean;
67
+ /** Description of the backend mismatch */
68
+ backendMismatchReason?: string;
69
+ /** Whether the index is currently being rebuilt due to backend change */
70
+ isIndexing?: boolean;
71
+ /** Statistics about chunking methods used during indexing */
72
+ chunkingStats?: ChunkingStats;
73
+ }
74
+ /**
75
+ * Options for searching similar code.
76
+ */
77
+ export interface SearchSimilarOptions {
78
+ /** File path to find similar code for (relative to project root) */
79
+ filepath?: string;
80
+ /** Starting line number (1-indexed, requires filepath) */
81
+ startLine?: number;
82
+ /** Ending line number (1-indexed, requires filepath) */
83
+ endLine?: number;
84
+ /** Code snippet to find similar code for (alternative to filepath) */
85
+ code?: string;
86
+ /** Maximum number of results to return (default: 10) */
87
+ limit?: number;
88
+ /** Minimum similarity score threshold 0-1 (default: 0) */
89
+ threshold?: number;
90
+ /** Exclude the source chunk from results (default: true) */
91
+ excludeSelf?: boolean;
92
+ }
93
+ /**
94
+ * Result from similar code search, includes similarity score.
95
+ */
96
+ export interface SimilarCodeResult extends CodeChunk {
97
+ /** Similarity score from 0 to 1 (1 = identical) */
98
+ similarity: number;
99
+ }
100
+ /**
101
+ * Options for searching code.
102
+ */
103
+ export interface SearchOptions {
104
+ /** Natural language query to search for */
105
+ query: string;
106
+ /** Maximum number of results to return (default: 10) */
107
+ limit?: number;
108
+ /** Glob pattern to filter results by file path (e.g., "src/\**", "!test/\**") */
109
+ pathPattern?: string;
110
+ /** Filter results to specific languages (e.g., ["typescript", "javascript"]) */
111
+ languages?: string[];
112
+ }
113
+ /**
114
+ * Progress information during indexing operations.
115
+ * Used to report status to callers via the progress callback.
116
+ */
117
+ export interface IndexProgress {
118
+ /** Current phase of the indexing process */
119
+ phase: 'scanning' | 'chunking' | 'embedding' | 'storing' | 'complete';
120
+ /** Current progress count within the phase */
121
+ current: number;
122
+ /** Total items to process in the current phase */
123
+ total: number;
124
+ /** Human-readable status message */
125
+ message: string;
126
+ /** Estimated time remaining in seconds */
127
+ etaSeconds?: number;
128
+ }
129
+ /**
130
+ * Callback function for receiving indexing progress updates.
131
+ */
132
+ export type ProgressCallback = (progress: IndexProgress) => void;
133
+ /**
134
+ * Summary of the codebase structure and concept areas
135
+ */
136
+ export interface CodebaseSummary {
137
+ /** Total number of files indexed */
138
+ totalFiles: number;
139
+ /** Total number of code chunks */
140
+ totalChunks: number;
141
+ /** Languages detected in the codebase */
142
+ languages: {
143
+ language: string;
144
+ fileCount: number;
145
+ chunkCount: number;
146
+ }[];
147
+ /** Discovered concept clusters */
148
+ concepts: ConceptCluster[];
149
+ /** Quality score for the clustering (silhouette score, -1 to 1) */
150
+ clusteringQuality: number;
151
+ /** Timestamp when summary was generated */
152
+ generatedAt: string;
153
+ }
154
+ /**
155
+ * Code indexer that uses LanceDB for vector storage and semantic search.
156
+ *
157
+ * Provides functionality to:
158
+ * - Index a codebase by chunking files and generating embeddings
159
+ * - Perform hybrid semantic + keyword search
160
+ * - Support incremental indexing (only re-index changed files)
161
+ *
162
+ * @example
163
+ * ```typescript
164
+ * const backend = await createEmbeddingBackend();
165
+ * const indexer = new CodeIndexer('/path/to/project', backend);
166
+ * await indexer.initialize();
167
+ *
168
+ * // Index the codebase
169
+ * await indexer.indexCodebase();
170
+ *
171
+ * // Search for code
172
+ * const results = await indexer.search('authentication middleware');
173
+ * ```
174
+ */
175
+ export declare class CodeIndexer {
176
+ private db;
177
+ private table;
178
+ private metadataTable;
179
+ private embeddingBackend;
180
+ private indexPath;
181
+ private projectPath;
182
+ private config;
183
+ /** LRU cache for query embeddings with TTL to avoid recomputing identical queries */
184
+ private queryEmbeddingCache;
185
+ /** Tracks chunking method usage during current indexing operation */
186
+ private currentChunkingStats;
187
+ /** Create empty chunking stats */
188
+ private createEmptyChunkingStats;
189
+ constructor(projectPath: string, embeddingBackend: EmbeddingBackend);
190
+ initialize(): Promise<void>;
191
+ private get metadataPath();
192
+ private get checkpointPath();
193
+ /**
194
+ * Save indexing checkpoint to disk for crash recovery.
195
+ * Strips chunk content to reduce checkpoint size - content is re-read on resume.
196
+ */
197
+ private saveCheckpoint;
198
+ /**
199
+ * Re-read chunk content from source files.
200
+ * Used when resuming from a checkpoint that has stripped content.
201
+ */
202
+ private rehydrateChunkContent;
203
+ /**
204
+ * Load indexing checkpoint from disk.
205
+ * Returns null if no checkpoint exists or if it's invalid.
206
+ */
207
+ private loadCheckpoint;
208
+ /**
209
+ * Clear the indexing checkpoint file.
210
+ */
211
+ private clearCheckpoint;
212
+ /**
213
+ * Save index metadata to disk
214
+ */
215
+ private saveIndexMetadata;
216
+ /**
217
+ * Load index metadata from disk
218
+ */
219
+ private loadIndexMetadata;
220
+ /**
221
+ * Get the modification time of a file
222
+ */
223
+ private getFileMtime;
224
+ /**
225
+ * Collect modification times for multiple files.
226
+ * Used for checkpoint freshness validation.
227
+ */
228
+ private collectFileMtimes;
229
+ /**
230
+ * Validate that checkpoint files haven't been modified since checkpoint creation.
231
+ * Returns true if checkpoint is fresh, false if files have changed.
232
+ */
233
+ private validateCheckpointFreshness;
234
+ /**
235
+ * Get stored metadata for all indexed files
236
+ */
237
+ private getStoredMetadata;
238
+ /**
239
+ * Detect which files have been added, modified, or deleted
240
+ */
241
+ private detectFileChanges;
242
+ /**
243
+ * Get all project files matching the configured patterns.
244
+ * Used for change detection and staleness checking.
245
+ */
246
+ private getProjectFiles;
247
+ /**
248
+ * Check if the index is stale (files have been modified since last index).
249
+ * Returns true if any files have been added, modified, or deleted.
250
+ * This is a lightweight check that only compares file modification times.
251
+ */
252
+ checkIfStale(): Promise<{
253
+ stale: boolean;
254
+ reason?: string;
255
+ }>;
256
+ /**
257
+ * Save metadata for indexed files
258
+ */
259
+ private saveFileMetadata;
260
+ getStatus(): Promise<IndexStatus>;
261
+ /**
262
+ * Check if the current embedding backend differs from the one used to create the index.
263
+ * Returns mismatch status and reason if mismatched.
264
+ */
265
+ private checkBackendMismatch;
266
+ /**
267
+ * Validate index integrity by checking metadata consistency.
268
+ * Returns corruption status and reason if corrupted.
269
+ */
270
+ private validateIndexIntegrity;
271
+ indexCodebase(patterns?: string[], excludePatterns?: string[], forceReindex?: boolean, onProgress?: ProgressCallback, autoRepair?: boolean): Promise<{
272
+ filesIndexed: number;
273
+ chunksCreated: number;
274
+ incremental: boolean;
275
+ repaired?: boolean;
276
+ }>;
277
+ /**
278
+ * Perform a full reindex of all files
279
+ */
280
+ private indexFull;
281
+ /**
282
+ * Log chunking statistics summary, with warnings for fallbacks
283
+ */
284
+ private logChunkingStats;
285
+ /**
286
+ * Perform incremental indexing - only process changed files
287
+ */
288
+ private indexIncremental;
289
+ /**
290
+ * Resume indexing from a saved checkpoint.
291
+ * Handles each checkpoint phase appropriately.
292
+ */
293
+ private resumeFromCheckpoint;
294
+ /**
295
+ * Generate embeddings for chunks in batches.
296
+ * Supports configurable batch size and delay between batches for rate limiting.
297
+ */
298
+ private embedChunks;
299
+ private chunkFile;
300
+ /**
301
+ * Chunk a file using AST-aware parsing
302
+ */
303
+ private chunkFileWithAST;
304
+ /**
305
+ * Chunk a file using tree-sitter AST parsing (Python, Go, Rust, Java, Kotlin)
306
+ */
307
+ private chunkFileWithTreeSitter;
308
+ /**
309
+ * Chunk a file using line-based splitting (fallback)
310
+ */
311
+ private chunkFileByLines;
312
+ private getLanguage;
313
+ /**
314
+ * Get query embedding from cache or compute it.
315
+ * Uses TTLCache for LRU eviction and TTL-based expiration.
316
+ */
317
+ private getQueryEmbedding;
318
+ /**
319
+ * Check if a filepath matches a glob pattern.
320
+ * Supports negation patterns starting with '!'.
321
+ */
322
+ private matchesPathPattern;
323
+ /**
324
+ * Search with options object
325
+ */
326
+ search(options: SearchOptions): Promise<CodeChunk[]>;
327
+ /**
328
+ * Search with query string and optional limit (backward compatible)
329
+ */
330
+ search(query: string, limit?: number): Promise<CodeChunk[]>;
331
+ /**
332
+ * Calculate keyword match score for hybrid search
333
+ */
334
+ private calculateKeywordScore;
335
+ /**
336
+ * Find code chunks semantically similar to a given code snippet or file location.
337
+ * This is useful for finding duplicate logic, similar implementations, or related code.
338
+ */
339
+ searchSimilar(options: SearchSimilarOptions): Promise<SimilarCodeResult[]>;
340
+ clearIndex(): Promise<void>;
341
+ private get clusteringMetadataPath();
342
+ /**
343
+ * Clear clustering metadata file
344
+ */
345
+ private clearClusteringMetadata;
346
+ /**
347
+ * Save clustering result to metadata file.
348
+ * Includes index checksum for cache invalidation.
349
+ */
350
+ private saveClusteringMetadata;
351
+ /**
352
+ * Load clustering result from metadata file.
353
+ * Validates that the cached clustering matches the current index checksum.
354
+ * Returns null if cache is stale or missing.
355
+ */
356
+ private loadClusteringMetadata;
357
+ /**
358
+ * Cluster the indexed codebase into semantic concept areas.
359
+ * Uses k-means clustering on embeddings to discover related code groups.
360
+ */
361
+ clusterConcepts(options?: ClusteringOptions): Promise<ClusteringResult>;
362
+ /**
363
+ * List all discovered concept clusters.
364
+ * Returns cached clustering result if available, otherwise clusters first.
365
+ */
366
+ listConcepts(forceRecluster?: boolean): Promise<ConceptCluster[]>;
367
+ /**
368
+ * Search for code within a specific concept cluster.
369
+ * Returns chunks that belong to the specified cluster, optionally filtered by query.
370
+ */
371
+ searchByConcept(conceptId: number, query?: string, limit?: number): Promise<CodeChunk[]>;
372
+ /**
373
+ * Generate a comprehensive summary of the codebase including concept areas.
374
+ */
375
+ summarizeCodebase(clusteringOptions?: ClusteringOptions): Promise<CodebaseSummary>;
376
+ }
377
+ //# sourceMappingURL=indexer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../src/search/indexer.ts"],"names":[],"mappings":"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"}