@juspay/neurolink 9.1.1 → 9.3.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 (555) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +106 -37
  3. package/dist/agent/directTools.d.ts +11 -11
  4. package/dist/cli/commands/config.d.ts +6 -6
  5. package/dist/cli/commands/rag.d.ts +19 -0
  6. package/dist/cli/commands/rag.js +756 -0
  7. package/dist/cli/factories/commandFactory.js +146 -83
  8. package/dist/cli/parser.js +4 -1
  9. package/dist/core/baseProvider.d.ts +43 -30
  10. package/dist/core/baseProvider.js +98 -138
  11. package/dist/core/conversationMemoryFactory.d.ts +2 -2
  12. package/dist/core/conversationMemoryFactory.js +2 -2
  13. package/dist/core/conversationMemoryInitializer.d.ts +1 -2
  14. package/dist/core/conversationMemoryInitializer.js +2 -2
  15. package/dist/core/infrastructure/baseError.d.ts +21 -0
  16. package/dist/core/infrastructure/baseError.js +22 -0
  17. package/dist/core/infrastructure/baseFactory.d.ts +21 -0
  18. package/dist/core/infrastructure/baseFactory.js +54 -0
  19. package/dist/core/infrastructure/baseRegistry.d.ts +21 -0
  20. package/dist/core/infrastructure/baseRegistry.js +49 -0
  21. package/dist/core/infrastructure/index.d.ts +5 -0
  22. package/dist/core/infrastructure/index.js +5 -0
  23. package/dist/core/infrastructure/retry.d.ts +7 -0
  24. package/dist/core/infrastructure/retry.js +20 -0
  25. package/dist/core/infrastructure/typedEventEmitter.d.ts +8 -0
  26. package/dist/core/infrastructure/typedEventEmitter.js +23 -0
  27. package/dist/core/redisConversationMemoryManager.d.ts +1 -6
  28. package/dist/core/redisConversationMemoryManager.js +7 -19
  29. package/dist/factories/providerFactory.d.ts +5 -3
  30. package/dist/factories/providerFactory.js +31 -24
  31. package/dist/image-gen/ImageGenService.d.ts +143 -0
  32. package/dist/image-gen/ImageGenService.js +345 -0
  33. package/dist/image-gen/imageGenTools.d.ts +126 -0
  34. package/dist/image-gen/imageGenTools.js +304 -0
  35. package/dist/image-gen/index.d.ts +46 -0
  36. package/dist/image-gen/index.js +48 -0
  37. package/dist/image-gen/types.d.ts +237 -0
  38. package/dist/image-gen/types.js +24 -0
  39. package/dist/index.d.ts +46 -12
  40. package/dist/index.js +88 -36
  41. package/dist/lib/agent/directTools.d.ts +8 -8
  42. package/dist/lib/core/baseProvider.d.ts +43 -30
  43. package/dist/lib/core/baseProvider.js +98 -138
  44. package/dist/lib/core/conversationMemoryFactory.d.ts +2 -2
  45. package/dist/lib/core/conversationMemoryFactory.js +2 -2
  46. package/dist/lib/core/conversationMemoryInitializer.d.ts +1 -2
  47. package/dist/lib/core/conversationMemoryInitializer.js +2 -2
  48. package/dist/lib/core/infrastructure/baseError.d.ts +21 -0
  49. package/dist/lib/core/infrastructure/baseError.js +23 -0
  50. package/dist/lib/core/infrastructure/baseFactory.d.ts +21 -0
  51. package/dist/lib/core/infrastructure/baseFactory.js +55 -0
  52. package/dist/lib/core/infrastructure/baseRegistry.d.ts +21 -0
  53. package/dist/lib/core/infrastructure/baseRegistry.js +50 -0
  54. package/dist/lib/core/infrastructure/index.d.ts +5 -0
  55. package/dist/lib/core/infrastructure/index.js +6 -0
  56. package/dist/lib/core/infrastructure/retry.d.ts +7 -0
  57. package/dist/lib/core/infrastructure/retry.js +21 -0
  58. package/dist/lib/core/infrastructure/typedEventEmitter.d.ts +8 -0
  59. package/dist/lib/core/infrastructure/typedEventEmitter.js +24 -0
  60. package/dist/lib/core/redisConversationMemoryManager.d.ts +1 -6
  61. package/dist/lib/core/redisConversationMemoryManager.js +7 -19
  62. package/dist/lib/factories/providerFactory.d.ts +5 -3
  63. package/dist/lib/factories/providerFactory.js +31 -24
  64. package/dist/lib/image-gen/ImageGenService.d.ts +143 -0
  65. package/dist/lib/image-gen/ImageGenService.js +346 -0
  66. package/dist/lib/image-gen/imageGenTools.d.ts +126 -0
  67. package/dist/lib/image-gen/imageGenTools.js +305 -0
  68. package/dist/lib/image-gen/index.d.ts +46 -0
  69. package/dist/lib/image-gen/index.js +49 -0
  70. package/dist/lib/image-gen/types.d.ts +237 -0
  71. package/dist/lib/image-gen/types.js +25 -0
  72. package/dist/lib/index.d.ts +46 -12
  73. package/dist/lib/index.js +88 -36
  74. package/dist/lib/mcp/index.d.ts +6 -5
  75. package/dist/lib/mcp/index.js +7 -5
  76. package/dist/lib/neurolink.d.ts +11 -13
  77. package/dist/lib/neurolink.js +95 -29
  78. package/dist/lib/processors/base/BaseFileProcessor.d.ts +273 -0
  79. package/dist/lib/processors/base/BaseFileProcessor.js +614 -0
  80. package/dist/lib/processors/base/index.d.ts +14 -0
  81. package/dist/lib/processors/base/index.js +20 -0
  82. package/dist/lib/processors/base/types.d.ts +593 -0
  83. package/dist/lib/processors/base/types.js +77 -0
  84. package/dist/lib/processors/cli/fileProcessorCli.d.ts +163 -0
  85. package/dist/lib/processors/cli/fileProcessorCli.js +389 -0
  86. package/dist/lib/processors/cli/index.d.ts +37 -0
  87. package/dist/lib/processors/cli/index.js +50 -0
  88. package/dist/lib/processors/code/ConfigProcessor.d.ts +171 -0
  89. package/dist/lib/processors/code/ConfigProcessor.js +401 -0
  90. package/dist/lib/processors/code/SourceCodeProcessor.d.ts +174 -0
  91. package/dist/lib/processors/code/SourceCodeProcessor.js +305 -0
  92. package/dist/lib/processors/code/index.d.ts +44 -0
  93. package/dist/lib/processors/code/index.js +61 -0
  94. package/dist/lib/processors/config/fileTypes.d.ts +283 -0
  95. package/dist/lib/processors/config/fileTypes.js +521 -0
  96. package/dist/lib/processors/config/index.d.ts +32 -0
  97. package/dist/lib/processors/config/index.js +93 -0
  98. package/dist/lib/processors/config/languageMap.d.ts +66 -0
  99. package/dist/lib/processors/config/languageMap.js +411 -0
  100. package/dist/lib/processors/config/mimeTypes.d.ts +376 -0
  101. package/dist/lib/processors/config/mimeTypes.js +339 -0
  102. package/dist/lib/processors/config/sizeLimits.d.ts +194 -0
  103. package/dist/lib/processors/config/sizeLimits.js +247 -0
  104. package/dist/lib/processors/data/JsonProcessor.d.ts +122 -0
  105. package/dist/lib/processors/data/JsonProcessor.js +204 -0
  106. package/dist/lib/processors/data/XmlProcessor.d.ts +160 -0
  107. package/dist/lib/processors/data/XmlProcessor.js +284 -0
  108. package/dist/lib/processors/data/YamlProcessor.d.ts +163 -0
  109. package/dist/lib/processors/data/YamlProcessor.js +295 -0
  110. package/dist/lib/processors/data/index.d.ts +49 -0
  111. package/dist/lib/processors/data/index.js +77 -0
  112. package/dist/lib/processors/document/ExcelProcessor.d.ts +238 -0
  113. package/dist/lib/processors/document/ExcelProcessor.js +520 -0
  114. package/dist/lib/processors/document/OpenDocumentProcessor.d.ts +69 -0
  115. package/dist/lib/processors/document/OpenDocumentProcessor.js +211 -0
  116. package/dist/lib/processors/document/RtfProcessor.d.ts +152 -0
  117. package/dist/lib/processors/document/RtfProcessor.js +362 -0
  118. package/dist/lib/processors/document/WordProcessor.d.ts +168 -0
  119. package/dist/lib/processors/document/WordProcessor.js +354 -0
  120. package/dist/lib/processors/document/index.d.ts +54 -0
  121. package/dist/lib/processors/document/index.js +91 -0
  122. package/dist/lib/processors/errors/FileErrorCode.d.ts +98 -0
  123. package/dist/lib/processors/errors/FileErrorCode.js +256 -0
  124. package/dist/lib/processors/errors/errorHelpers.d.ts +151 -0
  125. package/dist/lib/processors/errors/errorHelpers.js +379 -0
  126. package/dist/lib/processors/errors/errorSerializer.d.ts +139 -0
  127. package/dist/lib/processors/errors/errorSerializer.js +508 -0
  128. package/dist/lib/processors/errors/index.d.ts +46 -0
  129. package/dist/lib/processors/errors/index.js +50 -0
  130. package/dist/lib/processors/index.d.ts +76 -0
  131. package/dist/lib/processors/index.js +113 -0
  132. package/dist/lib/processors/integration/FileProcessorIntegration.d.ts +244 -0
  133. package/dist/lib/processors/integration/FileProcessorIntegration.js +273 -0
  134. package/dist/lib/processors/integration/index.d.ts +42 -0
  135. package/dist/lib/processors/integration/index.js +45 -0
  136. package/dist/lib/processors/markup/HtmlProcessor.d.ts +169 -0
  137. package/dist/lib/processors/markup/HtmlProcessor.js +250 -0
  138. package/dist/lib/processors/markup/MarkdownProcessor.d.ts +165 -0
  139. package/dist/lib/processors/markup/MarkdownProcessor.js +245 -0
  140. package/dist/lib/processors/markup/SvgProcessor.d.ts +156 -0
  141. package/dist/lib/processors/markup/SvgProcessor.js +241 -0
  142. package/dist/lib/processors/markup/TextProcessor.d.ts +135 -0
  143. package/dist/lib/processors/markup/TextProcessor.js +189 -0
  144. package/dist/lib/processors/markup/index.d.ts +66 -0
  145. package/dist/lib/processors/markup/index.js +103 -0
  146. package/dist/lib/processors/registry/ProcessorRegistry.d.ts +334 -0
  147. package/dist/lib/processors/registry/ProcessorRegistry.js +609 -0
  148. package/dist/lib/processors/registry/index.d.ts +12 -0
  149. package/dist/lib/processors/registry/index.js +17 -0
  150. package/dist/lib/processors/registry/types.d.ts +53 -0
  151. package/dist/lib/processors/registry/types.js +11 -0
  152. package/dist/lib/providers/amazonBedrock.d.ts +15 -2
  153. package/dist/lib/providers/amazonBedrock.js +65 -8
  154. package/dist/lib/providers/anthropic.d.ts +3 -3
  155. package/dist/lib/providers/anthropic.js +10 -7
  156. package/dist/lib/providers/googleAiStudio.d.ts +5 -5
  157. package/dist/lib/providers/googleAiStudio.js +10 -7
  158. package/dist/lib/providers/googleVertex.d.ts +16 -4
  159. package/dist/lib/providers/googleVertex.js +72 -16
  160. package/dist/lib/providers/litellm.d.ts +3 -3
  161. package/dist/lib/providers/litellm.js +10 -10
  162. package/dist/lib/providers/mistral.d.ts +3 -3
  163. package/dist/lib/providers/mistral.js +7 -6
  164. package/dist/lib/providers/ollama.d.ts +3 -4
  165. package/dist/lib/providers/ollama.js +7 -8
  166. package/dist/lib/providers/openAI.d.ts +14 -2
  167. package/dist/lib/providers/openAI.js +60 -6
  168. package/dist/lib/providers/openRouter.d.ts +2 -2
  169. package/dist/lib/providers/openRouter.js +10 -6
  170. package/dist/lib/providers/sagemaker/language-model.d.ts +2 -2
  171. package/dist/lib/rag/ChunkerFactory.d.ts +91 -0
  172. package/dist/lib/rag/ChunkerFactory.js +321 -0
  173. package/dist/lib/rag/ChunkerRegistry.d.ts +91 -0
  174. package/dist/lib/rag/ChunkerRegistry.js +422 -0
  175. package/dist/lib/rag/chunkers/BaseChunker.d.ts +53 -0
  176. package/dist/lib/rag/chunkers/BaseChunker.js +144 -0
  177. package/dist/lib/rag/chunkers/CharacterChunker.d.ts +18 -0
  178. package/dist/lib/rag/chunkers/CharacterChunker.js +29 -0
  179. package/dist/lib/rag/chunkers/HTMLChunker.d.ts +19 -0
  180. package/dist/lib/rag/chunkers/HTMLChunker.js +39 -0
  181. package/dist/lib/rag/chunkers/JSONChunker.d.ts +19 -0
  182. package/dist/lib/rag/chunkers/JSONChunker.js +69 -0
  183. package/dist/lib/rag/chunkers/LaTeXChunker.d.ts +15 -0
  184. package/dist/lib/rag/chunkers/LaTeXChunker.js +64 -0
  185. package/dist/lib/rag/chunkers/MarkdownChunker.d.ts +15 -0
  186. package/dist/lib/rag/chunkers/MarkdownChunker.js +103 -0
  187. package/dist/lib/rag/chunkers/RecursiveChunker.d.ts +27 -0
  188. package/dist/lib/rag/chunkers/RecursiveChunker.js +140 -0
  189. package/dist/lib/rag/chunkers/SemanticMarkdownChunker.d.ts +22 -0
  190. package/dist/lib/rag/chunkers/SemanticMarkdownChunker.js +139 -0
  191. package/dist/lib/rag/chunkers/SentenceChunker.d.ts +19 -0
  192. package/dist/lib/rag/chunkers/SentenceChunker.js +67 -0
  193. package/dist/lib/rag/chunkers/TokenChunker.d.ts +19 -0
  194. package/dist/lib/rag/chunkers/TokenChunker.js +62 -0
  195. package/dist/lib/rag/chunkers/index.d.ts +15 -0
  196. package/dist/lib/rag/chunkers/index.js +16 -0
  197. package/dist/lib/rag/chunking/characterChunker.d.ts +16 -0
  198. package/dist/lib/rag/chunking/characterChunker.js +143 -0
  199. package/dist/lib/rag/chunking/chunkerRegistry.d.ts +67 -0
  200. package/dist/lib/rag/chunking/chunkerRegistry.js +195 -0
  201. package/dist/lib/rag/chunking/htmlChunker.d.ts +34 -0
  202. package/dist/lib/rag/chunking/htmlChunker.js +248 -0
  203. package/dist/lib/rag/chunking/index.d.ts +15 -0
  204. package/dist/lib/rag/chunking/index.js +18 -0
  205. package/dist/lib/rag/chunking/jsonChunker.d.ts +20 -0
  206. package/dist/lib/rag/chunking/jsonChunker.js +282 -0
  207. package/dist/lib/rag/chunking/latexChunker.d.ts +26 -0
  208. package/dist/lib/rag/chunking/latexChunker.js +252 -0
  209. package/dist/lib/rag/chunking/markdownChunker.d.ts +19 -0
  210. package/dist/lib/rag/chunking/markdownChunker.js +202 -0
  211. package/dist/lib/rag/chunking/recursiveChunker.d.ts +19 -0
  212. package/dist/lib/rag/chunking/recursiveChunker.js +149 -0
  213. package/dist/lib/rag/chunking/semanticChunker.d.ts +41 -0
  214. package/dist/lib/rag/chunking/semanticChunker.js +307 -0
  215. package/dist/lib/rag/chunking/sentenceChunker.d.ts +25 -0
  216. package/dist/lib/rag/chunking/sentenceChunker.js +231 -0
  217. package/dist/lib/rag/chunking/tokenChunker.d.ts +36 -0
  218. package/dist/lib/rag/chunking/tokenChunker.js +184 -0
  219. package/dist/lib/rag/document/MDocument.d.ts +198 -0
  220. package/dist/lib/rag/document/MDocument.js +393 -0
  221. package/dist/lib/rag/document/index.d.ts +5 -0
  222. package/dist/lib/rag/document/index.js +6 -0
  223. package/dist/lib/rag/document/loaders.d.ts +201 -0
  224. package/dist/lib/rag/document/loaders.js +501 -0
  225. package/dist/lib/rag/errors/RAGError.d.ts +244 -0
  226. package/dist/lib/rag/errors/RAGError.js +275 -0
  227. package/dist/lib/rag/errors/index.d.ts +6 -0
  228. package/dist/lib/rag/errors/index.js +7 -0
  229. package/dist/lib/rag/graphRag/graphRAG.d.ts +115 -0
  230. package/dist/lib/rag/graphRag/graphRAG.js +385 -0
  231. package/dist/lib/rag/graphRag/index.d.ts +4 -0
  232. package/dist/lib/rag/graphRag/index.js +5 -0
  233. package/dist/lib/rag/index.d.ts +103 -0
  234. package/dist/lib/rag/index.js +142 -0
  235. package/dist/lib/rag/metadata/MetadataExtractorFactory.d.ts +157 -0
  236. package/dist/lib/rag/metadata/MetadataExtractorFactory.js +419 -0
  237. package/dist/lib/rag/metadata/MetadataExtractorRegistry.d.ts +99 -0
  238. package/dist/lib/rag/metadata/MetadataExtractorRegistry.js +363 -0
  239. package/dist/lib/rag/metadata/index.d.ts +6 -0
  240. package/dist/lib/rag/metadata/index.js +10 -0
  241. package/dist/lib/rag/metadata/metadataExtractor.d.ts +69 -0
  242. package/dist/lib/rag/metadata/metadataExtractor.js +278 -0
  243. package/dist/lib/rag/pipeline/RAGPipeline.d.ts +235 -0
  244. package/dist/lib/rag/pipeline/RAGPipeline.js +402 -0
  245. package/dist/lib/rag/pipeline/contextAssembly.d.ts +126 -0
  246. package/dist/lib/rag/pipeline/contextAssembly.js +338 -0
  247. package/dist/lib/rag/pipeline/index.d.ts +5 -0
  248. package/dist/lib/rag/pipeline/index.js +6 -0
  249. package/dist/lib/rag/ragIntegration.d.ts +38 -0
  250. package/dist/lib/rag/ragIntegration.js +212 -0
  251. package/dist/lib/rag/reranker/RerankerFactory.d.ts +184 -0
  252. package/dist/lib/rag/reranker/RerankerFactory.js +431 -0
  253. package/dist/lib/rag/reranker/RerankerRegistry.d.ts +119 -0
  254. package/dist/lib/rag/reranker/RerankerRegistry.js +403 -0
  255. package/dist/lib/rag/reranker/index.d.ts +6 -0
  256. package/dist/lib/rag/reranker/index.js +10 -0
  257. package/dist/lib/rag/reranker/reranker.d.ts +71 -0
  258. package/dist/lib/rag/reranker/reranker.js +278 -0
  259. package/dist/lib/rag/resilience/CircuitBreaker.d.ts +215 -0
  260. package/dist/lib/rag/resilience/CircuitBreaker.js +432 -0
  261. package/dist/lib/rag/resilience/RetryHandler.d.ts +115 -0
  262. package/dist/lib/rag/resilience/RetryHandler.js +301 -0
  263. package/dist/lib/rag/resilience/index.d.ts +7 -0
  264. package/dist/lib/rag/resilience/index.js +8 -0
  265. package/dist/lib/rag/retrieval/hybridSearch.d.ts +94 -0
  266. package/dist/lib/rag/retrieval/hybridSearch.js +314 -0
  267. package/dist/lib/rag/retrieval/index.d.ts +5 -0
  268. package/dist/lib/rag/retrieval/index.js +6 -0
  269. package/dist/lib/rag/retrieval/vectorQueryTool.d.ts +93 -0
  270. package/dist/lib/rag/retrieval/vectorQueryTool.js +290 -0
  271. package/dist/lib/rag/types.d.ts +768 -0
  272. package/dist/lib/rag/types.js +9 -0
  273. package/dist/lib/server/index.d.ts +15 -11
  274. package/dist/lib/server/index.js +55 -51
  275. package/dist/lib/server/utils/validation.d.ts +2 -2
  276. package/dist/lib/types/common.d.ts +0 -1
  277. package/dist/lib/types/fileTypes.d.ts +1 -1
  278. package/dist/lib/types/generateTypes.d.ts +42 -8
  279. package/dist/lib/types/generateTypes.js +1 -1
  280. package/dist/lib/types/index.d.ts +25 -24
  281. package/dist/lib/types/index.js +21 -20
  282. package/dist/lib/types/modelTypes.d.ts +16 -16
  283. package/dist/lib/types/pptTypes.d.ts +14 -2
  284. package/dist/lib/types/pptTypes.js +16 -0
  285. package/dist/lib/types/streamTypes.d.ts +28 -8
  286. package/dist/lib/types/streamTypes.js +1 -1
  287. package/dist/lib/utils/async/delay.d.ts +40 -0
  288. package/dist/lib/utils/async/delay.js +43 -0
  289. package/dist/lib/utils/async/index.d.ts +23 -0
  290. package/dist/lib/utils/async/index.js +24 -0
  291. package/dist/lib/utils/async/retry.d.ts +141 -0
  292. package/dist/lib/utils/async/retry.js +172 -0
  293. package/dist/lib/utils/async/withTimeout.d.ts +73 -0
  294. package/dist/lib/utils/async/withTimeout.js +97 -0
  295. package/dist/lib/utils/fileDetector.d.ts +7 -1
  296. package/dist/lib/utils/fileDetector.js +91 -18
  297. package/dist/lib/utils/json/extract.d.ts +103 -0
  298. package/dist/lib/utils/json/extract.js +249 -0
  299. package/dist/lib/utils/json/index.d.ts +36 -0
  300. package/dist/lib/utils/json/index.js +37 -0
  301. package/dist/lib/utils/json/safeParse.d.ts +137 -0
  302. package/dist/lib/utils/json/safeParse.js +191 -0
  303. package/dist/lib/utils/messageBuilder.d.ts +2 -2
  304. package/dist/lib/utils/messageBuilder.js +15 -7
  305. package/dist/lib/utils/modelRouter.d.ts +4 -4
  306. package/dist/lib/utils/modelRouter.js +4 -4
  307. package/dist/lib/utils/sanitizers/filename.d.ts +137 -0
  308. package/dist/lib/utils/sanitizers/filename.js +366 -0
  309. package/dist/lib/utils/sanitizers/html.d.ts +170 -0
  310. package/dist/lib/utils/sanitizers/html.js +326 -0
  311. package/dist/lib/utils/sanitizers/index.d.ts +26 -0
  312. package/dist/lib/utils/sanitizers/index.js +30 -0
  313. package/dist/lib/utils/sanitizers/svg.d.ts +81 -0
  314. package/dist/lib/utils/sanitizers/svg.js +483 -0
  315. package/dist/mcp/index.d.ts +6 -5
  316. package/dist/mcp/index.js +7 -5
  317. package/dist/neurolink.d.ts +11 -13
  318. package/dist/neurolink.js +95 -29
  319. package/dist/processors/base/BaseFileProcessor.d.ts +273 -0
  320. package/dist/processors/base/BaseFileProcessor.js +613 -0
  321. package/dist/processors/base/index.d.ts +14 -0
  322. package/dist/processors/base/index.js +19 -0
  323. package/dist/processors/base/types.d.ts +593 -0
  324. package/dist/processors/base/types.js +76 -0
  325. package/dist/processors/cli/fileProcessorCli.d.ts +163 -0
  326. package/dist/processors/cli/fileProcessorCli.js +388 -0
  327. package/dist/processors/cli/index.d.ts +37 -0
  328. package/dist/processors/cli/index.js +49 -0
  329. package/dist/processors/code/ConfigProcessor.d.ts +171 -0
  330. package/dist/processors/code/ConfigProcessor.js +400 -0
  331. package/dist/processors/code/SourceCodeProcessor.d.ts +174 -0
  332. package/dist/processors/code/SourceCodeProcessor.js +304 -0
  333. package/dist/processors/code/index.d.ts +44 -0
  334. package/dist/processors/code/index.js +60 -0
  335. package/dist/processors/config/fileTypes.d.ts +283 -0
  336. package/dist/processors/config/fileTypes.js +520 -0
  337. package/dist/processors/config/index.d.ts +32 -0
  338. package/dist/processors/config/index.js +92 -0
  339. package/dist/processors/config/languageMap.d.ts +66 -0
  340. package/dist/processors/config/languageMap.js +410 -0
  341. package/dist/processors/config/mimeTypes.d.ts +376 -0
  342. package/dist/processors/config/mimeTypes.js +338 -0
  343. package/dist/processors/config/sizeLimits.d.ts +194 -0
  344. package/dist/processors/config/sizeLimits.js +246 -0
  345. package/dist/processors/data/JsonProcessor.d.ts +122 -0
  346. package/dist/processors/data/JsonProcessor.js +203 -0
  347. package/dist/processors/data/XmlProcessor.d.ts +160 -0
  348. package/dist/processors/data/XmlProcessor.js +283 -0
  349. package/dist/processors/data/YamlProcessor.d.ts +163 -0
  350. package/dist/processors/data/YamlProcessor.js +294 -0
  351. package/dist/processors/data/index.d.ts +49 -0
  352. package/dist/processors/data/index.js +76 -0
  353. package/dist/processors/document/ExcelProcessor.d.ts +238 -0
  354. package/dist/processors/document/ExcelProcessor.js +519 -0
  355. package/dist/processors/document/OpenDocumentProcessor.d.ts +69 -0
  356. package/dist/processors/document/OpenDocumentProcessor.js +210 -0
  357. package/dist/processors/document/RtfProcessor.d.ts +152 -0
  358. package/dist/processors/document/RtfProcessor.js +361 -0
  359. package/dist/processors/document/WordProcessor.d.ts +168 -0
  360. package/dist/processors/document/WordProcessor.js +353 -0
  361. package/dist/processors/document/index.d.ts +54 -0
  362. package/dist/processors/document/index.js +90 -0
  363. package/dist/processors/errors/FileErrorCode.d.ts +98 -0
  364. package/dist/processors/errors/FileErrorCode.js +255 -0
  365. package/dist/processors/errors/errorHelpers.d.ts +151 -0
  366. package/dist/processors/errors/errorHelpers.js +378 -0
  367. package/dist/processors/errors/errorSerializer.d.ts +139 -0
  368. package/dist/processors/errors/errorSerializer.js +507 -0
  369. package/dist/processors/errors/index.d.ts +46 -0
  370. package/dist/processors/errors/index.js +49 -0
  371. package/dist/processors/index.d.ts +76 -0
  372. package/dist/processors/index.js +112 -0
  373. package/dist/processors/integration/FileProcessorIntegration.d.ts +244 -0
  374. package/dist/processors/integration/FileProcessorIntegration.js +272 -0
  375. package/dist/processors/integration/index.d.ts +42 -0
  376. package/dist/processors/integration/index.js +44 -0
  377. package/dist/processors/markup/HtmlProcessor.d.ts +169 -0
  378. package/dist/processors/markup/HtmlProcessor.js +249 -0
  379. package/dist/processors/markup/MarkdownProcessor.d.ts +165 -0
  380. package/dist/processors/markup/MarkdownProcessor.js +244 -0
  381. package/dist/processors/markup/SvgProcessor.d.ts +156 -0
  382. package/dist/processors/markup/SvgProcessor.js +240 -0
  383. package/dist/processors/markup/TextProcessor.d.ts +135 -0
  384. package/dist/processors/markup/TextProcessor.js +188 -0
  385. package/dist/processors/markup/index.d.ts +66 -0
  386. package/dist/processors/markup/index.js +102 -0
  387. package/dist/processors/registry/ProcessorRegistry.d.ts +334 -0
  388. package/dist/processors/registry/ProcessorRegistry.js +608 -0
  389. package/dist/processors/registry/index.d.ts +12 -0
  390. package/dist/processors/registry/index.js +16 -0
  391. package/dist/processors/registry/types.d.ts +53 -0
  392. package/dist/processors/registry/types.js +10 -0
  393. package/dist/providers/amazonBedrock.d.ts +15 -2
  394. package/dist/providers/amazonBedrock.js +65 -8
  395. package/dist/providers/anthropic.d.ts +3 -3
  396. package/dist/providers/anthropic.js +10 -7
  397. package/dist/providers/googleAiStudio.d.ts +5 -5
  398. package/dist/providers/googleAiStudio.js +10 -7
  399. package/dist/providers/googleVertex.d.ts +16 -4
  400. package/dist/providers/googleVertex.js +72 -16
  401. package/dist/providers/litellm.d.ts +3 -3
  402. package/dist/providers/litellm.js +10 -10
  403. package/dist/providers/mistral.d.ts +3 -3
  404. package/dist/providers/mistral.js +7 -6
  405. package/dist/providers/ollama.d.ts +3 -4
  406. package/dist/providers/ollama.js +7 -8
  407. package/dist/providers/openAI.d.ts +14 -2
  408. package/dist/providers/openAI.js +60 -6
  409. package/dist/providers/openRouter.d.ts +2 -2
  410. package/dist/providers/openRouter.js +10 -6
  411. package/dist/rag/ChunkerFactory.d.ts +91 -0
  412. package/dist/rag/ChunkerFactory.js +320 -0
  413. package/dist/rag/ChunkerRegistry.d.ts +91 -0
  414. package/dist/rag/ChunkerRegistry.js +421 -0
  415. package/dist/rag/chunkers/BaseChunker.d.ts +53 -0
  416. package/dist/rag/chunkers/BaseChunker.js +143 -0
  417. package/dist/rag/chunkers/CharacterChunker.d.ts +18 -0
  418. package/dist/rag/chunkers/CharacterChunker.js +28 -0
  419. package/dist/rag/chunkers/HTMLChunker.d.ts +19 -0
  420. package/dist/rag/chunkers/HTMLChunker.js +38 -0
  421. package/dist/rag/chunkers/JSONChunker.d.ts +19 -0
  422. package/dist/rag/chunkers/JSONChunker.js +68 -0
  423. package/dist/rag/chunkers/LaTeXChunker.d.ts +15 -0
  424. package/dist/rag/chunkers/LaTeXChunker.js +63 -0
  425. package/dist/rag/chunkers/MarkdownChunker.d.ts +15 -0
  426. package/dist/rag/chunkers/MarkdownChunker.js +102 -0
  427. package/dist/rag/chunkers/RecursiveChunker.d.ts +27 -0
  428. package/dist/rag/chunkers/RecursiveChunker.js +139 -0
  429. package/dist/rag/chunkers/SemanticMarkdownChunker.d.ts +22 -0
  430. package/dist/rag/chunkers/SemanticMarkdownChunker.js +138 -0
  431. package/dist/rag/chunkers/SentenceChunker.d.ts +19 -0
  432. package/dist/rag/chunkers/SentenceChunker.js +66 -0
  433. package/dist/rag/chunkers/TokenChunker.d.ts +19 -0
  434. package/dist/rag/chunkers/TokenChunker.js +61 -0
  435. package/dist/rag/chunkers/index.d.ts +15 -0
  436. package/dist/rag/chunkers/index.js +15 -0
  437. package/dist/rag/chunking/characterChunker.d.ts +16 -0
  438. package/dist/rag/chunking/characterChunker.js +142 -0
  439. package/dist/rag/chunking/chunkerRegistry.d.ts +67 -0
  440. package/dist/rag/chunking/chunkerRegistry.js +194 -0
  441. package/dist/rag/chunking/htmlChunker.d.ts +34 -0
  442. package/dist/rag/chunking/htmlChunker.js +247 -0
  443. package/dist/rag/chunking/index.d.ts +15 -0
  444. package/dist/rag/chunking/index.js +17 -0
  445. package/dist/rag/chunking/jsonChunker.d.ts +20 -0
  446. package/dist/rag/chunking/jsonChunker.js +281 -0
  447. package/dist/rag/chunking/latexChunker.d.ts +26 -0
  448. package/dist/rag/chunking/latexChunker.js +251 -0
  449. package/dist/rag/chunking/markdownChunker.d.ts +19 -0
  450. package/dist/rag/chunking/markdownChunker.js +201 -0
  451. package/dist/rag/chunking/recursiveChunker.d.ts +19 -0
  452. package/dist/rag/chunking/recursiveChunker.js +148 -0
  453. package/dist/rag/chunking/semanticChunker.d.ts +41 -0
  454. package/dist/rag/chunking/semanticChunker.js +306 -0
  455. package/dist/rag/chunking/sentenceChunker.d.ts +25 -0
  456. package/dist/rag/chunking/sentenceChunker.js +230 -0
  457. package/dist/rag/chunking/tokenChunker.d.ts +36 -0
  458. package/dist/rag/chunking/tokenChunker.js +183 -0
  459. package/dist/rag/document/MDocument.d.ts +198 -0
  460. package/dist/rag/document/MDocument.js +392 -0
  461. package/dist/rag/document/index.d.ts +5 -0
  462. package/dist/rag/document/index.js +5 -0
  463. package/dist/rag/document/loaders.d.ts +201 -0
  464. package/dist/rag/document/loaders.js +500 -0
  465. package/dist/rag/errors/RAGError.d.ts +244 -0
  466. package/dist/rag/errors/RAGError.js +274 -0
  467. package/dist/rag/errors/index.d.ts +6 -0
  468. package/dist/rag/errors/index.js +6 -0
  469. package/dist/rag/graphRag/graphRAG.d.ts +115 -0
  470. package/dist/rag/graphRag/graphRAG.js +384 -0
  471. package/dist/rag/graphRag/index.d.ts +4 -0
  472. package/dist/rag/graphRag/index.js +4 -0
  473. package/dist/rag/index.d.ts +103 -0
  474. package/dist/rag/index.js +141 -0
  475. package/dist/rag/metadata/MetadataExtractorFactory.d.ts +157 -0
  476. package/dist/rag/metadata/MetadataExtractorFactory.js +418 -0
  477. package/dist/rag/metadata/MetadataExtractorRegistry.d.ts +99 -0
  478. package/dist/rag/metadata/MetadataExtractorRegistry.js +362 -0
  479. package/dist/rag/metadata/index.d.ts +6 -0
  480. package/dist/rag/metadata/index.js +9 -0
  481. package/dist/rag/metadata/metadataExtractor.d.ts +69 -0
  482. package/dist/rag/metadata/metadataExtractor.js +277 -0
  483. package/dist/rag/pipeline/RAGPipeline.d.ts +235 -0
  484. package/dist/rag/pipeline/RAGPipeline.js +401 -0
  485. package/dist/rag/pipeline/contextAssembly.d.ts +126 -0
  486. package/dist/rag/pipeline/contextAssembly.js +337 -0
  487. package/dist/rag/pipeline/index.d.ts +5 -0
  488. package/dist/rag/pipeline/index.js +5 -0
  489. package/dist/rag/ragIntegration.d.ts +38 -0
  490. package/dist/rag/ragIntegration.js +211 -0
  491. package/dist/rag/reranker/RerankerFactory.d.ts +184 -0
  492. package/dist/rag/reranker/RerankerFactory.js +430 -0
  493. package/dist/rag/reranker/RerankerRegistry.d.ts +119 -0
  494. package/dist/rag/reranker/RerankerRegistry.js +402 -0
  495. package/dist/rag/reranker/index.d.ts +6 -0
  496. package/dist/rag/reranker/index.js +9 -0
  497. package/dist/rag/reranker/reranker.d.ts +71 -0
  498. package/dist/rag/reranker/reranker.js +277 -0
  499. package/dist/rag/resilience/CircuitBreaker.d.ts +215 -0
  500. package/dist/rag/resilience/CircuitBreaker.js +431 -0
  501. package/dist/rag/resilience/RetryHandler.d.ts +115 -0
  502. package/dist/rag/resilience/RetryHandler.js +300 -0
  503. package/dist/rag/resilience/index.d.ts +7 -0
  504. package/dist/rag/resilience/index.js +7 -0
  505. package/dist/rag/retrieval/hybridSearch.d.ts +94 -0
  506. package/dist/rag/retrieval/hybridSearch.js +313 -0
  507. package/dist/rag/retrieval/index.d.ts +5 -0
  508. package/dist/rag/retrieval/index.js +5 -0
  509. package/dist/rag/retrieval/vectorQueryTool.d.ts +93 -0
  510. package/dist/rag/retrieval/vectorQueryTool.js +289 -0
  511. package/dist/rag/types.d.ts +768 -0
  512. package/dist/rag/types.js +8 -0
  513. package/dist/server/index.d.ts +15 -11
  514. package/dist/server/index.js +55 -51
  515. package/dist/server/utils/validation.d.ts +8 -8
  516. package/dist/types/common.d.ts +0 -1
  517. package/dist/types/fileTypes.d.ts +1 -1
  518. package/dist/types/generateTypes.d.ts +42 -8
  519. package/dist/types/generateTypes.js +1 -1
  520. package/dist/types/index.d.ts +25 -24
  521. package/dist/types/index.js +21 -20
  522. package/dist/types/modelTypes.d.ts +10 -10
  523. package/dist/types/pptTypes.d.ts +14 -2
  524. package/dist/types/pptTypes.js +16 -0
  525. package/dist/types/streamTypes.d.ts +28 -8
  526. package/dist/types/streamTypes.js +1 -1
  527. package/dist/utils/async/delay.d.ts +40 -0
  528. package/dist/utils/async/delay.js +42 -0
  529. package/dist/utils/async/index.d.ts +23 -0
  530. package/dist/utils/async/index.js +23 -0
  531. package/dist/utils/async/retry.d.ts +141 -0
  532. package/dist/utils/async/retry.js +171 -0
  533. package/dist/utils/async/withTimeout.d.ts +73 -0
  534. package/dist/utils/async/withTimeout.js +96 -0
  535. package/dist/utils/fileDetector.d.ts +7 -1
  536. package/dist/utils/fileDetector.js +91 -18
  537. package/dist/utils/json/extract.d.ts +103 -0
  538. package/dist/utils/json/extract.js +248 -0
  539. package/dist/utils/json/index.d.ts +36 -0
  540. package/dist/utils/json/index.js +36 -0
  541. package/dist/utils/json/safeParse.d.ts +137 -0
  542. package/dist/utils/json/safeParse.js +190 -0
  543. package/dist/utils/messageBuilder.d.ts +2 -2
  544. package/dist/utils/messageBuilder.js +15 -7
  545. package/dist/utils/modelRouter.d.ts +4 -4
  546. package/dist/utils/modelRouter.js +4 -4
  547. package/dist/utils/sanitizers/filename.d.ts +137 -0
  548. package/dist/utils/sanitizers/filename.js +365 -0
  549. package/dist/utils/sanitizers/html.d.ts +170 -0
  550. package/dist/utils/sanitizers/html.js +325 -0
  551. package/dist/utils/sanitizers/index.d.ts +26 -0
  552. package/dist/utils/sanitizers/index.js +29 -0
  553. package/dist/utils/sanitizers/svg.d.ts +81 -0
  554. package/dist/utils/sanitizers/svg.js +482 -0
  555. package/package.json +2 -2
@@ -0,0 +1,49 @@
1
+ import { logger } from "../../utils/logger.js";
2
+ export class BaseRegistry {
3
+ items = new Map();
4
+ initialized = false;
5
+ initPromise = null;
6
+ async ensureInitialized() {
7
+ if (this.initialized) {
8
+ return;
9
+ }
10
+ if (this.initPromise) {
11
+ return this.initPromise;
12
+ }
13
+ this.initPromise = this.registerAll();
14
+ await this.initPromise;
15
+ this.initialized = true;
16
+ }
17
+ register(id, factory, metadata) {
18
+ this.items.set(id, { factory, metadata });
19
+ logger.debug(`Registered ${id} in registry`);
20
+ }
21
+ async get(id) {
22
+ await this.ensureInitialized();
23
+ const entry = this.items.get(id);
24
+ if (!entry) {
25
+ return undefined;
26
+ }
27
+ if (!entry.instance) {
28
+ entry.instance = await entry.factory();
29
+ }
30
+ return entry.instance;
31
+ }
32
+ has(id) {
33
+ return this.items.has(id);
34
+ }
35
+ list() {
36
+ return Array.from(this.items.entries()).map(([id, entry]) => ({
37
+ id,
38
+ metadata: entry.metadata,
39
+ }));
40
+ }
41
+ clear() {
42
+ this.items.clear();
43
+ this.initialized = false;
44
+ this.initPromise = null;
45
+ }
46
+ isInitialized() {
47
+ return this.initialized;
48
+ }
49
+ }
@@ -0,0 +1,5 @@
1
+ export { createErrorFactory, type ErrorCode, NeuroLinkFeatureError, } from "./baseError.js";
2
+ export { BaseFactory, type FactoryFunction, type FactoryRegistration, } from "./baseFactory.js";
3
+ export { BaseRegistry, type RegistryEntry } from "./baseRegistry.js";
4
+ export { type RetryOptions, withRetry } from "./retry.js";
5
+ export { TypedEventEmitter } from "./typedEventEmitter.js";
@@ -0,0 +1,5 @@
1
+ export { createErrorFactory, NeuroLinkFeatureError, } from "./baseError.js";
2
+ export { BaseFactory, } from "./baseFactory.js";
3
+ export { BaseRegistry } from "./baseRegistry.js";
4
+ export { withRetry } from "./retry.js";
5
+ export { TypedEventEmitter } from "./typedEventEmitter.js";
@@ -0,0 +1,7 @@
1
+ export type RetryOptions = {
2
+ maxRetries: number;
3
+ baseDelayMs: number;
4
+ maxDelayMs?: number;
5
+ shouldRetry?: (error: Error) => boolean;
6
+ };
7
+ export declare function withRetry<T>(operation: () => Promise<T>, options: RetryOptions): Promise<T>;
@@ -0,0 +1,20 @@
1
+ export async function withRetry(operation, options) {
2
+ const { maxRetries, baseDelayMs, maxDelayMs = 30000, shouldRetry } = options;
3
+ let lastError;
4
+ for (let attempt = 0; attempt <= maxRetries; attempt++) {
5
+ try {
6
+ return await operation();
7
+ }
8
+ catch (error) {
9
+ lastError = error;
10
+ if (shouldRetry && !shouldRetry(lastError)) {
11
+ throw lastError;
12
+ }
13
+ if (attempt < maxRetries) {
14
+ const delay = Math.min(baseDelayMs * 2 ** attempt, maxDelayMs);
15
+ await new Promise((resolve) => setTimeout(resolve, delay));
16
+ }
17
+ }
18
+ }
19
+ throw lastError;
20
+ }
@@ -0,0 +1,8 @@
1
+ export declare class TypedEventEmitter<TEvents extends Record<string, unknown[]>> {
2
+ private emitter;
3
+ on<K extends keyof TEvents>(event: K, listener: (...args: TEvents[K]) => void): this;
4
+ off<K extends keyof TEvents>(event: K, listener: (...args: TEvents[K]) => void): this;
5
+ emit<K extends keyof TEvents>(event: K, ...args: TEvents[K]): boolean;
6
+ once<K extends keyof TEvents>(event: K, listener: (...args: TEvents[K]) => void): this;
7
+ removeAllListeners<K extends keyof TEvents>(event?: K): this;
8
+ }
@@ -0,0 +1,23 @@
1
+ import { EventEmitter } from "events";
2
+ export class TypedEventEmitter {
3
+ emitter = new EventEmitter();
4
+ on(event, listener) {
5
+ this.emitter.on(event, listener);
6
+ return this;
7
+ }
8
+ off(event, listener) {
9
+ this.emitter.off(event, listener);
10
+ return this;
11
+ }
12
+ emit(event, ...args) {
13
+ return this.emitter.emit(event, ...args);
14
+ }
15
+ once(event, listener) {
16
+ this.emitter.once(event, listener);
17
+ return this;
18
+ }
19
+ removeAllListeners(event) {
20
+ this.emitter.removeAllListeners(event);
21
+ return this;
22
+ }
23
+ }
@@ -3,7 +3,6 @@
3
3
  * Redis-based implementation of conversation storage with same interface as ConversationMemoryManager
4
4
  */
5
5
  import type { ConversationMemoryConfig, ConversationMemoryStats, ChatMessage, RedisStorageConfig, SessionMetadata, RedisConversationObject, StoreConversationTurnOptions } from "../types/conversation.js";
6
- import type { TypedEventEmitter, NeuroLinkEvents } from "../types/common.js";
7
6
  /**
8
7
  * Redis-based implementation of the ConversationMemoryManager
9
8
  * Uses the same interface but stores data in Redis
@@ -13,10 +12,6 @@ export declare class RedisConversationMemoryManager {
13
12
  private isInitialized;
14
13
  private redisConfig;
15
14
  private redisClient;
16
- /**
17
- * Event emitter for conversation memory events
18
- */
19
- private eventEmitter?;
20
15
  /**
21
16
  * Temporary storage for tool execution data to prevent race conditions
22
17
  * Key format: "${sessionId}:${userId}"
@@ -32,7 +27,7 @@ export declare class RedisConversationMemoryManager {
32
27
  * Key format: "${sessionId}:${userId}"
33
28
  */
34
29
  private summarizationInProgress;
35
- constructor(config: ConversationMemoryConfig, redisConfig?: RedisStorageConfig, eventEmitter?: TypedEventEmitter<NeuroLinkEvents>);
30
+ constructor(config: ConversationMemoryConfig, redisConfig?: RedisStorageConfig);
36
31
  /**
37
32
  * Initialize the memory manager with Redis connection
38
33
  */
@@ -19,10 +19,6 @@ export class RedisConversationMemoryManager {
19
19
  isInitialized = false;
20
20
  redisConfig;
21
21
  redisClient = null;
22
- /**
23
- * Event emitter for conversation memory events
24
- */
25
- eventEmitter;
26
22
  /**
27
23
  * Temporary storage for tool execution data to prevent race conditions
28
24
  * Key format: "${sessionId}:${userId}"
@@ -38,10 +34,9 @@ export class RedisConversationMemoryManager {
38
34
  * Key format: "${sessionId}:${userId}"
39
35
  */
40
36
  summarizationInProgress = new Set();
41
- constructor(config, redisConfig = {}, eventEmitter) {
37
+ constructor(config, redisConfig = {}) {
42
38
  this.config = config;
43
39
  this.redisConfig = getNormalizedConfig(redisConfig);
44
- this.eventEmitter = eventEmitter;
45
40
  }
46
41
  /**
47
42
  * Initialize the memory manager with Redis connection
@@ -258,14 +253,6 @@ export class RedisConversationMemoryManager {
258
253
  if (this.redisConfig.ttl > 0) {
259
254
  await this.redisClient?.expire(updatedRedisKey, this.redisConfig.ttl);
260
255
  }
261
- if (this.eventEmitter) {
262
- this.eventEmitter.emit("conversation:titleGenerated", {
263
- sessionId: options.sessionId,
264
- userId: normalizedUserId,
265
- title,
266
- timestamp: Date.now(),
267
- });
268
- }
269
256
  }
270
257
  }
271
258
  catch (titleError) {
@@ -700,11 +687,12 @@ export class RedisConversationMemoryManager {
700
687
  const titleGenerator = new NeuroLink({
701
688
  conversationMemory: { enabled: false },
702
689
  });
703
- const fallbackTitlePrompt = `\nYou are an expert at generating ultra-concise conversation titles.\n\nGenerate a single clear, descriptive title that accurately reflects the core topic of the user's message.\n\nStrict rules:\n- The title MUST be 18 characters or fewer (including spaces).\n- Output ONLY the title text (no quotes, no punctuation, no explanations).\n- Use natural words; abbreviations are allowed only if they improve clarity.\n- Avoid generic words like "issue", "problem", "help", or "discussion".\n- Do not say you cannot generate a title.\n- Always return exactly one valid title within the character limit.\n\nUser message:\n"${userMessage}"\n`;
704
- const envPrompt = process.env.NEUROLINK_TITLE_PROMPT;
705
- const titlePrompt = envPrompt
706
- ? envPrompt.replace(/\$\{userMessage\}/g, userMessage)
707
- : fallbackTitlePrompt;
690
+ const titlePrompt = `Generate a clear, concise, and descriptive title (5–8 words maximum) for a conversation based on the following user message.
691
+ The title must meaningfully reflect the topic or intent of the message.
692
+ Do not output anything unrelated, vague, or generic.
693
+ Do not say you cannot create a title. Always return a valid title.
694
+
695
+ User message: "${userMessage}`;
708
696
  const result = await titleGenerator.generate({
709
697
  input: { text: titlePrompt },
710
698
  provider: this.config.summarizationProvider || "vertex",
@@ -1,6 +1,6 @@
1
- import type { AIProvider } from "../types/index.js";
1
+ import type { AIProviderName } from "../constants/enums.js";
2
2
  import type { UnknownRecord } from "../types/common.js";
3
- import { AIProviderName } from "../constants/enums.js";
3
+ import type { AIProvider } from "../types/index.js";
4
4
  /**
5
5
  * Provider constructor interface - supports both sync constructors and async factory functions
6
6
  */
@@ -30,8 +30,10 @@ export declare class ProviderFactory {
30
30
  aliases?: string[]): void;
31
31
  /**
32
32
  * Create a provider instance
33
+ * @param providerName - Provider name (optional, uses NEUROLINK_PROVIDER env var or 'vertex' as default)
34
+ * @param modelName - Model name (optional, uses provider-specific env var or registry default)
33
35
  */
34
- static createProvider(providerName: AIProviderName | string, modelName?: string, sdk?: UnknownRecord, region?: string): Promise<AIProvider>;
36
+ static createProvider(providerName?: AIProviderName | string, modelName?: string, sdk?: UnknownRecord, region?: string): Promise<AIProvider>;
35
37
  /**
36
38
  * Check if a provider is registered
37
39
  */
@@ -1,5 +1,4 @@
1
1
  import { logger } from "../utils/logger.js";
2
- import { AIProviderName } from "../constants/enums.js";
3
2
  /**
4
3
  * True Factory Pattern implementation for AI Providers
5
4
  * Uses registration-based approach to eliminate switch statements
@@ -19,31 +18,39 @@ export class ProviderFactory {
19
18
  aliases,
20
19
  };
21
20
  // Register main name
22
- this.providers.set(name.toLowerCase(), registration);
21
+ ProviderFactory.providers.set(name.toLowerCase(), registration);
23
22
  // Register aliases
24
23
  aliases.forEach((alias) => {
25
- this.providers.set(alias.toLowerCase(), registration);
24
+ ProviderFactory.providers.set(alias.toLowerCase(), registration);
26
25
  });
27
26
  logger.debug(`Registered provider: ${name} with model ${defaultModel || "from-env"}`);
28
27
  }
29
28
  /**
30
29
  * Create a provider instance
30
+ * @param providerName - Provider name (optional, uses NEUROLINK_PROVIDER env var or 'vertex' as default)
31
+ * @param modelName - Model name (optional, uses provider-specific env var or registry default)
31
32
  */
32
33
  static async createProvider(providerName, modelName, sdk, region) {
33
34
  // Note: Providers are registered explicitly by ProviderRegistry to avoid circular dependencies
34
- const normalizedName = providerName.toLowerCase();
35
- const registration = this.providers.get(normalizedName);
35
+ // Use environment variable or default if not specified
36
+ const resolvedProviderName = providerName ||
37
+ process.env.NEUROLINK_PROVIDER ||
38
+ process.env.AI_PROVIDER ||
39
+ "vertex";
40
+ const normalizedName = resolvedProviderName.toLowerCase();
41
+ const registration = ProviderFactory.providers.get(normalizedName);
36
42
  if (!registration) {
37
- throw new Error(`Unknown provider: ${providerName}. Available providers: ${this.getAvailableProviders().join(", ")}`);
43
+ throw new Error(`Unknown provider: ${resolvedProviderName}. Available providers: ${ProviderFactory.getAvailableProviders().join(", ")}`);
38
44
  }
39
45
  // Respect environment variables before falling back to registry default
40
46
  let model = modelName;
41
47
  if (!model) {
42
48
  // Check for provider-specific environment variables
43
- if (providerName.toLowerCase().includes("vertex")) {
44
- model = process.env.VERTEX_MODEL;
49
+ if (resolvedProviderName.toLowerCase().includes("vertex")) {
50
+ // Use gemini-2.5-flash as default - latest GA model with best price-performance
51
+ model = process.env.VERTEX_MODEL || "gemini-2.5-flash";
45
52
  }
46
- else if (providerName.toLowerCase().includes("bedrock")) {
53
+ else if (resolvedProviderName.toLowerCase().includes("bedrock")) {
47
54
  model = process.env.BEDROCK_MODEL || process.env.BEDROCK_MODEL_ID;
48
55
  }
49
56
  // Fallback to registry default if no env var
@@ -55,7 +62,7 @@ export class ProviderFactory {
55
62
  }
56
63
  let result;
57
64
  try {
58
- const factoryResult = registration.constructor(model, providerName, sdk, region);
65
+ const factoryResult = registration.constructor(model, resolvedProviderName, sdk, region);
59
66
  // Handle both sync and async results
60
67
  result =
61
68
  factoryResult instanceof Promise
@@ -67,7 +74,7 @@ export class ProviderFactory {
67
74
  registration.constructor.prototype.constructor ===
68
75
  registration.constructor) {
69
76
  try {
70
- result = new registration.constructor(model, providerName, sdk, region);
77
+ result = new registration.constructor(model, resolvedProviderName, sdk, region);
71
78
  }
72
79
  catch (constructorError) {
73
80
  throw new Error(`Both factory function and constructor failed. Factory error: ${factoryError}. Constructor error: ${constructorError}`);
@@ -80,27 +87,27 @@ export class ProviderFactory {
80
87
  return result;
81
88
  }
82
89
  catch (error) {
83
- logger.error(`Failed to create provider ${providerName}:`, error);
84
- throw new Error(`Failed to create provider ${providerName}: ${error}`);
90
+ logger.error(`Failed to create provider ${resolvedProviderName}:`, error);
91
+ throw new Error(`Failed to create provider ${resolvedProviderName}: ${error}`);
85
92
  }
86
93
  }
87
94
  /**
88
95
  * Check if a provider is registered
89
96
  */
90
97
  static hasProvider(providerName) {
91
- return this.providers.has(providerName.toLowerCase());
98
+ return ProviderFactory.providers.has(providerName.toLowerCase());
92
99
  }
93
100
  /**
94
101
  * Get list of available providers
95
102
  */
96
103
  static getAvailableProviders() {
97
- return Array.from(this.providers.keys()).filter((name, index, arr) => arr.indexOf(name) === index);
104
+ return Array.from(ProviderFactory.providers.keys()).filter((name, index, arr) => arr.indexOf(name) === index);
98
105
  }
99
106
  /**
100
107
  * Get provider registration info
101
108
  */
102
109
  static getProviderInfo(providerName) {
103
- return this.providers.get(providerName.toLowerCase());
110
+ return ProviderFactory.providers.get(providerName.toLowerCase());
104
111
  }
105
112
  /**
106
113
  * Normalize provider names using aliases (PHASE 1: Factory Pattern)
@@ -108,11 +115,11 @@ export class ProviderFactory {
108
115
  static normalizeProviderName(providerName) {
109
116
  const normalized = providerName.toLowerCase();
110
117
  // Check direct registration
111
- if (this.providers.has(normalized)) {
118
+ if (ProviderFactory.providers.has(normalized)) {
112
119
  return normalized;
113
120
  }
114
121
  // Check aliases from all registrations
115
- for (const [name, registration] of this.providers.entries()) {
122
+ for (const [name, registration] of ProviderFactory.providers.entries()) {
116
123
  if (registration.aliases?.includes(normalized)) {
117
124
  return name;
118
125
  }
@@ -123,16 +130,16 @@ export class ProviderFactory {
123
130
  * Clear all registrations (mainly for testing)
124
131
  */
125
132
  static clearRegistrations() {
126
- this.providers.clear();
127
- this.initialized = false;
133
+ ProviderFactory.providers.clear();
134
+ ProviderFactory.initialized = false;
128
135
  }
129
136
  /**
130
137
  * Ensure providers are initialized
131
138
  */
132
139
  static ensureInitialized() {
133
- if (!this.initialized) {
134
- this.initializeDefaultProviders();
135
- this.initialized = true;
140
+ if (!ProviderFactory.initialized) {
141
+ ProviderFactory.initializeDefaultProviders();
142
+ ProviderFactory.initialized = true;
136
143
  }
137
144
  }
138
145
  /**
@@ -148,7 +155,7 @@ export class ProviderFactory {
148
155
  * Used by NeuroLink SDK for streaming and generation
149
156
  */
150
157
  static async createBestProvider(providerName, modelName, enableMCP, sdk) {
151
- return await this.createProvider(providerName, modelName, sdk);
158
+ return await ProviderFactory.createProvider(providerName, modelName, sdk);
152
159
  }
153
160
  }
154
161
  /**
@@ -0,0 +1,143 @@
1
+ /**
2
+ * Image Generation Service
3
+ *
4
+ * Handles AI image generation using NeuroLink SDK with configurable providers
5
+ * and models. Supports reference images and PDFs for contextual generation.
6
+ *
7
+ * @packageDocumentation
8
+ * @module @juspay/neurolink/image-gen
9
+ * @category ImageGeneration
10
+ *
11
+ * @example
12
+ * ```typescript
13
+ * import { ImageGenService } from '@juspay/neurolink';
14
+ *
15
+ * const service = new ImageGenService();
16
+ *
17
+ * const result = await service.generate({
18
+ * prompt: 'A serene mountain landscape at sunset',
19
+ * style: 'photorealistic',
20
+ * aspectRatio: '16:9'
21
+ * });
22
+ *
23
+ * if (result.success && result.imageBuffer) {
24
+ * fs.writeFileSync('output.png', result.imageBuffer);
25
+ * }
26
+ * ```
27
+ */
28
+ import type { ImageGenConfig, ImageGenOptions, ImageGenResult } from "./types.js";
29
+ /**
30
+ * Image generation service for AI-powered image creation
31
+ *
32
+ * Uses NeuroLink SDK to generate images with support for:
33
+ * - Multiple providers (Vertex AI, OpenAI, etc.)
34
+ * - Reference images for style guidance
35
+ * - PDF documents for contextual generation
36
+ * - Configurable aspect ratios and styles
37
+ *
38
+ * @example Basic usage
39
+ * ```typescript
40
+ * const service = new ImageGenService();
41
+ * const result = await service.generate({
42
+ * prompt: 'A cute robot playing chess'
43
+ * });
44
+ * ```
45
+ *
46
+ * @example With custom configuration
47
+ * ```typescript
48
+ * const service = new ImageGenService({
49
+ * defaultProvider: 'openai',
50
+ * defaultModel: 'dall-e-3',
51
+ * timeout: 60000
52
+ * });
53
+ * ```
54
+ */
55
+ export declare class ImageGenService {
56
+ private config;
57
+ private neurolinkInstance;
58
+ private instanceId;
59
+ /**
60
+ * Create a new ImageGenService instance
61
+ *
62
+ * @param config - Optional configuration overrides
63
+ */
64
+ constructor(config?: Partial<ImageGenConfig>);
65
+ /**
66
+ * Get or create the NeuroLink instance
67
+ * Uses dynamic import to avoid circular dependencies
68
+ *
69
+ * @returns NeuroLink instance for image generation
70
+ */
71
+ private getNeuroLink;
72
+ /**
73
+ * Generate an image from a text prompt
74
+ *
75
+ * @param options - Generation options including prompt, style, etc.
76
+ * @returns Promise resolving to generation result
77
+ *
78
+ * @example Simple generation
79
+ * ```typescript
80
+ * const result = await service.generate({
81
+ * prompt: 'A futuristic cityscape'
82
+ * });
83
+ * ```
84
+ *
85
+ * @example With reference images
86
+ * ```typescript
87
+ * const referenceImage = fs.readFileSync('style-reference.jpg');
88
+ * const result = await service.generate({
89
+ * prompt: 'A portrait in this style',
90
+ * images: [referenceImage],
91
+ * aspectRatio: '1:1'
92
+ * });
93
+ * ```
94
+ */
95
+ generate(options: ImageGenOptions): Promise<ImageGenResult>;
96
+ /**
97
+ * Extract image data from various result formats
98
+ *
99
+ * Handles multiple output formats:
100
+ * - result.imageOutput?.base64
101
+ * - result.images?.[0]
102
+ * - data:image URI in content
103
+ * - Buffer directly
104
+ *
105
+ * @param result - Raw result from NeuroLink generate
106
+ * @returns Extracted image data or null
107
+ */
108
+ private extractImageFromResult;
109
+ /**
110
+ * Check if image generation is enabled
111
+ */
112
+ isEnabled(): boolean;
113
+ /**
114
+ * Get the default model
115
+ */
116
+ getModel(): string;
117
+ /**
118
+ * Get the default provider
119
+ */
120
+ getProvider(): string;
121
+ /**
122
+ * Get the service configuration
123
+ */
124
+ getConfig(): Readonly<ImageGenConfig>;
125
+ /**
126
+ * Get the service instance ID (for debugging)
127
+ */
128
+ getInstanceId(): string;
129
+ /**
130
+ * Update service configuration
131
+ *
132
+ * @param config - Partial configuration to merge
133
+ */
134
+ updateConfig(config: Partial<ImageGenConfig>): void;
135
+ /**
136
+ * Enable image generation
137
+ */
138
+ enable(): void;
139
+ /**
140
+ * Disable image generation
141
+ */
142
+ disable(): void;
143
+ }