grepmind-core 0.1.0-alpha

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 (370) hide show
  1. package/LICENSE +190 -0
  2. package/dist/config/types.d.ts +174 -0
  3. package/dist/config/types.d.ts.map +1 -0
  4. package/dist/config/types.js +137 -0
  5. package/dist/config/types.js.map +1 -0
  6. package/dist/git.d.ts +98 -0
  7. package/dist/git.d.ts.map +1 -0
  8. package/dist/git.js +298 -0
  9. package/dist/git.js.map +1 -0
  10. package/dist/git.test.d.ts +7 -0
  11. package/dist/git.test.d.ts.map +1 -0
  12. package/dist/git.test.js +242 -0
  13. package/dist/git.test.js.map +1 -0
  14. package/dist/index.d.ts +44 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +67 -0
  17. package/dist/index.js.map +1 -0
  18. package/dist/indexer/branch.d.ts +121 -0
  19. package/dist/indexer/branch.d.ts.map +1 -0
  20. package/dist/indexer/branch.js +451 -0
  21. package/dist/indexer/branch.js.map +1 -0
  22. package/dist/indexer/chunker.d.ts +9 -0
  23. package/dist/indexer/chunker.d.ts.map +1 -0
  24. package/dist/indexer/chunker.js +70 -0
  25. package/dist/indexer/chunker.js.map +1 -0
  26. package/dist/indexer/chunker.test.d.ts +2 -0
  27. package/dist/indexer/chunker.test.d.ts.map +1 -0
  28. package/dist/indexer/chunker.test.js +180 -0
  29. package/dist/indexer/chunker.test.js.map +1 -0
  30. package/dist/indexer/code/branch.d.ts +155 -0
  31. package/dist/indexer/code/branch.d.ts.map +1 -0
  32. package/dist/indexer/code/branch.js +550 -0
  33. package/dist/indexer/code/branch.js.map +1 -0
  34. package/dist/indexer/code/branch.test.d.ts +7 -0
  35. package/dist/indexer/code/branch.test.d.ts.map +1 -0
  36. package/dist/indexer/code/branch.test.js +241 -0
  37. package/dist/indexer/code/branch.test.js.map +1 -0
  38. package/dist/indexer/code/chunker.d.ts +61 -0
  39. package/dist/indexer/code/chunker.d.ts.map +1 -0
  40. package/dist/indexer/code/chunker.js +311 -0
  41. package/dist/indexer/code/chunker.js.map +1 -0
  42. package/dist/indexer/code/chunker.test.d.ts +2 -0
  43. package/dist/indexer/code/chunker.test.d.ts.map +1 -0
  44. package/dist/indexer/code/chunker.test.js +552 -0
  45. package/dist/indexer/code/chunker.test.js.map +1 -0
  46. package/dist/indexer/code/fts.test.d.ts +2 -0
  47. package/dist/indexer/code/fts.test.d.ts.map +1 -0
  48. package/dist/indexer/code/fts.test.js +14 -0
  49. package/dist/indexer/code/fts.test.js.map +1 -0
  50. package/dist/indexer/code/graph/embedded.d.ts +11 -0
  51. package/dist/indexer/code/graph/embedded.d.ts.map +1 -0
  52. package/dist/indexer/code/graph/embedded.js +152 -0
  53. package/dist/indexer/code/graph/embedded.js.map +1 -0
  54. package/dist/indexer/code/graph/embedded.test.d.ts +2 -0
  55. package/dist/indexer/code/graph/embedded.test.d.ts.map +1 -0
  56. package/dist/indexer/code/graph/embedded.test.js +105 -0
  57. package/dist/indexer/code/graph/embedded.test.js.map +1 -0
  58. package/dist/indexer/code/graph/facts.d.ts +11 -0
  59. package/dist/indexer/code/graph/facts.d.ts.map +1 -0
  60. package/dist/indexer/code/graph/facts.js +456 -0
  61. package/dist/indexer/code/graph/facts.js.map +1 -0
  62. package/dist/indexer/code/graph/facts.test.d.ts +2 -0
  63. package/dist/indexer/code/graph/facts.test.d.ts.map +1 -0
  64. package/dist/indexer/code/graph/facts.test.js +181 -0
  65. package/dist/indexer/code/graph/facts.test.js.map +1 -0
  66. package/dist/indexer/code/graph/id.d.ts +14 -0
  67. package/dist/indexer/code/graph/id.d.ts.map +1 -0
  68. package/dist/indexer/code/graph/id.js +40 -0
  69. package/dist/indexer/code/graph/id.js.map +1 -0
  70. package/dist/indexer/code/graph/id.test.d.ts +2 -0
  71. package/dist/indexer/code/graph/id.test.d.ts.map +1 -0
  72. package/dist/indexer/code/graph/id.test.js +86 -0
  73. package/dist/indexer/code/graph/id.test.js.map +1 -0
  74. package/dist/indexer/code/graph/index.d.ts +133 -0
  75. package/dist/indexer/code/graph/index.d.ts.map +1 -0
  76. package/dist/indexer/code/graph/index.js +1876 -0
  77. package/dist/indexer/code/graph/index.js.map +1 -0
  78. package/dist/indexer/code/graph/index.test.d.ts +2 -0
  79. package/dist/indexer/code/graph/index.test.d.ts.map +1 -0
  80. package/dist/indexer/code/graph/index.test.js +210 -0
  81. package/dist/indexer/code/graph/index.test.js.map +1 -0
  82. package/dist/indexer/code/graph/queries.d.ts +22 -0
  83. package/dist/indexer/code/graph/queries.d.ts.map +1 -0
  84. package/dist/indexer/code/graph/queries.js +79 -0
  85. package/dist/indexer/code/graph/queries.js.map +1 -0
  86. package/dist/indexer/code/graph/queries.test.d.ts +2 -0
  87. package/dist/indexer/code/graph/queries.test.d.ts.map +1 -0
  88. package/dist/indexer/code/graph/queries.test.js +108 -0
  89. package/dist/indexer/code/graph/queries.test.js.map +1 -0
  90. package/dist/indexer/code/graph/resolver.d.ts +136 -0
  91. package/dist/indexer/code/graph/resolver.d.ts.map +1 -0
  92. package/dist/indexer/code/graph/resolver.js +839 -0
  93. package/dist/indexer/code/graph/resolver.js.map +1 -0
  94. package/dist/indexer/code/graph/resolver.test.d.ts +2 -0
  95. package/dist/indexer/code/graph/resolver.test.d.ts.map +1 -0
  96. package/dist/indexer/code/graph/resolver.test.js +482 -0
  97. package/dist/indexer/code/graph/resolver.test.js.map +1 -0
  98. package/dist/indexer/code/graph/semantic.d.ts +33 -0
  99. package/dist/indexer/code/graph/semantic.d.ts.map +1 -0
  100. package/dist/indexer/code/graph/semantic.js +279 -0
  101. package/dist/indexer/code/graph/semantic.js.map +1 -0
  102. package/dist/indexer/code/graph/semantic.test.d.ts +2 -0
  103. package/dist/indexer/code/graph/semantic.test.d.ts.map +1 -0
  104. package/dist/indexer/code/graph/semantic.test.js +127 -0
  105. package/dist/indexer/code/graph/semantic.test.js.map +1 -0
  106. package/dist/indexer/code/index.d.ts +404 -0
  107. package/dist/indexer/code/index.d.ts.map +1 -0
  108. package/dist/indexer/code/index.js +2070 -0
  109. package/dist/indexer/code/index.js.map +1 -0
  110. package/dist/indexer/code/languages/bash.d.ts +14 -0
  111. package/dist/indexer/code/languages/bash.d.ts.map +1 -0
  112. package/dist/indexer/code/languages/bash.js +125 -0
  113. package/dist/indexer/code/languages/bash.js.map +1 -0
  114. package/dist/indexer/code/languages/css.d.ts +16 -0
  115. package/dist/indexer/code/languages/css.d.ts.map +1 -0
  116. package/dist/indexer/code/languages/css.js +204 -0
  117. package/dist/indexer/code/languages/css.js.map +1 -0
  118. package/dist/indexer/code/languages/generic.d.ts +61 -0
  119. package/dist/indexer/code/languages/generic.d.ts.map +1 -0
  120. package/dist/indexer/code/languages/generic.js +150 -0
  121. package/dist/indexer/code/languages/generic.js.map +1 -0
  122. package/dist/indexer/code/languages/graphql.d.ts +13 -0
  123. package/dist/indexer/code/languages/graphql.d.ts.map +1 -0
  124. package/dist/indexer/code/languages/graphql.js +180 -0
  125. package/dist/indexer/code/languages/graphql.js.map +1 -0
  126. package/dist/indexer/code/languages/html.d.ts +16 -0
  127. package/dist/indexer/code/languages/html.d.ts.map +1 -0
  128. package/dist/indexer/code/languages/html.js +138 -0
  129. package/dist/indexer/code/languages/html.js.map +1 -0
  130. package/dist/indexer/code/languages/index.d.ts +9 -0
  131. package/dist/indexer/code/languages/index.d.ts.map +1 -0
  132. package/dist/indexer/code/languages/index.js +12 -0
  133. package/dist/indexer/code/languages/index.js.map +1 -0
  134. package/dist/indexer/code/languages/json.d.ts +12 -0
  135. package/dist/indexer/code/languages/json.d.ts.map +1 -0
  136. package/dist/indexer/code/languages/json.js +66 -0
  137. package/dist/indexer/code/languages/json.js.map +1 -0
  138. package/dist/indexer/code/languages/registry.d.ts +78 -0
  139. package/dist/indexer/code/languages/registry.d.ts.map +1 -0
  140. package/dist/indexer/code/languages/registry.js +72 -0
  141. package/dist/indexer/code/languages/registry.js.map +1 -0
  142. package/dist/indexer/code/languages/typescript.d.ts +39 -0
  143. package/dist/indexer/code/languages/typescript.d.ts.map +1 -0
  144. package/dist/indexer/code/languages/typescript.js +300 -0
  145. package/dist/indexer/code/languages/typescript.js.map +1 -0
  146. package/dist/indexer/code/languages/yaml.d.ts +13 -0
  147. package/dist/indexer/code/languages/yaml.d.ts.map +1 -0
  148. package/dist/indexer/code/languages/yaml.js +90 -0
  149. package/dist/indexer/code/languages/yaml.js.map +1 -0
  150. package/dist/indexer/code/parser.d.ts +26 -0
  151. package/dist/indexer/code/parser.d.ts.map +1 -0
  152. package/dist/indexer/code/parser.js +332 -0
  153. package/dist/indexer/code/parser.js.map +1 -0
  154. package/dist/indexer/code/retry.d.ts +58 -0
  155. package/dist/indexer/code/retry.d.ts.map +1 -0
  156. package/dist/indexer/code/retry.js +192 -0
  157. package/dist/indexer/code/retry.js.map +1 -0
  158. package/dist/indexer/code/tree/builder.d.ts +30 -0
  159. package/dist/indexer/code/tree/builder.d.ts.map +1 -0
  160. package/dist/indexer/code/tree/builder.js +132 -0
  161. package/dist/indexer/code/tree/builder.js.map +1 -0
  162. package/dist/indexer/code/tree/builder.test.d.ts +2 -0
  163. package/dist/indexer/code/tree/builder.test.d.ts.map +1 -0
  164. package/dist/indexer/code/tree/builder.test.js +31 -0
  165. package/dist/indexer/code/tree/builder.test.js.map +1 -0
  166. package/dist/indexer/code/tree/cache.d.ts +22 -0
  167. package/dist/indexer/code/tree/cache.d.ts.map +1 -0
  168. package/dist/indexer/code/tree/cache.js +85 -0
  169. package/dist/indexer/code/tree/cache.js.map +1 -0
  170. package/dist/indexer/code/tree/context.d.ts +32 -0
  171. package/dist/indexer/code/tree/context.d.ts.map +1 -0
  172. package/dist/indexer/code/tree/context.js +78 -0
  173. package/dist/indexer/code/tree/context.js.map +1 -0
  174. package/dist/indexer/code/tree/embedding.d.ts +9 -0
  175. package/dist/indexer/code/tree/embedding.d.ts.map +1 -0
  176. package/dist/indexer/code/tree/embedding.js +53 -0
  177. package/dist/indexer/code/tree/embedding.js.map +1 -0
  178. package/dist/indexer/code/tree/embedding.test.d.ts +2 -0
  179. package/dist/indexer/code/tree/embedding.test.d.ts.map +1 -0
  180. package/dist/indexer/code/tree/embedding.test.js +57 -0
  181. package/dist/indexer/code/tree/embedding.test.js.map +1 -0
  182. package/dist/indexer/code/tree/id.d.ts +3 -0
  183. package/dist/indexer/code/tree/id.d.ts.map +1 -0
  184. package/dist/indexer/code/tree/id.js +8 -0
  185. package/dist/indexer/code/tree/id.js.map +1 -0
  186. package/dist/indexer/code/tree/index.d.ts +113 -0
  187. package/dist/indexer/code/tree/index.d.ts.map +1 -0
  188. package/dist/indexer/code/tree/index.js +1146 -0
  189. package/dist/indexer/code/tree/index.js.map +1 -0
  190. package/dist/indexer/code/tree/rename.d.ts +13 -0
  191. package/dist/indexer/code/tree/rename.d.ts.map +1 -0
  192. package/dist/indexer/code/tree/rename.js +46 -0
  193. package/dist/indexer/code/tree/rename.js.map +1 -0
  194. package/dist/indexer/code/tree/repomap.d.ts +29 -0
  195. package/dist/indexer/code/tree/repomap.d.ts.map +1 -0
  196. package/dist/indexer/code/tree/repomap.js +95 -0
  197. package/dist/indexer/code/tree/repomap.js.map +1 -0
  198. package/dist/indexer/code/tree/repomap.test.d.ts +2 -0
  199. package/dist/indexer/code/tree/repomap.test.d.ts.map +1 -0
  200. package/dist/indexer/code/tree/repomap.test.js +93 -0
  201. package/dist/indexer/code/tree/repomap.test.js.map +1 -0
  202. package/dist/indexer/code/tree/stats.d.ts +26 -0
  203. package/dist/indexer/code/tree/stats.d.ts.map +1 -0
  204. package/dist/indexer/code/tree/stats.js +49 -0
  205. package/dist/indexer/code/tree/stats.js.map +1 -0
  206. package/dist/indexer/code/tree/types.d.ts +186 -0
  207. package/dist/indexer/code/tree/types.d.ts.map +1 -0
  208. package/dist/indexer/code/tree/types.js +10 -0
  209. package/dist/indexer/code/tree/types.js.map +1 -0
  210. package/dist/indexer/code/wal.d.ts +144 -0
  211. package/dist/indexer/code/wal.d.ts.map +1 -0
  212. package/dist/indexer/code/wal.js +283 -0
  213. package/dist/indexer/code/wal.js.map +1 -0
  214. package/dist/indexer/embeddings.d.ts +113 -0
  215. package/dist/indexer/embeddings.d.ts.map +1 -0
  216. package/dist/indexer/embeddings.js +477 -0
  217. package/dist/indexer/embeddings.js.map +1 -0
  218. package/dist/indexer/git-sync.d.ts +117 -0
  219. package/dist/indexer/git-sync.d.ts.map +1 -0
  220. package/dist/indexer/git-sync.js +398 -0
  221. package/dist/indexer/git-sync.js.map +1 -0
  222. package/dist/indexer/index.d.ts +175 -0
  223. package/dist/indexer/index.d.ts.map +1 -0
  224. package/dist/indexer/index.js +1096 -0
  225. package/dist/indexer/index.js.map +1 -0
  226. package/dist/indexer/mocks/mock-reranker.d.ts +12 -0
  227. package/dist/indexer/mocks/mock-reranker.d.ts.map +1 -0
  228. package/dist/indexer/mocks/mock-reranker.js +26 -0
  229. package/dist/indexer/mocks/mock-reranker.js.map +1 -0
  230. package/dist/indexer/parser.d.ts +8 -0
  231. package/dist/indexer/parser.d.ts.map +1 -0
  232. package/dist/indexer/parser.js +44 -0
  233. package/dist/indexer/parser.js.map +1 -0
  234. package/dist/indexer/parser.test.d.ts +2 -0
  235. package/dist/indexer/parser.test.d.ts.map +1 -0
  236. package/dist/indexer/parser.test.js +197 -0
  237. package/dist/indexer/parser.test.js.map +1 -0
  238. package/dist/indexer/reranking.d.ts +71 -0
  239. package/dist/indexer/reranking.d.ts.map +1 -0
  240. package/dist/indexer/reranking.integration.test.d.ts +2 -0
  241. package/dist/indexer/reranking.integration.test.d.ts.map +1 -0
  242. package/dist/indexer/reranking.integration.test.js +104 -0
  243. package/dist/indexer/reranking.integration.test.js.map +1 -0
  244. package/dist/indexer/reranking.js +256 -0
  245. package/dist/indexer/reranking.js.map +1 -0
  246. package/dist/indexer/reranking.test.d.ts +2 -0
  247. package/dist/indexer/reranking.test.d.ts.map +1 -0
  248. package/dist/indexer/reranking.test.js +130 -0
  249. package/dist/indexer/reranking.test.js.map +1 -0
  250. package/dist/indexer/wal/file-storage.d.ts +60 -0
  251. package/dist/indexer/wal/file-storage.d.ts.map +1 -0
  252. package/dist/indexer/wal/file-storage.js +277 -0
  253. package/dist/indexer/wal/file-storage.js.map +1 -0
  254. package/dist/indexer/wal/file-storage.test.d.ts +8 -0
  255. package/dist/indexer/wal/file-storage.test.d.ts.map +1 -0
  256. package/dist/indexer/wal/file-storage.test.js +444 -0
  257. package/dist/indexer/wal/file-storage.test.js.map +1 -0
  258. package/dist/indexer/wal/index.d.ts +41 -0
  259. package/dist/indexer/wal/index.d.ts.map +1 -0
  260. package/dist/indexer/wal/index.js +61 -0
  261. package/dist/indexer/wal/index.js.map +1 -0
  262. package/dist/indexer/wal/integration.test.d.ts +11 -0
  263. package/dist/indexer/wal/integration.test.d.ts.map +1 -0
  264. package/dist/indexer/wal/integration.test.js +378 -0
  265. package/dist/indexer/wal/integration.test.js.map +1 -0
  266. package/dist/indexer/wal/lancedb-storage.d.ts +72 -0
  267. package/dist/indexer/wal/lancedb-storage.d.ts.map +1 -0
  268. package/dist/indexer/wal/lancedb-storage.js +462 -0
  269. package/dist/indexer/wal/lancedb-storage.js.map +1 -0
  270. package/dist/indexer/wal/lancedb-storage.test.d.ts +8 -0
  271. package/dist/indexer/wal/lancedb-storage.test.d.ts.map +1 -0
  272. package/dist/indexer/wal/lancedb-storage.test.js +415 -0
  273. package/dist/indexer/wal/lancedb-storage.test.js.map +1 -0
  274. package/dist/indexer/wal/sync-wal.d.ts +144 -0
  275. package/dist/indexer/wal/sync-wal.d.ts.map +1 -0
  276. package/dist/indexer/wal/sync-wal.js +863 -0
  277. package/dist/indexer/wal/sync-wal.js.map +1 -0
  278. package/dist/indexer/wal/sync-wal.test.d.ts +8 -0
  279. package/dist/indexer/wal/sync-wal.test.d.ts.map +1 -0
  280. package/dist/indexer/wal/sync-wal.test.js +752 -0
  281. package/dist/indexer/wal/sync-wal.test.js.map +1 -0
  282. package/dist/indexer/wal/types.d.ts +167 -0
  283. package/dist/indexer/wal/types.d.ts.map +1 -0
  284. package/dist/indexer/wal/types.js +12 -0
  285. package/dist/indexer/wal/types.js.map +1 -0
  286. package/dist/indexer/watcher.d.ts +36 -0
  287. package/dist/indexer/watcher.d.ts.map +1 -0
  288. package/dist/indexer/watcher.js +110 -0
  289. package/dist/indexer/watcher.js.map +1 -0
  290. package/dist/search/explore.d.ts +62 -0
  291. package/dist/search/explore.d.ts.map +1 -0
  292. package/dist/search/explore.js +111 -0
  293. package/dist/search/explore.js.map +1 -0
  294. package/dist/search/fts.d.ts +23 -0
  295. package/dist/search/fts.d.ts.map +1 -0
  296. package/dist/search/fts.js +64 -0
  297. package/dist/search/fts.js.map +1 -0
  298. package/dist/search/fts.test.d.ts +2 -0
  299. package/dist/search/fts.test.d.ts.map +1 -0
  300. package/dist/search/fts.test.js +27 -0
  301. package/dist/search/fts.test.js.map +1 -0
  302. package/dist/search/grep.d.ts +75 -0
  303. package/dist/search/grep.d.ts.map +1 -0
  304. package/dist/search/grep.js +96 -0
  305. package/dist/search/grep.js.map +1 -0
  306. package/dist/search/grep.test.d.ts +2 -0
  307. package/dist/search/grep.test.d.ts.map +1 -0
  308. package/dist/search/grep.test.js +178 -0
  309. package/dist/search/grep.test.js.map +1 -0
  310. package/dist/search/hybrid-grep.d.ts +43 -0
  311. package/dist/search/hybrid-grep.d.ts.map +1 -0
  312. package/dist/search/hybrid-grep.js +130 -0
  313. package/dist/search/hybrid-grep.js.map +1 -0
  314. package/dist/search/hybrid-grep.test.d.ts +2 -0
  315. package/dist/search/hybrid-grep.test.d.ts.map +1 -0
  316. package/dist/search/hybrid-grep.test.js +133 -0
  317. package/dist/search/hybrid-grep.test.js.map +1 -0
  318. package/dist/search/rg-executor.d.ts +63 -0
  319. package/dist/search/rg-executor.d.ts.map +1 -0
  320. package/dist/search/rg-executor.js +146 -0
  321. package/dist/search/rg-executor.js.map +1 -0
  322. package/dist/search/rg-executor.test.d.ts +2 -0
  323. package/dist/search/rg-executor.test.d.ts.map +1 -0
  324. package/dist/search/rg-executor.test.js +104 -0
  325. package/dist/search/rg-executor.test.js.map +1 -0
  326. package/dist/search/rg-parser/extractor.d.ts +14 -0
  327. package/dist/search/rg-parser/extractor.d.ts.map +1 -0
  328. package/dist/search/rg-parser/extractor.js +82 -0
  329. package/dist/search/rg-parser/extractor.js.map +1 -0
  330. package/dist/search/rg-parser/extractor.test.d.ts +2 -0
  331. package/dist/search/rg-parser/extractor.test.d.ts.map +1 -0
  332. package/dist/search/rg-parser/extractor.test.js +35 -0
  333. package/dist/search/rg-parser/extractor.test.js.map +1 -0
  334. package/dist/search/rg-parser/fts-builder.d.ts +7 -0
  335. package/dist/search/rg-parser/fts-builder.d.ts.map +1 -0
  336. package/dist/search/rg-parser/fts-builder.js +18 -0
  337. package/dist/search/rg-parser/fts-builder.js.map +1 -0
  338. package/dist/search/rg-parser/fts-builder.test.d.ts +2 -0
  339. package/dist/search/rg-parser/fts-builder.test.d.ts.map +1 -0
  340. package/dist/search/rg-parser/fts-builder.test.js +26 -0
  341. package/dist/search/rg-parser/fts-builder.test.js.map +1 -0
  342. package/dist/search/rg-parser/index.d.ts +36 -0
  343. package/dist/search/rg-parser/index.d.ts.map +1 -0
  344. package/dist/search/rg-parser/index.js +83 -0
  345. package/dist/search/rg-parser/index.js.map +1 -0
  346. package/dist/search/rg-parser/index.test.d.ts +2 -0
  347. package/dist/search/rg-parser/index.test.d.ts.map +1 -0
  348. package/dist/search/rg-parser/index.test.js +34 -0
  349. package/dist/search/rg-parser/index.test.js.map +1 -0
  350. package/dist/search/rg-parser/strategy.d.ts +14 -0
  351. package/dist/search/rg-parser/strategy.d.ts.map +1 -0
  352. package/dist/search/rg-parser/strategy.js +31 -0
  353. package/dist/search/rg-parser/strategy.js.map +1 -0
  354. package/dist/search/rg-parser/strategy.test.d.ts +2 -0
  355. package/dist/search/rg-parser/strategy.test.d.ts.map +1 -0
  356. package/dist/search/rg-parser/strategy.test.js +29 -0
  357. package/dist/search/rg-parser/strategy.test.js.map +1 -0
  358. package/dist/types.d.ts +345 -0
  359. package/dist/types.d.ts.map +1 -0
  360. package/dist/types.js +7 -0
  361. package/dist/types.js.map +1 -0
  362. package/dist/utils/vault.d.ts +84 -0
  363. package/dist/utils/vault.d.ts.map +1 -0
  364. package/dist/utils/vault.js +138 -0
  365. package/dist/utils/vault.js.map +1 -0
  366. package/dist/utils/vault.test.d.ts +2 -0
  367. package/dist/utils/vault.test.d.ts.map +1 -0
  368. package/dist/utils/vault.test.js +153 -0
  369. package/dist/utils/vault.test.js.map +1 -0
  370. package/package.json +69 -0
@@ -0,0 +1,241 @@
1
+ /**
2
+ * CodeBranchIndexer Tests
3
+ *
4
+ * Tests for branch-aware code indexing with overlay support.
5
+ */
6
+ import { describe, it, expect, beforeEach, afterEach, vi } from 'vitest';
7
+ import * as fs from 'node:fs/promises';
8
+ import * as path from 'node:path';
9
+ import * as os from 'node:os';
10
+ import { execSync } from 'node:child_process';
11
+ import { CodeBranchIndexer } from './branch.js';
12
+ import { CodeIndexer } from './index.js';
13
+ import { DEFAULT_CONFIG } from '../../config/types.js';
14
+ import { sanitizeBranchName } from '../../git.js';
15
+ // Mock embedding provider
16
+ function createMockEmbeddingProvider() {
17
+ return {
18
+ initialize: vi.fn().mockResolvedValue(undefined),
19
+ getEmbedding: vi.fn().mockResolvedValue(new Array(768).fill(0)),
20
+ getEmbeddingsBatch: vi.fn().mockResolvedValue([new Array(768).fill(0)]),
21
+ getModelName: vi.fn().mockReturnValue('mock-model'),
22
+ getDimensions: vi.fn().mockReturnValue(768),
23
+ };
24
+ }
25
+ // Default configs
26
+ const embeddingConfig = {
27
+ ...DEFAULT_CONFIG.embedding,
28
+ provider: 'wasm',
29
+ model: 'test',
30
+ dimensions: 768,
31
+ };
32
+ const codeConfig = {
33
+ ...DEFAULT_CONFIG.code,
34
+ enabled: true,
35
+ include: ['**/*.ts'],
36
+ exclude: ['**/node_modules/**'],
37
+ };
38
+ describe('CodeBranchIndexer', () => {
39
+ let tempDir;
40
+ let dbPath;
41
+ let embeddingProvider;
42
+ let codeIndexer;
43
+ let branchIndexer;
44
+ beforeEach(async () => {
45
+ tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'branch-indexer-test-'));
46
+ dbPath = path.join(tempDir, '.lancedb');
47
+ await fs.mkdir(dbPath, { recursive: true });
48
+ embeddingProvider = createMockEmbeddingProvider();
49
+ // Create a simple CodeIndexer
50
+ codeIndexer = new CodeIndexer(tempDir, dbPath, {
51
+ embeddingProvider,
52
+ embeddingConfig,
53
+ codeConfig,
54
+ codeFtsConfig: DEFAULT_CONFIG.codeFts,
55
+ });
56
+ });
57
+ afterEach(async () => {
58
+ await fs.rm(tempDir, { recursive: true, force: true });
59
+ });
60
+ // ═══════════════════════════════════════════════════════════════════════════
61
+ // NON-GIT REPOSITORY
62
+ // ═══════════════════════════════════════════════════════════════════════════
63
+ describe('Non-git repository', () => {
64
+ beforeEach(async () => {
65
+ branchIndexer = new CodeBranchIndexer(tempDir, dbPath, {
66
+ embeddingProvider,
67
+ embeddingConfig,
68
+ codeConfig,
69
+ codeIndexer,
70
+ });
71
+ });
72
+ it('initialize returns null for non-git directory', async () => {
73
+ const result = await branchIndexer.initialize();
74
+ expect(result).toBeNull();
75
+ });
76
+ it('getInfo returns default values for non-git directory', async () => {
77
+ await branchIndexer.initialize();
78
+ const info = await branchIndexer.getInfo();
79
+ expect(info.branch).toBeNull();
80
+ expect(info.isMainBranch).toBe(true);
81
+ expect(info.mainBranch).toBeNull();
82
+ });
83
+ it('syncOverlay returns empty result for non-git directory', async () => {
84
+ await branchIndexer.initialize();
85
+ const result = await branchIndexer.syncOverlay();
86
+ expect(result.indexed).toBe(0);
87
+ expect(result.deleted).toBe(0);
88
+ expect(result.errors).toEqual([]);
89
+ });
90
+ });
91
+ // ═══════════════════════════════════════════════════════════════════════════
92
+ // GIT REPOSITORY - MAIN BRANCH
93
+ // ═══════════════════════════════════════════════════════════════════════════
94
+ describe('Git repository - main branch', () => {
95
+ beforeEach(async () => {
96
+ // Initialize git repo
97
+ execSync('git init', { cwd: tempDir, stdio: 'pipe' });
98
+ execSync('git config user.email "test@test.com"', { cwd: tempDir, stdio: 'pipe' });
99
+ execSync('git config user.name "Test User"', { cwd: tempDir, stdio: 'pipe' });
100
+ // Create initial commit
101
+ await fs.writeFile(path.join(tempDir, 'index.ts'), 'export const a = 1;');
102
+ execSync('git add .', { cwd: tempDir, stdio: 'pipe' });
103
+ execSync('git commit -m "Initial commit"', { cwd: tempDir, stdio: 'pipe' });
104
+ branchIndexer = new CodeBranchIndexer(tempDir, dbPath, {
105
+ embeddingProvider,
106
+ embeddingConfig,
107
+ codeConfig,
108
+ codeIndexer,
109
+ });
110
+ });
111
+ it('initialize returns GitInfo on main branch', async () => {
112
+ const gitInfo = await branchIndexer.initialize();
113
+ expect(gitInfo).not.toBeNull();
114
+ expect(gitInfo.isMainBranch).toBe(true);
115
+ });
116
+ it('getInfo shows isMainBranch=true on main', async () => {
117
+ await branchIndexer.initialize();
118
+ const info = await branchIndexer.getInfo();
119
+ expect(info.isMainBranch).toBe(true);
120
+ expect(['main', 'master']).toContain(info.branch);
121
+ });
122
+ it('syncOverlay returns empty result on main branch', async () => {
123
+ await branchIndexer.initialize();
124
+ const result = await branchIndexer.syncOverlay();
125
+ expect(result.indexed).toBe(0);
126
+ expect(result.deleted).toBe(0);
127
+ });
128
+ });
129
+ // ═══════════════════════════════════════════════════════════════════════════
130
+ // GIT REPOSITORY - FEATURE BRANCH
131
+ // ═══════════════════════════════════════════════════════════════════════════
132
+ describe('Git repository - feature branch', () => {
133
+ beforeEach(async () => {
134
+ // Initialize git repo
135
+ execSync('git init', { cwd: tempDir, stdio: 'pipe' });
136
+ execSync('git config user.email "test@test.com"', { cwd: tempDir, stdio: 'pipe' });
137
+ execSync('git config user.name "Test User"', { cwd: tempDir, stdio: 'pipe' });
138
+ // Create initial commit on main
139
+ await fs.writeFile(path.join(tempDir, 'index.ts'), 'export const a = 1;');
140
+ await fs.writeFile(path.join(tempDir, 'utils.ts'), 'export const b = 2;');
141
+ execSync('git add .', { cwd: tempDir, stdio: 'pipe' });
142
+ execSync('git commit -m "Initial commit"', { cwd: tempDir, stdio: 'pipe' });
143
+ // Create feature branch
144
+ execSync('git checkout -b feature/test-branch', { cwd: tempDir, stdio: 'pipe' });
145
+ branchIndexer = new CodeBranchIndexer(tempDir, dbPath, {
146
+ embeddingProvider,
147
+ embeddingConfig,
148
+ codeConfig,
149
+ codeIndexer,
150
+ });
151
+ });
152
+ it('initialize returns GitInfo on feature branch', async () => {
153
+ const gitInfo = await branchIndexer.initialize();
154
+ expect(gitInfo).not.toBeNull();
155
+ expect(gitInfo.branch).toBe('feature/test-branch');
156
+ expect(gitInfo.isMainBranch).toBe(false);
157
+ });
158
+ it('getInfo shows isMainBranch=false on feature branch', async () => {
159
+ await branchIndexer.initialize();
160
+ const info = await branchIndexer.getInfo();
161
+ expect(info.isMainBranch).toBe(false);
162
+ expect(info.branch).toBe('feature/test-branch');
163
+ });
164
+ it('creates overlay directory for feature branch', async () => {
165
+ await branchIndexer.initialize();
166
+ const overlayPath = path.join(dbPath, 'overlays', sanitizeBranchName('feature/test-branch'));
167
+ const exists = await fs.stat(overlayPath).then(() => true).catch(() => false);
168
+ expect(exists).toBe(true);
169
+ });
170
+ it('clearOverlay removes overlay directory', async () => {
171
+ await branchIndexer.initialize();
172
+ await branchIndexer.clearOverlay();
173
+ const overlayPath = path.join(dbPath, 'overlays', sanitizeBranchName('feature/test-branch'));
174
+ const exists = await fs.stat(overlayPath).then(() => true).catch(() => false);
175
+ expect(exists).toBe(false);
176
+ });
177
+ });
178
+ // ═══════════════════════════════════════════════════════════════════════════
179
+ // OVERLAY CLEANUP
180
+ // ═══════════════════════════════════════════════════════════════════════════
181
+ describe('Overlay cleanup', () => {
182
+ beforeEach(async () => {
183
+ // Initialize git repo
184
+ execSync('git init', { cwd: tempDir, stdio: 'pipe' });
185
+ execSync('git config user.email "test@test.com"', { cwd: tempDir, stdio: 'pipe' });
186
+ execSync('git config user.name "Test User"', { cwd: tempDir, stdio: 'pipe' });
187
+ // Create initial commit
188
+ await fs.writeFile(path.join(tempDir, 'index.ts'), 'export const a = 1;');
189
+ execSync('git add .', { cwd: tempDir, stdio: 'pipe' });
190
+ execSync('git commit -m "Initial commit"', { cwd: tempDir, stdio: 'pipe' });
191
+ branchIndexer = new CodeBranchIndexer(tempDir, dbPath, {
192
+ embeddingProvider,
193
+ embeddingConfig,
194
+ codeConfig,
195
+ codeIndexer,
196
+ });
197
+ });
198
+ it('cleanupOverlay removes specific branch overlay', async () => {
199
+ // Create overlay directory manually
200
+ const overlayPath = path.join(dbPath, 'overlays', 'test-branch');
201
+ await fs.mkdir(overlayPath, { recursive: true });
202
+ await fs.writeFile(path.join(overlayPath, 'test.txt'), 'test');
203
+ await branchIndexer.cleanupOverlay('test-branch');
204
+ const exists = await fs.stat(overlayPath).then(() => true).catch(() => false);
205
+ expect(exists).toBe(false);
206
+ });
207
+ it('cleanupStaleOverlays removes overlays for deleted branches', async () => {
208
+ // Create overlay for non-existent branch
209
+ const staleOverlayPath = path.join(dbPath, 'overlays', 'deleted-branch');
210
+ await fs.mkdir(staleOverlayPath, { recursive: true });
211
+ await fs.writeFile(path.join(staleOverlayPath, 'test.txt'), 'test');
212
+ // Create overlay for existing branch (main)
213
+ const mainBranch = execSync('git branch --show-current', {
214
+ cwd: tempDir,
215
+ encoding: 'utf-8',
216
+ stdio: ['pipe', 'pipe', 'pipe'],
217
+ }).trim();
218
+ const mainOverlayPath = path.join(dbPath, 'overlays', sanitizeBranchName(mainBranch));
219
+ await fs.mkdir(mainOverlayPath, { recursive: true });
220
+ const cleaned = await branchIndexer.cleanupStaleOverlays();
221
+ expect(cleaned).toBe(1);
222
+ // Stale should be removed
223
+ const staleExists = await fs.stat(staleOverlayPath).then(() => true).catch(() => false);
224
+ expect(staleExists).toBe(false);
225
+ // Existing branch overlay should remain
226
+ const mainExists = await fs.stat(mainOverlayPath).then(() => true).catch(() => false);
227
+ expect(mainExists).toBe(true);
228
+ });
229
+ });
230
+ // ═══════════════════════════════════════════════════════════════════════════
231
+ // BRANCH NAME SANITIZATION
232
+ // ═══════════════════════════════════════════════════════════════════════════
233
+ describe('Branch name sanitization', () => {
234
+ it('sanitizes branch names for overlay paths', () => {
235
+ expect(sanitizeBranchName('feature/my-feature')).toBe('feature-my-feature');
236
+ expect(sanitizeBranchName('bugfix/JIRA-123')).toBe('bugfix-JIRA-123');
237
+ expect(sanitizeBranchName('user@branch')).toBe('user-branch');
238
+ });
239
+ });
240
+ });
241
+ //# sourceMappingURL=branch.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"branch.test.js","sourceRoot":"","sources":["../../../src/indexer/code/branch.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,61 @@
1
+ import type { CodeChunk, CodeSymbolType } from '../../types.js';
2
+ import type { ExtractedSymbol } from './parser.js';
3
+ /**
4
+ * Smart truncation that tries to cut at semantic boundaries.
5
+ */
6
+ export declare function smartTruncate(content: string, maxChars: number): string;
7
+ /**
8
+ * Generate a unique chunk ID.
9
+ */
10
+ export declare function generateCodeChunkId(path: string, scope: string[], symbolName: string, startLine: number, kind?: CodeSymbolType, discriminator?: string): string;
11
+ /**
12
+ * Generate content hash for change detection.
13
+ */
14
+ export declare function generateContentHash(content: string): string;
15
+ /**
16
+ * Build embedding text for a code chunk.
17
+ */
18
+ export declare function buildEmbeddingText(chunk: CodeChunk): string;
19
+ /**
20
+ * Extract signature from a function/method/class node.
21
+ */
22
+ export declare function extractSignature(content: string): string | null;
23
+ /**
24
+ * Extract comment that precedes a symbol (JSDoc or line comments).
25
+ */
26
+ export declare function extractDocstring(fileContent: string, startLine: number): string | null;
27
+ export interface ChunkingOptions {
28
+ minLines: number;
29
+ maxLines: number;
30
+ includeFileChunks: boolean;
31
+ extractComments: boolean;
32
+ maxContentChars: number;
33
+ }
34
+ /**
35
+ * Heuristic: if at least two common license markers exist, treat as a license header.
36
+ */
37
+ export declare function isLicenseComment(text: string): boolean;
38
+ /**
39
+ * Remove block comment markers and normalize leading stars.
40
+ */
41
+ export declare function cleanBlockComment(comment: string): string;
42
+ /**
43
+ * Extract top-of-file context comment:
44
+ * - scans leading block comments
45
+ * - skips license-like headers
46
+ * - tolerates shebangs, line-comment directives, and string directives before comment
47
+ */
48
+ export declare function extractFileContext(content: string): string | null;
49
+ /**
50
+ * Convert extracted symbols to code chunks.
51
+ */
52
+ export declare function symbolsToChunks(symbols: ExtractedSymbol[], filePath: string, fileContent: string, language: string, modified: number, options?: Partial<ChunkingOptions>): CodeChunk[];
53
+ /**
54
+ * Recompute deterministic IDs with overload discriminator support.
55
+ */
56
+ export declare function applyStableChunkIds(chunks: CodeChunk[]): void;
57
+ /**
58
+ * Create a file-level chunk representing the whole file.
59
+ */
60
+ export declare function createFileChunk(filePath: string, fileContent: string, language: string, modified: number, maxLines?: number): CodeChunk;
61
+ //# sourceMappingURL=chunker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunker.d.ts","sourceRoot":"","sources":["../../../src/indexer/code/chunker.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAGnD;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAevE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,MAAM,EAAE,EACf,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,MAAM,EACjB,IAAI,GAAE,cAA2B,EACjC,aAAa,GAAE,MAAY,GAC1B,MAAM,CAGR;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE3D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,SAAS,GAAG,MAAM,CAoB3D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAa/D;AAED;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,MAAM,GAAG,IAAI,CAuDf;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;CACzB;AAgCD;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAGtD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CASzD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAyDjE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,eAAe,EAAE,EAC1B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,OAAO,CAAC,eAAe,CAAM,GACrC,SAAS,EAAE,CAyCb;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,IAAI,CAyB7D;AAED;;GAEG;AACH,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,EAChB,QAAQ,GAAE,MAAY,GACrB,SAAS,CAqBX"}
@@ -0,0 +1,311 @@
1
+ // Code chunking utilities
2
+ import { createHash } from 'crypto';
3
+ /**
4
+ * Smart truncation that tries to cut at semantic boundaries.
5
+ */
6
+ export function smartTruncate(content, maxChars) {
7
+ if (content.length <= maxChars)
8
+ return content;
9
+ const cutPoint = content.slice(0, maxChars).lastIndexOf(';');
10
+ if (cutPoint > maxChars * 0.6) {
11
+ return content.slice(0, cutPoint + 1);
12
+ }
13
+ const lineBreak = content.slice(0, maxChars).lastIndexOf('\n');
14
+ if (lineBreak > maxChars * 0.5) {
15
+ return content.slice(0, lineBreak);
16
+ }
17
+ const wordBreak = content.slice(0, maxChars).lastIndexOf(' ');
18
+ return content.slice(0, wordBreak > 0 ? wordBreak : maxChars) + '...';
19
+ }
20
+ /**
21
+ * Generate a unique chunk ID.
22
+ */
23
+ export function generateCodeChunkId(path, scope, symbolName, startLine, kind = 'variable', discriminator = '0') {
24
+ const input = `${path}#${scope.join('.')}#${symbolName}#${kind}#${discriminator}#${startLine}`;
25
+ return createHash('sha256').update(input).digest('hex');
26
+ }
27
+ /**
28
+ * Generate content hash for change detection.
29
+ */
30
+ export function generateContentHash(content) {
31
+ return createHash('sha256').update(content).digest('hex').slice(0, 16);
32
+ }
33
+ /**
34
+ * Build embedding text for a code chunk.
35
+ */
36
+ export function buildEmbeddingText(chunk) {
37
+ const parts = [];
38
+ parts.push(`${chunk.symbolType}: ${chunk.symbolName}`);
39
+ if (chunk.signature) {
40
+ parts.push(chunk.signature);
41
+ }
42
+ if (chunk.docstring) {
43
+ parts.push(chunk.docstring);
44
+ }
45
+ if (chunk.scope.length > 0) {
46
+ parts.push(`in ${chunk.scope.join('.')}`);
47
+ }
48
+ parts.push(smartTruncate(chunk.content, 500));
49
+ return parts.join('\n');
50
+ }
51
+ /**
52
+ * Extract signature from a function/method/class node.
53
+ */
54
+ export function extractSignature(content) {
55
+ const braceIndex = content.indexOf('{');
56
+ if (braceIndex === -1) {
57
+ const arrowIndex = content.indexOf('=>');
58
+ if (arrowIndex !== -1) {
59
+ const signature = content.slice(0, arrowIndex + 2).trim();
60
+ return signature.length > 0 ? signature : null;
61
+ }
62
+ return null;
63
+ }
64
+ const signature = content.slice(0, braceIndex).trim();
65
+ return signature.length > 0 ? signature : null;
66
+ }
67
+ /**
68
+ * Extract comment that precedes a symbol (JSDoc or line comments).
69
+ */
70
+ export function extractDocstring(fileContent, startLine) {
71
+ const lines = fileContent.split('\n');
72
+ let docEnd = startLine - 2;
73
+ if (docEnd < 0)
74
+ return null;
75
+ while (docEnd >= 0 && lines[docEnd].trim() === '') {
76
+ docEnd--;
77
+ }
78
+ if (docEnd < 0)
79
+ return null;
80
+ const lastLine = lines[docEnd].trim();
81
+ if (lastLine.startsWith('//')) {
82
+ let commentStart = docEnd;
83
+ while (commentStart >= 0 && lines[commentStart].trim().startsWith('//')) {
84
+ commentStart--;
85
+ }
86
+ const cleaned = lines
87
+ .slice(commentStart + 1, docEnd + 1)
88
+ .map((line) => line.trim().replace(/^\/\/\/?\s?/, ''))
89
+ .filter((line) => line.length > 0)
90
+ .join('\n');
91
+ return cleaned.length > 0 ? cleaned : null;
92
+ }
93
+ if (!lastLine.endsWith('*/'))
94
+ return null;
95
+ let docStart = docEnd;
96
+ while (docStart >= 0) {
97
+ const line = lines[docStart].trim();
98
+ if (line.startsWith('/**')) {
99
+ break;
100
+ }
101
+ if (line.startsWith('/*') && !line.startsWith('/**')) {
102
+ return null;
103
+ }
104
+ docStart--;
105
+ }
106
+ if (docStart < 0)
107
+ return null;
108
+ const docLines = lines.slice(docStart, docEnd + 1);
109
+ const cleaned = docLines
110
+ .map((line) => {
111
+ const trimmed = line.trim();
112
+ return trimmed
113
+ .replace(/^\/\*\*\s*/, '')
114
+ .replace(/^\*\/\s*$/, '')
115
+ .replace(/^\*\s?/, '');
116
+ })
117
+ .filter((line) => line.length > 0)
118
+ .join('\n');
119
+ return cleaned.length > 0 ? cleaned : null;
120
+ }
121
+ const DEFAULT_OPTIONS = {
122
+ minLines: 3,
123
+ maxLines: 100,
124
+ includeFileChunks: true,
125
+ extractComments: true,
126
+ maxContentChars: 500,
127
+ };
128
+ const LICENSE_PATTERNS = [
129
+ /\bMIT\b/i,
130
+ /\bApache\b/i,
131
+ /\bGPL\b/i,
132
+ /\bBSD\b/i,
133
+ /\bISC\b/i,
134
+ /\bMozilla\b/i,
135
+ /\bLGPL\b/i,
136
+ /\bLICEN[CS]E\b/i,
137
+ /\bCopyright\b/i,
138
+ /\(c\)\s*\d{4}/i,
139
+ /©/,
140
+ /All rights reserved/i,
141
+ /Permission is hereby granted/i,
142
+ /SPDX-License-Identifier/i,
143
+ /under the terms of/i,
144
+ /WITHOUT WARRANTY/i,
145
+ /PROVIDED "AS IS"/i,
146
+ ];
147
+ const FILE_CONTEXT_MAX_CHARS = 1000;
148
+ /**
149
+ * Heuristic: if at least two common license markers exist, treat as a license header.
150
+ */
151
+ export function isLicenseComment(text) {
152
+ const matches = LICENSE_PATTERNS.filter((pattern) => pattern.test(text));
153
+ return matches.length >= 2;
154
+ }
155
+ /**
156
+ * Remove block comment markers and normalize leading stars.
157
+ */
158
+ export function cleanBlockComment(comment) {
159
+ return comment
160
+ .replace(/^\/\*+!?\s*/, '')
161
+ .replace(/\s*\*\/$/, '')
162
+ .split('\n')
163
+ .map((line) => line.trim().replace(/^\*\s?/, ''))
164
+ .filter((line) => line.length > 0)
165
+ .join('\n')
166
+ .trim();
167
+ }
168
+ /**
169
+ * Extract top-of-file context comment:
170
+ * - scans leading block comments
171
+ * - skips license-like headers
172
+ * - tolerates shebangs, line-comment directives, and string directives before comment
173
+ */
174
+ export function extractFileContext(content) {
175
+ let cursor = 0;
176
+ const text = content.startsWith('\uFEFF') ? content.slice(1) : content;
177
+ while (cursor < text.length) {
178
+ while (cursor < text.length && /\s/.test(text[cursor])) {
179
+ cursor++;
180
+ }
181
+ if (cursor >= text.length)
182
+ break;
183
+ if (text.startsWith('#!', cursor)) {
184
+ const nextLine = text.indexOf('\n', cursor);
185
+ if (nextLine === -1)
186
+ return null;
187
+ cursor = nextLine + 1;
188
+ continue;
189
+ }
190
+ if (text.startsWith('//', cursor)) {
191
+ const nextLine = text.indexOf('\n', cursor);
192
+ if (nextLine === -1)
193
+ return null;
194
+ cursor = nextLine + 1;
195
+ continue;
196
+ }
197
+ const directive = text.slice(cursor).match(/^(['"])[A-Za-z0-9 _-]+\1\s*;?/);
198
+ if (directive) {
199
+ cursor += directive[0].length;
200
+ const nextLine = text.indexOf('\n', cursor);
201
+ if (nextLine === -1)
202
+ return null;
203
+ cursor = nextLine + 1;
204
+ continue;
205
+ }
206
+ if (text.startsWith('/*', cursor)) {
207
+ const end = text.indexOf('*/', cursor + 2);
208
+ if (end === -1)
209
+ return null;
210
+ const rawComment = text.slice(cursor, end + 2);
211
+ cursor = end + 2;
212
+ if (isLicenseComment(rawComment)) {
213
+ continue;
214
+ }
215
+ const cleaned = cleanBlockComment(rawComment);
216
+ if (cleaned.length === 0) {
217
+ continue;
218
+ }
219
+ return cleaned.length > FILE_CONTEXT_MAX_CHARS
220
+ ? `${cleaned.slice(0, FILE_CONTEXT_MAX_CHARS).trim()}...`
221
+ : cleaned;
222
+ }
223
+ break;
224
+ }
225
+ return null;
226
+ }
227
+ /**
228
+ * Convert extracted symbols to code chunks.
229
+ */
230
+ export function symbolsToChunks(symbols, filePath, fileContent, language, modified, options = {}) {
231
+ const opts = { ...DEFAULT_OPTIONS, ...options };
232
+ const chunks = [];
233
+ const lines = fileContent.split('\n');
234
+ for (const symbol of symbols) {
235
+ const lineCount = symbol.endLine - symbol.startLine + 1;
236
+ if (lineCount < opts.minLines)
237
+ continue;
238
+ const startIdx = symbol.startLine - 1;
239
+ const endIdx = Math.min(symbol.endLine, startIdx + opts.maxLines);
240
+ const content = lines.slice(startIdx, endIdx).join('\n');
241
+ const signature = extractSignature(content);
242
+ const docstring = extractDocstring(fileContent, symbol.startLine);
243
+ const parentSymbol = null;
244
+ const scope = [];
245
+ const chunk = {
246
+ // Discriminator is assigned later by applyStableChunkIds once scope is finalized.
247
+ id: generateCodeChunkId(filePath, scope, symbol.name, symbol.startLine, symbol.type, '0'),
248
+ path: filePath,
249
+ language,
250
+ symbolType: symbol.type,
251
+ symbolName: symbol.name,
252
+ signature,
253
+ parentSymbol,
254
+ scope,
255
+ content,
256
+ startLine: symbol.startLine,
257
+ endLine: symbol.endLine,
258
+ docstring,
259
+ modified,
260
+ contentHash: generateContentHash(content),
261
+ };
262
+ chunks.push(chunk);
263
+ }
264
+ return chunks;
265
+ }
266
+ /**
267
+ * Recompute deterministic IDs with overload discriminator support.
268
+ */
269
+ export function applyStableChunkIds(chunks) {
270
+ const groups = new Map();
271
+ for (const chunk of chunks) {
272
+ if (chunk.symbolType === 'file')
273
+ continue;
274
+ const key = `${chunk.symbolName}#${chunk.symbolType}#${chunk.scope.join('.')}`;
275
+ const arr = groups.get(key) ?? [];
276
+ arr.push(chunk);
277
+ groups.set(key, arr);
278
+ }
279
+ for (const [, group] of groups) {
280
+ group.sort((a, b) => a.startLine - b.startLine);
281
+ for (let i = 0; i < group.length; i++) {
282
+ const chunk = group[i];
283
+ chunk.id = generateCodeChunkId(chunk.path, chunk.scope, chunk.symbolName, chunk.startLine, chunk.symbolType, String(i));
284
+ }
285
+ }
286
+ }
287
+ /**
288
+ * Create a file-level chunk representing the whole file.
289
+ */
290
+ export function createFileChunk(filePath, fileContent, language, modified, maxLines = 500) {
291
+ const lines = fileContent.split('\n');
292
+ const content = lines.slice(0, maxLines).join('\n');
293
+ const fileContext = extractFileContext(fileContent);
294
+ return {
295
+ id: generateCodeChunkId(filePath, [], '__file__', 0, 'file', '0'),
296
+ path: filePath,
297
+ language,
298
+ symbolType: 'file',
299
+ symbolName: filePath.split('/').pop() || filePath,
300
+ signature: null,
301
+ parentSymbol: null,
302
+ scope: [],
303
+ content,
304
+ startLine: 1,
305
+ endLine: Math.min(lines.length, maxLines),
306
+ docstring: fileContext,
307
+ modified,
308
+ contentHash: generateContentHash(fileContent),
309
+ };
310
+ }
311
+ //# sourceMappingURL=chunker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chunker.js","sourceRoot":"","sources":["../../../src/indexer/code/chunker.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=chunker.test.d.ts.map