@n8n/n8n-nodes-langchain 1.86.1 → 1.87.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (466) hide show
  1. package/dist/credentials/AnthropicApi.credentials.js +1 -0
  2. package/dist/credentials/AnthropicApi.credentials.js.map +1 -0
  3. package/dist/credentials/AzureOpenAiApi.credentials.js +1 -0
  4. package/dist/credentials/AzureOpenAiApi.credentials.js.map +1 -0
  5. package/dist/credentials/CohereApi.credentials.js +1 -0
  6. package/dist/credentials/CohereApi.credentials.js.map +1 -0
  7. package/dist/credentials/DeepSeekApi.credentials.js +1 -0
  8. package/dist/credentials/DeepSeekApi.credentials.js.map +1 -0
  9. package/dist/credentials/GooglePalmApi.credentials.js +1 -0
  10. package/dist/credentials/GooglePalmApi.credentials.js.map +1 -0
  11. package/dist/credentials/GroqApi.credentials.js +1 -0
  12. package/dist/credentials/GroqApi.credentials.js.map +1 -0
  13. package/dist/credentials/HuggingFaceApi.credentials.js +1 -0
  14. package/dist/credentials/HuggingFaceApi.credentials.js.map +1 -0
  15. package/dist/credentials/MistralCloudApi.credentials.js +1 -0
  16. package/dist/credentials/MistralCloudApi.credentials.js.map +1 -0
  17. package/dist/credentials/MotorheadApi.credentials.js +1 -0
  18. package/dist/credentials/MotorheadApi.credentials.js.map +1 -0
  19. package/dist/credentials/OllamaApi.credentials.js +1 -0
  20. package/dist/credentials/OllamaApi.credentials.js.map +1 -0
  21. package/dist/credentials/OpenRouterApi.credentials.js +1 -0
  22. package/dist/credentials/OpenRouterApi.credentials.js.map +1 -0
  23. package/dist/credentials/PineconeApi.credentials.js +1 -0
  24. package/dist/credentials/PineconeApi.credentials.js.map +1 -0
  25. package/dist/credentials/QdrantApi.credentials.js +1 -0
  26. package/dist/credentials/QdrantApi.credentials.js.map +1 -0
  27. package/dist/credentials/SerpApi.credentials.js +1 -0
  28. package/dist/credentials/SerpApi.credentials.js.map +1 -0
  29. package/dist/credentials/WolframAlphaApi.credentials.js +1 -0
  30. package/dist/credentials/WolframAlphaApi.credentials.js.map +1 -0
  31. package/dist/credentials/XAiApi.credentials.js +1 -0
  32. package/dist/credentials/XAiApi.credentials.js.map +1 -0
  33. package/dist/credentials/XataApi.credentials.js +1 -0
  34. package/dist/credentials/XataApi.credentials.js.map +1 -0
  35. package/dist/credentials/ZepApi.credentials.js +1 -0
  36. package/dist/credentials/ZepApi.credentials.js.map +1 -0
  37. package/dist/known/nodes.json +12 -0
  38. package/dist/nodes/agents/Agent/Agent.node.js +1 -0
  39. package/dist/nodes/agents/Agent/Agent.node.js.map +1 -0
  40. package/dist/nodes/agents/Agent/agents/ConversationalAgent/description.js +1 -0
  41. package/dist/nodes/agents/Agent/agents/ConversationalAgent/description.js.map +1 -0
  42. package/dist/nodes/agents/Agent/agents/ConversationalAgent/execute.js +1 -0
  43. package/dist/nodes/agents/Agent/agents/ConversationalAgent/execute.js.map +1 -0
  44. package/dist/nodes/agents/Agent/agents/ConversationalAgent/prompt.js +1 -0
  45. package/dist/nodes/agents/Agent/agents/ConversationalAgent/prompt.js.map +1 -0
  46. package/dist/nodes/agents/Agent/agents/OpenAiFunctionsAgent/description.js +1 -0
  47. package/dist/nodes/agents/Agent/agents/OpenAiFunctionsAgent/description.js.map +1 -0
  48. package/dist/nodes/agents/Agent/agents/OpenAiFunctionsAgent/execute.js +1 -0
  49. package/dist/nodes/agents/Agent/agents/OpenAiFunctionsAgent/execute.js.map +1 -0
  50. package/dist/nodes/agents/Agent/agents/OpenAiFunctionsAgent/prompt.js +1 -0
  51. package/dist/nodes/agents/Agent/agents/OpenAiFunctionsAgent/prompt.js.map +1 -0
  52. package/dist/nodes/agents/Agent/agents/PlanAndExecuteAgent/description.js +1 -0
  53. package/dist/nodes/agents/Agent/agents/PlanAndExecuteAgent/description.js.map +1 -0
  54. package/dist/nodes/agents/Agent/agents/PlanAndExecuteAgent/execute.js +1 -0
  55. package/dist/nodes/agents/Agent/agents/PlanAndExecuteAgent/execute.js.map +1 -0
  56. package/dist/nodes/agents/Agent/agents/PlanAndExecuteAgent/prompt.js +1 -0
  57. package/dist/nodes/agents/Agent/agents/PlanAndExecuteAgent/prompt.js.map +1 -0
  58. package/dist/nodes/agents/Agent/agents/ReActAgent/description.js +1 -0
  59. package/dist/nodes/agents/Agent/agents/ReActAgent/description.js.map +1 -0
  60. package/dist/nodes/agents/Agent/agents/ReActAgent/execute.js +1 -0
  61. package/dist/nodes/agents/Agent/agents/ReActAgent/execute.js.map +1 -0
  62. package/dist/nodes/agents/Agent/agents/ReActAgent/prompt.js +1 -0
  63. package/dist/nodes/agents/Agent/agents/ReActAgent/prompt.js.map +1 -0
  64. package/dist/nodes/agents/Agent/agents/SqlAgent/description.js +1 -0
  65. package/dist/nodes/agents/Agent/agents/SqlAgent/description.js.map +1 -0
  66. package/dist/nodes/agents/Agent/agents/SqlAgent/execute.js +1 -0
  67. package/dist/nodes/agents/Agent/agents/SqlAgent/execute.js.map +1 -0
  68. package/dist/nodes/agents/Agent/agents/SqlAgent/other/handlers/mysql.js +1 -0
  69. package/dist/nodes/agents/Agent/agents/SqlAgent/other/handlers/mysql.js.map +1 -0
  70. package/dist/nodes/agents/Agent/agents/SqlAgent/other/handlers/postgres.js +1 -0
  71. package/dist/nodes/agents/Agent/agents/SqlAgent/other/handlers/postgres.js.map +1 -0
  72. package/dist/nodes/agents/Agent/agents/SqlAgent/other/handlers/sqlite.js +1 -0
  73. package/dist/nodes/agents/Agent/agents/SqlAgent/other/handlers/sqlite.js.map +1 -0
  74. package/dist/nodes/agents/Agent/agents/SqlAgent/other/prompts.js +1 -0
  75. package/dist/nodes/agents/Agent/agents/SqlAgent/other/prompts.js.map +1 -0
  76. package/dist/nodes/agents/Agent/agents/ToolsAgent/description.js +1 -0
  77. package/dist/nodes/agents/Agent/agents/ToolsAgent/description.js.map +1 -0
  78. package/dist/nodes/agents/Agent/agents/ToolsAgent/execute.js +1 -0
  79. package/dist/nodes/agents/Agent/agents/ToolsAgent/execute.js.map +1 -0
  80. package/dist/nodes/agents/Agent/agents/ToolsAgent/prompt.js +1 -0
  81. package/dist/nodes/agents/Agent/agents/ToolsAgent/prompt.js.map +1 -0
  82. package/dist/nodes/agents/Agent/agents/utils.js +1 -0
  83. package/dist/nodes/agents/Agent/agents/utils.js.map +1 -0
  84. package/dist/nodes/agents/OpenAiAssistant/OpenAiAssistant.node.js +1 -0
  85. package/dist/nodes/agents/OpenAiAssistant/OpenAiAssistant.node.js.map +1 -0
  86. package/dist/nodes/agents/OpenAiAssistant/utils.js +1 -0
  87. package/dist/nodes/agents/OpenAiAssistant/utils.js.map +1 -0
  88. package/dist/nodes/chains/ChainLLM/ChainLlm.node.js +1 -0
  89. package/dist/nodes/chains/ChainLLM/ChainLlm.node.js.map +1 -0
  90. package/dist/nodes/chains/ChainLLM/methods/chainExecutor.js +1 -0
  91. package/dist/nodes/chains/ChainLLM/methods/chainExecutor.js.map +1 -0
  92. package/dist/nodes/chains/ChainLLM/methods/config.js +1 -0
  93. package/dist/nodes/chains/ChainLLM/methods/config.js.map +1 -0
  94. package/dist/nodes/chains/ChainLLM/methods/imageUtils.js +1 -0
  95. package/dist/nodes/chains/ChainLLM/methods/imageUtils.js.map +1 -0
  96. package/dist/nodes/chains/ChainLLM/methods/index.js +1 -0
  97. package/dist/nodes/chains/ChainLLM/methods/index.js.map +1 -0
  98. package/dist/nodes/chains/ChainLLM/methods/promptUtils.js +1 -0
  99. package/dist/nodes/chains/ChainLLM/methods/promptUtils.js.map +1 -0
  100. package/dist/nodes/chains/ChainLLM/methods/responseFormatter.js +1 -0
  101. package/dist/nodes/chains/ChainLLM/methods/responseFormatter.js.map +1 -0
  102. package/dist/nodes/chains/ChainLLM/methods/types.js +1 -0
  103. package/dist/nodes/chains/ChainLLM/methods/types.js.map +1 -0
  104. package/dist/nodes/chains/ChainRetrievalQA/ChainRetrievalQa.node.js +1 -0
  105. package/dist/nodes/chains/ChainRetrievalQA/ChainRetrievalQa.node.js.map +1 -0
  106. package/dist/nodes/chains/ChainSummarization/ChainSummarization.node.js +1 -0
  107. package/dist/nodes/chains/ChainSummarization/ChainSummarization.node.js.map +1 -0
  108. package/dist/nodes/chains/ChainSummarization/V1/ChainSummarizationV1.node.js +1 -0
  109. package/dist/nodes/chains/ChainSummarization/V1/ChainSummarizationV1.node.js.map +1 -0
  110. package/dist/nodes/chains/ChainSummarization/V2/ChainSummarizationV2.node.js +1 -0
  111. package/dist/nodes/chains/ChainSummarization/V2/ChainSummarizationV2.node.js.map +1 -0
  112. package/dist/nodes/chains/ChainSummarization/helpers.js +1 -0
  113. package/dist/nodes/chains/ChainSummarization/helpers.js.map +1 -0
  114. package/dist/nodes/chains/ChainSummarization/prompt.js +1 -0
  115. package/dist/nodes/chains/ChainSummarization/prompt.js.map +1 -0
  116. package/dist/nodes/chains/InformationExtractor/InformationExtractor.node.js +1 -0
  117. package/dist/nodes/chains/InformationExtractor/InformationExtractor.node.js.map +1 -0
  118. package/dist/nodes/chains/InformationExtractor/helpers.js +1 -0
  119. package/dist/nodes/chains/InformationExtractor/helpers.js.map +1 -0
  120. package/dist/nodes/chains/InformationExtractor/types.js +1 -0
  121. package/dist/nodes/chains/InformationExtractor/types.js.map +1 -0
  122. package/dist/nodes/chains/SentimentAnalysis/SentimentAnalysis.node.js +1 -0
  123. package/dist/nodes/chains/SentimentAnalysis/SentimentAnalysis.node.js.map +1 -0
  124. package/dist/nodes/chains/TextClassifier/TextClassifier.node.js +1 -0
  125. package/dist/nodes/chains/TextClassifier/TextClassifier.node.js.map +1 -0
  126. package/dist/nodes/code/Code.node.js +1 -0
  127. package/dist/nodes/code/Code.node.js.map +1 -0
  128. package/dist/nodes/document_loaders/DocumentBinaryInputLoader/DocumentBinaryInputLoader.node.js +1 -0
  129. package/dist/nodes/document_loaders/DocumentBinaryInputLoader/DocumentBinaryInputLoader.node.js.map +1 -0
  130. package/dist/nodes/document_loaders/DocumentDefaultDataLoader/DocumentDefaultDataLoader.node.js +1 -0
  131. package/dist/nodes/document_loaders/DocumentDefaultDataLoader/DocumentDefaultDataLoader.node.js.map +1 -0
  132. package/dist/nodes/document_loaders/DocumentGithubLoader/DocumentGithubLoader.node.js +1 -0
  133. package/dist/nodes/document_loaders/DocumentGithubLoader/DocumentGithubLoader.node.js.map +1 -0
  134. package/dist/nodes/document_loaders/DocumentJSONInputLoader/DocumentJsonInputLoader.node.js +1 -0
  135. package/dist/nodes/document_loaders/DocumentJSONInputLoader/DocumentJsonInputLoader.node.js.map +1 -0
  136. package/dist/nodes/embeddings/EmbeddingsAwsBedrock/EmbeddingsAwsBedrock.node.js +1 -0
  137. package/dist/nodes/embeddings/EmbeddingsAwsBedrock/EmbeddingsAwsBedrock.node.js.map +1 -0
  138. package/dist/nodes/embeddings/EmbeddingsAzureOpenAi/EmbeddingsAzureOpenAi.node.js +1 -0
  139. package/dist/nodes/embeddings/EmbeddingsAzureOpenAi/EmbeddingsAzureOpenAi.node.js.map +1 -0
  140. package/dist/nodes/embeddings/EmbeddingsCohere/EmbeddingsCohere.node.js +1 -0
  141. package/dist/nodes/embeddings/EmbeddingsCohere/EmbeddingsCohere.node.js.map +1 -0
  142. package/dist/nodes/embeddings/EmbeddingsGoogleGemini/EmbeddingsGoogleGemini.node.js +1 -0
  143. package/dist/nodes/embeddings/EmbeddingsGoogleGemini/EmbeddingsGoogleGemini.node.js.map +1 -0
  144. package/dist/nodes/embeddings/EmbeddingsGoogleVertex/EmbeddingsGoogleVertex.node.js +166 -0
  145. package/dist/nodes/embeddings/EmbeddingsGoogleVertex/EmbeddingsGoogleVertex.node.js.map +1 -0
  146. package/dist/nodes/embeddings/EmbeddingsGoogleVertex/google.svg +1 -0
  147. package/dist/nodes/embeddings/EmbeddingsHuggingFaceInference/EmbeddingsHuggingFaceInference.node.js +1 -0
  148. package/dist/nodes/embeddings/EmbeddingsHuggingFaceInference/EmbeddingsHuggingFaceInference.node.js.map +1 -0
  149. package/dist/nodes/embeddings/EmbeddingsMistralCloud/EmbeddingsMistralCloud.node.js +1 -0
  150. package/dist/nodes/embeddings/EmbeddingsMistralCloud/EmbeddingsMistralCloud.node.js.map +1 -0
  151. package/dist/nodes/embeddings/EmbeddingsOllama/EmbeddingsOllama.node.js +1 -0
  152. package/dist/nodes/embeddings/EmbeddingsOllama/EmbeddingsOllama.node.js.map +1 -0
  153. package/dist/nodes/embeddings/EmbeddingsOpenAI/EmbeddingsOpenAi.node.js +1 -0
  154. package/dist/nodes/embeddings/EmbeddingsOpenAI/EmbeddingsOpenAi.node.js.map +1 -0
  155. package/dist/nodes/llms/LMChatAnthropic/LmChatAnthropic.node.js +1 -0
  156. package/dist/nodes/llms/LMChatAnthropic/LmChatAnthropic.node.js.map +1 -0
  157. package/dist/nodes/llms/LMChatAnthropic/methods/searchModels.js +1 -0
  158. package/dist/nodes/llms/LMChatAnthropic/methods/searchModels.js.map +1 -0
  159. package/dist/nodes/llms/LMChatOllama/LmChatOllama.node.js +1 -0
  160. package/dist/nodes/llms/LMChatOllama/LmChatOllama.node.js.map +1 -0
  161. package/dist/nodes/llms/LMChatOpenAi/LmChatOpenAi.node.js +1 -0
  162. package/dist/nodes/llms/LMChatOpenAi/LmChatOpenAi.node.js.map +1 -0
  163. package/dist/nodes/llms/LMChatOpenAi/methods/loadModels.js +1 -0
  164. package/dist/nodes/llms/LMChatOpenAi/methods/loadModels.js.map +1 -0
  165. package/dist/nodes/llms/LMCohere/LmCohere.node.js +1 -0
  166. package/dist/nodes/llms/LMCohere/LmCohere.node.js.map +1 -0
  167. package/dist/nodes/llms/LMOllama/LmOllama.node.js +1 -0
  168. package/dist/nodes/llms/LMOllama/LmOllama.node.js.map +1 -0
  169. package/dist/nodes/llms/LMOllama/description.js +1 -0
  170. package/dist/nodes/llms/LMOllama/description.js.map +1 -0
  171. package/dist/nodes/llms/LMOpenAi/LmOpenAi.node.js +1 -0
  172. package/dist/nodes/llms/LMOpenAi/LmOpenAi.node.js.map +1 -0
  173. package/dist/nodes/llms/LMOpenHuggingFaceInference/LmOpenHuggingFaceInference.node.js +1 -0
  174. package/dist/nodes/llms/LMOpenHuggingFaceInference/LmOpenHuggingFaceInference.node.js.map +1 -0
  175. package/dist/nodes/llms/LmChatAwsBedrock/LmChatAwsBedrock.node.js +1 -0
  176. package/dist/nodes/llms/LmChatAwsBedrock/LmChatAwsBedrock.node.js.map +1 -0
  177. package/dist/nodes/llms/LmChatAzureOpenAi/LmChatAzureOpenAi.node.js +1 -0
  178. package/dist/nodes/llms/LmChatAzureOpenAi/LmChatAzureOpenAi.node.js.map +1 -0
  179. package/dist/nodes/llms/LmChatDeepSeek/LmChatDeepSeek.node.js +1 -0
  180. package/dist/nodes/llms/LmChatDeepSeek/LmChatDeepSeek.node.js.map +1 -0
  181. package/dist/nodes/llms/LmChatGoogleGemini/LmChatGoogleGemini.node.js +1 -0
  182. package/dist/nodes/llms/LmChatGoogleGemini/LmChatGoogleGemini.node.js.map +1 -0
  183. package/dist/nodes/llms/LmChatGoogleVertex/LmChatGoogleVertex.node.js +1 -0
  184. package/dist/nodes/llms/LmChatGoogleVertex/LmChatGoogleVertex.node.js.map +1 -0
  185. package/dist/nodes/llms/LmChatGoogleVertex/error-handling.js +1 -0
  186. package/dist/nodes/llms/LmChatGoogleVertex/error-handling.js.map +1 -0
  187. package/dist/nodes/llms/LmChatGroq/LmChatGroq.node.js +1 -0
  188. package/dist/nodes/llms/LmChatGroq/LmChatGroq.node.js.map +1 -0
  189. package/dist/nodes/llms/LmChatMistralCloud/LmChatMistralCloud.node.js +1 -0
  190. package/dist/nodes/llms/LmChatMistralCloud/LmChatMistralCloud.node.js.map +1 -0
  191. package/dist/nodes/llms/LmChatOpenRouter/LmChatOpenRouter.node.js +1 -0
  192. package/dist/nodes/llms/LmChatOpenRouter/LmChatOpenRouter.node.js.map +1 -0
  193. package/dist/nodes/llms/LmChatXAiGrok/LmChatXAiGrok.node.js +1 -0
  194. package/dist/nodes/llms/LmChatXAiGrok/LmChatXAiGrok.node.js.map +1 -0
  195. package/dist/nodes/llms/N8nLlmTracing.js +1 -0
  196. package/dist/nodes/llms/N8nLlmTracing.js.map +1 -0
  197. package/dist/nodes/llms/gemini-common/additional-options.js +1 -0
  198. package/dist/nodes/llms/gemini-common/additional-options.js.map +1 -0
  199. package/dist/nodes/llms/gemini-common/safety-options.js +1 -0
  200. package/dist/nodes/llms/gemini-common/safety-options.js.map +1 -0
  201. package/dist/nodes/llms/n8nDefaultFailedAttemptHandler.js +1 -0
  202. package/dist/nodes/llms/n8nDefaultFailedAttemptHandler.js.map +1 -0
  203. package/dist/nodes/llms/n8nLlmFailedAttemptHandler.js +1 -0
  204. package/dist/nodes/llms/n8nLlmFailedAttemptHandler.js.map +1 -0
  205. package/dist/nodes/memory/MemoryBufferWindow/MemoryBufferWindow.node.js +1 -0
  206. package/dist/nodes/memory/MemoryBufferWindow/MemoryBufferWindow.node.js.map +1 -0
  207. package/dist/nodes/memory/MemoryChatRetriever/MemoryChatRetriever.node.js +1 -0
  208. package/dist/nodes/memory/MemoryChatRetriever/MemoryChatRetriever.node.js.map +1 -0
  209. package/dist/nodes/memory/MemoryManager/MemoryManager.node.js +1 -0
  210. package/dist/nodes/memory/MemoryManager/MemoryManager.node.js.map +1 -0
  211. package/dist/nodes/memory/MemoryMongoDbChat/MemoryMongoDbChat.node.js +155 -0
  212. package/dist/nodes/memory/MemoryMongoDbChat/MemoryMongoDbChat.node.js.map +1 -0
  213. package/dist/nodes/memory/MemoryMongoDbChat/mongodb.dark.svg +3 -0
  214. package/dist/nodes/memory/MemoryMongoDbChat/mongodb.svg +3 -0
  215. package/dist/nodes/memory/MemoryMotorhead/MemoryMotorhead.node.js +1 -0
  216. package/dist/nodes/memory/MemoryMotorhead/MemoryMotorhead.node.js.map +1 -0
  217. package/dist/nodes/memory/MemoryPostgresChat/MemoryPostgresChat.node.js +1 -0
  218. package/dist/nodes/memory/MemoryPostgresChat/MemoryPostgresChat.node.js.map +1 -0
  219. package/dist/nodes/memory/MemoryRedisChat/MemoryRedisChat.node.js +1 -0
  220. package/dist/nodes/memory/MemoryRedisChat/MemoryRedisChat.node.js.map +1 -0
  221. package/dist/nodes/memory/MemoryXata/MemoryXata.node.js +1 -0
  222. package/dist/nodes/memory/MemoryXata/MemoryXata.node.js.map +1 -0
  223. package/dist/nodes/memory/MemoryZep/MemoryZep.node.js +1 -0
  224. package/dist/nodes/memory/MemoryZep/MemoryZep.node.js.map +1 -0
  225. package/dist/nodes/memory/descriptions.js +1 -0
  226. package/dist/nodes/memory/descriptions.js.map +1 -0
  227. package/dist/nodes/output_parser/OutputParserAutofixing/OutputParserAutofixing.node.js +1 -0
  228. package/dist/nodes/output_parser/OutputParserAutofixing/OutputParserAutofixing.node.js.map +1 -0
  229. package/dist/nodes/output_parser/OutputParserAutofixing/prompt.js +1 -0
  230. package/dist/nodes/output_parser/OutputParserAutofixing/prompt.js.map +1 -0
  231. package/dist/nodes/output_parser/OutputParserItemList/OutputParserItemList.node.js +1 -0
  232. package/dist/nodes/output_parser/OutputParserItemList/OutputParserItemList.node.js.map +1 -0
  233. package/dist/nodes/output_parser/OutputParserStructured/OutputParserStructured.node.js +1 -0
  234. package/dist/nodes/output_parser/OutputParserStructured/OutputParserStructured.node.js.map +1 -0
  235. package/dist/nodes/retrievers/RetrieverContextualCompression/RetrieverContextualCompression.node.js +1 -0
  236. package/dist/nodes/retrievers/RetrieverContextualCompression/RetrieverContextualCompression.node.js.map +1 -0
  237. package/dist/nodes/retrievers/RetrieverMultiQuery/RetrieverMultiQuery.node.js +1 -0
  238. package/dist/nodes/retrievers/RetrieverMultiQuery/RetrieverMultiQuery.node.js.map +1 -0
  239. package/dist/nodes/retrievers/RetrieverVectorStore/RetrieverVectorStore.node.js +1 -0
  240. package/dist/nodes/retrievers/RetrieverVectorStore/RetrieverVectorStore.node.js.map +1 -0
  241. package/dist/nodes/retrievers/RetrieverWorkflow/RetrieverWorkflow.node.js +1 -0
  242. package/dist/nodes/retrievers/RetrieverWorkflow/RetrieverWorkflow.node.js.map +1 -0
  243. package/dist/nodes/text_splitters/TextSplitterCharacterTextSplitter/TextSplitterCharacterTextSplitter.node.js +1 -0
  244. package/dist/nodes/text_splitters/TextSplitterCharacterTextSplitter/TextSplitterCharacterTextSplitter.node.js.map +1 -0
  245. package/dist/nodes/text_splitters/TextSplitterRecursiveCharacterTextSplitter/TextSplitterRecursiveCharacterTextSplitter.node.js +1 -0
  246. package/dist/nodes/text_splitters/TextSplitterRecursiveCharacterTextSplitter/TextSplitterRecursiveCharacterTextSplitter.node.js.map +1 -0
  247. package/dist/nodes/text_splitters/TextSplitterTokenSplitter/TextSplitterTokenSplitter.node.js +1 -0
  248. package/dist/nodes/text_splitters/TextSplitterTokenSplitter/TextSplitterTokenSplitter.node.js.map +1 -0
  249. package/dist/nodes/tools/ToolCalculator/ToolCalculator.node.js +1 -0
  250. package/dist/nodes/tools/ToolCalculator/ToolCalculator.node.js.map +1 -0
  251. package/dist/nodes/tools/ToolCode/ToolCode.node.js +1 -0
  252. package/dist/nodes/tools/ToolCode/ToolCode.node.js.map +1 -0
  253. package/dist/nodes/tools/ToolHttpRequest/ToolHttpRequest.node.js +1 -0
  254. package/dist/nodes/tools/ToolHttpRequest/ToolHttpRequest.node.js.map +1 -0
  255. package/dist/nodes/tools/ToolHttpRequest/descriptions.js +1 -0
  256. package/dist/nodes/tools/ToolHttpRequest/descriptions.js.map +1 -0
  257. package/dist/nodes/tools/ToolHttpRequest/interfaces.js +1 -0
  258. package/dist/nodes/tools/ToolHttpRequest/interfaces.js.map +1 -0
  259. package/dist/nodes/tools/ToolHttpRequest/utils.js +3 -2
  260. package/dist/nodes/tools/ToolHttpRequest/utils.js.map +1 -0
  261. package/dist/nodes/tools/ToolSerpApi/ToolSerpApi.node.js +1 -0
  262. package/dist/nodes/tools/ToolSerpApi/ToolSerpApi.node.js.map +1 -0
  263. package/dist/nodes/tools/ToolThink/ToolThink.node.js +94 -0
  264. package/dist/nodes/tools/ToolThink/ToolThink.node.js.map +1 -0
  265. package/dist/nodes/tools/ToolVectorStore/ToolVectorStore.node.js +1 -0
  266. package/dist/nodes/tools/ToolVectorStore/ToolVectorStore.node.js.map +1 -0
  267. package/dist/nodes/tools/ToolWikipedia/ToolWikipedia.node.js +1 -0
  268. package/dist/nodes/tools/ToolWikipedia/ToolWikipedia.node.js.map +1 -0
  269. package/dist/nodes/tools/ToolWolframAlpha/ToolWolframAlpha.node.js +1 -0
  270. package/dist/nodes/tools/ToolWolframAlpha/ToolWolframAlpha.node.js.map +1 -0
  271. package/dist/nodes/tools/ToolWorkflow/ToolWorkflow.node.js +1 -0
  272. package/dist/nodes/tools/ToolWorkflow/ToolWorkflow.node.js.map +1 -0
  273. package/dist/nodes/tools/ToolWorkflow/v1/ToolWorkflowV1.node.js +1 -0
  274. package/dist/nodes/tools/ToolWorkflow/v1/ToolWorkflowV1.node.js.map +1 -0
  275. package/dist/nodes/tools/ToolWorkflow/v1/versionDescription.js +1 -0
  276. package/dist/nodes/tools/ToolWorkflow/v1/versionDescription.js.map +1 -0
  277. package/dist/nodes/tools/ToolWorkflow/v2/ToolWorkflowV2.node.js +1 -0
  278. package/dist/nodes/tools/ToolWorkflow/v2/ToolWorkflowV2.node.js.map +1 -0
  279. package/dist/nodes/tools/ToolWorkflow/v2/methods/index.js +1 -0
  280. package/dist/nodes/tools/ToolWorkflow/v2/methods/index.js.map +1 -0
  281. package/dist/nodes/tools/ToolWorkflow/v2/methods/localResourceMapping.js +1 -0
  282. package/dist/nodes/tools/ToolWorkflow/v2/methods/localResourceMapping.js.map +1 -0
  283. package/dist/nodes/tools/ToolWorkflow/v2/utils/WorkflowToolService.js +1 -0
  284. package/dist/nodes/tools/ToolWorkflow/v2/utils/WorkflowToolService.js.map +1 -0
  285. package/dist/nodes/tools/ToolWorkflow/v2/versionDescription.js +1 -0
  286. package/dist/nodes/tools/ToolWorkflow/v2/versionDescription.js.map +1 -0
  287. package/dist/nodes/trigger/ChatTrigger/ChatTrigger.node.js +1 -0
  288. package/dist/nodes/trigger/ChatTrigger/ChatTrigger.node.js.map +1 -0
  289. package/dist/nodes/trigger/ChatTrigger/GenericFunctions.js +1 -0
  290. package/dist/nodes/trigger/ChatTrigger/GenericFunctions.js.map +1 -0
  291. package/dist/nodes/trigger/ChatTrigger/constants.js +1 -0
  292. package/dist/nodes/trigger/ChatTrigger/constants.js.map +1 -0
  293. package/dist/nodes/trigger/ChatTrigger/error.js +1 -0
  294. package/dist/nodes/trigger/ChatTrigger/error.js.map +1 -0
  295. package/dist/nodes/trigger/ChatTrigger/templates.js +1 -0
  296. package/dist/nodes/trigger/ChatTrigger/templates.js.map +1 -0
  297. package/dist/nodes/trigger/ChatTrigger/types.js +1 -0
  298. package/dist/nodes/trigger/ChatTrigger/types.js.map +1 -0
  299. package/dist/nodes/trigger/ManualChatTrigger/ManualChatTrigger.node.js +1 -0
  300. package/dist/nodes/trigger/ManualChatTrigger/ManualChatTrigger.node.js.map +1 -0
  301. package/dist/nodes/vector_store/VectorStoreInMemory/VectorStoreInMemory.node.js +1 -0
  302. package/dist/nodes/vector_store/VectorStoreInMemory/VectorStoreInMemory.node.js.map +1 -0
  303. package/dist/nodes/vector_store/VectorStoreInMemoryInsert/VectorStoreInMemoryInsert.node.js +1 -0
  304. package/dist/nodes/vector_store/VectorStoreInMemoryInsert/VectorStoreInMemoryInsert.node.js.map +1 -0
  305. package/dist/nodes/vector_store/VectorStoreInMemoryLoad/VectorStoreInMemoryLoad.node.js +1 -0
  306. package/dist/nodes/vector_store/VectorStoreInMemoryLoad/VectorStoreInMemoryLoad.node.js.map +1 -0
  307. package/dist/nodes/vector_store/VectorStoreMongoDBAtlas/VectorStoreMongoDBAtlas.node.js +1 -0
  308. package/dist/nodes/vector_store/VectorStoreMongoDBAtlas/VectorStoreMongoDBAtlas.node.js.map +1 -0
  309. package/dist/nodes/vector_store/VectorStorePGVector/VectorStorePGVector.node.js +1 -0
  310. package/dist/nodes/vector_store/VectorStorePGVector/VectorStorePGVector.node.js.map +1 -0
  311. package/dist/nodes/vector_store/VectorStorePinecone/VectorStorePinecone.node.js +1 -0
  312. package/dist/nodes/vector_store/VectorStorePinecone/VectorStorePinecone.node.js.map +1 -0
  313. package/dist/nodes/vector_store/VectorStorePineconeInsert/VectorStorePineconeInsert.node.js +1 -0
  314. package/dist/nodes/vector_store/VectorStorePineconeInsert/VectorStorePineconeInsert.node.js.map +1 -0
  315. package/dist/nodes/vector_store/VectorStorePineconeLoad/VectorStorePineconeLoad.node.js +1 -0
  316. package/dist/nodes/vector_store/VectorStorePineconeLoad/VectorStorePineconeLoad.node.js.map +1 -0
  317. package/dist/nodes/vector_store/VectorStoreQdrant/VectorStoreQdrant.node.js +1 -0
  318. package/dist/nodes/vector_store/VectorStoreQdrant/VectorStoreQdrant.node.js.map +1 -0
  319. package/dist/nodes/vector_store/VectorStoreSupabase/VectorStoreSupabase.node.js +1 -0
  320. package/dist/nodes/vector_store/VectorStoreSupabase/VectorStoreSupabase.node.js.map +1 -0
  321. package/dist/nodes/vector_store/VectorStoreSupabaseInsert/VectorStoreSupabaseInsert.node.js +1 -0
  322. package/dist/nodes/vector_store/VectorStoreSupabaseInsert/VectorStoreSupabaseInsert.node.js.map +1 -0
  323. package/dist/nodes/vector_store/VectorStoreSupabaseLoad/VectorStoreSupabaseLoad.node.js +1 -0
  324. package/dist/nodes/vector_store/VectorStoreSupabaseLoad/VectorStoreSupabaseLoad.node.js.map +1 -0
  325. package/dist/nodes/vector_store/VectorStoreZep/VectorStoreZep.node.js +1 -0
  326. package/dist/nodes/vector_store/VectorStoreZep/VectorStoreZep.node.js.map +1 -0
  327. package/dist/nodes/vector_store/VectorStoreZepInsert/VectorStoreZepInsert.node.js +1 -0
  328. package/dist/nodes/vector_store/VectorStoreZepInsert/VectorStoreZepInsert.node.js.map +1 -0
  329. package/dist/nodes/vector_store/VectorStoreZepLoad/VectorStoreZepLoad.node.js +1 -0
  330. package/dist/nodes/vector_store/VectorStoreZepLoad/VectorStoreZepLoad.node.js.map +1 -0
  331. package/dist/nodes/vector_store/shared/MemoryManager/MemoryCalculator.js +1 -0
  332. package/dist/nodes/vector_store/shared/MemoryManager/MemoryCalculator.js.map +1 -0
  333. package/dist/nodes/vector_store/shared/MemoryManager/MemoryVectorStoreManager.js +1 -0
  334. package/dist/nodes/vector_store/shared/MemoryManager/MemoryVectorStoreManager.js.map +1 -0
  335. package/dist/nodes/vector_store/shared/MemoryManager/StoreCleanupService.js +1 -0
  336. package/dist/nodes/vector_store/shared/MemoryManager/StoreCleanupService.js.map +1 -0
  337. package/dist/nodes/vector_store/shared/MemoryManager/config.js +1 -0
  338. package/dist/nodes/vector_store/shared/MemoryManager/config.js.map +1 -0
  339. package/dist/nodes/vector_store/shared/MemoryManager/types.js +1 -0
  340. package/dist/nodes/vector_store/shared/MemoryManager/types.js.map +1 -0
  341. package/dist/nodes/vector_store/shared/createVectorStoreNode/constants.js +1 -0
  342. package/dist/nodes/vector_store/shared/createVectorStoreNode/constants.js.map +1 -0
  343. package/dist/nodes/vector_store/shared/createVectorStoreNode/createVectorStoreNode.js +1 -0
  344. package/dist/nodes/vector_store/shared/createVectorStoreNode/createVectorStoreNode.js.map +1 -0
  345. package/dist/nodes/vector_store/shared/createVectorStoreNode/methods/listSearch.js +1 -0
  346. package/dist/nodes/vector_store/shared/createVectorStoreNode/methods/listSearch.js.map +1 -0
  347. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/index.js +1 -0
  348. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/index.js.map +1 -0
  349. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/insertOperation.js +1 -0
  350. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/insertOperation.js.map +1 -0
  351. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/loadOperation.js +1 -0
  352. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/loadOperation.js.map +1 -0
  353. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/retrieveAsToolOperation.js +1 -0
  354. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/retrieveAsToolOperation.js.map +1 -0
  355. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/retrieveOperation.js +1 -0
  356. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/retrieveOperation.js.map +1 -0
  357. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/updateOperation.js +1 -0
  358. package/dist/nodes/vector_store/shared/createVectorStoreNode/operations/updateOperation.js.map +1 -0
  359. package/dist/nodes/vector_store/shared/createVectorStoreNode/types.js +1 -0
  360. package/dist/nodes/vector_store/shared/createVectorStoreNode/types.js.map +1 -0
  361. package/dist/nodes/vector_store/shared/createVectorStoreNode/utils.js +1 -0
  362. package/dist/nodes/vector_store/shared/createVectorStoreNode/utils.js.map +1 -0
  363. package/dist/nodes/vector_store/shared/descriptions.js +1 -0
  364. package/dist/nodes/vector_store/shared/descriptions.js.map +1 -0
  365. package/dist/nodes/vector_store/shared/processDocuments.js +1 -0
  366. package/dist/nodes/vector_store/shared/processDocuments.js.map +1 -0
  367. package/dist/nodes/vendors/OpenAi/OpenAi.node.js +1 -0
  368. package/dist/nodes/vendors/OpenAi/OpenAi.node.js.map +1 -0
  369. package/dist/nodes/vendors/OpenAi/actions/assistant/create.operation.js +1 -0
  370. package/dist/nodes/vendors/OpenAi/actions/assistant/create.operation.js.map +1 -0
  371. package/dist/nodes/vendors/OpenAi/actions/assistant/deleteAssistant.operation.js +1 -0
  372. package/dist/nodes/vendors/OpenAi/actions/assistant/deleteAssistant.operation.js.map +1 -0
  373. package/dist/nodes/vendors/OpenAi/actions/assistant/index.js +1 -0
  374. package/dist/nodes/vendors/OpenAi/actions/assistant/index.js.map +1 -0
  375. package/dist/nodes/vendors/OpenAi/actions/assistant/list.operation.js +1 -0
  376. package/dist/nodes/vendors/OpenAi/actions/assistant/list.operation.js.map +1 -0
  377. package/dist/nodes/vendors/OpenAi/actions/assistant/message.operation.js +1 -0
  378. package/dist/nodes/vendors/OpenAi/actions/assistant/message.operation.js.map +1 -0
  379. package/dist/nodes/vendors/OpenAi/actions/assistant/update.operation.js +1 -0
  380. package/dist/nodes/vendors/OpenAi/actions/assistant/update.operation.js.map +1 -0
  381. package/dist/nodes/vendors/OpenAi/actions/audio/generate.operation.js +1 -0
  382. package/dist/nodes/vendors/OpenAi/actions/audio/generate.operation.js.map +1 -0
  383. package/dist/nodes/vendors/OpenAi/actions/audio/index.js +1 -0
  384. package/dist/nodes/vendors/OpenAi/actions/audio/index.js.map +1 -0
  385. package/dist/nodes/vendors/OpenAi/actions/audio/transcribe.operation.js +1 -0
  386. package/dist/nodes/vendors/OpenAi/actions/audio/transcribe.operation.js.map +1 -0
  387. package/dist/nodes/vendors/OpenAi/actions/audio/translate.operation.js +1 -0
  388. package/dist/nodes/vendors/OpenAi/actions/audio/translate.operation.js.map +1 -0
  389. package/dist/nodes/vendors/OpenAi/actions/descriptions.js +1 -0
  390. package/dist/nodes/vendors/OpenAi/actions/descriptions.js.map +1 -0
  391. package/dist/nodes/vendors/OpenAi/actions/file/deleteFile.operation.js +1 -0
  392. package/dist/nodes/vendors/OpenAi/actions/file/deleteFile.operation.js.map +1 -0
  393. package/dist/nodes/vendors/OpenAi/actions/file/index.js +1 -0
  394. package/dist/nodes/vendors/OpenAi/actions/file/index.js.map +1 -0
  395. package/dist/nodes/vendors/OpenAi/actions/file/list.operation.js +1 -0
  396. package/dist/nodes/vendors/OpenAi/actions/file/list.operation.js.map +1 -0
  397. package/dist/nodes/vendors/OpenAi/actions/file/upload.operation.js +1 -0
  398. package/dist/nodes/vendors/OpenAi/actions/file/upload.operation.js.map +1 -0
  399. package/dist/nodes/vendors/OpenAi/actions/image/analyze.operation.js +1 -0
  400. package/dist/nodes/vendors/OpenAi/actions/image/analyze.operation.js.map +1 -0
  401. package/dist/nodes/vendors/OpenAi/actions/image/generate.operation.js +1 -0
  402. package/dist/nodes/vendors/OpenAi/actions/image/generate.operation.js.map +1 -0
  403. package/dist/nodes/vendors/OpenAi/actions/image/index.js +1 -0
  404. package/dist/nodes/vendors/OpenAi/actions/image/index.js.map +1 -0
  405. package/dist/nodes/vendors/OpenAi/actions/node.type.js +1 -0
  406. package/dist/nodes/vendors/OpenAi/actions/node.type.js.map +1 -0
  407. package/dist/nodes/vendors/OpenAi/actions/router.js +1 -0
  408. package/dist/nodes/vendors/OpenAi/actions/router.js.map +1 -0
  409. package/dist/nodes/vendors/OpenAi/actions/text/classify.operation.js +1 -0
  410. package/dist/nodes/vendors/OpenAi/actions/text/classify.operation.js.map +1 -0
  411. package/dist/nodes/vendors/OpenAi/actions/text/index.js +1 -0
  412. package/dist/nodes/vendors/OpenAi/actions/text/index.js.map +1 -0
  413. package/dist/nodes/vendors/OpenAi/actions/text/message.operation.js +1 -0
  414. package/dist/nodes/vendors/OpenAi/actions/text/message.operation.js.map +1 -0
  415. package/dist/nodes/vendors/OpenAi/actions/versionDescription.js +1 -0
  416. package/dist/nodes/vendors/OpenAi/actions/versionDescription.js.map +1 -0
  417. package/dist/nodes/vendors/OpenAi/helpers/constants.js +1 -0
  418. package/dist/nodes/vendors/OpenAi/helpers/constants.js.map +1 -0
  419. package/dist/nodes/vendors/OpenAi/helpers/error-handling.js +1 -0
  420. package/dist/nodes/vendors/OpenAi/helpers/error-handling.js.map +1 -0
  421. package/dist/nodes/vendors/OpenAi/helpers/interfaces.js +1 -0
  422. package/dist/nodes/vendors/OpenAi/helpers/interfaces.js.map +1 -0
  423. package/dist/nodes/vendors/OpenAi/helpers/utils.js +1 -0
  424. package/dist/nodes/vendors/OpenAi/helpers/utils.js.map +1 -0
  425. package/dist/nodes/vendors/OpenAi/methods/index.js +1 -0
  426. package/dist/nodes/vendors/OpenAi/methods/index.js.map +1 -0
  427. package/dist/nodes/vendors/OpenAi/methods/listSearch.js +1 -0
  428. package/dist/nodes/vendors/OpenAi/methods/listSearch.js.map +1 -0
  429. package/dist/nodes/vendors/OpenAi/methods/loadOptions.js +1 -0
  430. package/dist/nodes/vendors/OpenAi/methods/loadOptions.js.map +1 -0
  431. package/dist/nodes/vendors/OpenAi/transport/index.js +1 -0
  432. package/dist/nodes/vendors/OpenAi/transport/index.js.map +1 -0
  433. package/dist/types/nodes.json +3 -0
  434. package/dist/types/types.js +1 -0
  435. package/dist/types/types.js.map +1 -0
  436. package/dist/types/zod.types.js +1 -0
  437. package/dist/types/zod.types.js.map +1 -0
  438. package/dist/utils/N8nBinaryLoader.js +1 -0
  439. package/dist/utils/N8nBinaryLoader.js.map +1 -0
  440. package/dist/utils/N8nJsonLoader.js +1 -0
  441. package/dist/utils/N8nJsonLoader.js.map +1 -0
  442. package/dist/utils/N8nTool.js +1 -0
  443. package/dist/utils/N8nTool.js.map +1 -0
  444. package/dist/utils/descriptions.js +1 -0
  445. package/dist/utils/descriptions.js.map +1 -0
  446. package/dist/utils/helpers.js +1 -0
  447. package/dist/utils/helpers.js.map +1 -0
  448. package/dist/utils/logWrapper.js +1 -0
  449. package/dist/utils/logWrapper.js.map +1 -0
  450. package/dist/utils/output_parsers/N8nItemListOutputParser.js +1 -0
  451. package/dist/utils/output_parsers/N8nItemListOutputParser.js.map +1 -0
  452. package/dist/utils/output_parsers/N8nOutputFixingParser.js +1 -0
  453. package/dist/utils/output_parsers/N8nOutputFixingParser.js.map +1 -0
  454. package/dist/utils/output_parsers/N8nOutputParser.js +1 -0
  455. package/dist/utils/output_parsers/N8nOutputParser.js.map +1 -0
  456. package/dist/utils/output_parsers/N8nStructuredOutputParser.js +1 -0
  457. package/dist/utils/output_parsers/N8nStructuredOutputParser.js.map +1 -0
  458. package/dist/utils/output_parsers/prompt.js +1 -0
  459. package/dist/utils/output_parsers/prompt.js.map +1 -0
  460. package/dist/utils/schemaParsing.js +1 -0
  461. package/dist/utils/schemaParsing.js.map +1 -0
  462. package/dist/utils/sharedFields.js +1 -0
  463. package/dist/utils/sharedFields.js.map +1 -0
  464. package/dist/utils/tracing.js +1 -0
  465. package/dist/utils/tracing.js.map +1 -0
  466. package/package.json +9 -6
@@ -0,0 +1,155 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var MemoryMongoDbChat_node_exports = {};
20
+ __export(MemoryMongoDbChat_node_exports, {
21
+ MemoryMongoDbChat: () => MemoryMongoDbChat
22
+ });
23
+ module.exports = __toCommonJS(MemoryMongoDbChat_node_exports);
24
+ var import_mongodb = require("@langchain/mongodb");
25
+ var import_memory = require("langchain/memory");
26
+ var import_mongodb2 = require("mongodb");
27
+ var import_n8n_workflow = require("n8n-workflow");
28
+ var import_helpers = require("../../../utils/helpers");
29
+ var import_logWrapper = require("../../../utils/logWrapper");
30
+ var import_sharedFields = require("../../../utils/sharedFields");
31
+ var import_descriptions = require("../descriptions");
32
+ class MemoryMongoDbChat {
33
+ constructor() {
34
+ this.description = {
35
+ displayName: "MongoDB Chat Memory",
36
+ name: "memoryMongoDbChat",
37
+ icon: "file:mongodb.svg",
38
+ group: ["transform"],
39
+ version: [1],
40
+ description: "Stores the chat history in MongoDB collection.",
41
+ defaults: {
42
+ name: "MongoDB Chat Memory"
43
+ },
44
+ credentials: [
45
+ {
46
+ name: "mongoDb",
47
+ required: true
48
+ }
49
+ ],
50
+ codex: {
51
+ categories: ["AI"],
52
+ subcategories: {
53
+ AI: ["Memory"]
54
+ },
55
+ resources: {
56
+ primaryDocumentation: [
57
+ {
58
+ url: "https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorymongochat/"
59
+ }
60
+ ]
61
+ }
62
+ },
63
+ inputs: [],
64
+ outputs: [import_n8n_workflow.NodeConnectionTypes.AiMemory],
65
+ outputNames: ["Memory"],
66
+ properties: [
67
+ (0, import_sharedFields.getConnectionHintNoticeField)([import_n8n_workflow.NodeConnectionTypes.AiAgent]),
68
+ import_descriptions.sessionIdOption,
69
+ (0, import_descriptions.expressionSessionKeyProperty)(1),
70
+ import_descriptions.sessionKeyProperty,
71
+ {
72
+ displayName: "Collection Name",
73
+ name: "collectionName",
74
+ type: "string",
75
+ default: "n8n_chat_histories",
76
+ description: "The collection name to store the chat history in. If collection does not exist, it will be created."
77
+ },
78
+ {
79
+ displayName: "Database Name",
80
+ name: "databaseName",
81
+ type: "string",
82
+ default: "",
83
+ description: "The database name to store the chat history in. If not provided, the database from credentials will be used."
84
+ },
85
+ import_descriptions.contextWindowLengthProperty
86
+ ]
87
+ };
88
+ }
89
+ async supplyData(itemIndex) {
90
+ const credentials = await this.getCredentials("mongoDb");
91
+ const collectionName = this.getNodeParameter(
92
+ "collectionName",
93
+ itemIndex,
94
+ "n8n_chat_histories"
95
+ );
96
+ const databaseName = this.getNodeParameter("databaseName", itemIndex, "");
97
+ const sessionId = (0, import_helpers.getSessionId)(this, itemIndex);
98
+ let connectionString;
99
+ let dbName;
100
+ if (credentials.configurationType === "connectionString") {
101
+ connectionString = credentials.connectionString;
102
+ dbName = databaseName || credentials.database;
103
+ } else {
104
+ const host = credentials.host;
105
+ const port = credentials.port;
106
+ const user = credentials.user ? encodeURIComponent(credentials.user) : "";
107
+ const password = credentials.password ? encodeURIComponent(credentials.password) : "";
108
+ const authString = user && password ? `${user}:${password}@` : "";
109
+ const tls = credentials.tls;
110
+ connectionString = `mongodb://${authString}${host}:${port}/?appname=n8n`;
111
+ if (tls) {
112
+ connectionString += "&ssl=true";
113
+ }
114
+ dbName = databaseName || credentials.database;
115
+ }
116
+ if (!dbName) {
117
+ throw new import_n8n_workflow.NodeOperationError(
118
+ this.getNode(),
119
+ "Database name must be provided either in credentials or in node parameters"
120
+ );
121
+ }
122
+ try {
123
+ const client = new import_mongodb2.MongoClient(connectionString);
124
+ await client.connect();
125
+ const db = client.db(dbName);
126
+ const collection = db.collection(collectionName);
127
+ const mongoDBChatHistory = new import_mongodb.MongoDBChatMessageHistory({
128
+ collection,
129
+ sessionId
130
+ });
131
+ const memory = new import_memory.BufferWindowMemory({
132
+ memoryKey: "chat_history",
133
+ chatHistory: mongoDBChatHistory,
134
+ returnMessages: true,
135
+ inputKey: "input",
136
+ outputKey: "output",
137
+ k: this.getNodeParameter("contextWindowLength", itemIndex, 5)
138
+ });
139
+ async function closeFunction() {
140
+ await client.close();
141
+ }
142
+ return {
143
+ closeFunction,
144
+ response: (0, import_logWrapper.logWrapper)(memory, this)
145
+ };
146
+ } catch (error) {
147
+ throw new import_n8n_workflow.NodeOperationError(this.getNode(), `MongoDB connection error: ${error.message}`);
148
+ }
149
+ }
150
+ }
151
+ // Annotate the CommonJS export names for ESM import in node:
152
+ 0 && (module.exports = {
153
+ MemoryMongoDbChat
154
+ });
155
+ //# sourceMappingURL=MemoryMongoDbChat.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../nodes/memory/MemoryMongoDbChat/MemoryMongoDbChat.node.ts"],"sourcesContent":["import { MongoDBChatMessageHistory } from '@langchain/mongodb';\nimport { BufferWindowMemory } from 'langchain/memory';\nimport { MongoClient } from 'mongodb';\nimport type {\n\tISupplyDataFunctions,\n\tINodeType,\n\tINodeTypeDescription,\n\tSupplyData,\n} from 'n8n-workflow';\nimport { NodeConnectionTypes, NodeOperationError } from 'n8n-workflow';\n\nimport { getSessionId } from '@utils/helpers';\nimport { logWrapper } from '@utils/logWrapper';\nimport { getConnectionHintNoticeField } from '@utils/sharedFields';\n\nimport {\n\tsessionIdOption,\n\tsessionKeyProperty,\n\texpressionSessionKeyProperty,\n\tcontextWindowLengthProperty,\n} from '../descriptions';\n\nexport class MemoryMongoDbChat implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'MongoDB Chat Memory',\n\t\tname: 'memoryMongoDbChat',\n\t\ticon: 'file:mongodb.svg',\n\t\tgroup: ['transform'],\n\t\tversion: [1],\n\t\tdescription: 'Stores the chat history in MongoDB collection.',\n\t\tdefaults: {\n\t\t\tname: 'MongoDB Chat Memory',\n\t\t},\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\tname: 'mongoDb',\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t\tcodex: {\n\t\t\tcategories: ['AI'],\n\t\t\tsubcategories: {\n\t\t\t\tAI: ['Memory'],\n\t\t\t},\n\t\t\tresources: {\n\t\t\t\tprimaryDocumentation: [\n\t\t\t\t\t{\n\t\t\t\t\t\turl: 'https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorymongochat/',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\tinputs: [],\n\t\toutputs: [NodeConnectionTypes.AiMemory],\n\t\toutputNames: ['Memory'],\n\t\tproperties: [\n\t\t\tgetConnectionHintNoticeField([NodeConnectionTypes.AiAgent]),\n\t\t\tsessionIdOption,\n\t\t\texpressionSessionKeyProperty(1),\n\t\t\tsessionKeyProperty,\n\t\t\t{\n\t\t\t\tdisplayName: 'Collection Name',\n\t\t\t\tname: 'collectionName',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: 'n8n_chat_histories',\n\t\t\t\tdescription:\n\t\t\t\t\t'The collection name to store the chat history in. If collection does not exist, it will be created.',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Database Name',\n\t\t\t\tname: 'databaseName',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t\tdescription:\n\t\t\t\t\t'The database name to store the chat history in. If not provided, the database from credentials will be used.',\n\t\t\t},\n\t\t\tcontextWindowLengthProperty,\n\t\t],\n\t};\n\n\tasync supplyData(this: ISupplyDataFunctions, itemIndex: number): Promise<SupplyData> {\n\t\tconst credentials = await this.getCredentials<{\n\t\t\tconfigurationType: string;\n\t\t\tconnectionString: string;\n\t\t\tdatabase: string;\n\t\t\thost: string;\n\t\t\tuser: string;\n\t\t\tport: number;\n\t\t\tpassword: string;\n\t\t\ttls: boolean;\n\t\t}>('mongoDb');\n\t\tconst collectionName = this.getNodeParameter(\n\t\t\t'collectionName',\n\t\t\titemIndex,\n\t\t\t'n8n_chat_histories',\n\t\t) as string;\n\t\tconst databaseName = this.getNodeParameter('databaseName', itemIndex, '') as string;\n\t\tconst sessionId = getSessionId(this, itemIndex);\n\n\t\tlet connectionString: string;\n\t\tlet dbName: string;\n\n\t\tif (credentials.configurationType === 'connectionString') {\n\t\t\tconnectionString = credentials.connectionString;\n\t\t\tdbName = databaseName || credentials.database;\n\t\t} else {\n\t\t\t// Build connection string from individual fields\n\t\t\tconst host = credentials.host;\n\t\t\tconst port = credentials.port;\n\t\t\tconst user = credentials.user ? encodeURIComponent(credentials.user) : '';\n\t\t\tconst password = credentials.password ? encodeURIComponent(credentials.password) : '';\n\t\t\tconst authString = user && password ? `${user}:${password}@` : '';\n\t\t\tconst tls = credentials.tls;\n\n\t\t\tconnectionString = `mongodb://${authString}${host}:${port}/?appname=n8n`;\n\t\t\tif (tls) {\n\t\t\t\tconnectionString += '&ssl=true';\n\t\t\t}\n\n\t\t\tdbName = databaseName || credentials.database;\n\t\t}\n\n\t\tif (!dbName) {\n\t\t\tthrow new NodeOperationError(\n\t\t\t\tthis.getNode(),\n\t\t\t\t'Database name must be provided either in credentials or in node parameters',\n\t\t\t);\n\t\t}\n\n\t\ttry {\n\t\t\tconst client = new MongoClient(connectionString);\n\t\t\tawait client.connect();\n\n\t\t\tconst db = client.db(dbName);\n\t\t\tconst collection = db.collection(collectionName);\n\n\t\t\tconst mongoDBChatHistory = new MongoDBChatMessageHistory({\n\t\t\t\tcollection,\n\t\t\t\tsessionId,\n\t\t\t});\n\n\t\t\tconst memory = new BufferWindowMemory({\n\t\t\t\tmemoryKey: 'chat_history',\n\t\t\t\tchatHistory: mongoDBChatHistory,\n\t\t\t\treturnMessages: true,\n\t\t\t\tinputKey: 'input',\n\t\t\t\toutputKey: 'output',\n\t\t\t\tk: this.getNodeParameter('contextWindowLength', itemIndex, 5) as number,\n\t\t\t});\n\n\t\t\tasync function closeFunction() {\n\t\t\t\tawait client.close();\n\t\t\t}\n\n\t\t\treturn {\n\t\t\t\tcloseFunction,\n\t\t\t\tresponse: logWrapper(memory, this),\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tthrow new NodeOperationError(this.getNode(), `MongoDB connection error: ${error.message}`);\n\t\t}\n\t}\n}\n"],"mappings":"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","names":["import_mongodb"]}
@@ -0,0 +1,3 @@
1
+ <svg width="120" height="258" viewBox="0 0 120 258" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M83.0089 28.7559C72.1328 15.9086 62.7673 2.86053 60.8539 0.150554C60.6525 -0.0501848 60.3503 -0.0501848 60.1489 0.150554C58.2355 2.86053 48.8699 15.9086 37.9938 28.7559C-55.3594 147.292 52.6968 227.287 52.6968 227.287L53.6031 227.889C54.4087 240.235 56.4228 258 56.4228 258H60.451H64.4792C64.4792 258 66.4934 240.335 67.299 227.889L68.2052 227.187C68.306 227.187 176.362 147.292 83.0089 28.7559ZM60.451 225.48C60.451 225.48 55.6172 221.365 54.3081 219.257V219.057L60.1489 89.9813C60.1489 89.5798 60.7532 89.5798 60.7532 89.9813L66.594 219.057V219.257C65.2848 221.365 60.451 225.48 60.451 225.48Z" fill="white"/>
3
+ </svg>
@@ -0,0 +1,3 @@
1
+ <svg width="120" height="258" viewBox="0 0 120 258" fill="none" xmlns="http://www.w3.org/2000/svg">
2
+ <path d="M83.0089 28.7559C72.1328 15.9086 62.7673 2.86053 60.8539 0.150554C60.6525 -0.0501848 60.3503 -0.0501848 60.1489 0.150554C58.2355 2.86053 48.8699 15.9086 37.9938 28.7559C-55.3594 147.292 52.6968 227.287 52.6968 227.287L53.6031 227.889C54.4087 240.235 56.4228 258 56.4228 258H60.451H64.4792C64.4792 258 66.4934 240.335 67.299 227.889L68.2052 227.187C68.306 227.187 176.362 147.292 83.0089 28.7559ZM60.451 225.48C60.451 225.48 55.6172 221.365 54.3081 219.257V219.057L60.1489 89.9813C60.1489 89.5798 60.7532 89.5798 60.7532 89.9813L66.594 219.057V219.257C65.2848 221.365 60.451 225.48 60.451 225.48Z" fill="#00684A"/>
3
+ </svg>
@@ -132,3 +132,4 @@ class MemoryMotorhead {
132
132
  0 && (module.exports = {
133
133
  MemoryMotorhead
134
134
  });
135
+ //# sourceMappingURL=MemoryMotorhead.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../nodes/memory/MemoryMotorhead/MemoryMotorhead.node.ts"],"sourcesContent":["/* eslint-disable n8n-nodes-base/node-dirname-against-convention */\nimport { MotorheadMemory } from '@langchain/community/memory/motorhead_memory';\nimport {\n\tNodeConnectionTypes,\n\ttype INodeType,\n\ttype INodeTypeDescription,\n\ttype ISupplyDataFunctions,\n\ttype SupplyData,\n} from 'n8n-workflow';\n\nimport { getSessionId } from '@utils/helpers';\nimport { logWrapper } from '@utils/logWrapper';\nimport { getConnectionHintNoticeField } from '@utils/sharedFields';\n\nimport { expressionSessionKeyProperty, sessionIdOption, sessionKeyProperty } from '../descriptions';\n\nexport class MemoryMotorhead implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Motorhead',\n\t\tname: 'memoryMotorhead',\n\t\ticon: 'fa:file-export',\n\t\ticonColor: 'black',\n\t\tgroup: ['transform'],\n\t\tversion: [1, 1.1, 1.2, 1.3],\n\t\tdescription: 'Use Motorhead Memory',\n\t\tdefaults: {\n\t\t\tname: 'Motorhead',\n\t\t},\n\t\tcodex: {\n\t\t\tcategories: ['AI'],\n\t\t\tsubcategories: {\n\t\t\t\tAI: ['Memory'],\n\t\t\t},\n\t\t\tresources: {\n\t\t\t\tprimaryDocumentation: [\n\t\t\t\t\t{\n\t\t\t\t\t\turl: 'https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorymotorhead/',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node\n\t\tinputs: [],\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong\n\t\toutputs: [NodeConnectionTypes.AiMemory],\n\t\toutputNames: ['Memory'],\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\tname: 'motorheadApi',\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t\tproperties: [\n\t\t\tgetConnectionHintNoticeField([NodeConnectionTypes.AiAgent]),\n\t\t\t{\n\t\t\t\tdisplayName: 'Session ID',\n\t\t\t\tname: 'sessionId',\n\t\t\t\ttype: 'string',\n\t\t\t\trequired: true,\n\t\t\t\tdefault: '',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\t'@version': [1],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Session ID',\n\t\t\t\tname: 'sessionId',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '={{ $json.sessionId }}',\n\t\t\t\tdescription: 'The key to use to store the memory',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\t'@version': [1.1],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t...sessionIdOption,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\t'@version': [{ _cnd: { gte: 1.2 } }],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpressionSessionKeyProperty(1.3),\n\t\t\tsessionKeyProperty,\n\t\t],\n\t};\n\n\tasync supplyData(this: ISupplyDataFunctions, itemIndex: number): Promise<SupplyData> {\n\t\tconst credentials = await this.getCredentials('motorheadApi');\n\t\tconst nodeVersion = this.getNode().typeVersion;\n\n\t\tlet sessionId;\n\n\t\tif (nodeVersion >= 1.2) {\n\t\t\tsessionId = getSessionId(this, itemIndex);\n\t\t} else {\n\t\t\tsessionId = this.getNodeParameter('sessionId', itemIndex) as string;\n\t\t}\n\n\t\tconst memory = new MotorheadMemory({\n\t\t\tsessionId,\n\t\t\turl: `${credentials.host as string}/motorhead`,\n\t\t\tclientId: credentials.clientId as string,\n\t\t\tapiKey: credentials.apiKey as string,\n\t\t\tmemoryKey: 'chat_history',\n\t\t\treturnMessages: true,\n\t\t\tinputKey: 'input',\n\t\t\toutputKey: 'output',\n\t\t});\n\n\t\tawait memory.init();\n\n\t\treturn {\n\t\t\tresponse: logWrapper(memory, this),\n\t\t};\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,8BAAgC;AAChC,0BAMO;AAEP,qBAA6B;AAC7B,wBAA2B;AAC3B,0BAA6C;AAE7C,0BAAkF;AAE3E,MAAM,gBAAqC;AAAA,EAA3C;AACN,uBAAoC;AAAA,MACnC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW;AAAA,MACX,OAAO,CAAC,WAAW;AAAA,MACnB,SAAS,CAAC,GAAG,KAAK,KAAK,GAAG;AAAA,MAC1B,aAAa;AAAA,MACb,UAAU;AAAA,QACT,MAAM;AAAA,MACP;AAAA,MACA,OAAO;AAAA,QACN,YAAY,CAAC,IAAI;AAAA,QACjB,eAAe;AAAA,UACd,IAAI,CAAC,QAAQ;AAAA,QACd;AAAA,QACA,WAAW;AAAA,UACV,sBAAsB;AAAA,YACrB;AAAA,cACC,KAAK;AAAA,YACN;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA;AAAA,MAEA,QAAQ,CAAC;AAAA;AAAA,MAET,SAAS,CAAC,wCAAoB,QAAQ;AAAA,MACtC,aAAa,CAAC,QAAQ;AAAA,MACtB,aAAa;AAAA,QACZ;AAAA,UACC,MAAM;AAAA,UACN,UAAU;AAAA,QACX;AAAA,MACD;AAAA,MACA,YAAY;AAAA,YACX,kDAA6B,CAAC,wCAAoB,OAAO,CAAC;AAAA,QAC1D;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,UACV,SAAS;AAAA,UACT,gBAAgB;AAAA,YACf,MAAM;AAAA,cACL,YAAY,CAAC,CAAC;AAAA,YACf;AAAA,UACD;AAAA,QACD;AAAA,QACA;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,UACT,aAAa;AAAA,UACb,gBAAgB;AAAA,YACf,MAAM;AAAA,cACL,YAAY,CAAC,GAAG;AAAA,YACjB;AAAA,UACD;AAAA,QACD;AAAA,QACA;AAAA,UACC,GAAG;AAAA,UACH,gBAAgB;AAAA,YACf,MAAM;AAAA,cACL,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;AAAA,YACpC;AAAA,UACD;AAAA,QACD;AAAA,YACA,kDAA6B,GAAG;AAAA,QAChC;AAAA,MACD;AAAA,IACD;AAAA;AAAA,EAEA,MAAM,WAAuC,WAAwC;AACpF,UAAM,cAAc,MAAM,KAAK,eAAe,cAAc;AAC5D,UAAM,cAAc,KAAK,QAAQ,EAAE;AAEnC,QAAI;AAEJ,QAAI,eAAe,KAAK;AACvB,sBAAY,6BAAa,MAAM,SAAS;AAAA,IACzC,OAAO;AACN,kBAAY,KAAK,iBAAiB,aAAa,SAAS;AAAA,IACzD;AAEA,UAAM,SAAS,IAAI,wCAAgB;AAAA,MAClC;AAAA,MACA,KAAK,GAAG,YAAY,IAAc;AAAA,MAClC,UAAU,YAAY;AAAA,MACtB,QAAQ,YAAY;AAAA,MACpB,WAAW;AAAA,MACX,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,WAAW;AAAA,IACZ,CAAC;AAED,UAAM,OAAO,KAAK;AAElB,WAAO;AAAA,MACN,cAAU,8BAAW,QAAQ,IAAI;AAAA,IAClC;AAAA,EACD;AACD;","names":[]}
@@ -121,3 +121,4 @@ class MemoryPostgresChat {
121
121
  0 && (module.exports = {
122
122
  MemoryPostgresChat
123
123
  });
124
+ //# sourceMappingURL=MemoryPostgresChat.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../nodes/memory/MemoryPostgresChat/MemoryPostgresChat.node.ts"],"sourcesContent":["/* eslint-disable n8n-nodes-base/node-dirname-against-convention */\nimport { PostgresChatMessageHistory } from '@langchain/community/stores/message/postgres';\nimport { BufferMemory, BufferWindowMemory } from 'langchain/memory';\nimport { configurePostgres } from 'n8n-nodes-base/dist/nodes/Postgres/transport/index';\nimport type { PostgresNodeCredentials } from 'n8n-nodes-base/dist/nodes/Postgres/v2/helpers/interfaces';\nimport { postgresConnectionTest } from 'n8n-nodes-base/dist/nodes/Postgres/v2/methods/credentialTest';\nimport type {\n\tISupplyDataFunctions,\n\tINodeType,\n\tINodeTypeDescription,\n\tSupplyData,\n} from 'n8n-workflow';\nimport { NodeConnectionTypes } from 'n8n-workflow';\nimport type pg from 'pg';\n\nimport { getSessionId } from '@utils/helpers';\nimport { logWrapper } from '@utils/logWrapper';\nimport { getConnectionHintNoticeField } from '@utils/sharedFields';\n\nimport {\n\tsessionIdOption,\n\tsessionKeyProperty,\n\tcontextWindowLengthProperty,\n\texpressionSessionKeyProperty,\n} from '../descriptions';\n\nexport class MemoryPostgresChat implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Postgres Chat Memory',\n\t\tname: 'memoryPostgresChat',\n\t\ticon: 'file:postgres.svg',\n\t\tgroup: ['transform'],\n\t\tversion: [1, 1.1, 1.2, 1.3],\n\t\tdescription: 'Stores the chat history in Postgres table.',\n\t\tdefaults: {\n\t\t\tname: 'Postgres Chat Memory',\n\t\t},\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\tname: 'postgres',\n\t\t\t\trequired: true,\n\t\t\t\ttestedBy: 'postgresConnectionTest',\n\t\t\t},\n\t\t],\n\t\tcodex: {\n\t\t\tcategories: ['AI'],\n\t\t\tsubcategories: {\n\t\t\t\tAI: ['Memory'],\n\t\t\t},\n\t\t\tresources: {\n\t\t\t\tprimaryDocumentation: [\n\t\t\t\t\t{\n\t\t\t\t\t\turl: 'https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memorypostgreschat/',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node\n\t\tinputs: [],\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong\n\t\toutputs: [NodeConnectionTypes.AiMemory],\n\t\toutputNames: ['Memory'],\n\t\tproperties: [\n\t\t\tgetConnectionHintNoticeField([NodeConnectionTypes.AiAgent]),\n\t\t\tsessionIdOption,\n\t\t\texpressionSessionKeyProperty(1.2),\n\t\t\tsessionKeyProperty,\n\t\t\t{\n\t\t\t\tdisplayName: 'Table Name',\n\t\t\t\tname: 'tableName',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: 'n8n_chat_histories',\n\t\t\t\tdescription:\n\t\t\t\t\t'The table name to store the chat history in. If table does not exist, it will be created.',\n\t\t\t},\n\t\t\t{\n\t\t\t\t...contextWindowLengthProperty,\n\t\t\t\tdisplayOptions: { hide: { '@version': [{ _cnd: { lt: 1.1 } }] } },\n\t\t\t},\n\t\t],\n\t};\n\n\tmethods = {\n\t\tcredentialTest: {\n\t\t\tpostgresConnectionTest,\n\t\t},\n\t};\n\n\tasync supplyData(this: ISupplyDataFunctions, itemIndex: number): Promise<SupplyData> {\n\t\tconst credentials = await this.getCredentials<PostgresNodeCredentials>('postgres');\n\t\tconst tableName = this.getNodeParameter('tableName', itemIndex, 'n8n_chat_histories') as string;\n\t\tconst sessionId = getSessionId(this, itemIndex);\n\n\t\tconst pgConf = await configurePostgres.call(this, credentials);\n\t\tconst pool = pgConf.db.$pool as unknown as pg.Pool;\n\n\t\tconst pgChatHistory = new PostgresChatMessageHistory({\n\t\t\tpool,\n\t\t\tsessionId,\n\t\t\ttableName,\n\t\t});\n\n\t\tconst memClass = this.getNode().typeVersion < 1.1 ? BufferMemory : BufferWindowMemory;\n\t\tconst kOptions =\n\t\t\tthis.getNode().typeVersion < 1.1\n\t\t\t\t? {}\n\t\t\t\t: { k: this.getNodeParameter('contextWindowLength', itemIndex) };\n\n\t\tconst memory = new memClass({\n\t\t\tmemoryKey: 'chat_history',\n\t\t\tchatHistory: pgChatHistory,\n\t\t\treturnMessages: true,\n\t\t\tinputKey: 'input',\n\t\t\toutputKey: 'output',\n\t\t\t...kOptions,\n\t\t});\n\n\t\treturn {\n\t\t\tresponse: logWrapper(memory, this),\n\t\t};\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,sBAA2C;AAC3C,oBAAiD;AACjD,uBAAkC;AAElC,4BAAuC;AAOvC,0BAAoC;AAGpC,qBAA6B;AAC7B,wBAA2B;AAC3B,0BAA6C;AAE7C,0BAKO;AAEA,MAAM,mBAAwC;AAAA,EAA9C;AACN,uBAAoC;AAAA,MACnC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO,CAAC,WAAW;AAAA,MACnB,SAAS,CAAC,GAAG,KAAK,KAAK,GAAG;AAAA,MAC1B,aAAa;AAAA,MACb,UAAU;AAAA,QACT,MAAM;AAAA,MACP;AAAA,MACA,aAAa;AAAA,QACZ;AAAA,UACC,MAAM;AAAA,UACN,UAAU;AAAA,UACV,UAAU;AAAA,QACX;AAAA,MACD;AAAA,MACA,OAAO;AAAA,QACN,YAAY,CAAC,IAAI;AAAA,QACjB,eAAe;AAAA,UACd,IAAI,CAAC,QAAQ;AAAA,QACd;AAAA,QACA,WAAW;AAAA,UACV,sBAAsB;AAAA,YACrB;AAAA,cACC,KAAK;AAAA,YACN;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA;AAAA,MAEA,QAAQ,CAAC;AAAA;AAAA,MAET,SAAS,CAAC,wCAAoB,QAAQ;AAAA,MACtC,aAAa,CAAC,QAAQ;AAAA,MACtB,YAAY;AAAA,YACX,kDAA6B,CAAC,wCAAoB,OAAO,CAAC;AAAA,QAC1D;AAAA,YACA,kDAA6B,GAAG;AAAA,QAChC;AAAA,QACA;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,UACT,aACC;AAAA,QACF;AAAA,QACA;AAAA,UACC,GAAG;AAAA,UACH,gBAAgB,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE;AAAA,QACjE;AAAA,MACD;AAAA,IACD;AAEA,mBAAU;AAAA,MACT,gBAAgB;AAAA,QACf;AAAA,MACD;AAAA,IACD;AAAA;AAAA,EAEA,MAAM,WAAuC,WAAwC;AACpF,UAAM,cAAc,MAAM,KAAK,eAAwC,UAAU;AACjF,UAAM,YAAY,KAAK,iBAAiB,aAAa,WAAW,oBAAoB;AACpF,UAAM,gBAAY,6BAAa,MAAM,SAAS;AAE9C,UAAM,SAAS,MAAM,mCAAkB,KAAK,MAAM,WAAW;AAC7D,UAAM,OAAO,OAAO,GAAG;AAEvB,UAAM,gBAAgB,IAAI,2CAA2B;AAAA,MACpD;AAAA,MACA;AAAA,MACA;AAAA,IACD,CAAC;AAED,UAAM,WAAW,KAAK,QAAQ,EAAE,cAAc,MAAM,6BAAe;AACnE,UAAM,WACL,KAAK,QAAQ,EAAE,cAAc,MAC1B,CAAC,IACD,EAAE,GAAG,KAAK,iBAAiB,uBAAuB,SAAS,EAAE;AAEjE,UAAM,SAAS,IAAI,SAAS;AAAA,MAC3B,WAAW;AAAA,MACX,aAAa;AAAA,MACb,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,WAAW;AAAA,MACX,GAAG;AAAA,IACJ,CAAC;AAED,WAAO;AAAA,MACN,cAAU,8BAAW,QAAQ,IAAI;AAAA,IAClC;AAAA,EACD;AACD;","names":[]}
@@ -177,3 +177,4 @@ class MemoryRedisChat {
177
177
  0 && (module.exports = {
178
178
  MemoryRedisChat
179
179
  });
180
+ //# sourceMappingURL=MemoryRedisChat.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../nodes/memory/MemoryRedisChat/MemoryRedisChat.node.ts"],"sourcesContent":["/* eslint-disable n8n-nodes-base/node-dirname-against-convention */\nimport type { RedisChatMessageHistoryInput } from '@langchain/redis';\nimport { RedisChatMessageHistory } from '@langchain/redis';\nimport { BufferMemory, BufferWindowMemory } from 'langchain/memory';\nimport {\n\tNodeOperationError,\n\ttype INodeType,\n\ttype INodeTypeDescription,\n\ttype ISupplyDataFunctions,\n\ttype SupplyData,\n\tNodeConnectionTypes,\n} from 'n8n-workflow';\nimport type { RedisClientOptions } from 'redis';\nimport { createClient } from 'redis';\n\nimport { getSessionId } from '@utils/helpers';\nimport { logWrapper } from '@utils/logWrapper';\nimport { getConnectionHintNoticeField } from '@utils/sharedFields';\n\nimport {\n\tsessionIdOption,\n\tsessionKeyProperty,\n\tcontextWindowLengthProperty,\n\texpressionSessionKeyProperty,\n} from '../descriptions';\n\nexport class MemoryRedisChat implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Redis Chat Memory',\n\t\tname: 'memoryRedisChat',\n\t\ticon: 'file:redis.svg',\n\t\tgroup: ['transform'],\n\t\tversion: [1, 1.1, 1.2, 1.3, 1.4, 1.5],\n\t\tdescription: 'Stores the chat history in Redis.',\n\t\tdefaults: {\n\t\t\tname: 'Redis Chat Memory',\n\t\t},\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\tname: 'redis',\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t\tcodex: {\n\t\t\tcategories: ['AI'],\n\t\t\tsubcategories: {\n\t\t\t\tAI: ['Memory'],\n\t\t\t},\n\t\t\tresources: {\n\t\t\t\tprimaryDocumentation: [\n\t\t\t\t\t{\n\t\t\t\t\t\turl: 'https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memoryredischat/',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node\n\t\tinputs: [],\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong\n\t\toutputs: [NodeConnectionTypes.AiMemory],\n\t\toutputNames: ['Memory'],\n\t\tproperties: [\n\t\t\tgetConnectionHintNoticeField([NodeConnectionTypes.AiAgent]),\n\t\t\t{\n\t\t\t\tdisplayName: 'Session Key',\n\t\t\t\tname: 'sessionKey',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: 'chat_history',\n\t\t\t\tdescription: 'The key to use to store the memory in the workflow data',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\t'@version': [1],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Session ID',\n\t\t\t\tname: 'sessionKey',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '={{ $json.sessionId }}',\n\t\t\t\tdescription: 'The key to use to store the memory',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\t'@version': [1.1],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t...sessionIdOption,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\t'@version': [{ _cnd: { gte: 1.2 } }],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpressionSessionKeyProperty(1.4),\n\t\t\tsessionKeyProperty,\n\t\t\t{\n\t\t\t\tdisplayName: 'Session Time To Live',\n\t\t\t\tname: 'sessionTTL',\n\t\t\t\ttype: 'number',\n\t\t\t\tdefault: 0,\n\t\t\t\tdescription:\n\t\t\t\t\t'For how long the session should be stored in seconds. If set to 0 it will not expire.',\n\t\t\t},\n\t\t\t{\n\t\t\t\t...contextWindowLengthProperty,\n\t\t\t\tdisplayOptions: { hide: { '@version': [{ _cnd: { lt: 1.3 } }] } },\n\t\t\t},\n\t\t],\n\t};\n\n\tasync supplyData(this: ISupplyDataFunctions, itemIndex: number): Promise<SupplyData> {\n\t\tconst credentials = await this.getCredentials('redis');\n\t\tconst nodeVersion = this.getNode().typeVersion;\n\n\t\tconst sessionTTL = this.getNodeParameter('sessionTTL', itemIndex, 0) as number;\n\n\t\tlet sessionId;\n\n\t\tif (nodeVersion >= 1.2) {\n\t\t\tsessionId = getSessionId(this, itemIndex);\n\t\t} else {\n\t\t\tsessionId = this.getNodeParameter('sessionKey', itemIndex) as string;\n\t\t}\n\n\t\tconst redisOptions: RedisClientOptions = {\n\t\t\tsocket: {\n\t\t\t\thost: credentials.host as string,\n\t\t\t\tport: credentials.port as number,\n\t\t\t\ttls: credentials.ssl === true,\n\t\t\t},\n\t\t\tdatabase: credentials.database as number,\n\t\t};\n\n\t\tif (credentials.user && nodeVersion >= 1.5) {\n\t\t\tredisOptions.username = credentials.user as string;\n\t\t}\n\t\tif (credentials.password) {\n\t\t\tredisOptions.password = credentials.password as string;\n\t\t}\n\n\t\tconst client = createClient({\n\t\t\t...redisOptions,\n\t\t});\n\n\t\tclient.on('error', async (error: Error) => {\n\t\t\tawait client.quit();\n\t\t\tthrow new NodeOperationError(this.getNode(), 'Redis Error: ' + error.message);\n\t\t});\n\n\t\tconst redisChatConfig: RedisChatMessageHistoryInput = {\n\t\t\tclient,\n\t\t\tsessionId,\n\t\t};\n\n\t\tif (sessionTTL > 0) {\n\t\t\tredisChatConfig.sessionTTL = sessionTTL;\n\t\t}\n\t\tconst redisChatHistory = new RedisChatMessageHistory(redisChatConfig);\n\n\t\tconst memClass = this.getNode().typeVersion < 1.3 ? BufferMemory : BufferWindowMemory;\n\t\tconst kOptions =\n\t\t\tthis.getNode().typeVersion < 1.3\n\t\t\t\t? {}\n\t\t\t\t: { k: this.getNodeParameter('contextWindowLength', itemIndex) };\n\n\t\tconst memory = new memClass({\n\t\t\tmemoryKey: 'chat_history',\n\t\t\tchatHistory: redisChatHistory,\n\t\t\treturnMessages: true,\n\t\t\tinputKey: 'input',\n\t\t\toutputKey: 'output',\n\t\t\t...kOptions,\n\t\t});\n\n\t\tasync function closeFunction() {\n\t\t\tvoid client.disconnect();\n\t\t}\n\n\t\treturn {\n\t\t\tcloseFunction,\n\t\t\tresponse: logWrapper(memory, this),\n\t\t};\n\t}\n}\n"],"mappings":"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","names":["import_redis"]}
@@ -158,3 +158,4 @@ class MemoryXata {
158
158
  0 && (module.exports = {
159
159
  MemoryXata
160
160
  });
161
+ //# sourceMappingURL=MemoryXata.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../nodes/memory/MemoryXata/MemoryXata.node.ts"],"sourcesContent":["/* eslint-disable n8n-nodes-base/node-dirname-against-convention */\nimport { XataChatMessageHistory } from '@langchain/community/stores/message/xata';\nimport { BaseClient } from '@xata.io/client';\nimport { BufferMemory, BufferWindowMemory } from 'langchain/memory';\nimport { NodeConnectionTypes, NodeOperationError } from 'n8n-workflow';\nimport type {\n\tISupplyDataFunctions,\n\tINodeType,\n\tINodeTypeDescription,\n\tSupplyData,\n} from 'n8n-workflow';\n\nimport { getSessionId } from '@utils/helpers';\nimport { logWrapper } from '@utils/logWrapper';\nimport { getConnectionHintNoticeField } from '@utils/sharedFields';\n\nimport {\n\tsessionIdOption,\n\tsessionKeyProperty,\n\tcontextWindowLengthProperty,\n\texpressionSessionKeyProperty,\n} from '../descriptions';\n\nexport class MemoryXata implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Xata',\n\t\tname: 'memoryXata',\n\t\ticon: 'file:xata.svg',\n\t\tgroup: ['transform'],\n\t\tversion: [1, 1.1, 1.2, 1.3, 1.4],\n\t\tdescription: 'Use Xata Memory',\n\t\tdefaults: {\n\t\t\tname: 'Xata',\n\t\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-non-core-color-present\n\t\t\tcolor: '#1321A7',\n\t\t},\n\t\tcodex: {\n\t\t\tcategories: ['AI'],\n\t\t\tsubcategories: {\n\t\t\t\tAI: ['Memory'],\n\t\t\t},\n\t\t\tresources: {\n\t\t\t\tprimaryDocumentation: [\n\t\t\t\t\t{\n\t\t\t\t\t\turl: 'https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memoryxata/',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node\n\t\tinputs: [],\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong\n\t\toutputs: [NodeConnectionTypes.AiMemory],\n\t\toutputNames: ['Memory'],\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\tname: 'xataApi',\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t\tproperties: [\n\t\t\tgetConnectionHintNoticeField([NodeConnectionTypes.AiAgent]),\n\t\t\t{\n\t\t\t\tdisplayName: 'Session ID',\n\t\t\t\tname: 'sessionId',\n\t\t\t\ttype: 'string',\n\t\t\t\trequired: true,\n\t\t\t\tdefault: '',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\t'@version': [1],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Session ID',\n\t\t\t\tname: 'sessionId',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '={{ $json.sessionId }}',\n\t\t\t\tdescription: 'The key to use to store the memory',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\t'@version': [1.1],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t...sessionIdOption,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\t'@version': [{ _cnd: { gte: 1.2 } }],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\tsessionKeyProperty,\n\t\t\texpressionSessionKeyProperty(1.4),\n\t\t\t{\n\t\t\t\t...contextWindowLengthProperty,\n\t\t\t\tdisplayOptions: { hide: { '@version': [{ _cnd: { lt: 1.3 } }] } },\n\t\t\t},\n\t\t],\n\t};\n\n\tasync supplyData(this: ISupplyDataFunctions, itemIndex: number): Promise<SupplyData> {\n\t\tconst credentials = await this.getCredentials('xataApi');\n\t\tconst nodeVersion = this.getNode().typeVersion;\n\n\t\tlet sessionId;\n\n\t\tif (nodeVersion >= 1.2) {\n\t\t\tsessionId = getSessionId(this, itemIndex);\n\t\t} else {\n\t\t\tsessionId = this.getNodeParameter('sessionId', itemIndex) as string;\n\t\t}\n\n\t\tconst xataClient = new BaseClient({\n\t\t\tapiKey: credentials.apiKey as string,\n\t\t\tbranch: (credentials.branch as string) || 'main',\n\t\t\tdatabaseURL: credentials.databaseEndpoint as string,\n\t\t});\n\n\t\tconst table = (credentials.databaseEndpoint as string).match(\n\t\t\t/https:\\/\\/[^.]+\\.[^.]+\\.xata\\.sh\\/db\\/([^\\/:]+)/,\n\t\t);\n\n\t\tif (table === null) {\n\t\t\tthrow new NodeOperationError(\n\t\t\t\tthis.getNode(),\n\t\t\t\t'It was not possible to extract the table from the Database Endpoint.',\n\t\t\t);\n\t\t}\n\n\t\tconst chatHistory = new XataChatMessageHistory({\n\t\t\ttable: table[1],\n\t\t\tsessionId,\n\t\t\tclient: xataClient,\n\t\t\tapiKey: credentials.apiKey as string,\n\t\t});\n\n\t\tconst memClass = this.getNode().typeVersion < 1.3 ? BufferMemory : BufferWindowMemory;\n\t\tconst kOptions =\n\t\t\tthis.getNode().typeVersion < 1.3\n\t\t\t\t? {}\n\t\t\t\t: { k: this.getNodeParameter('contextWindowLength', itemIndex) };\n\n\t\tconst memory = new memClass({\n\t\t\tchatHistory,\n\t\t\tmemoryKey: 'chat_history',\n\t\t\treturnMessages: true,\n\t\t\tinputKey: 'input',\n\t\t\toutputKey: 'output',\n\t\t\t...kOptions,\n\t\t});\n\n\t\treturn {\n\t\t\tresponse: logWrapper(memory, this),\n\t\t};\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,kBAAuC;AACvC,oBAA2B;AAC3B,oBAAiD;AACjD,0BAAwD;AAQxD,qBAA6B;AAC7B,wBAA2B;AAC3B,0BAA6C;AAE7C,0BAKO;AAEA,MAAM,WAAgC;AAAA,EAAtC;AACN,uBAAoC;AAAA,MACnC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,MAAM;AAAA,MACN,OAAO,CAAC,WAAW;AAAA,MACnB,SAAS,CAAC,GAAG,KAAK,KAAK,KAAK,GAAG;AAAA,MAC/B,aAAa;AAAA,MACb,UAAU;AAAA,QACT,MAAM;AAAA;AAAA,QAEN,OAAO;AAAA,MACR;AAAA,MACA,OAAO;AAAA,QACN,YAAY,CAAC,IAAI;AAAA,QACjB,eAAe;AAAA,UACd,IAAI,CAAC,QAAQ;AAAA,QACd;AAAA,QACA,WAAW;AAAA,UACV,sBAAsB;AAAA,YACrB;AAAA,cACC,KAAK;AAAA,YACN;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA;AAAA,MAEA,QAAQ,CAAC;AAAA;AAAA,MAET,SAAS,CAAC,wCAAoB,QAAQ;AAAA,MACtC,aAAa,CAAC,QAAQ;AAAA,MACtB,aAAa;AAAA,QACZ;AAAA,UACC,MAAM;AAAA,UACN,UAAU;AAAA,QACX;AAAA,MACD;AAAA,MACA,YAAY;AAAA,YACX,kDAA6B,CAAC,wCAAoB,OAAO,CAAC;AAAA,QAC1D;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,UACV,SAAS;AAAA,UACT,gBAAgB;AAAA,YACf,MAAM;AAAA,cACL,YAAY,CAAC,CAAC;AAAA,YACf;AAAA,UACD;AAAA,QACD;AAAA,QACA;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,UACT,aAAa;AAAA,UACb,gBAAgB;AAAA,YACf,MAAM;AAAA,cACL,YAAY,CAAC,GAAG;AAAA,YACjB;AAAA,UACD;AAAA,QACD;AAAA,QACA;AAAA,UACC,GAAG;AAAA,UACH,gBAAgB;AAAA,YACf,MAAM;AAAA,cACL,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;AAAA,YACpC;AAAA,UACD;AAAA,QACD;AAAA,QACA;AAAA,YACA,kDAA6B,GAAG;AAAA,QAChC;AAAA,UACC,GAAG;AAAA,UACH,gBAAgB,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,EAAE,IAAI,IAAI,EAAE,CAAC,EAAE,EAAE;AAAA,QACjE;AAAA,MACD;AAAA,IACD;AAAA;AAAA,EAEA,MAAM,WAAuC,WAAwC;AACpF,UAAM,cAAc,MAAM,KAAK,eAAe,SAAS;AACvD,UAAM,cAAc,KAAK,QAAQ,EAAE;AAEnC,QAAI;AAEJ,QAAI,eAAe,KAAK;AACvB,sBAAY,6BAAa,MAAM,SAAS;AAAA,IACzC,OAAO;AACN,kBAAY,KAAK,iBAAiB,aAAa,SAAS;AAAA,IACzD;AAEA,UAAM,aAAa,IAAI,yBAAW;AAAA,MACjC,QAAQ,YAAY;AAAA,MACpB,QAAS,YAAY,UAAqB;AAAA,MAC1C,aAAa,YAAY;AAAA,IAC1B,CAAC;AAED,UAAM,QAAS,YAAY,iBAA4B;AAAA,MACtD;AAAA,IACD;AAEA,QAAI,UAAU,MAAM;AACnB,YAAM,IAAI;AAAA,QACT,KAAK,QAAQ;AAAA,QACb;AAAA,MACD;AAAA,IACD;AAEA,UAAM,cAAc,IAAI,mCAAuB;AAAA,MAC9C,OAAO,MAAM,CAAC;AAAA,MACd;AAAA,MACA,QAAQ;AAAA,MACR,QAAQ,YAAY;AAAA,IACrB,CAAC;AAED,UAAM,WAAW,KAAK,QAAQ,EAAE,cAAc,MAAM,6BAAe;AACnE,UAAM,WACL,KAAK,QAAQ,EAAE,cAAc,MAC1B,CAAC,IACD,EAAE,GAAG,KAAK,iBAAiB,uBAAuB,SAAS,EAAE;AAEjE,UAAM,SAAS,IAAI,SAAS;AAAA,MAC3B;AAAA,MACA,WAAW;AAAA,MACX,gBAAgB;AAAA,MAChB,UAAU;AAAA,MACV,WAAW;AAAA,MACX,GAAG;AAAA,IACJ,CAAC;AAED,WAAO;AAAA,MACN,cAAU,8BAAW,QAAQ,IAAI;AAAA,IAClC;AAAA,EACD;AACD;","names":[]}
@@ -166,3 +166,4 @@ class MemoryZep {
166
166
  0 && (module.exports = {
167
167
  MemoryZep
168
168
  });
169
+ //# sourceMappingURL=MemoryZep.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../nodes/memory/MemoryZep/MemoryZep.node.ts"],"sourcesContent":["/* eslint-disable n8n-nodes-base/node-dirname-against-convention */\nimport type { BaseChatMemory } from '@langchain/community/dist/memory/chat_memory';\nimport { ZepMemory } from '@langchain/community/memory/zep';\nimport { ZepCloudMemory } from '@langchain/community/memory/zep_cloud';\nimport type { InputValues, MemoryVariables } from '@langchain/core/memory';\nimport type { BaseMessage } from '@langchain/core/messages';\nimport {\n\tNodeConnectionTypes,\n\ttype ISupplyDataFunctions,\n\ttype INodeType,\n\ttype INodeTypeDescription,\n\ttype SupplyData,\n\tNodeOperationError,\n} from 'n8n-workflow';\n\nimport { getSessionId } from '@utils/helpers';\nimport { logWrapper } from '@utils/logWrapper';\nimport { getConnectionHintNoticeField } from '@utils/sharedFields';\n\nimport { expressionSessionKeyProperty, sessionIdOption, sessionKeyProperty } from '../descriptions';\n\n// Extend ZepCloudMemory to trim white space in messages.\nclass WhiteSpaceTrimmedZepCloudMemory extends ZepCloudMemory {\n\toverride async loadMemoryVariables(values: InputValues): Promise<MemoryVariables> {\n\t\tconst memoryVariables = await super.loadMemoryVariables(values);\n\t\tmemoryVariables.chat_history = memoryVariables.chat_history.filter((m: BaseMessage) =>\n\t\t\tm.content.toString().trim(),\n\t\t);\n\t\treturn memoryVariables;\n\t}\n}\n\nexport class MemoryZep implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Zep',\n\t\tname: 'memoryZep',\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-icon-not-svg\n\t\ticon: 'file:zep.png',\n\t\tgroup: ['transform'],\n\t\tversion: [1, 1.1, 1.2, 1.3],\n\t\tdescription: 'Use Zep Memory',\n\t\tdefaults: {\n\t\t\tname: 'Zep',\n\t\t},\n\t\tcodex: {\n\t\t\tcategories: ['AI'],\n\t\t\tsubcategories: {\n\t\t\t\tAI: ['Memory'],\n\t\t\t},\n\t\t\tresources: {\n\t\t\t\tprimaryDocumentation: [\n\t\t\t\t\t{\n\t\t\t\t\t\turl: 'https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.memoryzep/',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node\n\t\tinputs: [],\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong\n\t\toutputs: [NodeConnectionTypes.AiMemory],\n\t\toutputNames: ['Memory'],\n\t\tcredentials: [\n\t\t\t{\n\t\t\t\tname: 'zepApi',\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t\tproperties: [\n\t\t\tgetConnectionHintNoticeField([NodeConnectionTypes.AiAgent]),\n\t\t\t{\n\t\t\t\tdisplayName: 'Only works with Zep Cloud and Community edition <= v0.27.2',\n\t\t\t\tname: 'supportedVersions',\n\t\t\t\ttype: 'notice',\n\t\t\t\tdefault: '',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Session ID',\n\t\t\t\tname: 'sessionId',\n\t\t\t\ttype: 'string',\n\t\t\t\trequired: true,\n\t\t\t\tdefault: '',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\t'@version': [1],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Session ID',\n\t\t\t\tname: 'sessionId',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '={{ $json.sessionId }}',\n\t\t\t\tdescription: 'The key to use to store the memory',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\t'@version': [1.1],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t...sessionIdOption,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\t'@version': [{ _cnd: { gte: 1.2 } }],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\texpressionSessionKeyProperty(1.3),\n\t\t\tsessionKeyProperty,\n\t\t],\n\t};\n\n\tasync supplyData(this: ISupplyDataFunctions, itemIndex: number): Promise<SupplyData> {\n\t\tconst credentials = await this.getCredentials<{\n\t\t\tapiKey?: string;\n\t\t\tapiUrl?: string;\n\t\t\tcloud?: boolean;\n\t\t}>('zepApi');\n\n\t\tconst nodeVersion = this.getNode().typeVersion;\n\n\t\tlet sessionId;\n\n\t\tif (nodeVersion >= 1.2) {\n\t\t\tsessionId = getSessionId(this, itemIndex);\n\t\t} else {\n\t\t\tsessionId = this.getNodeParameter('sessionId', itemIndex) as string;\n\t\t}\n\n\t\tlet memory: BaseChatMemory;\n\n\t\tif (credentials.cloud) {\n\t\t\tif (!credentials.apiKey) {\n\t\t\t\tthrow new NodeOperationError(this.getNode(), 'API key is required to use Zep Cloud');\n\t\t\t}\n\t\t\tmemory = new WhiteSpaceTrimmedZepCloudMemory({\n\t\t\t\tsessionId,\n\t\t\t\tapiKey: credentials.apiKey,\n\t\t\t\tmemoryType: 'perpetual',\n\t\t\t\tmemoryKey: 'chat_history',\n\t\t\t\treturnMessages: true,\n\t\t\t\tinputKey: 'input',\n\t\t\t\toutputKey: 'output',\n\t\t\t\tseparateMessages: false,\n\t\t\t});\n\t\t} else {\n\t\t\tif (!credentials.apiUrl) {\n\t\t\t\tthrow new NodeOperationError(this.getNode(), 'API url is required to use Zep Open Source');\n\t\t\t}\n\t\t\tmemory = new ZepMemory({\n\t\t\t\tsessionId,\n\t\t\t\tbaseURL: credentials.apiUrl,\n\t\t\t\tapiKey: credentials.apiKey,\n\t\t\t\tmemoryKey: 'chat_history',\n\t\t\t\treturnMessages: true,\n\t\t\t\tinputKey: 'input',\n\t\t\t\toutputKey: 'output',\n\t\t\t});\n\t\t}\n\n\t\treturn {\n\t\t\tresponse: logWrapper(memory, this),\n\t\t};\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,iBAA0B;AAC1B,uBAA+B;AAG/B,0BAOO;AAEP,qBAA6B;AAC7B,wBAA2B;AAC3B,0BAA6C;AAE7C,0BAAkF;AAGlF,MAAM,wCAAwC,gCAAe;AAAA,EAC5D,MAAe,oBAAoB,QAA+C;AACjF,UAAM,kBAAkB,MAAM,MAAM,oBAAoB,MAAM;AAC9D,oBAAgB,eAAe,gBAAgB,aAAa;AAAA,MAAO,CAAC,MACnE,EAAE,QAAQ,SAAS,EAAE,KAAK;AAAA,IAC3B;AACA,WAAO;AAAA,EACR;AACD;AAEO,MAAM,UAA+B;AAAA,EAArC;AACN,uBAAoC;AAAA,MACnC,aAAa;AAAA,MACb,MAAM;AAAA;AAAA,MAEN,MAAM;AAAA,MACN,OAAO,CAAC,WAAW;AAAA,MACnB,SAAS,CAAC,GAAG,KAAK,KAAK,GAAG;AAAA,MAC1B,aAAa;AAAA,MACb,UAAU;AAAA,QACT,MAAM;AAAA,MACP;AAAA,MACA,OAAO;AAAA,QACN,YAAY,CAAC,IAAI;AAAA,QACjB,eAAe;AAAA,UACd,IAAI,CAAC,QAAQ;AAAA,QACd;AAAA,QACA,WAAW;AAAA,UACV,sBAAsB;AAAA,YACrB;AAAA,cACC,KAAK;AAAA,YACN;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA;AAAA,MAEA,QAAQ,CAAC;AAAA;AAAA,MAET,SAAS,CAAC,wCAAoB,QAAQ;AAAA,MACtC,aAAa,CAAC,QAAQ;AAAA,MACtB,aAAa;AAAA,QACZ;AAAA,UACC,MAAM;AAAA,UACN,UAAU;AAAA,QACX;AAAA,MACD;AAAA,MACA,YAAY;AAAA,YACX,kDAA6B,CAAC,wCAAoB,OAAO,CAAC;AAAA,QAC1D;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,QACV;AAAA,QACA;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,UAAU;AAAA,UACV,SAAS;AAAA,UACT,gBAAgB;AAAA,YACf,MAAM;AAAA,cACL,YAAY,CAAC,CAAC;AAAA,YACf;AAAA,UACD;AAAA,QACD;AAAA,QACA;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,UACT,aAAa;AAAA,UACb,gBAAgB;AAAA,YACf,MAAM;AAAA,cACL,YAAY,CAAC,GAAG;AAAA,YACjB;AAAA,UACD;AAAA,QACD;AAAA,QACA;AAAA,UACC,GAAG;AAAA,UACH,gBAAgB;AAAA,YACf,MAAM;AAAA,cACL,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,IAAI,EAAE,CAAC;AAAA,YACpC;AAAA,UACD;AAAA,QACD;AAAA,YACA,kDAA6B,GAAG;AAAA,QAChC;AAAA,MACD;AAAA,IACD;AAAA;AAAA,EAEA,MAAM,WAAuC,WAAwC;AACpF,UAAM,cAAc,MAAM,KAAK,eAI5B,QAAQ;AAEX,UAAM,cAAc,KAAK,QAAQ,EAAE;AAEnC,QAAI;AAEJ,QAAI,eAAe,KAAK;AACvB,sBAAY,6BAAa,MAAM,SAAS;AAAA,IACzC,OAAO;AACN,kBAAY,KAAK,iBAAiB,aAAa,SAAS;AAAA,IACzD;AAEA,QAAI;AAEJ,QAAI,YAAY,OAAO;AACtB,UAAI,CAAC,YAAY,QAAQ;AACxB,cAAM,IAAI,uCAAmB,KAAK,QAAQ,GAAG,sCAAsC;AAAA,MACpF;AACA,eAAS,IAAI,gCAAgC;AAAA,QAC5C;AAAA,QACA,QAAQ,YAAY;AAAA,QACpB,YAAY;AAAA,QACZ,WAAW;AAAA,QACX,gBAAgB;AAAA,QAChB,UAAU;AAAA,QACV,WAAW;AAAA,QACX,kBAAkB;AAAA,MACnB,CAAC;AAAA,IACF,OAAO;AACN,UAAI,CAAC,YAAY,QAAQ;AACxB,cAAM,IAAI,uCAAmB,KAAK,QAAQ,GAAG,4CAA4C;AAAA,MAC1F;AACA,eAAS,IAAI,qBAAU;AAAA,QACtB;AAAA,QACA,SAAS,YAAY;AAAA,QACrB,QAAQ,YAAY;AAAA,QACpB,WAAW;AAAA,QACX,gBAAgB;AAAA,QAChB,UAAU;AAAA,QACV,WAAW;AAAA,MACZ,CAAC;AAAA,IACF;AAEA,WAAO;AAAA,MACN,cAAU,8BAAW,QAAQ,IAAI;AAAA,IAClC;AAAA,EACD;AACD;","names":[]}
@@ -82,3 +82,4 @@ const contextWindowLengthProperty = {
82
82
  sessionIdOption,
83
83
  sessionKeyProperty
84
84
  });
85
+ //# sourceMappingURL=descriptions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../nodes/memory/descriptions.ts"],"sourcesContent":["import type { INodeProperties } from 'n8n-workflow';\n\nexport const sessionIdOption: INodeProperties = {\n\tdisplayName: 'Session ID',\n\tname: 'sessionIdType',\n\ttype: 'options',\n\toptions: [\n\t\t{\n\t\t\tname: 'Connected Chat Trigger Node',\n\t\t\tvalue: 'fromInput',\n\t\t\tdescription:\n\t\t\t\t\"Looks for an input field called 'sessionId' that is coming from a directly connected Chat Trigger\",\n\t\t},\n\t\t{\n\t\t\t// eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased\n\t\t\tname: 'Define below',\n\t\t\tvalue: 'customKey',\n\t\t\tdescription: 'Use an expression to reference data in previous nodes or enter static text',\n\t\t},\n\t],\n\tdefault: 'fromInput',\n};\n\nexport const expressionSessionKeyProperty = (fromVersion: number): INodeProperties => ({\n\tdisplayName: 'Session Key From Previous Node',\n\tname: 'sessionKey',\n\ttype: 'string',\n\tdefault: '={{ $json.sessionId }}',\n\tdisabledOptions: { show: { sessionIdType: ['fromInput'] } },\n\tdisplayOptions: {\n\t\tshow: {\n\t\t\tsessionIdType: ['fromInput'],\n\t\t\t'@version': [{ _cnd: { gte: fromVersion } }],\n\t\t},\n\t},\n});\n\nexport const sessionKeyProperty: INodeProperties = {\n\tdisplayName: 'Key',\n\tname: 'sessionKey',\n\ttype: 'string',\n\tdefault: '',\n\tdescription: 'The key to use to store session ID in the memory',\n\tdisplayOptions: {\n\t\tshow: {\n\t\t\tsessionIdType: ['customKey'],\n\t\t},\n\t},\n};\n\nexport const contextWindowLengthProperty: INodeProperties = {\n\tdisplayName: 'Context Window Length',\n\tname: 'contextWindowLength',\n\ttype: 'number',\n\tdefault: 5,\n\thint: 'How many past interactions the model receives as context',\n};\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEO,MAAM,kBAAmC;AAAA,EAC/C,aAAa;AAAA,EACb,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,IACR;AAAA,MACC,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aACC;AAAA,IACF;AAAA,IACA;AAAA;AAAA,MAEC,MAAM;AAAA,MACN,OAAO;AAAA,MACP,aAAa;AAAA,IACd;AAAA,EACD;AAAA,EACA,SAAS;AACV;AAEO,MAAM,+BAA+B,CAAC,iBAA0C;AAAA,EACtF,aAAa;AAAA,EACb,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,EACT,iBAAiB,EAAE,MAAM,EAAE,eAAe,CAAC,WAAW,EAAE,EAAE;AAAA,EAC1D,gBAAgB;AAAA,IACf,MAAM;AAAA,MACL,eAAe,CAAC,WAAW;AAAA,MAC3B,YAAY,CAAC,EAAE,MAAM,EAAE,KAAK,YAAY,EAAE,CAAC;AAAA,IAC5C;AAAA,EACD;AACD;AAEO,MAAM,qBAAsC;AAAA,EAClD,aAAa;AAAA,EACb,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,EACT,aAAa;AAAA,EACb,gBAAgB;AAAA,IACf,MAAM;AAAA,MACL,eAAe,CAAC,WAAW;AAAA,IAC5B;AAAA,EACD;AACD;AAEO,MAAM,8BAA+C;AAAA,EAC3D,aAAa;AAAA,EACb,MAAM;AAAA,EACN,MAAM;AAAA,EACN,SAAS;AAAA,EACT,MAAM;AACP;","names":[]}
@@ -132,3 +132,4 @@ class OutputParserAutofixing {
132
132
  0 && (module.exports = {
133
133
  OutputParserAutofixing
134
134
  });
135
+ //# sourceMappingURL=OutputParserAutofixing.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../nodes/output_parser/OutputParserAutofixing/OutputParserAutofixing.node.ts"],"sourcesContent":["import type { BaseLanguageModel } from '@langchain/core/language_models/base';\nimport { PromptTemplate } from '@langchain/core/prompts';\nimport { NodeConnectionTypes, NodeOperationError } from 'n8n-workflow';\nimport type {\n\tISupplyDataFunctions,\n\tINodeType,\n\tINodeTypeDescription,\n\tSupplyData,\n} from 'n8n-workflow';\n\nimport {\n\tN8nOutputFixingParser,\n\ttype N8nStructuredOutputParser,\n} from '@utils/output_parsers/N8nOutputParser';\nimport { getConnectionHintNoticeField } from '@utils/sharedFields';\n\nimport { NAIVE_FIX_PROMPT } from './prompt';\n\nexport class OutputParserAutofixing implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Auto-fixing Output Parser',\n\t\tname: 'outputParserAutofixing',\n\t\ticon: 'fa:tools',\n\t\ticonColor: 'black',\n\t\tgroup: ['transform'],\n\t\tversion: 1,\n\t\tdescription: 'Automatically fix the output if it is not in the correct format',\n\t\tdefaults: {\n\t\t\tname: 'Auto-fixing Output Parser',\n\t\t},\n\n\t\tcodex: {\n\t\t\tcategories: ['AI'],\n\t\t\tsubcategories: {\n\t\t\t\tAI: ['Output Parsers'],\n\t\t\t},\n\t\t\tresources: {\n\t\t\t\tprimaryDocumentation: [\n\t\t\t\t\t{\n\t\t\t\t\t\turl: 'https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserautofixing/',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Model',\n\t\t\t\tmaxConnections: 1,\n\t\t\t\ttype: NodeConnectionTypes.AiLanguageModel,\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Output Parser',\n\t\t\t\tmaxConnections: 1,\n\t\t\t\trequired: true,\n\t\t\t\ttype: NodeConnectionTypes.AiOutputParser,\n\t\t\t},\n\t\t],\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong\n\t\toutputs: [NodeConnectionTypes.AiOutputParser],\n\t\toutputNames: ['Output Parser'],\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tdisplayName:\n\t\t\t\t\t'This node wraps another output parser. If the first one fails it calls an LLM to fix the format',\n\t\t\t\tname: 'info',\n\t\t\t\ttype: 'notice',\n\t\t\t\tdefault: '',\n\t\t\t},\n\t\t\tgetConnectionHintNoticeField([NodeConnectionTypes.AiChain, NodeConnectionTypes.AiAgent]),\n\t\t\t{\n\t\t\t\tdisplayName: 'Options',\n\t\t\t\tname: 'options',\n\t\t\t\ttype: 'collection',\n\t\t\t\tplaceholder: 'Add Option',\n\t\t\t\tdefault: {},\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Retry Prompt',\n\t\t\t\t\t\tname: 'prompt',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tdefault: NAIVE_FIX_PROMPT,\n\t\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\t\trows: 10,\n\t\t\t\t\t\t},\n\t\t\t\t\t\thint: 'Should include \"{error}\", \"{instructions}\", and \"{completion}\" placeholders',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Prompt template used for fixing the output. Uses placeholders: \"{instructions}\" for parsing rules, \"{completion}\" for the failed attempt, and \"{error}\" for the validation error message.',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t};\n\n\tasync supplyData(this: ISupplyDataFunctions, itemIndex: number): Promise<SupplyData> {\n\t\tconst model = (await this.getInputConnectionData(\n\t\t\tNodeConnectionTypes.AiLanguageModel,\n\t\t\titemIndex,\n\t\t)) as BaseLanguageModel;\n\t\tconst outputParser = (await this.getInputConnectionData(\n\t\t\tNodeConnectionTypes.AiOutputParser,\n\t\t\titemIndex,\n\t\t)) as N8nStructuredOutputParser;\n\t\tconst prompt = this.getNodeParameter('options.prompt', itemIndex, NAIVE_FIX_PROMPT) as string;\n\n\t\tif (prompt.length === 0 || !prompt.includes('{error}')) {\n\t\t\tthrow new NodeOperationError(\n\t\t\t\tthis.getNode(),\n\t\t\t\t'Auto-fixing parser prompt has to contain {error} placeholder',\n\t\t\t);\n\t\t}\n\t\tconst parser = new N8nOutputFixingParser(\n\t\t\tthis,\n\t\t\tmodel,\n\t\t\toutputParser,\n\t\t\tPromptTemplate.fromTemplate(prompt),\n\t\t);\n\n\t\treturn {\n\t\t\tresponse: parser,\n\t\t};\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,qBAA+B;AAC/B,0BAAwD;AAQxD,6BAGO;AACP,0BAA6C;AAE7C,oBAAiC;AAE1B,MAAM,uBAA4C;AAAA,EAAlD;AACN,uBAAoC;AAAA,MACnC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW;AAAA,MACX,OAAO,CAAC,WAAW;AAAA,MACnB,SAAS;AAAA,MACT,aAAa;AAAA,MACb,UAAU;AAAA,QACT,MAAM;AAAA,MACP;AAAA,MAEA,OAAO;AAAA,QACN,YAAY,CAAC,IAAI;AAAA,QACjB,eAAe;AAAA,UACd,IAAI,CAAC,gBAAgB;AAAA,QACtB;AAAA,QACA,WAAW;AAAA,UACV,sBAAsB;AAAA,YACrB;AAAA,cACC,KAAK;AAAA,YACN;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA;AAAA,MAEA,QAAQ;AAAA,QACP;AAAA,UACC,aAAa;AAAA,UACb,gBAAgB;AAAA,UAChB,MAAM,wCAAoB;AAAA,UAC1B,UAAU;AAAA,QACX;AAAA,QACA;AAAA,UACC,aAAa;AAAA,UACb,gBAAgB;AAAA,UAChB,UAAU;AAAA,UACV,MAAM,wCAAoB;AAAA,QAC3B;AAAA,MACD;AAAA;AAAA,MAEA,SAAS,CAAC,wCAAoB,cAAc;AAAA,MAC5C,aAAa,CAAC,eAAe;AAAA,MAC7B,YAAY;AAAA,QACX;AAAA,UACC,aACC;AAAA,UACD,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,QACV;AAAA,YACA,kDAA6B,CAAC,wCAAoB,SAAS,wCAAoB,OAAO,CAAC;AAAA,QACvF;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,aAAa;AAAA,UACb,SAAS,CAAC;AAAA,UACV,SAAS;AAAA,YACR;AAAA,cACC,aAAa;AAAA,cACb,MAAM;AAAA,cACN,MAAM;AAAA,cACN,SAAS;AAAA,cACT,aAAa;AAAA,gBACZ,MAAM;AAAA,cACP;AAAA,cACA,MAAM;AAAA,cACN,aACC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA,EAEA,MAAM,WAAuC,WAAwC;AACpF,UAAM,QAAS,MAAM,KAAK;AAAA,MACzB,wCAAoB;AAAA,MACpB;AAAA,IACD;AACA,UAAM,eAAgB,MAAM,KAAK;AAAA,MAChC,wCAAoB;AAAA,MACpB;AAAA,IACD;AACA,UAAM,SAAS,KAAK,iBAAiB,kBAAkB,WAAW,8BAAgB;AAElF,QAAI,OAAO,WAAW,KAAK,CAAC,OAAO,SAAS,SAAS,GAAG;AACvD,YAAM,IAAI;AAAA,QACT,KAAK,QAAQ;AAAA,QACb;AAAA,MACD;AAAA,IACD;AACA,UAAM,SAAS,IAAI;AAAA,MAClB;AAAA,MACA;AAAA,MACA;AAAA,MACA,8BAAe,aAAa,MAAM;AAAA,IACnC;AAEA,WAAO;AAAA,MACN,UAAU;AAAA,IACX;AAAA,EACD;AACD;","names":[]}
@@ -41,3 +41,4 @@ Please try again. Please only respond with an answer that satisfies the constrai
41
41
  0 && (module.exports = {
42
42
  NAIVE_FIX_PROMPT
43
43
  });
44
+ //# sourceMappingURL=prompt.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../nodes/output_parser/OutputParserAutofixing/prompt.ts"],"sourcesContent":["export const NAIVE_FIX_PROMPT = `Instructions:\n--------------\n{instructions}\n--------------\nCompletion:\n--------------\n{completion}\n--------------\n\nAbove, the Completion did not satisfy the constraints given in the Instructions.\nError:\n--------------\n{error}\n--------------\n\nPlease try again. Please only respond with an answer that satisfies the constraints laid out in the Instructions:`;\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAO,MAAM,mBAAmB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;","names":[]}
@@ -105,3 +105,4 @@ class OutputParserItemList {
105
105
  0 && (module.exports = {
106
106
  OutputParserItemList
107
107
  });
108
+ //# sourceMappingURL=OutputParserItemList.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../nodes/output_parser/OutputParserItemList/OutputParserItemList.node.ts"],"sourcesContent":["/* eslint-disable n8n-nodes-base/node-dirname-against-convention */\nimport {\n\tNodeConnectionTypes,\n\ttype INodeType,\n\ttype INodeTypeDescription,\n\ttype ISupplyDataFunctions,\n\ttype SupplyData,\n} from 'n8n-workflow';\n\nimport { N8nItemListOutputParser } from '@utils/output_parsers/N8nItemListOutputParser';\nimport { getConnectionHintNoticeField } from '@utils/sharedFields';\n\nexport class OutputParserItemList implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Item List Output Parser',\n\t\tname: 'outputParserItemList',\n\t\ticon: 'fa:bars',\n\t\ticonColor: 'black',\n\t\tgroup: ['transform'],\n\t\tversion: 1,\n\t\tdescription: 'Return the results as separate items',\n\t\tdefaults: {\n\t\t\tname: 'Item List Output Parser',\n\t\t},\n\n\t\tcodex: {\n\t\t\tcategories: ['AI'],\n\t\t\tsubcategories: {\n\t\t\t\tAI: ['Output Parsers'],\n\t\t\t},\n\t\t\tresources: {\n\t\t\t\tprimaryDocumentation: [\n\t\t\t\t\t{\n\t\t\t\t\t\turl: 'https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparseritemlist/',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node\n\t\tinputs: [],\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong\n\t\toutputs: [NodeConnectionTypes.AiOutputParser],\n\t\toutputNames: ['Output Parser'],\n\t\tproperties: [\n\t\t\tgetConnectionHintNoticeField([NodeConnectionTypes.AiChain, NodeConnectionTypes.AiAgent]),\n\t\t\t{\n\t\t\t\tdisplayName: 'Options',\n\t\t\t\tname: 'options',\n\t\t\t\ttype: 'collection',\n\t\t\t\tplaceholder: 'Add Option',\n\t\t\t\tdefault: {},\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Number Of Items',\n\t\t\t\t\t\tname: 'numberOfItems',\n\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t\tdefault: -1,\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Defines how many items should be returned maximally. If set to -1, there is no limit.',\n\t\t\t\t\t},\n\t\t\t\t\t// For that to be easily possible the metadata would have to be returned and be able to be read.\n\t\t\t\t\t// Would also be possible with a wrapper but that would be even more hacky and the output types\n\t\t\t\t\t// would not be correct anymore.\n\t\t\t\t\t// {\n\t\t\t\t\t// \tdisplayName: 'Parse Output',\n\t\t\t\t\t// \tname: 'parseOutput',\n\t\t\t\t\t// \ttype: 'boolean',\n\t\t\t\t\t// \tdefault: true,\n\t\t\t\t\t// \tdescription: 'Whether the output should be automatically be parsed or left RAW',\n\t\t\t\t\t// },\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Separator',\n\t\t\t\t\t\tname: 'separator',\n\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\tdefault: '\\\\n',\n\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t'Defines the separator that should be used to split the results into separate items. Defaults to a new line but can be changed depending on the data that should be returned.',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t};\n\n\tasync supplyData(this: ISupplyDataFunctions, itemIndex: number): Promise<SupplyData> {\n\t\tconst options = this.getNodeParameter('options', itemIndex, {}) as {\n\t\t\tnumberOfItems?: number;\n\t\t\tseparator?: string;\n\t\t};\n\n\t\tconst parser = new N8nItemListOutputParser(options);\n\n\t\treturn {\n\t\t\tresponse: parser,\n\t\t};\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,0BAMO;AAEP,qCAAwC;AACxC,0BAA6C;AAEtC,MAAM,qBAA0C;AAAA,EAAhD;AACN,uBAAoC;AAAA,MACnC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW;AAAA,MACX,OAAO,CAAC,WAAW;AAAA,MACnB,SAAS;AAAA,MACT,aAAa;AAAA,MACb,UAAU;AAAA,QACT,MAAM;AAAA,MACP;AAAA,MAEA,OAAO;AAAA,QACN,YAAY,CAAC,IAAI;AAAA,QACjB,eAAe;AAAA,UACd,IAAI,CAAC,gBAAgB;AAAA,QACtB;AAAA,QACA,WAAW;AAAA,UACV,sBAAsB;AAAA,YACrB;AAAA,cACC,KAAK;AAAA,YACN;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA;AAAA,MAEA,QAAQ,CAAC;AAAA;AAAA,MAET,SAAS,CAAC,wCAAoB,cAAc;AAAA,MAC5C,aAAa,CAAC,eAAe;AAAA,MAC7B,YAAY;AAAA,YACX,kDAA6B,CAAC,wCAAoB,SAAS,wCAAoB,OAAO,CAAC;AAAA,QACvF;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,aAAa;AAAA,UACb,SAAS,CAAC;AAAA,UACV,SAAS;AAAA,YACR;AAAA,cACC,aAAa;AAAA,cACb,MAAM;AAAA,cACN,MAAM;AAAA,cACN,SAAS;AAAA,cACT,aACC;AAAA,YACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,YAWA;AAAA,cACC,aAAa;AAAA,cACb,MAAM;AAAA,cACN,MAAM;AAAA,cACN,SAAS;AAAA,cACT,aACC;AAAA,YACF;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA,EAEA,MAAM,WAAuC,WAAwC;AACpF,UAAM,UAAU,KAAK,iBAAiB,WAAW,WAAW,CAAC,CAAC;AAK9D,UAAM,SAAS,IAAI,uDAAwB,OAAO;AAElD,WAAO;AAAA,MACN,UAAU;AAAA,IACX;AAAA,EACD;AACD;","names":[]}
@@ -159,3 +159,4 @@ class OutputParserStructured {
159
159
  0 && (module.exports = {
160
160
  OutputParserStructured
161
161
  });
162
+ //# sourceMappingURL=OutputParserStructured.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../nodes/output_parser/OutputParserStructured/OutputParserStructured.node.ts"],"sourcesContent":["import type { JSONSchema7 } from 'json-schema';\nimport {\n\tjsonParse,\n\ttype INodeType,\n\ttype INodeTypeDescription,\n\ttype ISupplyDataFunctions,\n\ttype SupplyData,\n\tNodeOperationError,\n\tNodeConnectionTypes,\n} from 'n8n-workflow';\nimport type { z } from 'zod';\n\nimport { inputSchemaField, jsonSchemaExampleField, schemaTypeField } from '@utils/descriptions';\nimport { N8nStructuredOutputParser } from '@utils/output_parsers/N8nOutputParser';\nimport { convertJsonSchemaToZod, generateSchema } from '@utils/schemaParsing';\nimport { getConnectionHintNoticeField } from '@utils/sharedFields';\n\nexport class OutputParserStructured implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Structured Output Parser',\n\t\tname: 'outputParserStructured',\n\t\ticon: 'fa:code',\n\t\ticonColor: 'black',\n\t\tgroup: ['transform'],\n\t\tversion: [1, 1.1, 1.2],\n\t\tdefaultVersion: 1.2,\n\t\tdescription: 'Return data in a defined JSON format',\n\t\tdefaults: {\n\t\t\tname: 'Structured Output Parser',\n\t\t},\n\n\t\tcodex: {\n\t\t\talias: ['json', 'zod'],\n\t\t\tcategories: ['AI'],\n\t\t\tsubcategories: {\n\t\t\t\tAI: ['Output Parsers'],\n\t\t\t},\n\t\t\tresources: {\n\t\t\t\tprimaryDocumentation: [\n\t\t\t\t\t{\n\t\t\t\t\t\turl: 'https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.outputparserstructured/',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node\n\t\tinputs: [],\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong\n\t\toutputs: [NodeConnectionTypes.AiOutputParser],\n\t\toutputNames: ['Output Parser'],\n\t\tproperties: [\n\t\t\tgetConnectionHintNoticeField([NodeConnectionTypes.AiChain, NodeConnectionTypes.AiAgent]),\n\t\t\t{ ...schemaTypeField, displayOptions: { show: { '@version': [{ _cnd: { gte: 1.2 } }] } } },\n\t\t\t{\n\t\t\t\t...jsonSchemaExampleField,\n\t\t\t\tdefault: `{\n\t\"state\": \"California\",\n\t\"cities\": [\"Los Angeles\", \"San Francisco\", \"San Diego\"]\n}`,\n\t\t\t},\n\t\t\t{\n\t\t\t\t...inputSchemaField,\n\t\t\t\tdefault: `{\n\t\"type\": \"object\",\n\t\"properties\": {\n\t\t\"state\": {\n\t\t\t\"type\": \"string\"\n\t\t},\n\t\t\"cities\": {\n\t\t\t\"type\": \"array\",\n\t\t\t\"items\": {\n\t\t\t\t\"type\": \"string\"\n\t\t\t}\n\t\t}\n\t}\n}`,\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'JSON Schema',\n\t\t\t\tname: 'jsonSchema',\n\t\t\t\ttype: 'json',\n\t\t\t\tdescription: 'JSON Schema to structure and validate the output against',\n\t\t\t\tdefault: `{\n \"type\": \"object\",\n \"properties\": {\n \"state\": {\n \"type\": \"string\"\n },\n \"cities\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n }\n}`,\n\t\t\t\ttypeOptions: {\n\t\t\t\t\trows: 10,\n\t\t\t\t},\n\t\t\t\trequired: true,\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\t'@version': [{ _cnd: { lte: 1.1 } }],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName:\n\t\t\t\t\t'The schema has to be defined in the <a target=\"_blank\" href=\"https://json-schema.org/\">JSON Schema</a> format. Look at <a target=\"_blank\" href=\"https://json-schema.org/learn/miscellaneous-examples.html\">this</a> page for examples.',\n\t\t\t\tname: 'notice',\n\t\t\t\ttype: 'notice',\n\t\t\t\tdefault: '',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\thide: {\n\t\t\t\t\t\tschemaType: ['fromJson'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t};\n\n\tasync supplyData(this: ISupplyDataFunctions, itemIndex: number): Promise<SupplyData> {\n\t\tconst schemaType = this.getNodeParameter('schemaType', itemIndex, '') as 'fromJson' | 'manual';\n\t\t// We initialize these even though one of them will always be empty\n\t\t// it makes it easer to navigate the ternary operator\n\t\tconst jsonExample = this.getNodeParameter('jsonSchemaExample', itemIndex, '') as string;\n\t\tlet inputSchema: string;\n\n\t\tif (this.getNode().typeVersion <= 1.1) {\n\t\t\tinputSchema = this.getNodeParameter('jsonSchema', itemIndex, '') as string;\n\t\t} else {\n\t\t\tinputSchema = this.getNodeParameter('inputSchema', itemIndex, '') as string;\n\t\t}\n\n\t\tconst jsonSchema =\n\t\t\tschemaType === 'fromJson' ? generateSchema(jsonExample) : jsonParse<JSONSchema7>(inputSchema);\n\n\t\tconst zodSchema = convertJsonSchemaToZod<z.ZodSchema<object>>(jsonSchema);\n\t\tconst nodeVersion = this.getNode().typeVersion;\n\t\ttry {\n\t\t\tconst parser = await N8nStructuredOutputParser.fromZodJsonSchema(\n\t\t\t\tzodSchema,\n\t\t\t\tnodeVersion,\n\t\t\t\tthis,\n\t\t\t);\n\t\t\treturn {\n\t\t\t\tresponse: parser,\n\t\t\t};\n\t\t} catch (error) {\n\t\t\tthrow new NodeOperationError(this.getNode(), 'Error during parsing of JSON Schema.');\n\t\t}\n\t}\n}\n"],"mappings":"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","names":[]}
@@ -100,3 +100,4 @@ class RetrieverContextualCompression {
100
100
  0 && (module.exports = {
101
101
  RetrieverContextualCompression
102
102
  });
103
+ //# sourceMappingURL=RetrieverContextualCompression.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../nodes/retrievers/RetrieverContextualCompression/RetrieverContextualCompression.node.ts"],"sourcesContent":["/* eslint-disable n8n-nodes-base/node-dirname-against-convention */\n\nimport type { BaseLanguageModel } from '@langchain/core/language_models/base';\nimport type { BaseRetriever } from '@langchain/core/retrievers';\nimport { ContextualCompressionRetriever } from 'langchain/retrievers/contextual_compression';\nimport { LLMChainExtractor } from 'langchain/retrievers/document_compressors/chain_extract';\nimport {\n\tNodeConnectionTypes,\n\ttype INodeType,\n\ttype INodeTypeDescription,\n\ttype ISupplyDataFunctions,\n\ttype SupplyData,\n} from 'n8n-workflow';\n\nimport { logWrapper } from '@utils/logWrapper';\n\nexport class RetrieverContextualCompression implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Contextual Compression Retriever',\n\t\tname: 'retrieverContextualCompression',\n\t\ticon: 'fa:box-open',\n\t\ticonColor: 'black',\n\t\tgroup: ['transform'],\n\t\tversion: 1,\n\t\tdescription: 'Enhances document similarity search by contextual compression.',\n\t\tdefaults: {\n\t\t\tname: 'Contextual Compression Retriever',\n\t\t},\n\t\tcodex: {\n\t\t\tcategories: ['AI'],\n\t\t\tsubcategories: {\n\t\t\t\tAI: ['Retrievers'],\n\t\t\t},\n\t\t\tresources: {\n\t\t\t\tprimaryDocumentation: [\n\t\t\t\t\t{\n\t\t\t\t\t\turl: 'https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.retrievercontextualcompression/',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Model',\n\t\t\t\tmaxConnections: 1,\n\t\t\t\ttype: NodeConnectionTypes.AiLanguageModel,\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Retriever',\n\t\t\t\tmaxConnections: 1,\n\t\t\t\ttype: NodeConnectionTypes.AiRetriever,\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Retriever',\n\t\t\t\tmaxConnections: 1,\n\t\t\t\ttype: NodeConnectionTypes.AiRetriever,\n\t\t\t},\n\t\t],\n\t\tproperties: [],\n\t};\n\n\tasync supplyData(this: ISupplyDataFunctions, itemIndex: number): Promise<SupplyData> {\n\t\tthis.logger.debug('Supplying data for Contextual Compression Retriever');\n\n\t\tconst model = (await this.getInputConnectionData(\n\t\t\tNodeConnectionTypes.AiLanguageModel,\n\t\t\titemIndex,\n\t\t)) as BaseLanguageModel;\n\n\t\tconst baseRetriever = (await this.getInputConnectionData(\n\t\t\tNodeConnectionTypes.AiRetriever,\n\t\t\titemIndex,\n\t\t)) as BaseRetriever;\n\n\t\tconst baseCompressor = LLMChainExtractor.fromLLM(model);\n\n\t\tconst retriever = new ContextualCompressionRetriever({\n\t\t\tbaseCompressor,\n\t\t\tbaseRetriever,\n\t\t});\n\n\t\treturn {\n\t\t\tresponse: logWrapper(retriever, this),\n\t\t};\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,oCAA+C;AAC/C,2BAAkC;AAClC,0BAMO;AAEP,wBAA2B;AAEpB,MAAM,+BAAoD;AAAA,EAA1D;AACN,uBAAoC;AAAA,MACnC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW;AAAA,MACX,OAAO,CAAC,WAAW;AAAA,MACnB,SAAS;AAAA,MACT,aAAa;AAAA,MACb,UAAU;AAAA,QACT,MAAM;AAAA,MACP;AAAA,MACA,OAAO;AAAA,QACN,YAAY,CAAC,IAAI;AAAA,QACjB,eAAe;AAAA,UACd,IAAI,CAAC,YAAY;AAAA,QAClB;AAAA,QACA,WAAW;AAAA,UACV,sBAAsB;AAAA,YACrB;AAAA,cACC,KAAK;AAAA,YACN;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA;AAAA,MAEA,QAAQ;AAAA,QACP;AAAA,UACC,aAAa;AAAA,UACb,gBAAgB;AAAA,UAChB,MAAM,wCAAoB;AAAA,UAC1B,UAAU;AAAA,QACX;AAAA,QACA;AAAA,UACC,aAAa;AAAA,UACb,gBAAgB;AAAA,UAChB,MAAM,wCAAoB;AAAA,UAC1B,UAAU;AAAA,QACX;AAAA,MACD;AAAA,MACA,SAAS;AAAA,QACR;AAAA,UACC,aAAa;AAAA,UACb,gBAAgB;AAAA,UAChB,MAAM,wCAAoB;AAAA,QAC3B;AAAA,MACD;AAAA,MACA,YAAY,CAAC;AAAA,IACd;AAAA;AAAA,EAEA,MAAM,WAAuC,WAAwC;AACpF,SAAK,OAAO,MAAM,qDAAqD;AAEvE,UAAM,QAAS,MAAM,KAAK;AAAA,MACzB,wCAAoB;AAAA,MACpB;AAAA,IACD;AAEA,UAAM,gBAAiB,MAAM,KAAK;AAAA,MACjC,wCAAoB;AAAA,MACpB;AAAA,IACD;AAEA,UAAM,iBAAiB,uCAAkB,QAAQ,KAAK;AAEtD,UAAM,YAAY,IAAI,6DAA+B;AAAA,MACpD;AAAA,MACA;AAAA,IACD,CAAC;AAED,WAAO;AAAA,MACN,cAAU,8BAAW,WAAW,IAAI;AAAA,IACrC;AAAA,EACD;AACD;","names":[]}
@@ -119,3 +119,4 @@ class RetrieverMultiQuery {
119
119
  0 && (module.exports = {
120
120
  RetrieverMultiQuery
121
121
  });
122
+ //# sourceMappingURL=RetrieverMultiQuery.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../nodes/retrievers/RetrieverMultiQuery/RetrieverMultiQuery.node.ts"],"sourcesContent":["/* eslint-disable n8n-nodes-base/node-dirname-against-convention */\n\nimport type { BaseLanguageModel } from '@langchain/core/language_models/base';\nimport type { BaseRetriever } from '@langchain/core/retrievers';\nimport { MultiQueryRetriever } from 'langchain/retrievers/multi_query';\nimport {\n\tNodeConnectionTypes,\n\ttype INodeType,\n\ttype INodeTypeDescription,\n\ttype ISupplyDataFunctions,\n\ttype SupplyData,\n} from 'n8n-workflow';\n\nimport { logWrapper } from '@utils/logWrapper';\n\nexport class RetrieverMultiQuery implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'MultiQuery Retriever',\n\t\tname: 'retrieverMultiQuery',\n\t\ticon: 'fa:box-open',\n\t\ticonColor: 'black',\n\t\tgroup: ['transform'],\n\t\tversion: 1,\n\t\tdescription:\n\t\t\t'Automates prompt tuning, generates diverse queries and expands document pool for enhanced retrieval.',\n\t\tdefaults: {\n\t\t\tname: 'MultiQuery Retriever',\n\t\t},\n\t\tcodex: {\n\t\t\tcategories: ['AI'],\n\t\t\tsubcategories: {\n\t\t\t\tAI: ['Retrievers'],\n\t\t\t},\n\t\t\tresources: {\n\t\t\t\tprimaryDocumentation: [\n\t\t\t\t\t{\n\t\t\t\t\t\turl: 'https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.retrievermultiquery/',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Model',\n\t\t\t\tmaxConnections: 1,\n\t\t\t\ttype: NodeConnectionTypes.AiLanguageModel,\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Retriever',\n\t\t\t\tmaxConnections: 1,\n\t\t\t\ttype: NodeConnectionTypes.AiRetriever,\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Retriever',\n\t\t\t\tmaxConnections: 1,\n\t\t\t\ttype: NodeConnectionTypes.AiRetriever,\n\t\t\t},\n\t\t],\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Options',\n\t\t\t\tname: 'options',\n\t\t\t\tplaceholder: 'Add Option',\n\t\t\t\tdescription: 'Additional options to add',\n\t\t\t\ttype: 'collection',\n\t\t\t\tdefault: {},\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Query Count',\n\t\t\t\t\t\tname: 'queryCount',\n\t\t\t\t\t\tdefault: 3,\n\t\t\t\t\t\ttypeOptions: { minValue: 1 },\n\t\t\t\t\t\tdescription: 'Number of different versions of the given question to generate',\n\t\t\t\t\t\ttype: 'number',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t};\n\n\tasync supplyData(this: ISupplyDataFunctions, itemIndex: number): Promise<SupplyData> {\n\t\tthis.logger.debug('Supplying data for MultiQuery Retriever');\n\n\t\tconst options = this.getNodeParameter('options', itemIndex, {}) as { queryCount?: number };\n\n\t\tconst model = (await this.getInputConnectionData(\n\t\t\tNodeConnectionTypes.AiLanguageModel,\n\t\t\titemIndex,\n\t\t)) as BaseLanguageModel;\n\n\t\tconst baseRetriever = (await this.getInputConnectionData(\n\t\t\tNodeConnectionTypes.AiRetriever,\n\t\t\titemIndex,\n\t\t)) as BaseRetriever;\n\n\t\t// TODO: Add support for parserKey\n\n\t\tconst retriever = MultiQueryRetriever.fromLLM({\n\t\t\tllm: model,\n\t\t\tretriever: baseRetriever,\n\t\t\t...options,\n\t\t});\n\n\t\treturn {\n\t\t\tresponse: logWrapper(retriever, this),\n\t\t};\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,yBAAoC;AACpC,0BAMO;AAEP,wBAA2B;AAEpB,MAAM,oBAAyC;AAAA,EAA/C;AACN,uBAAoC;AAAA,MACnC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW;AAAA,MACX,OAAO,CAAC,WAAW;AAAA,MACnB,SAAS;AAAA,MACT,aACC;AAAA,MACD,UAAU;AAAA,QACT,MAAM;AAAA,MACP;AAAA,MACA,OAAO;AAAA,QACN,YAAY,CAAC,IAAI;AAAA,QACjB,eAAe;AAAA,UACd,IAAI,CAAC,YAAY;AAAA,QAClB;AAAA,QACA,WAAW;AAAA,UACV,sBAAsB;AAAA,YACrB;AAAA,cACC,KAAK;AAAA,YACN;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA;AAAA,MAEA,QAAQ;AAAA,QACP;AAAA,UACC,aAAa;AAAA,UACb,gBAAgB;AAAA,UAChB,MAAM,wCAAoB;AAAA,UAC1B,UAAU;AAAA,QACX;AAAA,QACA;AAAA,UACC,aAAa;AAAA,UACb,gBAAgB;AAAA,UAChB,MAAM,wCAAoB;AAAA,UAC1B,UAAU;AAAA,QACX;AAAA,MACD;AAAA,MACA,SAAS;AAAA,QACR;AAAA,UACC,aAAa;AAAA,UACb,gBAAgB;AAAA,UAChB,MAAM,wCAAoB;AAAA,QAC3B;AAAA,MACD;AAAA,MACA,YAAY;AAAA,QACX;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,aAAa;AAAA,UACb,aAAa;AAAA,UACb,MAAM;AAAA,UACN,SAAS,CAAC;AAAA,UACV,SAAS;AAAA,YACR;AAAA,cACC,aAAa;AAAA,cACb,MAAM;AAAA,cACN,SAAS;AAAA,cACT,aAAa,EAAE,UAAU,EAAE;AAAA,cAC3B,aAAa;AAAA,cACb,MAAM;AAAA,YACP;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA,EAEA,MAAM,WAAuC,WAAwC;AACpF,SAAK,OAAO,MAAM,yCAAyC;AAE3D,UAAM,UAAU,KAAK,iBAAiB,WAAW,WAAW,CAAC,CAAC;AAE9D,UAAM,QAAS,MAAM,KAAK;AAAA,MACzB,wCAAoB;AAAA,MACpB;AAAA,IACD;AAEA,UAAM,gBAAiB,MAAM,KAAK;AAAA,MACjC,wCAAoB;AAAA,MACpB;AAAA,IACD;AAIA,UAAM,YAAY,uCAAoB,QAAQ;AAAA,MAC7C,KAAK;AAAA,MACL,WAAW;AAAA,MACX,GAAG;AAAA,IACJ,CAAC;AAED,WAAO;AAAA,MACN,cAAU,8BAAW,WAAW,IAAI;AAAA,IACrC;AAAA,EACD;AACD;","names":[]}
@@ -89,3 +89,4 @@ class RetrieverVectorStore {
89
89
  0 && (module.exports = {
90
90
  RetrieverVectorStore
91
91
  });
92
+ //# sourceMappingURL=RetrieverVectorStore.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../nodes/retrievers/RetrieverVectorStore/RetrieverVectorStore.node.ts"],"sourcesContent":["/* eslint-disable n8n-nodes-base/node-dirname-against-convention */\nimport type { VectorStore } from '@langchain/core/vectorstores';\nimport {\n\tNodeConnectionTypes,\n\ttype INodeType,\n\ttype INodeTypeDescription,\n\ttype ISupplyDataFunctions,\n\ttype SupplyData,\n} from 'n8n-workflow';\n\nimport { logWrapper } from '@utils/logWrapper';\n\nexport class RetrieverVectorStore implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Vector Store Retriever',\n\t\tname: 'retrieverVectorStore',\n\t\ticon: 'fa:box-open',\n\t\ticonColor: 'black',\n\t\tgroup: ['transform'],\n\t\tversion: 1,\n\t\tdescription: 'Use a Vector Store as Retriever',\n\t\tdefaults: {\n\t\t\tname: 'Vector Store Retriever',\n\t\t},\n\t\tcodex: {\n\t\t\tcategories: ['AI'],\n\t\t\tsubcategories: {\n\t\t\t\tAI: ['Retrievers'],\n\t\t\t},\n\t\t\tresources: {\n\t\t\t\tprimaryDocumentation: [\n\t\t\t\t\t{\n\t\t\t\t\t\turl: 'https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.retrievervectorstore/',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node\n\t\tinputs: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Vector Store',\n\t\t\t\tmaxConnections: 1,\n\t\t\t\ttype: NodeConnectionTypes.AiVectorStore,\n\t\t\t\trequired: true,\n\t\t\t},\n\t\t],\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong\n\t\toutputs: [NodeConnectionTypes.AiRetriever],\n\t\toutputNames: ['Retriever'],\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Limit',\n\t\t\t\tname: 'topK',\n\t\t\t\ttype: 'number',\n\t\t\t\tdefault: 4,\n\t\t\t\tdescription: 'The maximum number of results to return',\n\t\t\t},\n\t\t],\n\t};\n\n\tasync supplyData(this: ISupplyDataFunctions, itemIndex: number): Promise<SupplyData> {\n\t\tthis.logger.debug('Supplying data for Vector Store Retriever');\n\n\t\tconst topK = this.getNodeParameter('topK', itemIndex, 4) as number;\n\t\tconst vectorStore = (await this.getInputConnectionData(\n\t\t\tNodeConnectionTypes.AiVectorStore,\n\t\t\titemIndex,\n\t\t)) as VectorStore;\n\n\t\tconst retriever = vectorStore.asRetriever(topK);\n\n\t\treturn {\n\t\t\tresponse: logWrapper(retriever, this),\n\t\t};\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,0BAMO;AAEP,wBAA2B;AAEpB,MAAM,qBAA0C;AAAA,EAAhD;AACN,uBAAoC;AAAA,MACnC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW;AAAA,MACX,OAAO,CAAC,WAAW;AAAA,MACnB,SAAS;AAAA,MACT,aAAa;AAAA,MACb,UAAU;AAAA,QACT,MAAM;AAAA,MACP;AAAA,MACA,OAAO;AAAA,QACN,YAAY,CAAC,IAAI;AAAA,QACjB,eAAe;AAAA,UACd,IAAI,CAAC,YAAY;AAAA,QAClB;AAAA,QACA,WAAW;AAAA,UACV,sBAAsB;AAAA,YACrB;AAAA,cACC,KAAK;AAAA,YACN;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA;AAAA,MAEA,QAAQ;AAAA,QACP;AAAA,UACC,aAAa;AAAA,UACb,gBAAgB;AAAA,UAChB,MAAM,wCAAoB;AAAA,UAC1B,UAAU;AAAA,QACX;AAAA,MACD;AAAA;AAAA,MAEA,SAAS,CAAC,wCAAoB,WAAW;AAAA,MACzC,aAAa,CAAC,WAAW;AAAA,MACzB,YAAY;AAAA,QACX;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,UACT,aAAa;AAAA,QACd;AAAA,MACD;AAAA,IACD;AAAA;AAAA,EAEA,MAAM,WAAuC,WAAwC;AACpF,SAAK,OAAO,MAAM,2CAA2C;AAE7D,UAAM,OAAO,KAAK,iBAAiB,QAAQ,WAAW,CAAC;AACvD,UAAM,cAAe,MAAM,KAAK;AAAA,MAC/B,wCAAoB;AAAA,MACpB;AAAA,IACD;AAEA,UAAM,YAAY,YAAY,YAAY,IAAI;AAE9C,WAAO;AAAA,MACN,cAAU,8BAAW,WAAW,IAAI;AAAA,IACrC;AAAA,EACD;AACD;","names":[]}
@@ -426,3 +426,4 @@ ${pageContent}`,
426
426
  0 && (module.exports = {
427
427
  RetrieverWorkflow
428
428
  });
429
+ //# sourceMappingURL=RetrieverWorkflow.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../nodes/retrievers/RetrieverWorkflow/RetrieverWorkflow.node.ts"],"sourcesContent":["/* eslint-disable n8n-nodes-base/node-dirname-against-convention */\nimport type { CallbackManagerForRetrieverRun } from '@langchain/core/callbacks/manager';\nimport { Document } from '@langchain/core/documents';\nimport { BaseRetriever, type BaseRetrieverInput } from '@langchain/core/retrievers';\nimport type { SetField, SetNodeOptions } from 'n8n-nodes-base/dist/nodes/Set/v2/helpers/interfaces';\nimport * as manual from 'n8n-nodes-base/dist/nodes/Set/v2/manual.mode';\nimport { NodeConnectionTypes, NodeOperationError } from 'n8n-workflow';\nimport type {\n\tIDataObject,\n\tIExecuteWorkflowInfo,\n\tINodeExecutionData,\n\tIWorkflowBase,\n\tISupplyDataFunctions,\n\tINodeType,\n\tINodeTypeDescription,\n\tSupplyData,\n\tINodeParameterResourceLocator,\n\tExecuteWorkflowData,\n} from 'n8n-workflow';\n\nimport { logWrapper } from '@utils/logWrapper';\n\nfunction objectToString(obj: Record<string, string> | IDataObject, level = 0) {\n\tlet result = '';\n\tfor (const key in obj) {\n\t\tconst value = obj[key];\n\t\tif (typeof value === 'object' && value !== null) {\n\t\t\tresult += `${' '.repeat(level)}- \"${key}\":\\n${objectToString(\n\t\t\t\tvalue as IDataObject,\n\t\t\t\tlevel + 1,\n\t\t\t)}`;\n\t\t} else {\n\t\t\tresult += `${' '.repeat(level)}- \"${key}\": \"${value}\"\\n`;\n\t\t}\n\t}\n\treturn result;\n}\n\nexport class RetrieverWorkflow implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Workflow Retriever',\n\t\tname: 'retrieverWorkflow',\n\t\ticon: 'fa:box-open',\n\t\ticonColor: 'black',\n\t\tgroup: ['transform'],\n\t\tversion: [1, 1.1],\n\t\tdescription: 'Use an n8n Workflow as Retriever',\n\t\tdefaults: {\n\t\t\tname: 'Workflow Retriever',\n\t\t},\n\t\tcodex: {\n\t\t\tcategories: ['AI'],\n\t\t\tsubcategories: {\n\t\t\t\tAI: ['Retrievers'],\n\t\t\t},\n\t\t\tresources: {\n\t\t\t\tprimaryDocumentation: [\n\t\t\t\t\t{\n\t\t\t\t\t\turl: 'https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.retrieverworkflow/',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\tinputs: [],\n\t\toutputs: [\n\t\t\t{\n\t\t\t\tdisplayName: 'Retriever',\n\t\t\t\tmaxConnections: 1,\n\t\t\t\ttype: NodeConnectionTypes.AiRetriever,\n\t\t\t},\n\t\t],\n\t\tproperties: [\n\t\t\t{\n\t\t\t\tdisplayName:\n\t\t\t\t\t'The workflow will receive \"query\" as input and the output of the last node will be returned and converted to Documents',\n\t\t\t\tname: 'executeNotice',\n\t\t\t\ttype: 'notice',\n\t\t\t\tdefault: '',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Source',\n\t\t\t\tname: 'source',\n\t\t\t\ttype: 'options',\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Database',\n\t\t\t\t\t\tvalue: 'database',\n\t\t\t\t\t\tdescription: 'Load the workflow from the database by ID',\n\t\t\t\t\t},\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'Parameter',\n\t\t\t\t\t\tvalue: 'parameter',\n\t\t\t\t\t\tdescription: 'Load the workflow from a parameter',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tdefault: 'database',\n\t\t\t\tdescription: 'Where to get the workflow to execute from',\n\t\t\t},\n\n\t\t\t// ----------------------------------\n\t\t\t// source:database\n\t\t\t// ----------------------------------\n\t\t\t{\n\t\t\t\tdisplayName: 'Workflow ID',\n\t\t\t\tname: 'workflowId',\n\t\t\t\ttype: 'string',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tsource: ['database'],\n\t\t\t\t\t\t'@version': [{ _cnd: { eq: 1 } }],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tdefault: '',\n\t\t\t\trequired: true,\n\t\t\t\tdescription: 'The workflow to execute',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Workflow',\n\t\t\t\tname: 'workflowId',\n\t\t\t\ttype: 'workflowSelector',\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tsource: ['database'],\n\t\t\t\t\t\t'@version': [{ _cnd: { gte: 1.1 } }],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tdefault: '',\n\t\t\t\trequired: true,\n\t\t\t},\n\n\t\t\t// ----------------------------------\n\t\t\t// source:parameter\n\t\t\t// ----------------------------------\n\t\t\t{\n\t\t\t\tdisplayName: 'Workflow JSON',\n\t\t\t\tname: 'workflowJson',\n\t\t\t\ttype: 'json',\n\t\t\t\ttypeOptions: {\n\t\t\t\t\trows: 10,\n\t\t\t\t},\n\t\t\t\tdisplayOptions: {\n\t\t\t\t\tshow: {\n\t\t\t\t\t\tsource: ['parameter'],\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tdefault: '\\n\\n\\n',\n\t\t\t\trequired: true,\n\t\t\t\tdescription: 'The workflow JSON code to execute',\n\t\t\t},\n\n\t\t\t// ----------------------------------\n\t\t\t// For all\n\t\t\t// ----------------------------------\n\t\t\t{\n\t\t\t\tdisplayName: 'Workflow Values',\n\t\t\t\tname: 'fields',\n\t\t\t\tplaceholder: 'Add Value',\n\t\t\t\ttype: 'fixedCollection',\n\t\t\t\tdescription: 'Set the values which should be made available in the workflow',\n\t\t\t\ttypeOptions: {\n\t\t\t\t\tmultipleValues: true,\n\t\t\t\t\tsortable: true,\n\t\t\t\t},\n\t\t\t\tdefault: {},\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tname: 'values',\n\t\t\t\t\t\tdisplayName: 'Values',\n\t\t\t\t\t\tvalues: [\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Name',\n\t\t\t\t\t\t\t\tname: 'name',\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\t\t\tplaceholder: 'e.g. fieldName',\n\t\t\t\t\t\t\t\tdescription:\n\t\t\t\t\t\t\t\t\t'Name of the field to set the value of. Supports dot-notation. Example: data.person[0].name.',\n\t\t\t\t\t\t\t\trequiresDataPath: 'single',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Type',\n\t\t\t\t\t\t\t\tname: 'type',\n\t\t\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\t\t\tdescription: 'The field value type',\n\t\t\t\t\t\t\t\t// eslint-disable-next-line n8n-nodes-base/node-param-options-type-unsorted-items\n\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: 'String',\n\t\t\t\t\t\t\t\t\t\tvalue: 'stringValue',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: 'Number',\n\t\t\t\t\t\t\t\t\t\tvalue: 'numberValue',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: 'Boolean',\n\t\t\t\t\t\t\t\t\t\tvalue: 'booleanValue',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: 'Array',\n\t\t\t\t\t\t\t\t\t\tvalue: 'arrayValue',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: 'Object',\n\t\t\t\t\t\t\t\t\t\tvalue: 'objectValue',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tdefault: 'stringValue',\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Value',\n\t\t\t\t\t\t\t\tname: 'stringValue',\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\t\t\tshow: {\n\t\t\t\t\t\t\t\t\t\ttype: ['stringValue'],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tvalidateType: 'string',\n\t\t\t\t\t\t\t\tignoreValidationDuringExecution: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Value',\n\t\t\t\t\t\t\t\tname: 'numberValue',\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\t\t\tshow: {\n\t\t\t\t\t\t\t\t\t\ttype: ['numberValue'],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tvalidateType: 'number',\n\t\t\t\t\t\t\t\tignoreValidationDuringExecution: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Value',\n\t\t\t\t\t\t\t\tname: 'booleanValue',\n\t\t\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\t\t\tdefault: 'true',\n\t\t\t\t\t\t\t\toptions: [\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: 'True',\n\t\t\t\t\t\t\t\t\t\tvalue: 'true',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\t\t\tname: 'False',\n\t\t\t\t\t\t\t\t\t\tvalue: 'false',\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t],\n\t\t\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\t\t\tshow: {\n\t\t\t\t\t\t\t\t\t\ttype: ['booleanValue'],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tvalidateType: 'boolean',\n\t\t\t\t\t\t\t\tignoreValidationDuringExecution: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Value',\n\t\t\t\t\t\t\t\tname: 'arrayValue',\n\t\t\t\t\t\t\t\ttype: 'string',\n\t\t\t\t\t\t\t\tdefault: '',\n\t\t\t\t\t\t\t\tplaceholder: 'e.g. [ arrayItem1, arrayItem2, arrayItem3 ]',\n\t\t\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\t\t\tshow: {\n\t\t\t\t\t\t\t\t\t\ttype: ['arrayValue'],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tvalidateType: 'array',\n\t\t\t\t\t\t\t\tignoreValidationDuringExecution: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\tdisplayName: 'Value',\n\t\t\t\t\t\t\t\tname: 'objectValue',\n\t\t\t\t\t\t\t\ttype: 'json',\n\t\t\t\t\t\t\t\tdefault: '={}',\n\t\t\t\t\t\t\t\ttypeOptions: {\n\t\t\t\t\t\t\t\t\trows: 2,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tdisplayOptions: {\n\t\t\t\t\t\t\t\t\tshow: {\n\t\t\t\t\t\t\t\t\t\ttype: ['objectValue'],\n\t\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t\tvalidateType: 'object',\n\t\t\t\t\t\t\t\tignoreValidationDuringExecution: true,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t};\n\n\tasync supplyData(this: ISupplyDataFunctions, itemIndex: number): Promise<SupplyData> {\n\t\tconst workflowProxy = this.getWorkflowDataProxy(0);\n\n\t\tclass WorkflowRetriever extends BaseRetriever {\n\t\t\tlc_namespace = ['n8n-nodes-langchain', 'retrievers', 'workflow'];\n\n\t\t\tconstructor(\n\t\t\t\tprivate executeFunctions: ISupplyDataFunctions,\n\t\t\t\tfields: BaseRetrieverInput,\n\t\t\t) {\n\t\t\t\tsuper(fields);\n\t\t\t}\n\n\t\t\tasync _getRelevantDocuments(\n\t\t\t\tquery: string,\n\t\t\t\tconfig?: CallbackManagerForRetrieverRun,\n\t\t\t): Promise<Document[]> {\n\t\t\t\tconst source = this.executeFunctions.getNodeParameter('source', itemIndex) as string;\n\n\t\t\t\tconst baseMetadata: IDataObject = {\n\t\t\t\t\tsource: 'workflow',\n\t\t\t\t\tworkflowSource: source,\n\t\t\t\t};\n\n\t\t\t\tconst workflowInfo: IExecuteWorkflowInfo = {};\n\t\t\t\tif (source === 'database') {\n\t\t\t\t\tconst nodeVersion = this.executeFunctions.getNode().typeVersion;\n\t\t\t\t\tif (nodeVersion === 1) {\n\t\t\t\t\t\tworkflowInfo.id = this.executeFunctions.getNodeParameter(\n\t\t\t\t\t\t\t'workflowId',\n\t\t\t\t\t\t\titemIndex,\n\t\t\t\t\t\t) as string;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tconst { value } = this.executeFunctions.getNodeParameter(\n\t\t\t\t\t\t\t'workflowId',\n\t\t\t\t\t\t\titemIndex,\n\t\t\t\t\t\t\t{},\n\t\t\t\t\t\t) as INodeParameterResourceLocator;\n\t\t\t\t\t\tworkflowInfo.id = value as string;\n\t\t\t\t\t}\n\n\t\t\t\t\tbaseMetadata.workflowId = workflowInfo.id;\n\t\t\t\t} else if (source === 'parameter') {\n\t\t\t\t\t// Read workflow from parameter\n\t\t\t\t\tconst workflowJson = this.executeFunctions.getNodeParameter(\n\t\t\t\t\t\t'workflowJson',\n\t\t\t\t\t\titemIndex,\n\t\t\t\t\t) as string;\n\t\t\t\t\ttry {\n\t\t\t\t\t\tworkflowInfo.code = JSON.parse(workflowJson) as IWorkflowBase;\n\t\t\t\t\t} catch (error) {\n\t\t\t\t\t\tthrow new NodeOperationError(\n\t\t\t\t\t\t\tthis.executeFunctions.getNode(),\n\t\t\t\t\t\t\t`The provided workflow is not valid JSON: \"${(error as Error).message}\"`,\n\t\t\t\t\t\t\t{\n\t\t\t\t\t\t\t\titemIndex,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t);\n\t\t\t\t\t}\n\n\t\t\t\t\t// same as current workflow\n\t\t\t\t\tbaseMetadata.workflowId = workflowProxy.$workflow.id;\n\t\t\t\t}\n\n\t\t\t\tconst rawData: IDataObject = { query };\n\n\t\t\t\tconst workflowFieldsJson = this.executeFunctions.getNodeParameter(\n\t\t\t\t\t'fields.values',\n\t\t\t\t\titemIndex,\n\t\t\t\t\t[],\n\t\t\t\t\t{\n\t\t\t\t\t\trawExpressions: true,\n\t\t\t\t\t},\n\t\t\t\t) as SetField[];\n\n\t\t\t\t// Copied from Set Node v2\n\t\t\t\tfor (const entry of workflowFieldsJson) {\n\t\t\t\t\tif (entry.type === 'objectValue' && (entry.objectValue as string).startsWith('=')) {\n\t\t\t\t\t\trawData[entry.name] = (entry.objectValue as string).replace(/^=+/, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tconst options: SetNodeOptions = {\n\t\t\t\t\tinclude: 'all',\n\t\t\t\t};\n\n\t\t\t\tconst newItem = await manual.execute.call(\n\t\t\t\t\tthis.executeFunctions,\n\t\t\t\t\t{ json: { query } },\n\t\t\t\t\titemIndex,\n\t\t\t\t\toptions,\n\t\t\t\t\trawData,\n\t\t\t\t\tthis.executeFunctions.getNode(),\n\t\t\t\t);\n\n\t\t\t\tconst items = [newItem] as INodeExecutionData[];\n\n\t\t\t\tlet receivedData: ExecuteWorkflowData;\n\t\t\t\ttry {\n\t\t\t\t\treceivedData = await this.executeFunctions.executeWorkflow(\n\t\t\t\t\t\tworkflowInfo,\n\t\t\t\t\t\titems,\n\t\t\t\t\t\tconfig?.getChild(),\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\tparentExecution: {\n\t\t\t\t\t\t\t\texecutionId: workflowProxy.$execution.id,\n\t\t\t\t\t\t\t\tworkflowId: workflowProxy.$workflow.id,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t},\n\t\t\t\t\t);\n\t\t\t\t} catch (error) {\n\t\t\t\t\t// Make sure a valid error gets returned that can by json-serialized else it will\n\t\t\t\t\t// not show up in the frontend\n\t\t\t\t\tthrow new NodeOperationError(this.executeFunctions.getNode(), error as Error);\n\t\t\t\t}\n\n\t\t\t\tconst receivedItems = receivedData.data?.[0] ?? [];\n\n\t\t\t\tconst returnData: Document[] = [];\n\t\t\t\tfor (const [index, itemData] of receivedItems.entries()) {\n\t\t\t\t\tconst pageContent = objectToString(itemData.json);\n\t\t\t\t\treturnData.push(\n\t\t\t\t\t\tnew Document({\n\t\t\t\t\t\t\tpageContent: `### ${index + 1}. Context data:\\n${pageContent}`,\n\t\t\t\t\t\t\tmetadata: {\n\t\t\t\t\t\t\t\t...baseMetadata,\n\t\t\t\t\t\t\t\titemIndex: index,\n\t\t\t\t\t\t\t\texecutionId: receivedData.executionId,\n\t\t\t\t\t\t\t},\n\t\t\t\t\t\t}),\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\treturn returnData;\n\t\t\t}\n\t\t}\n\n\t\tconst retriever = new WorkflowRetriever(this, {});\n\n\t\treturn {\n\t\t\tresponse: logWrapper(retriever, this),\n\t\t};\n\t}\n}\n"],"mappings":"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","names":[]}
@@ -100,3 +100,4 @@ class TextSplitterCharacterTextSplitter {
100
100
  0 && (module.exports = {
101
101
  TextSplitterCharacterTextSplitter
102
102
  });
103
+ //# sourceMappingURL=TextSplitterCharacterTextSplitter.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../nodes/text_splitters/TextSplitterCharacterTextSplitter/TextSplitterCharacterTextSplitter.node.ts"],"sourcesContent":["/* eslint-disable n8n-nodes-base/node-dirname-against-convention */\nimport type { CharacterTextSplitterParams } from '@langchain/textsplitters';\nimport { CharacterTextSplitter } from '@langchain/textsplitters';\nimport {\n\tNodeConnectionTypes,\n\ttype INodeType,\n\ttype INodeTypeDescription,\n\ttype ISupplyDataFunctions,\n\ttype SupplyData,\n} from 'n8n-workflow';\n\nimport { logWrapper } from '@utils/logWrapper';\nimport { getConnectionHintNoticeField } from '@utils/sharedFields';\n\nexport class TextSplitterCharacterTextSplitter implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Character Text Splitter',\n\t\tname: 'textSplitterCharacterTextSplitter',\n\t\ticon: 'fa:grip-lines-vertical',\n\t\ticonColor: 'black',\n\t\tgroup: ['transform'],\n\t\tversion: 1,\n\t\tdescription: 'Split text into chunks by characters',\n\t\tdefaults: {\n\t\t\tname: 'Character Text Splitter',\n\t\t},\n\t\tcodex: {\n\t\t\tcategories: ['AI'],\n\t\t\tsubcategories: {\n\t\t\t\tAI: ['Text Splitters'],\n\t\t\t},\n\t\t\tresources: {\n\t\t\t\tprimaryDocumentation: [\n\t\t\t\t\t{\n\t\t\t\t\t\turl: 'https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.textsplittercharactertextsplitter/',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node\n\t\tinputs: [],\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong\n\t\toutputs: [NodeConnectionTypes.AiTextSplitter],\n\t\toutputNames: ['Text Splitter'],\n\t\tproperties: [\n\t\t\tgetConnectionHintNoticeField([NodeConnectionTypes.AiDocument]),\n\t\t\t{\n\t\t\t\tdisplayName: 'Separator',\n\t\t\t\tname: 'separator',\n\t\t\t\ttype: 'string',\n\t\t\t\tdefault: '',\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Chunk Size',\n\t\t\t\tname: 'chunkSize',\n\t\t\t\ttype: 'number',\n\t\t\t\tdefault: 1000,\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Chunk Overlap',\n\t\t\t\tname: 'chunkOverlap',\n\t\t\t\ttype: 'number',\n\t\t\t\tdefault: 0,\n\t\t\t},\n\t\t],\n\t};\n\n\tasync supplyData(this: ISupplyDataFunctions, itemIndex: number): Promise<SupplyData> {\n\t\tthis.logger.debug('Supply Data for Text Splitter');\n\n\t\tconst separator = this.getNodeParameter('separator', itemIndex) as string;\n\t\tconst chunkSize = this.getNodeParameter('chunkSize', itemIndex) as number;\n\t\tconst chunkOverlap = this.getNodeParameter('chunkOverlap', itemIndex) as number;\n\n\t\tconst params: CharacterTextSplitterParams = {\n\t\t\tseparator,\n\t\t\tchunkSize,\n\t\t\tchunkOverlap,\n\t\t\tkeepSeparator: false,\n\t\t};\n\n\t\tconst splitter = new CharacterTextSplitter(params);\n\n\t\treturn {\n\t\t\tresponse: logWrapper(splitter, this),\n\t\t};\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA,2BAAsC;AACtC,0BAMO;AAEP,wBAA2B;AAC3B,0BAA6C;AAEtC,MAAM,kCAAuD;AAAA,EAA7D;AACN,uBAAoC;AAAA,MACnC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW;AAAA,MACX,OAAO,CAAC,WAAW;AAAA,MACnB,SAAS;AAAA,MACT,aAAa;AAAA,MACb,UAAU;AAAA,QACT,MAAM;AAAA,MACP;AAAA,MACA,OAAO;AAAA,QACN,YAAY,CAAC,IAAI;AAAA,QACjB,eAAe;AAAA,UACd,IAAI,CAAC,gBAAgB;AAAA,QACtB;AAAA,QACA,WAAW;AAAA,UACV,sBAAsB;AAAA,YACrB;AAAA,cACC,KAAK;AAAA,YACN;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA;AAAA,MAEA,QAAQ,CAAC;AAAA;AAAA,MAET,SAAS,CAAC,wCAAoB,cAAc;AAAA,MAC5C,aAAa,CAAC,eAAe;AAAA,MAC7B,YAAY;AAAA,YACX,kDAA6B,CAAC,wCAAoB,UAAU,CAAC;AAAA,QAC7D;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,QACV;AAAA,QACA;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,QACV;AAAA,QACA;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,QACV;AAAA,MACD;AAAA,IACD;AAAA;AAAA,EAEA,MAAM,WAAuC,WAAwC;AACpF,SAAK,OAAO,MAAM,+BAA+B;AAEjD,UAAM,YAAY,KAAK,iBAAiB,aAAa,SAAS;AAC9D,UAAM,YAAY,KAAK,iBAAiB,aAAa,SAAS;AAC9D,UAAM,eAAe,KAAK,iBAAiB,gBAAgB,SAAS;AAEpE,UAAM,SAAsC;AAAA,MAC3C;AAAA,MACA;AAAA,MACA;AAAA,MACA,eAAe;AAAA,IAChB;AAEA,UAAM,WAAW,IAAI,2CAAsB,MAAM;AAEjD,WAAO;AAAA,MACN,cAAU,8BAAW,UAAU,IAAI;AAAA,IACpC;AAAA,EACD;AACD;","names":[]}
@@ -138,3 +138,4 @@ class TextSplitterRecursiveCharacterTextSplitter {
138
138
  0 && (module.exports = {
139
139
  TextSplitterRecursiveCharacterTextSplitter
140
140
  });
141
+ //# sourceMappingURL=TextSplitterRecursiveCharacterTextSplitter.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../nodes/text_splitters/TextSplitterRecursiveCharacterTextSplitter/TextSplitterRecursiveCharacterTextSplitter.node.ts"],"sourcesContent":["/* eslint-disable n8n-nodes-base/node-dirname-against-convention */\nimport type {\n\tRecursiveCharacterTextSplitterParams,\n\tSupportedTextSplitterLanguage,\n} from '@langchain/textsplitters';\nimport { RecursiveCharacterTextSplitter } from '@langchain/textsplitters';\nimport {\n\tNodeConnectionTypes,\n\ttype INodeType,\n\ttype INodeTypeDescription,\n\ttype ISupplyDataFunctions,\n\ttype SupplyData,\n} from 'n8n-workflow';\n\nimport { logWrapper } from '@utils/logWrapper';\nimport { getConnectionHintNoticeField } from '@utils/sharedFields';\n\nconst supportedLanguages: SupportedTextSplitterLanguage[] = [\n\t'cpp',\n\t'go',\n\t'java',\n\t'js',\n\t'php',\n\t'proto',\n\t'python',\n\t'rst',\n\t'ruby',\n\t'rust',\n\t'scala',\n\t'swift',\n\t'markdown',\n\t'latex',\n\t'html',\n];\nexport class TextSplitterRecursiveCharacterTextSplitter implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Recursive Character Text Splitter',\n\t\tname: 'textSplitterRecursiveCharacterTextSplitter',\n\t\ticon: 'fa:grip-lines-vertical',\n\t\ticonColor: 'black',\n\t\tgroup: ['transform'],\n\t\tversion: 1,\n\t\tdescription: 'Split text into chunks by characters recursively, recommended for most use cases',\n\t\tdefaults: {\n\t\t\tname: 'Recursive Character Text Splitter',\n\t\t},\n\t\tcodex: {\n\t\t\tcategories: ['AI'],\n\t\t\tsubcategories: {\n\t\t\t\tAI: ['Text Splitters'],\n\t\t\t},\n\t\t\tresources: {\n\t\t\t\tprimaryDocumentation: [\n\t\t\t\t\t{\n\t\t\t\t\t\turl: 'https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.textsplitterrecursivecharactertextsplitter/',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node\n\t\tinputs: [],\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong\n\t\toutputs: [NodeConnectionTypes.AiTextSplitter],\n\t\toutputNames: ['Text Splitter'],\n\t\tproperties: [\n\t\t\tgetConnectionHintNoticeField([NodeConnectionTypes.AiDocument]),\n\t\t\t{\n\t\t\t\tdisplayName: 'Chunk Size',\n\t\t\t\tname: 'chunkSize',\n\t\t\t\ttype: 'number',\n\t\t\t\tdefault: 1000,\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Chunk Overlap',\n\t\t\t\tname: 'chunkOverlap',\n\t\t\t\ttype: 'number',\n\t\t\t\tdefault: 0,\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Options',\n\t\t\t\tname: 'options',\n\t\t\t\tplaceholder: 'Add Option',\n\t\t\t\tdescription: 'Additional options to add',\n\t\t\t\ttype: 'collection',\n\t\t\t\tdefault: {},\n\t\t\t\toptions: [\n\t\t\t\t\t{\n\t\t\t\t\t\tdisplayName: 'Split Code',\n\t\t\t\t\t\tname: 'splitCode',\n\t\t\t\t\t\tdefault: 'markdown',\n\t\t\t\t\t\ttype: 'options',\n\t\t\t\t\t\toptions: supportedLanguages.map((lang) => ({ name: lang, value: lang })),\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t],\n\t};\n\n\tasync supplyData(this: ISupplyDataFunctions, itemIndex: number): Promise<SupplyData> {\n\t\tthis.logger.debug('Supply Data for Text Splitter');\n\n\t\tconst chunkSize = this.getNodeParameter('chunkSize', itemIndex) as number;\n\t\tconst chunkOverlap = this.getNodeParameter('chunkOverlap', itemIndex) as number;\n\t\tconst splitCode = this.getNodeParameter(\n\t\t\t'options.splitCode',\n\t\t\titemIndex,\n\t\t\tnull,\n\t\t) as SupportedTextSplitterLanguage | null;\n\t\tconst params: RecursiveCharacterTextSplitterParams = {\n\t\t\t// TODO: These are the default values, should we allow the user to change them?\n\t\t\tseparators: ['\\n\\n', '\\n', ' ', ''],\n\t\t\tchunkSize,\n\t\t\tchunkOverlap,\n\t\t\tkeepSeparator: false,\n\t\t};\n\t\tlet splitter: RecursiveCharacterTextSplitter;\n\n\t\tif (splitCode && supportedLanguages.includes(splitCode)) {\n\t\t\tsplitter = RecursiveCharacterTextSplitter.fromLanguage(splitCode, params);\n\t\t} else {\n\t\t\tsplitter = new RecursiveCharacterTextSplitter(params);\n\t\t}\n\n\t\treturn {\n\t\t\tresponse: logWrapper(splitter, this),\n\t\t};\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,2BAA+C;AAC/C,0BAMO;AAEP,wBAA2B;AAC3B,0BAA6C;AAE7C,MAAM,qBAAsD;AAAA,EAC3D;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACD;AACO,MAAM,2CAAgE;AAAA,EAAtE;AACN,uBAAoC;AAAA,MACnC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW;AAAA,MACX,OAAO,CAAC,WAAW;AAAA,MACnB,SAAS;AAAA,MACT,aAAa;AAAA,MACb,UAAU;AAAA,QACT,MAAM;AAAA,MACP;AAAA,MACA,OAAO;AAAA,QACN,YAAY,CAAC,IAAI;AAAA,QACjB,eAAe;AAAA,UACd,IAAI,CAAC,gBAAgB;AAAA,QACtB;AAAA,QACA,WAAW;AAAA,UACV,sBAAsB;AAAA,YACrB;AAAA,cACC,KAAK;AAAA,YACN;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA;AAAA,MAEA,QAAQ,CAAC;AAAA;AAAA,MAET,SAAS,CAAC,wCAAoB,cAAc;AAAA,MAC5C,aAAa,CAAC,eAAe;AAAA,MAC7B,YAAY;AAAA,YACX,kDAA6B,CAAC,wCAAoB,UAAU,CAAC;AAAA,QAC7D;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,QACV;AAAA,QACA;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,QACV;AAAA,QACA;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,aAAa;AAAA,UACb,aAAa;AAAA,UACb,MAAM;AAAA,UACN,SAAS,CAAC;AAAA,UACV,SAAS;AAAA,YACR;AAAA,cACC,aAAa;AAAA,cACb,MAAM;AAAA,cACN,SAAS;AAAA,cACT,MAAM;AAAA,cACN,SAAS,mBAAmB,IAAI,CAAC,UAAU,EAAE,MAAM,MAAM,OAAO,KAAK,EAAE;AAAA,YACxE;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA,IACD;AAAA;AAAA,EAEA,MAAM,WAAuC,WAAwC;AACpF,SAAK,OAAO,MAAM,+BAA+B;AAEjD,UAAM,YAAY,KAAK,iBAAiB,aAAa,SAAS;AAC9D,UAAM,eAAe,KAAK,iBAAiB,gBAAgB,SAAS;AACpE,UAAM,YAAY,KAAK;AAAA,MACtB;AAAA,MACA;AAAA,MACA;AAAA,IACD;AACA,UAAM,SAA+C;AAAA;AAAA,MAEpD,YAAY,CAAC,QAAQ,MAAM,KAAK,EAAE;AAAA,MAClC;AAAA,MACA;AAAA,MACA,eAAe;AAAA,IAChB;AACA,QAAI;AAEJ,QAAI,aAAa,mBAAmB,SAAS,SAAS,GAAG;AACxD,iBAAW,oDAA+B,aAAa,WAAW,MAAM;AAAA,IACzE,OAAO;AACN,iBAAW,IAAI,oDAA+B,MAAM;AAAA,IACrD;AAEA,WAAO;AAAA,MACN,cAAU,8BAAW,UAAU,IAAI;AAAA,IACpC;AAAA,EACD;AACD;","names":[]}
@@ -97,3 +97,4 @@ class TextSplitterTokenSplitter {
97
97
  0 && (module.exports = {
98
98
  TextSplitterTokenSplitter
99
99
  });
100
+ //# sourceMappingURL=TextSplitterTokenSplitter.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../../nodes/text_splitters/TextSplitterTokenSplitter/TextSplitterTokenSplitter.node.ts"],"sourcesContent":["/* eslint-disable n8n-nodes-base/node-dirname-against-convention */\nimport { TokenTextSplitter } from '@langchain/textsplitters';\nimport {\n\tNodeConnectionTypes,\n\ttype INodeType,\n\ttype INodeTypeDescription,\n\ttype ISupplyDataFunctions,\n\ttype SupplyData,\n} from 'n8n-workflow';\n\nimport { logWrapper } from '@utils/logWrapper';\nimport { getConnectionHintNoticeField } from '@utils/sharedFields';\n\nexport class TextSplitterTokenSplitter implements INodeType {\n\tdescription: INodeTypeDescription = {\n\t\tdisplayName: 'Token Splitter',\n\t\tname: 'textSplitterTokenSplitter',\n\t\ticon: 'fa:grip-lines-vertical',\n\t\ticonColor: 'black',\n\t\tgroup: ['transform'],\n\t\tversion: 1,\n\t\tdescription: 'Split text into chunks by tokens',\n\t\tdefaults: {\n\t\t\tname: 'Token Splitter',\n\t\t},\n\t\tcodex: {\n\t\t\tcategories: ['AI'],\n\t\t\tsubcategories: {\n\t\t\t\tAI: ['Text Splitters'],\n\t\t\t},\n\t\t\tresources: {\n\t\t\t\tprimaryDocumentation: [\n\t\t\t\t\t{\n\t\t\t\t\t\turl: 'https://docs.n8n.io/integrations/builtin/cluster-nodes/sub-nodes/n8n-nodes-langchain.textsplittertokensplitter/',\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t},\n\t\t},\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node\n\t\tinputs: [],\n\t\t// eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong\n\t\toutputs: [NodeConnectionTypes.AiTextSplitter],\n\t\toutputNames: ['Text Splitter'],\n\t\tproperties: [\n\t\t\tgetConnectionHintNoticeField([NodeConnectionTypes.AiDocument]),\n\t\t\t{\n\t\t\t\tdisplayName: 'Chunk Size',\n\t\t\t\tname: 'chunkSize',\n\t\t\t\ttype: 'number',\n\t\t\t\tdefault: 1000,\n\t\t\t},\n\t\t\t{\n\t\t\t\tdisplayName: 'Chunk Overlap',\n\t\t\t\tname: 'chunkOverlap',\n\t\t\t\ttype: 'number',\n\t\t\t\tdefault: 0,\n\t\t\t},\n\t\t],\n\t};\n\n\tasync supplyData(this: ISupplyDataFunctions, itemIndex: number): Promise<SupplyData> {\n\t\tthis.logger.debug('Supply Data for Text Splitter');\n\n\t\tconst chunkSize = this.getNodeParameter('chunkSize', itemIndex) as number;\n\t\tconst chunkOverlap = this.getNodeParameter('chunkOverlap', itemIndex) as number;\n\n\t\tconst splitter = new TokenTextSplitter({\n\t\t\tchunkSize,\n\t\t\tchunkOverlap,\n\t\t\tallowedSpecial: 'all',\n\t\t\tdisallowedSpecial: 'all',\n\t\t\tencodingName: 'cl100k_base',\n\t\t\tkeepSeparator: false,\n\t\t\t// allowedSpecial: 'all',\n\t\t\t// disallowedSpecial: 'all',\n\t\t\t// encodingName: 'cl100k_base',\n\t\t});\n\n\t\treturn {\n\t\t\tresponse: logWrapper(splitter, this),\n\t\t};\n\t}\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AACA,2BAAkC;AAClC,0BAMO;AAEP,wBAA2B;AAC3B,0BAA6C;AAEtC,MAAM,0BAA+C;AAAA,EAArD;AACN,uBAAoC;AAAA,MACnC,aAAa;AAAA,MACb,MAAM;AAAA,MACN,MAAM;AAAA,MACN,WAAW;AAAA,MACX,OAAO,CAAC,WAAW;AAAA,MACnB,SAAS;AAAA,MACT,aAAa;AAAA,MACb,UAAU;AAAA,QACT,MAAM;AAAA,MACP;AAAA,MACA,OAAO;AAAA,QACN,YAAY,CAAC,IAAI;AAAA,QACjB,eAAe;AAAA,UACd,IAAI,CAAC,gBAAgB;AAAA,QACtB;AAAA,QACA,WAAW;AAAA,UACV,sBAAsB;AAAA,YACrB;AAAA,cACC,KAAK;AAAA,YACN;AAAA,UACD;AAAA,QACD;AAAA,MACD;AAAA;AAAA,MAEA,QAAQ,CAAC;AAAA;AAAA,MAET,SAAS,CAAC,wCAAoB,cAAc;AAAA,MAC5C,aAAa,CAAC,eAAe;AAAA,MAC7B,YAAY;AAAA,YACX,kDAA6B,CAAC,wCAAoB,UAAU,CAAC;AAAA,QAC7D;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,QACV;AAAA,QACA;AAAA,UACC,aAAa;AAAA,UACb,MAAM;AAAA,UACN,MAAM;AAAA,UACN,SAAS;AAAA,QACV;AAAA,MACD;AAAA,IACD;AAAA;AAAA,EAEA,MAAM,WAAuC,WAAwC;AACpF,SAAK,OAAO,MAAM,+BAA+B;AAEjD,UAAM,YAAY,KAAK,iBAAiB,aAAa,SAAS;AAC9D,UAAM,eAAe,KAAK,iBAAiB,gBAAgB,SAAS;AAEpE,UAAM,WAAW,IAAI,uCAAkB;AAAA,MACtC;AAAA,MACA;AAAA,MACA,gBAAgB;AAAA,MAChB,mBAAmB;AAAA,MACnB,cAAc;AAAA,MACd,eAAe;AAAA;AAAA;AAAA;AAAA,IAIhB,CAAC;AAED,WAAO;AAAA,MACN,cAAU,8BAAW,UAAU,IAAI;AAAA,IACpC;AAAA,EACD;AACD;","names":[]}
@@ -70,3 +70,4 @@ class ToolCalculator {
70
70
  0 && (module.exports = {
71
71
  ToolCalculator
72
72
  });
73
+ //# sourceMappingURL=ToolCalculator.node.js.map