@cascadeflow/n8n-nodes-cascadeflow 0.5.5 → 0.6.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.
@@ -1 +1 @@
1
- {"version":3,"file":"LmChatCascadeFlow.node.d.ts","sourceRoot":"","sources":["../../../nodes/LmChatCascadeFlow/LmChatCascadeFlow.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,oBAAoB,EACpB,oBAAoB,EACpB,UAAU,EACX,MAAM,cAAc,CAAC;AAiStB,qBAAa,iBAAkB,YAAW,SAAS;IACjD,WAAW,EAAE,oBAAoB,CA4D/B;IAEI,UAAU,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC;CAsDlE"}
1
+ {"version":3,"file":"LmChatCascadeFlow.node.d.ts","sourceRoot":"","sources":["../../../nodes/LmChatCascadeFlow/LmChatCascadeFlow.node.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,SAAS,EACT,oBAAoB,EACpB,oBAAoB,EACpB,UAAU,EACX,MAAM,cAAc,CAAC;AA2hCtB,qBAAa,iBAAkB,YAAW,SAAS;IACjD,WAAW,EAAE,oBAAoB,CAsI/B;IAEI,UAAU,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC;CAqJlE"}
@@ -3,41 +3,133 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.LmChatCascadeFlow = void 0;
4
4
  const n8n_workflow_1 = require("n8n-workflow");
5
5
  const chat_models_1 = require("@langchain/core/language_models/chat_models");
6
- // Quality validation - optional import, fallback if unavailable
6
+ const outputs_1 = require("@langchain/core/outputs");
7
+ // =============================================================================
8
+ // DOMAIN CONSTANTS - All 16 supported domains
9
+ // =============================================================================
10
+ const DOMAINS = {
11
+ CODE: 'code',
12
+ DATA: 'data',
13
+ STRUCTURED: 'structured',
14
+ RAG: 'rag',
15
+ CONVERSATION: 'conversation',
16
+ TOOL: 'tool',
17
+ CREATIVE: 'creative',
18
+ SUMMARY: 'summary',
19
+ TRANSLATION: 'translation',
20
+ MATH: 'math',
21
+ SCIENCE: 'science',
22
+ MEDICAL: 'medical',
23
+ LEGAL: 'legal',
24
+ FINANCIAL: 'financial',
25
+ MULTIMODAL: 'multimodal',
26
+ GENERAL: 'general',
27
+ };
28
+ // Domain display names for n8n UI
29
+ const DOMAIN_DISPLAY_NAMES = {
30
+ code: 'Code',
31
+ data: 'Data Analysis',
32
+ structured: 'Structured Output',
33
+ rag: 'RAG (Retrieval)',
34
+ conversation: 'Conversation',
35
+ tool: 'Tool Calling',
36
+ creative: 'Creative Writing',
37
+ summary: 'Summarization',
38
+ translation: 'Translation',
39
+ math: 'Mathematics',
40
+ science: 'Science',
41
+ medical: 'Medical',
42
+ legal: 'Legal',
43
+ financial: 'Financial',
44
+ multimodal: 'Multimodal',
45
+ general: 'General',
46
+ };
47
+ // Domain descriptions for n8n UI
48
+ const DOMAIN_DESCRIPTIONS = {
49
+ code: 'Programming, debugging, code generation',
50
+ data: 'Data analysis, statistics, pandas/SQL',
51
+ structured: 'JSON, XML, structured data extraction',
52
+ rag: 'Retrieval-augmented generation, document Q&A',
53
+ conversation: 'Chat, dialogue, multi-turn conversations',
54
+ tool: 'Function calling, tool use, API interactions',
55
+ creative: 'Creative writing, stories, poetry',
56
+ summary: 'Text summarization, condensing content',
57
+ translation: 'Language translation, multilingual',
58
+ math: 'Mathematical reasoning, calculations, proofs',
59
+ science: 'Scientific knowledge, research, experiments',
60
+ medical: 'Healthcare, medical knowledge, clinical',
61
+ legal: 'Legal documents, contracts, regulations',
62
+ financial: 'Finance, accounting, investment analysis',
63
+ multimodal: 'Images, audio, video understanding',
64
+ general: 'General purpose, fallback domain',
65
+ };
66
+ // Quality validation, cost tracking, routing, and circuit breaker - optional import
7
67
  let QualityValidator;
8
68
  let CASCADE_QUALITY_CONFIG;
69
+ let CostCalculator;
70
+ let ComplexityDetector;
71
+ let PreRouter;
72
+ let DomainDetector;
73
+ let CircuitBreaker;
9
74
  try {
10
75
  const cascadeCore = require('@cascadeflow/core');
11
76
  QualityValidator = cascadeCore.QualityValidator;
12
77
  CASCADE_QUALITY_CONFIG = cascadeCore.CASCADE_QUALITY_CONFIG;
78
+ CostCalculator = cascadeCore.CostCalculator;
79
+ ComplexityDetector = cascadeCore.ComplexityDetector;
80
+ PreRouter = cascadeCore.PreRouter;
81
+ DomainDetector = cascadeCore.DomainDetector;
82
+ CircuitBreaker = cascadeCore.CircuitBreaker;
13
83
  }
14
84
  catch (e) {
15
- // @cascadeflow/core not available - use simple validation
16
- console.warn('⚠️ @cascadeflow/core not available, using simple quality check');
85
+ // @cascadeflow/core not available - use simple validation and estimates
86
+ console.warn('⚠️ @cascadeflow/core not available, using fallbacks');
17
87
  }
18
88
  /**
19
- * Custom CascadeChatModel that wraps two models (drafter and verifier)
20
- * and implements cascading logic with cost tracking
89
+ * Custom CascadeChatModel that wraps multiple models (drafter, verifier, and domain-specific)
90
+ * and implements intelligent domain-aware cascading logic with cost tracking
21
91
  */
22
92
  class CascadeChatModel extends chat_models_1.BaseChatModel {
23
- constructor(drafterModel, verifierModelGetter, qualityThreshold = 0.7) {
93
+ constructor(drafterModel, verifierModelGetter, qualityThreshold = 0.7, useSemanticValidation = true, useAlignmentScoring = true, useComplexityRouting = true, useDomainRouting = false, enabledDomains = [], domainModelGetters = new Map(), domainConfigs = new Map(), useCircuitBreaker = true) {
24
94
  super({});
95
+ // Domain-specific models and configurations
96
+ this.domainModels = new Map();
97
+ this.domainConfigs = new Map();
98
+ this.enabledDomains = [];
25
99
  // Cost tracking
26
100
  this.drafterCost = 0;
27
101
  this.verifierCost = 0;
102
+ this.domainCosts = new Map();
28
103
  this.drafterCount = 0;
29
104
  this.verifierCount = 0;
105
+ this.domainCounts = new Map();
30
106
  this.drafterModel = drafterModel;
31
107
  this.verifierModelGetter = verifierModelGetter;
32
108
  this.qualityThreshold = qualityThreshold;
33
- // Initialize quality validator with CASCADE-optimized config (if available)
109
+ this.enabledDomains = enabledDomains;
110
+ this.domainConfigs = domainConfigs;
111
+ // Store domain model getters for lazy loading
112
+ for (const [domain, getter] of domainModelGetters.entries()) {
113
+ // Lazy load domain models
114
+ this.domainModels.set(domain, undefined);
115
+ }
116
+ // Initialize quality validator with CASCADE-optimized config + semantic validation
34
117
  if (QualityValidator && CASCADE_QUALITY_CONFIG) {
35
118
  try {
36
119
  this.qualityValidator = new QualityValidator({
37
120
  ...CASCADE_QUALITY_CONFIG,
38
121
  minConfidence: qualityThreshold,
122
+ useSemanticValidation,
123
+ useAlignmentScoring,
124
+ semanticThreshold: 0.5,
39
125
  });
40
126
  console.log('✅ CascadeFlow quality validator initialized');
127
+ if (useSemanticValidation) {
128
+ console.log(' 📊 Semantic validation enabled (requires @cascadeflow/ml)');
129
+ }
130
+ if (useAlignmentScoring) {
131
+ console.log(' 🎯 Alignment scoring enabled');
132
+ }
41
133
  }
42
134
  catch (e) {
43
135
  console.warn('⚠️ Quality validator initialization failed, using simple check');
@@ -47,6 +139,66 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
47
139
  else {
48
140
  this.qualityValidator = null;
49
141
  }
142
+ // Initialize cost calculator if available
143
+ if (CostCalculator) {
144
+ try {
145
+ this.costCalculator = new CostCalculator();
146
+ console.log('💰 CascadeFlow cost calculator initialized');
147
+ }
148
+ catch (e) {
149
+ console.warn('⚠️ Cost calculator initialization failed, using estimates');
150
+ this.costCalculator = null;
151
+ }
152
+ }
153
+ else {
154
+ this.costCalculator = null;
155
+ }
156
+ // Initialize complexity detector and domain detector
157
+ if (useComplexityRouting && ComplexityDetector) {
158
+ try {
159
+ this.complexityDetector = new ComplexityDetector();
160
+ console.log('🧠 CascadeFlow complexity-based routing enabled');
161
+ }
162
+ catch (e) {
163
+ console.warn('⚠️ Complexity detector initialization failed');
164
+ this.complexityDetector = null;
165
+ }
166
+ }
167
+ else {
168
+ this.complexityDetector = null;
169
+ }
170
+ // Initialize domain detector if domain routing is enabled
171
+ if (useDomainRouting && DomainDetector && enabledDomains.length > 0) {
172
+ try {
173
+ this.domainDetector = new DomainDetector({ enabledDomains });
174
+ console.log(`🎯 CascadeFlow domain routing enabled for: ${enabledDomains.join(', ')}`);
175
+ }
176
+ catch (e) {
177
+ console.warn('⚠️ Domain detector initialization failed');
178
+ this.domainDetector = null;
179
+ }
180
+ }
181
+ else {
182
+ this.domainDetector = null;
183
+ }
184
+ // Initialize circuit breaker for fault tolerance
185
+ if (useCircuitBreaker && CircuitBreaker) {
186
+ try {
187
+ this.circuitBreaker = new CircuitBreaker({
188
+ failureThreshold: 3,
189
+ recoveryTimeout: 30000, // 30 seconds
190
+ halfOpenMaxCalls: 2,
191
+ });
192
+ console.log('🛡️ CascadeFlow circuit breaker enabled');
193
+ }
194
+ catch (e) {
195
+ console.warn('⚠️ Circuit breaker initialization failed');
196
+ this.circuitBreaker = null;
197
+ }
198
+ }
199
+ else {
200
+ this.circuitBreaker = null;
201
+ }
50
202
  }
51
203
  async getVerifierModel() {
52
204
  if (!this.verifierModel) {
@@ -57,6 +209,17 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
57
209
  }
58
210
  return this.verifierModel;
59
211
  }
212
+ /**
213
+ * Get domain-specific model if available, falls back to drafter
214
+ */
215
+ async getDomainModel(domain) {
216
+ const existingModel = this.domainModels.get(domain);
217
+ if (existingModel) {
218
+ return existingModel;
219
+ }
220
+ // Fallback to drafter if no domain-specific model
221
+ return this.drafterModel;
222
+ }
60
223
  /**
61
224
  * Helper to get model info string (type and name)
62
225
  */
@@ -65,14 +228,109 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
65
228
  const modelName = model.modelName || model.model || 'unknown';
66
229
  return `${type} (${modelName})`;
67
230
  }
231
+ /**
232
+ * Detect the domain of a query using semantic detection
233
+ */
234
+ async detectDomain(queryText) {
235
+ if (!this.domainDetector || this.enabledDomains.length === 0) {
236
+ return null;
237
+ }
238
+ try {
239
+ const result = await this.domainDetector.detect(queryText);
240
+ if (result && result.domain && this.enabledDomains.includes(result.domain)) {
241
+ console.log(`🎯 Domain detected: ${result.domain} (confidence: ${result.confidence?.toFixed(2) || 'N/A'})`);
242
+ return result.domain;
243
+ }
244
+ }
245
+ catch (e) {
246
+ console.warn('Domain detection failed, using default routing');
247
+ }
248
+ return null;
249
+ }
250
+ /**
251
+ * Check if message contains tool calls
252
+ */
253
+ hasToolCalls(message) {
254
+ const additionalKwargs = message.additional_kwargs || {};
255
+ if (additionalKwargs.tool_calls && Array.isArray(additionalKwargs.tool_calls) && additionalKwargs.tool_calls.length > 0) {
256
+ return true;
257
+ }
258
+ if (additionalKwargs.function_call && typeof additionalKwargs.function_call === 'object') {
259
+ return true;
260
+ }
261
+ const responseMetadata = message.response_metadata || {};
262
+ if (responseMetadata.tool_calls && Array.isArray(responseMetadata.tool_calls) && responseMetadata.tool_calls.length > 0) {
263
+ return true;
264
+ }
265
+ return false;
266
+ }
267
+ /**
268
+ * Get count of tool calls in message
269
+ */
270
+ getToolCallsCount(message) {
271
+ const additionalKwargs = message.additional_kwargs || {};
272
+ const responseMetadata = message.response_metadata || {};
273
+ if (additionalKwargs.tool_calls && Array.isArray(additionalKwargs.tool_calls)) {
274
+ return additionalKwargs.tool_calls.length;
275
+ }
276
+ if (additionalKwargs.function_call) {
277
+ return 1;
278
+ }
279
+ if (responseMetadata.tool_calls && Array.isArray(responseMetadata.tool_calls)) {
280
+ return responseMetadata.tool_calls.length;
281
+ }
282
+ return 0;
283
+ }
284
+ /**
285
+ * Calculate accurate cost from message token usage
286
+ */
287
+ async calculateMessageCost(message, model) {
288
+ const responseMetadata = message.response_metadata || {};
289
+ const tokenUsage = responseMetadata.tokenUsage || responseMetadata.usage || {};
290
+ const inputTokens = tokenUsage.promptTokens || tokenUsage.prompt_tokens || 0;
291
+ const outputTokens = tokenUsage.completionTokens || tokenUsage.completion_tokens || 0;
292
+ const modelName = model.modelName || model.model || 'unknown';
293
+ if (this.costCalculator && inputTokens > 0) {
294
+ try {
295
+ const cost = await this.costCalculator.calculateCost({
296
+ model: modelName,
297
+ inputTokens,
298
+ outputTokens,
299
+ });
300
+ return cost;
301
+ }
302
+ catch (e) {
303
+ console.warn(`Cost calculation failed for ${modelName}, using estimate`);
304
+ }
305
+ }
306
+ // Fallback to rough estimates based on model name
307
+ const estimatesPerMillion = {
308
+ 'gpt-4o-mini': { input: 0.15, output: 0.6 },
309
+ 'gpt-4o': { input: 5.0, output: 15.0 },
310
+ 'gpt-4-turbo': { input: 10.0, output: 30.0 },
311
+ 'gpt-4': { input: 30.0, output: 60.0 },
312
+ 'gpt-3.5-turbo': { input: 0.5, output: 1.5 },
313
+ 'claude-3-5-sonnet': { input: 3.0, output: 15.0 },
314
+ 'claude-3-haiku': { input: 0.25, output: 1.25 },
315
+ default: { input: 1.0, output: 2.0 },
316
+ };
317
+ let estimate = estimatesPerMillion.default;
318
+ for (const [key, value] of Object.entries(estimatesPerMillion)) {
319
+ if (modelName.includes(key)) {
320
+ estimate = value;
321
+ break;
322
+ }
323
+ }
324
+ const cost = (inputTokens / 1000000) * estimate.input +
325
+ (outputTokens / 1000000) * estimate.output;
326
+ return cost;
327
+ }
68
328
  /**
69
329
  * Simple quality validation fallback (when @cascadeflow/core not available)
70
330
  */
71
331
  simpleQualityCheck(responseText) {
72
332
  const wordCount = responseText.split(/\s+/).length;
73
- // Base confidence on response length and structure
74
333
  let confidence = 0.75;
75
- // Very short responses get lower confidence
76
334
  if (wordCount < 5) {
77
335
  confidence = 0.50;
78
336
  }
@@ -82,7 +340,6 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
82
340
  else if (wordCount > 30) {
83
341
  confidence = 0.85;
84
342
  }
85
- // Check for uncertainty markers
86
343
  const uncertaintyMarkers = ['i don\'t know', 'i\'m not sure', 'unclear', 'uncertain'];
87
344
  const hasUncertainty = uncertaintyMarkers.some(marker => responseText.toLowerCase().includes(marker));
88
345
  if (hasUncertainty) {
@@ -99,23 +356,154 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
99
356
  }
100
357
  async _generate(messages, options, runManager) {
101
358
  try {
102
- // Step 1: Try the drafter model
103
- const drafterInfo = this.getModelInfo(this.drafterModel);
104
- await runManager?.handleText(`🎯 CascadeFlow: Trying drafter model (from BOTTOM port): ${drafterInfo}\n`);
105
- console.log(`🎯 CascadeFlow: Trying drafter model (from BOTTOM port): ${drafterInfo}`);
359
+ const queryText = messages.map(m => m.content.toString()).join(' ');
360
+ // Step 1: Detect domain if domain routing is enabled
361
+ let detectedDomain = null;
362
+ let domainModel = null;
363
+ if (this.enabledDomains.length > 0) {
364
+ detectedDomain = await this.detectDomain(queryText);
365
+ if (detectedDomain) {
366
+ const domainConfig = this.domainConfigs.get(detectedDomain);
367
+ if (domainConfig?.model) {
368
+ domainModel = domainConfig.model;
369
+ await runManager?.handleText(`🎯 Domain: ${DOMAIN_DISPLAY_NAMES[detectedDomain]} → Using domain-specific model\n`);
370
+ }
371
+ }
372
+ }
373
+ // Step 2: Detect query complexity
374
+ let complexity;
375
+ let shouldSkipDrafter = false;
376
+ if (this.complexityDetector) {
377
+ try {
378
+ const complexityResult = await this.complexityDetector.detectComplexity(queryText);
379
+ complexity = complexityResult.level;
380
+ if (complexity === 'hard' || complexity === 'expert') {
381
+ shouldSkipDrafter = true;
382
+ await runManager?.handleText(`🧠 Complexity: ${complexity} → Routing directly to verifier (skip drafter)\n`);
383
+ console.log(`🧠 Complexity: ${complexity} → Direct verifier route`);
384
+ }
385
+ else {
386
+ await runManager?.handleText(`🧠 Complexity: ${complexity} → Trying drafter first\n`);
387
+ console.log(`🧠 Complexity: ${complexity} → Drafter route`);
388
+ }
389
+ }
390
+ catch (e) {
391
+ console.warn('Complexity detection failed, using normal flow');
392
+ }
393
+ }
394
+ // Step 3: Execute with circuit breaker protection if available
395
+ const executeWithProtection = async (model, modelType) => {
396
+ if (this.circuitBreaker) {
397
+ return await this.circuitBreaker.execute(modelType, async () => await model.invoke(messages, options));
398
+ }
399
+ return await model.invoke(messages, options);
400
+ };
401
+ // Step 3a: If complexity routing says skip drafter, go directly to verifier
402
+ if (shouldSkipDrafter) {
403
+ const verifierModel = await this.getVerifierModel();
404
+ const verifierInfo = this.getModelInfo(verifierModel);
405
+ await runManager?.handleText(`⚡ Direct route: Using verifier for ${complexity} query\n`);
406
+ const verifierStartTime = Date.now();
407
+ const verifierMessage = await executeWithProtection(verifierModel, 'verifier');
408
+ const verifierLatency = Date.now() - verifierStartTime;
409
+ this.verifierCount++;
410
+ const verifierCost = await this.calculateMessageCost(verifierMessage, verifierModel);
411
+ const flowLog = `
412
+ ┌────────────────────────────────────────────┐
413
+ │ ⚡ FLOW: DIRECT VERIFIER (SMART ROUTE) │
414
+ └────────────────────────────────────────────┘
415
+ Query → Complexity Check (${complexity}) → Verifier → Response
416
+ 🧠 Smart routing: Skipped drafter for complex query
417
+ Model used: ${verifierInfo}
418
+ Latency: ${verifierLatency}ms
419
+ 💰 Cost: $${verifierCost.toFixed(6)}
420
+ 📊 Stats: ${this.drafterCount} drafter, ${this.verifierCount} verifier
421
+ `;
422
+ await runManager?.handleText(flowLog);
423
+ console.log(flowLog);
424
+ if (!verifierMessage.response_metadata) {
425
+ verifierMessage.response_metadata = {};
426
+ }
427
+ verifierMessage.response_metadata.cascadeflow = {
428
+ flow: 'direct_verifier',
429
+ complexity,
430
+ domain: detectedDomain,
431
+ latency_ms: verifierLatency,
432
+ cost_usd: verifierCost,
433
+ model_used: 'verifier',
434
+ reason: `Query complexity (${complexity}) warranted direct verifier routing`
435
+ };
436
+ return {
437
+ generations: [{
438
+ text: verifierMessage.content.toString(),
439
+ message: verifierMessage,
440
+ }],
441
+ };
442
+ }
443
+ // Step 4: Try domain-specific model first if available
444
+ const modelToUse = domainModel || this.drafterModel;
445
+ const modelType = domainModel ? `domain:${detectedDomain}` : 'drafter';
446
+ const modelInfo = this.getModelInfo(modelToUse);
447
+ await runManager?.handleText(`🎯 CascadeFlow: Trying ${modelType} model: ${modelInfo}\n`);
448
+ console.log(`🎯 CascadeFlow: Trying ${modelType} model: ${modelInfo}`);
106
449
  const drafterStartTime = Date.now();
107
- const drafterMessage = await this.drafterModel.invoke(messages, options);
450
+ const drafterMessage = await executeWithProtection(modelToUse, modelType);
108
451
  const drafterLatency = Date.now() - drafterStartTime;
109
- this.drafterCount++;
110
- // Step 2: Quality check using CascadeFlow validator (or simple fallback)
452
+ if (domainModel && detectedDomain) {
453
+ this.domainCounts.set(detectedDomain, (this.domainCounts.get(detectedDomain) || 0) + 1);
454
+ }
455
+ else {
456
+ this.drafterCount++;
457
+ }
458
+ // Step 5: Check if response contains tool calls
459
+ const hasToolCalls = this.hasToolCalls(drafterMessage);
460
+ if (hasToolCalls) {
461
+ const toolCallsCount = this.getToolCallsCount(drafterMessage);
462
+ const toolLog = ` 🔧 Tool calls detected (${toolCallsCount}) - bypassing quality check\n`;
463
+ await runManager?.handleText(toolLog);
464
+ console.log(toolLog);
465
+ const flowLog = `
466
+ ┌──────────────────────────────────────────┐
467
+ │ 🔧 FLOW: TOOL CALLS (DIRECT PASS) │
468
+ └──────────────────────────────────────────┘
469
+ Query → ${modelType} → Tool Calls (${toolCallsCount}) → Response
470
+ ⚡ Tool calling: ${modelType} generated tool calls
471
+ Model used: ${modelInfo}
472
+ ${detectedDomain ? `Domain: ${DOMAIN_DISPLAY_NAMES[detectedDomain]}` : ''}
473
+ Latency: ${drafterLatency}ms
474
+ 📊 Stats: ${this.drafterCount} drafter, ${this.verifierCount} verifier
475
+ `;
476
+ await runManager?.handleText(flowLog);
477
+ console.log(flowLog);
478
+ if (!drafterMessage.response_metadata) {
479
+ drafterMessage.response_metadata = {};
480
+ }
481
+ drafterMessage.response_metadata.cascadeflow = {
482
+ flow: 'tool_calls_direct',
483
+ has_tool_calls: true,
484
+ tool_calls_count: toolCallsCount,
485
+ domain: detectedDomain,
486
+ latency_ms: drafterLatency,
487
+ model_used: modelType
488
+ };
489
+ return {
490
+ generations: [{
491
+ text: drafterMessage.content.toString(),
492
+ message: drafterMessage,
493
+ }],
494
+ };
495
+ }
496
+ // Step 6: Quality check with domain-aware threshold
111
497
  const responseText = drafterMessage.content.toString();
498
+ const effectiveThreshold = detectedDomain
499
+ ? (this.domainConfigs.get(detectedDomain)?.threshold ?? this.qualityThreshold)
500
+ : this.qualityThreshold;
112
501
  let validationResult;
113
502
  if (this.qualityValidator) {
114
- // Use full CascadeFlow quality validator
115
- const queryText = messages.map(m => m.content.toString()).join(' ');
116
503
  try {
117
504
  validationResult = await this.qualityValidator.validate(responseText, queryText);
118
- const qualityLog = ` 📊 Quality validation: confidence=${validationResult.confidence.toFixed(2)}, method=${validationResult.method}\n`;
505
+ validationResult.passed = validationResult.confidence >= effectiveThreshold;
506
+ const qualityLog = ` 📊 Quality validation: confidence=${validationResult.confidence.toFixed(2)}, threshold=${effectiveThreshold}, method=${validationResult.method}\n`;
119
507
  await runManager?.handleText(qualityLog);
120
508
  console.log(qualityLog);
121
509
  if (validationResult.details?.alignmentScore) {
@@ -129,35 +517,46 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
129
517
  await runManager?.handleText(errorLog);
130
518
  console.warn(errorLog);
131
519
  validationResult = this.simpleQualityCheck(responseText);
520
+ validationResult.passed = validationResult.confidence >= effectiveThreshold;
132
521
  }
133
522
  }
134
523
  else {
135
- // Use simple quality check (fallback)
136
524
  validationResult = this.simpleQualityCheck(responseText);
525
+ validationResult.passed = validationResult.confidence >= effectiveThreshold;
137
526
  const simpleLog = ` 📊 Simple quality check: confidence=${validationResult.confidence.toFixed(2)}\n`;
138
527
  await runManager?.handleText(simpleLog);
139
528
  console.log(simpleLog);
140
529
  }
141
- // Step 3: If quality is sufficient, return drafter response
530
+ // Step 7: If quality is sufficient, return response
142
531
  if (validationResult.passed) {
143
- // Estimate cost savings
144
- const estimatedDrafterCost = 0.0001; // $0.0001 per request (rough estimate)
145
- const estimatedVerifierCost = 0.0016; // $0.0016 per request (rough estimate)
146
- const savings = ((estimatedVerifierCost - estimatedDrafterCost) / estimatedVerifierCost * 100).toFixed(1);
147
- const flowLog = `\n┌─────────────────────────────────────────┐\n│ ✅ FLOW: DRAFTER ACCEPTED (FAST PATH) │\n└─────────────────────────────────────────┘\n Query → Drafter → Quality Check ✅ → Response\n ⚡ Fast & Cheap: Used drafter model only\n Model used: ${drafterInfo}\n Confidence: ${validationResult.confidence.toFixed(2)} (threshold: ${this.qualityThreshold})\n Quality score: ${validationResult.score.toFixed(2)}\n Latency: ${drafterLatency}ms\n 💰 Cost savings: ~${savings}% (used cheap model)\n 📊 Stats: ${this.drafterCount} drafter, ${this.verifierCount} verifier\n`;
532
+ const drafterCost = await this.calculateMessageCost(drafterMessage, modelToUse);
533
+ const flowLog = `
534
+ ┌─────────────────────────────────────────┐
535
+ │ ✅ FLOW: ${modelType.toUpperCase()} ACCEPTED (FAST PATH)
536
+ └─────────────────────────────────────────┘
537
+ Query → ${detectedDomain ? `Domain(${detectedDomain}) → ` : ''}${modelType} → Quality Check ✅ → Response
538
+ ⚡ Fast & Cheap: Used ${modelType} model only
539
+ Model used: ${modelInfo}
540
+ ${detectedDomain ? `Domain: ${DOMAIN_DISPLAY_NAMES[detectedDomain]}` : ''}
541
+ Confidence: ${validationResult.confidence.toFixed(2)} (threshold: ${effectiveThreshold})
542
+ Quality score: ${validationResult.score.toFixed(2)}
543
+ Latency: ${drafterLatency}ms
544
+ 💰 Cost: $${drafterCost.toFixed(6)} (${modelType} only)
545
+ 📊 Stats: ${this.drafterCount} drafter, ${this.verifierCount} verifier, domains: ${JSON.stringify(Object.fromEntries(this.domainCounts))}
546
+ `;
148
547
  await runManager?.handleText(flowLog);
149
548
  console.log(flowLog);
150
- // Add flow metadata to message for n8n UI visibility (logs only, not in response text)
151
549
  if (!drafterMessage.response_metadata) {
152
550
  drafterMessage.response_metadata = {};
153
551
  }
154
552
  drafterMessage.response_metadata.cascadeflow = {
155
- flow: 'drafter_accepted',
553
+ flow: `${modelType}_accepted`,
156
554
  confidence: validationResult.confidence,
157
555
  quality_score: validationResult.score,
556
+ domain: detectedDomain,
158
557
  latency_ms: drafterLatency,
159
- cost_savings_percent: parseFloat(savings),
160
- model_used: 'drafter'
558
+ cost_usd: drafterCost,
559
+ model_used: modelType
161
560
  };
162
561
  return {
163
562
  generations: [{
@@ -166,32 +565,50 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
166
565
  }],
167
566
  };
168
567
  }
169
- // Step 4: Otherwise, escalate to verifier
170
- const escalateLog = `\n┌────────────────────────────────────────────────┐\n│ ⚠️ FLOW: ESCALATED TO VERIFIER (SLOW PATH) │\n└────────────────────────────────────────────────┘\n Query → Drafter → Quality Check ❌ → Verifier → Response\n 🔄 Escalating: Drafter quality too low, using verifier\n Confidence: ${validationResult.confidence.toFixed(2)} < ${this.qualityThreshold} (threshold)\n Reason: ${validationResult.reason}\n Drafter latency: ${drafterLatency}ms\n 🔄 Loading verifier model...\n`;
568
+ // Step 8: Otherwise, escalate to verifier
569
+ const escalateLog = `
570
+ ┌────────────────────────────────────────────────┐
571
+ │ ⚠️ FLOW: ESCALATED TO VERIFIER (SLOW PATH) │
572
+ └────────────────────────────────────────────────┘
573
+ Query → ${detectedDomain ? `Domain(${detectedDomain}) → ` : ''}${modelType} → Quality Check ❌ → Verifier → Response
574
+ 🔄 Escalating: ${modelType} quality too low, using verifier
575
+ Confidence: ${validationResult.confidence.toFixed(2)} < ${effectiveThreshold} (threshold)
576
+ Reason: ${validationResult.reason}
577
+ ${modelType} latency: ${drafterLatency}ms
578
+ 🔄 Loading verifier model...
579
+ `;
171
580
  await runManager?.handleText(escalateLog);
172
581
  console.log(escalateLog);
173
582
  const verifierStartTime = Date.now();
174
583
  const verifierModel = await this.getVerifierModel();
175
584
  const verifierInfo = this.getModelInfo(verifierModel);
176
- const verifierMessage = await verifierModel.invoke(messages, options);
585
+ const verifierMessage = await executeWithProtection(verifierModel, 'verifier');
177
586
  const verifierLatency = Date.now() - verifierStartTime;
178
587
  this.verifierCount++;
588
+ const verifierCost = await this.calculateMessageCost(verifierMessage, verifierModel);
589
+ const totalCost = verifierCost;
179
590
  const totalLatency = drafterLatency + verifierLatency;
180
591
  const acceptanceRate = (this.drafterCount / (this.drafterCount + this.verifierCount) * 100).toFixed(1);
181
- const completionLog = ` ✅ Verifier completed successfully\n Model used: ${verifierInfo}\n Verifier latency: ${verifierLatency}ms\n Total latency: ${totalLatency}ms (drafter: ${drafterLatency}ms + verifier: ${verifierLatency}ms)\n 💰 Cost: Full verifier cost (0% savings this request)\n 📊 Stats: ${this.drafterCount} drafter (${acceptanceRate}%), ${this.verifierCount} verifier\n`;
592
+ const completionLog = ` ✅ Verifier completed successfully
593
+ Model used: ${verifierInfo}
594
+ Verifier latency: ${verifierLatency}ms
595
+ Total latency: ${totalLatency}ms (${modelType}: ${drafterLatency}ms + verifier: ${verifierLatency}ms)
596
+ 💰 Cost: $${totalCost.toFixed(6)} (verifier only, ${modelType} attempt wasted)
597
+ 📊 Stats: ${this.drafterCount} drafter (${acceptanceRate}%), ${this.verifierCount} verifier
598
+ `;
182
599
  await runManager?.handleText(completionLog);
183
600
  console.log(completionLog);
184
- // Add flow metadata to message for n8n UI visibility (logs only, not in response text)
185
601
  if (!verifierMessage.response_metadata) {
186
602
  verifierMessage.response_metadata = {};
187
603
  }
188
604
  verifierMessage.response_metadata.cascadeflow = {
189
605
  flow: 'escalated_to_verifier',
190
606
  confidence: validationResult.confidence,
607
+ domain: detectedDomain,
191
608
  drafter_latency_ms: drafterLatency,
192
609
  verifier_latency_ms: verifierLatency,
193
610
  total_latency_ms: totalLatency,
194
- cost_savings_percent: 0,
611
+ cost_usd: totalCost,
195
612
  model_used: 'verifier',
196
613
  reason: validationResult.reason
197
614
  };
@@ -203,24 +620,35 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
203
620
  };
204
621
  }
205
622
  catch (error) {
206
- // Fallback to verifier on error
623
+ // Handle circuit breaker open state
207
624
  const errorMsg = error instanceof Error ? error.message : String(error);
208
- const errorLog = `\n┌─────────────────────────────────────────────┐\n│ ❌ FLOW: DRAFTER ERROR - FALLBACK PATH │\n└─────────────────────────────────────────────┘\n Query → Drafter ❌ ERROR → Verifier → Response\n 🔄 Fallback: Drafter failed, using verifier as backup\n Error: ${errorMsg}\n 🔄 Loading verifier model...\n`;
625
+ const isCircuitOpen = errorMsg.includes('Circuit breaker') || errorMsg.includes('circuit is open');
626
+ const errorLog = `
627
+ ┌─────────────────────────────────────────────┐
628
+ │ ❌ FLOW: ${isCircuitOpen ? 'CIRCUIT OPEN' : 'DRAFTER ERROR'} - FALLBACK PATH │
629
+ └─────────────────────────────────────────────┘
630
+ Query → Drafter ❌ ${isCircuitOpen ? 'CIRCUIT OPEN' : 'ERROR'} → Verifier → Response
631
+ 🔄 Fallback: ${isCircuitOpen ? 'Circuit breaker open' : 'Drafter failed'}, using verifier as backup
632
+ Error: ${errorMsg}
633
+ 🔄 Loading verifier model...
634
+ `;
209
635
  await runManager?.handleText(errorLog);
210
636
  console.log(errorLog);
211
637
  const verifierModel = await this.getVerifierModel();
212
638
  const verifierInfo = this.getModelInfo(verifierModel);
213
639
  const verifierMessage = await verifierModel.invoke(messages, options);
214
640
  this.verifierCount++;
215
- const fallbackCompleteLog = ` ✅ Verifier fallback completed successfully\n Model used: ${verifierInfo}\n 💰 Cost: Full verifier cost (fallback due to error)\n`;
641
+ const fallbackCompleteLog = ` ✅ Verifier fallback completed successfully
642
+ Model used: ${verifierInfo}
643
+ 💰 Cost: Full verifier cost (fallback due to ${isCircuitOpen ? 'circuit open' : 'error'})
644
+ `;
216
645
  await runManager?.handleText(fallbackCompleteLog);
217
646
  console.log(fallbackCompleteLog);
218
- // Add flow metadata to message for n8n UI visibility (logs only, not in response text)
219
647
  if (!verifierMessage.response_metadata) {
220
648
  verifierMessage.response_metadata = {};
221
649
  }
222
650
  verifierMessage.response_metadata.cascadeflow = {
223
- flow: 'error_fallback',
651
+ flow: isCircuitOpen ? 'circuit_breaker_fallback' : 'error_fallback',
224
652
  error: errorMsg,
225
653
  cost_savings_percent: 0,
226
654
  model_used: 'verifier'
@@ -233,6 +661,224 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
233
661
  };
234
662
  }
235
663
  }
664
+ /**
665
+ * Streaming implementation for real-time cascade feedback
666
+ */
667
+ async *_streamResponseChunks(messages, options, runManager) {
668
+ try {
669
+ const queryText = messages.map(m => m.content.toString()).join(' ');
670
+ // Detect domain for streaming
671
+ let detectedDomain = null;
672
+ let modelToUse = this.drafterModel;
673
+ if (this.enabledDomains.length > 0) {
674
+ detectedDomain = await this.detectDomain(queryText);
675
+ if (detectedDomain) {
676
+ const domainConfig = this.domainConfigs.get(detectedDomain);
677
+ if (domainConfig?.model) {
678
+ modelToUse = domainConfig.model;
679
+ }
680
+ }
681
+ }
682
+ const modelInfo = this.getModelInfo(modelToUse);
683
+ const modelType = detectedDomain ? `domain:${detectedDomain}` : 'drafter';
684
+ await runManager?.handleText(`🎯 CascadeFlow (Streaming): Trying ${modelType} model: ${modelInfo}\n`);
685
+ console.log(`🎯 CascadeFlow (Streaming): Trying ${modelType} model: ${modelInfo}`);
686
+ const drafterStartTime = Date.now();
687
+ let fullDrafterContent = '';
688
+ let lastChunk = null;
689
+ const drafterStream = await modelToUse.stream(messages, options);
690
+ for await (const chunk of drafterStream) {
691
+ fullDrafterContent += chunk.content;
692
+ const generationChunk = new outputs_1.ChatGenerationChunk({
693
+ text: chunk.content.toString(),
694
+ message: chunk,
695
+ });
696
+ lastChunk = generationChunk;
697
+ yield generationChunk;
698
+ }
699
+ const drafterLatency = Date.now() - drafterStartTime;
700
+ this.drafterCount++;
701
+ if (lastChunk && this.hasToolCalls(lastChunk.message)) {
702
+ const toolCallsCount = this.getToolCallsCount(lastChunk.message);
703
+ const toolLog = `\n🔧 Tool calls detected (${toolCallsCount}) - cascade complete\n`;
704
+ await runManager?.handleText(toolLog);
705
+ console.log(toolLog);
706
+ return;
707
+ }
708
+ await runManager?.handleText(`\n📊 Running quality check...\n`);
709
+ const effectiveThreshold = detectedDomain
710
+ ? (this.domainConfigs.get(detectedDomain)?.threshold ?? this.qualityThreshold)
711
+ : this.qualityThreshold;
712
+ let validationResult;
713
+ if (this.qualityValidator) {
714
+ try {
715
+ validationResult = await this.qualityValidator.validate(fullDrafterContent, queryText);
716
+ validationResult.passed = validationResult.confidence >= effectiveThreshold;
717
+ await runManager?.handleText(` Confidence: ${validationResult.confidence.toFixed(2)} (threshold: ${effectiveThreshold})\n`);
718
+ }
719
+ catch (e) {
720
+ validationResult = this.simpleQualityCheck(fullDrafterContent);
721
+ validationResult.passed = validationResult.confidence >= effectiveThreshold;
722
+ }
723
+ }
724
+ else {
725
+ validationResult = this.simpleQualityCheck(fullDrafterContent);
726
+ validationResult.passed = validationResult.confidence >= effectiveThreshold;
727
+ }
728
+ if (validationResult.passed) {
729
+ await runManager?.handleText(`✅ Quality check passed - cascade complete (${modelType} accepted)\n`);
730
+ console.log(`✅ Streaming: ${modelType} accepted (${drafterLatency}ms)`);
731
+ return;
732
+ }
733
+ await runManager?.handleText(`\n⚠️ Quality check failed - escalating to verifier...\n`);
734
+ console.log(`⚠️ Streaming: Escalating to verifier (confidence ${validationResult.confidence.toFixed(2)} < ${effectiveThreshold})`);
735
+ const verifierModel = await this.getVerifierModel();
736
+ const verifierInfo = this.getModelInfo(verifierModel);
737
+ await runManager?.handleText(`🔄 Streaming verifier response from ${verifierInfo}...\n`);
738
+ const verifierStartTime = Date.now();
739
+ const verifierStream = await verifierModel.stream(messages, options);
740
+ this.verifierCount++;
741
+ for await (const chunk of verifierStream) {
742
+ yield new outputs_1.ChatGenerationChunk({
743
+ text: chunk.content.toString(),
744
+ message: chunk,
745
+ });
746
+ }
747
+ const verifierLatency = Date.now() - verifierStartTime;
748
+ await runManager?.handleText(`\n✅ Verifier streaming complete (${verifierLatency}ms)\n`);
749
+ console.log(`✅ Streaming: Verifier complete (${verifierLatency}ms)`);
750
+ }
751
+ catch (error) {
752
+ const errorMsg = error instanceof Error ? error.message : String(error);
753
+ await runManager?.handleText(`\n❌ Drafter error - falling back to verifier: ${errorMsg}\n`);
754
+ console.log(`❌ Streaming: Drafter error, using verifier fallback`);
755
+ const verifierModel = await this.getVerifierModel();
756
+ const verifierStream = await verifierModel.stream(messages, options);
757
+ this.verifierCount++;
758
+ for await (const chunk of verifierStream) {
759
+ yield new outputs_1.ChatGenerationChunk({
760
+ text: chunk.content.toString(),
761
+ message: chunk,
762
+ });
763
+ }
764
+ }
765
+ }
766
+ }
767
+ // =============================================================================
768
+ // Generate dynamic inputs based on enabled domains
769
+ // =============================================================================
770
+ function generateDomainInputs(enabledDomains) {
771
+ const baseInputs = [
772
+ {
773
+ displayName: 'Verifier',
774
+ type: 'ai_languageModel',
775
+ maxConnections: 1,
776
+ required: true,
777
+ },
778
+ {
779
+ displayName: 'Drafter',
780
+ type: 'ai_languageModel',
781
+ maxConnections: 1,
782
+ required: true,
783
+ },
784
+ ];
785
+ // Add domain-specific model inputs for each enabled domain
786
+ for (const domain of enabledDomains) {
787
+ baseInputs.push({
788
+ displayName: `${DOMAIN_DISPLAY_NAMES[domain]} Model`,
789
+ type: 'ai_languageModel',
790
+ maxConnections: 1,
791
+ required: false,
792
+ });
793
+ }
794
+ return baseInputs;
795
+ }
796
+ // =============================================================================
797
+ // Generate domain toggle properties for n8n UI
798
+ // =============================================================================
799
+ function generateDomainProperties() {
800
+ const domainOptions = Object.entries(DOMAINS).map(([key, value]) => ({
801
+ name: DOMAIN_DISPLAY_NAMES[value],
802
+ value: value,
803
+ description: DOMAIN_DESCRIPTIONS[value],
804
+ }));
805
+ return [
806
+ {
807
+ displayName: 'Enable Domain Routing',
808
+ name: 'enableDomainRouting',
809
+ type: 'boolean',
810
+ default: false,
811
+ description: 'Whether to enable intelligent routing based on detected query domain (math, code, legal, etc.)',
812
+ },
813
+ {
814
+ displayName: 'Enabled Domains',
815
+ name: 'enabledDomains',
816
+ type: 'multiOptions',
817
+ options: domainOptions,
818
+ default: [],
819
+ displayOptions: {
820
+ show: {
821
+ enableDomainRouting: [true],
822
+ },
823
+ },
824
+ description: 'Select which domains to enable for intelligent routing. Connect domain-specific models for each.',
825
+ },
826
+ {
827
+ displayName: 'Domain-Specific Settings',
828
+ name: 'domainSettings',
829
+ type: 'fixedCollection',
830
+ typeOptions: {
831
+ multipleValues: true,
832
+ },
833
+ displayOptions: {
834
+ show: {
835
+ enableDomainRouting: [true],
836
+ },
837
+ },
838
+ default: {},
839
+ options: [
840
+ {
841
+ name: 'domainConfig',
842
+ displayName: 'Domain Configuration',
843
+ values: [
844
+ {
845
+ displayName: 'Domain',
846
+ name: 'domain',
847
+ type: 'options',
848
+ options: domainOptions,
849
+ default: 'general',
850
+ description: 'Select the domain to configure',
851
+ },
852
+ {
853
+ displayName: 'Quality Threshold',
854
+ name: 'threshold',
855
+ type: 'number',
856
+ default: 0.64,
857
+ typeOptions: {
858
+ minValue: 0,
859
+ maxValue: 1,
860
+ numberPrecision: 2,
861
+ },
862
+ description: 'Quality threshold for this domain (overrides global threshold)',
863
+ },
864
+ {
865
+ displayName: 'Temperature',
866
+ name: 'temperature',
867
+ type: 'number',
868
+ default: 0.7,
869
+ typeOptions: {
870
+ minValue: 0,
871
+ maxValue: 2,
872
+ numberPrecision: 1,
873
+ },
874
+ description: 'Temperature setting for this domain',
875
+ },
876
+ ],
877
+ },
878
+ ],
879
+ description: 'Configure per-domain quality thresholds and temperatures',
880
+ },
881
+ ];
236
882
  }
237
883
  class LmChatCascadeFlow {
238
884
  constructor() {
@@ -241,8 +887,8 @@ class LmChatCascadeFlow {
241
887
  name: 'lmChatCascadeFlow',
242
888
  icon: 'file:cascadeflow.svg',
243
889
  group: ['transform'],
244
- version: 1,
245
- description: 'Smart AI model cascading with 40-85% cost savings. Connect two AI models (drafter and verifier) and intelligently cascade between them.',
890
+ version: 2,
891
+ description: 'Smart AI model cascading with 40-85% cost savings. Supports 16 domains with domain-specific model routing.',
246
892
  defaults: {
247
893
  name: 'CascadeFlow',
248
894
  },
@@ -259,10 +905,6 @@ class LmChatCascadeFlow {
259
905
  ],
260
906
  },
261
907
  },
262
- // Sub-node: accepts AI model connections
263
- // Visual layout: Index 0 = "Verifier" label (top), Index 1 = "Drafter" label (bottom)
264
- // Actual logic: Index 0 = VERIFIER model (only if needed), Index 1 = DRAFTER model (tried first)
265
- // User connects: TOP port = verifier model, BOTTOM port = drafter model
266
908
  // eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node
267
909
  inputs: [
268
910
  {
@@ -277,8 +919,56 @@ class LmChatCascadeFlow {
277
919
  maxConnections: 1,
278
920
  required: true,
279
921
  },
922
+ // Domain-specific model inputs (optional, up to 16)
923
+ {
924
+ displayName: 'Code Model',
925
+ type: 'ai_languageModel',
926
+ maxConnections: 1,
927
+ required: false,
928
+ },
929
+ {
930
+ displayName: 'Math Model',
931
+ type: 'ai_languageModel',
932
+ maxConnections: 1,
933
+ required: false,
934
+ },
935
+ {
936
+ displayName: 'Data Model',
937
+ type: 'ai_languageModel',
938
+ maxConnections: 1,
939
+ required: false,
940
+ },
941
+ {
942
+ displayName: 'Creative Model',
943
+ type: 'ai_languageModel',
944
+ maxConnections: 1,
945
+ required: false,
946
+ },
947
+ {
948
+ displayName: 'Legal Model',
949
+ type: 'ai_languageModel',
950
+ maxConnections: 1,
951
+ required: false,
952
+ },
953
+ {
954
+ displayName: 'Medical Model',
955
+ type: 'ai_languageModel',
956
+ maxConnections: 1,
957
+ required: false,
958
+ },
959
+ {
960
+ displayName: 'Financial Model',
961
+ type: 'ai_languageModel',
962
+ maxConnections: 1,
963
+ required: false,
964
+ },
965
+ {
966
+ displayName: 'Science Model',
967
+ type: 'ai_languageModel',
968
+ maxConnections: 1,
969
+ required: false,
970
+ },
280
971
  ],
281
- // Outputs an AI model that can be connected to Chain nodes
282
972
  // eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong
283
973
  outputs: ['ai_languageModel'],
284
974
  outputNames: ['Model'],
@@ -295,19 +985,70 @@ class LmChatCascadeFlow {
295
985
  },
296
986
  description: 'Minimum quality score (0-1) to accept drafter response. Lower = more cost savings, higher = better quality.',
297
987
  },
988
+ {
989
+ displayName: 'Enable Semantic Validation',
990
+ name: 'useSemanticValidation',
991
+ type: 'boolean',
992
+ default: true,
993
+ description: 'Whether to use ML-based semantic similarity validation for better quality detection',
994
+ },
995
+ {
996
+ displayName: 'Enable Alignment Scoring',
997
+ name: 'useAlignmentScoring',
998
+ type: 'boolean',
999
+ default: true,
1000
+ description: 'Whether to score query-response alignment for improved validation accuracy',
1001
+ },
1002
+ {
1003
+ displayName: 'Enable Complexity Routing',
1004
+ name: 'useComplexityRouting',
1005
+ type: 'boolean',
1006
+ default: true,
1007
+ description: 'Whether to route queries directly to the verifier based on detected complexity',
1008
+ },
1009
+ {
1010
+ displayName: 'Enable Circuit Breaker',
1011
+ name: 'useCircuitBreaker',
1012
+ type: 'boolean',
1013
+ default: true,
1014
+ description: 'Whether to use circuit breaker for fault tolerance (auto-fallback on repeated failures)',
1015
+ },
1016
+ // Domain routing settings
1017
+ ...generateDomainProperties(),
298
1018
  ],
299
1019
  };
300
1020
  }
301
1021
  async supplyData() {
302
- // Get parameters
1022
+ // Get core parameters
303
1023
  const qualityThreshold = this.getNodeParameter('qualityThreshold', 0, 0.64);
304
- // Get the drafter model immediately (at index 1 - bottom port, labeled "Drafter")
1024
+ const useSemanticValidation = this.getNodeParameter('useSemanticValidation', 0, true);
1025
+ const useAlignmentScoring = this.getNodeParameter('useAlignmentScoring', 0, true);
1026
+ const useComplexityRouting = this.getNodeParameter('useComplexityRouting', 0, true);
1027
+ const useCircuitBreaker = this.getNodeParameter('useCircuitBreaker', 0, true);
1028
+ // Get domain routing parameters
1029
+ const enableDomainRouting = this.getNodeParameter('enableDomainRouting', 0, false);
1030
+ const enabledDomains = enableDomainRouting
1031
+ ? this.getNodeParameter('enabledDomains', 0, [])
1032
+ : [];
1033
+ // Get domain-specific settings
1034
+ const domainSettingsRaw = this.getNodeParameter('domainSettings', 0, { domainConfig: [] });
1035
+ const domainConfigs = new Map();
1036
+ if (domainSettingsRaw?.domainConfig) {
1037
+ for (const config of domainSettingsRaw.domainConfig) {
1038
+ domainConfigs.set(config.domain, {
1039
+ enabled: enabledDomains.includes(config.domain),
1040
+ threshold: config.threshold || qualityThreshold,
1041
+ temperature: config.temperature || 0.7,
1042
+ });
1043
+ }
1044
+ }
1045
+ // Get the drafter model (index 1 - bottom port, labeled "Drafter")
305
1046
  const drafterData = await this.getInputConnectionData('ai_languageModel', 1);
306
1047
  const drafterModel = (Array.isArray(drafterData) ? drafterData[0] : drafterData);
307
1048
  if (!drafterModel) {
308
1049
  throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Drafter model is required. Please connect your DRAFTER model to the BOTTOM port (labeled "Drafter").');
309
1050
  }
310
- // Create a lazy loader for the verifier model (only fetched when needed) (at index 0 - top port, labeled "Verifier")
1051
+ // Create lazy loader for verifier (index 0 - top port, labeled "Verifier")
311
1052
  const verifierModelGetter = async () => {
312
1053
  const verifierData = await this.getInputConnectionData('ai_languageModel', 0);
313
1054
  const verifierModel = (Array.isArray(verifierData) ? verifierData[0] : verifierData);
@@ -316,19 +1057,79 @@ class LmChatCascadeFlow {
316
1057
  }
317
1058
  return verifierModel;
318
1059
  };
319
- // Debug: Get detailed model info
1060
+ // Map domain inputs to their index positions (starting at index 2)
1061
+ const domainInputMap = {
1062
+ code: 2,
1063
+ math: 3,
1064
+ data: 4,
1065
+ creative: 5,
1066
+ legal: 6,
1067
+ medical: 7,
1068
+ financial: 8,
1069
+ science: 9,
1070
+ // Additional domains use drafter as fallback
1071
+ structured: -1,
1072
+ rag: -1,
1073
+ conversation: -1,
1074
+ tool: -1,
1075
+ summary: -1,
1076
+ translation: -1,
1077
+ multimodal: -1,
1078
+ general: -1,
1079
+ };
1080
+ // Create domain model getters for enabled domains
1081
+ const domainModelGetters = new Map();
1082
+ for (const domain of enabledDomains) {
1083
+ const inputIndex = domainInputMap[domain];
1084
+ if (inputIndex >= 0) {
1085
+ domainModelGetters.set(domain, async () => {
1086
+ try {
1087
+ const domainData = await this.getInputConnectionData('ai_languageModel', inputIndex);
1088
+ const domainModel = (Array.isArray(domainData) ? domainData[0] : domainData);
1089
+ if (domainModel) {
1090
+ // Store in domain config
1091
+ const config = domainConfigs.get(domain) || {
1092
+ enabled: true,
1093
+ threshold: qualityThreshold,
1094
+ temperature: 0.7,
1095
+ };
1096
+ config.model = domainModel;
1097
+ domainConfigs.set(domain, config);
1098
+ return domainModel;
1099
+ }
1100
+ }
1101
+ catch (e) {
1102
+ console.log(`No ${domain} model connected, using drafter as fallback`);
1103
+ }
1104
+ return undefined;
1105
+ });
1106
+ }
1107
+ }
1108
+ // Eagerly load domain models
1109
+ for (const [domain, getter] of domainModelGetters.entries()) {
1110
+ await getter();
1111
+ }
1112
+ // Debug info
320
1113
  const getDrafterInfo = () => {
321
1114
  const type = typeof drafterModel._llmType === 'function' ? drafterModel._llmType() : 'unknown';
322
1115
  const modelName = drafterModel.modelName || drafterModel.model || 'unknown';
323
1116
  return `${type} (${modelName})`;
324
1117
  };
325
- console.log('🚀 CascadeFlow initialized');
1118
+ console.log('🚀 CascadeFlow v2 initialized');
326
1119
  console.log(` PORT MAPPING:`);
327
- console.log(` ├─ TOP port (labeled "Verifier") → VERIFIER model: lazy-loaded (will fetch only if needed)`);
1120
+ console.log(` ├─ TOP port (labeled "Verifier") → VERIFIER model: lazy-loaded`);
328
1121
  console.log(` └─ BOTTOM port (labeled "Drafter") → DRAFTER model: ${getDrafterInfo()}`);
329
1122
  console.log(` Quality threshold: ${qualityThreshold}`);
330
- // Create and return the cascade model with lazy verifier
331
- const cascadeModel = new CascadeChatModel(drafterModel, verifierModelGetter, qualityThreshold);
1123
+ console.log(` Semantic validation: ${useSemanticValidation ? 'enabled' : 'disabled'}`);
1124
+ console.log(` Alignment scoring: ${useAlignmentScoring ? 'enabled' : 'disabled'}`);
1125
+ console.log(` Complexity routing: ${useComplexityRouting ? 'enabled' : 'disabled'}`);
1126
+ console.log(` Circuit breaker: ${useCircuitBreaker ? 'enabled' : 'disabled'}`);
1127
+ console.log(` Domain routing: ${enableDomainRouting ? 'enabled' : 'disabled'}`);
1128
+ if (enabledDomains.length > 0) {
1129
+ console.log(` Enabled domains: ${enabledDomains.join(', ')}`);
1130
+ }
1131
+ // Create and return the cascade model
1132
+ const cascadeModel = new CascadeChatModel(drafterModel, verifierModelGetter, qualityThreshold, useSemanticValidation, useAlignmentScoring, useComplexityRouting, enableDomainRouting, enabledDomains, domainModelGetters, domainConfigs, useCircuitBreaker);
332
1133
  return {
333
1134
  response: cascadeModel,
334
1135
  };
@@ -1 +1 @@
1
- {"version":3,"file":"LmChatCascadeFlow.node.js","sourceRoot":"","sources":["../../../nodes/LmChatCascadeFlow/LmChatCascadeFlow.node.ts"],"names":[],"mappings":";;;AAOA,+CAAsE;AAEtE,6EAA4E;AAK5E,gEAAgE;AAChE,IAAI,gBAAqB,CAAC;AAC1B,IAAI,sBAA2B,CAAC;AAChC,IAAI,CAAC;IACH,MAAM,WAAW,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAAC;IACjD,gBAAgB,GAAG,WAAW,CAAC,gBAAgB,CAAC;IAChD,sBAAsB,GAAG,WAAW,CAAC,sBAAsB,CAAC;AAC9D,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACX,0DAA0D;IAC1D,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;AAClF,CAAC;AAED;;;GAGG;AACH,MAAM,gBAAiB,SAAQ,2BAAa;IAiB1C,YACE,YAA2B,EAC3B,mBAAiD,EACjD,mBAA2B,GAAG;QAE9B,KAAK,CAAC,EAAE,CAAC,CAAC;QAjBZ,gBAAgB;QACR,gBAAW,GAAW,CAAC,CAAC;QACxB,iBAAY,GAAW,CAAC,CAAC;QACzB,iBAAY,GAAW,CAAC,CAAC;QACzB,kBAAa,GAAW,CAAC,CAAC;QAchC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QAEzC,4EAA4E;QAC5E,IAAI,gBAAgB,IAAI,sBAAsB,EAAE,CAAC;YAC/C,IAAI,CAAC;gBACH,IAAI,CAAC,gBAAgB,GAAG,IAAI,gBAAgB,CAAC;oBAC3C,GAAG,sBAAsB;oBACzB,aAAa,EAAE,gBAAgB;iBAChC,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;YAC7D,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,iEAAiE,CAAC,CAAC;gBAChF,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;YAC/B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC/B,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,IAAI,CAAC,IAAI,CAAC,aAAa,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;YAClF,IAAI,CAAC,aAAa,GAAG,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACtD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;YAC3D,OAAO,CAAC,GAAG,CAAC,+BAA+B,YAAY,EAAE,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,KAAoB;QACvC,MAAM,IAAI,GAAG,OAAO,KAAK,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACjF,MAAM,SAAS,GAAI,KAAa,CAAC,SAAS,IAAK,KAAa,CAAC,KAAK,IAAI,SAAS,CAAC;QAChF,OAAO,GAAG,IAAI,KAAK,SAAS,GAAG,CAAC;IAClC,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,YAAoB;QAC7C,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QAEnD,mDAAmD;QACnD,IAAI,UAAU,GAAG,IAAI,CAAC;QAEtB,4CAA4C;QAC5C,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YAClB,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;aAAM,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC;YAC1B,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;aAAM,IAAI,SAAS,GAAG,EAAE,EAAE,CAAC;YAC1B,UAAU,GAAG,IAAI,CAAC;QACpB,CAAC;QAED,gCAAgC;QAChC,MAAM,kBAAkB,GAAG,CAAC,eAAe,EAAE,eAAe,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;QACtF,MAAM,cAAc,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,YAAY,CAAC,WAAW,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QACtG,IAAI,cAAc,EAAE,CAAC;YACnB,UAAU,IAAI,IAAI,CAAC;QACrB,CAAC;QAED,MAAM,MAAM,GAAG,UAAU,IAAI,IAAI,CAAC,gBAAgB,CAAC;QACnD,MAAM,MAAM,GAAG,MAAM;YACnB,CAAC,CAAC,oCAAoC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,gBAAgB,GAAG;YAC1F,CAAC,CAAC,oCAAoC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,gBAAgB,GAAG,CAAC;QAE5F,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,CAAC;IAC3D,CAAC;IAED,QAAQ;QACN,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,KAAK,CAAC,SAAS,CACb,QAAuB,EACvB,OAAkC,EAClC,UAAqC;QAErC,IAAI,CAAC;YACH,gCAAgC;YAChC,MAAM,WAAW,GAAG,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACzD,MAAM,UAAU,EAAE,UAAU,CAAC,4DAA4D,WAAW,IAAI,CAAC,CAAC;YAC1G,OAAO,CAAC,GAAG,CAAC,4DAA4D,WAAW,EAAE,CAAC,CAAC;YACvF,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACpC,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACzE,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC;YAErD,IAAI,CAAC,YAAY,EAAE,CAAC;YAEpB,yEAAyE;YACzE,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YAEvD,IAAI,gBAAqB,CAAC;YAE1B,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC1B,yCAAyC;gBACzC,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;gBACpE,IAAI,CAAC;oBACH,gBAAgB,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;oBACjF,MAAM,UAAU,GAAG,wCAAwC,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,YAAY,gBAAgB,CAAC,MAAM,IAAI,CAAC;oBACzI,MAAM,UAAU,EAAE,UAAU,CAAC,UAAU,CAAC,CAAC;oBACzC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBAExB,IAAI,gBAAgB,CAAC,OAAO,EAAE,cAAc,EAAE,CAAC;wBAC7C,MAAM,YAAY,GAAG,oBAAoB,gBAAgB,CAAC,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;wBAChG,MAAM,UAAU,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;wBAC3C,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;oBAC5B,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,MAAM,QAAQ,GAAG,uDAAuD,CAAC,IAAI,CAAC;oBAC9E,MAAM,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;oBACvC,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;oBACvB,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;gBAC3D,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,sCAAsC;gBACtC,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;gBACzD,MAAM,SAAS,GAAG,0CAA0C,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;gBACvG,MAAM,UAAU,EAAE,UAAU,CAAC,SAAS,CAAC,CAAC;gBACxC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACzB,CAAC;YAED,4DAA4D;YAC5D,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;gBAC5B,wBAAwB;gBACxB,MAAM,oBAAoB,GAAG,MAAM,CAAC,CAAC,uCAAuC;gBAC5E,MAAM,qBAAqB,GAAG,MAAM,CAAC,CAAC,uCAAuC;gBAC7E,MAAM,OAAO,GAAG,CAAC,CAAC,qBAAqB,GAAG,oBAAoB,CAAC,GAAG,qBAAqB,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;gBAE1G,MAAM,OAAO,GAAG,sPAAsP,WAAW,oBAAoB,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,IAAI,CAAC,gBAAgB,wBAAwB,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,iBAAiB,cAAc,4BAA4B,OAAO,sCAAsC,IAAI,CAAC,YAAY,aAAa,IAAI,CAAC,aAAa,aAAa,CAAC;gBAE/kB,MAAM,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAErB,uFAAuF;gBACvF,IAAI,CAAC,cAAc,CAAC,iBAAiB,EAAE,CAAC;oBACrC,cAAsB,CAAC,iBAAiB,GAAG,EAAE,CAAC;gBACjD,CAAC;gBACA,cAAsB,CAAC,iBAAiB,CAAC,WAAW,GAAG;oBACtD,IAAI,EAAE,kBAAkB;oBACxB,UAAU,EAAE,gBAAgB,CAAC,UAAU;oBACvC,aAAa,EAAE,gBAAgB,CAAC,KAAK;oBACrC,UAAU,EAAE,cAAc;oBAC1B,oBAAoB,EAAE,UAAU,CAAC,OAAO,CAAC;oBACzC,UAAU,EAAE,SAAS;iBACtB,CAAC;gBAEF,OAAO;oBACL,WAAW,EAAE,CAAC;4BACZ,IAAI,EAAE,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE;4BACvC,OAAO,EAAE,cAAc;yBACxB,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,0CAA0C;YAC1C,MAAM,WAAW,GAAG,sSAAsS,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,IAAI,CAAC,gBAAgB,4BAA4B,gBAAgB,CAAC,MAAM,yBAAyB,cAAc,uCAAuC,CAAC;YAE7f,MAAM,UAAU,EAAE,UAAU,CAAC,WAAW,CAAC,CAAC;YAC1C,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAEzB,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACrC,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACpD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YACtD,MAAM,eAAe,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACtE,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,iBAAiB,CAAC;YAEvD,IAAI,CAAC,aAAa,EAAE,CAAC;YAErB,MAAM,YAAY,GAAG,cAAc,GAAG,eAAe,CAAC;YACtD,MAAM,cAAc,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,CAAC,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAEvG,MAAM,aAAa,GAAG,wDAAwD,YAAY,0BAA0B,eAAe,yBAAyB,YAAY,gBAAgB,cAAc,kBAAkB,eAAe,+EAA+E,IAAI,CAAC,YAAY,aAAa,cAAc,OAAO,IAAI,CAAC,aAAa,aAAa,CAAC;YAEzY,MAAM,UAAU,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAE3B,uFAAuF;YACvF,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC;gBACtC,eAAuB,CAAC,iBAAiB,GAAG,EAAE,CAAC;YAClD,CAAC;YACA,eAAuB,CAAC,iBAAiB,CAAC,WAAW,GAAG;gBACvD,IAAI,EAAE,uBAAuB;gBAC7B,UAAU,EAAE,gBAAgB,CAAC,UAAU;gBACvC,kBAAkB,EAAE,cAAc;gBAClC,mBAAmB,EAAE,eAAe;gBACpC,gBAAgB,EAAE,YAAY;gBAC9B,oBAAoB,EAAE,CAAC;gBACvB,UAAU,EAAE,UAAU;gBACtB,MAAM,EAAE,gBAAgB,CAAC,MAAM;aAChC,CAAC;YAEF,OAAO;gBACL,WAAW,EAAE,CAAC;wBACZ,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE;wBACxC,OAAO,EAAE,eAAe;qBACzB,CAAC;aACH,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,gCAAgC;YAChC,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACxE,MAAM,QAAQ,GAAG,4QAA4Q,QAAQ,qCAAqC,CAAC;YAE3U,MAAM,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;YACvC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEtB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACpD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YACtD,MAAM,eAAe,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACtE,IAAI,CAAC,aAAa,EAAE,CAAC;YAErB,MAAM,mBAAmB,GAAG,iEAAiE,YAAY,4DAA4D,CAAC;YAEtK,MAAM,UAAU,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YAEjC,uFAAuF;YACvF,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC;gBACtC,eAAuB,CAAC,iBAAiB,GAAG,EAAE,CAAC;YAClD,CAAC;YACA,eAAuB,CAAC,iBAAiB,CAAC,WAAW,GAAG;gBACvD,IAAI,EAAE,gBAAgB;gBACtB,KAAK,EAAE,QAAQ;gBACf,oBAAoB,EAAE,CAAC;gBACvB,UAAU,EAAE,UAAU;aACvB,CAAC;YAEF,OAAO;gBACL,WAAW,EAAE,CAAC;wBACZ,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE;wBACxC,OAAO,EAAE,eAAe;qBACzB,CAAC;aACH,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAED,MAAa,iBAAiB;IAA9B;QACE,gBAAW,GAAyB;YAClC,WAAW,EAAE,aAAa;YAC1B,IAAI,EAAE,mBAAmB;YACzB,IAAI,EAAE,sBAAsB;YAC5B,KAAK,EAAE,CAAC,WAAW,CAAC;YACpB,OAAO,EAAE,CAAC;YACV,WAAW,EAAE,yIAAyI;YACtJ,QAAQ,EAAE;gBACR,IAAI,EAAE,aAAa;aACpB;YACD,KAAK,EAAE;gBACL,UAAU,EAAE,CAAC,IAAI,CAAC;gBAClB,aAAa,EAAE;oBACb,EAAE,EAAE,CAAC,iBAAiB,EAAE,aAAa,CAAC;iBACvC;gBACD,SAAS,EAAE;oBACT,oBAAoB,EAAE;wBACpB;4BACE,GAAG,EAAE,0CAA0C;yBAChD;qBACF;iBACF;aACF;YACD,yCAAyC;YACzC,sFAAsF;YACtF,iGAAiG;YACjG,wEAAwE;YACxE,2FAA2F;YAC3F,MAAM,EAAE;gBACN;oBACE,WAAW,EAAE,UAAU;oBACvB,IAAI,EAAE,kBAAyB;oBAC/B,cAAc,EAAE,CAAC;oBACjB,QAAQ,EAAE,IAAI;iBACf;gBACD;oBACE,WAAW,EAAE,SAAS;oBACtB,IAAI,EAAE,kBAAyB;oBAC/B,cAAc,EAAE,CAAC;oBACjB,QAAQ,EAAE,IAAI;iBACf;aACF;YACD,2DAA2D;YAC3D,+EAA+E;YAC/E,OAAO,EAAE,CAAC,kBAAyB,CAAC;YACpC,WAAW,EAAE,CAAC,OAAO,CAAC;YACtB,UAAU,EAAE;gBACV;oBACE,WAAW,EAAE,mBAAmB;oBAChC,IAAI,EAAE,kBAAkB;oBACxB,IAAI,EAAE,QAAQ;oBACd,OAAO,EAAE,IAAI;oBACb,WAAW,EAAE;wBACX,QAAQ,EAAE,CAAC;wBACX,QAAQ,EAAE,CAAC;wBACX,eAAe,EAAE,CAAC;qBACnB;oBACD,WAAW,EAAE,6GAA6G;iBAC3H;aACF;SACF,CAAC;IAwDJ,CAAC;IAtDC,KAAK,CAAC,UAAU;QACd,iBAAiB;QACjB,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,EAAE,IAAI,CAAW,CAAC;QAEtF,kFAAkF;QAClF,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,kBAAyB,EAAE,CAAC,CAAC,CAAC;QACpF,MAAM,YAAY,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAkB,CAAC;QAElG,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,iCAAkB,CAC1B,IAAI,CAAC,OAAO,EAAE,EACd,sGAAsG,CACvG,CAAC;QACJ,CAAC;QAED,qHAAqH;QACrH,MAAM,mBAAmB,GAAG,KAAK,IAAI,EAAE;YACrC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,kBAAyB,EAAE,CAAC,CAAC,CAAC;YACrF,MAAM,aAAa,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,YAAY,CAAkB,CAAC;YAEtG,IAAI,CAAC,aAAa,EAAE,CAAC;gBACnB,MAAM,IAAI,iCAAkB,CAC1B,IAAI,CAAC,OAAO,EAAE,EACd,sGAAsG,CACvG,CAAC;YACJ,CAAC;YAED,OAAO,aAAa,CAAC;QACvB,CAAC,CAAC;QAEF,iCAAiC;QACjC,MAAM,cAAc,GAAG,GAAG,EAAE;YAC1B,MAAM,IAAI,GAAG,OAAO,YAAY,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YAC/F,MAAM,SAAS,GAAI,YAAoB,CAAC,SAAS,IAAK,YAAoB,CAAC,KAAK,IAAI,SAAS,CAAC;YAC9F,OAAO,GAAG,IAAI,KAAK,SAAS,GAAG,CAAC;QAClC,CAAC,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;QAC1C,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,+FAA+F,CAAC,CAAC;QAC7G,OAAO,CAAC,GAAG,CAAC,0DAA0D,cAAc,EAAE,EAAE,CAAC,CAAC;QAC1F,OAAO,CAAC,GAAG,CAAC,yBAAyB,gBAAgB,EAAE,CAAC,CAAC;QAEzD,yDAAyD;QACzD,MAAM,YAAY,GAAG,IAAI,gBAAgB,CACvC,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,CACjB,CAAC;QAEF,OAAO;YACL,QAAQ,EAAE,YAAY;SACvB,CAAC;IACJ,CAAC;CACF;AArHD,8CAqHC"}
1
+ {"version":3,"file":"LmChatCascadeFlow.node.js","sourceRoot":"","sources":["../../../nodes/LmChatCascadeFlow/LmChatCascadeFlow.node.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cascadeflow/n8n-nodes-cascadeflow",
3
- "version": "0.5.5",
3
+ "version": "0.6.1",
4
4
  "description": "n8n node for cascadeflow - Smart AI model cascading with 40-85% cost savings",
5
5
  "keywords": [
6
6
  "n8n-community-node-package",
@@ -56,6 +56,6 @@
56
56
  },
57
57
  "dependencies": {
58
58
  "@langchain/core": "^0.3.0",
59
- "@cascadeflow/core": "^5.0.3"
59
+ "@cascadeflow/core": "^0.6.0"
60
60
  }
61
61
  }