n8n-nodes-openrouter-selector 0.5.0 → 0.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -2,11 +2,13 @@
2
2
  * OpenRouter Chat Model Class
3
3
  *
4
4
  * Langchain-compatible BaseChatModel implementation for n8n AI Agent.
5
+ * Supports tool calling for AI Agent integration.
5
6
  */
6
- import { BaseChatModel, type BaseChatModelCallOptions } from '@langchain/core/language_models/chat_models';
7
- import { BaseMessage } from '@langchain/core/messages';
7
+ import { BaseChatModel, type BaseChatModelCallOptions, type BindToolsInput } from '@langchain/core/language_models/chat_models';
8
+ import { BaseMessage, AIMessageChunk } from '@langchain/core/messages';
8
9
  import type { CallbackManagerForLLMRun } from '@langchain/core/callbacks/manager';
9
10
  import { ChatResult } from '@langchain/core/outputs';
11
+ import { Runnable } from '@langchain/core/runnables';
10
12
  export interface OpenRouterChatModelConfig {
11
13
  apiKey: string;
12
14
  model: string;
@@ -18,14 +20,19 @@ export interface OpenRouterChatModelConfig {
18
20
  }
19
21
  export declare class OpenRouterChatModel extends BaseChatModel {
20
22
  private apiKey;
21
- private model;
23
+ private modelId;
22
24
  private temperature;
23
25
  private maxTokens;
24
26
  private topP;
25
27
  private frequencyPenalty;
26
28
  private presencePenalty;
29
+ private boundTools;
27
30
  constructor(config: OpenRouterChatModelConfig);
28
31
  _llmType(): string;
32
+ bindTools(tools: BindToolsInput[], _kwargs?: Partial<BaseChatModelCallOptions>): Runnable<BaseMessage[], AIMessageChunk, BaseChatModelCallOptions>;
33
+ private convertToolToOpenRouterFormat;
34
+ private zodToJsonSchema;
35
+ private getZodType;
29
36
  _generate(messages: BaseMessage[], options?: BaseChatModelCallOptions, _runManager?: CallbackManagerForLLMRun): Promise<ChatResult>;
30
37
  private convertMessages;
31
38
  }
@@ -1 +1 @@
1
- {"version":3,"file":"OpenRouterChatModel.class.d.ts","sourceRoot":"","sources":["../../../nodes/OpenRouterChatModel/OpenRouterChatModel.class.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,aAAa,EAAE,KAAK,wBAAwB,EAAE,MAAM,6CAA6C,CAAC;AAC3G,OAAO,EAAa,WAAW,EAA+B,MAAM,0BAA0B,CAAC;AAC/F,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAE,UAAU,EAAkB,MAAM,yBAAyB,CAAC;AAErE,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAuBD,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,KAAK,CAAS;IACtB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,eAAe,CAAS;gBAEpB,MAAM,EAAE,yBAAyB;IAW7C,QAAQ,IAAI,MAAM;IAIZ,SAAS,CACb,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,CAAC,EAAE,wBAAwB,EAClC,WAAW,CAAC,EAAE,wBAAwB,GACrC,OAAO,CAAC,UAAU,CAAC;IA+DtB,OAAO,CAAC,eAAe;CAaxB"}
1
+ {"version":3,"file":"OpenRouterChatModel.class.d.ts","sourceRoot":"","sources":["../../../nodes/OpenRouterChatModel/OpenRouterChatModel.class.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,aAAa,EACb,KAAK,wBAAwB,EAC7B,KAAK,cAAc,EACpB,MAAM,6CAA6C,CAAC;AACrD,OAAO,EAEL,WAAW,EAIX,cAAc,EACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,mCAAmC,CAAC;AAClF,OAAO,EAAE,UAAU,EAAkB,MAAM,yBAAyB,CAAC;AAErE,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,MAAM,WAAW,yBAAyB;IACxC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AA8CD,qBAAa,mBAAoB,SAAQ,aAAa;IACpD,OAAO,CAAC,MAAM,CAAS;IACvB,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,IAAI,CAAS;IACrB,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,eAAe,CAAS;IAChC,OAAO,CAAC,UAAU,CAAwB;gBAE9B,MAAM,EAAE,yBAAyB;IAW7C,QAAQ,IAAI,MAAM;IAIlB,SAAS,CACP,KAAK,EAAE,cAAc,EAAE,EACvB,OAAO,CAAC,EAAE,OAAO,CAAC,wBAAwB,CAAC,GAC1C,QAAQ,CAAC,WAAW,EAAE,EAAE,cAAc,EAAE,wBAAwB,CAAC;IAepE,OAAO,CAAC,6BAA6B;IAsBrC,OAAO,CAAC,eAAe;IA8CvB,OAAO,CAAC,UAAU;IAUZ,SAAS,CACb,QAAQ,EAAE,WAAW,EAAE,EACvB,OAAO,CAAC,EAAE,wBAAwB,EAClC,WAAW,CAAC,EAAE,wBAAwB,GACrC,OAAO,CAAC,UAAU,CAAC;IAsFtB,OAAO,CAAC,eAAe;CAkCxB"}
@@ -3,6 +3,7 @@
3
3
  * OpenRouter Chat Model Class
4
4
  *
5
5
  * Langchain-compatible BaseChatModel implementation for n8n AI Agent.
6
+ * Supports tool calling for AI Agent integration.
6
7
  */
7
8
  Object.defineProperty(exports, "__esModule", { value: true });
8
9
  exports.OpenRouterChatModel = void 0;
@@ -10,16 +11,17 @@ const chat_models_1 = require("@langchain/core/language_models/chat_models");
10
11
  const messages_1 = require("@langchain/core/messages");
11
12
  class OpenRouterChatModel extends chat_models_1.BaseChatModel {
12
13
  apiKey;
13
- model;
14
+ modelId;
14
15
  temperature;
15
16
  maxTokens;
16
17
  topP;
17
18
  frequencyPenalty;
18
19
  presencePenalty;
20
+ boundTools = [];
19
21
  constructor(config) {
20
22
  super({});
21
23
  this.apiKey = config.apiKey;
22
- this.model = config.model;
24
+ this.modelId = config.model;
23
25
  this.temperature = config.temperature ?? 0.7;
24
26
  this.maxTokens = config.maxTokens ?? 1000;
25
27
  this.topP = config.topP ?? 1;
@@ -29,10 +31,104 @@ class OpenRouterChatModel extends chat_models_1.BaseChatModel {
29
31
  _llmType() {
30
32
  return 'openrouter-chat';
31
33
  }
34
+ bindTools(tools, _kwargs) {
35
+ const boundModel = new OpenRouterChatModel({
36
+ apiKey: this.apiKey,
37
+ model: this.modelId,
38
+ temperature: this.temperature,
39
+ maxTokens: this.maxTokens,
40
+ topP: this.topP,
41
+ frequencyPenalty: this.frequencyPenalty,
42
+ presencePenalty: this.presencePenalty,
43
+ });
44
+ boundModel.boundTools = tools.map((tool) => this.convertToolToOpenRouterFormat(tool));
45
+ return boundModel;
46
+ }
47
+ convertToolToOpenRouterFormat(tool) {
48
+ // Handle StructuredTool or similar tool interfaces
49
+ if (typeof tool === 'object' && tool !== null) {
50
+ const toolObj = tool;
51
+ if (toolObj.name && toolObj.description && toolObj.schema) {
52
+ return {
53
+ type: 'function',
54
+ function: {
55
+ name: toolObj.name,
56
+ description: toolObj.description,
57
+ parameters: this.zodToJsonSchema(toolObj.schema),
58
+ },
59
+ };
60
+ }
61
+ // Handle raw function definition
62
+ if ('type' in tool && tool.type === 'function') {
63
+ return tool;
64
+ }
65
+ }
66
+ throw new Error(`Unsupported tool format: ${JSON.stringify(tool)}`);
67
+ }
68
+ zodToJsonSchema(schema) {
69
+ // If it's already a JSON schema object, return it
70
+ if (typeof schema === 'object' && schema !== null) {
71
+ const schemaObj = schema;
72
+ // Check if it has a jsonSchema property (some Zod schemas expose this)
73
+ if ('jsonSchema' in schemaObj) {
74
+ return schemaObj.jsonSchema;
75
+ }
76
+ // Check if it looks like a JSON schema already
77
+ if ('type' in schemaObj || 'properties' in schemaObj) {
78
+ return schemaObj;
79
+ }
80
+ // Try to get JSON schema from Zod
81
+ if (typeof schemaObj._def === 'object') {
82
+ // It's a Zod schema, try to convert
83
+ try {
84
+ const zodSchema = schemaObj;
85
+ if (zodSchema.shape) {
86
+ const properties = {};
87
+ const required = [];
88
+ for (const [key, value] of Object.entries(zodSchema.shape)) {
89
+ const fieldSchema = value;
90
+ properties[key] = {
91
+ type: this.getZodType(fieldSchema),
92
+ description: fieldSchema._def?.description || '',
93
+ };
94
+ // Check if field is required (not optional)
95
+ if (!fieldSchema._def?.typeName?.includes('Optional')) {
96
+ required.push(key);
97
+ }
98
+ }
99
+ return {
100
+ type: 'object',
101
+ properties,
102
+ required: required.length > 0 ? required : undefined,
103
+ };
104
+ }
105
+ }
106
+ catch {
107
+ // Fall through to default
108
+ }
109
+ }
110
+ }
111
+ // Default fallback
112
+ return { type: 'object', properties: {} };
113
+ }
114
+ getZodType(schema) {
115
+ const typeName = schema._def?.typeName || '';
116
+ if (typeName.includes('String'))
117
+ return 'string';
118
+ if (typeName.includes('Number'))
119
+ return 'number';
120
+ if (typeName.includes('Boolean'))
121
+ return 'boolean';
122
+ if (typeName.includes('Array'))
123
+ return 'array';
124
+ if (typeName.includes('Object'))
125
+ return 'object';
126
+ return 'string';
127
+ }
32
128
  async _generate(messages, options, _runManager) {
33
129
  const openRouterMessages = this.convertMessages(messages);
34
130
  const body = {
35
- model: this.model,
131
+ model: this.modelId,
36
132
  messages: openRouterMessages,
37
133
  temperature: this.temperature,
38
134
  max_tokens: this.maxTokens,
@@ -40,6 +136,10 @@ class OpenRouterChatModel extends chat_models_1.BaseChatModel {
40
136
  frequency_penalty: this.frequencyPenalty,
41
137
  presence_penalty: this.presencePenalty,
42
138
  };
139
+ if (this.boundTools.length > 0) {
140
+ body.tools = this.boundTools;
141
+ body.tool_choice = 'auto';
142
+ }
43
143
  if (options?.stop) {
44
144
  body.stop = options.stop;
45
145
  }
@@ -66,12 +166,29 @@ class OpenRouterChatModel extends chat_models_1.BaseChatModel {
66
166
  throw new Error(`OpenRouter API Error: ${response.status} - ${errorMessage}`);
67
167
  }
68
168
  const data = await response.json();
69
- const content = data.choices[0]?.message?.content ?? '';
169
+ const choice = data.choices[0];
170
+ const messageData = choice?.message;
171
+ let aiMessage;
172
+ if (messageData?.tool_calls && messageData.tool_calls.length > 0) {
173
+ // Create AIMessage with tool calls
174
+ aiMessage = new messages_1.AIMessage({
175
+ content: messageData.content || '',
176
+ tool_calls: messageData.tool_calls.map((tc) => ({
177
+ id: tc.id,
178
+ name: tc.function.name,
179
+ args: JSON.parse(tc.function.arguments),
180
+ type: 'tool_call',
181
+ })),
182
+ });
183
+ }
184
+ else {
185
+ aiMessage = new messages_1.AIMessage(messageData?.content || '');
186
+ }
70
187
  const generation = {
71
- text: content,
72
- message: new messages_1.AIMessage(content),
188
+ text: messageData?.content || '',
189
+ message: aiMessage,
73
190
  generationInfo: {
74
- finish_reason: data.choices[0]?.finish_reason,
191
+ finish_reason: choice?.finish_reason,
75
192
  },
76
193
  };
77
194
  return {
@@ -94,7 +211,29 @@ class OpenRouterChatModel extends chat_models_1.BaseChatModel {
94
211
  return { role: 'user', content: msg.content };
95
212
  }
96
213
  else if (msg instanceof messages_1.AIMessage) {
97
- return { role: 'assistant', content: msg.content };
214
+ const aiMsg = msg;
215
+ if (aiMsg.tool_calls && aiMsg.tool_calls.length > 0) {
216
+ return {
217
+ role: 'assistant',
218
+ content: aiMsg.content || null,
219
+ tool_calls: aiMsg.tool_calls.map((tc) => ({
220
+ id: tc.id || `call_${Math.random().toString(36).substr(2, 9)}`,
221
+ type: 'function',
222
+ function: {
223
+ name: tc.name,
224
+ arguments: JSON.stringify(tc.args),
225
+ },
226
+ })),
227
+ };
228
+ }
229
+ return { role: 'assistant', content: aiMsg.content };
230
+ }
231
+ else if (msg instanceof messages_1.ToolMessage) {
232
+ return {
233
+ role: 'tool',
234
+ content: msg.content,
235
+ tool_call_id: msg.tool_call_id,
236
+ };
98
237
  }
99
238
  // Default to user for unknown message types
100
239
  return { role: 'user', content: msg.content };
@@ -1 +1 @@
1
- {"version":3,"file":"OpenRouterChatModel.class.js","sourceRoot":"","sources":["../../../nodes/OpenRouterChatModel/OpenRouterChatModel.class.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OpenRouterChatModel.class.js","sourceRoot":"","sources":["../../../nodes/OpenRouterChatModel/OpenRouterChatModel.class.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "n8n-nodes-openrouter-selector",
3
- "version": "0.5.0",
3
+ "version": "0.5.1",
4
4
  "description": "n8n community node for intelligent OpenRouter model selection based on task, budget, and benchmarks",
5
5
  "keywords": [
6
6
  "n8n-community-node-package",