@n8n/ai-utilities 0.2.1 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. package/README.md +9 -448
  2. package/dist/{adapters → cjs/adapters}/langchain-chat-model.d.ts +1 -1
  3. package/dist/cjs/adapters/langchain-chat-model.js +201 -0
  4. package/dist/cjs/adapters/langchain-chat-model.js.map +1 -0
  5. package/dist/cjs/adapters/langchain-history.js +37 -0
  6. package/dist/cjs/adapters/langchain-history.js.map +1 -0
  7. package/dist/cjs/adapters/langchain-memory.js +46 -0
  8. package/dist/cjs/adapters/langchain-memory.js.map +1 -0
  9. package/dist/cjs/ai-node-sdk-version.d.ts +1 -0
  10. package/dist/cjs/ai-node-sdk-version.js +15 -0
  11. package/dist/cjs/ai-node-sdk-version.js.map +1 -0
  12. package/dist/cjs/chat-model/base.js +35 -0
  13. package/dist/cjs/chat-model/base.js.map +1 -0
  14. package/dist/{converters → cjs/converters}/message.d.ts +2 -0
  15. package/dist/cjs/converters/message.js +388 -0
  16. package/dist/cjs/converters/message.js.map +1 -0
  17. package/dist/cjs/converters/tool.js +69 -0
  18. package/dist/cjs/converters/tool.js.map +1 -0
  19. package/dist/cjs/guards.js +37 -0
  20. package/dist/cjs/guards.js.map +1 -0
  21. package/dist/{index.d.ts → cjs/index.d.ts} +7 -5
  22. package/dist/cjs/index.js +73 -0
  23. package/dist/cjs/index.js.map +1 -0
  24. package/dist/cjs/memory/base-chat-history.js +22 -0
  25. package/dist/cjs/memory/base-chat-history.js.map +1 -0
  26. package/dist/cjs/memory/base-chat-memory.js +17 -0
  27. package/dist/cjs/memory/base-chat-memory.js.map +1 -0
  28. package/dist/cjs/memory/windowed-chat-memory.js +48 -0
  29. package/dist/cjs/memory/windowed-chat-memory.js.map +1 -0
  30. package/dist/cjs/suppliers/supplyMemory.js +24 -0
  31. package/dist/cjs/suppliers/supplyMemory.js.map +1 -0
  32. package/dist/cjs/suppliers/supplyModel.d.ts +8 -0
  33. package/dist/cjs/suppliers/supplyModel.js +89 -0
  34. package/dist/cjs/suppliers/supplyModel.js.map +1 -0
  35. package/dist/cjs/typecheck.tsbuildinfo +1 -0
  36. package/dist/cjs/types/chat-model.js +13 -0
  37. package/dist/{types → cjs/types}/chat-model.js.map +1 -1
  38. package/dist/cjs/types/json.js +13 -0
  39. package/dist/{types → cjs/types}/json.js.map +1 -1
  40. package/dist/cjs/types/memory.js +13 -0
  41. package/dist/{types → cjs/types}/memory.js.map +1 -1
  42. package/dist/{types → cjs/types}/message.d.ts +9 -2
  43. package/dist/cjs/types/message.js +13 -0
  44. package/dist/{types → cjs/types}/message.js.map +1 -1
  45. package/dist/cjs/types/openai.js +13 -0
  46. package/dist/{types → cjs/types}/openai.js.map +1 -1
  47. package/dist/{types → cjs/types}/output.d.ts +26 -16
  48. package/dist/cjs/types/output.js +13 -0
  49. package/dist/{types → cjs/types}/output.js.map +1 -1
  50. package/dist/cjs/types/tool.js +13 -0
  51. package/dist/{types → cjs/types}/tool.js.map +1 -1
  52. package/dist/cjs/utils/embeddings-input-validation.js +38 -0
  53. package/dist/cjs/utils/embeddings-input-validation.js.map +1 -0
  54. package/dist/cjs/utils/failed-attempt-handler/n8nDefaultFailedAttemptHandler.js +40 -0
  55. package/dist/cjs/utils/failed-attempt-handler/n8nDefaultFailedAttemptHandler.js.map +1 -0
  56. package/dist/cjs/utils/failed-attempt-handler/n8nLlmFailedAttemptHandler.js +38 -0
  57. package/dist/cjs/utils/failed-attempt-handler/n8nLlmFailedAttemptHandler.js.map +1 -0
  58. package/dist/cjs/utils/helpers.js +63 -0
  59. package/dist/cjs/utils/helpers.js.map +1 -0
  60. package/dist/cjs/utils/http-proxy-agent.js +58 -0
  61. package/dist/cjs/utils/http-proxy-agent.js.map +1 -0
  62. package/dist/cjs/utils/log-ai-event.js +23 -0
  63. package/dist/cjs/utils/log-ai-event.js.map +1 -0
  64. package/dist/cjs/utils/log-wrapper.js +339 -0
  65. package/dist/cjs/utils/log-wrapper.js.map +1 -0
  66. package/dist/cjs/utils/n8n-binary-loader.js +169 -0
  67. package/dist/cjs/utils/n8n-binary-loader.js.map +1 -0
  68. package/dist/cjs/utils/n8n-json-loader.js +76 -0
  69. package/dist/cjs/utils/n8n-json-loader.js.map +1 -0
  70. package/dist/cjs/utils/n8n-llm-tracing.js +167 -0
  71. package/dist/cjs/utils/n8n-llm-tracing.js.map +1 -0
  72. package/dist/{utils → cjs/utils}/sse.d.ts +1 -1
  73. package/dist/cjs/utils/sse.js +107 -0
  74. package/dist/cjs/utils/sse.js.map +1 -0
  75. package/dist/cjs/utils/tokenizer/tiktoken.js +50 -0
  76. package/dist/cjs/utils/tokenizer/tiktoken.js.map +1 -0
  77. package/dist/cjs/utils/tokenizer/token-estimator.js +108 -0
  78. package/dist/cjs/utils/tokenizer/token-estimator.js.map +1 -0
  79. package/dist/esm/adapters/langchain-chat-model.d.ts +20 -0
  80. package/dist/{adapters → esm/adapters}/langchain-chat-model.js +65 -54
  81. package/dist/esm/adapters/langchain-chat-model.js.map +1 -0
  82. package/dist/esm/adapters/langchain-history.d.ts +12 -0
  83. package/dist/esm/adapters/langchain-history.js.map +1 -0
  84. package/dist/esm/adapters/langchain-memory.d.ts +11 -0
  85. package/dist/esm/adapters/langchain-memory.js.map +1 -0
  86. package/dist/esm/ai-node-sdk-version.d.ts +1 -0
  87. package/dist/esm/ai-node-sdk-version.js +5 -0
  88. package/dist/esm/ai-node-sdk-version.js.map +1 -0
  89. package/dist/esm/chat-model/base.d.ts +15 -0
  90. package/dist/esm/chat-model/base.js.map +1 -0
  91. package/dist/esm/converters/message.d.ts +7 -0
  92. package/dist/{converters → esm/converters}/message.js +41 -28
  93. package/dist/esm/converters/message.js.map +1 -0
  94. package/dist/esm/converters/tool.d.ts +5 -0
  95. package/dist/esm/converters/tool.js.map +1 -0
  96. package/dist/esm/guards.d.ts +8 -0
  97. package/dist/esm/guards.js.map +1 -0
  98. package/dist/esm/index.d.ts +30 -0
  99. package/dist/{index.js → esm/index.js} +13 -6
  100. package/dist/esm/index.js.map +1 -0
  101. package/dist/esm/memory/base-chat-history.d.ts +8 -0
  102. package/dist/esm/memory/base-chat-history.js.map +1 -0
  103. package/dist/esm/memory/base-chat-memory.d.ts +8 -0
  104. package/dist/esm/memory/base-chat-memory.js.map +1 -0
  105. package/dist/esm/memory/windowed-chat-memory.d.ts +14 -0
  106. package/dist/{memory → esm/memory}/windowed-chat-memory.js +2 -2
  107. package/dist/esm/memory/windowed-chat-memory.js.map +1 -0
  108. package/dist/esm/suppliers/supplyMemory.d.ts +6 -0
  109. package/dist/esm/suppliers/supplyMemory.js.map +1 -0
  110. package/dist/esm/suppliers/supplyModel.d.ts +8 -0
  111. package/dist/{suppliers → esm/suppliers}/supplyModel.js +2 -1
  112. package/dist/esm/suppliers/supplyModel.js.map +1 -0
  113. package/dist/esm/typecheck.tsbuildinfo +1 -0
  114. package/dist/esm/types/chat-model.d.ts +26 -0
  115. package/dist/esm/types/chat-model.js.map +1 -0
  116. package/dist/esm/types/json.d.ts +5 -0
  117. package/dist/esm/types/json.js.map +1 -0
  118. package/dist/esm/types/memory.d.ts +13 -0
  119. package/dist/esm/types/memory.js.map +1 -0
  120. package/dist/esm/types/message.d.ts +56 -0
  121. package/dist/esm/types/message.js.map +1 -0
  122. package/dist/esm/types/openai.d.ts +39 -0
  123. package/dist/esm/types/openai.js.map +1 -0
  124. package/dist/esm/types/output.d.ts +47 -0
  125. package/dist/esm/types/output.js.map +1 -0
  126. package/dist/esm/types/tool.d.ts +28 -0
  127. package/dist/esm/types/tool.js.map +1 -0
  128. package/dist/esm/utils/embeddings-input-validation.d.ts +3 -0
  129. package/dist/esm/utils/embeddings-input-validation.js.map +1 -0
  130. package/dist/esm/utils/failed-attempt-handler/n8nDefaultFailedAttemptHandler.d.ts +1 -0
  131. package/dist/esm/utils/failed-attempt-handler/n8nDefaultFailedAttemptHandler.js.map +1 -0
  132. package/dist/esm/utils/failed-attempt-handler/n8nLlmFailedAttemptHandler.d.ts +3 -0
  133. package/dist/esm/utils/failed-attempt-handler/n8nLlmFailedAttemptHandler.js.map +1 -0
  134. package/dist/esm/utils/helpers.d.ts +3 -0
  135. package/dist/esm/utils/helpers.js.map +1 -0
  136. package/dist/esm/utils/http-proxy-agent.d.ts +10 -0
  137. package/dist/esm/utils/http-proxy-agent.js.map +1 -0
  138. package/dist/esm/utils/log-ai-event.d.ts +2 -0
  139. package/dist/esm/utils/log-ai-event.js.map +1 -0
  140. package/dist/esm/utils/log-wrapper.d.ts +28 -0
  141. package/dist/esm/utils/log-wrapper.js.map +1 -0
  142. package/dist/esm/utils/n8n-binary-loader.d.ts +18 -0
  143. package/dist/esm/utils/n8n-binary-loader.js.map +1 -0
  144. package/dist/esm/utils/n8n-json-loader.d.ts +11 -0
  145. package/dist/esm/utils/n8n-json-loader.js.map +1 -0
  146. package/dist/esm/utils/n8n-llm-tracing.d.ts +46 -0
  147. package/dist/esm/utils/n8n-llm-tracing.js.map +1 -0
  148. package/dist/esm/utils/sse.d.ts +8 -0
  149. package/dist/{utils → esm/utils}/sse.js +17 -27
  150. package/dist/esm/utils/sse.js.map +1 -0
  151. package/dist/esm/utils/tokenizer/cl100k_base.json +1 -0
  152. package/dist/esm/utils/tokenizer/o200k_base.json +1 -0
  153. package/dist/esm/utils/tokenizer/tiktoken.d.ts +4 -0
  154. package/dist/esm/utils/tokenizer/tiktoken.js.map +1 -0
  155. package/dist/esm/utils/tokenizer/token-estimator.d.ts +4 -0
  156. package/dist/esm/utils/tokenizer/token-estimator.js.map +1 -0
  157. package/package.json +20 -12
  158. package/dist/adapters/langchain-chat-model.js.map +0 -1
  159. package/dist/adapters/langchain-history.js.map +0 -1
  160. package/dist/adapters/langchain-memory.js.map +0 -1
  161. package/dist/build.tsbuildinfo +0 -1
  162. package/dist/chat-model/base.js.map +0 -1
  163. package/dist/converters/message.js.map +0 -1
  164. package/dist/converters/tool.js.map +0 -1
  165. package/dist/guards.js.map +0 -1
  166. package/dist/index.js.map +0 -1
  167. package/dist/memory/base-chat-history.js.map +0 -1
  168. package/dist/memory/base-chat-memory.js.map +0 -1
  169. package/dist/memory/windowed-chat-memory.js.map +0 -1
  170. package/dist/suppliers/supplyMemory.js.map +0 -1
  171. package/dist/suppliers/supplyModel.d.ts +0 -15
  172. package/dist/suppliers/supplyModel.js.map +0 -1
  173. package/dist/utils/embeddings-input-validation.js.map +0 -1
  174. package/dist/utils/failed-attempt-handler/n8nDefaultFailedAttemptHandler.js.map +0 -1
  175. package/dist/utils/failed-attempt-handler/n8nLlmFailedAttemptHandler.js.map +0 -1
  176. package/dist/utils/helpers.js.map +0 -1
  177. package/dist/utils/http-proxy-agent.js.map +0 -1
  178. package/dist/utils/log-ai-event.js.map +0 -1
  179. package/dist/utils/log-wrapper.js.map +0 -1
  180. package/dist/utils/n8n-binary-loader.js.map +0 -1
  181. package/dist/utils/n8n-json-loader.js.map +0 -1
  182. package/dist/utils/n8n-llm-tracing.js.map +0 -1
  183. package/dist/utils/sse.js.map +0 -1
  184. package/dist/utils/tokenizer/tiktoken.js.map +0 -1
  185. package/dist/utils/tokenizer/token-estimator.js.map +0 -1
  186. /package/dist/{adapters → cjs/adapters}/langchain-history.d.ts +0 -0
  187. /package/dist/{adapters → cjs/adapters}/langchain-memory.d.ts +0 -0
  188. /package/dist/{chat-model → cjs/chat-model}/base.d.ts +0 -0
  189. /package/dist/{converters → cjs/converters}/tool.d.ts +0 -0
  190. /package/dist/{guards.d.ts → cjs/guards.d.ts} +0 -0
  191. /package/dist/{memory → cjs/memory}/base-chat-history.d.ts +0 -0
  192. /package/dist/{memory → cjs/memory}/base-chat-memory.d.ts +0 -0
  193. /package/dist/{memory → cjs/memory}/windowed-chat-memory.d.ts +0 -0
  194. /package/dist/{suppliers → cjs/suppliers}/supplyMemory.d.ts +0 -0
  195. /package/dist/{types → cjs/types}/chat-model.d.ts +0 -0
  196. /package/dist/{types → cjs/types}/json.d.ts +0 -0
  197. /package/dist/{types → cjs/types}/memory.d.ts +0 -0
  198. /package/dist/{types → cjs/types}/openai.d.ts +0 -0
  199. /package/dist/{types → cjs/types}/tool.d.ts +0 -0
  200. /package/dist/{utils → cjs/utils}/embeddings-input-validation.d.ts +0 -0
  201. /package/dist/{utils → cjs/utils}/failed-attempt-handler/n8nDefaultFailedAttemptHandler.d.ts +0 -0
  202. /package/dist/{utils → cjs/utils}/failed-attempt-handler/n8nLlmFailedAttemptHandler.d.ts +0 -0
  203. /package/dist/{utils → cjs/utils}/helpers.d.ts +0 -0
  204. /package/dist/{utils → cjs/utils}/http-proxy-agent.d.ts +0 -0
  205. /package/dist/{utils → cjs/utils}/log-ai-event.d.ts +0 -0
  206. /package/dist/{utils → cjs/utils}/log-wrapper.d.ts +0 -0
  207. /package/dist/{utils → cjs/utils}/n8n-binary-loader.d.ts +0 -0
  208. /package/dist/{utils → cjs/utils}/n8n-json-loader.d.ts +0 -0
  209. /package/dist/{utils → cjs/utils}/n8n-llm-tracing.d.ts +0 -0
  210. /package/dist/{utils → cjs/utils}/tokenizer/cl100k_base.json +0 -0
  211. /package/dist/{utils → cjs/utils}/tokenizer/o200k_base.json +0 -0
  212. /package/dist/{utils → cjs/utils}/tokenizer/tiktoken.d.ts +0 -0
  213. /package/dist/{utils → cjs/utils}/tokenizer/token-estimator.d.ts +0 -0
  214. /package/dist/{adapters → esm/adapters}/langchain-history.js +0 -0
  215. /package/dist/{adapters → esm/adapters}/langchain-memory.js +0 -0
  216. /package/dist/{chat-model → esm/chat-model}/base.js +0 -0
  217. /package/dist/{converters → esm/converters}/tool.js +0 -0
  218. /package/dist/{guards.js → esm/guards.js} +0 -0
  219. /package/dist/{memory → esm/memory}/base-chat-history.js +0 -0
  220. /package/dist/{memory → esm/memory}/base-chat-memory.js +0 -0
  221. /package/dist/{suppliers → esm/suppliers}/supplyMemory.js +0 -0
  222. /package/dist/{types → esm/types}/chat-model.js +0 -0
  223. /package/dist/{types → esm/types}/json.js +0 -0
  224. /package/dist/{types → esm/types}/memory.js +0 -0
  225. /package/dist/{types → esm/types}/message.js +0 -0
  226. /package/dist/{types → esm/types}/openai.js +0 -0
  227. /package/dist/{types → esm/types}/output.js +0 -0
  228. /package/dist/{types → esm/types}/tool.js +0 -0
  229. /package/dist/{utils → esm/utils}/embeddings-input-validation.js +0 -0
  230. /package/dist/{utils → esm/utils}/failed-attempt-handler/n8nDefaultFailedAttemptHandler.js +0 -0
  231. /package/dist/{utils → esm/utils}/failed-attempt-handler/n8nLlmFailedAttemptHandler.js +0 -0
  232. /package/dist/{utils → esm/utils}/helpers.js +0 -0
  233. /package/dist/{utils → esm/utils}/http-proxy-agent.js +0 -0
  234. /package/dist/{utils → esm/utils}/log-ai-event.js +0 -0
  235. /package/dist/{utils → esm/utils}/log-wrapper.js +0 -0
  236. /package/dist/{utils → esm/utils}/n8n-binary-loader.js +0 -0
  237. /package/dist/{utils → esm/utils}/n8n-json-loader.js +0 -0
  238. /package/dist/{utils → esm/utils}/n8n-llm-tracing.js +0 -0
  239. /package/dist/{utils → esm/utils}/tokenizer/tiktoken.js +0 -0
  240. /package/dist/{utils → esm/utils}/tokenizer/token-estimator.js +0 -0
@@ -0,0 +1,37 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "@langchain/core/chat_history", "../converters/message"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.LangchainHistoryAdapter = void 0;
13
+ const chat_history_1 = require("@langchain/core/chat_history");
14
+ const message_1 = require("../converters/message");
15
+ class LangchainHistoryAdapter extends chat_history_1.BaseListChatMessageHistory {
16
+ constructor(history) {
17
+ super();
18
+ this.history = history;
19
+ this.lc_namespace = ['n8n', 'ai-utilities'];
20
+ }
21
+ async getMessages() {
22
+ const messages = await this.history.getMessages();
23
+ return messages.map(message_1.toLcMessage);
24
+ }
25
+ async addMessage(message) {
26
+ await this.history.addMessage((0, message_1.fromLcMessage)(message));
27
+ }
28
+ async addMessages(messages) {
29
+ await this.history.addMessages(messages.map(message_1.fromLcMessage));
30
+ }
31
+ async clear() {
32
+ await this.history.clear();
33
+ }
34
+ }
35
+ exports.LangchainHistoryAdapter = LangchainHistoryAdapter;
36
+ });
37
+ //# sourceMappingURL=langchain-history.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langchain-history.js","sourceRoot":"","sources":["../../../src/adapters/langchain-history.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,+DAA0E;IAG1E,mDAAmE;IAGnE,MAAa,uBAAwB,SAAQ,yCAA0B;QAGtE,YAA6B,OAAoB;YAChD,KAAK,EAAE,CAAC;YADoB,YAAO,GAAP,OAAO,CAAa;YAFjD,iBAAY,GAAG,CAAC,KAAK,EAAE,cAAc,CAAC,CAAC;QAIvC,CAAC;QAED,KAAK,CAAC,WAAW;YAChB,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;YAClD,OAAO,QAAQ,CAAC,GAAG,CAAC,qBAAW,CAAC,CAAC;QAClC,CAAC;QAED,KAAK,CAAC,UAAU,CAAC,OAAoB;YACpC,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAA,uBAAa,EAAC,OAAO,CAAC,CAAC,CAAC;QACvD,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,QAAuB;YACxC,MAAM,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,uBAAa,CAAC,CAAC,CAAC;QAC7D,CAAC;QAED,KAAK,CAAC,KAAK;YACV,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;QAC5B,CAAC;KACD;IAvBD,0DAuBC"}
@@ -0,0 +1,46 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports", "@langchain/community/memory/chat_memory", "./langchain-history", "../converters/message"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.LangchainMemoryAdapter = void 0;
13
+ const chat_memory_1 = require("@langchain/community/memory/chat_memory");
14
+ const langchain_history_1 = require("./langchain-history");
15
+ const message_1 = require("../converters/message");
16
+ class LangchainMemoryAdapter extends chat_memory_1.BaseChatMemory {
17
+ constructor(memory) {
18
+ super({
19
+ chatHistory: new langchain_history_1.LangchainHistoryAdapter(memory.chatHistory),
20
+ returnMessages: true,
21
+ inputKey: 'input',
22
+ outputKey: 'output',
23
+ });
24
+ this.memory = memory;
25
+ }
26
+ get memoryKeys() {
27
+ return ['chat_history'];
28
+ }
29
+ async loadMemoryVariables(_values) {
30
+ const messages = await this.memory.loadMessages();
31
+ return {
32
+ chat_history: messages.map(message_1.toLcMessage),
33
+ };
34
+ }
35
+ async saveContext(inputValues, outputValues) {
36
+ const input = String(inputValues.input ?? '');
37
+ const output = String(outputValues.output ?? '');
38
+ await this.memory.saveTurn(input, output);
39
+ }
40
+ async clear() {
41
+ await this.memory.clear();
42
+ }
43
+ }
44
+ exports.LangchainMemoryAdapter = LangchainMemoryAdapter;
45
+ });
46
+ //# sourceMappingURL=langchain-memory.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"langchain-memory.js","sourceRoot":"","sources":["../../../src/adapters/langchain-memory.ts"],"names":[],"mappings":";;;;;;;;;;;;IAAA,yEAAoG;IAGpG,2DAA8D;IAC9D,mDAAoD;IAGpD,MAAa,sBAAuB,SAAQ,4BAAuB;QAClE,YAA6B,MAAkB;YAC9C,KAAK,CAAC;gBACL,WAAW,EAAE,IAAI,2CAAuB,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC5D,cAAc,EAAE,IAAI;gBACpB,QAAQ,EAAE,OAAO;gBACjB,SAAS,EAAE,QAAQ;aACnB,CAAC,CAAC;YANyB,WAAM,GAAN,MAAM,CAAY;QAO/C,CAAC;QAED,IAAI,UAAU;YACb,OAAO,CAAC,cAAc,CAAC,CAAC;QACzB,CAAC;QAED,KAAK,CAAC,mBAAmB,CAAC,OAAoB;YAC7C,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC;YAClD,OAAO;gBACN,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,qBAAW,CAAC;aACvC,CAAC;QACH,CAAC;QAED,KAAK,CAAC,WAAW,CAAC,WAAwB,EAAE,YAA0B;YACrE,MAAM,KAAK,GAAG,MAAM,CAAC,WAAW,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;YAC9C,MAAM,MAAM,GAAG,MAAM,CAAC,YAAY,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;YACjD,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;QAC3C,CAAC;QAED,KAAK,CAAC,KAAK;YACV,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAC3B,CAAC;KACD;IA9BD,wDA8BC"}
@@ -0,0 +1 @@
1
+ export declare const AI_NODE_SDK_VERSION: number;
@@ -0,0 +1,15 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.AI_NODE_SDK_VERSION = void 0;
13
+ exports.AI_NODE_SDK_VERSION = 1;
14
+ });
15
+ //# sourceMappingURL=ai-node-sdk-version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ai-node-sdk-version.js","sourceRoot":"","sources":["../../src/ai-node-sdk-version.ts"],"names":[],"mappings":";;;;;;;;;;;;IAEa,QAAA,mBAAmB,GAAW,CAAC,CAAC"}
@@ -0,0 +1,35 @@
1
+ (function (factory) {
2
+ if (typeof module === "object" && typeof module.exports === "object") {
3
+ var v = factory(require, exports);
4
+ if (v !== undefined) module.exports = v;
5
+ }
6
+ else if (typeof define === "function" && define.amd) {
7
+ define(["require", "exports"], factory);
8
+ }
9
+ })(function (require, exports) {
10
+ "use strict";
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.BaseChatModel = void 0;
13
+ class BaseChatModel {
14
+ constructor(provider, modelId, defaultConfig, tools = []) {
15
+ this.provider = provider;
16
+ this.modelId = modelId;
17
+ this.defaultConfig = defaultConfig;
18
+ this.tools = tools;
19
+ }
20
+ withTools(tools) {
21
+ const newInstance = Object.create(Object.getPrototypeOf(this));
22
+ Object.assign(newInstance, this);
23
+ newInstance.tools = [...this.tools, ...tools];
24
+ return newInstance;
25
+ }
26
+ mergeConfig(config) {
27
+ return {
28
+ ...this.defaultConfig,
29
+ ...config,
30
+ };
31
+ }
32
+ }
33
+ exports.BaseChatModel = BaseChatModel;
34
+ });
35
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../src/chat-model/base.ts"],"names":[],"mappings":";;;;;;;;;;;;IAKA,MAAsB,aAAa;QAGlC,YACQ,QAAgB,EAChB,OAAe,EACf,aAAuB,EACpB,QAAgB,EAAE;YAHrB,aAAQ,GAAR,QAAQ,CAAQ;YAChB,YAAO,GAAP,OAAO,CAAQ;YACf,kBAAa,GAAb,aAAa,CAAU;YACpB,UAAK,GAAL,KAAK,CAAa;QAC1B,CAAC;QAUJ,SAAS,CAAC,KAAa;YAEtB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAW,CAAC,CAAC;YACzE,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YACjC,WAAW,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC;YAC9C,OAAO,WAAW,CAAC;QACpB,CAAC;QAKS,WAAW,CAAC,MAAgB;YACrC,OAAO;gBACN,GAAG,IAAI,CAAC,aAAa;gBACrB,GAAG,MAAM;aACT,CAAC;QACH,CAAC;KACD;IAnCD,sCAmCC"}
@@ -1,5 +1,7 @@
1
1
  import * as LangchainMessages from '@langchain/core/messages';
2
2
  import type * as N8nMessages from '../types/message';
3
3
  import type { Message } from '../types/message';
4
+ export declare function fromLcContent(content: string | LangchainMessages.ContentBlock | LangchainMessages.ContentBlock[]): N8nMessages.MessageContent[];
4
5
  export declare function fromLcMessage(msg: LangchainMessages.BaseMessage): N8nMessages.Message;
6
+ export declare function toLcContent(block: N8nMessages.MessageContent): LangchainMessages.ContentBlock;
5
7
  export declare function toLcMessage(message: Message): LangchainMessages.BaseMessage;
@@ -0,0 +1,388 @@
1
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
2
+ if (k2 === undefined) k2 = k;
3
+ var desc = Object.getOwnPropertyDescriptor(m, k);
4
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
5
+ desc = { enumerable: true, get: function() { return m[k]; } };
6
+ }
7
+ Object.defineProperty(o, k2, desc);
8
+ }) : (function(o, m, k, k2) {
9
+ if (k2 === undefined) k2 = k;
10
+ o[k2] = m[k];
11
+ }));
12
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
13
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
14
+ }) : function(o, v) {
15
+ o["default"] = v;
16
+ });
17
+ var __importStar = (this && this.__importStar) || (function () {
18
+ var ownKeys = function(o) {
19
+ ownKeys = Object.getOwnPropertyNames || function (o) {
20
+ var ar = [];
21
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
22
+ return ar;
23
+ };
24
+ return ownKeys(o);
25
+ };
26
+ return function (mod) {
27
+ if (mod && mod.__esModule) return mod;
28
+ var result = {};
29
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
30
+ __setModuleDefault(result, mod);
31
+ return result;
32
+ };
33
+ })();
34
+ (function (factory) {
35
+ if (typeof module === "object" && typeof module.exports === "object") {
36
+ var v = factory(require, exports);
37
+ if (v !== undefined) module.exports = v;
38
+ }
39
+ else if (typeof define === "function" && define.amd) {
40
+ define(["require", "exports", "@langchain/core/messages", "n8n-workflow"], factory);
41
+ }
42
+ })(function (require, exports) {
43
+ "use strict";
44
+ Object.defineProperty(exports, "__esModule", { value: true });
45
+ exports.fromLcContent = fromLcContent;
46
+ exports.fromLcMessage = fromLcMessage;
47
+ exports.toLcContent = toLcContent;
48
+ exports.toLcMessage = toLcMessage;
49
+ const LangchainMessages = __importStar(require("@langchain/core/messages"));
50
+ const n8n_workflow_1 = require("n8n-workflow");
51
+ function isN8nTextBlock(block) {
52
+ return block.type === 'text';
53
+ }
54
+ function isN8nReasoningBlock(block) {
55
+ return block.type === 'reasoning';
56
+ }
57
+ function isN8nFileBlock(block) {
58
+ return block.type === 'file';
59
+ }
60
+ function isN8nToolCallBlock(block) {
61
+ return block.type === 'tool-call';
62
+ }
63
+ function isN8nInvalidToolCallBlock(block) {
64
+ return block.type === 'invalid-tool-call';
65
+ }
66
+ function isN8nToolResultBlock(block) {
67
+ return block.type === 'tool-result';
68
+ }
69
+ function isN8nCitationBlock(block) {
70
+ return block.type === 'citation';
71
+ }
72
+ function isN8nProviderBlock(block) {
73
+ return block.type === 'provider';
74
+ }
75
+ function fromLcRole(role) {
76
+ switch (role) {
77
+ case 'system':
78
+ return 'system';
79
+ case 'user':
80
+ return 'user';
81
+ case 'assistant':
82
+ return 'assistant';
83
+ case 'tool':
84
+ return 'tool';
85
+ default:
86
+ return 'user';
87
+ }
88
+ }
89
+ function isTextBlock(block) {
90
+ return block.type === 'text';
91
+ }
92
+ function isReasoningBlock(block) {
93
+ return block.type === 'reasoning';
94
+ }
95
+ function isFileBlock(block) {
96
+ return (block.type === 'file' ||
97
+ block.type === 'audio' ||
98
+ block.type === 'video' ||
99
+ block.type === 'image' ||
100
+ block.type === 'text-plain');
101
+ }
102
+ function isToolCallBlock(block) {
103
+ return block.type === 'tool_call';
104
+ }
105
+ function isInvalidToolCallBlock(block) {
106
+ return block.type === 'invalid_tool_call';
107
+ }
108
+ function isToolResultBlock(block) {
109
+ return block.type === 'server_tool_call_result';
110
+ }
111
+ function isCitationBlock(block) {
112
+ return (typeof block === 'object' && block !== null && 'type' in block && block.type === 'citation');
113
+ }
114
+ function isNonStandardBlock(block) {
115
+ return block.type === 'non_standard';
116
+ }
117
+ function fromLcContent(content) {
118
+ if (typeof content === 'string') {
119
+ return [
120
+ {
121
+ type: 'text',
122
+ text: content,
123
+ },
124
+ ];
125
+ }
126
+ const blocks = Array.isArray(content) ? content : [content];
127
+ return blocks
128
+ .map((block) => {
129
+ let content = null;
130
+ if (isTextBlock(block)) {
131
+ content = {
132
+ type: 'text',
133
+ text: block.text,
134
+ };
135
+ }
136
+ else if (isReasoningBlock(block)) {
137
+ content = {
138
+ type: 'reasoning',
139
+ text: block.reasoning,
140
+ };
141
+ }
142
+ else if (isFileBlock(block)) {
143
+ let metadata = {};
144
+ if (block.metadata) {
145
+ metadata = block.metadata;
146
+ }
147
+ if ('url' in block) {
148
+ metadata.url = block.url;
149
+ }
150
+ if ('fileId' in block) {
151
+ metadata.fileId = block.fileId;
152
+ }
153
+ content = {
154
+ type: 'file',
155
+ mediaType: block.mimeType,
156
+ data: block.data,
157
+ providerMetadata: Object.keys(metadata).length > 0 ? metadata : undefined,
158
+ };
159
+ }
160
+ else if (isToolCallBlock(block)) {
161
+ content = {
162
+ type: 'tool-call',
163
+ toolCallId: block.id,
164
+ toolName: block.name,
165
+ input: JSON.stringify(block.args),
166
+ };
167
+ }
168
+ else if (isInvalidToolCallBlock(block)) {
169
+ content = {
170
+ type: 'invalid-tool-call',
171
+ toolCallId: block.id,
172
+ error: block.error,
173
+ args: block.args,
174
+ name: block.name,
175
+ };
176
+ }
177
+ else if (isToolResultBlock(block)) {
178
+ content = {
179
+ type: 'tool-result',
180
+ toolCallId: block.toolCallId,
181
+ result: block.output,
182
+ isError: block.status === 'error',
183
+ };
184
+ }
185
+ else if (isCitationBlock(block)) {
186
+ content = {
187
+ type: 'citation',
188
+ source: block.source,
189
+ url: block.url,
190
+ title: block.title,
191
+ startIndex: block.startIndex,
192
+ endIndex: block.endIndex,
193
+ text: block.citedText,
194
+ };
195
+ }
196
+ else if (isNonStandardBlock(block)) {
197
+ content = {
198
+ type: 'provider',
199
+ value: block.value,
200
+ };
201
+ }
202
+ return content;
203
+ })
204
+ .filter((content) => content !== null);
205
+ }
206
+ function fromLcMessage(msg) {
207
+ if (LangchainMessages.ToolMessage.isInstance(msg)) {
208
+ const result = typeof msg.content === 'string' ? msg.content : fromLcContent(msg.content);
209
+ return {
210
+ role: 'tool',
211
+ content: [
212
+ {
213
+ type: 'tool-result',
214
+ toolCallId: msg.tool_call_id,
215
+ result,
216
+ isError: msg.status === 'error',
217
+ providerMetadata: msg.metadata,
218
+ },
219
+ ],
220
+ id: msg.id,
221
+ name: msg.name,
222
+ };
223
+ }
224
+ if (LangchainMessages.AIMessage.isInstance(msg)) {
225
+ const content = fromLcContent(msg.content);
226
+ const toolsCalls = msg.tool_calls;
227
+ if (toolsCalls?.length) {
228
+ const mappedToolsCalls = toolsCalls.map((toolCall) => ({
229
+ type: 'tool-call',
230
+ toolCallId: toolCall.id,
231
+ toolName: toolCall.name,
232
+ input: JSON.stringify(toolCall.args),
233
+ providerMetadata: msg.response_metadata,
234
+ }));
235
+ content.push(...mappedToolsCalls);
236
+ }
237
+ return {
238
+ role: 'assistant',
239
+ content,
240
+ id: msg.id,
241
+ name: msg.name,
242
+ };
243
+ }
244
+ if (LangchainMessages.SystemMessage.isInstance(msg)) {
245
+ return {
246
+ role: 'system',
247
+ content: fromLcContent(msg.content),
248
+ id: msg.id,
249
+ name: msg.name,
250
+ };
251
+ }
252
+ if (LangchainMessages.HumanMessage.isInstance(msg)) {
253
+ return {
254
+ role: 'user',
255
+ content: fromLcContent(msg.content),
256
+ id: msg.id,
257
+ name: msg.name,
258
+ };
259
+ }
260
+ if (LangchainMessages.BaseMessage.isInstance(msg)) {
261
+ return {
262
+ role: fromLcRole(msg.type),
263
+ content: fromLcContent(msg.content),
264
+ id: msg.id,
265
+ name: msg.name,
266
+ };
267
+ }
268
+ throw new Error(`Provided message is not a valid Langchain message: ${JSON.stringify(msg)}`);
269
+ }
270
+ function toLcContent(block) {
271
+ if (isN8nTextBlock(block)) {
272
+ return { type: 'text', text: block.text };
273
+ }
274
+ if (isN8nReasoningBlock(block)) {
275
+ return { type: 'reasoning', reasoning: block.text };
276
+ }
277
+ if (isN8nFileBlock(block)) {
278
+ const { url, fileId, ...rest } = block.providerMetadata ?? {};
279
+ return {
280
+ type: 'file',
281
+ mimeType: block.mediaType ?? 'application/octet-stream',
282
+ data: block.data,
283
+ ...(url ? { url } : {}),
284
+ ...(fileId ? { fileId } : {}),
285
+ ...(Object.keys(rest).length > 0 ? { metadata: rest } : {}),
286
+ };
287
+ }
288
+ if (isN8nToolCallBlock(block)) {
289
+ return {
290
+ type: 'tool_call',
291
+ id: block.toolCallId,
292
+ name: block.toolName,
293
+ args: (0, n8n_workflow_1.jsonParse)(block.input, { fallbackValue: {} }),
294
+ };
295
+ }
296
+ if (isN8nInvalidToolCallBlock(block)) {
297
+ return {
298
+ type: 'invalid_tool_call',
299
+ id: block.toolCallId,
300
+ error: block.error,
301
+ args: block.args,
302
+ name: block.name,
303
+ };
304
+ }
305
+ if (isN8nToolResultBlock(block)) {
306
+ return {
307
+ type: 'server_tool_call_result',
308
+ toolCallId: block.toolCallId,
309
+ output: block.result,
310
+ status: block.isError ? 'error' : 'success',
311
+ };
312
+ }
313
+ if (isN8nCitationBlock(block)) {
314
+ return {
315
+ type: 'citation',
316
+ source: block.source,
317
+ url: block.url,
318
+ title: block.title,
319
+ startIndex: block.startIndex,
320
+ endIndex: block.endIndex,
321
+ citedText: block.text,
322
+ };
323
+ }
324
+ if (isN8nProviderBlock(block)) {
325
+ return {
326
+ type: 'non_standard',
327
+ value: block.value,
328
+ };
329
+ }
330
+ throw new Error(`Failed to convert to Langchain content block: ${JSON.stringify(block)}`);
331
+ }
332
+ function toLcMessage(message) {
333
+ const lcContent = message.content.map(toLcContent);
334
+ switch (message.role) {
335
+ case 'system':
336
+ return new LangchainMessages.SystemMessage({
337
+ content: lcContent,
338
+ id: message.id,
339
+ name: message.name,
340
+ });
341
+ case 'user':
342
+ return new LangchainMessages.HumanMessage({
343
+ content: lcContent,
344
+ id: message.id,
345
+ name: message.name,
346
+ });
347
+ case 'assistant': {
348
+ const toolCalls = message.content
349
+ .filter(isN8nToolCallBlock)
350
+ .map((c) => ({
351
+ type: 'tool_call',
352
+ id: c.toolCallId,
353
+ name: c.toolName,
354
+ args: (0, n8n_workflow_1.jsonParse)(c.input, { fallbackValue: {} }),
355
+ }));
356
+ const nonToolContent = lcContent.filter((c) => c.type !== 'tool_call');
357
+ return new LangchainMessages.AIMessage({
358
+ content: nonToolContent,
359
+ id: message.id,
360
+ name: message.name,
361
+ tool_calls: toolCalls.length > 0 ? toolCalls : undefined,
362
+ });
363
+ }
364
+ case 'tool': {
365
+ const toolResult = message.content.find(isN8nToolResultBlock);
366
+ if (!toolResult) {
367
+ throw new Error('Tool message is missing a tool-result content block');
368
+ }
369
+ const content = typeof toolResult.result === 'string'
370
+ ? toolResult.result
371
+ : JSON.stringify(toolResult.result);
372
+ return new LangchainMessages.ToolMessage({
373
+ content,
374
+ tool_call_id: toolResult.toolCallId,
375
+ name: message.name,
376
+ status: toolResult.isError ? 'error' : 'success',
377
+ });
378
+ }
379
+ default:
380
+ return new LangchainMessages.HumanMessage({
381
+ content: lcContent,
382
+ id: message.id,
383
+ name: message.name,
384
+ });
385
+ }
386
+ }
387
+ });
388
+ //# sourceMappingURL=message.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/converters/message.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,69 @@
1
+ var __importDefault = (this && this.__importDefault) || function (mod) {
2
+ return (mod && mod.__esModule) ? mod : { "default": mod };
3
+ };
4
+ (function (factory) {
5
+ if (typeof module === "object" && typeof module.exports === "object") {
6
+ var v = factory(require, exports);
7
+ if (v !== undefined) module.exports = v;
8
+ }
9
+ else if (typeof define === "function" && define.amd) {
10
+ define(["require", "exports", "zod", "zod-to-json-schema"], factory);
11
+ }
12
+ })(function (require, exports) {
13
+ "use strict";
14
+ Object.defineProperty(exports, "__esModule", { value: true });
15
+ exports.fromLcTool = fromLcTool;
16
+ exports.getParametersJsonSchema = getParametersJsonSchema;
17
+ const zod_1 = require("zod");
18
+ const zod_to_json_schema_1 = __importDefault(require("zod-to-json-schema"));
19
+ function fromLcTool(tool) {
20
+ if ('schema' in tool && 'invoke' in tool) {
21
+ const structuredTool = tool;
22
+ return {
23
+ type: 'function',
24
+ name: structuredTool.name,
25
+ description: structuredTool.description,
26
+ inputSchema: structuredTool.schema,
27
+ };
28
+ }
29
+ if ('schema' in tool && 'func' in tool) {
30
+ const structuredTool = tool;
31
+ return {
32
+ type: 'function',
33
+ name: structuredTool.name,
34
+ description: structuredTool.description,
35
+ inputSchema: structuredTool.schema,
36
+ };
37
+ }
38
+ if ('name' in tool && 'schema' in tool) {
39
+ const structuredTool = tool;
40
+ return {
41
+ type: 'function',
42
+ name: structuredTool.name,
43
+ description: structuredTool.description,
44
+ inputSchema: structuredTool.schema,
45
+ };
46
+ }
47
+ if ('function' in tool && 'type' in tool && tool.type === 'function') {
48
+ const functionTool = tool.function;
49
+ return {
50
+ type: 'function',
51
+ name: functionTool.name,
52
+ description: functionTool.description,
53
+ inputSchema: functionTool.parameters,
54
+ };
55
+ }
56
+ throw new Error(`Unable to convert tool to N8nTool: ${JSON.stringify(tool)}`);
57
+ }
58
+ function getParametersJsonSchema(tool) {
59
+ const schema = tool.inputSchema;
60
+ if (schema instanceof zod_1.ZodSchema) {
61
+ if ('toJSONSchema' in schema && typeof schema.toJSONSchema === 'function') {
62
+ return schema.toJSONSchema();
63
+ }
64
+ return (0, zod_to_json_schema_1.default)(schema);
65
+ }
66
+ return schema;
67
+ }
68
+ });
69
+ //# sourceMappingURL=tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../../src/converters/tool.ts"],"names":[],"mappings":";;;;;;;;;;;;;;IAYA,gCAuCC;IAED,0DASC;IA1DD,6BAAiD;IACjD,4EAAiD;IAOjD,SAAgB,UAAU,CAAC,IAAwC;QAClE,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YAC1C,MAAM,cAAc,GAAG,IAAqC,CAAC;YAC7D,OAAO;gBACN,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,cAAc,CAAC,IAAI;gBACzB,WAAW,EAAE,cAAc,CAAC,WAAW;gBACvC,WAAW,EAAE,cAAc,CAAC,MAAkC;aAC9D,CAAC;QACH,CAAC;QACD,IAAI,QAAQ,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;YACxC,MAAM,cAAc,GAAG,IAA4C,CAAC;YACpE,OAAO;gBACN,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,cAAc,CAAC,IAAI;gBACzB,WAAW,EAAE,cAAc,CAAC,WAAW;gBACvC,WAAW,EAAE,cAAc,CAAC,MAAkC;aAC9D,CAAC;QACH,CAAC;QACD,IAAI,MAAM,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;YACxC,MAAM,cAAc,GAAG,IAAqC,CAAC;YAC7D,OAAO;gBACN,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,cAAc,CAAC,IAAI;gBACzB,WAAW,EAAE,cAAc,CAAC,WAAW;gBACvC,WAAW,EAAE,cAAc,CAAC,MAAkC;aAC9D,CAAC;QACH,CAAC;QACD,IAAI,UAAU,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;YACtE,MAAM,YAAY,GAAG,IAAI,CAAC,QAA8B,CAAC;YACzD,OAAO;gBACN,IAAI,EAAE,UAAU;gBAChB,IAAI,EAAE,YAAY,CAAC,IAAI;gBACvB,WAAW,EAAE,YAAY,CAAC,WAAW;gBACrC,WAAW,EAAE,YAAY,CAAC,UAAyB;aACnD,CAAC;QACH,CAAC;QAED,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC/E,CAAC;IAED,SAAgB,uBAAuB,CAAC,IAA2B;QAClE,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;QAChC,IAAI,MAAM,YAAY,eAAS,EAAE,CAAC;YACjC,IAAI,cAAc,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;gBAC3E,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;YAC9B,CAAC;YACD,OAAO,IAAA,4BAAe,EAAC,MAAM,CAAgB,CAAC;QAC/C,CAAC;QACD,OAAO,MAAM,CAAC;IACf,CAAC"}