exai 1.6.2 → 1.7.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -7,18 +7,19 @@
7
7
  import { getCachedResponse, cacheResponse } from './query-cache.js';
8
8
  import { OPENROUTER_API_URL, DEFAULT_MODEL, DEFAULT_TEMPERATURE } from "./contants.js";
9
9
  // ── System Prompts ──────────────────────────────────────────────────────────
10
- const DSL_PLAN_SYSTEM_PROMPT = `You are an expert software architecture diagram planner for Excalidraw.
10
+ const DSL_PLAN_SYSTEM_PROMPT = `You are an expert diagram planner for Excalidraw.
11
11
 
12
12
  Convert the user's request into a STRICT JSON graph plan. Do NOT output DSL directly.
13
+ You handle ANY kind of diagram: software architecture, folder structures, process flows, org charts, data pipelines, workflows, etc.
13
14
 
14
15
  IMPORTANT CONTEXT RULE:
15
- - If codebase context is provided, analyze ONLY that codebase.
16
+ - If codebase/folder context is provided, analyze ONLY that content.
16
17
  - Do NOT use outside assumptions or hallucinated components.
17
18
 
18
19
  Return ONLY valid JSON with this exact schema:
19
20
  {
20
21
  "nodes": [
21
- { "id": "string", "type": "rectangle|diamond|ellipse|database", "label": "string" }
22
+ { "id": "string", "type": "string", "label": "string", "color": "optional hex" }
22
23
  ],
23
24
  "edges": [
24
25
  { "from": "node_id", "to": "node_id", "label": "optional", "dashed": false }
@@ -29,47 +30,70 @@ Return ONLY valid JSON with this exact schema:
29
30
  }
30
31
  }
31
32
 
32
- ARCHITECTURE MODELING RULES:
33
- - Identify key components and flows:
34
- - entry points/users/clients
35
- - gateways/frontends
36
- - services/workers
37
- - databases/stores
38
- - external systems/APIs
39
- - Use edge labels for meaningful interactions (e.g. "calls", "reads", "writes", "publishes", "consumes").
40
- - Prefer layered architecture layout (usually TB) unless user requests another direction.
41
- - Keep labels concise and concrete (recommended <= 60 chars).
42
- - Avoid decorative nodes.
43
- - Prefer rectangle/ellipse/database for architecture diagrams.
44
- - Use diamond ONLY when explicit decision logic is central to the requested flow.
33
+ NODE TYPES — choose the best shape for each node:
34
+ - "rectangle" — default box, general purpose
35
+ - "ellipse" — actors, start/end points, users, external entities
36
+ - "diamond" — decisions, conditionals, branch points
37
+ - "database" — data stores, databases, storage, files
38
+ - Semantic aliases (auto-colored): "user", "frontend", "api", "service", "worker",
39
+ "queue", "cache", "db", "storage", "external", "orchestrator"
40
+ Use these when the diagram is software/infrastructure they get automatic colors.
41
+
42
+ COLOR RULES you decide the color based on the diagram's nature:
43
+ - Group nodes of the same role/tier with the same color.
44
+ - Use a small palette: 2-4 colors max per diagram.
45
+ - Lighter background + darker stroke of the same hue looks best.
46
+ - For "color" field use hex like "#a5d8ff" (background). The stroke is auto-derived darker.
47
+ - Omit "color" for nodes that should stay default (white/no fill).
48
+ - COLOR BY ROLE — pick a consistent scheme:
49
+ * Entry/actor nodes (users, clients, browsers) → light blue e.g. "#e7f5ff"
50
+ * Processing nodes (services, handlers, routes) → light purple e.g. "#f3f0ff"
51
+ * Data nodes (databases, files, storage) → light green e.g. "#d3f9d8"
52
+ * Async/queue nodes (queues, events, jobs) → light yellow e.g. "#fff9db"
53
+ * External/boundary nodes → light red/pink e.g. "#ffe3e3"
54
+ * Decision nodes → light orange e.g. "#fff4e6"
55
+ * For folder/file structures: group by folder depth or file type
56
+ * For process flows: group by phase (input/process/output → 3 colors)
57
+ * For org charts: group by team or hierarchy level
58
+
59
+ DIAGRAM MODELING RULES:
60
+ - Use edge labels for meaningful relationships: "calls", "reads", "writes", "contains", "depends on", "triggers", "returns", "inherits".
61
+ - Choose direction: TB (top-down flows), LR (pipelines, sequences), BT/RL rarely.
62
+ - Keep labels concise (≤ 40 chars).
63
+ - Avoid decorative or redundant nodes.
45
64
 
46
65
  GRAPH QUALITY RULES:
47
66
  - Output JSON object only (no markdown, no explanation).
48
- - Node IDs must be unique and stable-looking (e.g. "api-gateway", "user-service", "orders-db").
67
+ - Node IDs must be unique and slug-like (e.g. "auth-service", "users-db", "src-folder").
49
68
  - Every edge must reference valid node IDs.
50
69
  - Avoid duplicate edges with same from/to/label.
51
70
  - Prefer connected graphs; avoid isolated nodes unless explicitly requested.
52
- - Prefer 6-25 nodes unless user requests high detail or the system is tiny.`;
71
+ - Prefer 6-20 nodes unless the subject is tiny or the user requests high detail.
72
+
73
+ ANTI-CLUTTER RULES:
74
+ - NEVER connect more than 4-5 edges to a single node. Add an intermediate grouping node if needed.
75
+ - Merge parallel edges between the same two nodes into one edge with a combined label.
76
+ - For things with many sub-items (e.g. API with many routes, folder with many files): represent as ONE parent node, not individual nodes for each item.`;
53
77
  const JSON_SYSTEM_PROMPT = `You are an expert at creating architecture/flowchart diagrams using exai JSON format.
54
-
55
- Convert the user's natural language description into valid JSON format.
56
-
57
- IMPORTANT: If the user provides codebase context, you MUST analyze ONLY that specific codebase and create a diagram based on what you see in the provided code. Do NOT use your general knowledge about other projects.
58
-
59
- JSON Structure:
60
- {
61
- "nodes": [
62
- { "id": "unique_id", "type": "rectangle|diamond|ellipse|database", "label": "Node Label" }
63
- ],
64
- "edges": [
65
- { "from": "source_id", "to": "target_id", "label": "optional label" }
66
- ],
67
- "options": {
68
- "direction": "TB|BT|LR|RL",
69
- "nodeSpacing": 50
70
- }
71
- }
72
-
78
+
79
+ Convert the user's natural language description into valid JSON format.
80
+
81
+ IMPORTANT: If the user provides codebase context, you MUST analyze ONLY that specific codebase and create a diagram based on what you see in the provided code. Do NOT use your general knowledge about other projects.
82
+
83
+ JSON Structure:
84
+ {
85
+ "nodes": [
86
+ { "id": "unique_id", "type": "rectangle|diamond|ellipse|database", "label": "Node Label" }
87
+ ],
88
+ "edges": [
89
+ { "from": "source_id", "to": "target_id", "label": "optional label" }
90
+ ],
91
+ "options": {
92
+ "direction": "TB|BT|LR|RL",
93
+ "nodeSpacing": 50
94
+ }
95
+ }
96
+
73
97
  Node Types:
74
98
  - rectangle: Process steps, actions
75
99
  - diamond: Decisions, conditionals
@@ -85,9 +109,9 @@ MODELING RULES:
85
109
  CRITICAL RULES:
86
110
  - Output ONLY valid JSON
87
111
  - Do NOT wrap output in markdown code blocks
88
- - Do NOT include backticks or \`\`\`json
89
- - Do NOT add explanations
90
- - Output must be raw JSON that can be parsed directly
112
+ - Do NOT include backticks or \`\`\`json
113
+ - Do NOT add explanations
114
+ - Output must be raw JSON that can be parsed directly
91
115
  - Use unique, descriptive IDs for nodes`;
92
116
  // ── callLLM (base) ─────────────────────────────────────────────────────────
93
117
  /**
@@ -110,37 +134,59 @@ export async function callLLM(userPrompt, systemPrompt, options = {}) {
110
134
  const system = systemPrompt || 'You are a helpful assistant.';
111
135
  const useCache = options.useCache !== false;
112
136
  const cacheFormat = options.cacheFormat || 'text';
137
+ const cacheOnly = options.cacheOnly === true;
113
138
  // Check cache
114
- if (useCache) {
115
- const cached = getCachedResponse(userPrompt, model, temperature, cacheFormat, options.cacheContext, { ...options.cacheOptions, verbose: options.verbose });
139
+ if (useCache || cacheOnly) {
140
+ const cached = getCachedResponse(userPrompt, model, temperature, cacheFormat, options.cacheContext);
116
141
  if (cached) {
117
142
  if (options.verbose)
118
143
  console.log(` Cache hit (${cacheFormat})`);
119
144
  return cached;
120
145
  }
121
146
  }
147
+ // cacheOnly: do not call API, signal miss to caller
148
+ if (cacheOnly) {
149
+ throw new Error(`CACHE_MISS:${cacheFormat}`);
150
+ }
151
+ const timeoutMs = options.timeoutMs ?? 120_000;
122
152
  if (options.verbose) {
123
153
  console.log(` Calling ${model}...`);
124
154
  console.log(` Temperature: ${temperature}`);
125
155
  console.log(` Prompt size: ${(userPrompt.length / 1024).toFixed(1)}KB`);
156
+ console.log(` Timeout: ${timeoutMs / 1000}s`);
157
+ }
158
+ const controller = new AbortController();
159
+ const timer = setTimeout(() => controller.abort(), timeoutMs);
160
+ let response;
161
+ try {
162
+ response = await fetch(OPENROUTER_API_URL, {
163
+ method: 'POST',
164
+ headers: {
165
+ 'Content-Type': 'application/json',
166
+ Authorization: `Bearer ${apiKey}`,
167
+ 'HTTP-Referer': 'https://github.com/KailasMahavarkar/exai',
168
+ 'X-Title': 'exai',
169
+ },
170
+ body: JSON.stringify({
171
+ model,
172
+ temperature,
173
+ messages: [
174
+ { role: 'system', content: system },
175
+ { role: 'user', content: userPrompt },
176
+ ],
177
+ }),
178
+ signal: controller.signal,
179
+ });
180
+ }
181
+ catch (err) {
182
+ if (err.name === 'AbortError') {
183
+ throw new Error(`LLM request timed out after ${timeoutMs / 1000}s (model: ${model}). Try a faster model or increase the timeout.`);
184
+ }
185
+ throw err;
186
+ }
187
+ finally {
188
+ clearTimeout(timer);
126
189
  }
127
- const response = await fetch(OPENROUTER_API_URL, {
128
- method: 'POST',
129
- headers: {
130
- 'Content-Type': 'application/json',
131
- Authorization: `Bearer ${apiKey}`,
132
- 'HTTP-Referer': 'https://github.com/KailasMahavarkar/exai',
133
- 'X-Title': 'exai',
134
- },
135
- body: JSON.stringify({
136
- model,
137
- temperature,
138
- messages: [
139
- { role: 'system', content: system },
140
- { role: 'user', content: userPrompt },
141
- ],
142
- }),
143
- });
144
190
  if (!response.ok) {
145
191
  const error = await response.text();
146
192
  throw new Error(`OpenRouter API error (${response.status}): ${error}`);
@@ -154,7 +200,7 @@ export async function callLLM(userPrompt, systemPrompt, options = {}) {
154
200
  }
155
201
  // Cache response
156
202
  if (useCache) {
157
- cacheResponse(userPrompt, model, temperature, cacheFormat, output, options.cacheContext, { ...options.cacheOptions, verbose: options.verbose });
203
+ cacheResponse(userPrompt, model, temperature, cacheFormat, output, options.cacheContext);
158
204
  }
159
205
  return output;
160
206
  }
@@ -170,22 +216,22 @@ export async function generateFlowchartInput(prompt, format, options = {}) {
170
216
  if (options.verbose) {
171
217
  console.log(` Adding context (${(options.context.length / 1024).toFixed(1)}KB)`);
172
218
  }
173
- userMessage = `YOUR TASK: ${prompt}
174
-
175
- CRITICAL INSTRUCTIONS:
176
- 1. Below is the COMPLETE codebase you need to analyze
177
- 2. Read through ALL the code files carefully
178
- 3. Create a diagram based ONLY on what you see in THIS codebase
179
- 4. DO NOT use your general knowledge about any other projects
180
- 5. DO NOT make assumptions - only use information from the code below
181
-
182
- ====== BEGIN CODEBASE ======
183
-
184
- ${options.context}
185
-
186
- ====== END CODEBASE ======
187
-
188
- Now, analyze the codebase above and ${prompt}
219
+ userMessage = `YOUR TASK: ${prompt}
220
+
221
+ CRITICAL INSTRUCTIONS:
222
+ 1. Below is the COMPLETE codebase you need to analyze
223
+ 2. Read through ALL the code files carefully
224
+ 3. Create a diagram based ONLY on what you see in THIS codebase
225
+ 4. DO NOT use your general knowledge about any other projects
226
+ 5. DO NOT make assumptions - only use information from the code below
227
+
228
+ ====== BEGIN CODEBASE ======
229
+
230
+ ${options.context}
231
+
232
+ ====== END CODEBASE ======
233
+
234
+ Now, analyze the codebase above and ${prompt}
189
235
 
190
236
  Remember: Base your diagram ONLY on the code provided between the BEGIN/END markers above.`;
191
237
  }
@@ -196,9 +242,10 @@ Remember: Base your diagram ONLY on the code provided between the BEGIN/END mark
196
242
  temperature: options.temperature,
197
243
  verbose: options.verbose,
198
244
  useCache: options.useCache,
199
- cacheOptions: options.cacheOptions,
200
245
  cacheFormat: 'dsl-plan',
201
246
  cacheContext: options.context,
247
+ timeoutMs: options.timeoutMs,
248
+ cacheOnly: options.cacheOnly,
202
249
  });
203
250
  if (options.verbose)
204
251
  console.log(` Rebuilding DSL from normalized plan...`);
@@ -218,9 +265,10 @@ Remember: Base your diagram ONLY on the code provided between the BEGIN/END mark
218
265
  temperature: options.temperature,
219
266
  verbose: options.verbose,
220
267
  useCache: options.useCache,
221
- cacheOptions: options.cacheOptions,
222
268
  cacheFormat: format,
223
269
  cacheContext: options.context,
270
+ timeoutMs: options.timeoutMs,
271
+ cacheOnly: options.cacheOnly,
224
272
  });
225
273
  if (options.verbose)
226
274
  console.log(` Cleaning and validating output...`);
@@ -247,17 +295,21 @@ function normalizeDirection(value) {
247
295
  const dir = value.toUpperCase();
248
296
  return dir === 'TB' || dir === 'BT' || dir === 'LR' || dir === 'RL' ? dir : undefined;
249
297
  }
298
+ // Semantic kinds the DSL parser understands — pass them through as-is for automatic color styling.
299
+ const SEMANTIC_KINDS = new Set([
300
+ 'frontend', 'backend', 'api', 'service', 'worker',
301
+ 'db', 'database', 'storage', 'queue', 'mq', 'broker', 'cache',
302
+ 'external', 'user', 'orchestrator', 'hub', 'router',
303
+ 'diamond', 'decision', 'condition',
304
+ 'ellipse', 'oval', 'start', 'end',
305
+ 'rectangle', 'process', 'cylinder',
306
+ ]);
250
307
  function normalizeNodeType(value) {
251
308
  if (!value)
252
309
  return 'rectangle';
253
310
  const type = value.toLowerCase();
254
- if (type === 'diamond' || type === 'decision' || type === 'condition')
255
- return 'diamond';
256
- if (type === 'ellipse' || type === 'oval' || type === 'start' || type === 'end')
257
- return 'ellipse';
258
- if (type === 'database' || type === 'db' || type === 'storage' || type === 'cylinder')
259
- return 'database';
260
- return 'rectangle';
311
+ // Pass through any known semantic kind; unknown values fall back to rectangle
312
+ return SEMANTIC_KINDS.has(type) ? type : 'rectangle';
261
313
  }
262
314
  function sanitizeNodeLabel(label, fallback) {
263
315
  const value = (label || '').trim();
@@ -291,6 +343,7 @@ function normalizeDslPlan(plan) {
291
343
  id: nodeId,
292
344
  type: normalizeNodeType(rawNode.type),
293
345
  label: sanitizeNodeLabel(rawNode.label, fallbackLabel),
346
+ color: typeof rawNode.color === 'string' && rawNode.color.startsWith('#') ? rawNode.color : undefined,
294
347
  };
295
348
  nodes.push(node);
296
349
  nodeById.set(node.id, node);
@@ -367,7 +420,8 @@ function buildDslFromPlan(plan) {
367
420
  }
368
421
  usedRefs.add(ref);
369
422
  nodeRefByOriginalId.set(node.id, ref);
370
- lines.push(`@node ${ref} ${node.type} ${quoteDsl(node.label)}`);
423
+ const colorToken = node.color ? ` bg:${node.color}` : '';
424
+ lines.push(`@node ${ref} ${node.type} ${quoteDsl(node.label)}${colorToken}`);
371
425
  }
372
426
  if (plan.nodes.length > 0 && plan.edges.length > 0) {
373
427
  lines.push('');
@@ -1 +1 @@
1
- {"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../../src/ai/openrouter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openrouter.js","sourceRoot":"","sources":["../../src/ai/openrouter.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAA;AAEtF,+EAA+E;AAE/E,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wJAkEyH,CAAC;AAEzJ,MAAM,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wCAsCa,CAAC;AA+EzC,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,OAAO,CACzB,UAAkB,EAClB,YAAqB,EACrB,UAA0B,EAAE;IAE5B,MAAM,MAAM,GACR,OAAO,CAAC,MAAM;QACd,OAAO,CAAC,GAAG,CAAC,sBAAsB;QAClC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IACnC,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CACX,mCAAmC;YACnC,mGAAmG;YACnG,kDAAkD,CACrD,CAAC;IACN,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,IAAI,aAAa,CAAC;IAC7E,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,mBAAmB,CAAC;IAC/D,MAAM,MAAM,GAAG,YAAY,IAAI,8BAA8B,CAAC;IAC9D,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,KAAK,KAAK,CAAC;IAC5C,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,MAAM,CAAC;IAClD,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,KAAK,IAAI,CAAC;IAE7C,cAAc;IACd,IAAI,QAAQ,IAAI,SAAS,EAAE,CAAC;QACxB,MAAM,MAAM,GAAG,iBAAiB,CAAC,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;QACpG,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,OAAO,CAAC,OAAO;gBAAE,OAAO,CAAC,GAAG,CAAC,gBAAgB,WAAW,GAAG,CAAC,CAAC;YACjE,OAAO,MAAM,CAAC;QAClB,CAAC;IACL,CAAC;IAED,oDAAoD;IACpD,IAAI,SAAS,EAAE,CAAC;QACZ,MAAM,IAAI,KAAK,CAAC,cAAc,WAAW,EAAE,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,OAAO,CAAC;IAE/C,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,OAAO,CAAC,GAAG,CAAC,aAAa,KAAK,KAAK,CAAC,CAAC;QACrC,OAAO,CAAC,GAAG,CAAC,kBAAkB,WAAW,EAAE,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzE,OAAO,CAAC,GAAG,CAAC,cAAc,SAAS,GAAG,IAAI,GAAG,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;IACzC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,SAAS,CAAC,CAAC;IAE9D,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACD,QAAQ,GAAG,MAAM,KAAK,CAAC,kBAAkB,EAAE;YACvC,MAAM,EAAE,MAAM;YACd,OAAO,EAAE;gBACL,cAAc,EAAE,kBAAkB;gBAClC,aAAa,EAAE,UAAU,MAAM,EAAE;gBACjC,cAAc,EAAE,0CAA0C;gBAC1D,SAAS,EAAE,MAAM;aACpB;YACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;gBACjB,KAAK;gBACL,WAAW;gBACX,QAAQ,EAAE;oBACN,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,MAAM,EAAE;oBACnC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE;iBACxC;aACJ,CAAC;YACF,MAAM,EAAE,UAAU,CAAC,MAAM;SAC5B,CAAC,CAAC;IACP,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACX,IAAK,GAAa,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;YACvC,MAAM,IAAI,KAAK,CAAC,+BAA+B,SAAS,GAAG,IAAI,aAAa,KAAK,gDAAgD,CAAC,CAAC;QACvI,CAAC;QACD,MAAM,GAAG,CAAC;IACd,CAAC;YAAS,CAAC;QACP,YAAY,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACf,MAAM,KAAK,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACpC,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,CAAC,MAAM,MAAM,KAAK,EAAE,CAAC,CAAC;IAC3E,CAAC;IAED,IAAI,OAAO,CAAC,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IAExD,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAElC,CAAC;IACF,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC;IAEnD,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;IAC9D,CAAC;IAED,iBAAiB;IACjB,IAAI,QAAQ,EAAE,CAAC;QACX,aAAa,CAAC,UAAU,EAAE,KAAK,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7F,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,+EAA+E;AAE/E;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CACxC,MAAc,EACd,MAAoB,EACpB,UAA2B,EAAE;IAE7B,2CAA2C;IAC3C,IAAI,WAAW,GAAG,MAAM,CAAC;IACzB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;QAClB,IAAI,OAAO,CAAC,OAAO,EAAE,CAAC;YAClB,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QACtF,CAAC;QACD,WAAW,GAAG,cAAc,MAAM;;;;;;;;;;;EAWxC,OAAO,CAAC,OAAO;;;;sCAIqB,MAAM;;2FAE+C,CAAC;IACxF,CAAC;IAED,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACnB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,sBAAsB,EAAE;YAC/D,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,WAAW,EAAE,UAAU;YACvB,YAAY,EAAE,OAAO,CAAC,OAAO;YAC7B,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;SAC/B,CAAC,CAAC;QAEH,IAAI,OAAO,CAAC,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;QAC7E,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,YAAY,CAAC,OAAO,CAAC,CAAC;YACnC,MAAM,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC1C,OAAO,gBAAgB,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,MAAM,IAAI,KAAK,CAAC,qCAAqC,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;IACL,CAAC;IAED,MAAM,GAAG,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,kBAAkB,EAAE;QACvD,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,OAAO,EAAE,OAAO,CAAC,OAAO;QACxB,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,WAAW,EAAE,MAAM;QACnB,YAAY,EAAE,OAAO,CAAC,OAAO;QAC7B,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,SAAS,EAAE,OAAO,CAAC,SAAS;KAC/B,CAAC,CAAC;IAEH,IAAI,OAAO,CAAC,OAAO;QAAE,OAAO,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;IAExE,OAAO,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;AACpC,CAAC;AAED,SAAS,YAAY,CAAC,GAAW;IAC7B,IAAI,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACzB,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC;IACnD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IAEhD,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IACzC,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,OAAO,GAAG,QAAQ,EAAE,CAAC;QACxC,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;IACnD,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAY,CAAC;IAE9C,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;IACxD,CAAC;IAED,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAyB;IACjD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,GAAG,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAChC,OAAO,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;AAC1F,CAAC;AAED,mGAAmG;AACnG,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC;IAC3B,UAAU,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,QAAQ;IACjD,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO;IAC7D,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,KAAK,EAAE,QAAQ;IACnD,SAAS,EAAE,UAAU,EAAE,WAAW;IAClC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK;IACjC,WAAW,EAAE,SAAS,EAAE,UAAU;CACrC,CAAC,CAAC;AAEH,SAAS,iBAAiB,CAAC,KAAyB;IAChD,IAAI,CAAC,KAAK;QAAE,OAAO,WAAW,CAAC;IAC/B,MAAM,IAAI,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IACjC,8EAA8E;IAC9E,OAAO,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC;AACzD,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAyB,EAAE,QAAgB;IAClE,MAAM,KAAK,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACnC,MAAM,OAAO,GAAG,KAAK;SAChB,OAAO,CAAC,iBAAiB,EAAE,EAAE,CAAC;SAC9B,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE,CAAC;IACZ,OAAO,OAAO,IAAI,QAAQ,CAAC;AAC/B,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAyB;IAChD,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC;IAClD,OAAO,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAClE,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAa;IACnC,MAAM,KAAK,GAAwB,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,IAAI,GAAG,EAA6B,CAAC;IAEtD,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,SAAS;QAEtD,MAAM,aAAa,GAAG,QAAQ,UAAU,EAAE,CAAC;QAC3C,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,IAAI,UAAU,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QACzD,MAAM,MAAM,GAAG,EAAE,IAAI,IAAI,UAAU,EAAE,CAAC;QACtC,UAAU,EAAE,CAAC;QAEb,IAAI,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,SAAS;QAEnC,MAAM,IAAI,GAAsB;YAC5B,EAAE,EAAE,MAAM;YACV,IAAI,EAAE,iBAAiB,CAAC,OAAO,CAAC,IAAI,CAAC;YACrC,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC;YACtD,KAAK,EAAE,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ,IAAI,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS;SACxG,CAAC;QACF,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjB,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;IAChC,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACrB,KAAK,CAAC,IAAI,CACN,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,EAChD,EAAE,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,EAAE,CAC/C,CAAC;QACF,QAAQ,CAAC,GAAG,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,QAAQ,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAClC,CAAC;IAED,MAAM,KAAK,GAAwB,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7D,KAAK,MAAM,OAAO,IAAI,QAAQ,EAAE,CAAC;QAC7B,IAAI,CAAC,OAAO,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,SAAS;QACtD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC/C,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC3C,IAAI,CAAC,IAAI,IAAI,CAAC,EAAE;YAAE,SAAS;QAC3B,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAAE,SAAS;QAEvD,KAAK,CAAC,IAAI,CAAC;YACP,IAAI;YACJ,EAAE;YACF,KAAK,EAAE,iBAAiB,CAAC,OAAO,CAAC,KAAK,CAAC;YACvC,MAAM,EAAE,OAAO,CAAC,MAAM,KAAK,IAAI;SAClC,CAAC,CAAC;IACP,CAAC;IAED,qFAAqF;IACrF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,KAAK,CAAC,IAAI,CAAC;gBACP,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE;gBACjB,EAAE,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;gBACnB,MAAM,EAAE,KAAK;aAChB,CAAC,CAAC;QACP,CAAC;IACL,CAAC;IAED,MAAM,SAAS,GAAG,kBAAkB,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,IAAI,CAAC,OAAO,EAAE,OAAO,IAAI,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC;IACxE,MAAM,OAAO,GAAG,OAAO,YAAY,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,YAAY,GAAG,CAAC;QACjG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC;QAC1B,CAAC,CAAC,SAAS,CAAC;IAEhB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAChD,CAAC;AAED,SAAS,iBAAiB,CAAC,GAAW,EAAE,aAAqB;IACzD,MAAM,IAAI,GAAG,GAAG;SACX,WAAW,EAAE;SACb,OAAO,CAAC,eAAe,EAAE,GAAG,CAAC;SAC7B,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;SACnB,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;IAC3B,OAAO,IAAI,IAAI,IAAI,aAAa,EAAE,CAAC;AACvC,CAAC;AAED,SAAS,QAAQ,CAAC,KAAa;IAC3B,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC;AACpE,CAAC;AAED,SAAS,gBAAgB,CAAC,IAAuB;IAC7C,MAAM,KAAK,GAAa,EAAE,CAAC;IAE3B,IAAI,IAAI,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;IAC/D,IAAI,IAAI,CAAC,OAAO;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC;IACzD,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;QAAE,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAErC,MAAM,mBAAmB,GAAG,IAAI,GAAG,EAAkB,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAU,CAAC;IAEnC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QAC3B,IAAI,GAAG,GAAG,iBAAiB,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC5C,IAAI,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,IAAI,MAAM,GAAG,CAAC,CAAC;YACf,OAAO,QAAQ,CAAC,GAAG,CAAC,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC;gBAAE,MAAM,EAAE,CAAC;YAClD,GAAG,GAAG,GAAG,GAAG,IAAI,MAAM,EAAE,CAAC;QAC7B,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,CAAC,CAAC;QAEtC,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzD,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,IAAI,IAAI,CAAC,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,UAAU,EAAE,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACjD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;IAED,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QAC5B,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnD,MAAM,KAAK,GAAG,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC/C,IAAI,CAAC,OAAO,IAAI,CAAC,KAAK;YAAE,SAAS;QAEjC,IAAI,QAAQ,GAAG,SAAS,OAAO,IAAI,KAAK,EAAE,CAAC;QAC3C,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACb,QAAQ,IAAI,IAAI,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3C,CAAC;QACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YACd,QAAQ,IAAI,SAAS,CAAC;QAC1B,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACzB,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IACvC,IAAI,CAAC,MAAM,EAAE,CAAC;QACV,OAAO;;;gBAGC,CAAC;IACb,CAAC;IACD,OAAO,MAAM,CAAC;AAClB,CAAC;AAED,+EAA+E;AAE/E;;GAEG;AACH,SAAS,WAAW,CAAC,MAAc,EAAE,MAAoB;IACrD,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;IAE5B,8BAA8B;IAC9B,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,sBAAsB,EAAE,EAAE,CAAC,CAAC;IACtD,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IAEzC,qCAAqC;IACrC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,UAAU,GAAG,CAAC,CAAC;IAEnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7B,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;YAAE,SAAS;QAEhC,IAAI,iEAAiE,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/E,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,SAAS;QACb,CAAC;QACD,MAAM;IACV,CAAC;IAED,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC;IAEpD,6BAA6B;IAC7B,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACpB,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACvD,MAAM,IAAI,KAAK,CACX,uFAAuF;gBACvF,kFAAkF,CACrF,CAAC;QACN,CAAC;IACL,CAAC;SAAM,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QAC1B,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAC3D,MAAM,IAAI,KAAK,CACX,gFAAgF;gBAChF,kFAAkF,CACrF,CAAC;QACN,CAAC;IACL,CAAC;IAED,OAAO,OAAO,CAAC;AACnB,CAAC"}
@@ -1,13 +1,10 @@
1
1
  /**
2
- * Query Cache - Local cache for LLM query results
2
+ * Query Cache - compatibility wrapper around the unified ExaiCache.
3
3
  *
4
- * Prevents duplicate API calls by caching responses locally based on:
5
- * - Prompt content
6
- * - Context content
7
- * - Model used
8
- * - Temperature setting
9
- *
10
- * Cache entries expire after 7 days by default.
4
+ * Public API is unchanged so existing call-sites continue to compile.
5
+ * Configuration (TTL, maxEntries, verbose) is now managed on the shared
6
+ * `cache` singleton in cache.ts — the options parameters below are accepted
7
+ * for backward compatibility but are no longer used.
11
8
  */
12
9
  export interface CacheEntry {
13
10
  key: string;
@@ -25,22 +22,10 @@ export interface CacheOptions {
25
22
  maxEntries?: number;
26
23
  verbose?: boolean;
27
24
  }
28
- /**
29
- * Get cached response if it exists and is not expired
30
- */
31
- export declare function getCachedResponse(prompt: string, model: string, temperature: number, format: string, context?: string, options?: CacheOptions): string | null;
32
- /**
33
- * Cache a response
34
- */
35
- export declare function cacheResponse(prompt: string, model: string, temperature: number, format: string, response: string, context?: string, options?: CacheOptions): void;
36
- /**
37
- * Clear all cache entries
38
- */
39
- export declare function clearCache(options?: CacheOptions): number;
40
- /**
41
- * Get cache statistics
42
- */
43
- export declare function getCacheStats(options?: CacheOptions): {
25
+ export declare function getCachedResponse(prompt: string, model: string, temperature: number, format: string, context?: string, _options?: CacheOptions): string | null;
26
+ export declare function cacheResponse(prompt: string, model: string, temperature: number, format: string, response: string, context?: string, _options?: CacheOptions): void;
27
+ export declare function clearCache(_options?: CacheOptions): number;
28
+ export declare function getCacheStats(_options?: CacheOptions): {
44
29
  totalEntries: number;
45
30
  totalSize: number;
46
31
  oldestEntry: number | null;
@@ -1 +1 @@
1
- {"version":3,"file":"query-cache.d.ts","sourceRoot":"","sources":["../../src/ai/query-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAOH,MAAM,WAAW,UAAU;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AA+DD;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,GAAE,YAAiB,GACzB,MAAM,GAAG,IAAI,CAgEf;AAED;;GAEG;AACH,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,EAChB,OAAO,GAAE,YAAiB,GACzB,IAAI,CAmCN;AAsCD;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,GAAE,YAAiB,GAAG,MAAM,CA2B7D;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,GAAE,YAAiB,GAAG;IACzD,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAoDA"}
1
+ {"version":3,"file":"query-cache.d.ts","sourceRoot":"","sources":["../../src/ai/query-cache.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAMH,MAAM,WAAW,UAAU;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACrB;AAID,wBAAgB,iBAAiB,CAC7B,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,GAAE,YAAiB,GAC5B,MAAM,GAAG,IAAI,CAGf;AAED,wBAAgB,aAAa,CACzB,MAAM,EAAE,MAAM,EACd,KAAK,EAAE,MAAM,EACb,WAAW,EAAE,MAAM,EACnB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,MAAM,EAChB,QAAQ,GAAE,YAAiB,GAC5B,IAAI,CAGN;AAED,wBAAgB,UAAU,CAAC,QAAQ,GAAE,YAAiB,GAAG,MAAM,CAE9D;AAED,wBAAgB,aAAa,CAAC,QAAQ,GAAE,YAAiB,GAAG;IACxD,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,CAEA"}