@nexus-ai-nexoralabs/cli 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 (411) hide show
  1. package/.env.example +16 -0
  2. package/LICENSE +21 -0
  3. package/README.md +106 -0
  4. package/dist/api/index.d.ts +81 -0
  5. package/dist/api/index.d.ts.map +1 -0
  6. package/dist/api/index.js +224 -0
  7. package/dist/api/index.js.map +1 -0
  8. package/dist/chat/chatService.d.ts +49 -0
  9. package/dist/chat/chatService.d.ts.map +1 -0
  10. package/dist/chat/chatService.js +163 -0
  11. package/dist/chat/chatService.js.map +1 -0
  12. package/dist/chat/contextBuilder.d.ts +19 -0
  13. package/dist/chat/contextBuilder.d.ts.map +1 -0
  14. package/dist/chat/contextBuilder.js +43 -0
  15. package/dist/chat/contextBuilder.js.map +1 -0
  16. package/dist/chat/conversationService.d.ts +25 -0
  17. package/dist/chat/conversationService.d.ts.map +1 -0
  18. package/dist/chat/conversationService.js +55 -0
  19. package/dist/chat/conversationService.js.map +1 -0
  20. package/dist/chat/index.d.ts +6 -0
  21. package/dist/chat/index.d.ts.map +1 -0
  22. package/dist/chat/index.js +6 -0
  23. package/dist/chat/index.js.map +1 -0
  24. package/dist/chat/messageService.d.ts +18 -0
  25. package/dist/chat/messageService.d.ts.map +1 -0
  26. package/dist/chat/messageService.js +26 -0
  27. package/dist/chat/messageService.js.map +1 -0
  28. package/dist/chat/promptTemplates.d.ts +19 -0
  29. package/dist/chat/promptTemplates.d.ts.map +1 -0
  30. package/dist/chat/promptTemplates.js +32 -0
  31. package/dist/chat/promptTemplates.js.map +1 -0
  32. package/dist/cli/agentRunner.d.ts +126 -0
  33. package/dist/cli/agentRunner.d.ts.map +1 -0
  34. package/dist/cli/agentRunner.js +892 -0
  35. package/dist/cli/agentRunner.js.map +1 -0
  36. package/dist/cli/bin.d.ts +14 -0
  37. package/dist/cli/bin.d.ts.map +1 -0
  38. package/dist/cli/bin.js +20 -0
  39. package/dist/cli/bin.js.map +1 -0
  40. package/dist/cli/index.d.ts +3 -0
  41. package/dist/cli/index.d.ts.map +1 -0
  42. package/dist/cli/index.js +2 -0
  43. package/dist/cli/index.js.map +1 -0
  44. package/dist/cli/inputEngine.d.ts +76 -0
  45. package/dist/cli/inputEngine.d.ts.map +1 -0
  46. package/dist/cli/inputEngine.js +281 -0
  47. package/dist/cli/inputEngine.js.map +1 -0
  48. package/dist/cli/main.d.ts +9 -0
  49. package/dist/cli/main.d.ts.map +1 -0
  50. package/dist/cli/main.js +144 -0
  51. package/dist/cli/main.js.map +1 -0
  52. package/dist/cli/uiFormatters.d.ts +108 -0
  53. package/dist/cli/uiFormatters.d.ts.map +1 -0
  54. package/dist/cli/uiFormatters.js +925 -0
  55. package/dist/cli/uiFormatters.js.map +1 -0
  56. package/dist/common/logger.d.ts +13 -0
  57. package/dist/common/logger.d.ts.map +1 -0
  58. package/dist/common/logger.js +43 -0
  59. package/dist/common/logger.js.map +1 -0
  60. package/dist/config/firstRunHealthCheck.d.ts +50 -0
  61. package/dist/config/firstRunHealthCheck.d.ts.map +1 -0
  62. package/dist/config/firstRunHealthCheck.js +196 -0
  63. package/dist/config/firstRunHealthCheck.js.map +1 -0
  64. package/dist/config/firstRunService.d.ts +53 -0
  65. package/dist/config/firstRunService.d.ts.map +1 -0
  66. package/dist/config/firstRunService.js +93 -0
  67. package/dist/config/firstRunService.js.map +1 -0
  68. package/dist/config/index.d.ts +30 -0
  69. package/dist/config/index.d.ts.map +1 -0
  70. package/dist/config/index.js +65 -0
  71. package/dist/config/index.js.map +1 -0
  72. package/dist/config/productionPaths.d.ts +34 -0
  73. package/dist/config/productionPaths.d.ts.map +1 -0
  74. package/dist/config/productionPaths.js +95 -0
  75. package/dist/config/productionPaths.js.map +1 -0
  76. package/dist/config/workspaceService.d.ts +42 -0
  77. package/dist/config/workspaceService.d.ts.map +1 -0
  78. package/dist/config/workspaceService.js +218 -0
  79. package/dist/config/workspaceService.js.map +1 -0
  80. package/dist/desktop/appWindow.d.ts +21 -0
  81. package/dist/desktop/appWindow.d.ts.map +1 -0
  82. package/dist/desktop/appWindow.js +77 -0
  83. package/dist/desktop/appWindow.js.map +1 -0
  84. package/dist/desktop/main.d.ts +14 -0
  85. package/dist/desktop/main.d.ts.map +1 -0
  86. package/dist/desktop/main.js +90 -0
  87. package/dist/desktop/main.js.map +1 -0
  88. package/dist/desktop/preload.d.ts +14 -0
  89. package/dist/desktop/preload.d.ts.map +1 -0
  90. package/dist/desktop/preload.js +20 -0
  91. package/dist/desktop/preload.js.map +1 -0
  92. package/dist/intelligence/index.d.ts +33 -0
  93. package/dist/intelligence/index.d.ts.map +1 -0
  94. package/dist/intelligence/index.js +82 -0
  95. package/dist/intelligence/index.js.map +1 -0
  96. package/dist/intelligence/modelGateway.d.ts +35 -0
  97. package/dist/intelligence/modelGateway.d.ts.map +1 -0
  98. package/dist/intelligence/modelGateway.js +123 -0
  99. package/dist/intelligence/modelGateway.js.map +1 -0
  100. package/dist/intelligence/modelRegistry.d.ts +17 -0
  101. package/dist/intelligence/modelRegistry.d.ts.map +1 -0
  102. package/dist/intelligence/modelRegistry.js +87 -0
  103. package/dist/intelligence/modelRegistry.js.map +1 -0
  104. package/dist/intelligence/modelRouter.d.ts +76 -0
  105. package/dist/intelligence/modelRouter.d.ts.map +1 -0
  106. package/dist/intelligence/modelRouter.js +256 -0
  107. package/dist/intelligence/modelRouter.js.map +1 -0
  108. package/dist/intelligence/ollamaAdapter.d.ts +49 -0
  109. package/dist/intelligence/ollamaAdapter.d.ts.map +1 -0
  110. package/dist/intelligence/ollamaAdapter.js +197 -0
  111. package/dist/intelligence/ollamaAdapter.js.map +1 -0
  112. package/dist/intelligence/prototype/runPrototype.d.ts +14 -0
  113. package/dist/intelligence/prototype/runPrototype.d.ts.map +1 -0
  114. package/dist/intelligence/prototype/runPrototype.js +87 -0
  115. package/dist/intelligence/prototype/runPrototype.js.map +1 -0
  116. package/dist/intelligence/providers/embeddedInferenceProvider.d.ts +29 -0
  117. package/dist/intelligence/providers/embeddedInferenceProvider.d.ts.map +1 -0
  118. package/dist/intelligence/providers/embeddedInferenceProvider.js +162 -0
  119. package/dist/intelligence/providers/embeddedInferenceProvider.js.map +1 -0
  120. package/dist/intelligence/providers/index.d.ts +4 -0
  121. package/dist/intelligence/providers/index.d.ts.map +1 -0
  122. package/dist/intelligence/providers/index.js +4 -0
  123. package/dist/intelligence/providers/index.js.map +1 -0
  124. package/dist/intelligence/providers/inferenceProvider.d.ts +98 -0
  125. package/dist/intelligence/providers/inferenceProvider.d.ts.map +1 -0
  126. package/dist/intelligence/providers/inferenceProvider.js +9 -0
  127. package/dist/intelligence/providers/inferenceProvider.js.map +1 -0
  128. package/dist/intelligence/providers/ollamaInferenceProvider.d.ts +17 -0
  129. package/dist/intelligence/providers/ollamaInferenceProvider.d.ts.map +1 -0
  130. package/dist/intelligence/providers/ollamaInferenceProvider.js +103 -0
  131. package/dist/intelligence/providers/ollamaInferenceProvider.js.map +1 -0
  132. package/dist/intelligence/provisioning/hardwareDetector.d.ts +5 -0
  133. package/dist/intelligence/provisioning/hardwareDetector.d.ts.map +1 -0
  134. package/dist/intelligence/provisioning/hardwareDetector.js +48 -0
  135. package/dist/intelligence/provisioning/hardwareDetector.js.map +1 -0
  136. package/dist/intelligence/provisioning/index.d.ts +12 -0
  137. package/dist/intelligence/provisioning/index.d.ts.map +1 -0
  138. package/dist/intelligence/provisioning/index.js +12 -0
  139. package/dist/intelligence/provisioning/index.js.map +1 -0
  140. package/dist/intelligence/provisioning/modelDownloader.d.ts +22 -0
  141. package/dist/intelligence/provisioning/modelDownloader.d.ts.map +1 -0
  142. package/dist/intelligence/provisioning/modelDownloader.js +134 -0
  143. package/dist/intelligence/provisioning/modelDownloader.js.map +1 -0
  144. package/dist/intelligence/provisioning/modelManifest.d.ts +10 -0
  145. package/dist/intelligence/provisioning/modelManifest.d.ts.map +1 -0
  146. package/dist/intelligence/provisioning/modelManifest.js +72 -0
  147. package/dist/intelligence/provisioning/modelManifest.js.map +1 -0
  148. package/dist/intelligence/provisioning/modelSelector.d.ts +14 -0
  149. package/dist/intelligence/provisioning/modelSelector.d.ts.map +1 -0
  150. package/dist/intelligence/provisioning/modelSelector.js +40 -0
  151. package/dist/intelligence/provisioning/modelSelector.js.map +1 -0
  152. package/dist/intelligence/provisioning/modelStorage.d.ts +12 -0
  153. package/dist/intelligence/provisioning/modelStorage.d.ts.map +1 -0
  154. package/dist/intelligence/provisioning/modelStorage.js +66 -0
  155. package/dist/intelligence/provisioning/modelStorage.js.map +1 -0
  156. package/dist/intelligence/provisioning/modelUpdater.d.ts +29 -0
  157. package/dist/intelligence/provisioning/modelUpdater.d.ts.map +1 -0
  158. package/dist/intelligence/provisioning/modelUpdater.js +89 -0
  159. package/dist/intelligence/provisioning/modelUpdater.js.map +1 -0
  160. package/dist/intelligence/provisioning/modelVerifier.d.ts +16 -0
  161. package/dist/intelligence/provisioning/modelVerifier.d.ts.map +1 -0
  162. package/dist/intelligence/provisioning/modelVerifier.js +108 -0
  163. package/dist/intelligence/provisioning/modelVerifier.js.map +1 -0
  164. package/dist/intelligence/provisioning/nativeRuntime.d.ts +18 -0
  165. package/dist/intelligence/provisioning/nativeRuntime.d.ts.map +1 -0
  166. package/dist/intelligence/provisioning/nativeRuntime.js +78 -0
  167. package/dist/intelligence/provisioning/nativeRuntime.js.map +1 -0
  168. package/dist/intelligence/provisioning/platformDetector.d.ts +15 -0
  169. package/dist/intelligence/provisioning/platformDetector.d.ts.map +1 -0
  170. package/dist/intelligence/provisioning/platformDetector.js +40 -0
  171. package/dist/intelligence/provisioning/platformDetector.js.map +1 -0
  172. package/dist/intelligence/provisioning/setupState.d.ts +10 -0
  173. package/dist/intelligence/provisioning/setupState.d.ts.map +1 -0
  174. package/dist/intelligence/provisioning/setupState.js +59 -0
  175. package/dist/intelligence/provisioning/setupState.js.map +1 -0
  176. package/dist/intelligence/provisioning/types.d.ts +51 -0
  177. package/dist/intelligence/provisioning/types.d.ts.map +1 -0
  178. package/dist/intelligence/provisioning/types.js +2 -0
  179. package/dist/intelligence/provisioning/types.js.map +1 -0
  180. package/dist/intelligence/runtime/embeddedRuntimeAdapter.d.ts +26 -0
  181. package/dist/intelligence/runtime/embeddedRuntimeAdapter.d.ts.map +1 -0
  182. package/dist/intelligence/runtime/embeddedRuntimeAdapter.js +119 -0
  183. package/dist/intelligence/runtime/embeddedRuntimeAdapter.js.map +1 -0
  184. package/dist/intelligence/runtime/ollamaRuntimeAdapter.d.ts +28 -0
  185. package/dist/intelligence/runtime/ollamaRuntimeAdapter.d.ts.map +1 -0
  186. package/dist/intelligence/runtime/ollamaRuntimeAdapter.js +131 -0
  187. package/dist/intelligence/runtime/ollamaRuntimeAdapter.js.map +1 -0
  188. package/dist/intelligence/runtime/runtimeManager.d.ts +37 -0
  189. package/dist/intelligence/runtime/runtimeManager.d.ts.map +1 -0
  190. package/dist/intelligence/runtime/runtimeManager.js +168 -0
  191. package/dist/intelligence/runtime/runtimeManager.js.map +1 -0
  192. package/dist/intelligence/runtime/types.d.ts +56 -0
  193. package/dist/intelligence/runtime/types.d.ts.map +1 -0
  194. package/dist/intelligence/runtime/types.js +7 -0
  195. package/dist/intelligence/runtime/types.js.map +1 -0
  196. package/dist/knowledge/chunker.d.ts +18 -0
  197. package/dist/knowledge/chunker.d.ts.map +1 -0
  198. package/dist/knowledge/chunker.js +55 -0
  199. package/dist/knowledge/chunker.js.map +1 -0
  200. package/dist/knowledge/citationService.d.ts +26 -0
  201. package/dist/knowledge/citationService.d.ts.map +1 -0
  202. package/dist/knowledge/citationService.js +47 -0
  203. package/dist/knowledge/citationService.js.map +1 -0
  204. package/dist/knowledge/embeddings.d.ts +11 -0
  205. package/dist/knowledge/embeddings.d.ts.map +1 -0
  206. package/dist/knowledge/embeddings.js +28 -0
  207. package/dist/knowledge/embeddings.js.map +1 -0
  208. package/dist/knowledge/hybridSearch.d.ts +13 -0
  209. package/dist/knowledge/hybridSearch.d.ts.map +1 -0
  210. package/dist/knowledge/hybridSearch.js +38 -0
  211. package/dist/knowledge/hybridSearch.js.map +1 -0
  212. package/dist/knowledge/index.d.ts +25 -0
  213. package/dist/knowledge/index.d.ts.map +1 -0
  214. package/dist/knowledge/index.js +37 -0
  215. package/dist/knowledge/index.js.map +1 -0
  216. package/dist/knowledge/parsers.d.ts +20 -0
  217. package/dist/knowledge/parsers.d.ts.map +1 -0
  218. package/dist/knowledge/parsers.js +94 -0
  219. package/dist/knowledge/parsers.js.map +1 -0
  220. package/dist/knowledge/ragEngine.d.ts +24 -0
  221. package/dist/knowledge/ragEngine.d.ts.map +1 -0
  222. package/dist/knowledge/ragEngine.js +121 -0
  223. package/dist/knowledge/ragEngine.js.map +1 -0
  224. package/dist/knowledge/reranker.d.ts +10 -0
  225. package/dist/knowledge/reranker.d.ts.map +1 -0
  226. package/dist/knowledge/reranker.js +11 -0
  227. package/dist/knowledge/reranker.js.map +1 -0
  228. package/dist/knowledge/vectorStore.d.ts +22 -0
  229. package/dist/knowledge/vectorStore.d.ts.map +1 -0
  230. package/dist/knowledge/vectorStore.js +74 -0
  231. package/dist/knowledge/vectorStore.js.map +1 -0
  232. package/dist/main.d.ts +2 -0
  233. package/dist/main.d.ts.map +1 -0
  234. package/dist/main.js +113 -0
  235. package/dist/main.js.map +1 -0
  236. package/dist/orchestration/agentExecutionService.d.ts +29 -0
  237. package/dist/orchestration/agentExecutionService.d.ts.map +1 -0
  238. package/dist/orchestration/agentExecutionService.js +306 -0
  239. package/dist/orchestration/agentExecutionService.js.map +1 -0
  240. package/dist/orchestration/agentStateMachine.d.ts +29 -0
  241. package/dist/orchestration/agentStateMachine.d.ts.map +1 -0
  242. package/dist/orchestration/agentStateMachine.js +153 -0
  243. package/dist/orchestration/agentStateMachine.js.map +1 -0
  244. package/dist/orchestration/agentTaskService.d.ts +44 -0
  245. package/dist/orchestration/agentTaskService.d.ts.map +1 -0
  246. package/dist/orchestration/agentTaskService.js +168 -0
  247. package/dist/orchestration/agentTaskService.js.map +1 -0
  248. package/dist/orchestration/codingAgentDiscovery.d.ts +32 -0
  249. package/dist/orchestration/codingAgentDiscovery.d.ts.map +1 -0
  250. package/dist/orchestration/codingAgentDiscovery.js +148 -0
  251. package/dist/orchestration/codingAgentDiscovery.js.map +1 -0
  252. package/dist/orchestration/codingAgentService.d.ts +40 -0
  253. package/dist/orchestration/codingAgentService.d.ts.map +1 -0
  254. package/dist/orchestration/codingAgentService.js +319 -0
  255. package/dist/orchestration/codingAgentService.js.map +1 -0
  256. package/dist/orchestration/codingAgentTypes.d.ts +111 -0
  257. package/dist/orchestration/codingAgentTypes.d.ts.map +1 -0
  258. package/dist/orchestration/codingAgentTypes.js +32 -0
  259. package/dist/orchestration/codingAgentTypes.js.map +1 -0
  260. package/dist/orchestration/codingAgentVerifier.d.ts +34 -0
  261. package/dist/orchestration/codingAgentVerifier.d.ts.map +1 -0
  262. package/dist/orchestration/codingAgentVerifier.js +109 -0
  263. package/dist/orchestration/codingAgentVerifier.js.map +1 -0
  264. package/dist/orchestration/codingRepairService.d.ts +34 -0
  265. package/dist/orchestration/codingRepairService.d.ts.map +1 -0
  266. package/dist/orchestration/codingRepairService.js +120 -0
  267. package/dist/orchestration/codingRepairService.js.map +1 -0
  268. package/dist/orchestration/goalCompletionVerifier.d.ts +36 -0
  269. package/dist/orchestration/goalCompletionVerifier.d.ts.map +1 -0
  270. package/dist/orchestration/goalCompletionVerifier.js +165 -0
  271. package/dist/orchestration/goalCompletionVerifier.js.map +1 -0
  272. package/dist/orchestration/humanApprovalService.d.ts +89 -0
  273. package/dist/orchestration/humanApprovalService.d.ts.map +1 -0
  274. package/dist/orchestration/humanApprovalService.js +346 -0
  275. package/dist/orchestration/humanApprovalService.js.map +1 -0
  276. package/dist/orchestration/index.d.ts +47 -0
  277. package/dist/orchestration/index.d.ts.map +1 -0
  278. package/dist/orchestration/index.js +67 -0
  279. package/dist/orchestration/index.js.map +1 -0
  280. package/dist/orchestration/planner.d.ts +105 -0
  281. package/dist/orchestration/planner.d.ts.map +1 -0
  282. package/dist/orchestration/planner.js +692 -0
  283. package/dist/orchestration/planner.js.map +1 -0
  284. package/dist/orchestration/types.d.ts +109 -0
  285. package/dist/orchestration/types.d.ts.map +1 -0
  286. package/dist/orchestration/types.js +20 -0
  287. package/dist/orchestration/types.js.map +1 -0
  288. package/dist/preview/previewServer.d.ts +39 -0
  289. package/dist/preview/previewServer.d.ts.map +1 -0
  290. package/dist/preview/previewServer.js +228 -0
  291. package/dist/preview/previewServer.js.map +1 -0
  292. package/dist/preview/previewService.d.ts +43 -0
  293. package/dist/preview/previewService.d.ts.map +1 -0
  294. package/dist/preview/previewService.js +289 -0
  295. package/dist/preview/previewService.js.map +1 -0
  296. package/dist/preview/previewTypes.d.ts +35 -0
  297. package/dist/preview/previewTypes.d.ts.map +1 -0
  298. package/dist/preview/previewTypes.js +5 -0
  299. package/dist/preview/previewTypes.js.map +1 -0
  300. package/dist/storage/database.d.ts +12 -0
  301. package/dist/storage/database.d.ts.map +1 -0
  302. package/dist/storage/database.js +46 -0
  303. package/dist/storage/database.js.map +1 -0
  304. package/dist/storage/health.d.ts +17 -0
  305. package/dist/storage/health.d.ts.map +1 -0
  306. package/dist/storage/health.js +48 -0
  307. package/dist/storage/health.js.map +1 -0
  308. package/dist/storage/index.d.ts +45 -0
  309. package/dist/storage/index.d.ts.map +1 -0
  310. package/dist/storage/index.js +96 -0
  311. package/dist/storage/index.js.map +1 -0
  312. package/dist/storage/migration.d.ts +17 -0
  313. package/dist/storage/migration.d.ts.map +1 -0
  314. package/dist/storage/migration.js +354 -0
  315. package/dist/storage/migration.js.map +1 -0
  316. package/dist/storage/projectService.d.ts +19 -0
  317. package/dist/storage/projectService.d.ts.map +1 -0
  318. package/dist/storage/projectService.js +29 -0
  319. package/dist/storage/projectService.js.map +1 -0
  320. package/dist/storage/repositories/agentTaskRepository.d.ts +34 -0
  321. package/dist/storage/repositories/agentTaskRepository.d.ts.map +1 -0
  322. package/dist/storage/repositories/agentTaskRepository.js +128 -0
  323. package/dist/storage/repositories/agentTaskRepository.js.map +1 -0
  324. package/dist/storage/repositories/approvalRepository.d.ts +20 -0
  325. package/dist/storage/repositories/approvalRepository.d.ts.map +1 -0
  326. package/dist/storage/repositories/approvalRepository.js +116 -0
  327. package/dist/storage/repositories/approvalRepository.js.map +1 -0
  328. package/dist/storage/repositories/conversationRepository.d.ts +16 -0
  329. package/dist/storage/repositories/conversationRepository.d.ts.map +1 -0
  330. package/dist/storage/repositories/conversationRepository.js +50 -0
  331. package/dist/storage/repositories/conversationRepository.js.map +1 -0
  332. package/dist/storage/repositories/knowledgeRepository.d.ts +109 -0
  333. package/dist/storage/repositories/knowledgeRepository.d.ts.map +1 -0
  334. package/dist/storage/repositories/knowledgeRepository.js +177 -0
  335. package/dist/storage/repositories/knowledgeRepository.js.map +1 -0
  336. package/dist/storage/repositories/messageRepository.d.ts +13 -0
  337. package/dist/storage/repositories/messageRepository.d.ts.map +1 -0
  338. package/dist/storage/repositories/messageRepository.js +39 -0
  339. package/dist/storage/repositories/messageRepository.js.map +1 -0
  340. package/dist/storage/repositories/modelsRepository.d.ts +39 -0
  341. package/dist/storage/repositories/modelsRepository.d.ts.map +1 -0
  342. package/dist/storage/repositories/modelsRepository.js +92 -0
  343. package/dist/storage/repositories/modelsRepository.js.map +1 -0
  344. package/dist/storage/repositories/projectRepository.d.ts +14 -0
  345. package/dist/storage/repositories/projectRepository.d.ts.map +1 -0
  346. package/dist/storage/repositories/projectRepository.js +44 -0
  347. package/dist/storage/repositories/projectRepository.js.map +1 -0
  348. package/dist/storage/repositories/settingsRepository.d.ts +10 -0
  349. package/dist/storage/repositories/settingsRepository.d.ts.map +1 -0
  350. package/dist/storage/repositories/settingsRepository.js +27 -0
  351. package/dist/storage/repositories/settingsRepository.js.map +1 -0
  352. package/dist/storage/repositories/types.d.ts +56 -0
  353. package/dist/storage/repositories/types.d.ts.map +1 -0
  354. package/dist/storage/repositories/types.js +2 -0
  355. package/dist/storage/repositories/types.js.map +1 -0
  356. package/dist/tools/adapters/filesystemAdapter.d.ts +121 -0
  357. package/dist/tools/adapters/filesystemAdapter.d.ts.map +1 -0
  358. package/dist/tools/adapters/filesystemAdapter.js +808 -0
  359. package/dist/tools/adapters/filesystemAdapter.js.map +1 -0
  360. package/dist/tools/adapters/terminalAdapter.d.ts +67 -0
  361. package/dist/tools/adapters/terminalAdapter.d.ts.map +1 -0
  362. package/dist/tools/adapters/terminalAdapter.js +487 -0
  363. package/dist/tools/adapters/terminalAdapter.js.map +1 -0
  364. package/dist/tools/adapters/terminalCommandPolicy.d.ts +44 -0
  365. package/dist/tools/adapters/terminalCommandPolicy.d.ts.map +1 -0
  366. package/dist/tools/adapters/terminalCommandPolicy.js +422 -0
  367. package/dist/tools/adapters/terminalCommandPolicy.js.map +1 -0
  368. package/dist/tools/adapters/terminalTypes.d.ts +111 -0
  369. package/dist/tools/adapters/terminalTypes.d.ts.map +1 -0
  370. package/dist/tools/adapters/terminalTypes.js +26 -0
  371. package/dist/tools/adapters/terminalTypes.js.map +1 -0
  372. package/dist/tools/approvalGate.d.ts +24 -0
  373. package/dist/tools/approvalGate.d.ts.map +1 -0
  374. package/dist/tools/approvalGate.js +137 -0
  375. package/dist/tools/approvalGate.js.map +1 -0
  376. package/dist/tools/approvalPolicyEngine.d.ts +32 -0
  377. package/dist/tools/approvalPolicyEngine.d.ts.map +1 -0
  378. package/dist/tools/approvalPolicyEngine.js +141 -0
  379. package/dist/tools/approvalPolicyEngine.js.map +1 -0
  380. package/dist/tools/approvalTypes.d.ts +67 -0
  381. package/dist/tools/approvalTypes.d.ts.map +1 -0
  382. package/dist/tools/approvalTypes.js +23 -0
  383. package/dist/tools/approvalTypes.js.map +1 -0
  384. package/dist/tools/index.d.ts +72 -0
  385. package/dist/tools/index.d.ts.map +1 -0
  386. package/dist/tools/index.js +353 -0
  387. package/dist/tools/index.js.map +1 -0
  388. package/dist/tools/permissionEngine.d.ts +27 -0
  389. package/dist/tools/permissionEngine.d.ts.map +1 -0
  390. package/dist/tools/permissionEngine.js +130 -0
  391. package/dist/tools/permissionEngine.js.map +1 -0
  392. package/dist/tools/toolExecutor.d.ts +37 -0
  393. package/dist/tools/toolExecutor.d.ts.map +1 -0
  394. package/dist/tools/toolExecutor.js +440 -0
  395. package/dist/tools/toolExecutor.js.map +1 -0
  396. package/dist/tools/toolRegistry.d.ts +34 -0
  397. package/dist/tools/toolRegistry.d.ts.map +1 -0
  398. package/dist/tools/toolRegistry.js +92 -0
  399. package/dist/tools/toolRegistry.js.map +1 -0
  400. package/dist/tools/types.d.ts +82 -0
  401. package/dist/tools/types.d.ts.map +1 -0
  402. package/dist/tools/types.js +33 -0
  403. package/dist/tools/types.js.map +1 -0
  404. package/dist/ui/public/app.js +777 -0
  405. package/dist/ui/public/index.html +117 -0
  406. package/dist/ui/public/styles.css +413 -0
  407. package/dist/ui/server.d.ts +27 -0
  408. package/dist/ui/server.d.ts.map +1 -0
  409. package/dist/ui/server.js +373 -0
  410. package/dist/ui/server.js.map +1 -0
  411. package/package.json +63 -0
@@ -0,0 +1,28 @@
1
+ import crypto from 'node:crypto';
2
+ export class LocalFeatureEmbeddingProvider {
3
+ dimension = 64;
4
+ modelName = 'local-feature-hash-v1';
5
+ async embedText(text) {
6
+ const vector = new Array(this.dimension).fill(0);
7
+ const cleaned = text.toLowerCase().replace(/[^\w\s]/g, ' ');
8
+ const tokens = cleaned.split(/\s+/).filter(Boolean);
9
+ if (tokens.length === 0) {
10
+ return vector;
11
+ }
12
+ for (const token of tokens) {
13
+ const hashHex = crypto.createHash('md5').update(token).digest('hex');
14
+ const hashVal = parseInt(hashHex.substring(0, 8), 16);
15
+ const index = Math.abs(hashVal) % this.dimension;
16
+ vector[index] += 1;
17
+ }
18
+ // Normalize L2 vector
19
+ const norm = Math.sqrt(vector.reduce((sum, val) => sum + val * val, 0));
20
+ if (norm > 0) {
21
+ for (let i = 0; i < vector.length; i++) {
22
+ vector[i] = vector[i] / norm;
23
+ }
24
+ }
25
+ return vector;
26
+ }
27
+ }
28
+ //# sourceMappingURL=embeddings.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"embeddings.js","sourceRoot":"","sources":["../../src/knowledge/embeddings.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AAQjC,MAAM,OAAO,6BAA6B;IACxB,SAAS,GAAW,EAAE,CAAC;IACvB,SAAS,GAAW,uBAAuB,CAAC;IAE5D,KAAK,CAAC,SAAS,CAAC,IAAY;QAC1B,MAAM,MAAM,GAAG,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QACjD,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC;QAC5D,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAEpD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACrE,MAAM,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACtD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC;YACjD,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACrB,CAAC;QAED,sBAAsB;QACtB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QACxE,IAAI,IAAI,GAAG,CAAC,EAAE,CAAC;YACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACvC,MAAM,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC;YAC/B,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF"}
@@ -0,0 +1,13 @@
1
+ import type { VectorStore, SearchCandidate } from './vectorStore.js';
2
+ import type { IEmbeddingProvider } from './embeddings.js';
3
+ export interface HybridSearchOptions {
4
+ alpha?: number;
5
+ topK?: number;
6
+ }
7
+ export declare class HybridSearchEngine {
8
+ private vectorStore;
9
+ private embeddingProvider;
10
+ constructor(vectorStore: VectorStore, embeddingProvider: IEmbeddingProvider);
11
+ search(collectionId: string, query: string, options?: HybridSearchOptions): Promise<SearchCandidate[]>;
12
+ }
13
+ //# sourceMappingURL=hybridSearch.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hybridSearch.d.ts","sourceRoot":"","sources":["../../src/knowledge/hybridSearch.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AAE1D,MAAM,WAAW,mBAAmB;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,WAAW;IACnB,OAAO,CAAC,iBAAiB;gBADjB,WAAW,EAAE,WAAW,EACxB,iBAAiB,EAAE,kBAAkB;IAGlC,MAAM,CACjB,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,MAAM,EACb,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,eAAe,EAAE,CAAC;CAiC9B"}
@@ -0,0 +1,38 @@
1
+ export class HybridSearchEngine {
2
+ vectorStore;
3
+ embeddingProvider;
4
+ constructor(vectorStore, embeddingProvider) {
5
+ this.vectorStore = vectorStore;
6
+ this.embeddingProvider = embeddingProvider;
7
+ }
8
+ async search(collectionId, query, options = {}) {
9
+ const alpha = options.alpha ?? 0.6;
10
+ const topK = options.topK ?? 10;
11
+ const queryVector = await this.embeddingProvider.embedText(query);
12
+ const vectorCandidates = this.vectorStore.searchVector(collectionId, queryVector, topK * 2);
13
+ const lexicalCandidates = this.vectorStore.searchLexical(collectionId, query, topK * 2);
14
+ const mergedMap = new Map();
15
+ for (const c of vectorCandidates) {
16
+ mergedMap.set(c.chunkId, {
17
+ ...c,
18
+ combinedScore: alpha * c.vectorScore,
19
+ });
20
+ }
21
+ for (const c of lexicalCandidates) {
22
+ const existing = mergedMap.get(c.chunkId);
23
+ if (existing) {
24
+ existing.lexicalScore = c.lexicalScore;
25
+ existing.combinedScore = alpha * existing.vectorScore + (1 - alpha) * c.lexicalScore;
26
+ }
27
+ else {
28
+ mergedMap.set(c.chunkId, {
29
+ ...c,
30
+ combinedScore: (1 - alpha) * c.lexicalScore,
31
+ });
32
+ }
33
+ }
34
+ const merged = Array.from(mergedMap.values());
35
+ return merged.sort((a, b) => b.combinedScore - a.combinedScore).slice(0, topK);
36
+ }
37
+ }
38
+ //# sourceMappingURL=hybridSearch.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"hybridSearch.js","sourceRoot":"","sources":["../../src/knowledge/hybridSearch.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,kBAAkB;IAEnB;IACA;IAFV,YACU,WAAwB,EACxB,iBAAqC;QADrC,gBAAW,GAAX,WAAW,CAAa;QACxB,sBAAiB,GAAjB,iBAAiB,CAAoB;IAC5C,CAAC;IAEG,KAAK,CAAC,MAAM,CACjB,YAAoB,EACpB,KAAa,EACb,UAA+B,EAAE;QAEjC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC;QACnC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC;QAEhC,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAClE,MAAM,gBAAgB,GAAG,IAAI,CAAC,WAAW,CAAC,YAAY,CAAC,YAAY,EAAE,WAAW,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;QAC5F,MAAM,iBAAiB,GAAG,IAAI,CAAC,WAAW,CAAC,aAAa,CAAC,YAAY,EAAE,KAAK,EAAE,IAAI,GAAG,CAAC,CAAC,CAAC;QAExF,MAAM,SAAS,GAAG,IAAI,GAAG,EAA2B,CAAC;QAErD,KAAK,MAAM,CAAC,IAAI,gBAAgB,EAAE,CAAC;YACjC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE;gBACvB,GAAG,CAAC;gBACJ,aAAa,EAAE,KAAK,GAAG,CAAC,CAAC,WAAW;aACrC,CAAC,CAAC;QACL,CAAC;QAED,KAAK,MAAM,CAAC,IAAI,iBAAiB,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAC1C,IAAI,QAAQ,EAAE,CAAC;gBACb,QAAQ,CAAC,YAAY,GAAG,CAAC,CAAC,YAAY,CAAC;gBACvC,QAAQ,CAAC,aAAa,GAAG,KAAK,GAAG,QAAQ,CAAC,WAAW,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,YAAY,CAAC;YACvF,CAAC;iBAAM,CAAC;gBACN,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,EAAE;oBACvB,GAAG,CAAC;oBACJ,aAAa,EAAE,CAAC,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,YAAY;iBAC5C,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,CAAC,CAAC;QAC9C,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACjF,CAAC;CACF"}
@@ -0,0 +1,25 @@
1
+ import type { SubsystemStatus } from '../storage/index.js';
2
+ import type { KnowledgeRepository } from '../storage/repositories/knowledgeRepository.js';
3
+ import { RagEngine } from './ragEngine.js';
4
+ import { LogLevel } from '../common/logger.js';
5
+ export interface IKnowledgeEngine {
6
+ initialize(repo?: KnowledgeRepository): Promise<SubsystemStatus>;
7
+ getStatus(): SubsystemStatus;
8
+ }
9
+ export declare class KnowledgeEngine implements IKnowledgeEngine {
10
+ private initialized;
11
+ private logger;
12
+ rag: RagEngine;
13
+ constructor(logLevel?: LogLevel);
14
+ initialize(repo?: KnowledgeRepository): Promise<SubsystemStatus>;
15
+ getStatus(): SubsystemStatus;
16
+ }
17
+ export * from './parsers.js';
18
+ export * from './chunker.js';
19
+ export * from './embeddings.js';
20
+ export * from './vectorStore.js';
21
+ export * from './hybridSearch.js';
22
+ export * from './reranker.js';
23
+ export * from './citationService.js';
24
+ export * from './ragEngine.js';
25
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/knowledge/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAU,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEvD,MAAM,WAAW,gBAAgB;IAC/B,UAAU,CAAC,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACjE,SAAS,IAAI,eAAe,CAAC;CAC9B;AAED,qBAAa,eAAgB,YAAW,gBAAgB;IACtD,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAS;IAChB,GAAG,EAAG,SAAS,CAAC;gBAEX,QAAQ,GAAE,QAAiB;IAIjC,UAAU,CAAC,IAAI,CAAC,EAAE,mBAAmB,GAAG,OAAO,CAAC,eAAe,CAAC;IAatE,SAAS,IAAI,eAAe;CAQ7B;AAED,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,37 @@
1
+ import { RagEngine } from './ragEngine.js';
2
+ import { Logger } from '../common/logger.js';
3
+ export class KnowledgeEngine {
4
+ initialized = false;
5
+ logger;
6
+ rag;
7
+ constructor(logLevel = 'info') {
8
+ this.logger = new Logger('KnowledgeEngine', logLevel);
9
+ }
10
+ async initialize(repo) {
11
+ this.logger.info('Initializing KnowledgeEngine & local RAG pipeline');
12
+ if (repo) {
13
+ this.rag = new RagEngine(repo, 'info');
14
+ // Ensure a default collection exists
15
+ this.rag.getOrCreateDefaultCollection();
16
+ }
17
+ this.initialized = true;
18
+ return this.getStatus();
19
+ }
20
+ getStatus() {
21
+ return {
22
+ name: 'KnowledgeEngine',
23
+ initialized: this.initialized,
24
+ status: this.initialized ? 'ok' : 'degraded',
25
+ message: this.initialized ? 'Local RAG & Knowledge Engine ready' : 'Uninitialized',
26
+ };
27
+ }
28
+ }
29
+ export * from './parsers.js';
30
+ export * from './chunker.js';
31
+ export * from './embeddings.js';
32
+ export * from './vectorStore.js';
33
+ export * from './hybridSearch.js';
34
+ export * from './reranker.js';
35
+ export * from './citationService.js';
36
+ export * from './ragEngine.js';
37
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/knowledge/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAY,MAAM,qBAAqB,CAAC;AAOvD,MAAM,OAAO,eAAe;IAClB,WAAW,GAAG,KAAK,CAAC;IACpB,MAAM,CAAS;IAChB,GAAG,CAAa;IAEvB,YAAY,WAAqB,MAAM;QACrC,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CAAC,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IACxD,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAA0B;QACzC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAEtE,IAAI,IAAI,EAAE,CAAC;YACT,IAAI,CAAC,GAAG,GAAG,IAAI,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;YACvC,qCAAqC;YACrC,IAAI,CAAC,GAAG,CAAC,4BAA4B,EAAE,CAAC;QAC1C,CAAC;QAED,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,OAAO,IAAI,CAAC,SAAS,EAAE,CAAC;IAC1B,CAAC;IAED,SAAS;QACP,OAAO;YACL,IAAI,EAAE,iBAAiB;YACvB,WAAW,EAAE,IAAI,CAAC,WAAW;YAC7B,MAAM,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,UAAU;YAC5C,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,oCAAoC,CAAC,CAAC,CAAC,eAAe;SACnF,CAAC;IACJ,CAAC;CACF;AAED,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC;AACjC,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,sBAAsB,CAAC;AACrC,cAAc,gBAAgB,CAAC"}
@@ -0,0 +1,20 @@
1
+ export interface ParsedDocumentSection {
2
+ title: string | null;
3
+ pageNumber: number | null;
4
+ content: string;
5
+ }
6
+ export interface ParsedDocument {
7
+ filename: string;
8
+ sourcePath: string;
9
+ mimeType: string;
10
+ contentHash: string;
11
+ fullText: string;
12
+ sections: ParsedDocumentSection[];
13
+ }
14
+ export declare class DocumentParser {
15
+ parseFile(filePath: string): ParsedDocument;
16
+ parseRawText(filename: string, text: string, sourcePath?: string): ParsedDocument;
17
+ private detectMimeType;
18
+ private extractSections;
19
+ }
20
+ //# sourceMappingURL=parsers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsers.d.ts","sourceRoot":"","sources":["../../src/knowledge/parsers.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,qBAAqB,EAAE,CAAC;CACnC;AAED,qBAAa,cAAc;IAClB,SAAS,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc;IAwB3C,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,UAAU,GAAE,MAAiB,GAAG,cAAc;IAgBlG,OAAO,CAAC,cAAc;IAqBtB,OAAO,CAAC,eAAe;CAsCxB"}
@@ -0,0 +1,94 @@
1
+ import fs from 'node:fs';
2
+ import path from 'node:path';
3
+ import crypto from 'node:crypto';
4
+ export class DocumentParser {
5
+ parseFile(filePath) {
6
+ if (!fs.existsSync(filePath)) {
7
+ throw new Error(`File not found at path: '${filePath}'`);
8
+ }
9
+ const rawBytes = fs.readFileSync(filePath);
10
+ const contentHash = crypto.createHash('sha256').update(rawBytes).digest('hex');
11
+ const filename = path.basename(filePath);
12
+ const ext = path.extname(filePath).toLowerCase();
13
+ const mimeType = this.detectMimeType(ext);
14
+ const fullText = rawBytes.toString('utf-8');
15
+ const sections = this.extractSections(fullText, ext);
16
+ return {
17
+ filename,
18
+ sourcePath: filePath,
19
+ mimeType,
20
+ contentHash,
21
+ fullText,
22
+ sections,
23
+ };
24
+ }
25
+ parseRawText(filename, text, sourcePath = filename) {
26
+ const contentHash = crypto.createHash('sha256').update(text).digest('hex');
27
+ const ext = path.extname(filename).toLowerCase() || '.txt';
28
+ const mimeType = this.detectMimeType(ext);
29
+ const sections = this.extractSections(text, ext);
30
+ return {
31
+ filename,
32
+ sourcePath,
33
+ mimeType,
34
+ contentHash,
35
+ fullText: text,
36
+ sections,
37
+ };
38
+ }
39
+ detectMimeType(ext) {
40
+ switch (ext) {
41
+ case '.md':
42
+ case '.markdown':
43
+ return 'text/markdown';
44
+ case '.json':
45
+ return 'application/json';
46
+ case '.csv':
47
+ return 'text/csv';
48
+ case '.js':
49
+ case '.ts':
50
+ case '.py':
51
+ case '.java':
52
+ case '.c':
53
+ case '.cpp':
54
+ return 'text/x-code';
55
+ default:
56
+ return 'text/plain';
57
+ }
58
+ }
59
+ extractSections(text, ext) {
60
+ const lines = text.split('\n');
61
+ const sections = [];
62
+ let currentTitle = null;
63
+ let currentBuffer = [];
64
+ for (const line of lines) {
65
+ const trimmed = line.trim();
66
+ const isHeader = trimmed.startsWith('#') ||
67
+ (ext === '.md' && /^#+\s+/.test(trimmed)) ||
68
+ (ext === '.txt' && /^[A-Z0-9\s_\-]{3,50}:$/.test(trimmed));
69
+ if (isHeader) {
70
+ if (currentBuffer.length > 0) {
71
+ sections.push({
72
+ title: currentTitle,
73
+ pageNumber: 1,
74
+ content: currentBuffer.join('\n').trim(),
75
+ });
76
+ currentBuffer = [];
77
+ }
78
+ currentTitle = trimmed.replace(/^#+\s*/, '').replace(/:$/, '');
79
+ }
80
+ else {
81
+ currentBuffer.push(line);
82
+ }
83
+ }
84
+ if (currentBuffer.length > 0) {
85
+ sections.push({
86
+ title: currentTitle,
87
+ pageNumber: 1,
88
+ content: currentBuffer.join('\n').trim(),
89
+ });
90
+ }
91
+ return sections.length > 0 ? sections : [{ title: null, pageNumber: 1, content: text }];
92
+ }
93
+ }
94
+ //# sourceMappingURL=parsers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parsers.js","sourceRoot":"","sources":["../../src/knowledge/parsers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ import type { KnowledgeRepository } from '../storage/repositories/knowledgeRepository.js';
2
+ import type { KnowledgeCollectionRecord, DocumentRecord } from '../storage/repositories/knowledgeRepository.js';
3
+ import { type RetrievalResultPackage } from './citationService.js';
4
+ import { LogLevel } from '../common/logger.js';
5
+ export declare class RagEngine {
6
+ private knowledgeRepo;
7
+ private logger;
8
+ private parser;
9
+ private chunker;
10
+ private embeddingProvider;
11
+ private vectorStore;
12
+ private hybridSearch;
13
+ private reranker;
14
+ private citationService;
15
+ constructor(knowledgeRepo: KnowledgeRepository, logLevel?: LogLevel);
16
+ createCollection(name: string, projectId?: string | null): KnowledgeCollectionRecord;
17
+ getOrCreateDefaultCollection(): KnowledgeCollectionRecord;
18
+ listCollections(): KnowledgeCollectionRecord[];
19
+ ingestText(filename: string, text: string, collectionId: string): Promise<DocumentRecord>;
20
+ ingestFile(filePath: string, collectionId: string): Promise<DocumentRecord>;
21
+ retrieveEvidence(query: string, collectionId: string, topK?: number): Promise<RetrievalResultPackage>;
22
+ deleteDocument(documentId: string): boolean;
23
+ }
24
+ //# sourceMappingURL=ragEngine.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ragEngine.d.ts","sourceRoot":"","sources":["../../src/knowledge/ragEngine.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AAC1F,OAAO,KAAK,EAAE,yBAAyB,EAAE,cAAc,EAAE,MAAM,gDAAgD,CAAC;AAOhH,OAAO,EAAmB,KAAK,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AACpF,OAAO,EAAU,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAEvD,qBAAa,SAAS;IAWlB,OAAO,CAAC,aAAa;IAVvB,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,MAAM,CAAwB;IACtC,OAAO,CAAC,OAAO,CAA0D;IACzE,OAAO,CAAC,iBAAiB,CAAuC;IAChE,OAAO,CAAC,WAAW,CAAc;IACjC,OAAO,CAAC,YAAY,CAAqB;IACzC,OAAO,CAAC,QAAQ,CAA4B;IAC5C,OAAO,CAAC,eAAe,CAAyB;gBAGtC,aAAa,EAAE,mBAAmB,EAC1C,QAAQ,GAAE,QAAiB;IAOtB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,GAAE,MAAM,GAAG,IAAW,GAAG,yBAAyB;IAM1F,4BAA4B,IAAI,yBAAyB;IAQzD,eAAe,IAAI,yBAAyB,EAAE;IAIxC,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IA6DzF,UAAU,CAAC,QAAQ,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC;IAY3E,gBAAgB,CAC3B,KAAK,EAAE,MAAM,EACb,YAAY,EAAE,MAAM,EACpB,IAAI,GAAE,MAAU,GACf,OAAO,CAAC,sBAAsB,CAAC;IAkB3B,cAAc,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO;CAInD"}
@@ -0,0 +1,121 @@
1
+ import { DocumentParser } from './parsers.js';
2
+ import { Chunker } from './chunker.js';
3
+ import { LocalFeatureEmbeddingProvider } from './embeddings.js';
4
+ import { VectorStore } from './vectorStore.js';
5
+ import { HybridSearchEngine } from './hybridSearch.js';
6
+ import { SimpleReranker } from './reranker.js';
7
+ import { CitationService } from './citationService.js';
8
+ import { Logger } from '../common/logger.js';
9
+ export class RagEngine {
10
+ knowledgeRepo;
11
+ logger;
12
+ parser = new DocumentParser();
13
+ chunker = new Chunker({ targetChunkSize: 400, overlapSize: 50 });
14
+ embeddingProvider = new LocalFeatureEmbeddingProvider();
15
+ vectorStore;
16
+ hybridSearch;
17
+ reranker = new SimpleReranker(0.01);
18
+ citationService = new CitationService();
19
+ constructor(knowledgeRepo, logLevel = 'info') {
20
+ this.knowledgeRepo = knowledgeRepo;
21
+ this.logger = new Logger('RagEngine', logLevel);
22
+ this.vectorStore = new VectorStore(knowledgeRepo);
23
+ this.hybridSearch = new HybridSearchEngine(this.vectorStore, this.embeddingProvider);
24
+ }
25
+ createCollection(name, projectId = null) {
26
+ const id = `col-${Date.now()}-${Math.random().toString(36).substring(2, 7)}`;
27
+ this.logger.info(`Creating knowledge collection '${id}' (name: "${name}")`);
28
+ return this.knowledgeRepo.createCollection({ id, name, projectId });
29
+ }
30
+ getOrCreateDefaultCollection() {
31
+ const collections = this.knowledgeRepo.listCollections();
32
+ if (collections.length > 0) {
33
+ return collections[0];
34
+ }
35
+ return this.createCollection('Default Knowledge Base');
36
+ }
37
+ listCollections() {
38
+ return this.knowledgeRepo.listCollections();
39
+ }
40
+ async ingestText(filename, text, collectionId) {
41
+ const parsed = this.parser.parseRawText(filename, text);
42
+ // Check idempotency: if content hash matches, return existing document
43
+ const existing = this.knowledgeRepo.findDocumentByHash(collectionId, parsed.contentHash);
44
+ if (existing) {
45
+ this.logger.info(`Document '${filename}' hash match. Skipping duplicate indexing.`);
46
+ return existing;
47
+ }
48
+ const docId = `doc-${Date.now()}-${Math.random().toString(36).substring(2, 7)}`;
49
+ const versionId = `ver-${docId}-1`;
50
+ const docRecord = this.knowledgeRepo.createDocument({
51
+ id: docId,
52
+ collectionId,
53
+ filename: parsed.filename,
54
+ sourcePath: parsed.sourcePath,
55
+ mimeType: parsed.mimeType,
56
+ contentHash: parsed.contentHash,
57
+ });
58
+ this.knowledgeRepo.createVersion({
59
+ id: versionId,
60
+ documentId: docId,
61
+ version: 1,
62
+ content: parsed.fullText,
63
+ });
64
+ // Chunking
65
+ const chunkSpecs = this.chunker.chunkDocument(parsed);
66
+ this.logger.info(`Chunked document '${filename}' into ${chunkSpecs.length} chunk(s)`);
67
+ for (const spec of chunkSpecs) {
68
+ const chunkId = `chk-${docId}-${spec.chunkIndex}`;
69
+ this.knowledgeRepo.createChunk({
70
+ id: chunkId,
71
+ documentId: docId,
72
+ versionId,
73
+ collectionId,
74
+ chunkIndex: spec.chunkIndex,
75
+ content: spec.content,
76
+ section: spec.section,
77
+ pageNumber: spec.pageNumber,
78
+ tokenCount: spec.tokenCount,
79
+ });
80
+ // Local vector embedding
81
+ const vector = await this.embeddingProvider.embedText(spec.content);
82
+ const embId = `emb-${chunkId}`;
83
+ this.knowledgeRepo.saveEmbedding({
84
+ id: embId,
85
+ chunkId,
86
+ embedding: vector,
87
+ modelName: this.embeddingProvider.modelName,
88
+ });
89
+ }
90
+ return docRecord;
91
+ }
92
+ async ingestFile(filePath, collectionId) {
93
+ const parsed = this.parser.parseFile(filePath);
94
+ const existing = this.knowledgeRepo.findDocumentByHash(collectionId, parsed.contentHash);
95
+ if (existing) {
96
+ this.logger.info(`File '${filePath}' hash match. Skipping duplicate indexing.`);
97
+ return existing;
98
+ }
99
+ return this.ingestText(parsed.filename, parsed.fullText, collectionId);
100
+ }
101
+ async retrieveEvidence(query, collectionId, topK = 3) {
102
+ this.logger.info(`Retrieving evidence for query in collection '${collectionId}'`);
103
+ const rawCandidates = await this.hybridSearch.search(collectionId, query, { alpha: 0.6, topK: topK * 2 });
104
+ const reranked = this.reranker.rerank(query, rawCandidates, topK);
105
+ const citations = this.citationService.formatCitations(reranked);
106
+ const groundingStatus = this.citationService.evaluateGrounding(citations);
107
+ const evidenceText = this.citationService.assembleEvidenceBlock(citations);
108
+ return {
109
+ query,
110
+ citations,
111
+ groundingStatus,
112
+ evidenceText,
113
+ totalCandidatesFound: rawCandidates.length,
114
+ };
115
+ }
116
+ deleteDocument(documentId) {
117
+ this.logger.info(`Deleting document '${documentId}' and derived chunks/embeddings`);
118
+ return this.knowledgeRepo.deleteDocument(documentId);
119
+ }
120
+ }
121
+ //# sourceMappingURL=ragEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ragEngine.js","sourceRoot":"","sources":["../../src/knowledge/ragEngine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import type { SearchCandidate } from './vectorStore.js';
2
+ export interface IReranker {
3
+ rerank(query: string, candidates: SearchCandidate[], topN?: number): SearchCandidate[];
4
+ }
5
+ export declare class SimpleReranker implements IReranker {
6
+ private minScoreThreshold;
7
+ constructor(minScoreThreshold?: number);
8
+ rerank(_query: string, candidates: SearchCandidate[], topN?: number): SearchCandidate[];
9
+ }
10
+ //# sourceMappingURL=reranker.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reranker.d.ts","sourceRoot":"","sources":["../../src/knowledge/reranker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAExD,MAAM,WAAW,SAAS;IACxB,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,eAAe,EAAE,CAAC;CACxF;AAED,qBAAa,cAAe,YAAW,SAAS;IAClC,OAAO,CAAC,iBAAiB;gBAAjB,iBAAiB,GAAE,MAAa;IAE7C,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,eAAe,EAAE,EAAE,IAAI,GAAE,MAAU,GAAG,eAAe,EAAE;CAIlG"}
@@ -0,0 +1,11 @@
1
+ export class SimpleReranker {
2
+ minScoreThreshold;
3
+ constructor(minScoreThreshold = 0.01) {
4
+ this.minScoreThreshold = minScoreThreshold;
5
+ }
6
+ rerank(_query, candidates, topN = 5) {
7
+ const filtered = candidates.filter((c) => c.combinedScore >= this.minScoreThreshold);
8
+ return filtered.sort((a, b) => b.combinedScore - a.combinedScore).slice(0, topN);
9
+ }
10
+ }
11
+ //# sourceMappingURL=reranker.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reranker.js","sourceRoot":"","sources":["../../src/knowledge/reranker.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,cAAc;IACL;IAApB,YAAoB,oBAA4B,IAAI;QAAhC,sBAAiB,GAAjB,iBAAiB,CAAe;IAAG,CAAC;IAEjD,MAAM,CAAC,MAAc,EAAE,UAA6B,EAAE,OAAe,CAAC;QAC3E,MAAM,QAAQ,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,IAAI,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACrF,OAAO,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,GAAG,CAAC,CAAC,aAAa,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;IACnF,CAAC;CACF"}
@@ -0,0 +1,22 @@
1
+ import type { KnowledgeRepository } from '../storage/repositories/knowledgeRepository.js';
2
+ export interface SearchCandidate {
3
+ chunkId: string;
4
+ documentId: string;
5
+ collectionId: string;
6
+ content: string;
7
+ section: string | null;
8
+ pageNumber: number | null;
9
+ filename: string;
10
+ sourcePath: string;
11
+ vectorScore: number;
12
+ lexicalScore: number;
13
+ combinedScore: number;
14
+ }
15
+ export declare class VectorStore {
16
+ private knowledgeRepo;
17
+ constructor(knowledgeRepo: KnowledgeRepository);
18
+ static cosineSimilarity(v1: number[], v2: number[]): number;
19
+ searchVector(collectionId: string, queryVector: number[], topK?: number): SearchCandidate[];
20
+ searchLexical(collectionId: string, query: string, topK?: number): SearchCandidate[];
21
+ }
22
+ //# sourceMappingURL=vectorStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vectorStore.d.ts","sourceRoot":"","sources":["../../src/knowledge/vectorStore.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,gDAAgD,CAAC;AAE1F,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;CACvB;AAED,qBAAa,WAAW;IACV,OAAO,CAAC,aAAa;gBAAb,aAAa,EAAE,mBAAmB;WAExC,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,MAAM;IAiB3D,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,EAAE,IAAI,GAAE,MAAU,GAAG,eAAe,EAAE;IAwB9F,aAAa,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,IAAI,GAAE,MAAU,GAAG,eAAe,EAAE;CAmC/F"}
@@ -0,0 +1,74 @@
1
+ export class VectorStore {
2
+ knowledgeRepo;
3
+ constructor(knowledgeRepo) {
4
+ this.knowledgeRepo = knowledgeRepo;
5
+ }
6
+ static cosineSimilarity(v1, v2) {
7
+ if (v1.length !== v2.length || v1.length === 0)
8
+ return 0;
9
+ let dot = 0;
10
+ let norm1 = 0;
11
+ let norm2 = 0;
12
+ for (let i = 0; i < v1.length; i++) {
13
+ dot += v1[i] * v2[i];
14
+ norm1 += v1[i] * v1[i];
15
+ norm2 += v2[i] * v2[i];
16
+ }
17
+ if (norm1 === 0 || norm2 === 0)
18
+ return 0;
19
+ return dot / (Math.sqrt(norm1) * Math.sqrt(norm2));
20
+ }
21
+ searchVector(collectionId, queryVector, topK = 5) {
22
+ const records = this.knowledgeRepo.getEmbeddingsForCollection(collectionId);
23
+ const results = [];
24
+ for (const rec of records) {
25
+ const vectorScore = VectorStore.cosineSimilarity(queryVector, rec.embedding);
26
+ results.push({
27
+ chunkId: rec.chunkId,
28
+ documentId: rec.documentId,
29
+ collectionId: rec.collectionId,
30
+ content: rec.content,
31
+ section: rec.section,
32
+ pageNumber: rec.pageNumber,
33
+ filename: rec.filename,
34
+ sourcePath: rec.sourcePath,
35
+ vectorScore,
36
+ lexicalScore: 0,
37
+ combinedScore: vectorScore,
38
+ });
39
+ }
40
+ return results.sort((a, b) => b.vectorScore - a.vectorScore).slice(0, topK);
41
+ }
42
+ searchLexical(collectionId, query, topK = 5) {
43
+ const chunks = this.knowledgeRepo.getChunksByCollection(collectionId);
44
+ const queryTokens = query.toLowerCase().split(/\s+/).filter(Boolean);
45
+ const results = [];
46
+ for (const chunk of chunks) {
47
+ const contentLower = chunk.content.toLowerCase();
48
+ let matchCount = 0;
49
+ for (const token of queryTokens) {
50
+ if (contentLower.includes(token)) {
51
+ matchCount++;
52
+ }
53
+ }
54
+ const lexicalScore = queryTokens.length > 0 ? matchCount / queryTokens.length : 0;
55
+ if (lexicalScore > 0) {
56
+ results.push({
57
+ chunkId: chunk.id,
58
+ documentId: chunk.documentId,
59
+ collectionId: chunk.collectionId,
60
+ content: chunk.content,
61
+ section: chunk.section,
62
+ pageNumber: chunk.pageNumber,
63
+ filename: chunk.filename,
64
+ sourcePath: chunk.sourcePath,
65
+ vectorScore: 0,
66
+ lexicalScore,
67
+ combinedScore: lexicalScore,
68
+ });
69
+ }
70
+ }
71
+ return results.sort((a, b) => b.lexicalScore - a.lexicalScore).slice(0, topK);
72
+ }
73
+ }
74
+ //# sourceMappingURL=vectorStore.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vectorStore.js","sourceRoot":"","sources":["../../src/knowledge/vectorStore.ts"],"names":[],"mappings":"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"}
package/dist/main.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=main.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../src/main.ts"],"names":[],"mappings":""}