opencode-rag-plugin 1.12.17 → 1.14.7

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/ReadMe.md +15 -13
  2. package/dist/api.d.ts +54 -2
  3. package/dist/api.js +41 -1
  4. package/dist/api.js.map +1 -1
  5. package/dist/chunker/base.js +2 -0
  6. package/dist/chunker/base.js.map +1 -1
  7. package/dist/chunker/bash.d.ts +5 -0
  8. package/dist/chunker/bash.js +5 -0
  9. package/dist/chunker/bash.js.map +1 -1
  10. package/dist/chunker/c.d.ts +6 -0
  11. package/dist/chunker/c.js +6 -0
  12. package/dist/chunker/c.js.map +1 -1
  13. package/dist/chunker/cpp.d.ts +6 -0
  14. package/dist/chunker/cpp.js +6 -0
  15. package/dist/chunker/cpp.js.map +1 -1
  16. package/dist/chunker/csharp.d.ts +6 -0
  17. package/dist/chunker/csharp.js +6 -0
  18. package/dist/chunker/csharp.js.map +1 -1
  19. package/dist/chunker/css.d.ts +6 -0
  20. package/dist/chunker/css.js +6 -0
  21. package/dist/chunker/css.js.map +1 -1
  22. package/dist/chunker/doc.d.ts +18 -0
  23. package/dist/chunker/doc.js +18 -0
  24. package/dist/chunker/doc.js.map +1 -1
  25. package/dist/chunker/dockerfile.d.ts +6 -0
  26. package/dist/chunker/dockerfile.js +6 -0
  27. package/dist/chunker/dockerfile.js.map +1 -1
  28. package/dist/chunker/docx.d.ts +18 -0
  29. package/dist/chunker/docx.js +18 -0
  30. package/dist/chunker/docx.js.map +1 -1
  31. package/dist/chunker/excel.d.ts +19 -0
  32. package/dist/chunker/excel.js +19 -0
  33. package/dist/chunker/excel.js.map +1 -1
  34. package/dist/chunker/go.d.ts +5 -0
  35. package/dist/chunker/go.js +5 -0
  36. package/dist/chunker/go.js.map +1 -1
  37. package/dist/chunker/grammar.d.ts +62 -0
  38. package/dist/chunker/grammar.js +133 -0
  39. package/dist/chunker/grammar.js.map +1 -1
  40. package/dist/chunker/html.d.ts +5 -0
  41. package/dist/chunker/html.js +5 -0
  42. package/dist/chunker/html.js.map +1 -1
  43. package/dist/chunker/image.d.ts +31 -0
  44. package/dist/chunker/image.js +50 -4
  45. package/dist/chunker/image.js.map +1 -1
  46. package/dist/chunker/ini.d.ts +5 -0
  47. package/dist/chunker/ini.js +5 -0
  48. package/dist/chunker/ini.js.map +1 -1
  49. package/dist/chunker/java.d.ts +5 -0
  50. package/dist/chunker/java.js +5 -0
  51. package/dist/chunker/java.js.map +1 -1
  52. package/dist/chunker/javascript.d.ts +6 -0
  53. package/dist/chunker/javascript.js +6 -0
  54. package/dist/chunker/javascript.js.map +1 -1
  55. package/dist/chunker/json.d.ts +5 -0
  56. package/dist/chunker/json.js +5 -0
  57. package/dist/chunker/json.js.map +1 -1
  58. package/dist/chunker/kotlin.d.ts +6 -0
  59. package/dist/chunker/kotlin.js +6 -0
  60. package/dist/chunker/kotlin.js.map +1 -1
  61. package/dist/chunker/loader.d.ts +11 -0
  62. package/dist/chunker/loader.js +20 -0
  63. package/dist/chunker/loader.js.map +1 -1
  64. package/dist/chunker/markdown.d.ts +5 -0
  65. package/dist/chunker/markdown.js +5 -0
  66. package/dist/chunker/markdown.js.map +1 -1
  67. package/dist/chunker/pdf.d.ts +19 -0
  68. package/dist/chunker/pdf.js +30 -0
  69. package/dist/chunker/pdf.js.map +1 -1
  70. package/dist/chunker/php.d.ts +5 -0
  71. package/dist/chunker/php.js +5 -0
  72. package/dist/chunker/php.js.map +1 -1
  73. package/dist/chunker/powershell.d.ts +5 -0
  74. package/dist/chunker/powershell.js +5 -0
  75. package/dist/chunker/powershell.js.map +1 -1
  76. package/dist/chunker/python.d.ts +5 -0
  77. package/dist/chunker/python.js +5 -0
  78. package/dist/chunker/python.js.map +1 -1
  79. package/dist/chunker/razor.d.ts +12 -0
  80. package/dist/chunker/razor.js +25 -0
  81. package/dist/chunker/razor.js.map +1 -1
  82. package/dist/chunker/ruby.d.ts +5 -0
  83. package/dist/chunker/ruby.js +5 -0
  84. package/dist/chunker/ruby.js.map +1 -1
  85. package/dist/chunker/rust.d.ts +6 -0
  86. package/dist/chunker/rust.js +6 -0
  87. package/dist/chunker/rust.js.map +1 -1
  88. package/dist/chunker/sln.d.ts +11 -0
  89. package/dist/chunker/sln.js +11 -0
  90. package/dist/chunker/sln.js.map +1 -1
  91. package/dist/chunker/sql.d.ts +5 -0
  92. package/dist/chunker/sql.js +5 -0
  93. package/dist/chunker/sql.js.map +1 -1
  94. package/dist/chunker/ssl.d.ts +12 -0
  95. package/dist/chunker/ssl.js +21 -2
  96. package/dist/chunker/ssl.js.map +1 -1
  97. package/dist/chunker/swift.d.ts +5 -0
  98. package/dist/chunker/swift.js +5 -0
  99. package/dist/chunker/swift.js.map +1 -1
  100. package/dist/chunker/tex.d.ts +12 -0
  101. package/dist/chunker/tex.js +12 -0
  102. package/dist/chunker/tex.js.map +1 -1
  103. package/dist/chunker/toml.d.ts +5 -0
  104. package/dist/chunker/toml.js +5 -0
  105. package/dist/chunker/toml.js.map +1 -1
  106. package/dist/chunker/typescript.d.ts +6 -0
  107. package/dist/chunker/typescript.js +6 -0
  108. package/dist/chunker/typescript.js.map +1 -1
  109. package/dist/chunker/xml.d.ts +5 -0
  110. package/dist/chunker/xml.js +5 -0
  111. package/dist/chunker/xml.js.map +1 -1
  112. package/dist/chunker/yaml.d.ts +5 -0
  113. package/dist/chunker/yaml.js +5 -0
  114. package/dist/chunker/yaml.js.map +1 -1
  115. package/dist/cli/commands/clear.d.ts +12 -0
  116. package/dist/cli/commands/clear.js +81 -0
  117. package/dist/cli/commands/clear.js.map +1 -0
  118. package/dist/cli/commands/describe-image.d.ts +14 -0
  119. package/dist/cli/commands/describe-image.js +68 -0
  120. package/dist/cli/commands/describe-image.js.map +1 -0
  121. package/dist/cli/commands/dump.d.ts +13 -0
  122. package/dist/cli/commands/dump.js +55 -0
  123. package/dist/cli/commands/dump.js.map +1 -0
  124. package/dist/cli/commands/eval.d.ts +32 -0
  125. package/dist/cli/commands/eval.js +158 -0
  126. package/dist/cli/commands/eval.js.map +1 -0
  127. package/dist/cli/commands/index-command.d.ts +17 -0
  128. package/dist/cli/commands/index-command.js +167 -0
  129. package/dist/cli/commands/index-command.js.map +1 -0
  130. package/dist/cli/commands/index.d.ts +16 -0
  131. package/dist/cli/commands/index.js +17 -0
  132. package/dist/cli/commands/index.js.map +1 -0
  133. package/dist/cli/commands/init-helpers.d.ts +101 -0
  134. package/dist/cli/commands/init-helpers.js +398 -0
  135. package/dist/cli/commands/init-helpers.js.map +1 -0
  136. package/dist/cli/commands/init.d.ts +19 -0
  137. package/dist/cli/commands/init.js +251 -0
  138. package/dist/cli/commands/init.js.map +1 -0
  139. package/dist/cli/commands/list.d.ts +13 -0
  140. package/dist/cli/commands/list.js +46 -0
  141. package/dist/cli/commands/list.js.map +1 -0
  142. package/dist/cli/commands/mcp.d.ts +14 -0
  143. package/dist/cli/commands/mcp.js +35 -0
  144. package/dist/cli/commands/mcp.js.map +1 -0
  145. package/dist/cli/commands/query.d.ts +14 -0
  146. package/dist/cli/commands/query.js +86 -0
  147. package/dist/cli/commands/query.js.map +1 -0
  148. package/dist/cli/commands/show.d.ts +13 -0
  149. package/dist/cli/commands/show.js +51 -0
  150. package/dist/cli/commands/show.js.map +1 -0
  151. package/dist/cli/commands/status.d.ts +14 -0
  152. package/dist/cli/commands/status.js +104 -0
  153. package/dist/cli/commands/status.js.map +1 -0
  154. package/dist/cli/commands/ui.d.ts +14 -0
  155. package/dist/cli/commands/ui.js +69 -0
  156. package/dist/cli/commands/ui.js.map +1 -0
  157. package/dist/cli/commands/update.d.ts +14 -0
  158. package/dist/cli/commands/update.js +76 -0
  159. package/dist/cli/commands/update.js.map +1 -0
  160. package/dist/cli/format.d.ts +112 -0
  161. package/dist/cli/format.js +184 -0
  162. package/dist/cli/format.js.map +1 -0
  163. package/dist/cli/helpers.d.ts +51 -0
  164. package/dist/cli/helpers.js +86 -0
  165. package/dist/cli/helpers.js.map +1 -0
  166. package/dist/cli/index.d.ts +28 -0
  167. package/dist/cli/index.js +107 -0
  168. package/dist/cli/index.js.map +1 -0
  169. package/dist/cli/progress.d.ts +39 -0
  170. package/dist/cli/progress.js +137 -0
  171. package/dist/cli/progress.js.map +1 -0
  172. package/dist/cli/types.d.ts +40 -0
  173. package/dist/cli/types.js +3 -0
  174. package/dist/cli/types.js.map +1 -0
  175. package/dist/cli.d.ts +11 -4
  176. package/dist/cli.js +9 -1253
  177. package/dist/cli.js.map +1 -1
  178. package/dist/content/doc.d.ts +1 -1
  179. package/dist/content/doc.js +1 -1
  180. package/dist/content/doc.js.map +1 -1
  181. package/dist/content/docx.d.ts +1 -1
  182. package/dist/content/docx.js +1 -1
  183. package/dist/content/docx.js.map +1 -1
  184. package/dist/content/excel.d.ts +1 -1
  185. package/dist/content/excel.js +1 -1
  186. package/dist/content/excel.js.map +1 -1
  187. package/dist/content/pdf.d.ts +1 -1
  188. package/dist/content/pdf.js +1 -1
  189. package/dist/content/pdf.js.map +1 -1
  190. package/dist/content/reader.d.ts +3 -1
  191. package/dist/content/reader.js +42 -10
  192. package/dist/content/reader.js.map +1 -1
  193. package/dist/core/bootstrap.d.ts +18 -0
  194. package/dist/core/bootstrap.js +9 -15
  195. package/dist/core/bootstrap.js.map +1 -1
  196. package/dist/core/config.d.ts +146 -0
  197. package/dist/core/config.js +66 -14
  198. package/dist/core/config.js.map +1 -1
  199. package/dist/core/doc-progress.d.ts +15 -0
  200. package/dist/core/doc-progress.js +61 -0
  201. package/dist/core/doc-progress.js.map +1 -0
  202. package/dist/core/fileLogger.d.ts +7 -0
  203. package/dist/core/fileLogger.js +2 -0
  204. package/dist/core/fileLogger.js.map +1 -1
  205. package/dist/core/interfaces.d.ts +52 -1
  206. package/dist/core/manifest.d.ts +25 -0
  207. package/dist/core/manifest.js +15 -1
  208. package/dist/core/manifest.js.map +1 -1
  209. package/dist/core/provider-defaults.d.ts +8 -0
  210. package/dist/core/provider-defaults.js +3 -0
  211. package/dist/core/provider-defaults.js.map +1 -1
  212. package/dist/core/rag-injection-flag.d.ts +3 -0
  213. package/dist/core/rag-injection-flag.js +2 -0
  214. package/dist/core/rag-injection-flag.js.map +1 -1
  215. package/dist/core/resolve-api-key.d.ts +1 -0
  216. package/dist/core/resolve-api-key.js +1 -0
  217. package/dist/core/resolve-api-key.js.map +1 -1
  218. package/dist/core/runtime-overrides.d.ts +4 -0
  219. package/dist/core/runtime-overrides.js +4 -1
  220. package/dist/core/runtime-overrides.js.map +1 -1
  221. package/dist/describer/anthropic.d.ts +22 -2
  222. package/dist/describer/anthropic.js +43 -111
  223. package/dist/describer/anthropic.js.map +1 -1
  224. package/dist/describer/describer.d.ts +21 -4
  225. package/dist/describer/describer.js +53 -112
  226. package/dist/describer/describer.js.map +1 -1
  227. package/dist/describer/gemini.d.ts +1 -2
  228. package/dist/describer/gemini.js +21 -114
  229. package/dist/describer/gemini.js.map +1 -1
  230. package/dist/describer/shared.d.ts +3 -0
  231. package/dist/describer/shared.js +23 -0
  232. package/dist/describer/shared.js.map +1 -0
  233. package/dist/embedder/factory.d.ts +25 -0
  234. package/dist/embedder/factory.js +25 -0
  235. package/dist/embedder/factory.js.map +1 -1
  236. package/dist/embedder/health.d.ts +10 -0
  237. package/dist/embedder/health.js +26 -14
  238. package/dist/embedder/health.js.map +1 -1
  239. package/dist/embedder/http.d.ts +47 -0
  240. package/dist/embedder/http.js +61 -3
  241. package/dist/embedder/http.js.map +1 -1
  242. package/dist/eval/index.d.ts +6 -0
  243. package/dist/eval/index.js.map +1 -1
  244. package/dist/eval/run-token-test.js +1 -5
  245. package/dist/eval/run-token-test.js.map +1 -1
  246. package/dist/eval/session-logger.d.ts +5 -0
  247. package/dist/eval/session-logger.js +4 -0
  248. package/dist/eval/session-logger.js.map +1 -1
  249. package/dist/eval/storage.d.ts +9 -0
  250. package/dist/eval/storage.js +9 -5
  251. package/dist/eval/storage.js.map +1 -1
  252. package/dist/eval/token-analysis.d.ts +8 -0
  253. package/dist/eval/token-analysis.js +6 -2
  254. package/dist/eval/token-analysis.js.map +1 -1
  255. package/dist/eval/token-counter.d.ts +1 -3
  256. package/dist/eval/token-counter.js +4 -5
  257. package/dist/eval/token-counter.js.map +1 -1
  258. package/dist/eval/types.d.ts +6 -0
  259. package/dist/eval/types.js +2 -0
  260. package/dist/eval/types.js.map +1 -1
  261. package/dist/index.d.ts +11 -0
  262. package/dist/index.js +12 -3
  263. package/dist/index.js.map +1 -1
  264. package/dist/indexer/description-stage.d.ts +1 -1
  265. package/dist/indexer/description-stage.js +25 -5
  266. package/dist/indexer/description-stage.js.map +1 -1
  267. package/dist/indexer/embed-stage.js +0 -8
  268. package/dist/indexer/embed-stage.js.map +1 -1
  269. package/dist/indexer/pipeline.d.ts +27 -3
  270. package/dist/indexer/pipeline.js +325 -143
  271. package/dist/indexer/pipeline.js.map +1 -1
  272. package/dist/indexer/stats.d.ts +35 -0
  273. package/dist/indexer/stats.js +9 -0
  274. package/dist/indexer/stats.js.map +1 -1
  275. package/dist/indexer/watch.d.ts +25 -0
  276. package/dist/indexer/watch.js +21 -0
  277. package/dist/indexer/watch.js.map +1 -1
  278. package/dist/indexer/worker.d.ts +96 -2
  279. package/dist/indexer/worker.js +109 -24
  280. package/dist/indexer/worker.js.map +1 -1
  281. package/dist/indexer.d.ts +11 -1
  282. package/dist/indexer.js +9 -0
  283. package/dist/indexer.js.map +1 -1
  284. package/dist/mcp/cli.d.ts +3 -0
  285. package/dist/mcp/cli.js +1 -0
  286. package/dist/mcp/cli.js.map +1 -1
  287. package/dist/mcp/handlers.d.ts +41 -0
  288. package/dist/mcp/handlers.js +40 -1
  289. package/dist/mcp/handlers.js.map +1 -1
  290. package/dist/mcp/server.d.ts +8 -0
  291. package/dist/mcp/server.js +18 -1
  292. package/dist/mcp/server.js.map +1 -1
  293. package/dist/opencode/create-read-tool.js +1 -0
  294. package/dist/opencode/create-read-tool.js.map +1 -1
  295. package/dist/opencode/tools.d.ts +8 -17
  296. package/dist/opencode/tools.js +74 -109
  297. package/dist/opencode/tools.js.map +1 -1
  298. package/dist/plugin-entry.d.ts +6 -0
  299. package/dist/plugin-entry.js +6 -0
  300. package/dist/plugin-entry.js.map +1 -1
  301. package/dist/plugin.d.ts +37 -0
  302. package/dist/plugin.js +278 -41
  303. package/dist/plugin.js.map +1 -1
  304. package/dist/retriever/keyword-index.js +9 -9
  305. package/dist/retriever/keyword-index.js.map +1 -1
  306. package/dist/retriever/retriever.js +14 -4
  307. package/dist/retriever/retriever.js.map +1 -1
  308. package/dist/tui.d.ts +5 -0
  309. package/dist/tui.js +101 -13
  310. package/dist/tui.js.map +1 -1
  311. package/dist/types/opencode-plugin.d.ts +4 -1
  312. package/dist/updater.d.ts +23 -1
  313. package/dist/updater.js +55 -16
  314. package/dist/updater.js.map +1 -1
  315. package/dist/vectorstore/factory.d.ts +13 -0
  316. package/dist/vectorstore/factory.js +13 -0
  317. package/dist/vectorstore/factory.js.map +1 -1
  318. package/dist/vectorstore/lancedb.d.ts +78 -1
  319. package/dist/vectorstore/lancedb.js +195 -21
  320. package/dist/vectorstore/lancedb.js.map +1 -1
  321. package/dist/vectorstore/memory.d.ts +5 -0
  322. package/dist/vectorstore/memory.js +11 -0
  323. package/dist/vectorstore/memory.js.map +1 -1
  324. package/dist/watcher.d.ts +24 -0
  325. package/dist/watcher.js +17 -35
  326. package/dist/watcher.js.map +1 -1
  327. package/dist/web/api.d.ts +37 -0
  328. package/dist/web/api.js +54 -0
  329. package/dist/web/api.js.map +1 -1
  330. package/dist/web/server.d.ts +15 -0
  331. package/dist/web/server.js +14 -0
  332. package/dist/web/server.js.map +1 -1
  333. package/dist/web/static.d.ts +8 -0
  334. package/dist/web/static.js +8 -0
  335. package/dist/web/static.js.map +1 -1
  336. package/package.json +11 -15
@@ -1,3 +1,4 @@
1
+ /** A semantic fragment of a file produced by a {@link Chunker}. */
1
2
  export interface Chunk {
2
3
  id: string;
3
4
  content: string;
@@ -11,48 +12,98 @@ export interface Chunk {
11
12
  contentType?: string;
12
13
  };
13
14
  }
15
+ /** Generates natural-language descriptions for code chunks using an LLM. */
14
16
  export interface DescriptionProvider {
17
+ /** Generate a description for a single chunk. */
15
18
  generateDescription(chunk: Chunk): Promise<string>;
16
- generateBatchDescriptions(chunks: Chunk[]): Promise<Map<string, string>>;
19
+ /** Generate descriptions for multiple chunks concurrently. Returns a Map of chunk ID to description. */
20
+ generateBatchDescriptions(chunks: Chunk[], logDebug?: (msg: string) => void): Promise<Map<string, string>>;
17
21
  }
22
+ /** Explains how a search result score was computed, including vector and keyword contributions. */
18
23
  export interface SearchExplanation {
24
+ /** Breakdown of the fused score components. */
19
25
  scoreBreakdown: {
26
+ /** Normalized vector similarity score. */
20
27
  vectorScore: number;
28
+ /** Normalized keyword (TF-IDF) score. */
21
29
  keywordScore: number;
30
+ /** Raw (unnormalized) vector similarity score before fusion. */
22
31
  rawVectorScore: number;
32
+ /** Raw (unnormalized) keyword score before fusion. */
23
33
  rawKeywordScore: number;
34
+ /** Weight applied to keyword score during fusion (0-1). */
24
35
  keywordWeight: number;
25
36
  };
37
+ /** Query terms that matched in the keyword index, if hybrid search was used. */
26
38
  matchedTerms?: string[];
27
39
  }
40
+ /** A single result from a vector or hybrid search query. */
28
41
  export interface SearchResult {
42
+ /** The matched chunk of content. */
29
43
  chunk: Chunk;
44
+ /** Relevance score between 0 and 1. */
30
45
  score: number;
46
+ /** Optional breakdown of how the score was computed. */
31
47
  explanation?: SearchExplanation;
32
48
  }
49
+ /** Splits a source file into semantic chunks based on AST structure or content heuristics. */
33
50
  export interface Chunker {
51
+ /** Human-readable language name (e.g. "TypeScript", "Python"). */
34
52
  readonly language: string;
53
+ /** File extensions this chunker handles (e.g. [".ts", ".tsx"]). */
35
54
  readonly fileExtensions?: string[];
55
+ /** Split the file content into chunks. */
36
56
  chunk(filePath: string, content: string): Promise<Chunk[]>;
37
57
  }
58
+ /** Generates vector embeddings for text inputs via a configured model (Ollama, OpenAI, Cohere, etc.). */
38
59
  export interface EmbeddingProvider {
60
+ /** Provider name (e.g. "ollama", "openai", "cohere"). */
39
61
  readonly name: string;
62
+ /** Embed one or more text strings. `purpose` may apply a prefix for query vs. document embeddings. */
40
63
  embed(texts: string[], purpose?: "query" | "document"): Promise<number[][]>;
41
64
  }
65
+ /** In-memory TF-IDF inverted index for keyword-based search alongside vector search. */
42
66
  export interface KeywordIndex {
67
+ /** Index a set of chunks by tokenizing their content. */
43
68
  addChunks(chunks: Chunk[]): void;
69
+ /** Remove all entries for a given file path from the index. */
44
70
  removeByFilePath(filePath: string): void;
71
+ /** Search the index for the top-K matching chunks. */
45
72
  search(query: string, topK: number): SearchResult[];
73
+ /** Get the terms from a query that matched a specific chunk. */
46
74
  getMatchedTerms(query: string, chunkId: string): string[];
75
+ /** Clear all indexed data. */
47
76
  clear(): void;
77
+ /** Return the total number of indexed chunks. */
48
78
  count(): number;
79
+ /** Persist the index to disk as JSON. */
49
80
  save(filePath?: string): Promise<void>;
50
81
  }
82
+ /** Persistent vector storage and retrieval backend (LanceDB or in-memory). */
51
83
  export interface VectorStore {
84
+ /** Store a batch of chunks with their embeddings. */
52
85
  addChunks(chunks: Chunk[]): Promise<void>;
86
+ /** Search for the top-K nearest neighbor chunks by embedding similarity. */
53
87
  search(embedding: number[], topK: number): Promise<SearchResult[]>;
88
+ /** Return the total number of stored chunks. */
54
89
  count(): Promise<number>;
90
+ /** Remove all stored data. */
55
91
  clear(): Promise<void>;
92
+ /** Delete all chunks associated with a specific file path. */
56
93
  deleteByFilePath(filePath: string): Promise<void>;
94
+ /** Release any held resources and close the store. */
57
95
  close(): Promise<void>;
58
96
  }
97
+ /** Callback interface for reporting indexing progress to the UI or CLI. */
98
+ export interface IndexProgress {
99
+ /** Set the total number of files to be indexed. */
100
+ setFileCount(count: number): void;
101
+ /** Called when a new file begins indexing. */
102
+ startFile(label: string): void;
103
+ /** Called when a pipeline stage completes for the current file. */
104
+ finishStage(label: string): void;
105
+ /** Called when a file is fully processed. */
106
+ finishFile(label: string): void;
107
+ /** Called when indexing fails for a file. */
108
+ failFile(label: string): void;
109
+ }
@@ -1,26 +1,51 @@
1
+ /** Metadata entry for a single indexed file. */
1
2
  export interface ManifestEntry {
3
+ /** SHA-256 hash of the file content. */
2
4
  hash: string;
5
+ /** Number of chunks produced for this file. */
3
6
  chunkCount: number;
7
+ /** Unix timestamp of when this file was last indexed. */
4
8
  indexedAt: number;
9
+ /** Filesystem modification time at time of indexing. */
5
10
  mtime?: number;
11
+ /** File size in bytes. */
6
12
  size?: number;
13
+ /** Whether the description generation step failed for this file. */
14
+ descriptionFailed?: boolean;
7
15
  }
16
+ /** Current schema version for manifest files. */
8
17
  export declare const SCHEMA_VERSION = 1;
18
+ /** Persistent manifest tracking indexing state across sessions. */
9
19
  export interface FileManifest {
20
+ /** Unix timestamp of the last full index pass. */
10
21
  lastIndexedAt?: number;
22
+ /** Schema version for forward-compatibility checks. */
11
23
  schemaVersion?: number;
24
+ /** Map of normalized file path to its manifest entry. */
12
25
  files: Record<string, ManifestEntry>;
26
+ /** Git commit hash at last index, used for incremental re-indexing. */
13
27
  lastGitCommit?: string;
14
28
  }
29
+ /** Health status of a loaded manifest file. */
15
30
  export type ManifestStatus = "ok" | "missing" | "corrupt";
31
+ /** Result of loading a manifest from disk. */
16
32
  export interface LoadedManifest {
33
+ /** The parsed manifest data (empty if missing/corrupt). */
17
34
  manifest: FileManifest;
35
+ /** Filesystem path the manifest was loaded from. */
18
36
  path: string;
37
+ /** Load status indicating health. */
19
38
  status: ManifestStatus;
20
39
  }
40
+ /** Create a new empty manifest with the current schema version. */
21
41
  export declare function createEmptyManifest(): FileManifest;
42
+ /** Resolve the manifest file path within a vector store directory. */
22
43
  export declare function manifestPathFor(dbPath: string): string;
44
+ /** Normalize a file path to use forward slashes for cross-platform consistency. */
23
45
  export declare function normalizeFilePath(filePath: string): string;
46
+ /** Compute the SHA-256 hex hash of a string. */
24
47
  export declare function computeFileHash(content: string): string;
48
+ /** Load a manifest from disk, handling missing or corrupt files gracefully. */
25
49
  export declare function loadManifest(dbPath: string): Promise<LoadedManifest>;
50
+ /** Persist a manifest to disk with atomic write (temp file + rename, with Windows fallback). */
26
51
  export declare function saveManifest(dbPath: string, manifest: FileManifest): Promise<void>;
@@ -1,19 +1,25 @@
1
1
  import { createHash } from "node:crypto";
2
2
  import fs from "node:fs/promises";
3
3
  import path from "node:path";
4
+ /** Current schema version for manifest files. */
4
5
  export const SCHEMA_VERSION = 1;
6
+ /** Create a new empty manifest with the current schema version. */
5
7
  export function createEmptyManifest() {
6
8
  return { files: {}, schemaVersion: SCHEMA_VERSION };
7
9
  }
10
+ /** Resolve the manifest file path within a vector store directory. */
8
11
  export function manifestPathFor(dbPath) {
9
12
  return path.join(dbPath, "manifest.json");
10
13
  }
14
+ /** Normalize a file path to use forward slashes for cross-platform consistency. */
11
15
  export function normalizeFilePath(filePath) {
12
16
  return path.resolve(filePath).replace(/\\/g, "/");
13
17
  }
18
+ /** Compute the SHA-256 hex hash of a string. */
14
19
  export function computeFileHash(content) {
15
20
  return createHash("sha256").update(content).digest("hex");
16
21
  }
22
+ /** Load a manifest from disk, handling missing or corrupt files gracefully. */
17
23
  export async function loadManifest(dbPath) {
18
24
  const filePath = manifestPathFor(dbPath);
19
25
  try {
@@ -40,12 +46,20 @@ export async function loadManifest(dbPath) {
40
46
  return { manifest: createEmptyManifest(), path: filePath, status: "corrupt" };
41
47
  }
42
48
  }
49
+ /** Persist a manifest to disk with atomic write (temp file + rename, with Windows fallback). */
43
50
  export async function saveManifest(dbPath, manifest) {
44
51
  const filePath = manifestPathFor(dbPath);
45
52
  const tempPath = `${filePath}.tmp`;
46
53
  manifest.schemaVersion = SCHEMA_VERSION;
47
54
  await fs.mkdir(path.dirname(filePath), { recursive: true });
48
55
  await fs.writeFile(tempPath, JSON.stringify(manifest, null, 2), "utf-8");
49
- await fs.rename(tempPath, filePath);
56
+ try {
57
+ await fs.rename(tempPath, filePath);
58
+ }
59
+ catch {
60
+ // Windows: rename fails with EPERM if destination exists
61
+ await fs.unlink(filePath).catch(() => { });
62
+ await fs.rename(tempPath, filePath);
63
+ }
50
64
  }
51
65
  //# sourceMappingURL=manifest.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/core/manifest.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"manifest.js","sourceRoot":"","sources":["../../src/core/manifest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAkB7B,iDAAiD;AACjD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC;AA2BhC,mEAAmE;AACnE,MAAM,UAAU,mBAAmB;IACjC,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC;AACtD,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,eAAe,CAAC,MAAc;IAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;AAC5C,CAAC;AAED,mFAAmF;AACnF,MAAM,UAAU,iBAAiB,CAAC,QAAgB;IAChD,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AACpD,CAAC;AAED,gDAAgD;AAChD,MAAM,UAAU,eAAe,CAAC,OAAe;IAC7C,OAAO,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAC5D,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc;IAC/C,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IAEzC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACjD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA0B,CAAC;QACxD,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/F,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAChF,CAAC;QAED,OAAO;YACL,QAAQ,EAAE;gBACR,aAAa,EAAE,OAAO,MAAM,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS;gBAC1F,aAAa,EAAE,MAAM,CAAC,aAAa;gBACnC,KAAK,EAAE,MAAM,CAAC,KAAsC;aACrD;YACD,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,MAAM,CAAC,aAAa,KAAK,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;SACnE,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAC;QACnD,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;QAChF,CAAC;QACD,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IAChF,CAAC;AACH,CAAC;AAED,gGAAgG;AAChG,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,MAAc,EAAE,QAAsB;IACvE,MAAM,QAAQ,GAAG,eAAe,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,GAAG,QAAQ,MAAM,CAAC;IAEnC,QAAQ,CAAC,aAAa,GAAG,cAAc,CAAC;IAExC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,EAAE,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;IACzE,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAAC,MAAM,CAAC;QACP,yDAAyD;QACzD,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAC1C,MAAM,EAAE,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;AACH,CAAC"}
@@ -1,9 +1,17 @@
1
+ /** Default configuration parameters for a supported LLM/embedding provider. */
1
2
  export interface ProviderDefaults {
3
+ /** Default base URL for API requests. */
2
4
  defaultBaseUrl: string;
5
+ /** Environment variable name to read the API key from. */
3
6
  apiKeyEnvVar: string;
7
+ /** Whether this provider supports embedding endpoints. */
4
8
  supportsEmbedding: boolean;
9
+ /** Whether this provider supports chat/completion endpoints. */
5
10
  supportsChat: boolean;
6
11
  }
12
+ /** Registry of known provider default configurations (base URLs, env vars, capability flags). */
7
13
  export declare const PROVIDER_DEFAULTS: Record<string, ProviderDefaults>;
14
+ /** Look up default configuration for a named provider. Returns undefined for unknown providers. */
8
15
  export declare function getProviderDefault(provider: string): ProviderDefaults | undefined;
16
+ /** Check whether a given provider uses an OpenAI-compatible API format. */
9
17
  export declare function isOpenAiCompatible(provider: string): boolean;
@@ -1,3 +1,4 @@
1
+ /** Registry of known provider default configurations (base URLs, env vars, capability flags). */
1
2
  export const PROVIDER_DEFAULTS = {
2
3
  ollama: {
3
4
  defaultBaseUrl: "http://127.0.0.1:11434",
@@ -72,9 +73,11 @@ export const PROVIDER_DEFAULTS = {
72
73
  supportsChat: false,
73
74
  },
74
75
  };
76
+ /** Look up default configuration for a named provider. Returns undefined for unknown providers. */
75
77
  export function getProviderDefault(provider) {
76
78
  return PROVIDER_DEFAULTS[provider];
77
79
  }
80
+ /** Check whether a given provider uses an OpenAI-compatible API format. */
78
81
  export function isOpenAiCompatible(provider) {
79
82
  if (provider === "ollama" || provider === "anthropic" || provider === "google" || provider === "cohere") {
80
83
  return false;
@@ -1 +1 @@
1
- {"version":3,"file":"provider-defaults.js","sourceRoot":"","sources":["../../src/core/provider-defaults.ts"],"names":[],"mappings":"AAOA,MAAM,CAAC,MAAM,iBAAiB,GAAqC;IACjE,MAAM,EAAE;QACN,cAAc,EAAE,wBAAwB;QACxC,YAAY,EAAE,EAAE;QAChB,iBAAiB,EAAE,IAAI;QACvB,YAAY,EAAE,IAAI;KACnB;IACD,MAAM,EAAE;QACN,cAAc,EAAE,2BAA2B;QAC3C,YAAY,EAAE,gBAAgB;QAC9B,iBAAiB,EAAE,IAAI;QACvB,YAAY,EAAE,IAAI;KACnB;IACD,MAAM,EAAE;QACN,cAAc,EAAE,qCAAqC;QACrD,YAAY,EAAE,gBAAgB;QAC9B,iBAAiB,EAAE,IAAI;QACvB,YAAY,EAAE,IAAI;KACnB;IACD,KAAK,EAAE;QACL,cAAc,EAAE,EAAE;QAClB,YAAY,EAAE,kBAAkB;QAChC,iBAAiB,EAAE,IAAI;QACvB,YAAY,EAAE,IAAI;KACnB;IACD,OAAO,EAAE;QACP,cAAc,EAAE,2BAA2B;QAC3C,YAAY,EAAE,iBAAiB;QAC/B,iBAAiB,EAAE,IAAI;QACvB,YAAY,EAAE,IAAI;KACnB;IACD,QAAQ,EAAE;QACR,cAAc,EAAE,6BAA6B;QAC7C,YAAY,EAAE,kBAAkB;QAChC,iBAAiB,EAAE,IAAI;QACvB,YAAY,EAAE,IAAI;KACnB;IACD,IAAI,EAAE;QACJ,cAAc,EAAE,gCAAgC;QAChD,YAAY,EAAE,cAAc;QAC5B,iBAAiB,EAAE,KAAK;QACxB,YAAY,EAAE,IAAI;KACnB;IACD,QAAQ,EAAE;QACR,cAAc,EAAE,0BAA0B;QAC1C,YAAY,EAAE,kBAAkB;QAChC,iBAAiB,EAAE,KAAK;QACxB,YAAY,EAAE,IAAI;KACnB;IACD,SAAS,EAAE;QACT,cAAc,EAAE,uCAAuC;QACvD,YAAY,EAAE,mBAAmB;QACjC,iBAAiB,EAAE,IAAI;QACvB,YAAY,EAAE,IAAI;KACnB;IACD,SAAS,EAAE;QACT,cAAc,EAAE,8BAA8B;QAC9C,YAAY,EAAE,mBAAmB;QACjC,iBAAiB,EAAE,KAAK;QACxB,YAAY,EAAE,IAAI;KACnB;IACD,MAAM,EAAE;QACN,cAAc,EAAE,8CAA8C;QAC9D,YAAY,EAAE,gBAAgB;QAC9B,iBAAiB,EAAE,KAAK;QACxB,YAAY,EAAE,IAAI;KACnB;IACD,MAAM,EAAE;QACN,cAAc,EAAE,0BAA0B;QAC1C,YAAY,EAAE,gBAAgB;QAC9B,iBAAiB,EAAE,IAAI;QACvB,YAAY,EAAE,KAAK;KACpB;CACF,CAAC;AAEF,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACxG,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
1
+ {"version":3,"file":"provider-defaults.js","sourceRoot":"","sources":["../../src/core/provider-defaults.ts"],"names":[],"mappings":"AAYA,iGAAiG;AACjG,MAAM,CAAC,MAAM,iBAAiB,GAAqC;IACjE,MAAM,EAAE;QACN,cAAc,EAAE,wBAAwB;QACxC,YAAY,EAAE,EAAE;QAChB,iBAAiB,EAAE,IAAI;QACvB,YAAY,EAAE,IAAI;KACnB;IACD,MAAM,EAAE;QACN,cAAc,EAAE,2BAA2B;QAC3C,YAAY,EAAE,gBAAgB;QAC9B,iBAAiB,EAAE,IAAI;QACvB,YAAY,EAAE,IAAI;KACnB;IACD,MAAM,EAAE;QACN,cAAc,EAAE,qCAAqC;QACrD,YAAY,EAAE,gBAAgB;QAC9B,iBAAiB,EAAE,IAAI;QACvB,YAAY,EAAE,IAAI;KACnB;IACD,KAAK,EAAE;QACL,cAAc,EAAE,EAAE;QAClB,YAAY,EAAE,kBAAkB;QAChC,iBAAiB,EAAE,IAAI;QACvB,YAAY,EAAE,IAAI;KACnB;IACD,OAAO,EAAE;QACP,cAAc,EAAE,2BAA2B;QAC3C,YAAY,EAAE,iBAAiB;QAC/B,iBAAiB,EAAE,IAAI;QACvB,YAAY,EAAE,IAAI;KACnB;IACD,QAAQ,EAAE;QACR,cAAc,EAAE,6BAA6B;QAC7C,YAAY,EAAE,kBAAkB;QAChC,iBAAiB,EAAE,IAAI;QACvB,YAAY,EAAE,IAAI;KACnB;IACD,IAAI,EAAE;QACJ,cAAc,EAAE,gCAAgC;QAChD,YAAY,EAAE,cAAc;QAC5B,iBAAiB,EAAE,KAAK;QACxB,YAAY,EAAE,IAAI;KACnB;IACD,QAAQ,EAAE;QACR,cAAc,EAAE,0BAA0B;QAC1C,YAAY,EAAE,kBAAkB;QAChC,iBAAiB,EAAE,KAAK;QACxB,YAAY,EAAE,IAAI;KACnB;IACD,SAAS,EAAE;QACT,cAAc,EAAE,uCAAuC;QACvD,YAAY,EAAE,mBAAmB;QACjC,iBAAiB,EAAE,IAAI;QACvB,YAAY,EAAE,IAAI;KACnB;IACD,SAAS,EAAE;QACT,cAAc,EAAE,8BAA8B;QAC9C,YAAY,EAAE,mBAAmB;QACjC,iBAAiB,EAAE,KAAK;QACxB,YAAY,EAAE,IAAI;KACnB;IACD,MAAM,EAAE;QACN,cAAc,EAAE,8CAA8C;QAC9D,YAAY,EAAE,gBAAgB;QAC9B,iBAAiB,EAAE,KAAK;QACxB,YAAY,EAAE,IAAI;KACnB;IACD,MAAM,EAAE;QACN,cAAc,EAAE,0BAA0B;QAC1C,YAAY,EAAE,gBAAgB;QAC9B,iBAAiB,EAAE,IAAI;QACvB,YAAY,EAAE,KAAK;KACpB;CACF,CAAC;AAEF,mGAAmG;AACnG,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,OAAO,iBAAiB,CAAC,QAAQ,CAAC,CAAC;AACrC,CAAC;AAED,2EAA2E;AAC3E,MAAM,UAAU,kBAAkB,CAAC,QAAgB;IACjD,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,QAAQ,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;QACxG,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,3 +1,6 @@
1
+ /** Type of RAG injection to perform on the next chat message. */
1
2
  export type RagInjectionType = "chunks" | "files";
3
+ /** Persist a flag indicating that RAG context should be injected on the next message. */
2
4
  export declare function setPendingRagInjection(storePath: string, type: RagInjectionType): void;
5
+ /** Read and remove the pending injection flag. Returns the injection type or undefined if none pending. */
3
6
  export declare function consumePendingRagInjection(storePath: string): RagInjectionType | undefined;
@@ -1,9 +1,11 @@
1
1
  import { writeFileSync, readFileSync, unlinkSync, existsSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  const FLAG_FILE = ".pending-injection";
4
+ /** Persist a flag indicating that RAG context should be injected on the next message. */
4
5
  export function setPendingRagInjection(storePath, type) {
5
6
  writeFileSync(join(storePath, FLAG_FILE), type, "utf-8");
6
7
  }
8
+ /** Read and remove the pending injection flag. Returns the injection type or undefined if none pending. */
7
9
  export function consumePendingRagInjection(storePath) {
8
10
  const flagPath = join(storePath, FLAG_FILE);
9
11
  if (!existsSync(flagPath))
@@ -1 +1 @@
1
- {"version":3,"file":"rag-injection-flag.js","sourceRoot":"","sources":["../../src/core/rag-injection-flag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAIjC,MAAM,SAAS,GAAG,oBAAoB,CAAC;AAEvC,MAAM,UAAU,sBAAsB,CAAC,SAAiB,EAAE,IAAsB;IAC9E,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC;AAED,MAAM,UAAU,0BAA0B,CAAC,SAAiB;IAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAqB,CAAC;QAClE,UAAU,CAAC,QAAQ,CAAC,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"rag-injection-flag.js","sourceRoot":"","sources":["../../src/core/rag-injection-flag.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC9E,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAKjC,MAAM,SAAS,GAAG,oBAAoB,CAAC;AAEvC,yFAAyF;AACzF,MAAM,UAAU,sBAAsB,CAAC,SAAiB,EAAE,IAAsB;IAC9E,aAAa,CAAC,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC;AAC3D,CAAC;AAED,2GAA2G;AAC3G,MAAM,UAAU,0BAA0B,CAAC,SAAiB;IAC1D,MAAM,QAAQ,GAAG,IAAI,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAC5C,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAqB,CAAC;QAClE,UAAU,CAAC,QAAQ,CAAC,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;AACH,CAAC"}
@@ -1,2 +1,3 @@
1
1
  import type { RagConfig } from "./config.js";
2
+ /** Resolve API keys for embedding, description, and image description providers. Checks config, env vars, and OpenCode provider config. */
2
3
  export declare function resolveApiKey(cfg: RagConfig, worktree?: string): void;
@@ -1,6 +1,7 @@
1
1
  import { readFileSync, existsSync } from "node:fs";
2
2
  import path from "node:path";
3
3
  import { getProviderDefault } from "./provider-defaults.js";
4
+ /** Resolve API keys for embedding, description, and image description providers. Checks config, env vars, and OpenCode provider config. */
4
5
  export function resolveApiKey(cfg, worktree) {
5
6
  resolveForSection(cfg.embedding.provider, cfg.embedding, worktree);
6
7
  if (cfg.description) {
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-api-key.js","sourceRoot":"","sources":["../../src/core/resolve-api-key.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve-api-key.js","sourceRoot":"","sources":["../../src/core/resolve-api-key.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { RagConfig } from "./config.js";
2
+ /** Live-configuration overrides that take precedence over the on-disk config file. */
2
3
  export interface RuntimeOverrides {
3
4
  retrieval?: {
4
5
  topK?: number;
@@ -41,6 +42,9 @@ export interface RuntimeOverrides {
41
42
  chunksKeybinding?: string;
42
43
  };
43
44
  }
45
+ /** Load runtime overrides from the store directory. Returns empty object if none exist. */
44
46
  export declare function loadRuntimeOverrides(storePath: string): RuntimeOverrides;
47
+ /** Save a single runtime override value at a dotted path. Creates intermediate objects as needed. */
45
48
  export declare function saveRuntimeOverride(storePath: string, path: string[], value: boolean | number | string): void;
49
+ /** Deep-merge runtime overrides into a config object. Returns a new object without mutating the original. */
46
50
  export declare function applyRuntimeOverrides(cfg: RagConfig, overrides: RuntimeOverrides): RagConfig;
@@ -1,6 +1,7 @@
1
1
  import { readFileSync, writeFileSync, existsSync, mkdirSync } from "node:fs";
2
2
  import { dirname, join } from "node:path";
3
3
  import { DEFAULT_CONFIG } from "./config.js";
4
+ /** Load runtime overrides from the store directory. Returns empty object if none exist. */
4
5
  export function loadRuntimeOverrides(storePath) {
5
6
  const overridePath = join(storePath, "runtime-overrides.json");
6
7
  if (!existsSync(overridePath))
@@ -12,6 +13,7 @@ export function loadRuntimeOverrides(storePath) {
12
13
  return {};
13
14
  }
14
15
  }
16
+ /** Save a single runtime override value at a dotted path. Creates intermediate objects as needed. */
15
17
  export function saveRuntimeOverride(storePath, path, value) {
16
18
  const overridePath = join(storePath, "runtime-overrides.json");
17
19
  const overrides = loadRuntimeOverrides(storePath);
@@ -34,10 +36,11 @@ export function saveRuntimeOverride(storePath, path, value) {
34
36
  // silently ignore write errors
35
37
  }
36
38
  }
39
+ /** Deep-merge runtime overrides into a config object. Returns a new object without mutating the original. */
37
40
  export function applyRuntimeOverrides(cfg, overrides) {
38
41
  if (!overrides || Object.keys(overrides).length === 0)
39
42
  return cfg;
40
- const merged = JSON.parse(JSON.stringify(cfg));
43
+ const merged = structuredClone(cfg);
41
44
  if (overrides.retrieval) {
42
45
  if (overrides.retrieval.topK !== undefined)
43
46
  merged.retrieval.topK = overrides.retrieval.topK;
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-overrides.js","sourceRoot":"","sources":["../../src/core/runtime-overrides.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-overrides.js","sourceRoot":"","sources":["../../src/core/runtime-overrides.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,30 @@
1
1
  import type { Chunk, DescriptionProvider } from "../core/interfaces.js";
2
2
  import type { DescriptionConfig } from "../core/config.js";
3
+ /**
4
+ * Description provider that uses Anthropic's Messages API to generate natural-language descriptions of code chunks.
5
+ *
6
+ * Requires an API key set in the configuration. The system prompt is prepended to each user message within a single
7
+ * message payload. Supports retry with exponential backoff.
8
+ */
3
9
  export declare class AnthropicDescriptionProvider implements DescriptionProvider {
4
10
  private readonly config;
11
+ /**
12
+ * @param config - Configuration for the Anthropic provider, including base URL, model, API key, and retry settings.
13
+ */
5
14
  constructor(config: DescriptionConfig);
15
+ /** @inheritdoc */
6
16
  generateDescription(chunk: Chunk): Promise<string>;
7
- generateBatchDescriptions(chunks: Chunk[]): Promise<Map<string, string>>;
8
- private executeBatch;
17
+ /** @inheritdoc */
18
+ generateBatchDescriptions(chunks: Chunk[], logDebug?: (msg: string) => void): Promise<Map<string, string>>;
19
+ /**
20
+ * Sends a request to the Anthropic Messages API with retry and exponential backoff.
21
+ * The system prompt is combined with all user messages into a single message payload, and
22
+ * the assistant placeholder is appended to elicit a completion.
23
+ *
24
+ * @param messages - The user messages to send.
25
+ * @param timeoutMs - Request timeout in milliseconds.
26
+ * @returns The trimmed response text from the model.
27
+ * @throws When all retry attempts are exhausted or the response is empty.
28
+ */
9
29
  private chatRequest;
10
30
  }
@@ -1,64 +1,66 @@
1
1
  import { postJson } from "../embedder/http.js";
2
+ import { buildUserMessage, sleep } from "./shared.js";
2
3
  import pLimit from "p-limit";
4
+ /** HTTP status codes that are safe to retry on. */
3
5
  const RETRYABLE_STATUSES = new Set([408, 429, 500, 502, 503, 504]);
6
+ /**
7
+ * Description provider that uses Anthropic's Messages API to generate natural-language descriptions of code chunks.
8
+ *
9
+ * Requires an API key set in the configuration. The system prompt is prepended to each user message within a single
10
+ * message payload. Supports retry with exponential backoff.
11
+ */
4
12
  export class AnthropicDescriptionProvider {
5
13
  config;
14
+ /**
15
+ * @param config - Configuration for the Anthropic provider, including base URL, model, API key, and retry settings.
16
+ */
6
17
  constructor(config) {
7
18
  this.config = config;
8
19
  }
20
+ /** @inheritdoc */
9
21
  async generateDescription(chunk) {
10
22
  const messages = [
11
- { role: "user", content: buildUserMessage(chunk) },
23
+ { role: "user", content: buildUserMessage(chunk, this.config.maxContentChars) },
12
24
  ];
13
25
  return this.chatRequest(messages, this.config.timeoutMs ?? 60000);
14
26
  }
15
- async generateBatchDescriptions(chunks) {
16
- if (chunks.length === 1) {
17
- const desc = await this.generateDescription(chunks[0]);
18
- return new Map([[chunks[0].id, desc]]);
19
- }
20
- const batchMaxChunks = this.config.batchMaxChunks ?? 25;
21
- const batchConcurrency = this.config.batchConcurrency ?? 3;
22
- const batches = [];
23
- for (let i = 0; i < chunks.length; i += batchMaxChunks) {
24
- batches.push(chunks.slice(i, i + batchMaxChunks));
25
- }
27
+ /** @inheritdoc */
28
+ async generateBatchDescriptions(chunks, logDebug) {
29
+ const concurrency = this.config.batchConcurrency ?? 3;
30
+ const total = chunks.length;
31
+ console.log(`[describer] Generating descriptions for ${total} chunks (concurrency: ${concurrency})`);
26
32
  const result = new Map();
27
- const batchLimit = pLimit(batchConcurrency);
28
- await Promise.all(batches.map((batch) => batchLimit(async () => {
33
+ const limit = pLimit(concurrency);
34
+ let completed = 0;
35
+ await Promise.all(chunks.map((chunk) => limit(async () => {
36
+ const userMsg = buildUserMessage(chunk, this.config.maxContentChars);
37
+ (logDebug ?? console.debug)(`[describer] REQUEST chunk ${chunk.id} (${chunk.metadata.filePath}:${chunk.metadata.startLine}):\n${userMsg}`);
29
38
  try {
30
- const batchResult = await this.executeBatch(batch);
31
- for (const [id, desc] of batchResult) {
32
- result.set(id, desc);
33
- }
39
+ const desc = await this.generateDescription(chunk);
40
+ result.set(chunk.id, desc);
41
+ (logDebug ?? console.debug)(`[describer] RESPONSE chunk ${chunk.id}: ${desc}`);
42
+ }
43
+ catch (err) {
44
+ console.warn(`[describer] Failed to describe chunk ${chunk.id} (${chunk.metadata.filePath}:${chunk.metadata.startLine}): ${err instanceof Error ? err.message : String(err)}`);
34
45
  }
35
- catch {
36
- // Batch failed individual fallback below handles missing chunks
46
+ completed++;
47
+ if (completed % 25 === 0 || completed === total) {
48
+ console.log(`[describer] Progress: ${completed}/${total}`);
37
49
  }
38
50
  })));
39
- const missingChunks = chunks.filter((c) => !result.has(c.id));
40
- if (missingChunks.length > 0) {
41
- const fallbackLimit = pLimit(batchConcurrency);
42
- await Promise.all(missingChunks.map((chunk) => fallbackLimit(async () => {
43
- try {
44
- const desc = await this.generateDescription(chunk);
45
- result.set(chunk.id, desc);
46
- }
47
- catch {
48
- // skip — caller will fall back to content
49
- }
50
- })));
51
- }
51
+ console.log(`[describer] Descriptions generated: ${result.size}/${total}`);
52
52
  return result;
53
53
  }
54
- async executeBatch(chunks) {
55
- const messages = [
56
- { role: "user", content: buildBatchUserMessage(chunks) },
57
- ];
58
- const timeoutMs = this.config.batchTimeoutMs ?? 120000;
59
- const responseText = await this.chatRequest(messages, timeoutMs);
60
- return parseBatchResponse(responseText, chunks);
61
- }
54
+ /**
55
+ * Sends a request to the Anthropic Messages API with retry and exponential backoff.
56
+ * The system prompt is combined with all user messages into a single message payload, and
57
+ * the assistant placeholder is appended to elicit a completion.
58
+ *
59
+ * @param messages - The user messages to send.
60
+ * @param timeoutMs - Request timeout in milliseconds.
61
+ * @returns The trimmed response text from the model.
62
+ * @throws When all retry attempts are exhausted or the response is empty.
63
+ */
62
64
  async chatRequest(messages, timeoutMs) {
63
65
  const baseUrl = this.config.baseUrl.replace(/\/+$/, "");
64
66
  const apiKey = this.config.apiKey ?? "";
@@ -98,74 +100,4 @@ export class AnthropicDescriptionProvider {
98
100
  throw lastError ?? new Error("Anthropic LLM request failed: unknown error");
99
101
  }
100
102
  }
101
- function sleep(ms) {
102
- return new Promise((resolve) => setTimeout(resolve, ms));
103
- }
104
- function buildUserMessage(chunk) {
105
- const parts = [];
106
- if (chunk.metadata.filePath) {
107
- parts.push(`File: ${chunk.metadata.filePath}`);
108
- }
109
- if (chunk.metadata.language) {
110
- parts.push(`Language: ${chunk.metadata.language}`);
111
- }
112
- parts.push(`Lines: ${chunk.metadata.startLine}-${chunk.metadata.endLine}`);
113
- parts.push("");
114
- parts.push("```" + (chunk.metadata.language || ""));
115
- parts.push(chunk.content);
116
- parts.push("```");
117
- return parts.join("\n");
118
- }
119
- function buildBatchUserMessage(chunks) {
120
- const first = chunks[0];
121
- const parts = [];
122
- if (first.metadata.filePath) {
123
- parts.push(`File: ${first.metadata.filePath}`);
124
- }
125
- if (first.metadata.language) {
126
- parts.push(`Language: ${first.metadata.language}`);
127
- }
128
- parts.push(`Chunks: ${chunks.length}`);
129
- parts.push("");
130
- for (let i = 0; i < chunks.length; i++) {
131
- const chunk = chunks[i];
132
- const lang = chunk.metadata.language || "";
133
- parts.push(`=== CHUNK ${i} (lines ${chunk.metadata.startLine}-${chunk.metadata.endLine}) ===`);
134
- parts.push("```" + lang);
135
- parts.push(chunk.content);
136
- parts.push("```");
137
- parts.push("");
138
- }
139
- return parts.join("\n");
140
- }
141
- function parseBatchResponse(text, chunks) {
142
- const result = new Map();
143
- const chunkPattern = /^CHUNK\s+(\d+)\s*[):-]?\s*/i;
144
- const lines = text.split("\n");
145
- let currentIndex = null;
146
- let currentDesc = [];
147
- for (const line of lines) {
148
- const match = chunkPattern.exec(line.trim());
149
- if (match) {
150
- if (currentIndex !== null && currentDesc.length > 0) {
151
- const desc = currentDesc.join(" ").trim();
152
- if (desc.length > 0 && currentIndex >= 0 && currentIndex < chunks.length) {
153
- result.set(chunks[currentIndex].id, desc);
154
- }
155
- }
156
- currentIndex = parseInt(match[1], 10);
157
- currentDesc = [line.slice(match[0].length).trim()];
158
- }
159
- else if (currentIndex !== null) {
160
- currentDesc.push(line.trim());
161
- }
162
- }
163
- if (currentIndex !== null && currentDesc.length > 0) {
164
- const desc = currentDesc.join(" ").trim();
165
- if (desc.length > 0 && currentIndex >= 0 && currentIndex < chunks.length) {
166
- result.set(chunks[currentIndex].id, desc);
167
- }
168
- }
169
- return result;
170
- }
171
103
  //# sourceMappingURL=anthropic.js.map