n8n-nodes-zihin 0.1.0 → 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.
@@ -0,0 +1,12 @@
1
+ import { INodeType, INodeTypeDescription, ISupplyDataFunctions, SupplyData } from 'n8n-workflow';
2
+ /**
3
+ * n8n Node: Zihin Chat Model
4
+ * Sub-node for AI Agents that provides Zihin LLM as a chat model with Tool Calling support
5
+ */
6
+ export declare class ZihinChatModel implements INodeType {
7
+ description: INodeTypeDescription;
8
+ /**
9
+ * Supply the LangChain chat model to the AI Agent
10
+ */
11
+ supplyData(this: ISupplyDataFunctions, itemIndex: number): Promise<SupplyData>;
12
+ }
@@ -0,0 +1,453 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ZihinChatModel = void 0;
4
+ // String literal for AI Language Model connection type
5
+ const AI_LANGUAGE_MODEL_OUTPUT = 'ai_languageModel';
6
+ const chat_models_1 = require("@langchain/core/language_models/chat_models");
7
+ const messages_1 = require("@langchain/core/messages");
8
+ /**
9
+ * Zihin Chat Model - LangChain compatible chat model for n8n AI Agents
10
+ * Supports Tool Calling for AI Agent integration
11
+ */
12
+ class ZihinLangChainChatModel extends chat_models_1.BaseChatModel {
13
+ static lc_name() {
14
+ return 'ZihinChatModel';
15
+ }
16
+ get lc_secrets() {
17
+ return {
18
+ apiKey: 'ZIHIN_API_KEY',
19
+ };
20
+ }
21
+ constructor(fields) {
22
+ super({});
23
+ this.boundTools = [];
24
+ this.apiKey = fields.apiKey;
25
+ this.modelName = fields.modelName;
26
+ this.taskType = fields.taskType || 'tool_calling';
27
+ this.temperature = fields.temperature ?? 0.7;
28
+ this.maxTokens = fields.maxTokens ?? 4096;
29
+ this.topP = fields.topP ?? 1;
30
+ this.frequencyPenalty = fields.frequencyPenalty ?? 0;
31
+ this.presencePenalty = fields.presencePenalty ?? 0;
32
+ }
33
+ _llmType() {
34
+ return 'zihin';
35
+ }
36
+ /**
37
+ * Convert a schema to JSON Schema format
38
+ */
39
+ schemaToJsonSchema(schema) {
40
+ if (!schema)
41
+ return {};
42
+ // If it's already a plain object (JSON Schema), return it
43
+ if (typeof schema === 'object' && schema !== null) {
44
+ // Check if it's a Zod schema (has _def property)
45
+ if ('_def' in schema) {
46
+ // Try to get the JSON schema if available
47
+ const zodSchema = schema;
48
+ if (zodSchema.shape && typeof zodSchema.shape === 'object') {
49
+ // Basic Zod object schema conversion
50
+ const properties = {};
51
+ for (const [key, value] of Object.entries(zodSchema.shape)) {
52
+ properties[key] = { type: 'string' }; // Simplified - could be enhanced
53
+ if (value && typeof value === 'object' && '_def' in value) {
54
+ const def = value._def;
55
+ if (def.description) {
56
+ properties[key].description = def.description;
57
+ }
58
+ }
59
+ }
60
+ return {
61
+ type: 'object',
62
+ properties,
63
+ };
64
+ }
65
+ return { type: 'object', properties: {} };
66
+ }
67
+ // Already JSON Schema format
68
+ return schema;
69
+ }
70
+ return {};
71
+ }
72
+ /**
73
+ * Bind tools to the model for function calling
74
+ */
75
+ bindTools(tools, _kwargs) {
76
+ // Convert LangChain tools to Zihin format
77
+ this.boundTools = tools.map((tool) => {
78
+ // Handle different tool formats
79
+ if ('name' in tool && 'description' in tool) {
80
+ const structuredTool = tool;
81
+ return {
82
+ type: 'function',
83
+ function: {
84
+ name: structuredTool.name,
85
+ description: structuredTool.description,
86
+ parameters: this.schemaToJsonSchema(structuredTool.schema),
87
+ },
88
+ };
89
+ }
90
+ // Fallback for other formats
91
+ return {
92
+ type: 'function',
93
+ function: {
94
+ name: String(tool.name || 'unknown'),
95
+ description: String(tool.description || ''),
96
+ parameters: this.schemaToJsonSchema(tool.schema),
97
+ },
98
+ };
99
+ });
100
+ // Return this model with tools bound (as a Runnable)
101
+ return this;
102
+ }
103
+ /**
104
+ * Convert LangChain messages to Zihin API format
105
+ */
106
+ convertMessages(messages) {
107
+ return messages.map((message) => {
108
+ const type = message._getType();
109
+ // Handle Tool Messages (results from tool calls)
110
+ if (type === 'tool') {
111
+ const toolMsg = message;
112
+ return {
113
+ role: 'tool',
114
+ content: typeof toolMsg.content === 'string' ? toolMsg.content : JSON.stringify(toolMsg.content),
115
+ tool_call_id: toolMsg.tool_call_id,
116
+ };
117
+ }
118
+ // Handle AI Messages with tool calls
119
+ if (type === 'ai') {
120
+ const aiMsg = message;
121
+ const zihinMsg = {
122
+ role: 'assistant',
123
+ content: typeof aiMsg.content === 'string' ? aiMsg.content : JSON.stringify(aiMsg.content),
124
+ };
125
+ // Check for tool calls in the message
126
+ if (aiMsg.tool_calls && aiMsg.tool_calls.length > 0) {
127
+ zihinMsg.tool_calls = aiMsg.tool_calls.map((tc) => ({
128
+ id: tc.id || `call_${Date.now()}`,
129
+ type: 'function',
130
+ function: {
131
+ name: tc.name,
132
+ arguments: typeof tc.args === 'string' ? tc.args : JSON.stringify(tc.args),
133
+ },
134
+ }));
135
+ }
136
+ return zihinMsg;
137
+ }
138
+ // Handle other message types
139
+ let role;
140
+ if (type === 'system') {
141
+ role = 'system';
142
+ }
143
+ else if (type === 'human') {
144
+ role = 'user';
145
+ }
146
+ else if (message instanceof messages_1.ChatMessage) {
147
+ const chatRole = message.role.toLowerCase();
148
+ if (chatRole === 'system') {
149
+ role = 'system';
150
+ }
151
+ else if (chatRole === 'assistant') {
152
+ role = 'assistant';
153
+ }
154
+ else {
155
+ role = 'user';
156
+ }
157
+ }
158
+ else {
159
+ role = 'user';
160
+ }
161
+ return {
162
+ role,
163
+ content: typeof message.content === 'string' ? message.content : JSON.stringify(message.content),
164
+ };
165
+ });
166
+ }
167
+ /**
168
+ * Call the Zihin API
169
+ */
170
+ async _generate(messages, options, _runManager) {
171
+ const zihinMessages = this.convertMessages(messages);
172
+ const requestBody = {
173
+ model: this.modelName,
174
+ messages: zihinMessages,
175
+ options: {
176
+ temperature: options.temperature ?? this.temperature,
177
+ maxTokens: options.maxTokens ?? this.maxTokens,
178
+ topP: options.topP ?? this.topP,
179
+ frequencyPenalty: options.frequencyPenalty ?? this.frequencyPenalty,
180
+ presencePenalty: options.presencePenalty ?? this.presencePenalty,
181
+ },
182
+ };
183
+ // Add tools if bound
184
+ if (this.boundTools.length > 0) {
185
+ requestBody.tools = this.boundTools;
186
+ }
187
+ // Add context for auto-routing
188
+ if (this.modelName === 'auto') {
189
+ requestBody.context = {
190
+ task: this.taskType,
191
+ };
192
+ }
193
+ const response = await fetch('https://llm.zihin.ai/api/v3/llm/public/call', {
194
+ method: 'POST',
195
+ headers: {
196
+ 'Content-Type': 'application/json',
197
+ 'X-Api-Key': this.apiKey,
198
+ },
199
+ body: JSON.stringify(requestBody),
200
+ });
201
+ if (!response.ok) {
202
+ throw new Error(`Zihin API error: ${response.status} ${response.statusText}`);
203
+ }
204
+ const result = (await response.json());
205
+ if (!result.success || !result.data) {
206
+ throw new Error(result.message || result.error || 'Zihin API returned an error');
207
+ }
208
+ // Build the AI message with potential tool calls
209
+ const aiMessageContent = result.data.content || '';
210
+ const toolCalls = result.data.tool_calls?.map((tc) => ({
211
+ id: tc.id,
212
+ name: tc.function.name,
213
+ args: JSON.parse(tc.function.arguments || '{}'),
214
+ type: 'tool_call',
215
+ }));
216
+ const aiMessage = new messages_1.AIMessage({
217
+ content: aiMessageContent,
218
+ tool_calls: toolCalls,
219
+ additional_kwargs: {
220
+ model: result.data.model,
221
+ provider: result.data.provider,
222
+ finish_reason: result.data.finish_reason,
223
+ autoRouting: result.data.autoRouting,
224
+ },
225
+ });
226
+ const generation = {
227
+ text: aiMessageContent,
228
+ message: aiMessage,
229
+ generationInfo: {
230
+ finish_reason: result.data.finish_reason,
231
+ },
232
+ };
233
+ return {
234
+ generations: [generation],
235
+ llmOutput: {
236
+ tokenUsage: {
237
+ promptTokens: result.data.usage.prompt_tokens,
238
+ completionTokens: result.data.usage.completion_tokens,
239
+ totalTokens: result.data.usage.total_tokens,
240
+ },
241
+ model: result.data.model,
242
+ provider: result.data.provider,
243
+ },
244
+ };
245
+ }
246
+ }
247
+ /**
248
+ * n8n Node: Zihin Chat Model
249
+ * Sub-node for AI Agents that provides Zihin LLM as a chat model with Tool Calling support
250
+ */
251
+ class ZihinChatModel {
252
+ constructor() {
253
+ this.description = {
254
+ displayName: 'Zihin Chat Model',
255
+ name: 'lmChatZihin',
256
+ icon: 'file:zihin.png',
257
+ group: ['transform'],
258
+ version: 1,
259
+ description: 'Chat Model for Zihin LLM Gateway with intelligent provider routing and Tool Calling support',
260
+ defaults: {
261
+ name: 'Zihin Chat Model',
262
+ },
263
+ codex: {
264
+ categories: ['AI'],
265
+ subcategories: {
266
+ AI: ['Language Models', 'Chat Models (Recommended)'],
267
+ },
268
+ resources: {
269
+ primaryDocumentation: [
270
+ {
271
+ url: 'https://docs.zihin.ai',
272
+ },
273
+ ],
274
+ },
275
+ },
276
+ // No inputs - this is a sub-node
277
+ inputs: [],
278
+ // Output to AI Agent as language model
279
+ outputs: [AI_LANGUAGE_MODEL_OUTPUT],
280
+ outputNames: ['Model'],
281
+ credentials: [
282
+ {
283
+ name: 'zihinApi',
284
+ required: true,
285
+ },
286
+ ],
287
+ properties: [
288
+ // Model Selection
289
+ {
290
+ displayName: 'Model',
291
+ name: 'model',
292
+ type: 'options',
293
+ required: true,
294
+ default: 'auto',
295
+ description: 'Modelo LLM a ser usado. Use "auto" para roteamento inteligente baseado na tarefa.',
296
+ options: [
297
+ { name: 'Auto (Roteamento Inteligente)', value: 'auto' },
298
+ // OpenAI - GPT-5 Family
299
+ { name: 'OpenAI - GPT-5', value: 'openai.gpt-5' },
300
+ { name: 'OpenAI - GPT-5 Mini', value: 'openai.gpt-5-mini' },
301
+ { name: 'OpenAI - GPT-5 Nano', value: 'openai.gpt-5-nano' },
302
+ // OpenAI - GPT-4.1 Family
303
+ { name: 'OpenAI - GPT-4.1', value: 'openai.gpt-4.1' },
304
+ { name: 'OpenAI - GPT-4.1 Mini', value: 'openai.gpt-4.1-mini' },
305
+ { name: 'OpenAI - GPT-4.1 Nano', value: 'openai.gpt-4.1-nano' },
306
+ // Anthropic - Claude 4.5 Family
307
+ { name: 'Anthropic - Claude Sonnet 4.5', value: 'anthropic.claude-sonnet-4-5-20250929' },
308
+ { name: 'Anthropic - Claude Haiku 4.5', value: 'anthropic.claude-haiku-4-5-20251001' },
309
+ // Anthropic - Claude 4 Family
310
+ { name: 'Anthropic - Claude Opus 4.1', value: 'anthropic.claude-opus-4-1-20250805' },
311
+ { name: 'Anthropic - Claude Sonnet 4', value: 'anthropic.claude-sonnet-4-20250514' },
312
+ // Anthropic - Legacy
313
+ { name: 'Anthropic - Claude 3.5 Haiku', value: 'anthropic.claude-3-5-haiku-20241022' },
314
+ // Google - Gemini Family
315
+ { name: 'Google - Gemini 2.5 Flash Lite', value: 'google.gemini-2.5-flash-lite' },
316
+ { name: 'Google - Gemini 2.0 Flash', value: 'google.gemini-2.0-flash' },
317
+ { name: 'Google - Gemini 2.0 Flash Lite', value: 'google.gemini-2.0-flash-lite' },
318
+ // Grok - Grok-4 Family
319
+ { name: 'Grok - Grok 4 Fast Reasoning', value: 'grok.grok-4-fast-reasoning' },
320
+ { name: 'Grok - Grok 4 Fast', value: 'grok.grok-4-fast-non-reasoning' },
321
+ { name: 'Grok - Grok 4', value: 'grok.grok-4-0709' },
322
+ { name: 'Grok - Grok Code Fast', value: 'grok.grok-code-fast-1' },
323
+ // Grok - Grok-3 Family
324
+ { name: 'Grok - Grok 3', value: 'grok.grok-3' },
325
+ { name: 'Grok - Grok 3 Mini', value: 'grok.grok-3-mini' },
326
+ // Grok - Grok-2 Legacy
327
+ { name: 'Grok - Grok 2', value: 'grok.grok-2-1212' },
328
+ { name: 'Grok - Grok 2 Vision', value: 'grok.grok-2-vision-1212' },
329
+ ],
330
+ },
331
+ // Task Type (conditional - only when model="auto")
332
+ {
333
+ displayName: 'Task Type',
334
+ name: 'taskType',
335
+ type: 'options',
336
+ default: 'tool_calling',
337
+ description: 'Tipo de tarefa para otimizar a seleção automática do modelo (usado apenas no modo Auto)',
338
+ displayOptions: {
339
+ show: {
340
+ model: ['auto'],
341
+ },
342
+ },
343
+ options: [
344
+ { name: 'Tool Calling / Chamada de Ferramentas', value: 'tool_calling' },
345
+ { name: 'Chat / Conversação', value: 'chat' },
346
+ { name: 'Coding / Programação', value: 'coding' },
347
+ { name: 'Analysis / Análise', value: 'analysis' },
348
+ { name: 'Planning / Planejamento', value: 'planning' },
349
+ { name: 'Creative / Criativo', value: 'creative' },
350
+ { name: 'Data Query / Consulta de Dados', value: 'data_query' },
351
+ ],
352
+ },
353
+ // Options (collapsible collection)
354
+ {
355
+ displayName: 'Options',
356
+ name: 'options',
357
+ type: 'collection',
358
+ placeholder: 'Add Option',
359
+ default: {},
360
+ options: [
361
+ {
362
+ displayName: 'Temperature',
363
+ name: 'temperature',
364
+ type: 'number',
365
+ typeOptions: {
366
+ minValue: 0,
367
+ maxValue: 2,
368
+ numberStepSize: 0.1,
369
+ },
370
+ default: 0.7,
371
+ description: 'Controla a criatividade (0 = determinístico, 2 = muito criativo)',
372
+ },
373
+ {
374
+ displayName: 'Max Tokens',
375
+ name: 'maxTokens',
376
+ type: 'number',
377
+ typeOptions: {
378
+ minValue: 1,
379
+ maxValue: 128000,
380
+ },
381
+ default: 4096,
382
+ description: 'Limite máximo de tokens na resposta',
383
+ },
384
+ {
385
+ displayName: 'Top P',
386
+ name: 'topP',
387
+ type: 'number',
388
+ typeOptions: {
389
+ minValue: 0,
390
+ maxValue: 1,
391
+ numberStepSize: 0.1,
392
+ },
393
+ default: 1,
394
+ description: 'Nucleus sampling (alternativa a temperature)',
395
+ },
396
+ {
397
+ displayName: 'Frequency Penalty',
398
+ name: 'frequencyPenalty',
399
+ type: 'number',
400
+ typeOptions: {
401
+ minValue: -2,
402
+ maxValue: 2,
403
+ numberStepSize: 0.1,
404
+ },
405
+ default: 0,
406
+ description: 'Reduz repetição de tokens frequentes',
407
+ },
408
+ {
409
+ displayName: 'Presence Penalty',
410
+ name: 'presencePenalty',
411
+ type: 'number',
412
+ typeOptions: {
413
+ minValue: -2,
414
+ maxValue: 2,
415
+ numberStepSize: 0.1,
416
+ },
417
+ default: 0,
418
+ description: 'Incentiva novos tópicos na resposta',
419
+ },
420
+ ],
421
+ },
422
+ ],
423
+ };
424
+ }
425
+ /**
426
+ * Supply the LangChain chat model to the AI Agent
427
+ */
428
+ async supplyData(itemIndex) {
429
+ // Get credentials
430
+ const credentials = await this.getCredentials('zihinApi');
431
+ const apiKey = credentials.apiKey;
432
+ // Get node parameters
433
+ const model = this.getNodeParameter('model', itemIndex);
434
+ const taskType = this.getNodeParameter('taskType', itemIndex, 'tool_calling');
435
+ const options = this.getNodeParameter('options', itemIndex, {});
436
+ // Create the LangChain chat model
437
+ const chatModel = new ZihinLangChainChatModel({
438
+ apiKey,
439
+ modelName: model,
440
+ taskType,
441
+ temperature: options.temperature,
442
+ maxTokens: options.maxTokens,
443
+ topP: options.topP,
444
+ frequencyPenalty: options.frequencyPenalty,
445
+ presencePenalty: options.presencePenalty,
446
+ });
447
+ return {
448
+ response: chatModel,
449
+ };
450
+ }
451
+ }
452
+ exports.ZihinChatModel = ZihinChatModel;
453
+ //# sourceMappingURL=ZihinChatModel.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ZihinChatModel.node.js","sourceRoot":"","sources":["../../../src/nodes/ZihinChatModel/ZihinChatModel.node.ts"],"names":[],"mappings":";;;AAQA,uDAAuD;AACvD,MAAM,wBAAwB,GAAG,kBAAwC,CAAC;AAE1E,6EAIqD;AACrD,uDAMkC;AA0ElC;;;GAGG;AACH,MAAM,uBAAwB,SAAQ,2BAAoC;IAWzE,MAAM,CAAC,OAAO;QACb,OAAO,gBAAgB,CAAC;IACzB,CAAC;IAED,IAAI,UAAU;QACb,OAAO;YACN,MAAM,EAAE,eAAe;SACvB,CAAC;IACH,CAAC;IAED,YAAY,MAA4B;QACvC,KAAK,CAAC,EAAE,CAAC,CAAC;QAbH,eAAU,GAAgB,EAAE,CAAC;QAcpC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QAClC,IAAI,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,IAAI,cAAc,CAAC;QAClD,IAAI,CAAC,WAAW,GAAG,MAAM,CAAC,WAAW,IAAI,GAAG,CAAC;QAC7C,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC;QAC1C,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,CAAC,CAAC;QAC7B,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,IAAI,CAAC,CAAC;QACrD,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,IAAI,CAAC,CAAC;IACpD,CAAC;IAED,QAAQ;QACP,OAAO,OAAO,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,MAAe;QACzC,IAAI,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAEvB,0DAA0D;QAC1D,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACnD,iDAAiD;YACjD,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;gBACtB,0CAA0C;gBAC1C,MAAM,SAAS,GAAG,MAA6C,CAAC;gBAChE,IAAI,SAAS,CAAC,KAAK,IAAI,OAAO,SAAS,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;oBAC5D,qCAAqC;oBACrC,MAAM,UAAU,GAA4B,EAAE,CAAC;oBAC/C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,KAAgC,CAAC,EAAE,CAAC;wBACvF,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,EAAE,QAAQ,EAAE,CAAC,CAAC,iCAAiC;wBACvE,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,MAAM,IAAI,KAAK,EAAE,CAAC;4BAC3D,MAAM,GAAG,GAAI,KAA+D,CAAC,IAAI,CAAC;4BAClF,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;gCACpB,UAAU,CAAC,GAAG,CAA6B,CAAC,WAAW,GAAG,GAAG,CAAC,WAAW,CAAC;4BAC5E,CAAC;wBACF,CAAC;oBACF,CAAC;oBACD,OAAO;wBACN,IAAI,EAAE,QAAQ;wBACd,UAAU;qBACV,CAAC;gBACH,CAAC;gBACD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;YAC3C,CAAC;YACD,6BAA6B;YAC7B,OAAO,MAAiC,CAAC;QAC1C,CAAC;QACD,OAAO,EAAE,CAAC;IACX,CAAC;IAED;;OAEG;IACM,SAAS,CACjB,KAAuB,EACvB,OAAwC;QAExC,0CAA0C;QAC1C,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YACpC,gCAAgC;YAChC,IAAI,MAAM,IAAI,IAAI,IAAI,aAAa,IAAI,IAAI,EAAE,CAAC;gBAC7C,MAAM,cAAc,GAAG,IAA+B,CAAC;gBACvD,OAAO;oBACN,IAAI,EAAE,UAAmB;oBACzB,QAAQ,EAAE;wBACT,IAAI,EAAE,cAAc,CAAC,IAAI;wBACzB,WAAW,EAAE,cAAc,CAAC,WAAW;wBACvC,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAC,cAAc,CAAC,MAAM,CAAC;qBAC1D;iBACD,CAAC;YACH,CAAC;YACD,6BAA6B;YAC7B,OAAO;gBACN,IAAI,EAAE,UAAmB;gBACzB,QAAQ,EAAE;oBACT,IAAI,EAAE,MAAM,CAAE,IAAgC,CAAC,IAAI,IAAI,SAAS,CAAC;oBACjE,WAAW,EAAE,MAAM,CAAE,IAAgC,CAAC,WAAW,IAAI,EAAE,CAAC;oBACxE,UAAU,EAAE,IAAI,CAAC,kBAAkB,CAAE,IAAgC,CAAC,MAAM,CAAC;iBAC7E;aACD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,qDAAqD;QACrD,OAAO,IAAiF,CAAC;IAC1F,CAAC;IAED;;OAEG;IACK,eAAe,CAAC,QAAuB;QAC9C,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;YAC/B,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,EAAE,CAAC;YAEhC,iDAAiD;YACjD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;gBACrB,MAAM,OAAO,GAAG,OAAsB,CAAC;gBACvC,OAAO;oBACN,IAAI,EAAE,MAAe;oBACrB,OAAO,EAAE,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;oBAChG,YAAY,EAAE,OAAO,CAAC,YAAY;iBAClC,CAAC;YACH,CAAC;YAED,qCAAqC;YACrC,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;gBACnB,MAAM,KAAK,GAAG,OAAoB,CAAC;gBACnC,MAAM,QAAQ,GAAiB;oBAC9B,IAAI,EAAE,WAAW;oBACjB,OAAO,EAAE,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC;iBAC1F,CAAC;gBAEF,sCAAsC;gBACtC,IAAI,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACrD,QAAQ,CAAC,UAAU,GAAG,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;wBACnD,EAAE,EAAE,EAAE,CAAC,EAAE,IAAI,QAAQ,IAAI,CAAC,GAAG,EAAE,EAAE;wBACjC,IAAI,EAAE,UAAmB;wBACzB,QAAQ,EAAE;4BACT,IAAI,EAAE,EAAE,CAAC,IAAI;4BACb,SAAS,EAAE,OAAO,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,IAAI,CAAC;yBAC1E;qBACD,CAAC,CAAC,CAAC;gBACL,CAAC;gBAED,OAAO,QAAQ,CAAC;YACjB,CAAC;YAED,6BAA6B;YAC7B,IAAI,IAAqC,CAAC;YAE1C,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;gBACvB,IAAI,GAAG,QAAQ,CAAC;YACjB,CAAC;iBAAM,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;gBAC7B,IAAI,GAAG,MAAM,CAAC;YACf,CAAC;iBAAM,IAAI,OAAO,YAAY,sBAAW,EAAE,CAAC;gBAC3C,MAAM,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC5C,IAAI,QAAQ,KAAK,QAAQ,EAAE,CAAC;oBAC3B,IAAI,GAAG,QAAQ,CAAC;gBACjB,CAAC;qBAAM,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;oBACrC,IAAI,GAAG,WAAW,CAAC;gBACpB,CAAC;qBAAM,CAAC;oBACP,IAAI,GAAG,MAAM,CAAC;gBACf,CAAC;YACF,CAAC;iBAAM,CAAC;gBACP,IAAI,GAAG,MAAM,CAAC;YACf,CAAC;YAED,OAAO;gBACN,IAAI;gBACJ,OAAO,EAAE,OAAO,OAAO,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC;aAChG,CAAC;QACH,CAAC,CAAC,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,SAAS,CACd,QAAuB,EACvB,OAAkC,EAClC,WAAsC;QAEtC,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,QAAQ,CAAC,CAAC;QAErD,MAAM,WAAW,GAA4B;YAC5C,KAAK,EAAE,IAAI,CAAC,SAAS;YACrB,QAAQ,EAAE,aAAa;YACvB,OAAO,EAAE;gBACR,WAAW,EAAE,OAAO,CAAC,WAAW,IAAI,IAAI,CAAC,WAAW;gBACpD,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS;gBAC9C,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI;gBAC/B,gBAAgB,EAAE,OAAO,CAAC,gBAAgB,IAAI,IAAI,CAAC,gBAAgB;gBACnE,eAAe,EAAE,OAAO,CAAC,eAAe,IAAI,IAAI,CAAC,eAAe;aAChE;SACD,CAAC;QAEF,qBAAqB;QACrB,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChC,WAAW,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC;QACrC,CAAC;QAED,+BAA+B;QAC/B,IAAI,IAAI,CAAC,SAAS,KAAK,MAAM,EAAE,CAAC;YAC/B,WAAW,CAAC,OAAO,GAAG;gBACrB,IAAI,EAAE,IAAI,CAAC,QAAQ;aACnB,CAAC;QACH,CAAC;QAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,6CAA6C,EAAE;YAC3E,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACR,cAAc,EAAE,kBAAkB;gBAClC,WAAW,EAAE,IAAI,CAAC,MAAM;aACxB;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;SACjC,CAAC,CAAC;QAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,oBAAoB,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,EAAE,CAAC,CAAC;QAC/E,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAkB,CAAC;QAExD,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,KAAK,IAAI,6BAA6B,CAAC,CAAC;QAClF,CAAC;QAED,iDAAiD;QACjD,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,IAAI,EAAE,CAAC;QACnD,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACtD,EAAE,EAAE,EAAE,CAAC,EAAE;YACT,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI;YACtB,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,QAAQ,CAAC,SAAS,IAAI,IAAI,CAAC;YAC/C,IAAI,EAAE,WAAoB;SAC1B,CAAC,CAAC,CAAC;QAEJ,MAAM,SAAS,GAAG,IAAI,oBAAS,CAAC;YAC/B,OAAO,EAAE,gBAAgB;YACzB,UAAU,EAAE,SAAS;YACrB,iBAAiB,EAAE;gBAClB,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK;gBACxB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;gBAC9B,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa;gBACxC,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,WAAW;aACpC;SACD,CAAC,CAAC;QAEH,MAAM,UAAU,GAAmB;YAClC,IAAI,EAAE,gBAAgB;YACtB,OAAO,EAAE,SAAS;YAClB,cAAc,EAAE;gBACf,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa;aACxC;SACD,CAAC;QAEF,OAAO;YACN,WAAW,EAAE,CAAC,UAAU,CAAC;YACzB,SAAS,EAAE;gBACV,UAAU,EAAE;oBACX,YAAY,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,aAAa;oBAC7C,gBAAgB,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,iBAAiB;oBACrD,WAAW,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY;iBAC3C;gBACD,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,KAAK;gBACxB,QAAQ,EAAE,MAAM,CAAC,IAAI,CAAC,QAAQ;aAC9B;SACD,CAAC;IACH,CAAC;CACD;AAED;;;GAGG;AACH,MAAa,cAAc;IAA3B;QACC,gBAAW,GAAyB;YACnC,WAAW,EAAE,kBAAkB;YAC/B,IAAI,EAAE,aAAa;YACnB,IAAI,EAAE,gBAAgB;YACtB,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,6FAA6F;YAC1G,QAAQ,EAAE;gBACT,IAAI,EAAE,kBAAkB;aACxB;YACD,KAAK,EAAE;gBACN,UAAU,EAAE,CAAC,IAAI,CAAC;gBAClB,aAAa,EAAE;oBACd,EAAE,EAAE,CAAC,iBAAiB,EAAE,2BAA2B,CAAC;iBACpD;gBACD,SAAS,EAAE;oBACV,oBAAoB,EAAE;wBACrB;4BACC,GAAG,EAAE,uBAAuB;yBAC5B;qBACD;iBACD;aACD;YACD,iCAAiC;YACjC,MAAM,EAAE,EAAE;YACV,uCAAuC;YACvC,OAAO,EAAE,CAAC,wBAAwB,CAAC;YACnC,WAAW,EAAE,CAAC,OAAO,CAAC;YACtB,WAAW,EAAE;gBACZ;oBACC,IAAI,EAAE,UAAU;oBAChB,QAAQ,EAAE,IAAI;iBACd;aACD;YACD,UAAU,EAAE;gBACX,kBAAkB;gBAClB;oBACC,WAAW,EAAE,OAAO;oBACpB,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,SAAS;oBACf,QAAQ,EAAE,IAAI;oBACd,OAAO,EAAE,MAAM;oBACf,WAAW,EAAE,mFAAmF;oBAChG,OAAO,EAAE;wBACR,EAAE,IAAI,EAAE,+BAA+B,EAAE,KAAK,EAAE,MAAM,EAAE;wBACxD,wBAAwB;wBACxB,EAAE,IAAI,EAAE,gBAAgB,EAAE,KAAK,EAAE,cAAc,EAAE;wBACjD,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,mBAAmB,EAAE;wBAC3D,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,mBAAmB,EAAE;wBAC3D,0BAA0B;wBAC1B,EAAE,IAAI,EAAE,kBAAkB,EAAE,KAAK,EAAE,gBAAgB,EAAE;wBACrD,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,qBAAqB,EAAE;wBAC/D,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,qBAAqB,EAAE;wBAC/D,gCAAgC;wBAChC,EAAE,IAAI,EAAE,+BAA+B,EAAE,KAAK,EAAE,sCAAsC,EAAE;wBACxF,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,qCAAqC,EAAE;wBACtF,8BAA8B;wBAC9B,EAAE,IAAI,EAAE,6BAA6B,EAAE,KAAK,EAAE,oCAAoC,EAAE;wBACpF,EAAE,IAAI,EAAE,6BAA6B,EAAE,KAAK,EAAE,oCAAoC,EAAE;wBACpF,qBAAqB;wBACrB,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,qCAAqC,EAAE;wBACtF,yBAAyB;wBACzB,EAAE,IAAI,EAAE,gCAAgC,EAAE,KAAK,EAAE,8BAA8B,EAAE;wBACjF,EAAE,IAAI,EAAE,2BAA2B,EAAE,KAAK,EAAE,yBAAyB,EAAE;wBACvE,EAAE,IAAI,EAAE,gCAAgC,EAAE,KAAK,EAAE,8BAA8B,EAAE;wBACjF,uBAAuB;wBACvB,EAAE,IAAI,EAAE,8BAA8B,EAAE,KAAK,EAAE,4BAA4B,EAAE;wBAC7E,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,gCAAgC,EAAE;wBACvE,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,kBAAkB,EAAE;wBACpD,EAAE,IAAI,EAAE,uBAAuB,EAAE,KAAK,EAAE,uBAAuB,EAAE;wBACjE,uBAAuB;wBACvB,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE;wBAC/C,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,kBAAkB,EAAE;wBACzD,uBAAuB;wBACvB,EAAE,IAAI,EAAE,eAAe,EAAE,KAAK,EAAE,kBAAkB,EAAE;wBACpD,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,yBAAyB,EAAE;qBAClE;iBACD;gBACD,mDAAmD;gBACnD;oBACC,WAAW,EAAE,WAAW;oBACxB,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,cAAc;oBACvB,WAAW,EAAE,yFAAyF;oBACtG,cAAc,EAAE;wBACf,IAAI,EAAE;4BACL,KAAK,EAAE,CAAC,MAAM,CAAC;yBACf;qBACD;oBACD,OAAO,EAAE;wBACR,EAAE,IAAI,EAAE,uCAAuC,EAAE,KAAK,EAAE,cAAc,EAAE;wBACxE,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,MAAM,EAAE;wBAC7C,EAAE,IAAI,EAAE,sBAAsB,EAAE,KAAK,EAAE,QAAQ,EAAE;wBACjD,EAAE,IAAI,EAAE,oBAAoB,EAAE,KAAK,EAAE,UAAU,EAAE;wBACjD,EAAE,IAAI,EAAE,yBAAyB,EAAE,KAAK,EAAE,UAAU,EAAE;wBACtD,EAAE,IAAI,EAAE,qBAAqB,EAAE,KAAK,EAAE,UAAU,EAAE;wBAClD,EAAE,IAAI,EAAE,gCAAgC,EAAE,KAAK,EAAE,YAAY,EAAE;qBAC/D;iBACD;gBACD,mCAAmC;gBACnC;oBACC,WAAW,EAAE,SAAS;oBACtB,IAAI,EAAE,SAAS;oBACf,IAAI,EAAE,YAAY;oBAClB,WAAW,EAAE,YAAY;oBACzB,OAAO,EAAE,EAAE;oBACX,OAAO,EAAE;wBACR;4BACC,WAAW,EAAE,aAAa;4BAC1B,IAAI,EAAE,aAAa;4BACnB,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE;gCACZ,QAAQ,EAAE,CAAC;gCACX,QAAQ,EAAE,CAAC;gCACX,cAAc,EAAE,GAAG;6BACnB;4BACD,OAAO,EAAE,GAAG;4BACZ,WAAW,EAAE,kEAAkE;yBAC/E;wBACD;4BACC,WAAW,EAAE,YAAY;4BACzB,IAAI,EAAE,WAAW;4BACjB,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE;gCACZ,QAAQ,EAAE,CAAC;gCACX,QAAQ,EAAE,MAAM;6BAChB;4BACD,OAAO,EAAE,IAAI;4BACb,WAAW,EAAE,qCAAqC;yBAClD;wBACD;4BACC,WAAW,EAAE,OAAO;4BACpB,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE;gCACZ,QAAQ,EAAE,CAAC;gCACX,QAAQ,EAAE,CAAC;gCACX,cAAc,EAAE,GAAG;6BACnB;4BACD,OAAO,EAAE,CAAC;4BACV,WAAW,EAAE,8CAA8C;yBAC3D;wBACD;4BACC,WAAW,EAAE,mBAAmB;4BAChC,IAAI,EAAE,kBAAkB;4BACxB,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE;gCACZ,QAAQ,EAAE,CAAC,CAAC;gCACZ,QAAQ,EAAE,CAAC;gCACX,cAAc,EAAE,GAAG;6BACnB;4BACD,OAAO,EAAE,CAAC;4BACV,WAAW,EAAE,sCAAsC;yBACnD;wBACD;4BACC,WAAW,EAAE,kBAAkB;4BAC/B,IAAI,EAAE,iBAAiB;4BACvB,IAAI,EAAE,QAAQ;4BACd,WAAW,EAAE;gCACZ,QAAQ,EAAE,CAAC,CAAC;gCACZ,QAAQ,EAAE,CAAC;gCACX,cAAc,EAAE,GAAG;6BACnB;4BACD,OAAO,EAAE,CAAC;4BACV,WAAW,EAAE,qCAAqC;yBAClD;qBACD;iBACD;aACD;SACD,CAAC;IAqCH,CAAC;IAnCA;;OAEG;IACH,KAAK,CAAC,UAAU,CAA6B,SAAiB;QAC7D,kBAAkB;QAClB,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,CAAC;QAC1D,MAAM,MAAM,GAAG,WAAW,CAAC,MAAgB,CAAC;QAE5C,sBAAsB;QACtB,MAAM,KAAK,GAAG,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,SAAS,CAAW,CAAC;QAClE,MAAM,QAAQ,GAAG,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,SAAS,EAAE,cAAc,CAAW,CAAC;QACxF,MAAM,OAAO,GAAG,IAAI,CAAC,gBAAgB,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE,CAM7D,CAAC;QAEF,kCAAkC;QAClC,MAAM,SAAS,GAAG,IAAI,uBAAuB,CAAC;YAC7C,MAAM;YACN,SAAS,EAAE,KAAK;YAChB,QAAQ;YACR,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,gBAAgB,EAAE,OAAO,CAAC,gBAAgB;YAC1C,eAAe,EAAE,OAAO,CAAC,eAAe;SACxC,CAAC,CAAC;QAEH,OAAO;YACN,QAAQ,EAAE,SAAS;SACnB,CAAC;IACH,CAAC;CACD;AAhND,wCAgNC"}
@@ -0,0 +1,22 @@
1
+ {
2
+ "node": "n8n-nodes-zihin.lmChatZihin",
3
+ "nodeVersion": "1.0",
4
+ "codexVersion": "1.0",
5
+ "categories": ["AI"],
6
+ "resources": {
7
+ "credentialDocumentation": [
8
+ {
9
+ "url": "https://docs.zihin.ai/api-keys"
10
+ }
11
+ ],
12
+ "primaryDocumentation": [
13
+ {
14
+ "url": "https://docs.zihin.ai/n8n"
15
+ }
16
+ ]
17
+ },
18
+ "alias": ["llm", "ai", "gpt", "claude", "gemini", "chat", "openai", "anthropic", "google", "grok", "langchain", "agent"],
19
+ "subcategories": {
20
+ "AI": ["Language Models", "Chat Models (Recommended)"]
21
+ }
22
+ }
@@ -0,0 +1,22 @@
1
+ {
2
+ "node": "n8n-nodes-zihin.zihinGateway",
3
+ "nodeVersion": "1.0",
4
+ "codexVersion": "1.0",
5
+ "categories": ["AI", "Development"],
6
+ "resources": {
7
+ "credentialDocumentation": [
8
+ {
9
+ "url": "https://docs.zihin.ai/api-keys"
10
+ }
11
+ ],
12
+ "primaryDocumentation": [
13
+ {
14
+ "url": "https://docs.zihin.ai/n8n"
15
+ }
16
+ ]
17
+ },
18
+ "alias": ["llm", "ai", "gpt", "claude", "gemini", "chat", "completion", "openai", "anthropic", "google"],
19
+ "subcategories": {
20
+ "AI": ["Language Models"]
21
+ }
22
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-nodes-zihin",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "n8n node for Zihin LLM Gateway - Unified LLM API with intelligent provider routing",
5
5
  "keywords": [
6
6
  "n8n-community-node-package",
@@ -12,7 +12,10 @@
12
12
  "anthropic",
13
13
  "claude",
14
14
  "gpt",
15
- "gemini"
15
+ "gemini",
16
+ "langchain",
17
+ "chat-model",
18
+ "ai-agent"
16
19
  ],
17
20
  "license": "MIT",
18
21
  "homepage": "https://zihin.ai",
@@ -26,7 +29,7 @@
26
29
  },
27
30
  "main": "dist/nodes/ZihinGateway/ZihinGateway.node.js",
28
31
  "scripts": {
29
- "build": "tsc && gulp build:icons",
32
+ "build": "tsc && gulp build:icons && gulp build:json",
30
33
  "dev": "tsc --watch",
31
34
  "lint": "eslint src --ext .ts",
32
35
  "lint:fix": "eslint src --ext .ts --fix",
@@ -41,9 +44,13 @@
41
44
  "dist/credentials/ZihinApi.credentials.js"
42
45
  ],
43
46
  "nodes": [
44
- "dist/nodes/ZihinGateway/ZihinGateway.node.js"
47
+ "dist/nodes/ZihinGateway/ZihinGateway.node.js",
48
+ "dist/nodes/ZihinChatModel/ZihinChatModel.node.js"
45
49
  ]
46
50
  },
51
+ "dependencies": {
52
+ "@langchain/core": "^0.3.0"
53
+ },
47
54
  "devDependencies": {
48
55
  "@types/node": "^20.10.0",
49
56
  "@typescript-eslint/eslint-plugin": "^6.13.0",
@@ -54,7 +61,8 @@
54
61
  "typescript": "^5.3.0"
55
62
  },
56
63
  "peerDependencies": {
57
- "n8n-workflow": "*"
64
+ "n8n-workflow": "*",
65
+ "@langchain/core": ">=0.3.0"
58
66
  },
59
67
  "engines": {
60
68
  "node": ">=18.0.0"