@code-rag/core 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (347) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +19 -0
  3. package/dist/auth/audit-log.d.ts +35 -0
  4. package/dist/auth/audit-log.js +110 -0
  5. package/dist/auth/audit-log.js.map +1 -0
  6. package/dist/auth/audit-log.test.d.ts +1 -0
  7. package/dist/auth/audit-log.test.js +261 -0
  8. package/dist/auth/audit-log.test.js.map +1 -0
  9. package/dist/auth/index.d.ts +6 -0
  10. package/dist/auth/index.js +5 -0
  11. package/dist/auth/index.js.map +1 -0
  12. package/dist/auth/oidc-provider.d.ts +49 -0
  13. package/dist/auth/oidc-provider.js +358 -0
  14. package/dist/auth/oidc-provider.js.map +1 -0
  15. package/dist/auth/oidc-provider.test.d.ts +1 -0
  16. package/dist/auth/oidc-provider.test.js +520 -0
  17. package/dist/auth/oidc-provider.test.js.map +1 -0
  18. package/dist/auth/rbac.d.ts +29 -0
  19. package/dist/auth/rbac.js +75 -0
  20. package/dist/auth/rbac.js.map +1 -0
  21. package/dist/auth/rbac.test.d.ts +1 -0
  22. package/dist/auth/rbac.test.js +224 -0
  23. package/dist/auth/rbac.test.js.map +1 -0
  24. package/dist/auth/saml-provider.d.ts +51 -0
  25. package/dist/auth/saml-provider.js +355 -0
  26. package/dist/auth/saml-provider.js.map +1 -0
  27. package/dist/auth/saml-provider.test.d.ts +1 -0
  28. package/dist/auth/saml-provider.test.js +422 -0
  29. package/dist/auth/saml-provider.test.js.map +1 -0
  30. package/dist/auth/types.d.ts +81 -0
  31. package/dist/auth/types.js +11 -0
  32. package/dist/auth/types.js.map +1 -0
  33. package/dist/auth/types.test.d.ts +1 -0
  34. package/dist/auth/types.test.js +147 -0
  35. package/dist/auth/types.test.js.map +1 -0
  36. package/dist/backlog/ab-reference-scanner.d.ts +10 -0
  37. package/dist/backlog/ab-reference-scanner.js +22 -0
  38. package/dist/backlog/ab-reference-scanner.js.map +1 -0
  39. package/dist/backlog/ab-reference-scanner.test.d.ts +1 -0
  40. package/dist/backlog/ab-reference-scanner.test.js +83 -0
  41. package/dist/backlog/ab-reference-scanner.test.js.map +1 -0
  42. package/dist/backlog/azure-devops-provider.d.ts +59 -0
  43. package/dist/backlog/azure-devops-provider.js +283 -0
  44. package/dist/backlog/azure-devops-provider.js.map +1 -0
  45. package/dist/backlog/backlog-provider.d.ts +13 -0
  46. package/dist/backlog/backlog-provider.js +6 -0
  47. package/dist/backlog/backlog-provider.js.map +1 -0
  48. package/dist/backlog/backlog-provider.test.d.ts +1 -0
  49. package/dist/backlog/backlog-provider.test.js +426 -0
  50. package/dist/backlog/backlog-provider.test.js.map +1 -0
  51. package/dist/backlog/clickup-provider.d.ts +55 -0
  52. package/dist/backlog/clickup-provider.js +301 -0
  53. package/dist/backlog/clickup-provider.js.map +1 -0
  54. package/dist/backlog/clickup-provider.test.d.ts +1 -0
  55. package/dist/backlog/clickup-provider.test.js +426 -0
  56. package/dist/backlog/clickup-provider.test.js.map +1 -0
  57. package/dist/backlog/clickup-reference-scanner.d.ts +10 -0
  58. package/dist/backlog/clickup-reference-scanner.js +32 -0
  59. package/dist/backlog/clickup-reference-scanner.js.map +1 -0
  60. package/dist/backlog/clickup-reference-scanner.test.d.ts +1 -0
  61. package/dist/backlog/clickup-reference-scanner.test.js +92 -0
  62. package/dist/backlog/clickup-reference-scanner.test.js.map +1 -0
  63. package/dist/backlog/code-linker.d.ts +63 -0
  64. package/dist/backlog/code-linker.js +90 -0
  65. package/dist/backlog/code-linker.js.map +1 -0
  66. package/dist/backlog/code-linker.test.d.ts +1 -0
  67. package/dist/backlog/code-linker.test.js +325 -0
  68. package/dist/backlog/code-linker.test.js.map +1 -0
  69. package/dist/backlog/index.d.ts +14 -0
  70. package/dist/backlog/index.js +8 -0
  71. package/dist/backlog/index.js.map +1 -0
  72. package/dist/backlog/jira-provider.d.ts +60 -0
  73. package/dist/backlog/jira-provider.js +272 -0
  74. package/dist/backlog/jira-provider.js.map +1 -0
  75. package/dist/backlog/jira-provider.test.d.ts +1 -0
  76. package/dist/backlog/jira-provider.test.js +449 -0
  77. package/dist/backlog/jira-provider.test.js.map +1 -0
  78. package/dist/backlog/jira-reference-scanner.d.ts +11 -0
  79. package/dist/backlog/jira-reference-scanner.js +26 -0
  80. package/dist/backlog/jira-reference-scanner.js.map +1 -0
  81. package/dist/backlog/jira-reference-scanner.test.d.ts +1 -0
  82. package/dist/backlog/jira-reference-scanner.test.js +127 -0
  83. package/dist/backlog/jira-reference-scanner.test.js.map +1 -0
  84. package/dist/backlog/types.d.ts +22 -0
  85. package/dist/backlog/types.js +1 -0
  86. package/dist/backlog/types.js.map +1 -0
  87. package/dist/chunker/ast-chunker.d.ts +45 -0
  88. package/dist/chunker/ast-chunker.js +292 -0
  89. package/dist/chunker/ast-chunker.js.map +1 -0
  90. package/dist/chunker/ast-chunker.test.d.ts +1 -0
  91. package/dist/chunker/ast-chunker.test.js +391 -0
  92. package/dist/chunker/ast-chunker.test.js.map +1 -0
  93. package/dist/chunker/chunker.d.ts +8 -0
  94. package/dist/chunker/chunker.js +1 -0
  95. package/dist/chunker/chunker.js.map +1 -0
  96. package/dist/chunker/index.d.ts +3 -0
  97. package/dist/chunker/index.js +2 -0
  98. package/dist/chunker/index.js.map +1 -0
  99. package/dist/config/config-parser.d.ts +15 -0
  100. package/dist/config/config-parser.js +283 -0
  101. package/dist/config/config-parser.js.map +1 -0
  102. package/dist/config/config-parser.test.d.ts +1 -0
  103. package/dist/config/config-parser.test.js +699 -0
  104. package/dist/config/config-parser.test.js.map +1 -0
  105. package/dist/docs/confluence-provider.d.ts +121 -0
  106. package/dist/docs/confluence-provider.js +459 -0
  107. package/dist/docs/confluence-provider.js.map +1 -0
  108. package/dist/docs/confluence-provider.test.d.ts +1 -0
  109. package/dist/docs/confluence-provider.test.js +765 -0
  110. package/dist/docs/confluence-provider.test.js.map +1 -0
  111. package/dist/docs/index.d.ts +4 -0
  112. package/dist/docs/index.js +2 -0
  113. package/dist/docs/index.js.map +1 -0
  114. package/dist/docs/sharepoint-provider.d.ts +150 -0
  115. package/dist/docs/sharepoint-provider.js +637 -0
  116. package/dist/docs/sharepoint-provider.js.map +1 -0
  117. package/dist/docs/sharepoint-provider.test.d.ts +1 -0
  118. package/dist/docs/sharepoint-provider.test.js +873 -0
  119. package/dist/docs/sharepoint-provider.test.js.map +1 -0
  120. package/dist/embedding/bm25-index.d.ts +12 -0
  121. package/dist/embedding/bm25-index.js +89 -0
  122. package/dist/embedding/bm25-index.js.map +1 -0
  123. package/dist/embedding/bm25-index.test.d.ts +1 -0
  124. package/dist/embedding/bm25-index.test.js +289 -0
  125. package/dist/embedding/bm25-index.test.js.map +1 -0
  126. package/dist/embedding/hybrid-search.d.ts +13 -0
  127. package/dist/embedding/hybrid-search.js +124 -0
  128. package/dist/embedding/hybrid-search.js.map +1 -0
  129. package/dist/embedding/hybrid-search.test.d.ts +1 -0
  130. package/dist/embedding/hybrid-search.test.js +266 -0
  131. package/dist/embedding/hybrid-search.test.js.map +1 -0
  132. package/dist/embedding/index.d.ts +11 -0
  133. package/dist/embedding/index.js +7 -0
  134. package/dist/embedding/index.js.map +1 -0
  135. package/dist/embedding/lancedb-store.d.ts +21 -0
  136. package/dist/embedding/lancedb-store.js +172 -0
  137. package/dist/embedding/lancedb-store.js.map +1 -0
  138. package/dist/embedding/lancedb-store.test.d.ts +1 -0
  139. package/dist/embedding/lancedb-store.test.js +268 -0
  140. package/dist/embedding/lancedb-store.test.js.map +1 -0
  141. package/dist/embedding/model-lifecycle-manager.d.ts +83 -0
  142. package/dist/embedding/model-lifecycle-manager.js +419 -0
  143. package/dist/embedding/model-lifecycle-manager.js.map +1 -0
  144. package/dist/embedding/model-lifecycle-manager.test.d.ts +1 -0
  145. package/dist/embedding/model-lifecycle-manager.test.js +642 -0
  146. package/dist/embedding/model-lifecycle-manager.test.js.map +1 -0
  147. package/dist/embedding/ollama-embedding-provider.d.ts +16 -0
  148. package/dist/embedding/ollama-embedding-provider.js +74 -0
  149. package/dist/embedding/ollama-embedding-provider.js.map +1 -0
  150. package/dist/embedding/ollama-embedding-provider.test.d.ts +1 -0
  151. package/dist/embedding/ollama-embedding-provider.test.js +198 -0
  152. package/dist/embedding/ollama-embedding-provider.test.js.map +1 -0
  153. package/dist/embedding/openai-compatible-embedding-provider.d.ts +19 -0
  154. package/dist/embedding/openai-compatible-embedding-provider.js +108 -0
  155. package/dist/embedding/openai-compatible-embedding-provider.js.map +1 -0
  156. package/dist/embedding/openai-compatible-embedding-provider.test.d.ts +1 -0
  157. package/dist/embedding/openai-compatible-embedding-provider.test.js +456 -0
  158. package/dist/embedding/openai-compatible-embedding-provider.test.js.map +1 -0
  159. package/dist/embedding/qdrant-store.d.ts +28 -0
  160. package/dist/embedding/qdrant-store.js +174 -0
  161. package/dist/embedding/qdrant-store.js.map +1 -0
  162. package/dist/embedding/qdrant-store.test.d.ts +1 -0
  163. package/dist/embedding/qdrant-store.test.js +359 -0
  164. package/dist/embedding/qdrant-store.test.js.map +1 -0
  165. package/dist/enrichment/index.d.ts +4 -0
  166. package/dist/enrichment/index.js +2 -0
  167. package/dist/enrichment/index.js.map +1 -0
  168. package/dist/enrichment/nl-enricher.d.ts +16 -0
  169. package/dist/enrichment/nl-enricher.js +47 -0
  170. package/dist/enrichment/nl-enricher.js.map +1 -0
  171. package/dist/enrichment/nl-enricher.test.d.ts +1 -0
  172. package/dist/enrichment/nl-enricher.test.js +154 -0
  173. package/dist/enrichment/nl-enricher.test.js.map +1 -0
  174. package/dist/enrichment/ollama-client.d.ts +18 -0
  175. package/dist/enrichment/ollama-client.js +55 -0
  176. package/dist/enrichment/ollama-client.js.map +1 -0
  177. package/dist/enrichment/ollama-client.test.d.ts +1 -0
  178. package/dist/enrichment/ollama-client.test.js +129 -0
  179. package/dist/enrichment/ollama-client.test.js.map +1 -0
  180. package/dist/git/git-client.d.ts +22 -0
  181. package/dist/git/git-client.js +6 -0
  182. package/dist/git/git-client.js.map +1 -0
  183. package/dist/git/git-client.test.d.ts +1 -0
  184. package/dist/git/git-client.test.js +200 -0
  185. package/dist/git/git-client.test.js.map +1 -0
  186. package/dist/git/ignore-filter.d.ts +2 -0
  187. package/dist/git/ignore-filter.js +31 -0
  188. package/dist/git/ignore-filter.js.map +1 -0
  189. package/dist/git/ignore-filter.test.d.ts +1 -0
  190. package/dist/git/ignore-filter.test.js +87 -0
  191. package/dist/git/ignore-filter.test.js.map +1 -0
  192. package/dist/git/index.d.ts +4 -0
  193. package/dist/git/index.js +3 -0
  194. package/dist/git/index.js.map +1 -0
  195. package/dist/git/simple-git-client.d.ts +12 -0
  196. package/dist/git/simple-git-client.js +138 -0
  197. package/dist/git/simple-git-client.js.map +1 -0
  198. package/dist/graph/cross-repo-resolver.d.ts +50 -0
  199. package/dist/graph/cross-repo-resolver.js +315 -0
  200. package/dist/graph/cross-repo-resolver.js.map +1 -0
  201. package/dist/graph/cross-repo-resolver.test.d.ts +1 -0
  202. package/dist/graph/cross-repo-resolver.test.js +548 -0
  203. package/dist/graph/cross-repo-resolver.test.js.map +1 -0
  204. package/dist/graph/dependency-graph.d.ts +44 -0
  205. package/dist/graph/dependency-graph.js +108 -0
  206. package/dist/graph/dependency-graph.js.map +1 -0
  207. package/dist/graph/dependency-graph.test.d.ts +1 -0
  208. package/dist/graph/dependency-graph.test.js +276 -0
  209. package/dist/graph/dependency-graph.test.js.map +1 -0
  210. package/dist/graph/graph-builder.d.ts +11 -0
  211. package/dist/graph/graph-builder.js +113 -0
  212. package/dist/graph/graph-builder.js.map +1 -0
  213. package/dist/graph/graph-builder.test.d.ts +1 -0
  214. package/dist/graph/graph-builder.test.js +178 -0
  215. package/dist/graph/graph-builder.test.js.map +1 -0
  216. package/dist/graph/import-resolver.d.ts +11 -0
  217. package/dist/graph/import-resolver.js +199 -0
  218. package/dist/graph/import-resolver.js.map +1 -0
  219. package/dist/graph/import-resolver.test.d.ts +1 -0
  220. package/dist/graph/import-resolver.test.js +282 -0
  221. package/dist/graph/import-resolver.test.js.map +1 -0
  222. package/dist/graph/index.d.ts +7 -0
  223. package/dist/graph/index.js +4 -0
  224. package/dist/graph/index.js.map +1 -0
  225. package/dist/index.d.ts +31 -0
  226. package/dist/index.js +15 -0
  227. package/dist/index.js.map +1 -0
  228. package/dist/indexer/file-scanner.d.ts +34 -0
  229. package/dist/indexer/file-scanner.js +69 -0
  230. package/dist/indexer/file-scanner.js.map +1 -0
  231. package/dist/indexer/file-scanner.test.d.ts +1 -0
  232. package/dist/indexer/file-scanner.test.js +110 -0
  233. package/dist/indexer/file-scanner.test.js.map +1 -0
  234. package/dist/indexer/file-watcher.d.ts +79 -0
  235. package/dist/indexer/file-watcher.js +148 -0
  236. package/dist/indexer/incremental-indexer.d.ts +67 -0
  237. package/dist/indexer/incremental-indexer.js +142 -0
  238. package/dist/indexer/incremental-indexer.js.map +1 -0
  239. package/dist/indexer/incremental-indexer.test.d.ts +1 -0
  240. package/dist/indexer/incremental-indexer.test.js +266 -0
  241. package/dist/indexer/incremental-indexer.test.js.map +1 -0
  242. package/dist/indexer/index-check.d.ts +22 -0
  243. package/dist/indexer/index-check.js +74 -0
  244. package/dist/indexer/index-check.js.map +1 -0
  245. package/dist/indexer/index-check.test.d.ts +1 -0
  246. package/dist/indexer/index-check.test.js +100 -0
  247. package/dist/indexer/index-check.test.js.map +1 -0
  248. package/dist/indexer/index-state.d.ts +61 -0
  249. package/dist/indexer/index-state.js +82 -0
  250. package/dist/indexer/index-state.js.map +1 -0
  251. package/dist/indexer/index-state.test.d.ts +1 -0
  252. package/dist/indexer/index-state.test.js +140 -0
  253. package/dist/indexer/index-state.test.js.map +1 -0
  254. package/dist/indexer/index.d.ts +12 -0
  255. package/dist/indexer/index.js +6 -0
  256. package/dist/indexer/index.js.map +1 -0
  257. package/dist/indexer/multi-repo-indexer.d.ts +63 -0
  258. package/dist/indexer/multi-repo-indexer.js +144 -0
  259. package/dist/indexer/multi-repo-indexer.js.map +1 -0
  260. package/dist/indexer/multi-repo-indexer.test.d.ts +1 -0
  261. package/dist/indexer/multi-repo-indexer.test.js +238 -0
  262. package/dist/indexer/multi-repo-indexer.test.js.map +1 -0
  263. package/dist/parser/index.d.ts +4 -0
  264. package/dist/parser/index.js +3 -0
  265. package/dist/parser/index.js.map +1 -0
  266. package/dist/parser/language-registry.d.ts +46 -0
  267. package/dist/parser/language-registry.js +219 -0
  268. package/dist/parser/language-registry.js.map +1 -0
  269. package/dist/parser/language-registry.test.d.ts +1 -0
  270. package/dist/parser/language-registry.test.js +225 -0
  271. package/dist/parser/language-registry.test.js.map +1 -0
  272. package/dist/parser/markdown-parser.d.ts +124 -0
  273. package/dist/parser/markdown-parser.js +487 -0
  274. package/dist/parser/markdown-parser.js.map +1 -0
  275. package/dist/parser/markdown-parser.test.d.ts +1 -0
  276. package/dist/parser/markdown-parser.test.js +600 -0
  277. package/dist/parser/markdown-parser.test.js.map +1 -0
  278. package/dist/parser/tree-sitter-parser.d.ts +32 -0
  279. package/dist/parser/tree-sitter-parser.js +146 -0
  280. package/dist/parser/tree-sitter-parser.js.map +1 -0
  281. package/dist/retrieval/context-expander.d.ts +51 -0
  282. package/dist/retrieval/context-expander.js +218 -0
  283. package/dist/retrieval/context-expander.js.map +1 -0
  284. package/dist/retrieval/context-expander.test.d.ts +1 -0
  285. package/dist/retrieval/context-expander.test.js +339 -0
  286. package/dist/retrieval/context-expander.test.js.map +1 -0
  287. package/dist/retrieval/cross-encoder-reranker.d.ts +16 -0
  288. package/dist/retrieval/cross-encoder-reranker.js +90 -0
  289. package/dist/retrieval/cross-encoder-reranker.js.map +1 -0
  290. package/dist/retrieval/cross-encoder-reranker.test.d.ts +1 -0
  291. package/dist/retrieval/cross-encoder-reranker.test.js +305 -0
  292. package/dist/retrieval/cross-encoder-reranker.test.js.map +1 -0
  293. package/dist/retrieval/index.d.ts +8 -0
  294. package/dist/retrieval/index.js +4 -0
  295. package/dist/retrieval/index.js.map +1 -0
  296. package/dist/retrieval/query-analyzer.d.ts +29 -0
  297. package/dist/retrieval/query-analyzer.js +238 -0
  298. package/dist/retrieval/query-analyzer.js.map +1 -0
  299. package/dist/retrieval/query-analyzer.test.d.ts +1 -0
  300. package/dist/retrieval/query-analyzer.test.js +236 -0
  301. package/dist/retrieval/query-analyzer.test.js.map +1 -0
  302. package/dist/retrieval/token-budget.d.ts +51 -0
  303. package/dist/retrieval/token-budget.js +141 -0
  304. package/dist/retrieval/token-budget.js.map +1 -0
  305. package/dist/retrieval/token-budget.test.d.ts +1 -0
  306. package/dist/retrieval/token-budget.test.js +404 -0
  307. package/dist/retrieval/token-budget.test.js.map +1 -0
  308. package/dist/storage/azure-blob-provider.d.ts +19 -0
  309. package/dist/storage/azure-blob-provider.js +199 -0
  310. package/dist/storage/azure-blob-provider.js.map +1 -0
  311. package/dist/storage/azure-blob-provider.test.d.ts +1 -0
  312. package/dist/storage/azure-blob-provider.test.js +250 -0
  313. package/dist/storage/azure-blob-provider.test.js.map +1 -0
  314. package/dist/storage/gcs-provider.d.ts +22 -0
  315. package/dist/storage/gcs-provider.js +241 -0
  316. package/dist/storage/gcs-provider.js.map +1 -0
  317. package/dist/storage/gcs-provider.test.d.ts +1 -0
  318. package/dist/storage/gcs-provider.test.js +299 -0
  319. package/dist/storage/gcs-provider.test.js.map +1 -0
  320. package/dist/storage/index.d.ts +5 -0
  321. package/dist/storage/index.js +4 -0
  322. package/dist/storage/index.js.map +1 -0
  323. package/dist/storage/s3-provider.d.ts +21 -0
  324. package/dist/storage/s3-provider.js +220 -0
  325. package/dist/storage/s3-provider.js.map +1 -0
  326. package/dist/storage/s3-provider.test.d.ts +1 -0
  327. package/dist/storage/s3-provider.test.js +329 -0
  328. package/dist/storage/s3-provider.test.js.map +1 -0
  329. package/dist/storage/types.d.ts +65 -0
  330. package/dist/storage/types.js +12 -0
  331. package/dist/storage/types.js.map +1 -0
  332. package/dist/types/chunk.d.ts +32 -0
  333. package/dist/types/chunk.js +1 -0
  334. package/dist/types/chunk.js.map +1 -0
  335. package/dist/types/config.d.ts +71 -0
  336. package/dist/types/config.js +1 -0
  337. package/dist/types/config.js.map +1 -0
  338. package/dist/types/index.d.ts +5 -0
  339. package/dist/types/index.js +1 -0
  340. package/dist/types/index.js.map +1 -0
  341. package/dist/types/provider.d.ts +54 -0
  342. package/dist/types/provider.js +36 -0
  343. package/dist/types/provider.js.map +1 -0
  344. package/dist/types/search.d.ts +27 -0
  345. package/dist/types/search.js +1 -0
  346. package/dist/types/search.js.map +1 -0
  347. package/package.json +70 -0
@@ -0,0 +1,283 @@
1
+ import { readFile } from 'node:fs/promises';
2
+ import { join } from 'node:path';
3
+ import { ok, err } from 'neverthrow';
4
+ import { parse } from 'yaml';
5
+ import { z } from 'zod';
6
+ export class ConfigError extends Error {
7
+ constructor(message) {
8
+ super(message);
9
+ this.name = 'ConfigError';
10
+ }
11
+ }
12
+ // --- Zod Schemas ---
13
+ const openaiCompatibleConfigSchema = z.object({
14
+ baseUrl: z.string().min(1, 'OpenAI-compatible base URL must not be empty'),
15
+ apiKey: z.string().optional(),
16
+ maxBatchSize: z.number().int('maxBatchSize must be an integer').positive('maxBatchSize must be positive'),
17
+ });
18
+ const embeddingDockerConfigSchema = z.object({
19
+ image: z.string().min(1).default('ollama/ollama'),
20
+ gpu: z.enum(['auto', 'nvidia', 'none']).default('auto'),
21
+ });
22
+ const embeddingConfigSchema = z.object({
23
+ provider: z.string().min(1, 'Embedding provider must not be empty'),
24
+ model: z.string().min(1, 'Embedding model must not be empty'),
25
+ dimensions: z.number().int('Dimensions must be an integer').positive('Dimensions must be positive'),
26
+ openaiCompatible: openaiCompatibleConfigSchema.optional(),
27
+ autoStart: z.boolean().default(true),
28
+ autoStop: z.boolean().default(false),
29
+ docker: embeddingDockerConfigSchema.default({ image: 'ollama/ollama', gpu: 'auto' }),
30
+ });
31
+ const llmConfigSchema = z.object({
32
+ provider: z.string().min(1, 'LLM provider must not be empty'),
33
+ model: z.string().min(1, 'LLM model must not be empty'),
34
+ });
35
+ const ingestionConfigSchema = z.object({
36
+ maxTokensPerChunk: z.number().int('maxTokensPerChunk must be an integer').positive('maxTokensPerChunk must be positive'),
37
+ exclude: z.array(z.string()),
38
+ });
39
+ const searchConfigSchema = z.object({
40
+ topK: z.number().int('topK must be an integer').positive('topK must be positive'),
41
+ vectorWeight: z.number().min(0, 'vectorWeight must be between 0 and 1').max(1, 'vectorWeight must be between 0 and 1'),
42
+ bm25Weight: z.number().min(0, 'bm25Weight must be between 0 and 1').max(1, 'bm25Weight must be between 0 and 1'),
43
+ });
44
+ const qdrantStorageConfigSchema = z.object({
45
+ url: z.string().min(1).optional(),
46
+ collectionName: z.string().min(1).optional(),
47
+ });
48
+ const storageConfigSchema = z.object({
49
+ path: z.string().min(1, 'Storage path must not be empty'),
50
+ provider: z.enum(['lancedb', 'qdrant']).optional(),
51
+ qdrant: qdrantStorageConfigSchema.optional(),
52
+ });
53
+ const projectConfigSchema = z.object({
54
+ name: z.string().min(1, 'Project name must not be empty'),
55
+ languages: z.union([z.literal('auto'), z.array(z.string())]),
56
+ });
57
+ const rerankerConfigSchema = z.object({
58
+ enabled: z.boolean(),
59
+ model: z.string().min(1),
60
+ topN: z.number().int().positive().max(50),
61
+ });
62
+ export const repoConfigSchema = z.object({
63
+ path: z.string().min(1, 'Repo path must not be empty'),
64
+ name: z.string().min(1, 'Repo name must not be empty').optional(),
65
+ languages: z.array(z.string()).optional(),
66
+ exclude: z.array(z.string()).optional(),
67
+ });
68
+ const backlogConfigSchema = z.object({
69
+ provider: z.string(),
70
+ config: z.record(z.string(), z.unknown()).optional().default({}),
71
+ });
72
+ const codeRAGConfigSchema = z.object({
73
+ version: z.string().min(1, 'Version must not be empty'),
74
+ project: projectConfigSchema,
75
+ ingestion: ingestionConfigSchema,
76
+ embedding: embeddingConfigSchema,
77
+ llm: llmConfigSchema,
78
+ search: searchConfigSchema,
79
+ storage: storageConfigSchema,
80
+ reranker: rerankerConfigSchema.optional(),
81
+ repos: z.array(repoConfigSchema).optional(),
82
+ backlog: backlogConfigSchema.optional(),
83
+ });
84
+ // --- Defaults ---
85
+ const DEFAULT_CONFIG = {
86
+ version: '1',
87
+ project: {
88
+ name: 'unnamed',
89
+ languages: 'auto',
90
+ },
91
+ ingestion: {
92
+ maxTokensPerChunk: 512,
93
+ exclude: ['node_modules', 'dist', '.git', 'coverage'],
94
+ },
95
+ embedding: {
96
+ provider: 'auto',
97
+ model: 'nomic-embed-text',
98
+ dimensions: 768,
99
+ autoStart: true,
100
+ autoStop: false,
101
+ docker: { image: 'ollama/ollama', gpu: 'auto' },
102
+ },
103
+ llm: {
104
+ provider: 'ollama',
105
+ model: 'qwen2.5-coder:7b',
106
+ },
107
+ search: {
108
+ topK: 10,
109
+ vectorWeight: 0.7,
110
+ bm25Weight: 0.3,
111
+ },
112
+ storage: {
113
+ path: '.coderag',
114
+ },
115
+ reranker: {
116
+ enabled: false,
117
+ model: 'qwen2.5-coder:7b',
118
+ topN: 20,
119
+ },
120
+ };
121
+ // --- Environment variable interpolation ---
122
+ const ENV_VAR_PATTERN = /\$\{([^}]+)\}/g;
123
+ const ESCAPED_ENV_VAR_PATTERN = /\\\$\{([^}]+)\}/g;
124
+ function interpolateEnvVarsInString(value) {
125
+ // First, temporarily replace escaped \${...} with a placeholder
126
+ const placeholder = '\x00ENV_ESCAPED\x00';
127
+ const withPlaceholders = value.replace(ESCAPED_ENV_VAR_PATTERN, `${placeholder}$1${placeholder}`);
128
+ // Check for unresolved env vars
129
+ const missing = [];
130
+ const resolved = withPlaceholders.replace(ENV_VAR_PATTERN, (_match, varName) => {
131
+ const envValue = process.env[varName];
132
+ if (envValue === undefined) {
133
+ missing.push(varName);
134
+ return _match;
135
+ }
136
+ return envValue;
137
+ });
138
+ if (missing.length > 0) {
139
+ return new ConfigError(`Missing environment variable(s): ${missing.join(', ')}. Set them before running CodeRAG.`);
140
+ }
141
+ // Restore escaped sequences as literal ${...}
142
+ return resolved.replace(new RegExp(`${placeholder.replace(/\x00/g, '\\x00')}(.+?)${placeholder.replace(/\x00/g, '\\x00')}`, 'g'), (_match, varName) => `\${${varName}}`);
143
+ }
144
+ export function interpolateEnvVars(obj) {
145
+ if (typeof obj === 'string') {
146
+ return interpolateEnvVarsInString(obj);
147
+ }
148
+ if (Array.isArray(obj)) {
149
+ const result = [];
150
+ for (const item of obj) {
151
+ const interpolated = interpolateEnvVars(item);
152
+ if (interpolated instanceof ConfigError)
153
+ return interpolated;
154
+ result.push(interpolated);
155
+ }
156
+ return result;
157
+ }
158
+ if (obj !== null && typeof obj === 'object') {
159
+ const result = {};
160
+ for (const [key, value] of Object.entries(obj)) {
161
+ const interpolated = interpolateEnvVars(value);
162
+ if (interpolated instanceof ConfigError)
163
+ return interpolated;
164
+ result[key] = interpolated;
165
+ }
166
+ return result;
167
+ }
168
+ return obj;
169
+ }
170
+ // --- Helpers ---
171
+ function formatZodErrors(error) {
172
+ return error.issues
173
+ .map((issue) => {
174
+ const path = issue.path.length > 0 ? issue.path.join('.') : 'root';
175
+ return `${path}: ${issue.message}`;
176
+ })
177
+ .join('; ');
178
+ }
179
+ function normalizeEmbeddingConfig(embeddingPartial) {
180
+ // Work with raw Record<string, unknown> since YAML keys may be snake_case
181
+ const defaults = { ...DEFAULT_CONFIG.embedding };
182
+ const merged = { ...defaults, ...embeddingPartial };
183
+ // Support snake_case key from YAML: openai_compatible -> openaiCompatible
184
+ const openaiCompat = merged['openaiCompatible'] ??
185
+ merged['openai_compatible'];
186
+ // Remove the snake_case variant so only the camelCase one remains
187
+ delete merged['openai_compatible'];
188
+ if (openaiCompat) {
189
+ const compatDefaults = {
190
+ baseUrl: 'http://localhost:1234/v1',
191
+ maxBatchSize: 100,
192
+ };
193
+ const compat = { ...compatDefaults, ...openaiCompat };
194
+ // Normalize snake_case sub-keys: base_url, api_key, max_batch_size
195
+ if (compat['base_url'] !== undefined && compat['baseUrl'] === compatDefaults['baseUrl']) {
196
+ compat['baseUrl'] = compat['base_url'];
197
+ }
198
+ delete compat['base_url'];
199
+ if (compat['api_key'] !== undefined && compat['apiKey'] === undefined) {
200
+ compat['apiKey'] = compat['api_key'];
201
+ }
202
+ delete compat['api_key'];
203
+ if (compat['max_batch_size'] !== undefined && compat['maxBatchSize'] === compatDefaults['maxBatchSize']) {
204
+ compat['maxBatchSize'] = compat['max_batch_size'];
205
+ }
206
+ delete compat['max_batch_size'];
207
+ merged['openaiCompatible'] = compat;
208
+ }
209
+ return merged;
210
+ }
211
+ function applyDefaults(partial) {
212
+ return {
213
+ version: partial['version'] ?? DEFAULT_CONFIG.version,
214
+ project: {
215
+ ...DEFAULT_CONFIG.project,
216
+ ...partial['project'],
217
+ },
218
+ ingestion: {
219
+ ...DEFAULT_CONFIG.ingestion,
220
+ ...partial['ingestion'],
221
+ },
222
+ embedding: normalizeEmbeddingConfig(partial['embedding']),
223
+ llm: {
224
+ ...DEFAULT_CONFIG.llm,
225
+ ...partial['llm'],
226
+ },
227
+ search: {
228
+ ...DEFAULT_CONFIG.search,
229
+ ...partial['search'],
230
+ },
231
+ storage: {
232
+ ...DEFAULT_CONFIG.storage,
233
+ ...partial['storage'],
234
+ },
235
+ ...(partial['reranker'] !== undefined
236
+ ? {
237
+ reranker: {
238
+ ...DEFAULT_CONFIG.reranker,
239
+ ...partial['reranker'],
240
+ },
241
+ }
242
+ : {}),
243
+ ...(partial['repos'] !== undefined
244
+ ? { repos: partial['repos'] }
245
+ : {}),
246
+ ...(partial['backlog'] !== undefined
247
+ ? { backlog: partial['backlog'] }
248
+ : {}),
249
+ };
250
+ }
251
+ // --- Main ---
252
+ export async function loadConfig(rootDir) {
253
+ const configPath = join(rootDir, '.coderag.yaml');
254
+ let content;
255
+ try {
256
+ content = await readFile(configPath, 'utf-8');
257
+ }
258
+ catch {
259
+ return err(new ConfigError(`Config file not found: ${configPath}`));
260
+ }
261
+ let parsed;
262
+ try {
263
+ parsed = parse(content);
264
+ }
265
+ catch (error) {
266
+ const message = error instanceof Error ? error.message : 'Unknown parse error';
267
+ return err(new ConfigError(`Invalid YAML in config file: ${message}`));
268
+ }
269
+ if (parsed === null || parsed === undefined || typeof parsed !== 'object') {
270
+ return err(new ConfigError('Config file is empty or not a valid YAML object'));
271
+ }
272
+ // Interpolate environment variables (e.g., ${ADO_PAT} → process.env.ADO_PAT)
273
+ const interpolated = interpolateEnvVars(parsed);
274
+ if (interpolated instanceof ConfigError) {
275
+ return err(interpolated);
276
+ }
277
+ const withDefaults = applyDefaults(interpolated);
278
+ const validationResult = codeRAGConfigSchema.safeParse(withDefaults);
279
+ if (!validationResult.success) {
280
+ return err(new ConfigError(`Config validation failed: ${formatZodErrors(validationResult.error)}`));
281
+ }
282
+ return ok(validationResult.data);
283
+ }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config-parser.js","sourceRoot":"","sources":["../../src/config/config-parser.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export {};