@cascadeflow/n8n-nodes-cascadeflow 0.6.7 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (27) hide show
  1. package/README.md +16 -11
  2. package/dist/nodes/CascadeFlowAgent/CascadeFlowAgent.node.d.ts +34 -0
  3. package/dist/nodes/CascadeFlowAgent/CascadeFlowAgent.node.d.ts.map +1 -0
  4. package/dist/nodes/CascadeFlowAgent/CascadeFlowAgent.node.js +466 -0
  5. package/dist/nodes/CascadeFlowAgent/CascadeFlowAgent.node.js.map +1 -0
  6. package/dist/nodes/CascadeFlowAgent/__tests__/cascadeflow-agent-executor.test.d.ts +2 -0
  7. package/dist/nodes/CascadeFlowAgent/__tests__/cascadeflow-agent-executor.test.d.ts.map +1 -0
  8. package/dist/nodes/CascadeFlowAgent/__tests__/cascadeflow-agent-executor.test.js +98 -0
  9. package/dist/nodes/CascadeFlowAgent/__tests__/cascadeflow-agent-executor.test.js.map +1 -0
  10. package/dist/nodes/CascadeFlowAgent/cascadeflow.svg +15 -0
  11. package/dist/nodes/LmChatCascadeFlow/LmChatCascadeFlow.node.d.ts +100 -0
  12. package/dist/nodes/LmChatCascadeFlow/LmChatCascadeFlow.node.d.ts.map +1 -1
  13. package/dist/nodes/LmChatCascadeFlow/LmChatCascadeFlow.node.js +432 -303
  14. package/dist/nodes/LmChatCascadeFlow/LmChatCascadeFlow.node.js.map +1 -1
  15. package/dist/nodes/LmChatCascadeFlow/__tests__/lm-chat-cascadeflow-node.test.d.ts +2 -0
  16. package/dist/nodes/LmChatCascadeFlow/__tests__/lm-chat-cascadeflow-node.test.d.ts.map +1 -0
  17. package/dist/nodes/LmChatCascadeFlow/__tests__/lm-chat-cascadeflow-node.test.js +59 -0
  18. package/dist/nodes/LmChatCascadeFlow/__tests__/lm-chat-cascadeflow-node.test.js.map +1 -0
  19. package/dist/nodes/LmChatCascadeFlow/cascade-metadata.d.ts +27 -0
  20. package/dist/nodes/LmChatCascadeFlow/cascade-metadata.d.ts.map +1 -0
  21. package/dist/nodes/LmChatCascadeFlow/cascade-metadata.js +21 -0
  22. package/dist/nodes/LmChatCascadeFlow/cascade-metadata.js.map +1 -0
  23. package/dist/nodes/LmChatCascadeFlow/config.d.ts +41 -0
  24. package/dist/nodes/LmChatCascadeFlow/config.d.ts.map +1 -0
  25. package/dist/nodes/LmChatCascadeFlow/config.js +87 -0
  26. package/dist/nodes/LmChatCascadeFlow/config.js.map +1 -0
  27. package/package.json +17 -12
package/README.md CHANGED
@@ -61,7 +61,7 @@ The cascadeflow node is a **Language Model sub-node** that sits between your AI
61
61
 
62
62
  **Result:** 70-80% of queries accept the drafter, saving 40-85% on costs.
63
63
 
64
- > **ℹ️ Note:** cascadeflow works with n8n Chain nodes but **not with AI Agent nodes**, as n8n only allows whitelisted models for Agent inputs. Use with Basic LLM Chain, Chain, or other nodes that accept Language Model connections.
64
+ > **ℹ️ Note:** Use **CascadeFlow (Model)** with n8n Chain/LLM nodes, and **CascadeFlow Agent** for agent workflows (tool calling + multi-step). The Agent node adds trace metadata and supports tool routing.
65
65
 
66
66
  ## Installation
67
67
 
@@ -99,12 +99,12 @@ RUN cd /usr/local/lib/node_modules/n8n && npm install @cascadeflow/n8n-nodes-cas
99
99
  2. **Add the cascadeflow node**
100
100
  - Connect the drafter model to the **Drafter** input
101
101
  - Connect the verifier model to the **Verifier** input
102
- - Adjust the **Quality Threshold** (default: 0.7)
102
+ - Optionally adjust the **Quality Threshold** (default: 0.4, and per-complexity thresholds are enabled by default)
103
103
 
104
104
  3. **Connect to a Chain node**
105
105
  - The cascadeflow node outputs a Language Model connection
106
106
  - Connect it to nodes that accept AI models (Basic LLM Chain, Chain, etc.)
107
- - **Note:** Does not work with AI Agent nodes (n8n limitation)
107
+ - For agent workflows, use the **CascadeFlow Agent** node (connect tools to its `Tools` input).
108
108
 
109
109
  ### Example Workflow
110
110
 
@@ -120,7 +120,7 @@ RUN cd /usr/local/lib/node_modules/n8n && npm install @cascadeflow/n8n-nodes-cas
120
120
  │ gpt-4o-mini │ │ cascadeflow │ ┌──────────────────┐
121
121
  └──────────────────┘ │ Node │──────►│ Basic LLM Chain │
122
122
  │ │ │ │
123
- ┌──────────────────┐ │ Threshold: 0.7 │ └──────────────────┘
123
+ ┌──────────────────┐ │ Threshold: 0.4 │ └──────────────────┘
124
124
  │ OpenAI Model │──────►│ │
125
125
  │ gpt-4o │ └──────────────────┘
126
126
  └──────────────────┘
@@ -132,11 +132,16 @@ RUN cd /usr/local/lib/node_modules/n8n && npm install @cascadeflow/n8n-nodes-cas
132
132
 
133
133
  #### Quality Threshold (0-1)
134
134
 
135
- Controls how aggressively to accept drafter responses:
135
+ Controls how aggressively to accept drafter responses when **Use Complexity Thresholds** is disabled.
136
136
 
137
- - **0.5-0.6**: Very aggressive (maximum cost savings, ~80-90% acceptance)
138
- - **0.7** (default): Balanced (good quality + savings, ~70-80% acceptance)
139
- - **0.8-0.9**: Conservative (highest quality, ~50-60% acceptance)
137
+ Defaults to **0.4** to match the `simple` tier in CascadeFlow's default per-complexity thresholds.
138
+
139
+ If you enable **Use Complexity Thresholds** (default), acceptance is driven by:
140
+ - trivial: 0.25
141
+ - simple: 0.4
142
+ - moderate: 0.55
143
+ - hard: 0.7
144
+ - expert: 0.8
140
145
 
141
146
  Lower threshold = more cost savings, higher threshold = better quality assurance.
142
147
 
@@ -400,7 +405,7 @@ Note: Requires Ollama installed locally
400
405
 
401
406
  The logs provide complete visibility into the cascade decision-making process, showing exactly which path was taken for each request.
402
407
 
403
- > **ℹ️ Important:** cascadeflow does **not work with AI Agent nodes** in n8n, as n8n only allows whitelisted models for Agent inputs. Use with Basic LLM Chain, Chain, or other nodes that accept Language Model connections.
408
+ > **ℹ️ Important:** If you need agent-style tool orchestration, use the **CascadeFlow Agent** node. It is designed for n8n agent flows and records a step-by-step trace in `response_metadata.cf.trace`.
404
409
 
405
410
  ## Compatibility
406
411
 
@@ -433,11 +438,11 @@ The logs provide complete visibility into the cascade decision-making process, s
433
438
 
434
439
  ### Issue: "This node cannot be connected" when connecting to AI Agent
435
440
 
436
- **Solution:** This is expected. cascadeflow does **not work with AI Agent nodes** because n8n only allows whitelisted models for Agent inputs. Use cascadeflow with:
441
+ **Solution:** Use the **CascadeFlow Agent** node for agent workflows. Use the **CascadeFlow (Model)** node for Chain/LLM workflows.
437
442
  - ✅ Basic LLM Chain
438
443
  - ✅ Chain
439
444
  - ✅ Other nodes that accept Language Model connections
440
- - AI Agent (not supported)
445
+ - CascadeFlow Agent (agent workflows)
441
446
 
442
447
  ### Issue: Always escalating to verifier
443
448
 
@@ -0,0 +1,34 @@
1
+ import type { INodeType, INodeTypeDescription, ISupplyDataFunctions, SupplyData } from 'n8n-workflow';
2
+ import { CascadeChatModel } from '../LmChatCascadeFlow/LmChatCascadeFlow.node';
3
+ type ToolRoutingMode = 'cascade' | 'verifier';
4
+ export interface ToolRoutingRule {
5
+ toolName: string;
6
+ routing: ToolRoutingMode;
7
+ }
8
+ export interface ToolLike {
9
+ name?: string;
10
+ description?: string;
11
+ invoke?: (args: any) => Promise<any>;
12
+ call?: (args: any) => Promise<any>;
13
+ run?: (args: any) => Promise<any>;
14
+ }
15
+ export declare class CascadeFlowAgentExecutor {
16
+ private cascadeModel;
17
+ private maxIterations;
18
+ private toolMap;
19
+ private routingRules;
20
+ constructor(cascadeModel: CascadeChatModel, tools: ToolLike[], routingRules: ToolRoutingRule[], maxIterations: number);
21
+ private normalizeMessages;
22
+ private extractToolCalls;
23
+ private executeTool;
24
+ private resolveRouting;
25
+ private buildTraceEntry;
26
+ invoke(input: any, options?: any): Promise<any>;
27
+ stream(input: any, options?: any): AsyncGenerator<any>;
28
+ }
29
+ export declare class CascadeFlowAgent implements INodeType {
30
+ description: INodeTypeDescription;
31
+ supplyData(this: ISupplyDataFunctions): Promise<SupplyData>;
32
+ }
33
+ export {};
34
+ //# sourceMappingURL=CascadeFlowAgent.node.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CascadeFlowAgent.node.d.ts","sourceRoot":"","sources":["../../../nodes/CascadeFlowAgent/CascadeFlowAgent.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,oBAAoB,EACpB,oBAAoB,EACpB,UAAU,EACX,MAAM,cAAc,CAAC;AAQtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,6CAA6C,CAAC;AAE/E,KAAK,eAAe,GAAG,SAAS,GAAG,UAAU,CAAC;AAE9C,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,eAAe,CAAC;CAC1B;AAQD,MAAM,WAAW,QAAQ;IACvB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,IAAI,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACnC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,GAAG,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;CACnC;AAED,qBAAa,wBAAwB;IAKjC,OAAO,CAAC,YAAY;IAGpB,OAAO,CAAC,aAAa;IAPvB,OAAO,CAAC,OAAO,CAAwB;IACvC,OAAO,CAAC,YAAY,CAA+B;gBAGzC,YAAY,EAAE,gBAAgB,EACtC,KAAK,EAAE,QAAQ,EAAE,EACjB,YAAY,EAAE,eAAe,EAAE,EACvB,aAAa,EAAE,MAAM;IAQ/B,OAAO,CAAC,iBAAiB;IA8EzB,OAAO,CAAC,gBAAgB;YA4CV,WAAW;IAqBzB,OAAO,CAAC,cAAc;IAUtB,OAAO,CAAC,eAAe;IAkBjB,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC;IA4D9C,MAAM,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,EAAE,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC;CAc9D;AAED,qBAAa,gBAAiB,YAAW,SAAS;IAChD,WAAW,EAAE,oBAAoB,CAwM/B;IAEI,UAAU,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC;CAgFlE"}
@@ -0,0 +1,466 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.CascadeFlowAgent = exports.CascadeFlowAgentExecutor = void 0;
4
+ const n8n_workflow_1 = require("n8n-workflow");
5
+ const messages_1 = require("@langchain/core/messages");
6
+ const LmChatCascadeFlow_node_1 = require("../LmChatCascadeFlow/LmChatCascadeFlow.node");
7
+ class CascadeFlowAgentExecutor {
8
+ constructor(cascadeModel, tools, routingRules, maxIterations) {
9
+ this.cascadeModel = cascadeModel;
10
+ this.maxIterations = maxIterations;
11
+ this.toolMap = new Map(tools.filter((tool) => tool?.name).map((tool) => [tool.name, tool]));
12
+ this.routingRules = new Map(routingRules.map((rule) => [rule.toolName, rule.routing]));
13
+ }
14
+ normalizeMessages(input) {
15
+ const isBaseMessage = (value) => {
16
+ return (value &&
17
+ typeof value === 'object' &&
18
+ typeof value._getType === 'function' &&
19
+ 'content' in value);
20
+ };
21
+ const coerceMessage = (value) => {
22
+ if (isBaseMessage(value)) {
23
+ return value;
24
+ }
25
+ if (typeof value === 'string') {
26
+ return new messages_1.HumanMessage(value);
27
+ }
28
+ if (!value || typeof value !== 'object') {
29
+ return new messages_1.HumanMessage(JSON.stringify(value ?? null));
30
+ }
31
+ const role = (value.role ?? value.type ?? '').toString().toLowerCase();
32
+ const content = value.content ?? value.text ?? '';
33
+ if (role === 'system') {
34
+ return new messages_1.SystemMessage(content);
35
+ }
36
+ if (role === 'assistant' || role === 'ai') {
37
+ return new messages_1.AIMessage(content);
38
+ }
39
+ if (role === 'tool') {
40
+ const toolCallId = value.tool_call_id ??
41
+ value.toolCallId ??
42
+ value.tool_callId ??
43
+ value.id ??
44
+ 'tool';
45
+ return new messages_1.ToolMessage({
46
+ content: typeof content === 'string' ? content : JSON.stringify(content),
47
+ tool_call_id: String(toolCallId),
48
+ });
49
+ }
50
+ // Default: treat as user/human.
51
+ return new messages_1.HumanMessage(content);
52
+ };
53
+ const normalizeList = (values) => values.map(coerceMessage);
54
+ if (Array.isArray(input)) {
55
+ return normalizeList(input);
56
+ }
57
+ if (typeof input === 'string') {
58
+ return [new messages_1.HumanMessage(input)];
59
+ }
60
+ if (input?.messages && Array.isArray(input.messages)) {
61
+ return normalizeList(input.messages);
62
+ }
63
+ if (input?.chatHistory && Array.isArray(input.chatHistory)) {
64
+ const history = normalizeList(input.chatHistory);
65
+ if (typeof input.input === 'string') {
66
+ return [...history, new messages_1.HumanMessage(input.input)];
67
+ }
68
+ return history;
69
+ }
70
+ if (typeof input?.input === 'string') {
71
+ return [new messages_1.HumanMessage(input.input)];
72
+ }
73
+ return [new messages_1.HumanMessage(JSON.stringify(input ?? null))];
74
+ }
75
+ extractToolCalls(message) {
76
+ const additionalKwargs = message.additional_kwargs || {};
77
+ const responseMetadata = message.response_metadata || {};
78
+ const toolCalls = additionalKwargs.tool_calls || responseMetadata.tool_calls;
79
+ if (Array.isArray(toolCalls)) {
80
+ return toolCalls
81
+ .map((toolCall) => {
82
+ const args = toolCall?.function?.arguments ?? toolCall?.arguments ?? '{}';
83
+ let parsedArgs = {};
84
+ try {
85
+ parsedArgs = typeof args === 'string' ? JSON.parse(args) : args;
86
+ }
87
+ catch {
88
+ parsedArgs = { raw: args };
89
+ }
90
+ return {
91
+ id: toolCall?.id ?? toolCall?.function?.name ?? `tool_${Date.now()}`,
92
+ name: toolCall?.function?.name ?? toolCall?.name,
93
+ args: parsedArgs,
94
+ };
95
+ })
96
+ .filter((call) => Boolean(call.name));
97
+ }
98
+ if (additionalKwargs.function_call) {
99
+ const functionCall = additionalKwargs.function_call;
100
+ let parsedArgs = {};
101
+ try {
102
+ parsedArgs = functionCall.arguments ? JSON.parse(functionCall.arguments) : {};
103
+ }
104
+ catch {
105
+ parsedArgs = { raw: functionCall.arguments };
106
+ }
107
+ return [
108
+ {
109
+ id: functionCall.name ?? `tool_${Date.now()}`,
110
+ name: functionCall.name,
111
+ args: parsedArgs,
112
+ },
113
+ ];
114
+ }
115
+ return [];
116
+ }
117
+ async executeTool(call) {
118
+ const tool = this.toolMap.get(call.name);
119
+ if (!tool) {
120
+ return `Tool '${call.name}' not found`;
121
+ }
122
+ if (tool.invoke) {
123
+ return JSON.stringify(await tool.invoke(call.args));
124
+ }
125
+ if (tool.call) {
126
+ return JSON.stringify(await tool.call(call.args));
127
+ }
128
+ if (tool.run) {
129
+ return JSON.stringify(await tool.run(call.args));
130
+ }
131
+ return `Tool '${call.name}' has no callable method`;
132
+ }
133
+ resolveRouting(toolCalls) {
134
+ for (const call of toolCalls) {
135
+ const routing = this.routingRules.get(call.name);
136
+ if (routing === 'verifier') {
137
+ return 'verifier';
138
+ }
139
+ }
140
+ return 'cascade';
141
+ }
142
+ buildTraceEntry(message, toolCalls = []) {
143
+ const responseMetadata = message.response_metadata || {};
144
+ const cf = responseMetadata.cf || {};
145
+ const cascadeflow = responseMetadata.cascadeflow || {};
146
+ return {
147
+ model_used: cf.model_used ?? cascadeflow.model_used ?? 'unknown',
148
+ domain: cf.domain ?? cascadeflow.domain ?? null,
149
+ confidence: cf.confidence ?? cascadeflow.confidence ?? null,
150
+ complexity: cf.complexity ?? cascadeflow.complexity ?? null,
151
+ costs: cf.costs ?? null,
152
+ savings: cf.savings ?? null,
153
+ flow: cascadeflow.flow ?? null,
154
+ reason: cascadeflow.reason ?? null,
155
+ tool_calls: toolCalls.map((call) => call.name),
156
+ };
157
+ }
158
+ async invoke(input, options) {
159
+ const messages = this.normalizeMessages(input);
160
+ const trace = [];
161
+ let currentMessages = [...messages];
162
+ let finalMessage = null;
163
+ let iterations = 0;
164
+ while (iterations < this.maxIterations) {
165
+ const message = await this.cascadeModel.invoke(currentMessages, options);
166
+ const toolCalls = this.extractToolCalls(message);
167
+ trace.push(this.buildTraceEntry(message, toolCalls));
168
+ if (toolCalls.length === 0) {
169
+ finalMessage = message;
170
+ break;
171
+ }
172
+ const routing = this.resolveRouting(toolCalls);
173
+ currentMessages = [...currentMessages, message];
174
+ for (const call of toolCalls) {
175
+ const toolResult = await this.executeTool(call);
176
+ currentMessages.push(new messages_1.ToolMessage({
177
+ content: toolResult,
178
+ tool_call_id: call.id,
179
+ }));
180
+ }
181
+ if (routing === 'verifier') {
182
+ const verifierMessage = await this.cascadeModel.invokeVerifierDirect(currentMessages, options);
183
+ trace.push(this.buildTraceEntry(verifierMessage));
184
+ finalMessage = verifierMessage;
185
+ break;
186
+ }
187
+ iterations += 1;
188
+ }
189
+ if (!finalMessage) {
190
+ finalMessage = new messages_1.AIMessage('Agent did not produce a final response.');
191
+ }
192
+ if (!finalMessage.response_metadata) {
193
+ finalMessage.response_metadata = {};
194
+ }
195
+ finalMessage.response_metadata.cf = {
196
+ ...(finalMessage.response_metadata.cf || {}),
197
+ trace,
198
+ };
199
+ return {
200
+ output: finalMessage.content.toString(),
201
+ message: finalMessage,
202
+ trace,
203
+ };
204
+ }
205
+ async *stream(input, options) {
206
+ const messages = this.normalizeMessages(input);
207
+ // For tool-driven execution we currently return a single final response.
208
+ if (this.toolMap.size > 0) {
209
+ yield await this.invoke(messages, options);
210
+ return;
211
+ }
212
+ const stream = await this.cascadeModel.stream(messages, options);
213
+ for await (const chunk of stream) {
214
+ yield chunk;
215
+ }
216
+ }
217
+ }
218
+ exports.CascadeFlowAgentExecutor = CascadeFlowAgentExecutor;
219
+ class CascadeFlowAgent {
220
+ constructor() {
221
+ this.description = {
222
+ displayName: 'CascadeFlow Agent',
223
+ name: 'cascadeFlowAgent',
224
+ icon: 'file:cascadeflow.svg',
225
+ group: ['transform'],
226
+ version: 1,
227
+ description: 'CascadeFlow AI Agent with drafter/verifier orchestration, tool routing, and trace metadata.',
228
+ defaults: {
229
+ name: 'CascadeFlow Agent',
230
+ },
231
+ codex: {
232
+ categories: ['AI'],
233
+ subcategories: {
234
+ AI: ['Agents'],
235
+ },
236
+ resources: {
237
+ primaryDocumentation: [
238
+ {
239
+ url: 'https://github.com/lemony-ai/cascadeflow',
240
+ },
241
+ ],
242
+ },
243
+ },
244
+ // eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node
245
+ inputs: [
246
+ {
247
+ displayName: 'Verifier',
248
+ type: 'ai_languageModel',
249
+ maxConnections: 1,
250
+ required: true,
251
+ },
252
+ {
253
+ displayName: 'Drafter',
254
+ type: 'ai_languageModel',
255
+ maxConnections: 1,
256
+ required: true,
257
+ },
258
+ {
259
+ displayName: 'Tools',
260
+ type: 'ai_tool',
261
+ maxConnections: 99,
262
+ required: false,
263
+ },
264
+ ],
265
+ // eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong
266
+ outputs: ['ai_agent'],
267
+ outputNames: ['Agent'],
268
+ properties: [
269
+ {
270
+ displayName: 'Quality Threshold',
271
+ name: 'qualityThreshold',
272
+ type: 'number',
273
+ default: 0.4,
274
+ typeOptions: {
275
+ minValue: 0,
276
+ maxValue: 1,
277
+ numberPrecision: 2,
278
+ },
279
+ description: 'Minimum quality score (0-1) to accept drafter response',
280
+ },
281
+ {
282
+ displayName: 'Use Complexity Thresholds',
283
+ name: 'useComplexityThresholds',
284
+ type: 'boolean',
285
+ default: true,
286
+ description: 'Whether to use per-complexity confidence thresholds (trivial → expert)',
287
+ },
288
+ {
289
+ displayName: 'Trivial Threshold',
290
+ name: 'trivialThreshold',
291
+ type: 'number',
292
+ default: 0.25,
293
+ displayOptions: { show: { useComplexityThresholds: [true] } },
294
+ typeOptions: {
295
+ minValue: 0,
296
+ maxValue: 1,
297
+ numberPrecision: 2,
298
+ },
299
+ description: 'Minimum confidence for trivial queries',
300
+ },
301
+ {
302
+ displayName: 'Simple Threshold',
303
+ name: 'simpleThreshold',
304
+ type: 'number',
305
+ default: 0.4,
306
+ displayOptions: { show: { useComplexityThresholds: [true] } },
307
+ typeOptions: {
308
+ minValue: 0,
309
+ maxValue: 1,
310
+ numberPrecision: 2,
311
+ },
312
+ description: 'Minimum confidence for simple queries',
313
+ },
314
+ {
315
+ displayName: 'Moderate Threshold',
316
+ name: 'moderateThreshold',
317
+ type: 'number',
318
+ default: 0.55,
319
+ displayOptions: { show: { useComplexityThresholds: [true] } },
320
+ typeOptions: {
321
+ minValue: 0,
322
+ maxValue: 1,
323
+ numberPrecision: 2,
324
+ },
325
+ description: 'Minimum confidence for moderate queries',
326
+ },
327
+ {
328
+ displayName: 'Hard Threshold',
329
+ name: 'hardThreshold',
330
+ type: 'number',
331
+ default: 0.7,
332
+ displayOptions: { show: { useComplexityThresholds: [true] } },
333
+ typeOptions: {
334
+ minValue: 0,
335
+ maxValue: 1,
336
+ numberPrecision: 2,
337
+ },
338
+ description: 'Minimum confidence for hard queries',
339
+ },
340
+ {
341
+ displayName: 'Expert Threshold',
342
+ name: 'expertThreshold',
343
+ type: 'number',
344
+ default: 0.8,
345
+ displayOptions: { show: { useComplexityThresholds: [true] } },
346
+ typeOptions: {
347
+ minValue: 0,
348
+ maxValue: 1,
349
+ numberPrecision: 2,
350
+ },
351
+ description: 'Minimum confidence for expert queries',
352
+ },
353
+ {
354
+ displayName: 'Enable Alignment Scoring',
355
+ name: 'useAlignmentScoring',
356
+ type: 'boolean',
357
+ default: true,
358
+ description: 'Whether to score query-response alignment for improved validation accuracy',
359
+ },
360
+ {
361
+ displayName: 'Enable Complexity Routing',
362
+ name: 'useComplexityRouting',
363
+ type: 'boolean',
364
+ default: true,
365
+ description: 'Whether to route complex queries directly to the verifier',
366
+ },
367
+ {
368
+ displayName: 'Max Tool Iterations',
369
+ name: 'maxIterations',
370
+ type: 'number',
371
+ default: 3,
372
+ typeOptions: {
373
+ minValue: 1,
374
+ maxValue: 10,
375
+ },
376
+ description: 'Maximum number of tool-call iterations before returning',
377
+ },
378
+ {
379
+ displayName: 'Tool Routing Rules',
380
+ name: 'toolRoutingRules',
381
+ type: 'fixedCollection',
382
+ typeOptions: {
383
+ multipleValues: true,
384
+ },
385
+ default: {},
386
+ options: [
387
+ {
388
+ name: 'rule',
389
+ displayName: 'Routing Rule',
390
+ values: [
391
+ {
392
+ displayName: 'Tool Name',
393
+ name: 'toolName',
394
+ type: 'string',
395
+ default: '',
396
+ },
397
+ {
398
+ displayName: 'Routing',
399
+ name: 'routing',
400
+ type: 'options',
401
+ options: [
402
+ {
403
+ name: 'Cascade (Default)',
404
+ value: 'cascade',
405
+ },
406
+ {
407
+ name: 'Verifier',
408
+ value: 'verifier',
409
+ },
410
+ ],
411
+ default: 'cascade',
412
+ },
413
+ ],
414
+ },
415
+ ],
416
+ description: 'Override routing for specific tools (e.g., force verifier after tool call)',
417
+ },
418
+ ],
419
+ };
420
+ }
421
+ async supplyData() {
422
+ const qualityThreshold = this.getNodeParameter('qualityThreshold', 0, 0.4);
423
+ const useAlignmentScoring = this.getNodeParameter('useAlignmentScoring', 0, true);
424
+ const useComplexityRouting = this.getNodeParameter('useComplexityRouting', 0, true);
425
+ const useComplexityThresholds = this.getNodeParameter('useComplexityThresholds', 0, true);
426
+ const maxIterations = this.getNodeParameter('maxIterations', 0, 3);
427
+ const confidenceThresholds = useComplexityThresholds
428
+ ? {
429
+ trivial: this.getNodeParameter('trivialThreshold', 0, 0.25),
430
+ simple: this.getNodeParameter('simpleThreshold', 0, 0.4),
431
+ moderate: this.getNodeParameter('moderateThreshold', 0, 0.55),
432
+ hard: this.getNodeParameter('hardThreshold', 0, 0.7),
433
+ expert: this.getNodeParameter('expertThreshold', 0, 0.8),
434
+ }
435
+ : undefined;
436
+ const toolRoutingRaw = this.getNodeParameter('toolRoutingRules', 0, { rule: [] });
437
+ const toolRoutingRules = (toolRoutingRaw?.rule ?? []);
438
+ const drafterModelGetter = async () => {
439
+ const drafterData = await this.getInputConnectionData('ai_languageModel', 1);
440
+ const drafterModel = (Array.isArray(drafterData) ? drafterData[0] : drafterData);
441
+ if (!drafterModel) {
442
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Drafter model is required. Please connect your DRAFTER model to the Drafter port.');
443
+ }
444
+ return drafterModel;
445
+ };
446
+ const verifierModelGetter = async () => {
447
+ const verifierData = await this.getInputConnectionData('ai_languageModel', 0);
448
+ const verifierModel = (Array.isArray(verifierData) ? verifierData[0] : verifierData);
449
+ if (!verifierModel) {
450
+ throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Verifier model is required. Please connect your VERIFIER model to the Verifier port.');
451
+ }
452
+ return verifierModel;
453
+ };
454
+ const toolsData = await this.getInputConnectionData('ai_tool', 2).catch(() => []);
455
+ const tools = (Array.isArray(toolsData) ? toolsData : toolsData ? [toolsData] : []);
456
+ // Keep semantic validation off in n8n to avoid OOM / heavy model loads.
457
+ const useSemanticValidation = false;
458
+ const cascadeModel = new LmChatCascadeFlow_node_1.CascadeChatModel(drafterModelGetter, verifierModelGetter, qualityThreshold, useSemanticValidation, useAlignmentScoring, useComplexityRouting, useComplexityThresholds, false, [], new Map(), new Map(), confidenceThresholds);
459
+ const agentExecutor = new CascadeFlowAgentExecutor(cascadeModel, tools, toolRoutingRules, maxIterations);
460
+ return {
461
+ response: agentExecutor,
462
+ };
463
+ }
464
+ }
465
+ exports.CascadeFlowAgent = CascadeFlowAgent;
466
+ //# sourceMappingURL=CascadeFlowAgent.node.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CascadeFlowAgent.node.js","sourceRoot":"","sources":["../../../nodes/CascadeFlowAgent/CascadeFlowAgent.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cascadeflow-agent-executor.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cascadeflow-agent-executor.test.d.ts","sourceRoot":"","sources":["../../../../nodes/CascadeFlowAgent/__tests__/cascadeflow-agent-executor.test.ts"],"names":[],"mappings":""}