lance-context 0.1.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (237) hide show
  1. package/README.md +232 -23
  2. package/dist/__tests__/ast-chunker.test.d.ts +2 -0
  3. package/dist/__tests__/ast-chunker.test.d.ts.map +1 -0
  4. package/dist/__tests__/ast-chunker.test.js +307 -0
  5. package/dist/__tests__/ast-chunker.test.js.map +1 -0
  6. package/dist/__tests__/config.test.d.ts +2 -0
  7. package/dist/__tests__/config.test.d.ts.map +1 -0
  8. package/dist/__tests__/config.test.js +242 -0
  9. package/dist/__tests__/config.test.js.map +1 -0
  10. package/dist/__tests__/dashboard/beads.test.d.ts +2 -0
  11. package/dist/__tests__/dashboard/beads.test.d.ts.map +1 -0
  12. package/dist/__tests__/dashboard/beads.test.js +151 -0
  13. package/dist/__tests__/dashboard/beads.test.js.map +1 -0
  14. package/dist/__tests__/dashboard/index.test.d.ts +2 -0
  15. package/dist/__tests__/dashboard/index.test.d.ts.map +1 -0
  16. package/dist/__tests__/dashboard/index.test.js +116 -0
  17. package/dist/__tests__/dashboard/index.test.js.map +1 -0
  18. package/dist/__tests__/dashboard/routes.test.d.ts +2 -0
  19. package/dist/__tests__/dashboard/routes.test.d.ts.map +1 -0
  20. package/dist/__tests__/dashboard/routes.test.js +125 -0
  21. package/dist/__tests__/dashboard/routes.test.js.map +1 -0
  22. package/dist/__tests__/dashboard/server.test.d.ts +2 -0
  23. package/dist/__tests__/dashboard/server.test.d.ts.map +1 -0
  24. package/dist/__tests__/dashboard/server.test.js +75 -0
  25. package/dist/__tests__/dashboard/server.test.js.map +1 -0
  26. package/dist/__tests__/dashboard/state.test.d.ts +2 -0
  27. package/dist/__tests__/dashboard/state.test.d.ts.map +1 -0
  28. package/dist/__tests__/dashboard/state.test.js +124 -0
  29. package/dist/__tests__/dashboard/state.test.js.map +1 -0
  30. package/dist/__tests__/embeddings/factory.test.d.ts +2 -0
  31. package/dist/__tests__/embeddings/factory.test.d.ts.map +1 -0
  32. package/dist/__tests__/embeddings/factory.test.js +100 -0
  33. package/dist/__tests__/embeddings/factory.test.js.map +1 -0
  34. package/dist/__tests__/embeddings/jina.test.d.ts +2 -0
  35. package/dist/__tests__/embeddings/jina.test.d.ts.map +1 -0
  36. package/dist/__tests__/embeddings/jina.test.js +156 -0
  37. package/dist/__tests__/embeddings/jina.test.js.map +1 -0
  38. package/dist/__tests__/embeddings/ollama.test.d.ts +2 -0
  39. package/dist/__tests__/embeddings/ollama.test.d.ts.map +1 -0
  40. package/dist/__tests__/embeddings/ollama.test.js +172 -0
  41. package/dist/__tests__/embeddings/ollama.test.js.map +1 -0
  42. package/dist/__tests__/embeddings/rate-limiter.test.d.ts +2 -0
  43. package/dist/__tests__/embeddings/rate-limiter.test.d.ts.map +1 -0
  44. package/dist/__tests__/embeddings/rate-limiter.test.js +163 -0
  45. package/dist/__tests__/embeddings/rate-limiter.test.js.map +1 -0
  46. package/dist/__tests__/embeddings/retry.test.d.ts +2 -0
  47. package/dist/__tests__/embeddings/retry.test.d.ts.map +1 -0
  48. package/dist/__tests__/embeddings/retry.test.js +260 -0
  49. package/dist/__tests__/embeddings/retry.test.js.map +1 -0
  50. package/dist/__tests__/embeddings/types.test.d.ts +2 -0
  51. package/dist/__tests__/embeddings/types.test.d.ts.map +1 -0
  52. package/dist/__tests__/embeddings/types.test.js +31 -0
  53. package/dist/__tests__/embeddings/types.test.js.map +1 -0
  54. package/dist/__tests__/mocks/embedding-backend.mock.d.ts +10 -0
  55. package/dist/__tests__/mocks/embedding-backend.mock.d.ts.map +1 -0
  56. package/dist/__tests__/mocks/embedding-backend.mock.js +39 -0
  57. package/dist/__tests__/mocks/embedding-backend.mock.js.map +1 -0
  58. package/dist/__tests__/mocks/fetch.mock.d.ts +38 -0
  59. package/dist/__tests__/mocks/fetch.mock.d.ts.map +1 -0
  60. package/dist/__tests__/mocks/fetch.mock.js +74 -0
  61. package/dist/__tests__/mocks/fetch.mock.js.map +1 -0
  62. package/dist/__tests__/mocks/lancedb.mock.d.ts +38 -0
  63. package/dist/__tests__/mocks/lancedb.mock.d.ts.map +1 -0
  64. package/dist/__tests__/mocks/lancedb.mock.js +63 -0
  65. package/dist/__tests__/mocks/lancedb.mock.js.map +1 -0
  66. package/dist/__tests__/search/clustering.test.d.ts +2 -0
  67. package/dist/__tests__/search/clustering.test.d.ts.map +1 -0
  68. package/dist/__tests__/search/clustering.test.js +230 -0
  69. package/dist/__tests__/search/clustering.test.js.map +1 -0
  70. package/dist/__tests__/search/hybrid-search.test.d.ts +2 -0
  71. package/dist/__tests__/search/hybrid-search.test.d.ts.map +1 -0
  72. package/dist/__tests__/search/hybrid-search.test.js +186 -0
  73. package/dist/__tests__/search/hybrid-search.test.js.map +1 -0
  74. package/dist/__tests__/search/indexer.test.d.ts +2 -0
  75. package/dist/__tests__/search/indexer.test.d.ts.map +1 -0
  76. package/dist/__tests__/search/indexer.test.js +878 -0
  77. package/dist/__tests__/search/indexer.test.js.map +1 -0
  78. package/dist/__tests__/search/tree-sitter-chunker.test.d.ts +2 -0
  79. package/dist/__tests__/search/tree-sitter-chunker.test.d.ts.map +1 -0
  80. package/dist/__tests__/search/tree-sitter-chunker.test.js +228 -0
  81. package/dist/__tests__/search/tree-sitter-chunker.test.js.map +1 -0
  82. package/dist/__tests__/setup.d.ts +2 -0
  83. package/dist/__tests__/setup.d.ts.map +1 -0
  84. package/dist/__tests__/setup.js +11 -0
  85. package/dist/__tests__/setup.js.map +1 -0
  86. package/dist/__tests__/utils/concurrency.test.d.ts +2 -0
  87. package/dist/__tests__/utils/concurrency.test.d.ts.map +1 -0
  88. package/dist/__tests__/utils/concurrency.test.js +83 -0
  89. package/dist/__tests__/utils/concurrency.test.js.map +1 -0
  90. package/dist/__tests__/utils/errors.test.d.ts +2 -0
  91. package/dist/__tests__/utils/errors.test.d.ts.map +1 -0
  92. package/dist/__tests__/utils/errors.test.js +136 -0
  93. package/dist/__tests__/utils/errors.test.js.map +1 -0
  94. package/dist/__tests__/utils/type-guards.test.d.ts +2 -0
  95. package/dist/__tests__/utils/type-guards.test.d.ts.map +1 -0
  96. package/dist/__tests__/utils/type-guards.test.js +80 -0
  97. package/dist/__tests__/utils/type-guards.test.js.map +1 -0
  98. package/dist/__tests__/worktree/worktree-manager.test.d.ts +2 -0
  99. package/dist/__tests__/worktree/worktree-manager.test.d.ts.map +1 -0
  100. package/dist/__tests__/worktree/worktree-manager.test.js +403 -0
  101. package/dist/__tests__/worktree/worktree-manager.test.js.map +1 -0
  102. package/dist/config.d.ts +122 -0
  103. package/dist/config.d.ts.map +1 -0
  104. package/dist/config.js +508 -0
  105. package/dist/config.js.map +1 -0
  106. package/dist/dashboard/beads.d.ts +35 -0
  107. package/dist/dashboard/beads.d.ts.map +1 -0
  108. package/dist/dashboard/beads.js +102 -0
  109. package/dist/dashboard/beads.js.map +1 -0
  110. package/dist/dashboard/events.d.ts +46 -0
  111. package/dist/dashboard/events.d.ts.map +1 -0
  112. package/dist/dashboard/events.js +141 -0
  113. package/dist/dashboard/events.js.map +1 -0
  114. package/dist/dashboard/index.d.ts +67 -0
  115. package/dist/dashboard/index.d.ts.map +1 -0
  116. package/dist/dashboard/index.js +90 -0
  117. package/dist/dashboard/index.js.map +1 -0
  118. package/dist/dashboard/routes.d.ts +6 -0
  119. package/dist/dashboard/routes.d.ts.map +1 -0
  120. package/dist/dashboard/routes.js +244 -0
  121. package/dist/dashboard/routes.js.map +1 -0
  122. package/dist/dashboard/server.d.ts +27 -0
  123. package/dist/dashboard/server.d.ts.map +1 -0
  124. package/dist/dashboard/server.js +72 -0
  125. package/dist/dashboard/server.js.map +1 -0
  126. package/dist/dashboard/state.d.ts +116 -0
  127. package/dist/dashboard/state.d.ts.map +1 -0
  128. package/dist/dashboard/state.js +251 -0
  129. package/dist/dashboard/state.js.map +1 -0
  130. package/dist/dashboard/ui.d.ts +6 -0
  131. package/dist/dashboard/ui.d.ts.map +1 -0
  132. package/dist/dashboard/ui.js +1407 -0
  133. package/dist/dashboard/ui.js.map +1 -0
  134. package/dist/embeddings/index.d.ts +20 -2
  135. package/dist/embeddings/index.d.ts.map +1 -1
  136. package/dist/embeddings/index.js +49 -6
  137. package/dist/embeddings/index.js.map +1 -1
  138. package/dist/embeddings/jina.d.ts +9 -0
  139. package/dist/embeddings/jina.d.ts.map +1 -1
  140. package/dist/embeddings/jina.js +42 -2
  141. package/dist/embeddings/jina.js.map +1 -1
  142. package/dist/embeddings/ollama.d.ts +2 -0
  143. package/dist/embeddings/ollama.d.ts.map +1 -1
  144. package/dist/embeddings/ollama.js +21 -5
  145. package/dist/embeddings/ollama.js.map +1 -1
  146. package/dist/embeddings/rate-limiter.d.ts +75 -0
  147. package/dist/embeddings/rate-limiter.d.ts.map +1 -0
  148. package/dist/embeddings/rate-limiter.js +145 -0
  149. package/dist/embeddings/rate-limiter.js.map +1 -0
  150. package/dist/embeddings/retry.d.ts +14 -0
  151. package/dist/embeddings/retry.d.ts.map +1 -0
  152. package/dist/embeddings/retry.js +89 -0
  153. package/dist/embeddings/retry.js.map +1 -0
  154. package/dist/embeddings/types.d.ts +56 -2
  155. package/dist/embeddings/types.d.ts.map +1 -1
  156. package/dist/embeddings/types.js +16 -0
  157. package/dist/embeddings/types.js.map +1 -1
  158. package/dist/index.js +1870 -44
  159. package/dist/index.js.map +1 -1
  160. package/dist/memory/index.d.ts +63 -0
  161. package/dist/memory/index.d.ts.map +1 -0
  162. package/dist/memory/index.js +168 -0
  163. package/dist/memory/index.js.map +1 -0
  164. package/dist/search/ast-chunker.d.ts +34 -0
  165. package/dist/search/ast-chunker.d.ts.map +1 -0
  166. package/dist/search/ast-chunker.js +261 -0
  167. package/dist/search/ast-chunker.js.map +1 -0
  168. package/dist/search/clustering.d.ts +77 -0
  169. package/dist/search/clustering.d.ts.map +1 -0
  170. package/dist/search/clustering.js +455 -0
  171. package/dist/search/clustering.js.map +1 -0
  172. package/dist/search/indexer.d.ts +239 -3
  173. package/dist/search/indexer.d.ts.map +1 -1
  174. package/dist/search/indexer.js +941 -45
  175. package/dist/search/indexer.js.map +1 -1
  176. package/dist/search/tree-sitter-chunker.d.ts +69 -0
  177. package/dist/search/tree-sitter-chunker.d.ts.map +1 -0
  178. package/dist/search/tree-sitter-chunker.js +436 -0
  179. package/dist/search/tree-sitter-chunker.js.map +1 -0
  180. package/dist/symbols/index.d.ts +14 -0
  181. package/dist/symbols/index.d.ts.map +1 -0
  182. package/dist/symbols/index.js +19 -0
  183. package/dist/symbols/index.js.map +1 -0
  184. package/dist/symbols/name-path.d.ts +113 -0
  185. package/dist/symbols/name-path.d.ts.map +1 -0
  186. package/dist/symbols/name-path.js +194 -0
  187. package/dist/symbols/name-path.js.map +1 -0
  188. package/dist/symbols/pattern-search.d.ts +14 -0
  189. package/dist/symbols/pattern-search.d.ts.map +1 -0
  190. package/dist/symbols/pattern-search.js +224 -0
  191. package/dist/symbols/pattern-search.js.map +1 -0
  192. package/dist/symbols/reference-finder.d.ts +38 -0
  193. package/dist/symbols/reference-finder.d.ts.map +1 -0
  194. package/dist/symbols/reference-finder.js +376 -0
  195. package/dist/symbols/reference-finder.js.map +1 -0
  196. package/dist/symbols/symbol-editor.d.ts +81 -0
  197. package/dist/symbols/symbol-editor.d.ts.map +1 -0
  198. package/dist/symbols/symbol-editor.js +257 -0
  199. package/dist/symbols/symbol-editor.js.map +1 -0
  200. package/dist/symbols/symbol-extractor.d.ts +49 -0
  201. package/dist/symbols/symbol-extractor.d.ts.map +1 -0
  202. package/dist/symbols/symbol-extractor.js +593 -0
  203. package/dist/symbols/symbol-extractor.js.map +1 -0
  204. package/dist/symbols/symbol-renamer.d.ts +81 -0
  205. package/dist/symbols/symbol-renamer.d.ts.map +1 -0
  206. package/dist/symbols/symbol-renamer.js +204 -0
  207. package/dist/symbols/symbol-renamer.js.map +1 -0
  208. package/dist/symbols/types.d.ts +234 -0
  209. package/dist/symbols/types.d.ts.map +1 -0
  210. package/dist/symbols/types.js +106 -0
  211. package/dist/symbols/types.js.map +1 -0
  212. package/dist/utils/concurrency.d.ts +32 -0
  213. package/dist/utils/concurrency.d.ts.map +1 -0
  214. package/dist/utils/concurrency.js +57 -0
  215. package/dist/utils/concurrency.js.map +1 -0
  216. package/dist/utils/errors.d.ts +36 -0
  217. package/dist/utils/errors.d.ts.map +1 -0
  218. package/dist/utils/errors.js +91 -0
  219. package/dist/utils/errors.js.map +1 -0
  220. package/dist/utils/type-guards.d.ts +17 -0
  221. package/dist/utils/type-guards.d.ts.map +1 -0
  222. package/dist/utils/type-guards.js +25 -0
  223. package/dist/utils/type-guards.js.map +1 -0
  224. package/dist/worktree/index.d.ts +6 -0
  225. package/dist/worktree/index.d.ts.map +1 -0
  226. package/dist/worktree/index.js +6 -0
  227. package/dist/worktree/index.js.map +1 -0
  228. package/dist/worktree/types.d.ts +101 -0
  229. package/dist/worktree/types.d.ts.map +1 -0
  230. package/dist/worktree/types.js +6 -0
  231. package/dist/worktree/types.js.map +1 -0
  232. package/dist/worktree/worktree-manager.d.ts +80 -0
  233. package/dist/worktree/worktree-manager.d.ts.map +1 -0
  234. package/dist/worktree/worktree-manager.js +407 -0
  235. package/dist/worktree/worktree-manager.js.map +1 -0
  236. package/package.json +39 -5
  237. package/scripts/postinstall.js +48 -0
@@ -1,39 +1,275 @@
1
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
+ */
2
7
  export interface CodeChunk {
8
+ /** Unique identifier for this chunk (format: filepath:startLine-endLine) */
3
9
  id: string;
4
- filePath: string;
10
+ /** Relative path to the source file from the project root */
11
+ filepath: string;
12
+ /** The actual source code content of this chunk */
5
13
  content: string;
14
+ /** Starting line number in the source file (1-indexed) */
6
15
  startLine: number;
16
+ /** Ending line number in the source file (1-indexed) */
7
17
  endLine: number;
18
+ /** Programming language of the source code */
8
19
  language: string;
20
+ /** Vector embedding for semantic search (populated during indexing) */
9
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;
10
26
  }
27
+ /**
28
+ * Status information about the code index.
29
+ */
11
30
  export interface IndexStatus {
31
+ /** Whether the codebase has been indexed */
12
32
  indexed: boolean;
33
+ /** Number of files that have been indexed */
13
34
  fileCount: number;
35
+ /** Total number of code chunks in the index */
14
36
  chunkCount: number;
37
+ /** ISO timestamp of the last index update, or null if never indexed */
15
38
  lastUpdated: string | null;
39
+ /** Path to the LanceDB index directory */
16
40
  indexPath: string;
41
+ /** Name of the embedding backend used */
42
+ embeddingBackend?: string;
43
+ /** Model identifier used for embeddings */
44
+ embeddingModel?: string;
45
+ /** Whether index corruption was detected */
46
+ corrupted?: boolean;
47
+ /** Description of detected corruption */
48
+ corruptionReason?: string;
49
+ /** Whether the current embedding backend differs from the indexed backend */
50
+ backendMismatch?: boolean;
51
+ /** Description of the backend mismatch */
52
+ backendMismatchReason?: string;
53
+ /** Whether the index is currently being rebuilt due to backend change */
54
+ isIndexing?: boolean;
55
+ }
56
+ /**
57
+ * Options for searching similar code.
58
+ */
59
+ export interface SearchSimilarOptions {
60
+ /** File path to find similar code for (relative to project root) */
61
+ filepath?: string;
62
+ /** Starting line number (1-indexed, requires filepath) */
63
+ startLine?: number;
64
+ /** Ending line number (1-indexed, requires filepath) */
65
+ endLine?: number;
66
+ /** Code snippet to find similar code for (alternative to filepath) */
67
+ code?: string;
68
+ /** Maximum number of results to return (default: 10) */
69
+ limit?: number;
70
+ /** Minimum similarity score threshold 0-1 (default: 0) */
71
+ threshold?: number;
72
+ /** Exclude the source chunk from results (default: true) */
73
+ excludeSelf?: boolean;
74
+ }
75
+ /**
76
+ * Result from similar code search, includes similarity score.
77
+ */
78
+ export interface SimilarCodeResult extends CodeChunk {
79
+ /** Similarity score from 0 to 1 (1 = identical) */
80
+ similarity: number;
17
81
  }
18
82
  /**
19
- * Code indexer using LanceDB for vector storage
83
+ * Options for searching code.
20
84
  */
85
+ export interface SearchOptions {
86
+ /** Natural language query to search for */
87
+ query: string;
88
+ /** Maximum number of results to return (default: 10) */
89
+ limit?: number;
90
+ /** Glob pattern to filter results by file path (e.g., "src/\**", "!test/\**") */
91
+ pathPattern?: string;
92
+ /** Filter results to specific languages (e.g., ["typescript", "javascript"]) */
93
+ languages?: string[];
94
+ }
95
+ /**
96
+ * Progress information during indexing operations.
97
+ * Used to report status to callers via the progress callback.
98
+ */
99
+ export interface IndexProgress {
100
+ /** Current phase of the indexing process */
101
+ phase: 'scanning' | 'chunking' | 'embedding' | 'storing' | 'complete';
102
+ /** Current progress count within the phase */
103
+ current: number;
104
+ /** Total items to process in the current phase */
105
+ total: number;
106
+ /** Human-readable status message */
107
+ message: string;
108
+ }
109
+ /**
110
+ * Callback function for receiving indexing progress updates.
111
+ */
112
+ export type ProgressCallback = (progress: IndexProgress) => void;
113
+ /**
114
+ * Summary of the codebase structure and concept areas
115
+ */
116
+ export interface CodebaseSummary {
117
+ /** Total number of files indexed */
118
+ totalFiles: number;
119
+ /** Total number of code chunks */
120
+ totalChunks: number;
121
+ /** Languages detected in the codebase */
122
+ languages: {
123
+ language: string;
124
+ fileCount: number;
125
+ chunkCount: number;
126
+ }[];
127
+ /** Discovered concept clusters */
128
+ concepts: ConceptCluster[];
129
+ /** Quality score for the clustering (silhouette score, -1 to 1) */
130
+ clusteringQuality: number;
131
+ /** Timestamp when summary was generated */
132
+ generatedAt: string;
133
+ }
21
134
  export declare class CodeIndexer {
22
135
  private db;
23
136
  private table;
137
+ private metadataTable;
24
138
  private embeddingBackend;
25
139
  private indexPath;
26
140
  private projectPath;
141
+ private config;
142
+ /** LRU cache for query embeddings to avoid recomputing identical queries */
143
+ private queryEmbeddingCache;
27
144
  constructor(projectPath: string, embeddingBackend: EmbeddingBackend);
28
145
  initialize(): Promise<void>;
146
+ private get metadataPath();
147
+ /**
148
+ * Save index metadata to disk
149
+ */
150
+ private saveIndexMetadata;
151
+ /**
152
+ * Load index metadata from disk
153
+ */
154
+ private loadIndexMetadata;
155
+ /**
156
+ * Get the modification time of a file
157
+ */
158
+ private getFileMtime;
159
+ /**
160
+ * Get stored metadata for all indexed files
161
+ */
162
+ private getStoredMetadata;
163
+ /**
164
+ * Detect which files have been added, modified, or deleted
165
+ */
166
+ private detectFileChanges;
167
+ /**
168
+ * Save metadata for indexed files
169
+ */
170
+ private saveFileMetadata;
29
171
  getStatus(): Promise<IndexStatus>;
30
- indexCodebase(patterns?: string[], excludePatterns?: string[]): Promise<{
172
+ /**
173
+ * Check if the current embedding backend differs from the one used to create the index.
174
+ * Returns mismatch status and reason if mismatched.
175
+ */
176
+ private checkBackendMismatch;
177
+ /**
178
+ * Validate index integrity by checking metadata consistency.
179
+ * Returns corruption status and reason if corrupted.
180
+ */
181
+ private validateIndexIntegrity;
182
+ indexCodebase(patterns?: string[], excludePatterns?: string[], forceReindex?: boolean, onProgress?: ProgressCallback, autoRepair?: boolean): Promise<{
31
183
  filesIndexed: number;
32
184
  chunksCreated: number;
185
+ incremental: boolean;
186
+ repaired?: boolean;
33
187
  }>;
188
+ /**
189
+ * Perform a full reindex of all files
190
+ */
191
+ private indexFull;
192
+ /**
193
+ * Perform incremental indexing - only process changed files
194
+ */
195
+ private indexIncremental;
196
+ /**
197
+ * Generate embeddings for chunks in batches
198
+ */
199
+ private embedChunks;
34
200
  private chunkFile;
201
+ /**
202
+ * Chunk a file using AST-aware parsing
203
+ */
204
+ private chunkFileWithAST;
205
+ /**
206
+ * Chunk a file using tree-sitter AST parsing (Python, Go, Rust, Java, Kotlin)
207
+ */
208
+ private chunkFileWithTreeSitter;
209
+ /**
210
+ * Chunk a file using line-based splitting (fallback)
211
+ */
212
+ private chunkFileByLines;
35
213
  private getLanguage;
214
+ /**
215
+ * Get query embedding from cache or compute it.
216
+ * Uses LRU eviction when cache is full.
217
+ */
218
+ private getQueryEmbedding;
219
+ /**
220
+ * Check if a filepath matches a glob pattern.
221
+ * Supports negation patterns starting with '!'.
222
+ */
223
+ private matchesPathPattern;
224
+ /**
225
+ * Search with options object
226
+ */
227
+ search(options: SearchOptions): Promise<CodeChunk[]>;
228
+ /**
229
+ * Search with query string and optional limit (backward compatible)
230
+ */
36
231
  search(query: string, limit?: number): Promise<CodeChunk[]>;
232
+ /**
233
+ * Calculate keyword match score for hybrid search
234
+ */
235
+ private calculateKeywordScore;
236
+ /**
237
+ * Find code chunks semantically similar to a given code snippet or file location.
238
+ * This is useful for finding duplicate logic, similar implementations, or related code.
239
+ */
240
+ searchSimilar(options: SearchSimilarOptions): Promise<SimilarCodeResult[]>;
37
241
  clearIndex(): Promise<void>;
242
+ private get clusteringMetadataPath();
243
+ /**
244
+ * Clear clustering metadata file
245
+ */
246
+ private clearClusteringMetadata;
247
+ /**
248
+ * Save clustering result to metadata file
249
+ */
250
+ private saveClusteringMetadata;
251
+ /**
252
+ * Load clustering result from metadata file
253
+ */
254
+ private loadClusteringMetadata;
255
+ /**
256
+ * Cluster the indexed codebase into semantic concept areas.
257
+ * Uses k-means clustering on embeddings to discover related code groups.
258
+ */
259
+ clusterConcepts(options?: ClusteringOptions): Promise<ClusteringResult>;
260
+ /**
261
+ * List all discovered concept clusters.
262
+ * Returns cached clustering result if available, otherwise clusters first.
263
+ */
264
+ listConcepts(forceRecluster?: boolean): Promise<ConceptCluster[]>;
265
+ /**
266
+ * Search for code within a specific concept cluster.
267
+ * Returns chunks that belong to the specified cluster, optionally filtered by query.
268
+ */
269
+ searchByConcept(conceptId: number, query?: string, limit?: number): Promise<CodeChunk[]>;
270
+ /**
271
+ * Generate a comprehensive summary of the codebase including concept areas.
272
+ */
273
+ summarizeCodebase(clusteringOptions?: ClusteringOptions): Promise<CodebaseSummary>;
38
274
  }
39
275
  //# sourceMappingURL=indexer.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../src/search/indexer.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAE/D,MAAM,WAAW,SAAS;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,CAAC;CACnB;AAKD;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,EAAE,CAAmC;IAC7C,OAAO,CAAC,KAAK,CAA8B;IAC3C,OAAO,CAAC,gBAAgB,CAAmB;IAC3C,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAS;gBAEhB,WAAW,EAAE,MAAM,EAAE,gBAAgB,EAAE,gBAAgB;IAM7D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,SAAS,IAAI,OAAO,CAAC,WAAW,CAAC;IA0BjC,aAAa,CACjB,QAAQ,GAAE,MAAM,EAAoF,EACpG,eAAe,GAAE,MAAM,EAAsE,GAC5F,OAAO,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;YA+D7C,SAAS;IA2BvB,OAAO,CAAC,WAAW;IA2Bb,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAsB/D,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;CAOlC"}
1
+ {"version":3,"file":"indexer.d.ts","sourceRoot":"","sources":["../../src/search/indexer.ts"],"names":[],"mappings":"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"}