@n8n/ai-utilities 0.2.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 (105) hide show
  1. package/LICENSE.md +88 -0
  2. package/README.md +468 -0
  3. package/dist/adapters/langchain-chat-model.d.ts +20 -0
  4. package/dist/adapters/langchain-chat-model.js +180 -0
  5. package/dist/adapters/langchain-chat-model.js.map +1 -0
  6. package/dist/adapters/langchain-history.d.ts +12 -0
  7. package/dist/adapters/langchain-history.js +27 -0
  8. package/dist/adapters/langchain-history.js.map +1 -0
  9. package/dist/adapters/langchain-memory.d.ts +11 -0
  10. package/dist/adapters/langchain-memory.js +36 -0
  11. package/dist/adapters/langchain-memory.js.map +1 -0
  12. package/dist/build.tsbuildinfo +1 -0
  13. package/dist/chat-model/base.d.ts +15 -0
  14. package/dist/chat-model/base.js +25 -0
  15. package/dist/chat-model/base.js.map +1 -0
  16. package/dist/converters/message.d.ts +5 -0
  17. package/dist/converters/message.js +365 -0
  18. package/dist/converters/message.js.map +1 -0
  19. package/dist/converters/tool.d.ts +5 -0
  20. package/dist/converters/tool.js +59 -0
  21. package/dist/converters/tool.js.map +1 -0
  22. package/dist/guards.d.ts +8 -0
  23. package/dist/guards.js +27 -0
  24. package/dist/guards.js.map +1 -0
  25. package/dist/index.d.ts +28 -0
  26. package/dist/index.js +56 -0
  27. package/dist/index.js.map +1 -0
  28. package/dist/memory/base-chat-history.d.ts +8 -0
  29. package/dist/memory/base-chat-history.js +12 -0
  30. package/dist/memory/base-chat-history.js.map +1 -0
  31. package/dist/memory/base-chat-memory.d.ts +8 -0
  32. package/dist/memory/base-chat-memory.js +7 -0
  33. package/dist/memory/base-chat-memory.js.map +1 -0
  34. package/dist/memory/windowed-chat-memory.d.ts +14 -0
  35. package/dist/memory/windowed-chat-memory.js +38 -0
  36. package/dist/memory/windowed-chat-memory.js.map +1 -0
  37. package/dist/suppliers/supplyMemory.d.ts +6 -0
  38. package/dist/suppliers/supplyMemory.js +14 -0
  39. package/dist/suppliers/supplyMemory.js.map +1 -0
  40. package/dist/suppliers/supplyModel.d.ts +15 -0
  41. package/dist/suppliers/supplyModel.js +78 -0
  42. package/dist/suppliers/supplyModel.js.map +1 -0
  43. package/dist/types/chat-model.d.ts +26 -0
  44. package/dist/types/chat-model.js +3 -0
  45. package/dist/types/chat-model.js.map +1 -0
  46. package/dist/types/json.d.ts +5 -0
  47. package/dist/types/json.js +3 -0
  48. package/dist/types/json.js.map +1 -0
  49. package/dist/types/memory.d.ts +13 -0
  50. package/dist/types/memory.js +3 -0
  51. package/dist/types/memory.js.map +1 -0
  52. package/dist/types/message.d.ts +49 -0
  53. package/dist/types/message.js +3 -0
  54. package/dist/types/message.js.map +1 -0
  55. package/dist/types/openai.d.ts +39 -0
  56. package/dist/types/openai.js +3 -0
  57. package/dist/types/openai.js.map +1 -0
  58. package/dist/types/output.d.ts +37 -0
  59. package/dist/types/output.js +3 -0
  60. package/dist/types/output.js.map +1 -0
  61. package/dist/types/tool.d.ts +28 -0
  62. package/dist/types/tool.js +3 -0
  63. package/dist/types/tool.js.map +1 -0
  64. package/dist/utils/embeddings-input-validation.d.ts +3 -0
  65. package/dist/utils/embeddings-input-validation.js +28 -0
  66. package/dist/utils/embeddings-input-validation.js.map +1 -0
  67. package/dist/utils/failed-attempt-handler/n8nDefaultFailedAttemptHandler.d.ts +1 -0
  68. package/dist/utils/failed-attempt-handler/n8nDefaultFailedAttemptHandler.js +30 -0
  69. package/dist/utils/failed-attempt-handler/n8nDefaultFailedAttemptHandler.js.map +1 -0
  70. package/dist/utils/failed-attempt-handler/n8nLlmFailedAttemptHandler.d.ts +3 -0
  71. package/dist/utils/failed-attempt-handler/n8nLlmFailedAttemptHandler.js +28 -0
  72. package/dist/utils/failed-attempt-handler/n8nLlmFailedAttemptHandler.js.map +1 -0
  73. package/dist/utils/helpers.d.ts +3 -0
  74. package/dist/utils/helpers.js +53 -0
  75. package/dist/utils/helpers.js.map +1 -0
  76. package/dist/utils/http-proxy-agent.d.ts +10 -0
  77. package/dist/utils/http-proxy-agent.js +48 -0
  78. package/dist/utils/http-proxy-agent.js.map +1 -0
  79. package/dist/utils/log-ai-event.d.ts +2 -0
  80. package/dist/utils/log-ai-event.js +13 -0
  81. package/dist/utils/log-ai-event.js.map +1 -0
  82. package/dist/utils/log-wrapper.d.ts +28 -0
  83. package/dist/utils/log-wrapper.js +329 -0
  84. package/dist/utils/log-wrapper.js.map +1 -0
  85. package/dist/utils/n8n-binary-loader.d.ts +18 -0
  86. package/dist/utils/n8n-binary-loader.js +159 -0
  87. package/dist/utils/n8n-binary-loader.js.map +1 -0
  88. package/dist/utils/n8n-json-loader.d.ts +11 -0
  89. package/dist/utils/n8n-json-loader.js +66 -0
  90. package/dist/utils/n8n-json-loader.js.map +1 -0
  91. package/dist/utils/n8n-llm-tracing.d.ts +46 -0
  92. package/dist/utils/n8n-llm-tracing.js +157 -0
  93. package/dist/utils/n8n-llm-tracing.js.map +1 -0
  94. package/dist/utils/sse.d.ts +8 -0
  95. package/dist/utils/sse.js +107 -0
  96. package/dist/utils/sse.js.map +1 -0
  97. package/dist/utils/tokenizer/cl100k_base.json +1 -0
  98. package/dist/utils/tokenizer/o200k_base.json +1 -0
  99. package/dist/utils/tokenizer/tiktoken.d.ts +4 -0
  100. package/dist/utils/tokenizer/tiktoken.js +40 -0
  101. package/dist/utils/tokenizer/tiktoken.js.map +1 -0
  102. package/dist/utils/tokenizer/token-estimator.d.ts +4 -0
  103. package/dist/utils/tokenizer/token-estimator.js +98 -0
  104. package/dist/utils/tokenizer/token-estimator.js.map +1 -0
  105. package/package.json +51 -0
@@ -0,0 +1,15 @@
1
+ import type { ChatModel, ChatModelConfig } from '../types/chat-model';
2
+ import type { Message } from '../types/message';
3
+ import type { GenerateResult, StreamChunk } from '../types/output';
4
+ import type { Tool } from '../types/tool';
5
+ export declare abstract class BaseChatModel<TConfig extends ChatModelConfig = ChatModelConfig> implements ChatModel<TConfig> {
6
+ provider: string;
7
+ modelId: string;
8
+ defaultConfig?: TConfig | undefined;
9
+ protected tools: Tool[];
10
+ constructor(provider: string, modelId: string, defaultConfig?: TConfig | undefined, tools?: Tool[]);
11
+ abstract generate(messages: Message[], config?: TConfig): Promise<GenerateResult>;
12
+ abstract stream(messages: Message[], config?: TConfig): AsyncIterable<StreamChunk>;
13
+ withTools(tools: Tool[]): ChatModel<TConfig>;
14
+ protected mergeConfig(config?: TConfig): ChatModelConfig;
15
+ }
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseChatModel = void 0;
4
+ class BaseChatModel {
5
+ constructor(provider, modelId, defaultConfig, tools = []) {
6
+ this.provider = provider;
7
+ this.modelId = modelId;
8
+ this.defaultConfig = defaultConfig;
9
+ this.tools = tools;
10
+ }
11
+ withTools(tools) {
12
+ const newInstance = Object.create(Object.getPrototypeOf(this));
13
+ Object.assign(newInstance, this);
14
+ newInstance.tools = [...this.tools, ...tools];
15
+ return newInstance;
16
+ }
17
+ mergeConfig(config) {
18
+ return {
19
+ ...this.defaultConfig,
20
+ ...config,
21
+ };
22
+ }
23
+ }
24
+ exports.BaseChatModel = BaseChatModel;
25
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/chat-model/base.ts"],"names":[],"mappings":";;;AAKA,MAAsB,aAAa;IAGlC,YACQ,QAAgB,EAChB,OAAe,EACf,aAAuB,EACpB,QAAgB,EAAE;QAHrB,aAAQ,GAAR,QAAQ,CAAQ;QAChB,YAAO,GAAP,OAAO,CAAQ;QACf,kBAAa,GAAb,aAAa,CAAU;QACpB,UAAK,GAAL,KAAK,CAAa;IAC1B,CAAC;IAUJ,SAAS,CAAC,KAAa;QAEtB,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,IAAI,CAAW,CAAC,CAAC;QACzE,MAAM,CAAC,MAAM,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;QACjC,WAAW,CAAC,KAAK,GAAG,CAAC,GAAG,IAAI,CAAC,KAAK,EAAE,GAAG,KAAK,CAAC,CAAC;QAC9C,OAAO,WAAW,CAAC;IACpB,CAAC;IAKS,WAAW,CAAC,MAAgB;QACrC,OAAO;YACN,GAAG,IAAI,CAAC,aAAa;YACrB,GAAG,MAAM;SACT,CAAC;IACH,CAAC;CACD;AAnCD,sCAmCC"}
@@ -0,0 +1,5 @@
1
+ import * as LangchainMessages from '@langchain/core/messages';
2
+ import type * as N8nMessages from '../types/message';
3
+ import type { Message } from '../types/message';
4
+ export declare function fromLcMessage(msg: LangchainMessages.BaseMessage): N8nMessages.Message;
5
+ export declare function toLcMessage(message: Message): LangchainMessages.BaseMessage;
@@ -0,0 +1,365 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.fromLcMessage = fromLcMessage;
37
+ exports.toLcMessage = toLcMessage;
38
+ const LangchainMessages = __importStar(require("@langchain/core/messages"));
39
+ const n8n_workflow_1 = require("n8n-workflow");
40
+ function isN8nTextBlock(block) {
41
+ return block.type === 'text';
42
+ }
43
+ function isN8nReasoningBlock(block) {
44
+ return block.type === 'reasoning';
45
+ }
46
+ function isN8nFileBlock(block) {
47
+ return block.type === 'file';
48
+ }
49
+ function isN8nToolCallBlock(block) {
50
+ return block.type === 'tool-call';
51
+ }
52
+ function isN8nToolResultBlock(block) {
53
+ return block.type === 'tool-result';
54
+ }
55
+ function isN8nCitationBlock(block) {
56
+ return block.type === 'citation';
57
+ }
58
+ function isN8nProviderBlock(block) {
59
+ return block.type === 'provider';
60
+ }
61
+ function fromLcRole(role) {
62
+ switch (role) {
63
+ case 'system':
64
+ return 'system';
65
+ case 'human':
66
+ return 'human';
67
+ case 'ai':
68
+ return 'ai';
69
+ case 'tool':
70
+ return 'tool';
71
+ default:
72
+ return 'human';
73
+ }
74
+ }
75
+ function isTextBlock(block) {
76
+ return block.type === 'text';
77
+ }
78
+ function isReasoningBlock(block) {
79
+ return block.type === 'reasoning';
80
+ }
81
+ function isFileBlock(block) {
82
+ return (block.type === 'file' ||
83
+ block.type === 'audio' ||
84
+ block.type === 'video' ||
85
+ block.type === 'image' ||
86
+ block.type === 'text-plain');
87
+ }
88
+ function isToolCallBlock(block) {
89
+ return block.type === 'tool_call';
90
+ }
91
+ function isInvalidToolCallBlock(block) {
92
+ return block.type === 'invalid_tool_call';
93
+ }
94
+ function isToolResultBlock(block) {
95
+ return block.type === 'tool-result';
96
+ }
97
+ function isCitationBlock(block) {
98
+ return (typeof block === 'object' && block !== null && 'type' in block && block.type === 'citation');
99
+ }
100
+ function isNonStandardBlock(block) {
101
+ return block.type === 'non_standard';
102
+ }
103
+ function fromLcContent(content) {
104
+ if (typeof content === 'string') {
105
+ return [
106
+ {
107
+ type: 'text',
108
+ text: content,
109
+ },
110
+ ];
111
+ }
112
+ const blocks = Array.isArray(content) ? content : [content];
113
+ return blocks
114
+ .map((block) => {
115
+ let content = null;
116
+ if (isTextBlock(block)) {
117
+ content = {
118
+ type: 'text',
119
+ text: block.text,
120
+ };
121
+ }
122
+ if (isReasoningBlock(block)) {
123
+ content = {
124
+ type: 'reasoning',
125
+ text: block.reasoning,
126
+ };
127
+ }
128
+ if (isFileBlock(block)) {
129
+ let metadata = {};
130
+ if (block.metadata) {
131
+ metadata = block.metadata;
132
+ }
133
+ if ('url' in block) {
134
+ metadata.url = block.url;
135
+ }
136
+ if ('fileId' in block) {
137
+ metadata.fileId = block.fileId;
138
+ }
139
+ content = {
140
+ type: 'file',
141
+ mediaType: block.mimeType,
142
+ data: block.data,
143
+ providerMetadata: Object.keys(metadata).length > 0 ? metadata : undefined,
144
+ };
145
+ }
146
+ if (isToolCallBlock(block)) {
147
+ content = {
148
+ type: 'tool-call',
149
+ toolCallId: block.id,
150
+ toolName: block.name,
151
+ input: JSON.stringify(block.args),
152
+ };
153
+ }
154
+ if (isInvalidToolCallBlock(block)) {
155
+ content = {
156
+ type: 'tool-result',
157
+ toolCallId: block.id,
158
+ result: block.error,
159
+ isError: true,
160
+ };
161
+ }
162
+ if (isToolResultBlock(block)) {
163
+ content = {
164
+ type: 'tool-result',
165
+ toolCallId: block.toolCallId,
166
+ result: block.output,
167
+ isError: block.status === 'error',
168
+ };
169
+ }
170
+ if (isCitationBlock(block)) {
171
+ content = {
172
+ type: 'citation',
173
+ source: block.source,
174
+ url: block.url,
175
+ title: block.title,
176
+ startIndex: block.startIndex,
177
+ endIndex: block.endIndex,
178
+ text: block.citedText,
179
+ };
180
+ }
181
+ if (isNonStandardBlock(block)) {
182
+ content = {
183
+ type: 'provider',
184
+ value: block.value,
185
+ };
186
+ }
187
+ if (!content) {
188
+ return null;
189
+ }
190
+ return content;
191
+ })
192
+ .filter((content) => content !== null);
193
+ }
194
+ function fromLcMessage(msg) {
195
+ if (LangchainMessages.ToolMessage.isInstance(msg)) {
196
+ const result = typeof msg.content === 'string' ? msg.content : fromLcContent(msg.content);
197
+ return {
198
+ role: 'tool',
199
+ content: [
200
+ {
201
+ type: 'tool-result',
202
+ toolCallId: msg.tool_call_id,
203
+ result,
204
+ isError: msg.status === 'error',
205
+ providerMetadata: msg.metadata,
206
+ },
207
+ ],
208
+ id: msg.id,
209
+ name: msg.name,
210
+ };
211
+ }
212
+ if (LangchainMessages.AIMessage.isInstance(msg)) {
213
+ const content = fromLcContent(msg.content);
214
+ const toolsCalls = msg.tool_calls;
215
+ if (toolsCalls?.length) {
216
+ const mappedToolsCalls = toolsCalls.map((toolCall) => ({
217
+ type: 'tool-call',
218
+ toolCallId: toolCall.id,
219
+ toolName: toolCall.name,
220
+ input: JSON.stringify(toolCall.args),
221
+ providerMetadata: msg.response_metadata,
222
+ }));
223
+ content.push(...mappedToolsCalls);
224
+ }
225
+ return {
226
+ role: 'ai',
227
+ content,
228
+ id: msg.id,
229
+ name: msg.name,
230
+ };
231
+ }
232
+ if (LangchainMessages.SystemMessage.isInstance(msg)) {
233
+ return {
234
+ role: 'system',
235
+ content: fromLcContent(msg.content),
236
+ id: msg.id,
237
+ name: msg.name,
238
+ };
239
+ }
240
+ if (LangchainMessages.HumanMessage.isInstance(msg)) {
241
+ return {
242
+ role: 'human',
243
+ content: fromLcContent(msg.content),
244
+ id: msg.id,
245
+ name: msg.name,
246
+ };
247
+ }
248
+ if (LangchainMessages.BaseMessage.isInstance(msg)) {
249
+ return {
250
+ role: fromLcRole(msg.type),
251
+ content: fromLcContent(msg.content),
252
+ id: msg.id,
253
+ name: msg.name,
254
+ };
255
+ }
256
+ throw new Error(`Provided message is not a valid Langchain message: ${JSON.stringify(msg)}`);
257
+ }
258
+ function toLcContent(block) {
259
+ if (isN8nTextBlock(block)) {
260
+ return { type: 'text', text: block.text };
261
+ }
262
+ if (isN8nReasoningBlock(block)) {
263
+ return { type: 'reasoning', reasoning: block.text };
264
+ }
265
+ if (isN8nFileBlock(block)) {
266
+ const { url, fileId, ...rest } = block.providerMetadata ?? {};
267
+ return {
268
+ type: 'file',
269
+ mimeType: block.mediaType ?? 'application/octet-stream',
270
+ data: block.data,
271
+ ...(url ? { url } : {}),
272
+ ...(fileId ? { fileId } : {}),
273
+ ...(Object.keys(rest).length > 0 ? { metadata: rest } : {}),
274
+ };
275
+ }
276
+ if (isN8nToolCallBlock(block)) {
277
+ return {
278
+ type: 'tool_call',
279
+ id: block.toolCallId,
280
+ name: block.toolName,
281
+ args: (0, n8n_workflow_1.jsonParse)(block.input, { fallbackValue: {} }),
282
+ };
283
+ }
284
+ if (isN8nToolResultBlock(block)) {
285
+ return {
286
+ type: 'server_tool_call_result',
287
+ toolCallId: block.toolCallId,
288
+ output: block.result,
289
+ status: block.isError ? 'error' : 'success',
290
+ };
291
+ }
292
+ if (isN8nCitationBlock(block)) {
293
+ return {
294
+ type: 'citation',
295
+ source: block.source,
296
+ url: block.url,
297
+ title: block.title,
298
+ startIndex: block.startIndex,
299
+ endIndex: block.endIndex,
300
+ citedText: block.text,
301
+ };
302
+ }
303
+ if (isN8nProviderBlock(block)) {
304
+ return {
305
+ type: 'non_standard',
306
+ value: block.value,
307
+ };
308
+ }
309
+ return null;
310
+ }
311
+ function toLcMessage(message) {
312
+ const lcContent = message.content
313
+ .map(toLcContent)
314
+ .filter((c) => c !== null);
315
+ switch (message.role) {
316
+ case 'system':
317
+ return new LangchainMessages.SystemMessage({
318
+ content: lcContent,
319
+ id: message.id,
320
+ name: message.name,
321
+ });
322
+ case 'human':
323
+ return new LangchainMessages.HumanMessage({
324
+ content: lcContent,
325
+ id: message.id,
326
+ name: message.name,
327
+ });
328
+ case 'ai': {
329
+ const toolCalls = message.content.filter(isN8nToolCallBlock).map((c) => ({
330
+ id: c.toolCallId,
331
+ name: c.toolName,
332
+ args: (0, n8n_workflow_1.jsonParse)(c.input, { fallbackValue: {} }),
333
+ }));
334
+ const nonToolContent = lcContent.filter((c) => c.type !== 'tool_call');
335
+ return new LangchainMessages.AIMessage({
336
+ content: nonToolContent,
337
+ id: message.id,
338
+ name: message.name,
339
+ tool_calls: toolCalls.length > 0 ? toolCalls : undefined,
340
+ });
341
+ }
342
+ case 'tool': {
343
+ const toolResult = message.content.find(isN8nToolResultBlock);
344
+ if (!toolResult) {
345
+ throw new Error('Tool message is missing a tool-result content block');
346
+ }
347
+ const content = typeof toolResult.result === 'string'
348
+ ? toolResult.result
349
+ : JSON.stringify(toolResult.result);
350
+ return new LangchainMessages.ToolMessage({
351
+ content,
352
+ tool_call_id: toolResult.toolCallId,
353
+ name: message.name,
354
+ status: toolResult.isError ? 'error' : 'success',
355
+ });
356
+ }
357
+ default:
358
+ return new LangchainMessages.HumanMessage({
359
+ content: lcContent,
360
+ id: message.id,
361
+ name: message.name,
362
+ });
363
+ }
364
+ }
365
+ //# 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,5 @@
1
+ import type * as LangchainChatModels from '@langchain/core/language_models/chat_models';
2
+ import type { JSONSchema7 } from 'json-schema';
3
+ import type * as N8nTools from '../types/tool';
4
+ export declare function fromLcTool(tool: LangchainChatModels.BindToolsInput): N8nTools.Tool;
5
+ export declare function getParametersJsonSchema(tool: N8nTools.FunctionTool): JSONSchema7;
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.fromLcTool = fromLcTool;
7
+ exports.getParametersJsonSchema = getParametersJsonSchema;
8
+ const zod_1 = require("zod");
9
+ const zod_to_json_schema_1 = __importDefault(require("zod-to-json-schema"));
10
+ function fromLcTool(tool) {
11
+ if ('schema' in tool && 'invoke' in tool) {
12
+ const structuredTool = tool;
13
+ return {
14
+ type: 'function',
15
+ name: structuredTool.name,
16
+ description: structuredTool.description,
17
+ inputSchema: structuredTool.schema,
18
+ };
19
+ }
20
+ if ('schema' in tool && 'func' 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 ('name' in tool && 'schema' 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 ('function' in tool && 'type' in tool && tool.type === 'function') {
39
+ const functionTool = tool.function;
40
+ return {
41
+ type: 'function',
42
+ name: functionTool.name,
43
+ description: functionTool.description,
44
+ inputSchema: functionTool.parameters,
45
+ };
46
+ }
47
+ throw new Error(`Unable to convert tool to N8nTool: ${JSON.stringify(tool)}`);
48
+ }
49
+ function getParametersJsonSchema(tool) {
50
+ const schema = tool.inputSchema;
51
+ if (schema instanceof zod_1.ZodSchema) {
52
+ if ('toJSONSchema' in schema && typeof schema.toJSONSchema === 'function') {
53
+ return schema.toJSONSchema();
54
+ }
55
+ return (0, zod_to_json_schema_1.default)(schema);
56
+ }
57
+ return schema;
58
+ }
59
+ //# sourceMappingURL=tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool.js","sourceRoot":"","sources":["../../src/converters/tool.ts"],"names":[],"mappings":";;;;;AAYA,gCAuCC;AAED,0DASC;AA1DD,6BAAiD;AACjD,4EAAiD;AAOjD,SAAgB,UAAU,CAAC,IAAwC;IAClE,IAAI,QAAQ,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;QAC1C,MAAM,cAAc,GAAG,IAAqC,CAAC;QAC7D,OAAO;YACN,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,cAAc,CAAC,IAAI;YACzB,WAAW,EAAE,cAAc,CAAC,WAAW;YACvC,WAAW,EAAE,cAAc,CAAC,MAAkC;SAC9D,CAAC;IACH,CAAC;IACD,IAAI,QAAQ,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,EAAE,CAAC;QACxC,MAAM,cAAc,GAAG,IAA4C,CAAC;QACpE,OAAO;YACN,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,cAAc,CAAC,IAAI;YACzB,WAAW,EAAE,cAAc,CAAC,WAAW;YACvC,WAAW,EAAE,cAAc,CAAC,MAAkC;SAC9D,CAAC;IACH,CAAC;IACD,IAAI,MAAM,IAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,EAAE,CAAC;QACxC,MAAM,cAAc,GAAG,IAAqC,CAAC;QAC7D,OAAO;YACN,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,cAAc,CAAC,IAAI;YACzB,WAAW,EAAE,cAAc,CAAC,WAAW;YACvC,WAAW,EAAE,cAAc,CAAC,MAAkC;SAC9D,CAAC;IACH,CAAC;IACD,IAAI,UAAU,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACtE,MAAM,YAAY,GAAG,IAAI,CAAC,QAA8B,CAAC;QACzD,OAAO;YACN,IAAI,EAAE,UAAU;YAChB,IAAI,EAAE,YAAY,CAAC,IAAI;YACvB,WAAW,EAAE,YAAY,CAAC,WAAW;YACrC,WAAW,EAAE,YAAY,CAAC,UAAyB;SACnD,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,sCAAsC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;AAC/E,CAAC;AAED,SAAgB,uBAAuB,CAAC,IAA2B;IAClE,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC;IAChC,IAAI,MAAM,YAAY,eAAS,EAAE,CAAC;QACjC,IAAI,cAAc,IAAI,MAAM,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,UAAU,EAAE,CAAC;YAC3E,OAAO,MAAM,CAAC,YAAY,EAAE,CAAC;QAC9B,CAAC;QACD,OAAO,IAAA,4BAAe,EAAC,MAAM,CAAgB,CAAC;IAC/C,CAAC;IACD,OAAO,MAAM,CAAC;AACf,CAAC"}
@@ -0,0 +1,8 @@
1
+ import type { BaseChatMemory } from '@langchain/classic/memory';
2
+ import type { BaseChatMessageHistory } from '@langchain/core/chat_history';
3
+ import type { BaseChatModel } from '@langchain/core/language_models/chat_models';
4
+ import type { Tool } from '@langchain/core/tools';
5
+ export declare function isBaseChatMemory(obj: unknown): obj is BaseChatMemory;
6
+ export declare function isBaseChatMessageHistory(obj: unknown): obj is BaseChatMessageHistory;
7
+ export declare function isChatInstance(model: unknown): model is BaseChatModel;
8
+ export declare function isToolsInstance(model: unknown): model is Tool;
package/dist/guards.js ADDED
@@ -0,0 +1,27 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isBaseChatMemory = isBaseChatMemory;
4
+ exports.isBaseChatMessageHistory = isBaseChatMessageHistory;
5
+ exports.isChatInstance = isChatInstance;
6
+ exports.isToolsInstance = isToolsInstance;
7
+ function hasMethods(obj, ...methodNames) {
8
+ return methodNames.every((methodName) => typeof obj === 'object' &&
9
+ obj !== null &&
10
+ methodName in obj &&
11
+ typeof obj[methodName] === 'function');
12
+ }
13
+ function isBaseChatMemory(obj) {
14
+ return hasMethods(obj, 'loadMemoryVariables', 'saveContext');
15
+ }
16
+ function isBaseChatMessageHistory(obj) {
17
+ return hasMethods(obj, 'getMessages', 'addMessage');
18
+ }
19
+ function isChatInstance(model) {
20
+ const namespace = model?.lc_namespace ?? [];
21
+ return namespace.includes('chat_models');
22
+ }
23
+ function isToolsInstance(model) {
24
+ const namespace = model?.lc_namespace ?? [];
25
+ return namespace.includes('tools');
26
+ }
27
+ //# sourceMappingURL=guards.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"guards.js","sourceRoot":"","sources":["../src/guards.ts"],"names":[],"mappings":";;AAgBA,4CAEC;AAED,4DAEC;AAED,wCAIC;AAED,0CAIC;AA5BD,SAAS,UAAU,CAAI,GAAY,EAAE,GAAG,WAAmC;IAC1E,OAAO,WAAW,CAAC,KAAK,CACvB,CAAC,UAAU,EAAE,EAAE,CACd,OAAO,GAAG,KAAK,QAAQ;QACvB,GAAG,KAAK,IAAI;QACZ,UAAU,IAAI,GAAG;QACjB,OAAQ,GAAwC,CAAC,UAAU,CAAC,KAAK,UAAU,CAC5E,CAAC;AACH,CAAC;AAED,SAAgB,gBAAgB,CAAC,GAAY;IAC5C,OAAO,UAAU,CAAiB,GAAG,EAAE,qBAAqB,EAAE,aAAa,CAAC,CAAC;AAC9E,CAAC;AAED,SAAgB,wBAAwB,CAAC,GAAY;IACpD,OAAO,UAAU,CAAyB,GAAG,EAAE,aAAa,EAAE,YAAY,CAAC,CAAC;AAC7E,CAAC;AAED,SAAgB,cAAc,CAAC,KAAc;IAC5C,MAAM,SAAS,GAAI,KAAiB,EAAE,YAAY,IAAI,EAAE,CAAC;IAEzD,OAAO,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAC1C,CAAC;AAED,SAAgB,eAAe,CAAC,KAAc;IAC7C,MAAM,SAAS,GAAI,KAAc,EAAE,YAAY,IAAI,EAAE,CAAC;IAEtD,OAAO,SAAS,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AACpC,CAAC"}
@@ -0,0 +1,28 @@
1
+ export { logWrapper } from './utils/log-wrapper';
2
+ export { logAiEvent } from './utils/log-ai-event';
3
+ export { parseSSEStream } from './utils/sse';
4
+ export { validateEmbedQueryInput, validateEmbedDocumentsInput, } from './utils/embeddings-input-validation';
5
+ export { getMetadataFiltersValues, hasLongSequentialRepeat } from './utils/helpers';
6
+ export { N8nBinaryLoader } from './utils/n8n-binary-loader';
7
+ export { N8nJsonLoader } from './utils/n8n-json-loader';
8
+ export { N8nLlmTracing } from './utils/n8n-llm-tracing';
9
+ export { estimateTokensFromStringList, estimateTokensByCharCount, estimateTextSplitsByTokens, } from './utils/tokenizer/token-estimator';
10
+ export { encodingForModel, getEncoding } from './utils/tokenizer/tiktoken';
11
+ export { makeN8nLlmFailedAttemptHandler } from './utils/failed-attempt-handler/n8nLlmFailedAttemptHandler';
12
+ export { getProxyAgent, getNodeProxyAgent, proxyFetch, type AgentTimeoutOptions, } from './utils/http-proxy-agent';
13
+ export { isBaseChatMemory, isBaseChatMessageHistory, isChatInstance, isToolsInstance, } from './guards';
14
+ export type { ChatModel, ChatModelConfig } from './types/chat-model';
15
+ export type { GenerateResult, StreamChunk, TokenUsage, FinishReason } from './types/output';
16
+ export type { Tool, ToolResult, ToolCall, ProviderTool } from './types/tool';
17
+ export type { Message, ContentFile, ContentMetadata, ContentReasoning, ContentText, ContentToolCall, ContentToolResult, MessageContent, MessageRole, } from './types/message';
18
+ export type { JSONArray, JSONObject, JSONValue } from './types/json';
19
+ export type { ServerSentEventMessage } from './utils/sse';
20
+ export { LangchainAdapter } from './adapters/langchain-chat-model';
21
+ export { BaseChatModel } from './chat-model/base';
22
+ export { getParametersJsonSchema } from './converters/tool';
23
+ export { supplyModel } from './suppliers/supplyModel';
24
+ export type { ChatHistory, ChatMemory } from './types/memory';
25
+ export { BaseChatHistory } from './memory/base-chat-history';
26
+ export { BaseChatMemory } from './memory/base-chat-memory';
27
+ export { WindowedChatMemory, type WindowedChatMemoryConfig } from './memory/windowed-chat-memory';
28
+ export { supplyMemory, type SupplyMemoryOptions } from './suppliers/supplyMemory';
package/dist/index.js ADDED
@@ -0,0 +1,56 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.supplyMemory = exports.WindowedChatMemory = exports.BaseChatMemory = exports.BaseChatHistory = exports.supplyModel = exports.getParametersJsonSchema = exports.BaseChatModel = exports.LangchainAdapter = exports.isToolsInstance = exports.isChatInstance = exports.isBaseChatMessageHistory = exports.isBaseChatMemory = exports.proxyFetch = exports.getNodeProxyAgent = exports.getProxyAgent = exports.makeN8nLlmFailedAttemptHandler = exports.getEncoding = exports.encodingForModel = exports.estimateTextSplitsByTokens = exports.estimateTokensByCharCount = exports.estimateTokensFromStringList = exports.N8nLlmTracing = exports.N8nJsonLoader = exports.N8nBinaryLoader = exports.hasLongSequentialRepeat = exports.getMetadataFiltersValues = exports.validateEmbedDocumentsInput = exports.validateEmbedQueryInput = exports.parseSSEStream = exports.logAiEvent = exports.logWrapper = void 0;
4
+ var log_wrapper_1 = require("./utils/log-wrapper");
5
+ Object.defineProperty(exports, "logWrapper", { enumerable: true, get: function () { return log_wrapper_1.logWrapper; } });
6
+ var log_ai_event_1 = require("./utils/log-ai-event");
7
+ Object.defineProperty(exports, "logAiEvent", { enumerable: true, get: function () { return log_ai_event_1.logAiEvent; } });
8
+ var sse_1 = require("./utils/sse");
9
+ Object.defineProperty(exports, "parseSSEStream", { enumerable: true, get: function () { return sse_1.parseSSEStream; } });
10
+ var embeddings_input_validation_1 = require("./utils/embeddings-input-validation");
11
+ Object.defineProperty(exports, "validateEmbedQueryInput", { enumerable: true, get: function () { return embeddings_input_validation_1.validateEmbedQueryInput; } });
12
+ Object.defineProperty(exports, "validateEmbedDocumentsInput", { enumerable: true, get: function () { return embeddings_input_validation_1.validateEmbedDocumentsInput; } });
13
+ var helpers_1 = require("./utils/helpers");
14
+ Object.defineProperty(exports, "getMetadataFiltersValues", { enumerable: true, get: function () { return helpers_1.getMetadataFiltersValues; } });
15
+ Object.defineProperty(exports, "hasLongSequentialRepeat", { enumerable: true, get: function () { return helpers_1.hasLongSequentialRepeat; } });
16
+ var n8n_binary_loader_1 = require("./utils/n8n-binary-loader");
17
+ Object.defineProperty(exports, "N8nBinaryLoader", { enumerable: true, get: function () { return n8n_binary_loader_1.N8nBinaryLoader; } });
18
+ var n8n_json_loader_1 = require("./utils/n8n-json-loader");
19
+ Object.defineProperty(exports, "N8nJsonLoader", { enumerable: true, get: function () { return n8n_json_loader_1.N8nJsonLoader; } });
20
+ var n8n_llm_tracing_1 = require("./utils/n8n-llm-tracing");
21
+ Object.defineProperty(exports, "N8nLlmTracing", { enumerable: true, get: function () { return n8n_llm_tracing_1.N8nLlmTracing; } });
22
+ var token_estimator_1 = require("./utils/tokenizer/token-estimator");
23
+ Object.defineProperty(exports, "estimateTokensFromStringList", { enumerable: true, get: function () { return token_estimator_1.estimateTokensFromStringList; } });
24
+ Object.defineProperty(exports, "estimateTokensByCharCount", { enumerable: true, get: function () { return token_estimator_1.estimateTokensByCharCount; } });
25
+ Object.defineProperty(exports, "estimateTextSplitsByTokens", { enumerable: true, get: function () { return token_estimator_1.estimateTextSplitsByTokens; } });
26
+ var tiktoken_1 = require("./utils/tokenizer/tiktoken");
27
+ Object.defineProperty(exports, "encodingForModel", { enumerable: true, get: function () { return tiktoken_1.encodingForModel; } });
28
+ Object.defineProperty(exports, "getEncoding", { enumerable: true, get: function () { return tiktoken_1.getEncoding; } });
29
+ var n8nLlmFailedAttemptHandler_1 = require("./utils/failed-attempt-handler/n8nLlmFailedAttemptHandler");
30
+ Object.defineProperty(exports, "makeN8nLlmFailedAttemptHandler", { enumerable: true, get: function () { return n8nLlmFailedAttemptHandler_1.makeN8nLlmFailedAttemptHandler; } });
31
+ var http_proxy_agent_1 = require("./utils/http-proxy-agent");
32
+ Object.defineProperty(exports, "getProxyAgent", { enumerable: true, get: function () { return http_proxy_agent_1.getProxyAgent; } });
33
+ Object.defineProperty(exports, "getNodeProxyAgent", { enumerable: true, get: function () { return http_proxy_agent_1.getNodeProxyAgent; } });
34
+ Object.defineProperty(exports, "proxyFetch", { enumerable: true, get: function () { return http_proxy_agent_1.proxyFetch; } });
35
+ var guards_1 = require("./guards");
36
+ Object.defineProperty(exports, "isBaseChatMemory", { enumerable: true, get: function () { return guards_1.isBaseChatMemory; } });
37
+ Object.defineProperty(exports, "isBaseChatMessageHistory", { enumerable: true, get: function () { return guards_1.isBaseChatMessageHistory; } });
38
+ Object.defineProperty(exports, "isChatInstance", { enumerable: true, get: function () { return guards_1.isChatInstance; } });
39
+ Object.defineProperty(exports, "isToolsInstance", { enumerable: true, get: function () { return guards_1.isToolsInstance; } });
40
+ var langchain_chat_model_1 = require("./adapters/langchain-chat-model");
41
+ Object.defineProperty(exports, "LangchainAdapter", { enumerable: true, get: function () { return langchain_chat_model_1.LangchainAdapter; } });
42
+ var base_1 = require("./chat-model/base");
43
+ Object.defineProperty(exports, "BaseChatModel", { enumerable: true, get: function () { return base_1.BaseChatModel; } });
44
+ var tool_1 = require("./converters/tool");
45
+ Object.defineProperty(exports, "getParametersJsonSchema", { enumerable: true, get: function () { return tool_1.getParametersJsonSchema; } });
46
+ var supplyModel_1 = require("./suppliers/supplyModel");
47
+ Object.defineProperty(exports, "supplyModel", { enumerable: true, get: function () { return supplyModel_1.supplyModel; } });
48
+ var base_chat_history_1 = require("./memory/base-chat-history");
49
+ Object.defineProperty(exports, "BaseChatHistory", { enumerable: true, get: function () { return base_chat_history_1.BaseChatHistory; } });
50
+ var base_chat_memory_1 = require("./memory/base-chat-memory");
51
+ Object.defineProperty(exports, "BaseChatMemory", { enumerable: true, get: function () { return base_chat_memory_1.BaseChatMemory; } });
52
+ var windowed_chat_memory_1 = require("./memory/windowed-chat-memory");
53
+ Object.defineProperty(exports, "WindowedChatMemory", { enumerable: true, get: function () { return windowed_chat_memory_1.WindowedChatMemory; } });
54
+ var supplyMemory_1 = require("./suppliers/supplyMemory");
55
+ Object.defineProperty(exports, "supplyMemory", { enumerable: true, get: function () { return supplyMemory_1.supplyMemory; } });
56
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,mDAAiD;AAAxC,yGAAA,UAAU,OAAA;AACnB,qDAAkD;AAAzC,0GAAA,UAAU,OAAA;AACnB,mCAA6C;AAApC,qGAAA,cAAc,OAAA;AACvB,mFAG6C;AAF5C,sIAAA,uBAAuB,OAAA;AACvB,0IAAA,2BAA2B,OAAA;AAE5B,2CAAoF;AAA3E,mHAAA,wBAAwB,OAAA;AAAE,kHAAA,uBAAuB,OAAA;AAC1D,+DAA4D;AAAnD,oHAAA,eAAe,OAAA;AACxB,2DAAwD;AAA/C,gHAAA,aAAa,OAAA;AACtB,2DAAwD;AAA/C,gHAAA,aAAa,OAAA;AACtB,qEAI2C;AAH1C,+HAAA,4BAA4B,OAAA;AAC5B,4HAAA,yBAAyB,OAAA;AACzB,6HAAA,0BAA0B,OAAA;AAE3B,uDAA2E;AAAlE,4GAAA,gBAAgB,OAAA;AAAE,uGAAA,WAAW,OAAA;AACtC,wGAA2G;AAAlG,4IAAA,8BAA8B,OAAA;AACvC,6DAKkC;AAJjC,iHAAA,aAAa,OAAA;AACb,qHAAA,iBAAiB,OAAA;AACjB,8GAAA,UAAU,OAAA;AAKX,mCAKkB;AAJjB,0GAAA,gBAAgB,OAAA;AAChB,kHAAA,wBAAwB,OAAA;AACxB,wGAAA,cAAc,OAAA;AACd,yGAAA,eAAe,OAAA;AAqBhB,wEAAmE;AAA1D,wHAAA,gBAAgB,OAAA;AAEzB,0CAAkD;AAAzC,qGAAA,aAAa,OAAA;AAEtB,0CAA4D;AAAnD,+GAAA,uBAAuB,OAAA;AAChC,uDAAsD;AAA7C,0GAAA,WAAW,OAAA;AAMpB,gEAA6D;AAApD,oHAAA,eAAe,OAAA;AACxB,8DAA2D;AAAlD,kHAAA,cAAc,OAAA;AAGvB,sEAAkG;AAAzF,0HAAA,kBAAkB,OAAA;AAG3B,yDAAkF;AAAzE,4GAAA,YAAY,OAAA"}
@@ -0,0 +1,8 @@
1
+ import type { ChatHistory } from '../types/memory';
2
+ import type { Message } from '../types/message';
3
+ export declare abstract class BaseChatHistory implements ChatHistory {
4
+ abstract getMessages(): Promise<Message[]>;
5
+ abstract addMessage(message: Message): Promise<void>;
6
+ addMessages(messages: Message[]): Promise<void>;
7
+ abstract clear(): Promise<void>;
8
+ }