@cascadeflow/n8n-nodes-cascadeflow 0.6.0 → 0.6.2

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;AAoqBtB,qBAAa,iBAAkB,YAAW,SAAS;IACjD,WAAW,EAAE,oBAAoB,CAiF/B;IAEI,UAAU,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC;CA+DlE"}
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,CAoH/B;IAEI,UAAU,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,UAAU,CAAC;CAkJlE"}
@@ -4,12 +4,73 @@ 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
6
  const outputs_1 = require("@langchain/core/outputs");
7
- // Quality validation, cost tracking, and routing - optional import, fallback if unavailable
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
8
67
  let QualityValidator;
9
68
  let CASCADE_QUALITY_CONFIG;
10
69
  let CostCalculator;
11
70
  let ComplexityDetector;
12
71
  let PreRouter;
72
+ let DomainDetector;
73
+ let CircuitBreaker;
13
74
  try {
14
75
  const cascadeCore = require('@cascadeflow/core');
15
76
  QualityValidator = cascadeCore.QualityValidator;
@@ -17,35 +78,50 @@ try {
17
78
  CostCalculator = cascadeCore.CostCalculator;
18
79
  ComplexityDetector = cascadeCore.ComplexityDetector;
19
80
  PreRouter = cascadeCore.PreRouter;
81
+ DomainDetector = cascadeCore.DomainDetector;
82
+ CircuitBreaker = cascadeCore.CircuitBreaker;
20
83
  }
21
84
  catch (e) {
22
85
  // @cascadeflow/core not available - use simple validation and estimates
23
86
  console.warn('⚠️ @cascadeflow/core not available, using fallbacks');
24
87
  }
25
88
  /**
26
- * Custom CascadeChatModel that wraps two models (drafter and verifier)
27
- * 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
28
91
  */
29
92
  class CascadeChatModel extends chat_models_1.BaseChatModel {
30
- constructor(drafterModel, verifierModelGetter, qualityThreshold = 0.7, useSemanticValidation = true, useAlignmentScoring = true, useComplexityRouting = true) {
93
+ constructor(drafterModel, verifierModelGetter, qualityThreshold = 0.7, useSemanticValidation = true, useAlignmentScoring = true, useComplexityRouting = true, useDomainRouting = false, enabledDomains = [], domainModelGetters = new Map(), domainConfigs = new Map(), useCircuitBreaker = true) {
31
94
  super({});
95
+ // Domain-specific models and configurations
96
+ this.domainModels = new Map();
97
+ this.domainConfigs = new Map();
98
+ this.enabledDomains = [];
32
99
  // Cost tracking
33
100
  this.drafterCost = 0;
34
101
  this.verifierCost = 0;
102
+ this.domainCosts = new Map();
35
103
  this.drafterCount = 0;
36
104
  this.verifierCount = 0;
105
+ this.domainCounts = new Map();
37
106
  this.drafterModel = drafterModel;
38
107
  this.verifierModelGetter = verifierModelGetter;
39
108
  this.qualityThreshold = qualityThreshold;
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
+ }
40
116
  // Initialize quality validator with CASCADE-optimized config + semantic validation
41
117
  if (QualityValidator && CASCADE_QUALITY_CONFIG) {
42
118
  try {
43
119
  this.qualityValidator = new QualityValidator({
44
120
  ...CASCADE_QUALITY_CONFIG,
45
121
  minConfidence: qualityThreshold,
46
- useSemanticValidation, // Enable semantic ML-based validation
47
- useAlignmentScoring, // Enable query-response alignment scoring
48
- semanticThreshold: 0.5, // Semantic similarity threshold
122
+ useSemanticValidation,
123
+ useAlignmentScoring,
124
+ semanticThreshold: 0.5,
49
125
  });
50
126
  console.log('✅ CascadeFlow quality validator initialized');
51
127
  if (useSemanticValidation) {
@@ -77,24 +153,51 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
77
153
  else {
78
154
  this.costCalculator = null;
79
155
  }
80
- // Initialize complexity detector and PreRouter if enabled
81
- if (useComplexityRouting && ComplexityDetector && PreRouter) {
156
+ // Initialize complexity detector and domain detector
157
+ if (useComplexityRouting && ComplexityDetector) {
82
158
  try {
83
159
  this.complexityDetector = new ComplexityDetector();
84
- // Note: PreRouter needs model configs, but we only have 2 models in n8n (drafter/verifier)
85
- // We'll use complexity detection to decide: trivial/simple → drafter, hard/expert → direct verifier
86
- this.preRouter = null; // Not using full PreRouter since we only have 2 models
87
160
  console.log('🧠 CascadeFlow complexity-based routing enabled');
88
161
  }
89
162
  catch (e) {
90
163
  console.warn('⚠️ Complexity detector initialization failed');
91
164
  this.complexityDetector = null;
92
- this.preRouter = null;
93
165
  }
94
166
  }
95
167
  else {
96
168
  this.complexityDetector = null;
97
- this.preRouter = 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;
98
201
  }
99
202
  }
100
203
  async getVerifierModel() {
@@ -106,6 +209,17 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
106
209
  }
107
210
  return this.verifierModel;
108
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
+ }
109
223
  /**
110
224
  * Helper to get model info string (type and name)
111
225
  */
@@ -114,21 +228,36 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
114
228
  const modelName = model.modelName || model.model || 'unknown';
115
229
  return `${type} (${modelName})`;
116
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
+ }
117
250
  /**
118
251
  * Check if message contains tool calls
119
- * Tool calls can be in additional_kwargs.tool_calls or additional_kwargs.function_call
120
252
  */
121
253
  hasToolCalls(message) {
122
254
  const additionalKwargs = message.additional_kwargs || {};
123
- // Check for tool_calls array (OpenAI format)
124
255
  if (additionalKwargs.tool_calls && Array.isArray(additionalKwargs.tool_calls) && additionalKwargs.tool_calls.length > 0) {
125
256
  return true;
126
257
  }
127
- // Check for function_call object (legacy format)
128
258
  if (additionalKwargs.function_call && typeof additionalKwargs.function_call === 'object') {
129
259
  return true;
130
260
  }
131
- // Check for tool_calls in response_metadata (Anthropic format)
132
261
  const responseMetadata = message.response_metadata || {};
133
262
  if (responseMetadata.tool_calls && Array.isArray(responseMetadata.tool_calls) && responseMetadata.tool_calls.length > 0) {
134
263
  return true;
@@ -141,15 +270,12 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
141
270
  getToolCallsCount(message) {
142
271
  const additionalKwargs = message.additional_kwargs || {};
143
272
  const responseMetadata = message.response_metadata || {};
144
- // Count tool_calls array
145
273
  if (additionalKwargs.tool_calls && Array.isArray(additionalKwargs.tool_calls)) {
146
274
  return additionalKwargs.tool_calls.length;
147
275
  }
148
- // Count function_call (legacy - counts as 1)
149
276
  if (additionalKwargs.function_call) {
150
277
  return 1;
151
278
  }
152
- // Count Anthropic format tool_calls
153
279
  if (responseMetadata.tool_calls && Array.isArray(responseMetadata.tool_calls)) {
154
280
  return responseMetadata.tool_calls.length;
155
281
  }
@@ -157,17 +283,13 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
157
283
  }
158
284
  /**
159
285
  * Calculate accurate cost from message token usage
160
- * Falls back to rough estimates if cost calculator unavailable
161
286
  */
162
287
  async calculateMessageCost(message, model) {
163
- // Extract token usage from response metadata
164
288
  const responseMetadata = message.response_metadata || {};
165
289
  const tokenUsage = responseMetadata.tokenUsage || responseMetadata.usage || {};
166
290
  const inputTokens = tokenUsage.promptTokens || tokenUsage.prompt_tokens || 0;
167
291
  const outputTokens = tokenUsage.completionTokens || tokenUsage.completion_tokens || 0;
168
- // Get model name
169
292
  const modelName = model.modelName || model.model || 'unknown';
170
- // Use cost calculator if available
171
293
  if (this.costCalculator && inputTokens > 0) {
172
294
  try {
173
295
  const cost = await this.costCalculator.calculateCost({
@@ -192,7 +314,6 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
192
314
  'claude-3-haiku': { input: 0.25, output: 1.25 },
193
315
  default: { input: 1.0, output: 2.0 },
194
316
  };
195
- // Find matching estimate
196
317
  let estimate = estimatesPerMillion.default;
197
318
  for (const [key, value] of Object.entries(estimatesPerMillion)) {
198
319
  if (modelName.includes(key)) {
@@ -209,9 +330,7 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
209
330
  */
210
331
  simpleQualityCheck(responseText) {
211
332
  const wordCount = responseText.split(/\s+/).length;
212
- // Base confidence on response length and structure
213
333
  let confidence = 0.75;
214
- // Very short responses get lower confidence
215
334
  if (wordCount < 5) {
216
335
  confidence = 0.50;
217
336
  }
@@ -221,7 +340,6 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
221
340
  else if (wordCount > 30) {
222
341
  confidence = 0.85;
223
342
  }
224
- // Check for uncertainty markers
225
343
  const uncertaintyMarkers = ['i don\'t know', 'i\'m not sure', 'unclear', 'uncertain'];
226
344
  const hasUncertainty = uncertaintyMarkers.some(marker => responseText.toLowerCase().includes(marker));
227
345
  if (hasUncertainty) {
@@ -238,15 +356,27 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
238
356
  }
239
357
  async _generate(messages, options, runManager) {
240
358
  try {
241
- // Step 1: Detect query complexity (if enabled)
242
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
243
374
  let complexity;
244
375
  let shouldSkipDrafter = false;
245
376
  if (this.complexityDetector) {
246
377
  try {
247
378
  const complexityResult = await this.complexityDetector.detectComplexity(queryText);
248
379
  complexity = complexityResult.level;
249
- // Skip drafter for hard/expert queries - go directly to verifier
250
380
  if (complexity === 'hard' || complexity === 'expert') {
251
381
  shouldSkipDrafter = true;
252
382
  await runManager?.handleText(`🧠 Complexity: ${complexity} → Routing directly to verifier (skip drafter)\n`);
@@ -261,17 +391,34 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
261
391
  console.warn('Complexity detection failed, using normal flow');
262
392
  }
263
393
  }
264
- // Step 1a: If complexity routing says skip drafter, go directly to verifier
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
265
402
  if (shouldSkipDrafter) {
266
403
  const verifierModel = await this.getVerifierModel();
267
404
  const verifierInfo = this.getModelInfo(verifierModel);
268
405
  await runManager?.handleText(`⚡ Direct route: Using verifier for ${complexity} query\n`);
269
406
  const verifierStartTime = Date.now();
270
- const verifierMessage = await verifierModel.invoke(messages, options);
407
+ const verifierMessage = await executeWithProtection(verifierModel, 'verifier');
271
408
  const verifierLatency = Date.now() - verifierStartTime;
272
409
  this.verifierCount++;
273
410
  const verifierCost = await this.calculateMessageCost(verifierMessage, verifierModel);
274
- const flowLog = `\n┌────────────────────────────────────────────┐\n│ ⚡ FLOW: DIRECT VERIFIER (SMART ROUTE) │\n└────────────────────────────────────────────┘\n Query → Complexity Check (${complexity}) → Verifier → Response\n 🧠 Smart routing: Skipped drafter for complex query\n Model used: ${verifierInfo}\n Latency: ${verifierLatency}ms\n 💰 Cost: $${verifierCost.toFixed(6)}\n 📊 Stats: ${this.drafterCount} drafter, ${this.verifierCount} verifier\n`;
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
+ `;
275
422
  await runManager?.handleText(flowLog);
276
423
  console.log(flowLog);
277
424
  if (!verifierMessage.response_metadata) {
@@ -280,6 +427,7 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
280
427
  verifierMessage.response_metadata.cascadeflow = {
281
428
  flow: 'direct_verifier',
282
429
  complexity,
430
+ domain: detectedDomain,
283
431
  latency_ms: verifierLatency,
284
432
  cost_usd: verifierCost,
285
433
  model_used: 'verifier',
@@ -292,26 +440,41 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
292
440
  }],
293
441
  };
294
442
  }
295
- // Step 2: Try the drafter model (normal flow)
296
- const drafterInfo = this.getModelInfo(this.drafterModel);
297
- await runManager?.handleText(`🎯 CascadeFlow: Trying drafter model (from BOTTOM port): ${drafterInfo}\n`);
298
- console.log(`🎯 CascadeFlow: Trying drafter model (from BOTTOM port): ${drafterInfo}`);
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}`);
299
449
  const drafterStartTime = Date.now();
300
- const drafterMessage = await this.drafterModel.invoke(messages, options);
450
+ const drafterMessage = await executeWithProtection(modelToUse, modelType);
301
451
  const drafterLatency = Date.now() - drafterStartTime;
302
- this.drafterCount++;
303
- // Step 2: Check if response contains tool calls
304
- // Tool calls skip quality validation and pass through directly
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
305
459
  const hasToolCalls = this.hasToolCalls(drafterMessage);
306
460
  if (hasToolCalls) {
307
461
  const toolCallsCount = this.getToolCallsCount(drafterMessage);
308
462
  const toolLog = ` 🔧 Tool calls detected (${toolCallsCount}) - bypassing quality check\n`;
309
463
  await runManager?.handleText(toolLog);
310
464
  console.log(toolLog);
311
- const flowLog = `\n┌──────────────────────────────────────────┐\n│ 🔧 FLOW: TOOL CALLS (DIRECT PASS) │\n└──────────────────────────────────────────┘\n Query → Drafter → Tool Calls (${toolCallsCount}) → Response\n ⚡ Tool calling: Drafter generated tool calls\n Model used: ${drafterInfo}\n Latency: ${drafterLatency}ms\n 📊 Stats: ${this.drafterCount} drafter, ${this.verifierCount} verifier\n`;
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
+ `;
312
476
  await runManager?.handleText(flowLog);
313
477
  console.log(flowLog);
314
- // Add tool call metadata
315
478
  if (!drafterMessage.response_metadata) {
316
479
  drafterMessage.response_metadata = {};
317
480
  }
@@ -319,8 +482,9 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
319
482
  flow: 'tool_calls_direct',
320
483
  has_tool_calls: true,
321
484
  tool_calls_count: toolCallsCount,
485
+ domain: detectedDomain,
322
486
  latency_ms: drafterLatency,
323
- model_used: 'drafter'
487
+ model_used: modelType
324
488
  };
325
489
  return {
326
490
  generations: [{
@@ -329,15 +493,17 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
329
493
  }],
330
494
  };
331
495
  }
332
- // Step 3: Quality check using CascadeFlow validator (or simple fallback)
496
+ // Step 6: Quality check with domain-aware threshold
333
497
  const responseText = drafterMessage.content.toString();
498
+ const effectiveThreshold = detectedDomain
499
+ ? (this.domainConfigs.get(detectedDomain)?.threshold ?? this.qualityThreshold)
500
+ : this.qualityThreshold;
334
501
  let validationResult;
335
502
  if (this.qualityValidator) {
336
- // Use full CascadeFlow quality validator
337
- const queryText = messages.map(m => m.content.toString()).join(' ');
338
503
  try {
339
504
  validationResult = await this.qualityValidator.validate(responseText, queryText);
340
- 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`;
341
507
  await runManager?.handleText(qualityLog);
342
508
  console.log(qualityLog);
343
509
  if (validationResult.details?.alignmentScore) {
@@ -351,33 +517,46 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
351
517
  await runManager?.handleText(errorLog);
352
518
  console.warn(errorLog);
353
519
  validationResult = this.simpleQualityCheck(responseText);
520
+ validationResult.passed = validationResult.confidence >= effectiveThreshold;
354
521
  }
355
522
  }
356
523
  else {
357
- // Use simple quality check (fallback)
358
524
  validationResult = this.simpleQualityCheck(responseText);
525
+ validationResult.passed = validationResult.confidence >= effectiveThreshold;
359
526
  const simpleLog = ` 📊 Simple quality check: confidence=${validationResult.confidence.toFixed(2)}\n`;
360
527
  await runManager?.handleText(simpleLog);
361
528
  console.log(simpleLog);
362
529
  }
363
- // Step 4: If quality is sufficient, return drafter response
530
+ // Step 7: If quality is sufficient, return response
364
531
  if (validationResult.passed) {
365
- // Calculate actual cost
366
- const drafterCost = await this.calculateMessageCost(drafterMessage, this.drafterModel);
367
- 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: $${drafterCost.toFixed(6)} (drafter only)\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
+ `;
368
547
  await runManager?.handleText(flowLog);
369
548
  console.log(flowLog);
370
- // Add flow metadata to message for n8n UI visibility (logs only, not in response text)
371
549
  if (!drafterMessage.response_metadata) {
372
550
  drafterMessage.response_metadata = {};
373
551
  }
374
552
  drafterMessage.response_metadata.cascadeflow = {
375
- flow: 'drafter_accepted',
553
+ flow: `${modelType}_accepted`,
376
554
  confidence: validationResult.confidence,
377
555
  quality_score: validationResult.score,
556
+ domain: detectedDomain,
378
557
  latency_ms: drafterLatency,
379
558
  cost_usd: drafterCost,
380
- model_used: 'drafter'
559
+ model_used: modelType
381
560
  };
382
561
  return {
383
562
  generations: [{
@@ -386,31 +565,46 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
386
565
  }],
387
566
  };
388
567
  }
389
- // Step 5: Otherwise, escalate to verifier
390
- 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
+ `;
391
580
  await runManager?.handleText(escalateLog);
392
581
  console.log(escalateLog);
393
582
  const verifierStartTime = Date.now();
394
583
  const verifierModel = await this.getVerifierModel();
395
584
  const verifierInfo = this.getModelInfo(verifierModel);
396
- const verifierMessage = await verifierModel.invoke(messages, options);
585
+ const verifierMessage = await executeWithProtection(verifierModel, 'verifier');
397
586
  const verifierLatency = Date.now() - verifierStartTime;
398
587
  this.verifierCount++;
399
- // Calculate costs
400
588
  const verifierCost = await this.calculateMessageCost(verifierMessage, verifierModel);
401
- const totalCost = verifierCost; // Drafter cost is wasted in this path
589
+ const totalCost = verifierCost;
402
590
  const totalLatency = drafterLatency + verifierLatency;
403
591
  const acceptanceRate = (this.drafterCount / (this.drafterCount + this.verifierCount) * 100).toFixed(1);
404
- 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: $${totalCost.toFixed(6)} (verifier only, drafter attempt wasted)\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
+ `;
405
599
  await runManager?.handleText(completionLog);
406
600
  console.log(completionLog);
407
- // Add flow metadata to message for n8n UI visibility (logs only, not in response text)
408
601
  if (!verifierMessage.response_metadata) {
409
602
  verifierMessage.response_metadata = {};
410
603
  }
411
604
  verifierMessage.response_metadata.cascadeflow = {
412
605
  flow: 'escalated_to_verifier',
413
606
  confidence: validationResult.confidence,
607
+ domain: detectedDomain,
414
608
  drafter_latency_ms: drafterLatency,
415
609
  verifier_latency_ms: verifierLatency,
416
610
  total_latency_ms: totalLatency,
@@ -426,24 +620,35 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
426
620
  };
427
621
  }
428
622
  catch (error) {
429
- // Fallback to verifier on error
623
+ // Handle circuit breaker open state
430
624
  const errorMsg = error instanceof Error ? error.message : String(error);
431
- 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
+ `;
432
635
  await runManager?.handleText(errorLog);
433
636
  console.log(errorLog);
434
637
  const verifierModel = await this.getVerifierModel();
435
638
  const verifierInfo = this.getModelInfo(verifierModel);
436
639
  const verifierMessage = await verifierModel.invoke(messages, options);
437
640
  this.verifierCount++;
438
- 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
+ `;
439
645
  await runManager?.handleText(fallbackCompleteLog);
440
646
  console.log(fallbackCompleteLog);
441
- // Add flow metadata to message for n8n UI visibility (logs only, not in response text)
442
647
  if (!verifierMessage.response_metadata) {
443
648
  verifierMessage.response_metadata = {};
444
649
  }
445
650
  verifierMessage.response_metadata.cascadeflow = {
446
- flow: 'error_fallback',
651
+ flow: isCircuitOpen ? 'circuit_breaker_fallback' : 'error_fallback',
447
652
  error: errorMsg,
448
653
  cost_savings_percent: 0,
449
654
  model_used: 'verifier'
@@ -458,73 +663,82 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
458
663
  }
459
664
  /**
460
665
  * Streaming implementation for real-time cascade feedback
461
- * Streams drafter response, then quality checks, then optionally streams verifier
462
666
  */
463
667
  async *_streamResponseChunks(messages, options, runManager) {
464
668
  try {
465
- // Step 1: Stream drafter response
466
- const drafterInfo = this.getModelInfo(this.drafterModel);
467
- await runManager?.handleText(`🎯 CascadeFlow (Streaming): Trying drafter model: ${drafterInfo}\n`);
468
- console.log(`🎯 CascadeFlow (Streaming): Trying drafter model: ${drafterInfo}`);
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}`);
469
686
  const drafterStartTime = Date.now();
470
687
  let fullDrafterContent = '';
471
688
  let lastChunk = null;
472
- // Stream all drafter chunks to user in real-time
473
- const drafterStream = await this.drafterModel.stream(messages, options);
689
+ const drafterStream = await modelToUse.stream(messages, options);
474
690
  for await (const chunk of drafterStream) {
475
691
  fullDrafterContent += chunk.content;
476
- // Convert AIMessageChunk to ChatGenerationChunk
477
692
  const generationChunk = new outputs_1.ChatGenerationChunk({
478
693
  text: chunk.content.toString(),
479
694
  message: chunk,
480
695
  });
481
696
  lastChunk = generationChunk;
482
- yield generationChunk; // Stream to user immediately
697
+ yield generationChunk;
483
698
  }
484
699
  const drafterLatency = Date.now() - drafterStartTime;
485
700
  this.drafterCount++;
486
- // Step 2: Check for tool calls (after streaming complete)
487
701
  if (lastChunk && this.hasToolCalls(lastChunk.message)) {
488
702
  const toolCallsCount = this.getToolCallsCount(lastChunk.message);
489
703
  const toolLog = `\n🔧 Tool calls detected (${toolCallsCount}) - cascade complete\n`;
490
704
  await runManager?.handleText(toolLog);
491
705
  console.log(toolLog);
492
- return; // Done streaming
706
+ return;
493
707
  }
494
- // Step 3: Quality check (after streaming complete)
495
- const queryText = messages.map(m => m.content.toString()).join(' ');
496
708
  await runManager?.handleText(`\n📊 Running quality check...\n`);
709
+ const effectiveThreshold = detectedDomain
710
+ ? (this.domainConfigs.get(detectedDomain)?.threshold ?? this.qualityThreshold)
711
+ : this.qualityThreshold;
497
712
  let validationResult;
498
713
  if (this.qualityValidator) {
499
714
  try {
500
715
  validationResult = await this.qualityValidator.validate(fullDrafterContent, queryText);
501
- await runManager?.handleText(` Confidence: ${validationResult.confidence.toFixed(2)} (threshold: ${this.qualityThreshold})\n`);
716
+ validationResult.passed = validationResult.confidence >= effectiveThreshold;
717
+ await runManager?.handleText(` Confidence: ${validationResult.confidence.toFixed(2)} (threshold: ${effectiveThreshold})\n`);
502
718
  }
503
719
  catch (e) {
504
720
  validationResult = this.simpleQualityCheck(fullDrafterContent);
721
+ validationResult.passed = validationResult.confidence >= effectiveThreshold;
505
722
  }
506
723
  }
507
724
  else {
508
725
  validationResult = this.simpleQualityCheck(fullDrafterContent);
726
+ validationResult.passed = validationResult.confidence >= effectiveThreshold;
509
727
  }
510
- // Step 4: If quality sufficient, we're done
511
728
  if (validationResult.passed) {
512
- await runManager?.handleText(`✅ Quality check passed - cascade complete (drafter accepted)\n`);
513
- console.log(`✅ Streaming: Drafter accepted (${drafterLatency}ms)`);
514
- return; // Done streaming
729
+ await runManager?.handleText(`✅ Quality check passed - cascade complete (${modelType} accepted)\n`);
730
+ console.log(`✅ Streaming: ${modelType} accepted (${drafterLatency}ms)`);
731
+ return;
515
732
  }
516
- // Step 5: Quality insufficient - escalate to verifier and stream its response
517
733
  await runManager?.handleText(`\n⚠️ Quality check failed - escalating to verifier...\n`);
518
- console.log(`⚠️ Streaming: Escalating to verifier (confidence ${validationResult.confidence.toFixed(2)} < ${this.qualityThreshold})`);
734
+ console.log(`⚠️ Streaming: Escalating to verifier (confidence ${validationResult.confidence.toFixed(2)} < ${effectiveThreshold})`);
519
735
  const verifierModel = await this.getVerifierModel();
520
736
  const verifierInfo = this.getModelInfo(verifierModel);
521
737
  await runManager?.handleText(`🔄 Streaming verifier response from ${verifierInfo}...\n`);
522
738
  const verifierStartTime = Date.now();
523
739
  const verifierStream = await verifierModel.stream(messages, options);
524
740
  this.verifierCount++;
525
- // Stream verifier response
526
741
  for await (const chunk of verifierStream) {
527
- // Convert AIMessageChunk to ChatGenerationChunk
528
742
  yield new outputs_1.ChatGenerationChunk({
529
743
  text: chunk.content.toString(),
530
744
  message: chunk,
@@ -535,7 +749,6 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
535
749
  console.log(`✅ Streaming: Verifier complete (${verifierLatency}ms)`);
536
750
  }
537
751
  catch (error) {
538
- // Fallback to verifier on error
539
752
  const errorMsg = error instanceof Error ? error.message : String(error);
540
753
  await runManager?.handleText(`\n❌ Drafter error - falling back to verifier: ${errorMsg}\n`);
541
754
  console.log(`❌ Streaming: Drafter error, using verifier fallback`);
@@ -543,7 +756,6 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
543
756
  const verifierStream = await verifierModel.stream(messages, options);
544
757
  this.verifierCount++;
545
758
  for await (const chunk of verifierStream) {
546
- // Convert AIMessageChunk to ChatGenerationChunk
547
759
  yield new outputs_1.ChatGenerationChunk({
548
760
  text: chunk.content.toString(),
549
761
  message: chunk,
@@ -552,6 +764,122 @@ class CascadeChatModel extends chat_models_1.BaseChatModel {
552
764
  }
553
765
  }
554
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
+ ];
882
+ }
555
883
  class LmChatCascadeFlow {
556
884
  constructor() {
557
885
  this.description = {
@@ -559,8 +887,8 @@ class LmChatCascadeFlow {
559
887
  name: 'lmChatCascadeFlow',
560
888
  icon: 'file:cascadeflow.svg',
561
889
  group: ['transform'],
562
- version: 1,
563
- 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.',
564
892
  defaults: {
565
893
  name: 'CascadeFlow',
566
894
  },
@@ -577,26 +905,52 @@ class LmChatCascadeFlow {
577
905
  ],
578
906
  },
579
907
  },
580
- // Sub-node: accepts AI model connections
581
- // Visual layout: Index 0 = "Verifier" label (top), Index 1 = "Drafter" label (bottom)
582
- // Actual logic: Index 0 = VERIFIER model (only if needed), Index 1 = DRAFTER model (tried first)
583
- // User connects: TOP port = verifier model, BOTTOM port = drafter model
584
908
  // eslint-disable-next-line n8n-nodes-base/node-class-description-inputs-wrong-regular-node
585
- inputs: [
586
- {
587
- displayName: 'Verifier',
588
- type: 'ai_languageModel',
589
- maxConnections: 1,
590
- required: true,
591
- },
592
- {
593
- displayName: 'Drafter',
594
- type: 'ai_languageModel',
595
- maxConnections: 1,
596
- required: true,
597
- },
598
- ],
599
- // Outputs an AI model that can be connected to Chain nodes
909
+ inputs: `={{ ((params) => {
910
+ // Always include Verifier and Drafter
911
+ const inputs = [
912
+ {
913
+ displayName: 'Verifier',
914
+ type: 'ai_languageModel',
915
+ maxConnections: 1,
916
+ required: true,
917
+ },
918
+ {
919
+ displayName: 'Drafter',
920
+ type: 'ai_languageModel',
921
+ maxConnections: 1,
922
+ required: true,
923
+ },
924
+ ];
925
+
926
+ // Only add domain model inputs if domain routing is enabled
927
+ if (params?.enableDomainRouting) {
928
+ const enabledDomains = params?.enabledDomains || [];
929
+ const domainInputs = {
930
+ code: 'Code Model',
931
+ math: 'Math Model',
932
+ data: 'Data Model',
933
+ creative: 'Creative Model',
934
+ legal: 'Legal Model',
935
+ medical: 'Medical Model',
936
+ financial: 'Financial Model',
937
+ science: 'Science Model',
938
+ };
939
+
940
+ for (const [domain, displayName] of Object.entries(domainInputs)) {
941
+ if (enabledDomains.includes(domain)) {
942
+ inputs.push({
943
+ displayName,
944
+ type: 'ai_languageModel',
945
+ maxConnections: 1,
946
+ required: false,
947
+ });
948
+ }
949
+ }
950
+ }
951
+
952
+ return inputs;
953
+ })($parameter) }}`,
600
954
  // eslint-disable-next-line n8n-nodes-base/node-class-description-outputs-wrong
601
955
  outputs: ['ai_languageModel'],
602
956
  outputNames: ['Model'],
@@ -634,22 +988,49 @@ class LmChatCascadeFlow {
634
988
  default: true,
635
989
  description: 'Whether to route queries directly to the verifier based on detected complexity',
636
990
  },
991
+ {
992
+ displayName: 'Enable Circuit Breaker',
993
+ name: 'useCircuitBreaker',
994
+ type: 'boolean',
995
+ default: true,
996
+ description: 'Whether to use circuit breaker for fault tolerance (auto-fallback on repeated failures)',
997
+ },
998
+ // Domain routing settings
999
+ ...generateDomainProperties(),
637
1000
  ],
638
1001
  };
639
1002
  }
640
1003
  async supplyData() {
641
- // Get parameters
1004
+ // Get core parameters
642
1005
  const qualityThreshold = this.getNodeParameter('qualityThreshold', 0, 0.64);
643
1006
  const useSemanticValidation = this.getNodeParameter('useSemanticValidation', 0, true);
644
1007
  const useAlignmentScoring = this.getNodeParameter('useAlignmentScoring', 0, true);
645
1008
  const useComplexityRouting = this.getNodeParameter('useComplexityRouting', 0, true);
646
- // Get the drafter model immediately (at index 1 - bottom port, labeled "Drafter")
1009
+ const useCircuitBreaker = this.getNodeParameter('useCircuitBreaker', 0, true);
1010
+ // Get domain routing parameters
1011
+ const enableDomainRouting = this.getNodeParameter('enableDomainRouting', 0, false);
1012
+ const enabledDomains = enableDomainRouting
1013
+ ? this.getNodeParameter('enabledDomains', 0, [])
1014
+ : [];
1015
+ // Get domain-specific settings
1016
+ const domainSettingsRaw = this.getNodeParameter('domainSettings', 0, { domainConfig: [] });
1017
+ const domainConfigs = new Map();
1018
+ if (domainSettingsRaw?.domainConfig) {
1019
+ for (const config of domainSettingsRaw.domainConfig) {
1020
+ domainConfigs.set(config.domain, {
1021
+ enabled: enabledDomains.includes(config.domain),
1022
+ threshold: config.threshold || qualityThreshold,
1023
+ temperature: config.temperature || 0.7,
1024
+ });
1025
+ }
1026
+ }
1027
+ // Get the drafter model (index 1 - bottom port, labeled "Drafter")
647
1028
  const drafterData = await this.getInputConnectionData('ai_languageModel', 1);
648
1029
  const drafterModel = (Array.isArray(drafterData) ? drafterData[0] : drafterData);
649
1030
  if (!drafterModel) {
650
1031
  throw new n8n_workflow_1.NodeOperationError(this.getNode(), 'Drafter model is required. Please connect your DRAFTER model to the BOTTOM port (labeled "Drafter").');
651
1032
  }
652
- // Create a lazy loader for the verifier model (only fetched when needed) (at index 0 - top port, labeled "Verifier")
1033
+ // Create lazy loader for verifier (index 0 - top port, labeled "Verifier")
653
1034
  const verifierModelGetter = async () => {
654
1035
  const verifierData = await this.getInputConnectionData('ai_languageModel', 0);
655
1036
  const verifierModel = (Array.isArray(verifierData) ? verifierData[0] : verifierData);
@@ -658,22 +1039,74 @@ class LmChatCascadeFlow {
658
1039
  }
659
1040
  return verifierModel;
660
1041
  };
661
- // Debug: Get detailed model info
1042
+ // Domain input order (same as dynamic inputs template)
1043
+ // Only domains in this list can have dedicated model inputs
1044
+ const domainInputOrder = [
1045
+ 'code', 'math', 'data', 'creative', 'legal', 'medical', 'financial', 'science'
1046
+ ];
1047
+ // Build dynamic index mapping based on which domains are actually enabled
1048
+ // Inputs: 0=Verifier, 1=Drafter, then enabled domains in order
1049
+ const domainInputMap = new Map();
1050
+ let inputIndex = 2; // Start after Verifier (0) and Drafter (1)
1051
+ for (const domain of domainInputOrder) {
1052
+ if (enabledDomains.includes(domain)) {
1053
+ domainInputMap.set(domain, inputIndex);
1054
+ inputIndex++;
1055
+ }
1056
+ }
1057
+ // Create domain model getters for enabled domains
1058
+ const domainModelGetters = new Map();
1059
+ for (const domain of enabledDomains) {
1060
+ const domainIndex = domainInputMap.get(domain);
1061
+ if (domainIndex !== undefined) {
1062
+ domainModelGetters.set(domain, async () => {
1063
+ try {
1064
+ const domainData = await this.getInputConnectionData('ai_languageModel', domainIndex);
1065
+ const domainModel = (Array.isArray(domainData) ? domainData[0] : domainData);
1066
+ if (domainModel) {
1067
+ // Store in domain config
1068
+ const config = domainConfigs.get(domain) || {
1069
+ enabled: true,
1070
+ threshold: qualityThreshold,
1071
+ temperature: 0.7,
1072
+ };
1073
+ config.model = domainModel;
1074
+ domainConfigs.set(domain, config);
1075
+ return domainModel;
1076
+ }
1077
+ }
1078
+ catch (e) {
1079
+ console.log(`No ${domain} model connected, using drafter as fallback`);
1080
+ }
1081
+ return undefined;
1082
+ });
1083
+ }
1084
+ }
1085
+ // Eagerly load domain models
1086
+ for (const [domain, getter] of domainModelGetters.entries()) {
1087
+ await getter();
1088
+ }
1089
+ // Debug info
662
1090
  const getDrafterInfo = () => {
663
1091
  const type = typeof drafterModel._llmType === 'function' ? drafterModel._llmType() : 'unknown';
664
1092
  const modelName = drafterModel.modelName || drafterModel.model || 'unknown';
665
1093
  return `${type} (${modelName})`;
666
1094
  };
667
- console.log('🚀 CascadeFlow initialized');
1095
+ console.log('🚀 CascadeFlow v2 initialized');
668
1096
  console.log(` PORT MAPPING:`);
669
- console.log(` ├─ TOP port (labeled "Verifier") → VERIFIER model: lazy-loaded (will fetch only if needed)`);
1097
+ console.log(` ├─ TOP port (labeled "Verifier") → VERIFIER model: lazy-loaded`);
670
1098
  console.log(` └─ BOTTOM port (labeled "Drafter") → DRAFTER model: ${getDrafterInfo()}`);
671
1099
  console.log(` Quality threshold: ${qualityThreshold}`);
672
1100
  console.log(` Semantic validation: ${useSemanticValidation ? 'enabled' : 'disabled'}`);
673
1101
  console.log(` Alignment scoring: ${useAlignmentScoring ? 'enabled' : 'disabled'}`);
674
1102
  console.log(` Complexity routing: ${useComplexityRouting ? 'enabled' : 'disabled'}`);
675
- // Create and return the cascade model with lazy verifier and advanced features
676
- const cascadeModel = new CascadeChatModel(drafterModel, verifierModelGetter, qualityThreshold, useSemanticValidation, useAlignmentScoring, useComplexityRouting);
1103
+ console.log(` Circuit breaker: ${useCircuitBreaker ? 'enabled' : 'disabled'}`);
1104
+ console.log(` Domain routing: ${enableDomainRouting ? 'enabled' : 'disabled'}`);
1105
+ if (enabledDomains.length > 0) {
1106
+ console.log(` Enabled domains: ${enabledDomains.join(', ')}`);
1107
+ }
1108
+ // Create and return the cascade model
1109
+ const cascadeModel = new CascadeChatModel(drafterModel, verifierModelGetter, qualityThreshold, useSemanticValidation, useAlignmentScoring, useComplexityRouting, enableDomainRouting, enabledDomains, domainModelGetters, domainConfigs, useCircuitBreaker);
677
1110
  return {
678
1111
  response: cascadeModel,
679
1112
  };
@@ -1 +1 @@
1
- {"version":3,"file":"LmChatCascadeFlow.node.js","sourceRoot":"","sources":["../../../nodes/LmChatCascadeFlow/LmChatCascadeFlow.node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LmChatCascadeFlow.node.js","sourceRoot":"","sources":["../../../nodes/LmChatCascadeFlow/LmChatCascadeFlow.node.ts"],"names":[],"mappings":";;;AAOA,+CAAsE;AAEtE,6EAA4E;AAG5E,qDAA0F;AAE1F,gFAAgF;AAChF,8CAA8C;AAC9C,gFAAgF;AAChF,MAAM,OAAO,GAAG;IACd,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,UAAU,EAAE,YAAY;IACxB,GAAG,EAAE,KAAK;IACV,YAAY,EAAE,cAAc;IAC5B,IAAI,EAAE,MAAM;IACZ,QAAQ,EAAE,UAAU;IACpB,OAAO,EAAE,SAAS;IAClB,WAAW,EAAE,aAAa;IAC1B,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,SAAS;CACV,CAAC;AAIX,kCAAkC;AAClC,MAAM,oBAAoB,GAA+B;IACvD,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,eAAe;IACrB,UAAU,EAAE,mBAAmB;IAC/B,GAAG,EAAE,iBAAiB;IACtB,YAAY,EAAE,cAAc;IAC5B,IAAI,EAAE,cAAc;IACpB,QAAQ,EAAE,kBAAkB;IAC5B,OAAO,EAAE,eAAe;IACxB,WAAW,EAAE,aAAa;IAC1B,IAAI,EAAE,aAAa;IACnB,OAAO,EAAE,SAAS;IAClB,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;IACd,SAAS,EAAE,WAAW;IACtB,UAAU,EAAE,YAAY;IACxB,OAAO,EAAE,SAAS;CACnB,CAAC;AAEF,iCAAiC;AACjC,MAAM,mBAAmB,GAA+B;IACtD,IAAI,EAAE,yCAAyC;IAC/C,IAAI,EAAE,uCAAuC;IAC7C,UAAU,EAAE,uCAAuC;IACnD,GAAG,EAAE,8CAA8C;IACnD,YAAY,EAAE,0CAA0C;IACxD,IAAI,EAAE,8CAA8C;IACpD,QAAQ,EAAE,mCAAmC;IAC7C,OAAO,EAAE,wCAAwC;IACjD,WAAW,EAAE,oCAAoC;IACjD,IAAI,EAAE,8CAA8C;IACpD,OAAO,EAAE,6CAA6C;IACtD,OAAO,EAAE,yCAAyC;IAClD,KAAK,EAAE,yCAAyC;IAChD,SAAS,EAAE,0CAA0C;IACrD,UAAU,EAAE,oCAAoC;IAChD,OAAO,EAAE,kCAAkC;CAC5C,CAAC;AAEF,oFAAoF;AACpF,IAAI,gBAAqB,CAAC;AAC1B,IAAI,sBAA2B,CAAC;AAChC,IAAI,cAAmB,CAAC;AACxB,IAAI,kBAAuB,CAAC;AAC5B,IAAI,SAAc,CAAC;AACnB,IAAI,cAAmB,CAAC;AACxB,IAAI,cAAmB,CAAC;AAExB,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;IAC5D,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC;IAC5C,kBAAkB,GAAG,WAAW,CAAC,kBAAkB,CAAC;IACpD,SAAS,GAAG,WAAW,CAAC,SAAS,CAAC;IAClC,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC;IAC5C,cAAc,GAAG,WAAW,CAAC,cAAc,CAAC;AAC9C,CAAC;AAAC,OAAO,CAAC,EAAE,CAAC;IACX,wEAAwE;IACxE,OAAO,CAAC,IAAI,CAAC,sDAAsD,CAAC,CAAC;AACvE,CAAC;AAYD;;;GAGG;AACH,MAAM,gBAAiB,SAAQ,2BAAa;IAuC1C,YACE,YAA2B,EAC3B,mBAAiD,EACjD,mBAA2B,GAAG,EAC9B,wBAAiC,IAAI,EACrC,sBAA+B,IAAI,EACnC,uBAAgC,IAAI,EACpC,mBAA4B,KAAK,EACjC,iBAA+B,EAAE,EACjC,qBAAgF,IAAI,GAAG,EAAE,EACzF,gBAA+C,IAAI,GAAG,EAAE,EACxD,oBAA6B,IAAI;QAEjC,KAAK,CAAC,EAAE,CAAC,CAAC;QA/CZ,4CAA4C;QACpC,iBAAY,GAA+C,IAAI,GAAG,EAAE,CAAC;QACrE,kBAAa,GAAkC,IAAI,GAAG,EAAE,CAAC;QACzD,mBAAc,GAAiB,EAAE,CAAC;QAE1C,gBAAgB;QACR,gBAAW,GAAW,CAAC,CAAC;QACxB,iBAAY,GAAW,CAAC,CAAC;QACzB,gBAAW,GAA4B,IAAI,GAAG,EAAE,CAAC;QACjD,iBAAY,GAAW,CAAC,CAAC;QACzB,kBAAa,GAAW,CAAC,CAAC;QAC1B,iBAAY,GAA4B,IAAI,GAAG,EAAE,CAAC;QAqCxD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,mBAAmB,GAAG,mBAAmB,CAAC;QAC/C,IAAI,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;QACzC,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,aAAa,GAAG,aAAa,CAAC;QAEnC,8CAA8C;QAC9C,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5D,0BAA0B;YAC1B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC3C,CAAC;QAED,mFAAmF;QACnF,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;oBAC/B,qBAAqB;oBACrB,mBAAmB;oBACnB,iBAAiB,EAAE,GAAG;iBACvB,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;gBAC3D,IAAI,qBAAqB,EAAE,CAAC;oBAC1B,OAAO,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;gBAC9E,CAAC;gBACD,IAAI,mBAAmB,EAAE,CAAC;oBACxB,OAAO,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;gBACjD,CAAC;YACH,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;QAED,0CAA0C;QAC1C,IAAI,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC;gBACH,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,EAAE,CAAC;gBAC3C,OAAO,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;YAC5D,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,4DAA4D,CAAC,CAAC;gBAC3E,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC7B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;QAED,qDAAqD;QACrD,IAAI,oBAAoB,IAAI,kBAAkB,EAAE,CAAC;YAC/C,IAAI,CAAC;gBACH,IAAI,CAAC,kBAAkB,GAAG,IAAI,kBAAkB,EAAE,CAAC;gBACnD,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;YACjE,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,+CAA+C,CAAC,CAAC;gBAC9D,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;YACjC,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;QACjC,CAAC;QAED,0DAA0D;QAC1D,IAAI,gBAAgB,IAAI,cAAc,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpE,IAAI,CAAC;gBACH,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC,EAAE,cAAc,EAAE,CAAC,CAAC;gBAC7D,OAAO,CAAC,GAAG,CAAC,8CAA8C,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACzF,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;gBAC1D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC7B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,CAAC;QAED,iDAAiD;QACjD,IAAI,iBAAiB,IAAI,cAAc,EAAE,CAAC;YACxC,IAAI,CAAC;gBACH,IAAI,CAAC,cAAc,GAAG,IAAI,cAAc,CAAC;oBACvC,gBAAgB,EAAE,CAAC;oBACnB,eAAe,EAAE,KAAK,EAAE,aAAa;oBACrC,gBAAgB,EAAE,CAAC;iBACpB,CAAC,CAAC;gBACH,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YAC1D,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,2CAA2C,CAAC,CAAC;gBAC1D,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC7B,CAAC;QACH,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;QAC7B,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,KAAK,CAAC,cAAc,CAAC,MAAkB;QAC7C,MAAM,aAAa,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACpD,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO,aAAa,CAAC;QACvB,CAAC;QACD,kDAAkD;QAClD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,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,KAAK,CAAC,YAAY,CAAC,SAAiB;QAC1C,IAAI,CAAC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC7D,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;YAC3D,IAAI,MAAM,IAAI,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;gBAC3E,OAAO,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,MAAM,iBAAiB,MAAM,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC;gBAC5G,OAAO,MAAM,CAAC,MAAM,CAAC;YACvB,CAAC;QACH,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;QACjE,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,YAAY,CAAC,OAAoB;QACvC,MAAM,gBAAgB,GAAI,OAAe,CAAC,iBAAiB,IAAI,EAAE,CAAC;QAElE,IAAI,gBAAgB,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,gBAAgB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,gBAAgB,CAAC,aAAa,IAAI,OAAO,gBAAgB,CAAC,aAAa,KAAK,QAAQ,EAAE,CAAC;YACzF,OAAO,IAAI,CAAC;QACd,CAAC;QAED,MAAM,gBAAgB,GAAI,OAAe,CAAC,iBAAiB,IAAI,EAAE,CAAC;QAClE,IAAI,gBAAgB,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,IAAI,gBAAgB,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxH,OAAO,IAAI,CAAC;QACd,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED;;OAEG;IACK,iBAAiB,CAAC,OAAoB;QAC5C,MAAM,gBAAgB,GAAI,OAAe,CAAC,iBAAiB,IAAI,EAAE,CAAC;QAClE,MAAM,gBAAgB,GAAI,OAAe,CAAC,iBAAiB,IAAI,EAAE,CAAC;QAElE,IAAI,gBAAgB,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9E,OAAO,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC;QAC5C,CAAC;QAED,IAAI,gBAAgB,CAAC,aAAa,EAAE,CAAC;YACnC,OAAO,CAAC,CAAC;QACX,CAAC;QAED,IAAI,gBAAgB,CAAC,UAAU,IAAI,KAAK,CAAC,OAAO,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC;YAC9E,OAAO,gBAAgB,CAAC,UAAU,CAAC,MAAM,CAAC;QAC5C,CAAC;QAED,OAAO,CAAC,CAAC;IACX,CAAC;IAED;;OAEG;IACK,KAAK,CAAC,oBAAoB,CAChC,OAAoB,EACpB,KAAoB;QAEpB,MAAM,gBAAgB,GAAI,OAAe,CAAC,iBAAiB,IAAI,EAAE,CAAC;QAClE,MAAM,UAAU,GAAG,gBAAgB,CAAC,UAAU,IAAI,gBAAgB,CAAC,KAAK,IAAI,EAAE,CAAC;QAE/E,MAAM,WAAW,GAAG,UAAU,CAAC,YAAY,IAAI,UAAU,CAAC,aAAa,IAAI,CAAC,CAAC;QAC7E,MAAM,YAAY,GAAG,UAAU,CAAC,gBAAgB,IAAI,UAAU,CAAC,iBAAiB,IAAI,CAAC,CAAC;QAEtF,MAAM,SAAS,GAAI,KAAa,CAAC,SAAS,IAAK,KAAa,CAAC,KAAK,IAAI,SAAS,CAAC;QAEhF,IAAI,IAAI,CAAC,cAAc,IAAI,WAAW,GAAG,CAAC,EAAE,CAAC;YAC3C,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,aAAa,CAAC;oBACnD,KAAK,EAAE,SAAS;oBAChB,WAAW;oBACX,YAAY;iBACb,CAAC,CAAC;gBACH,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,CAAC,IAAI,CAAC,+BAA+B,SAAS,kBAAkB,CAAC,CAAC;YAC3E,CAAC;QACH,CAAC;QAED,kDAAkD;QAClD,MAAM,mBAAmB,GAAsD;YAC7E,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE;YAC3C,QAAQ,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;YACtC,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;YAC5C,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;YACtC,eAAe,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;YAC5C,mBAAmB,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE;YACjD,gBAAgB,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE;YAC/C,OAAO,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE;SACrC,CAAC;QAEF,IAAI,QAAQ,GAAG,mBAAmB,CAAC,OAAO,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,mBAAmB,CAAC,EAAE,CAAC;YAC/D,IAAI,SAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC5B,QAAQ,GAAG,KAAK,CAAC;gBACjB,MAAM;YACR,CAAC;QACH,CAAC;QAED,MAAM,IAAI,GACR,CAAC,WAAW,GAAG,OAAS,CAAC,GAAG,QAAQ,CAAC,KAAK;YAC1C,CAAC,YAAY,GAAG,OAAS,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC;QAE/C,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;OAEG;IACK,kBAAkB,CAAC,YAAoB;QAC7C,MAAM,SAAS,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;QAEnD,IAAI,UAAU,GAAG,IAAI,CAAC;QAEtB,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,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,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEpE,qDAAqD;YACrD,IAAI,cAAc,GAAsB,IAAI,CAAC;YAC7C,IAAI,WAAW,GAAyB,IAAI,CAAC;YAE7C,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnC,cAAc,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBACpD,IAAI,cAAc,EAAE,CAAC;oBACnB,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;oBAC5D,IAAI,YAAY,EAAE,KAAK,EAAE,CAAC;wBACxB,WAAW,GAAG,YAAY,CAAC,KAAK,CAAC;wBACjC,MAAM,UAAU,EAAE,UAAU,CAAC,cAAc,oBAAoB,CAAC,cAAc,CAAC,kCAAkC,CAAC,CAAC;oBACrH,CAAC;gBACH,CAAC;YACH,CAAC;YAED,kCAAkC;YAClC,IAAI,UAA8B,CAAC;YACnC,IAAI,iBAAiB,GAAG,KAAK,CAAC;YAE9B,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC5B,IAAI,CAAC;oBACH,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,SAAS,CAAC,CAAC;oBACnF,UAAU,GAAG,gBAAgB,CAAC,KAAK,CAAC;oBAEpC,IAAI,UAAU,KAAK,MAAM,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;wBACrD,iBAAiB,GAAG,IAAI,CAAC;wBACzB,MAAM,UAAU,EAAE,UAAU,CAAC,kBAAkB,UAAU,kDAAkD,CAAC,CAAC;wBAC7G,OAAO,CAAC,GAAG,CAAC,kBAAkB,UAAU,0BAA0B,CAAC,CAAC;oBACtE,CAAC;yBAAM,CAAC;wBACN,MAAM,UAAU,EAAE,UAAU,CAAC,kBAAkB,UAAU,2BAA2B,CAAC,CAAC;wBACtF,OAAO,CAAC,GAAG,CAAC,kBAAkB,UAAU,kBAAkB,CAAC,CAAC;oBAC9D,CAAC;gBACH,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,OAAO,CAAC,IAAI,CAAC,gDAAgD,CAAC,CAAC;gBACjE,CAAC;YACH,CAAC;YAED,+DAA+D;YAC/D,MAAM,qBAAqB,GAAG,KAAK,EAAE,KAAoB,EAAE,SAAiB,EAAE,EAAE;gBAC9E,IAAI,IAAI,CAAC,cAAc,EAAE,CAAC;oBACxB,OAAO,MAAM,IAAI,CAAC,cAAc,CAAC,OAAO,CACtC,SAAS,EACT,KAAK,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAClD,CAAC;gBACJ,CAAC;gBACD,OAAO,MAAM,KAAK,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC/C,CAAC,CAAC;YAEF,4EAA4E;YAC5E,IAAI,iBAAiB,EAAE,CAAC;gBACtB,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBACpD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;gBAEtD,MAAM,UAAU,EAAE,UAAU,CAAC,sCAAsC,UAAU,UAAU,CAAC,CAAC;gBAEzF,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;gBACrC,MAAM,eAAe,GAAG,MAAM,qBAAqB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;gBAC/E,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,iBAAiB,CAAC;gBAEvD,IAAI,CAAC,aAAa,EAAE,CAAC;gBAErB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;gBAErF,MAAM,OAAO,GAAG;;;;+BAIO,UAAU;;iBAExB,YAAY;cACf,eAAe;eACd,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;eACvB,IAAI,CAAC,YAAY,aAAa,IAAI,CAAC,aAAa;CAC9D,CAAC;gBAEM,MAAM,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAErB,IAAI,CAAC,eAAe,CAAC,iBAAiB,EAAE,CAAC;oBACtC,eAAuB,CAAC,iBAAiB,GAAG,EAAE,CAAC;gBAClD,CAAC;gBACA,eAAuB,CAAC,iBAAiB,CAAC,WAAW,GAAG;oBACvD,IAAI,EAAE,iBAAiB;oBACvB,UAAU;oBACV,MAAM,EAAE,cAAc;oBACtB,UAAU,EAAE,eAAe;oBAC3B,QAAQ,EAAE,YAAY;oBACtB,UAAU,EAAE,UAAU;oBACtB,MAAM,EAAE,qBAAqB,UAAU,qCAAqC;iBAC7E,CAAC;gBAEF,OAAO;oBACL,WAAW,EAAE,CAAC;4BACZ,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,QAAQ,EAAE;4BACxC,OAAO,EAAE,eAAe;yBACzB,CAAC;iBACH,CAAC;YACJ,CAAC;YAED,uDAAuD;YACvD,MAAM,UAAU,GAAG,WAAW,IAAI,IAAI,CAAC,YAAY,CAAC;YACpD,MAAM,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,UAAU,cAAc,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YACvE,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YAEhD,MAAM,UAAU,EAAE,UAAU,CAAC,0BAA0B,SAAS,WAAW,SAAS,IAAI,CAAC,CAAC;YAC1F,OAAO,CAAC,GAAG,CAAC,0BAA0B,SAAS,WAAW,SAAS,EAAE,CAAC,CAAC;YAEvE,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACpC,MAAM,cAAc,GAAG,MAAM,qBAAqB,CAAC,UAAU,EAAE,SAAS,CAAC,CAAC;YAC1E,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC;YAErD,IAAI,WAAW,IAAI,cAAc,EAAE,CAAC;gBAClC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,EAAE,CAAC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;YAC1F,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,YAAY,EAAE,CAAC;YACtB,CAAC;YAED,gDAAgD;YAChD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;YAEvD,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,cAAc,CAAC,CAAC;gBAC9D,MAAM,OAAO,GAAG,8BAA8B,cAAc,+BAA+B,CAAC;gBAC5F,MAAM,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAErB,MAAM,OAAO,GAAG;;;;aAIX,SAAS,kBAAkB,cAAc;qBACjC,SAAS;iBACb,SAAS;KACrB,cAAc,CAAC,CAAC,CAAC,WAAW,oBAAoB,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;cAC9D,cAAc;eACb,IAAI,CAAC,YAAY,aAAa,IAAI,CAAC,aAAa;CAC9D,CAAC;gBAEM,MAAM,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAErB,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,mBAAmB;oBACzB,cAAc,EAAE,IAAI;oBACpB,gBAAgB,EAAE,cAAc;oBAChC,MAAM,EAAE,cAAc;oBACtB,UAAU,EAAE,cAAc;oBAC1B,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,oDAAoD;YACpD,MAAM,YAAY,GAAG,cAAc,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;YACvD,MAAM,kBAAkB,GAAG,cAAc;gBACvC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,SAAS,IAAI,IAAI,CAAC,gBAAgB,CAAC;gBAC9E,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAE1B,IAAI,gBAAqB,CAAC;YAE1B,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC1B,IAAI,CAAC;oBACH,gBAAgB,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;oBACjF,gBAAgB,CAAC,MAAM,GAAG,gBAAgB,CAAC,UAAU,IAAI,kBAAkB,CAAC;oBAC5E,MAAM,UAAU,GAAG,wCAAwC,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,eAAe,kBAAkB,YAAY,gBAAgB,CAAC,MAAM,IAAI,CAAC;oBAC1K,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;oBACzD,gBAAgB,CAAC,MAAM,GAAG,gBAAgB,CAAC,UAAU,IAAI,kBAAkB,CAAC;gBAC9E,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,YAAY,CAAC,CAAC;gBACzD,gBAAgB,CAAC,MAAM,GAAG,gBAAgB,CAAC,UAAU,IAAI,kBAAkB,CAAC;gBAC5E,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,oDAAoD;YACpD,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;gBAC5B,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,cAAc,EAAE,UAAU,CAAC,CAAC;gBAEhF,MAAM,OAAO,GAAG;;aAEX,SAAS,CAAC,WAAW,EAAE;;aAEvB,cAAc,CAAC,CAAC,CAAC,UAAU,cAAc,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS;0BACnD,SAAS;iBAClB,SAAS;KACrB,cAAc,CAAC,CAAC,CAAC,WAAW,oBAAoB,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE;iBAC3D,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,kBAAkB;oBACrE,gBAAgB,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;cACvC,cAAc;eACb,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,SAAS;eACpC,IAAI,CAAC,YAAY,aAAa,IAAI,CAAC,aAAa,uBAAuB,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;CAC1I,CAAC;gBAEM,MAAM,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBAErB,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,GAAG,SAAS,WAAW;oBAC7B,UAAU,EAAE,gBAAgB,CAAC,UAAU;oBACvC,aAAa,EAAE,gBAAgB,CAAC,KAAK;oBACrC,MAAM,EAAE,cAAc;oBACtB,UAAU,EAAE,cAAc;oBAC1B,QAAQ,EAAE,WAAW;oBACrB,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;;;;aAIb,cAAc,CAAC,CAAC,CAAC,UAAU,cAAc,MAAM,CAAC,CAAC,CAAC,EAAE,GAAG,SAAS;oBACzD,SAAS;iBACZ,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,kBAAkB;aAClE,gBAAgB,CAAC,MAAM;KAC/B,SAAS,aAAa,cAAc;;CAExC,CAAC;YAEI,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,qBAAqB,CAAC,aAAa,EAAE,UAAU,CAAC,CAAC;YAC/E,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,iBAAiB,CAAC;YAEvD,IAAI,CAAC,aAAa,EAAE,CAAC;YAErB,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,oBAAoB,CAAC,eAAe,EAAE,aAAa,CAAC,CAAC;YACrF,MAAM,SAAS,GAAG,YAAY,CAAC;YAE/B,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;iBACX,YAAY;uBACN,eAAe;oBAClB,YAAY,OAAO,SAAS,KAAK,cAAc,kBAAkB,eAAe;eACrF,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC,oBAAoB,SAAS;eACjD,IAAI,CAAC,YAAY,aAAa,cAAc,OAAO,IAAI,CAAC,aAAa;CACnF,CAAC;YAEI,MAAM,UAAU,EAAE,UAAU,CAAC,aAAa,CAAC,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;YAE3B,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,MAAM,EAAE,cAAc;gBACtB,kBAAkB,EAAE,cAAc;gBAClC,mBAAmB,EAAE,eAAe;gBACpC,gBAAgB,EAAE,YAAY;gBAC9B,QAAQ,EAAE,SAAS;gBACnB,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,oCAAoC;YACpC,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACxE,MAAM,aAAa,GAAG,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YAEnG,MAAM,QAAQ,GAAG;;aAEV,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,eAAe;;uBAEtC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO;kBAC7C,aAAa,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,gBAAgB;YAC/D,QAAQ;;CAEnB,CAAC;YAEI,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;iBACjB,YAAY;kDACqB,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,OAAO;CACzF,CAAC;YAEI,MAAM,UAAU,EAAE,UAAU,CAAC,mBAAmB,CAAC,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YAEjC,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,aAAa,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,gBAAgB;gBACnE,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;IAED;;OAEG;IACH,KAAK,CAAC,CAAC,qBAAqB,CAC1B,QAAuB,EACvB,OAAkC,EAClC,UAAqC;QAErC,IAAI,CAAC;YACH,MAAM,SAAS,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAEpE,8BAA8B;YAC9B,IAAI,cAAc,GAAsB,IAAI,CAAC;YAC7C,IAAI,UAAU,GAAG,IAAI,CAAC,YAAY,CAAC;YAEnC,IAAI,IAAI,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACnC,cAAc,GAAG,MAAM,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,CAAC;gBACpD,IAAI,cAAc,EAAE,CAAC;oBACnB,MAAM,YAAY,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;oBAC5D,IAAI,YAAY,EAAE,KAAK,EAAE,CAAC;wBACxB,UAAU,GAAG,YAAY,CAAC,KAAK,CAAC;oBAClC,CAAC;gBACH,CAAC;YACH,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;YAChD,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,UAAU,cAAc,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YAE1E,MAAM,UAAU,EAAE,UAAU,CAAC,sCAAsC,SAAS,WAAW,SAAS,IAAI,CAAC,CAAC;YACtG,OAAO,CAAC,GAAG,CAAC,sCAAsC,SAAS,WAAW,SAAS,EAAE,CAAC,CAAC;YAEnF,MAAM,gBAAgB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACpC,IAAI,kBAAkB,GAAG,EAAE,CAAC;YAC5B,IAAI,SAAS,GAA+B,IAAI,CAAC;YAEjD,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAEjE,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,aAAa,EAAE,CAAC;gBACxC,kBAAkB,IAAI,KAAK,CAAC,OAAO,CAAC;gBACpC,MAAM,eAAe,GAAG,IAAI,6BAAmB,CAAC;oBAC9C,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE;oBAC9B,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC;gBACH,SAAS,GAAG,eAAe,CAAC;gBAC5B,MAAM,eAAe,CAAC;YACxB,CAAC;YAED,MAAM,cAAc,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,gBAAgB,CAAC;YACrD,IAAI,CAAC,YAAY,EAAE,CAAC;YAEpB,IAAI,SAAS,IAAI,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;gBACtD,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACjE,MAAM,OAAO,GAAG,6BAA6B,cAAc,wBAAwB,CAAC;gBACpF,MAAM,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;gBACtC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;gBACrB,OAAO;YACT,CAAC;YAED,MAAM,UAAU,EAAE,UAAU,CAAC,iCAAiC,CAAC,CAAC;YAEhE,MAAM,kBAAkB,GAAG,cAAc;gBACvC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,cAAc,CAAC,EAAE,SAAS,IAAI,IAAI,CAAC,gBAAgB,CAAC;gBAC9E,CAAC,CAAC,IAAI,CAAC,gBAAgB,CAAC;YAE1B,IAAI,gBAAqB,CAAC;YAC1B,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;gBAC1B,IAAI,CAAC;oBACH,gBAAgB,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;oBACvF,gBAAgB,CAAC,MAAM,GAAG,gBAAgB,CAAC,UAAU,IAAI,kBAAkB,CAAC;oBAC5E,MAAM,UAAU,EAAE,UAAU,CAAC,kBAAkB,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,gBAAgB,kBAAkB,KAAK,CAAC,CAAC;gBAChI,CAAC;gBAAC,OAAO,CAAC,EAAE,CAAC;oBACX,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;oBAC/D,gBAAgB,CAAC,MAAM,GAAG,gBAAgB,CAAC,UAAU,IAAI,kBAAkB,CAAC;gBAC9E,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,gBAAgB,GAAG,IAAI,CAAC,kBAAkB,CAAC,kBAAkB,CAAC,CAAC;gBAC/D,gBAAgB,CAAC,MAAM,GAAG,gBAAgB,CAAC,UAAU,IAAI,kBAAkB,CAAC;YAC9E,CAAC;YAED,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;gBAC5B,MAAM,UAAU,EAAE,UAAU,CAAC,8CAA8C,SAAS,cAAc,CAAC,CAAC;gBACpG,OAAO,CAAC,GAAG,CAAC,gBAAgB,SAAS,cAAc,cAAc,KAAK,CAAC,CAAC;gBACxE,OAAO;YACT,CAAC;YAED,MAAM,UAAU,EAAE,UAAU,CAAC,0DAA0D,CAAC,CAAC;YACzF,OAAO,CAAC,GAAG,CAAC,qDAAqD,gBAAgB,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC;YAEpI,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACpD,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,aAAa,CAAC,CAAC;YAEtD,MAAM,UAAU,EAAE,UAAU,CAAC,uCAAuC,YAAY,OAAO,CAAC,CAAC;YAEzF,MAAM,iBAAiB,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YACrC,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAErE,IAAI,CAAC,aAAa,EAAE,CAAC;YAErB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;gBACzC,MAAM,IAAI,6BAAmB,CAAC;oBAC5B,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE;oBAC9B,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC;YACL,CAAC;YAED,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,iBAAiB,CAAC;YACvD,MAAM,UAAU,EAAE,UAAU,CAAC,oCAAoC,eAAe,OAAO,CAAC,CAAC;YACzF,OAAO,CAAC,GAAG,CAAC,mCAAmC,eAAe,KAAK,CAAC,CAAC;QAEvE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,QAAQ,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACxE,MAAM,UAAU,EAAE,UAAU,CAAC,iDAAiD,QAAQ,IAAI,CAAC,CAAC;YAC5F,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;YAEnE,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YACpD,MAAM,cAAc,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAErE,IAAI,CAAC,aAAa,EAAE,CAAC;YAErB,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;gBACzC,MAAM,IAAI,6BAAmB,CAAC;oBAC5B,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,EAAE;oBAC9B,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAED,gFAAgF;AAChF,mDAAmD;AACnD,gFAAgF;AAChF,SAAS,oBAAoB,CAAC,cAA4B;IACxD,MAAM,UAAU,GAAG;QACjB;YACE,WAAW,EAAE,UAAU;YACvB,IAAI,EAAE,kBAAyB;YAC/B,cAAc,EAAE,CAAC;YACjB,QAAQ,EAAE,IAAI;SACf;QACD;YACE,WAAW,EAAE,SAAS;YACtB,IAAI,EAAE,kBAAyB;YAC/B,cAAc,EAAE,CAAC;YACjB,QAAQ,EAAE,IAAI;SACf;KACF,CAAC;IAEF,2DAA2D;IAC3D,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;QACpC,UAAU,CAAC,IAAI,CAAC;YACd,WAAW,EAAE,GAAG,oBAAoB,CAAC,MAAM,CAAC,QAAQ;YACpD,IAAI,EAAE,kBAAyB;YAC/B,cAAc,EAAE,CAAC;YACjB,QAAQ,EAAE,KAAK;SAChB,CAAC,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,gFAAgF;AAChF,+CAA+C;AAC/C,gFAAgF;AAChF,SAAS,wBAAwB;IAC/B,MAAM,aAAa,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;QACnE,IAAI,EAAE,oBAAoB,CAAC,KAAK,CAAC;QACjC,KAAK,EAAE,KAAK;QACZ,WAAW,EAAE,mBAAmB,CAAC,KAAK,CAAC;KACxC,CAAC,CAAC,CAAC;IAEJ,OAAO;QACL;YACE,WAAW,EAAE,uBAAuB;YACpC,IAAI,EAAE,qBAAqB;YAC3B,IAAI,EAAE,SAAS;YACf,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,gGAAgG;SAC9G;QACD;YACE,WAAW,EAAE,iBAAiB;YAC9B,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,cAAc;YACpB,OAAO,EAAE,aAAa;YACtB,OAAO,EAAE,EAAE;YACX,cAAc,EAAE;gBACd,IAAI,EAAE;oBACJ,mBAAmB,EAAE,CAAC,IAAI,CAAC;iBAC5B;aACF;YACD,WAAW,EAAE,kGAAkG;SAChH;QACD;YACE,WAAW,EAAE,0BAA0B;YACvC,IAAI,EAAE,gBAAgB;YACtB,IAAI,EAAE,iBAAiB;YACvB,WAAW,EAAE;gBACX,cAAc,EAAE,IAAI;aACrB;YACD,cAAc,EAAE;gBACd,IAAI,EAAE;oBACJ,mBAAmB,EAAE,CAAC,IAAI,CAAC;iBAC5B;aACF;YACD,OAAO,EAAE,EAAE;YACX,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,cAAc;oBACpB,WAAW,EAAE,sBAAsB;oBACnC,MAAM,EAAE;wBACN;4BACE,WAAW,EAAE,QAAQ;4BACrB,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,aAAa;4BACtB,OAAO,EAAE,SAAS;4BAClB,WAAW,EAAE,gCAAgC;yBAC9C;wBACD;4BACE,WAAW,EAAE,mBAAmB;4BAChC,IAAI,EAAE,WAAW;4BACjB,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,IAAI;4BACb,WAAW,EAAE;gCACX,QAAQ,EAAE,CAAC;gCACX,QAAQ,EAAE,CAAC;gCACX,eAAe,EAAE,CAAC;6BACnB;4BACD,WAAW,EAAE,gEAAgE;yBAC9E;wBACD;4BACE,WAAW,EAAE,aAAa;4BAC1B,IAAI,EAAE,aAAa;4BACnB,IAAI,EAAE,QAAQ;4BACd,OAAO,EAAE,GAAG;4BACZ,WAAW,EAAE;gCACX,QAAQ,EAAE,CAAC;gCACX,QAAQ,EAAE,CAAC;gCACX,eAAe,EAAE,CAAC;6BACnB;4BACD,WAAW,EAAE,qCAAqC;yBACnD;qBACF;iBACF;aACF;YACD,WAAW,EAAE,0DAA0D;SACxE;KACF,CAAC;AACJ,CAAC;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,4GAA4G;YACzH,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,2FAA2F;YAC3F,MAAM,EAAE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;sBA4CU;YAClB,+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;gBACD;oBACE,WAAW,EAAE,4BAA4B;oBACzC,IAAI,EAAE,uBAAuB;oBAC7B,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,IAAI;oBACb,WAAW,EAAE,qFAAqF;iBACnG;gBACD;oBACE,WAAW,EAAE,0BAA0B;oBACvC,IAAI,EAAE,qBAAqB;oBAC3B,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,IAAI;oBACb,WAAW,EAAE,4EAA4E;iBAC1F;gBACD;oBACE,WAAW,EAAE,2BAA2B;oBACxC,IAAI,EAAE,sBAAsB;oBAC5B,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,IAAI;oBACb,WAAW,EAAE,gFAAgF;iBAC9F;gBACD;oBACE,WAAW,EAAE,wBAAwB;oBACrC,IAAI,EAAE,mBAAmB;oBACzB,IAAI,EAAE,SAAS;oBACf,OAAO,EAAE,IAAI;oBACb,WAAW,EAAE,yFAAyF;iBACvG;gBACD,0BAA0B;gBAC1B,GAAG,wBAAwB,EAAE;aAC9B;SACF,CAAC;IAoJJ,CAAC;IAlJC,KAAK,CAAC,UAAU;QACd,sBAAsB;QACtB,MAAM,gBAAgB,GAAG,IAAI,CAAC,gBAAgB,CAAC,kBAAkB,EAAE,CAAC,EAAE,IAAI,CAAW,CAAC;QACtF,MAAM,qBAAqB,GAAG,IAAI,CAAC,gBAAgB,CAAC,uBAAuB,EAAE,CAAC,EAAE,IAAI,CAAY,CAAC;QACjG,MAAM,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,CAAC,EAAE,IAAI,CAAY,CAAC;QAC7F,MAAM,oBAAoB,GAAG,IAAI,CAAC,gBAAgB,CAAC,sBAAsB,EAAE,CAAC,EAAE,IAAI,CAAY,CAAC;QAC/F,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,mBAAmB,EAAE,CAAC,EAAE,IAAI,CAAY,CAAC;QAEzF,gCAAgC;QAChC,MAAM,mBAAmB,GAAG,IAAI,CAAC,gBAAgB,CAAC,qBAAqB,EAAE,CAAC,EAAE,KAAK,CAAY,CAAC;QAC9F,MAAM,cAAc,GAAG,mBAAmB;YACxC,CAAC,CAAE,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,EAAE,EAAE,CAAkB;YAClE,CAAC,CAAC,EAAE,CAAC;QAEP,+BAA+B;QAC/B,MAAM,iBAAiB,GAAG,IAAI,CAAC,gBAAgB,CAAC,gBAAgB,EAAE,CAAC,EAAE,EAAE,YAAY,EAAE,EAAE,EAAE,CAAQ,CAAC;QAClG,MAAM,aAAa,GAAG,IAAI,GAAG,EAA4B,CAAC;QAE1D,IAAI,iBAAiB,EAAE,YAAY,EAAE,CAAC;YACpC,KAAK,MAAM,MAAM,IAAI,iBAAiB,CAAC,YAAY,EAAE,CAAC;gBACpD,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE;oBAC/B,OAAO,EAAE,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC;oBAC/C,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,gBAAgB;oBAC/C,WAAW,EAAE,MAAM,CAAC,WAAW,IAAI,GAAG;iBACvC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,mEAAmE;QACnE,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,2EAA2E;QAC3E,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,uDAAuD;QACvD,4DAA4D;QAC5D,MAAM,gBAAgB,GAAiB;YACrC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,SAAS;SAC/E,CAAC;QAEF,0EAA0E;QAC1E,+DAA+D;QAC/D,MAAM,cAAc,GAAG,IAAI,GAAG,EAAsB,CAAC;QACrD,IAAI,UAAU,GAAG,CAAC,CAAC,CAAC,2CAA2C;QAE/D,KAAK,MAAM,MAAM,IAAI,gBAAgB,EAAE,CAAC;YACtC,IAAI,cAAc,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;gBACpC,cAAc,CAAC,GAAG,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;gBACvC,UAAU,EAAE,CAAC;YACf,CAAC;QACH,CAAC;QAED,kDAAkD;QAClD,MAAM,kBAAkB,GAAG,IAAI,GAAG,EAAwD,CAAC;QAE3F,KAAK,MAAM,MAAM,IAAI,cAAc,EAAE,CAAC;YACpC,MAAM,WAAW,GAAG,cAAc,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/C,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC9B,kBAAkB,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,IAAI,EAAE;oBACxC,IAAI,CAAC;wBACH,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,sBAAsB,CAAC,kBAAyB,EAAE,WAAW,CAAC,CAAC;wBAC7F,MAAM,WAAW,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,UAAU,CAAkB,CAAC;wBAC9F,IAAI,WAAW,EAAE,CAAC;4BAChB,yBAAyB;4BACzB,MAAM,MAAM,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI;gCAC1C,OAAO,EAAE,IAAI;gCACb,SAAS,EAAE,gBAAgB;gCAC3B,WAAW,EAAE,GAAG;6BACjB,CAAC;4BACF,MAAM,CAAC,KAAK,GAAG,WAAW,CAAC;4BAC3B,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;4BAClC,OAAO,WAAW,CAAC;wBACrB,CAAC;oBACH,CAAC;oBAAC,OAAO,CAAC,EAAE,CAAC;wBACX,OAAO,CAAC,GAAG,CAAC,MAAM,MAAM,6CAA6C,CAAC,CAAC;oBACzE,CAAC;oBACD,OAAO,SAAS,CAAC;gBACnB,CAAC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,6BAA6B;QAC7B,KAAK,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,IAAI,kBAAkB,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5D,MAAM,MAAM,EAAE,CAAC;QACjB,CAAC;QAED,aAAa;QACb,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,+BAA+B,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;QAChC,OAAO,CAAC,GAAG,CAAC,mEAAmE,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,0DAA0D,cAAc,EAAE,EAAE,CAAC,CAAC;QAC1F,OAAO,CAAC,GAAG,CAAC,yBAAyB,gBAAgB,EAAE,CAAC,CAAC;QACzD,OAAO,CAAC,GAAG,CAAC,2BAA2B,qBAAqB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QACzF,OAAO,CAAC,GAAG,CAAC,yBAAyB,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QACrF,OAAO,CAAC,GAAG,CAAC,0BAA0B,oBAAoB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QACvF,OAAO,CAAC,GAAG,CAAC,uBAAuB,iBAAiB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QACjF,OAAO,CAAC,GAAG,CAAC,sBAAsB,mBAAmB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC;QAClF,IAAI,cAAc,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9B,OAAO,CAAC,GAAG,CAAC,uBAAuB,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClE,CAAC;QAED,sCAAsC;QACtC,MAAM,YAAY,GAAG,IAAI,gBAAgB,CACvC,YAAY,EACZ,mBAAmB,EACnB,gBAAgB,EAChB,qBAAqB,EACrB,mBAAmB,EACnB,oBAAoB,EACpB,mBAAmB,EACnB,cAAc,EACd,kBAAkB,EAClB,aAAa,EACb,iBAAiB,CAClB,CAAC;QAEF,OAAO;YACL,QAAQ,EAAE,YAAY;SACvB,CAAC;IACJ,CAAC;CACF;AAzQD,8CAyQC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@cascadeflow/n8n-nodes-cascadeflow",
3
- "version": "0.6.0",
3
+ "version": "0.6.2",
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",