@thelapyae/geniclaw 1.1.11 → 1.2.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.
@@ -11,11 +11,14 @@ Object.defineProperty(exports, "__esModule", { value: true });
11
11
  const fs_1 = __importDefault(require("fs"));
12
12
  const path_1 = __importDefault(require("path"));
13
13
  const os_1 = __importDefault(require("os"));
14
- const generative_ai_1 = require("@google/generative-ai");
15
14
  const dotenv_1 = __importDefault(require("dotenv"));
16
15
  const config_manager_1 = require("./config-manager");
17
16
  const session_manager_1 = require("./session-manager");
18
17
  const skill_manager_1 = require("./skill-manager");
18
+ const gemini_1 = require("./providers/gemini");
19
+ const openai_1 = require("./providers/openai");
20
+ const anthropic_1 = require("./providers/anthropic");
21
+ const web_search_1 = require("./tools/web-search");
19
22
  // Load environment variables
20
23
  const SCRIPT_DIR = path_1.default.resolve(__dirname, '..');
21
24
  const GENICLAW_WORK_DIR = process.env.GENICLAW_WORK_DIR || path_1.default.join(os_1.default.homedir(), '.geniclaw');
@@ -39,65 +42,34 @@ function log(level, message) {
39
42
  console.log(logMessage.trim());
40
43
  fs_1.default.appendFileSync(LOG_FILE, logMessage);
41
44
  }
42
- // Initialize Gemini
43
- let genAI;
44
- const config = config_manager_1.ConfigManager.load();
45
- const MODEL_NAME = config.geminiModel || process.env.GEMINI_MODEL || 'gemini-2.5-flash';
46
- // Default conservative limit, can be increased based on model
47
- const MAX_HISTORY_TOKENS = 100000;
48
- async function initGemini() {
49
- const config = config_manager_1.ConfigManager.load();
50
- const API_KEY = config.geminiApiKey || process.env.GEMINI_API_KEY;
51
- if (API_KEY) {
52
- log('INFO', 'Using Gemini API Key');
53
- // Custom Fetch implementation to support Reverse Proxy (Custom Base URL)
54
- if (config.geminiApiUrl) {
55
- log('INFO', `🔌 Using Custom API URL: ${config.geminiApiUrl}`);
56
- const customFetch = async (url, init) => {
57
- // Determine the URL string
58
- let urlStr = url.toString();
59
- // Replace the default Google API domain with our custom one
60
- // Default: https://generativelanguage.googleapis.com
61
- if (urlStr.includes('generativelanguage.googleapis.com')) {
62
- urlStr = urlStr.replace('https://generativelanguage.googleapis.com', config.geminiApiUrl);
63
- }
64
- // Handle Headers for Custom Gateway
65
- // The User's Gateway requires 'x-google-api-key' and 'x-api-key'
66
- // The SDK sends 'x-goog-api-key'
67
- let newInit = init || {};
68
- let headers = new Headers(newInit.headers || {});
69
- // 1. Inject Gateway Key if present
70
- if (config.geminiGatewayKey) {
71
- headers.set('x-api-key', config.geminiGatewayKey);
72
- }
73
- // 2. Remap Google Key: x-goog-api-key -> x-google-api-key
74
- // The SDK sets 'x-goog-api-key'. We need to ensure the proxy gets it as 'x-google-api-key'.
75
- const googleKey = headers.get('x-goog-api-key');
76
- if (googleKey) {
77
- headers.set('x-google-api-key', googleKey);
78
- }
79
- else if (config.geminiApiKey) {
80
- // Fallback if SDK put it in query param or we just want to be sure
81
- headers.set('x-google-api-key', config.geminiApiKey);
82
- }
83
- newInit.headers = headers;
84
- return fetch(urlStr, newInit);
85
- };
86
- // @ts-ignore - The SDK allows passing custom fetch in RequestOptions, but globally we try this trick
87
- // Verify if GoogleGenerativeAI constructor supports { fetch: ... }? No.
88
- // But we can pass it to getGenerativeModel? No.
89
- // Wait, we can patch globalThis.fetch if needed, but that's dirty.
90
- // Better approach: We passed `customFetch`? No, the SDK is typed strictly.
91
- // Let's use the RequestOptions in `getGenerativeModel`.
92
- genAI = new generative_ai_1.GoogleGenerativeAI(API_KEY);
45
+ // Provider Factory
46
+ function getProviderForTask(config, channel) {
47
+ // Determine provider type based on routing
48
+ let providerType = config.activeProvider || 'gemini';
49
+ if (config.providerRouting) {
50
+ if (channel === 'heartbeat' && config.providerRouting.heartbeat) {
51
+ providerType = config.providerRouting.heartbeat;
52
+ }
53
+ else if (channel === 'cron' && config.providerRouting.cron) {
54
+ providerType = config.providerRouting.cron;
93
55
  }
94
- else {
95
- genAI = new generative_ai_1.GoogleGenerativeAI(API_KEY);
56
+ else if (channel !== 'heartbeat' && channel !== 'cron' && config.providerRouting.chat) {
57
+ // Default chat routing
58
+ providerType = config.providerRouting.chat;
96
59
  }
97
60
  }
98
- else {
99
- log('INFO', 'GEMINI_API_KEY not found in config or env.');
100
- process.exit(1);
61
+ log('INFO', `Selected Provider: ${providerType} for channel: ${channel}`);
62
+ switch (providerType) {
63
+ case 'openai':
64
+ case 'groq':
65
+ case 'deepseek':
66
+ case 'grok':
67
+ return new openai_1.OpenAIProvider(config, providerType);
68
+ case 'anthropic':
69
+ return new anthropic_1.AnthropicProvider(config);
70
+ case 'gemini':
71
+ default:
72
+ return new gemini_1.GeminiProvider(config);
101
73
  }
102
74
  }
103
75
  class HistoryManager {
@@ -135,33 +107,19 @@ class HistoryManager {
135
107
  }
136
108
  }
137
109
  // Memory Management
138
- async function manageMemory(model, history, newContent) {
110
+ async function manageMemory(provider, history, newContent) {
139
111
  try {
140
- // Construct full history for counting
141
- const fullContent = [
142
- ...history,
143
- { role: 'user', parts: [{ text: newContent }] }
144
- ];
145
- // Format for countTokens
146
- const contents = fullContent.map(item => ({
147
- role: item.role,
148
- parts: item.parts
149
- }));
150
- const { totalTokens } = await model.countTokens({ contents });
151
- log('INFO', `Token usage: ${totalTokens} / ${MAX_HISTORY_TOKENS}`);
152
- if (totalTokens > MAX_HISTORY_TOKENS) {
112
+ const MAX_TOKEN_LIMIT = 120000; // Generic limit
113
+ const totalTokens = await provider.countTokens(newContent, history);
114
+ log('INFO', `Token usage: ${totalTokens} / ${MAX_TOKEN_LIMIT}`);
115
+ if (totalTokens > MAX_TOKEN_LIMIT) {
153
116
  log('WARN', `Context limit exceeded (${totalTokens}). Pruning history...`);
154
- // Sliding Window: Remove oldest messages until we fit.
155
117
  let prunedHistory = [...history];
156
118
  let attempts = 0;
157
119
  while (prunedHistory.length > 0 && attempts < 100) {
158
120
  prunedHistory.shift();
159
- const currentContents = [
160
- ...prunedHistory,
161
- { role: 'user', parts: [{ text: newContent }] }
162
- ].map(item => ({ role: item.role, parts: item.parts }));
163
- const { totalTokens: currentTokens } = await model.countTokens({ contents: currentContents });
164
- if (currentTokens <= MAX_HISTORY_TOKENS) {
121
+ const currentTokens = await provider.countTokens(newContent, prunedHistory);
122
+ if (currentTokens <= MAX_TOKEN_LIMIT) {
165
123
  log('INFO', `Pruned to ${currentTokens} tokens.`);
166
124
  return prunedHistory;
167
125
  }
@@ -173,6 +131,7 @@ async function manageMemory(model, history, newContent) {
173
131
  }
174
132
  catch (e) {
175
133
  log('ERROR', `Token counting failed: ${e.message}`);
134
+ // If counting fails (e.g. OpenAI network error), just return history and hope for best
176
135
  return history;
177
136
  }
178
137
  }
@@ -230,149 +189,48 @@ async function processMessage(messageFile) {
230
189
  systemInstruction += `----------------------------------\n`;
231
190
  log('INFO', `Using Skill: ${activeSkill.name}`);
232
191
  }
233
- // Get Model
234
- if (!genAI)
235
- await initGemini();
236
- // Prepare Model Request Options
237
- const modelParams = {
238
- model: MODEL_NAME,
239
- systemInstruction: systemInstruction ? { role: 'system', parts: [{ text: systemInstruction }] } : undefined,
240
- safetySettings: [
241
- { category: generative_ai_1.HarmCategory.HARM_CATEGORY_HARASSMENT, threshold: generative_ai_1.HarmBlockThreshold.BLOCK_NONE },
242
- { category: generative_ai_1.HarmCategory.HARM_CATEGORY_HATE_SPEECH, threshold: generative_ai_1.HarmBlockThreshold.BLOCK_NONE },
243
- { category: generative_ai_1.HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT, threshold: generative_ai_1.HarmBlockThreshold.BLOCK_NONE },
244
- { category: generative_ai_1.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT, threshold: generative_ai_1.HarmBlockThreshold.BLOCK_NONE },
245
- ]
246
- };
247
- // Inject Custom Fetch if URL is configured
248
- // Note: SDK v0.2.0+ might support requestOptions in getGenerativeModel
249
- // Correct way for latest SDK:
250
- // genAI.getGenerativeModel(params, { baseUrl: ... }) <-- No, not standard.
251
- // We will stick to global fetch patch if necessary, or just rely on standard fetch.
252
- // Actually, let's use the `customFetch` we defined? We can't pass it easily.
253
- // HACK: We will use the `baseUrl` property if it exists on the RequestOptions (undocumented in some versions)
254
- // OR we just assume the user uses a standard proxy.
255
- // LET'S TRY: global fetch patch for this process specific scope.
256
- if (config.geminiApiUrl) {
257
- const originalFetch = global.fetch;
258
- // @ts-ignore
259
- global.fetch = async (url, init) => {
260
- let urlStr = url.toString();
261
- if (urlStr.includes('generativelanguage.googleapis.com')) {
262
- urlStr = urlStr.replace('https://generativelanguage.googleapis.com', config.geminiApiUrl);
263
- }
264
- let newInit = init || {};
265
- let headers;
266
- // Safe Headers Construction
267
- try {
268
- // @ts-ignore
269
- headers = new Headers(newInit.headers || {});
270
- }
271
- catch (e) {
272
- headers = new Map(Object.entries(newInit.headers || {}));
273
- }
274
- // 1. Gateway Key
275
- if (config.geminiGatewayKey) {
276
- if (headers.set)
277
- headers.set('x-api-key', config.geminiGatewayKey);
278
- else
279
- headers['x-api-key'] = config.geminiGatewayKey;
280
- }
281
- // 2. Remap Google Key
282
- // Try to get from headers first (SDK set it)
283
- let googleKey = headers.get ? headers.get('x-goog-api-key') : headers['x-goog-api-key'];
284
- if (googleKey) {
285
- if (headers.set)
286
- headers.set('x-google-api-key', googleKey);
287
- else
288
- headers['x-google-api-key'] = googleKey;
289
- }
290
- else if (config.geminiApiKey) {
291
- // Fallback
292
- if (headers.set)
293
- headers.set('x-google-api-key', config.geminiApiKey);
294
- else
295
- headers['x-google-api-key'] = config.geminiApiKey;
296
- }
297
- newInit.headers = headers;
298
- return originalFetch(urlStr, newInit);
299
- };
192
+ // Get Model/Provider
193
+ const provider = getProviderForTask(config, channel);
194
+ // --- Web Search Integration ---
195
+ const searchTool = new web_search_1.WebSearch(config);
196
+ const lowerMsg = message.toLowerCase();
197
+ let searchContext = "";
198
+ // Explicit search trigger or keyword detection
199
+ if (message.startsWith('/search') || lowerMsg.includes('search for') || lowerMsg.includes('google this')) {
200
+ let query = message.replace('/search', '').trim();
201
+ if (query.length < 3)
202
+ query = message; // if "search for X", just search whole thing or parse better.
203
+ // Simple extraction: remove "search for"
204
+ query = query.replace('search for', '').replace('google this', '').trim();
205
+ log('INFO', `🔍 Performing Web Search for: ${query}`);
206
+ const results = await searchTool.search(query);
207
+ searchContext = `\n\n[Web Search Results]:\n${results}\n\n[Instruction]: Use the above search results to answer the user's question.`;
300
208
  }
301
- const model = genAI.getGenerativeModel(modelParams);
302
- // Load History
209
+ // --- History Management ---
303
210
  let history = HistoryManager.load();
304
- // Check for Stats Command
305
- if (message.trim() === '/stats') {
306
- let sessionName = config.activeSession || 'default';
307
- let tokenCount = 0;
308
- try {
309
- const contents = history.map(item => ({ role: item.role, parts: item.parts }));
310
- const result = await model.countTokens({ contents });
311
- tokenCount = result.totalTokens;
312
- }
313
- catch (e) { }
314
- let skillInfo = activeSkill ? `\nActive Skill: \`${activeSkill.name}\`` : '';
315
- const reply = `📊 **Session Stats**\nSession: \`${sessionName}\`${skillInfo}\nHistory Length: ${history.length} turns\nTokens Used: ~${tokenCount} / ${MAX_HISTORY_TOKENS}`;
316
- const responseData = {
317
- channel,
318
- sender,
319
- message: reply,
320
- originalMessage: message,
321
- timestamp: Date.now(),
322
- messageId,
323
- ...otherFields
324
- };
325
- const responseFile = path_1.default.join(QUEUE_OUTGOING, `${channel}_${messageId}_${Date.now()}.json`);
326
- fs_1.default.writeFileSync(responseFile, JSON.stringify(responseData, null, 2));
327
- fs_1.default.unlinkSync(processingFile);
328
- return;
211
+ // Append Search Context to the LAST message effectively?
212
+ // No, we append it to the system instruction or as a separate context message?
213
+ // Let's append it to System Instruction for this turn.
214
+ if (searchContext) {
215
+ systemInstruction += searchContext;
329
216
  }
330
- // Inject Skill Examples into History (Transient, only for this turn if history is empty?
331
- // Or strictly pre-pend?
332
- // If we inject into history, it becomes part of the conversation.
333
- // Let's prepend them transiently for the chat start if supported,
334
- // OR just rely on System Instruction which is safer for context window management.
335
- // Actually, few-shot examples are best in history.
336
- // But if history is long, they might get pruned or be too far back.
337
- // For simplicity in this iteration, we stick to System Instruction for the persona.
338
- // If skill has specific examples, we could add them if history is empty.
339
- if (history.length === 0 && activeSkill && activeSkill.examples && activeSkill.examples.length > 0) {
340
- for (const example of activeSkill.examples) {
341
- history.push({ role: 'user', parts: [{ text: example.input }] });
342
- history.push({ role: 'model', parts: [{ text: example.output }] });
343
- }
344
- // Note: We don't save this to file, so it's "transient" for the first turn?
345
- // Actually, if we pass it to `startChat`, it initializes the chat with it.
346
- // If we don't save it, next time history is loaded, it's gone.
347
- // That's actually perfect for "System Examples".
348
- // BUT, `history` variable here is what we pass to `startChat`.
349
- // If we assume `startChat` maintains it in memory object, that's fine.
350
- // But we save `history` after generation.
351
- // If we save it, it becomes permanent.
352
- // Let's NOT save examples to persistent history to avoid cluttering or duplicating.
353
- // So we pass a `chatHistory` to startChat but keep `history` (file) separate?
354
- // No, file history is source of truth.
355
- // Let's just USE SYSTEM INSTRUCTION for now.
356
- }
357
- // Memory Management: Prune if necessary
358
- // Note: We pass `history` (from file) to manageMemory.
359
- history = await manageMemory(model, history, message);
360
- // Generate
361
- let responseText;
217
+ // Token Management
218
+ history = await manageMemory(provider, history, message);
219
+ // Generate Content
220
+ log('INFO', 'Generating response...');
221
+ let responseText = "";
362
222
  try {
363
- const chat = model.startChat({ history: history });
364
- const result = await chat.sendMessage(message);
365
- const response = await result.response;
366
- responseText = response.text();
367
- // Save History (append new turn)
368
- history.push({ role: 'user', parts: [{ text: message }] });
369
- history.push({ role: 'model', parts: [{ text: responseText }] });
370
- HistoryManager.save(history);
223
+ responseText = await provider.generateResponse(message, history, systemInstruction);
371
224
  }
372
225
  catch (error) {
373
- log('ERROR', `Gemini error: ${error.message}`);
374
- responseText = `⚠️ **Gemini API Error**\n\n${error.message}\n\nPlease check your API key and selected model.`;
226
+ log('ERROR', `Provider Error: ${error.message}`);
227
+ // Fallback error message (expose details)
228
+ responseText = `⚠️ **LLM Provider Error**\n\n${error.message}\n\nPlease check your API key and configuration.`;
375
229
  }
230
+ // Save History
231
+ history.push({ role: 'user', parts: [{ text: message }] });
232
+ history.push({ role: 'model', parts: [{ text: responseText }] });
233
+ HistoryManager.save(history);
376
234
  // Write Response
377
235
  const responseData = {
378
236
  channel,
@@ -425,13 +283,12 @@ async function processQueue() {
425
283
  }
426
284
  }
427
285
  // Start
428
- initGemini().then(() => {
429
- log('INFO', `Queue processor started with model: ${MODEL_NAME}`);
430
- log('INFO', `Watching: ${QUEUE_INCOMING}`);
431
- const currentSession = config_manager_1.ConfigManager.load().activeSession || 'default';
432
- log('INFO', `Active Session: ${currentSession}`);
433
- setInterval(processQueue, 1000);
434
- });
286
+ // No init needed for Generic providers (they init per request or lazy)
287
+ log('INFO', `Queue processor started.`);
288
+ log('INFO', `Watching: ${QUEUE_INCOMING}`);
289
+ const currentSession = config_manager_1.ConfigManager.load().activeSession || 'default';
290
+ log('INFO', `Active Session: ${currentSession}`);
291
+ setInterval(processQueue, 1000);
435
292
  process.on('SIGINT', () => process.exit(0));
436
293
  process.on('SIGTERM', () => process.exit(0));
437
294
  //# sourceMappingURL=queue-processor.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"queue-processor.js","sourceRoot":"","sources":["../src/queue-processor.ts"],"names":[],"mappings":";;AACA;;;GAGG;;;;;AAEH,4CAAoB;AACpB,gDAAwB;AACxB,4CAAoB;AACpB,yDAA6F;AAE7F,oDAA4B;AAC5B,qDAA4D;AAC5D,uDAAmD;AACnD,mDAAsD;AAEtD,6BAA6B;AAC7B,MAAM,UAAU,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;AACjD,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,cAAI,CAAC,IAAI,CAAC,YAAE,CAAC,OAAO,EAAE,EAAE,WAAW,CAAC,CAAC;AAChG,MAAM,iBAAiB,GAAG,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,cAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,MAAM,CAAC,CAAC;AAChG,gBAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,CAAC;AAE3C,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;AACtE,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;AACtE,MAAM,gBAAgB,GAAG,cAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CAAC;AAC1E,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC;AAChE,MAAM,UAAU,GAAG,cAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,YAAY,CAAC,CAAC;AAE9D,2BAA2B;AAC3B,CAAC,cAAc,EAAE,cAAc,EAAE,gBAAgB,EAAE,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;IACrF,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;QACtB,YAAE,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;AACL,CAAC,CAAC,CAAC;AAEH,SAAS;AACT,SAAS,GAAG,CAAC,KAAa,EAAE,OAAe;IACvC,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;IAC3C,MAAM,UAAU,GAAG,IAAI,SAAS,MAAM,KAAK,KAAK,OAAO,IAAI,CAAC;IAC5D,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC;IAC/B,YAAE,CAAC,cAAc,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;AAC5C,CAAC;AAED,oBAAoB;AACpB,IAAI,KAAyB,CAAC;AAC9B,MAAM,MAAM,GAAG,8BAAa,CAAC,IAAI,EAAE,CAAC;AACpC,MAAM,UAAU,GAAG,MAAM,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,kBAAkB,CAAC;AACxF,8DAA8D;AAC9D,MAAM,kBAAkB,GAAG,MAAM,CAAC;AAElC,KAAK,UAAU,UAAU;IACrB,MAAM,MAAM,GAAG,8BAAa,CAAC,IAAI,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,MAAM,CAAC,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;IAElE,IAAI,OAAO,EAAE,CAAC;QACV,GAAG,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAC;QAEpC,yEAAyE;QACzE,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACtB,GAAG,CAAC,MAAM,EAAE,4BAA4B,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC;YAE/D,MAAM,WAAW,GAAG,KAAK,EAAE,GAAQ,EAAE,IAAU,EAAqB,EAAE;gBAClE,2BAA2B;gBAC3B,IAAI,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAE5B,4DAA4D;gBAC5D,qDAAqD;gBACrD,IAAI,MAAM,CAAC,QAAQ,CAAC,mCAAmC,CAAC,EAAE,CAAC;oBACvD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,2CAA2C,EAAE,MAAM,CAAC,YAAa,CAAC,CAAC;gBAC/F,CAAC;gBAED,oCAAoC;gBACpC,iEAAiE;gBACjE,iCAAiC;gBAEjC,IAAI,OAAO,GAAgB,IAAI,IAAI,EAAE,CAAC;gBACtC,IAAI,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;gBAEjD,mCAAmC;gBACnC,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;oBAC1B,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;gBACtD,CAAC;gBAED,0DAA0D;gBAC1D,4FAA4F;gBAC5F,MAAM,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;gBAChD,IAAI,SAAS,EAAE,CAAC;oBACZ,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;gBAC/C,CAAC;qBAAM,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;oBAC5B,mEAAmE;oBACnE,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC1D,CAAC;gBAED,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;gBAE1B,OAAO,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAClC,CAAC,CAAC;YAEF,qGAAqG;YACrG,wEAAwE;YACxE,gDAAgD;YAChD,mEAAmE;YACnE,2EAA2E;YAC3E,wDAAwD;YAExD,KAAK,GAAG,IAAI,kCAAkB,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC;aAAM,CAAC;YACJ,KAAK,GAAG,IAAI,kCAAkB,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,GAAG,CAAC,MAAM,EAAE,4CAA4C,CAAC,CAAC;QAC1D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;AACL,CAAC;AAQD,MAAM,cAAc;IAChB,MAAM,CAAC,cAAc;QACjB,MAAM,WAAW,GAAG,gCAAc,CAAC,oBAAoB,EAAE,CAAC;QAC1D,OAAO,cAAI,CAAC,IAAI,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,CAAC,IAAI;QACP,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,IAAI,YAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACD,OAAO,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;YAC5D,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,GAAG,CAAC,OAAO,EAAE,2BAA4B,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;gBAChE,OAAO,EAAE,CAAC;YACd,CAAC;QACL,CAAC;QACD,OAAO,EAAE,CAAC;IACd,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,OAAsB;QAC9B,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,IAAI,CAAC;YACD,YAAE,CAAC,aAAa,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QACpE,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACT,GAAG,CAAC,OAAO,EAAE,2BAA4B,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;IACL,CAAC;IAED,MAAM,CAAC,KAAK;QACR,MAAM,WAAW,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC1C,IAAI,YAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;YAC7B,YAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QAC/B,CAAC;IACL,CAAC;CACJ;AAED,oBAAoB;AACpB,KAAK,UAAU,YAAY,CAAC,KAAU,EAAE,OAAsB,EAAE,UAAkB;IAC9E,IAAI,CAAC;QACD,sCAAsC;QACtC,MAAM,WAAW,GAAG;YAChB,GAAG,OAAO;YACV,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE;SAClD,CAAC;QAEF,yBAAyB;QACzB,MAAM,QAAQ,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACtC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,KAAK,EAAE,IAAI,CAAC,KAAK;SACpB,CAAC,CAAC,CAAC;QAEJ,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC9D,GAAG,CAAC,MAAM,EAAE,gBAAgB,WAAW,MAAM,kBAAkB,EAAE,CAAC,CAAC;QAEnE,IAAI,WAAW,GAAG,kBAAkB,EAAE,CAAC;YACnC,GAAG,CAAC,MAAM,EAAE,2BAA2B,WAAW,uBAAuB,CAAC,CAAC;YAE3E,uDAAuD;YACvD,IAAI,aAAa,GAAG,CAAC,GAAG,OAAO,CAAC,CAAC;YAEjC,IAAI,QAAQ,GAAG,CAAC,CAAC;YACjB,OAAO,aAAa,CAAC,MAAM,GAAG,CAAC,IAAI,QAAQ,GAAG,GAAG,EAAE,CAAC;gBAC/C,aAAa,CAAC,KAAK,EAAE,CAAC;gBAEtB,MAAM,eAAe,GAAG;oBACpB,GAAG,aAAa;oBAChB,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,CAAC,EAAE;iBAClD,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAExD,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,eAAe,EAAE,CAAC,CAAC;gBAC9F,IAAI,aAAa,IAAI,kBAAkB,EAAE,CAAC;oBACtC,GAAG,CAAC,MAAM,EAAE,aAAa,aAAa,UAAU,CAAC,CAAC;oBAClD,OAAO,aAAa,CAAC;gBACzB,CAAC;gBACD,QAAQ,EAAE,CAAC;YAChB,CAAC;YACA,OAAO,EAAE,CAAC;QACf,CAAC;QAED,OAAO,OAAO,CAAC;IACnB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACT,GAAG,CAAC,OAAO,EAAE,0BAA2B,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;QAC/D,OAAO,OAAO,CAAC;IACnB,CAAC;AACL,CAAC;AAqBD,2BAA2B;AAC3B,KAAK,UAAU,cAAc,CAAC,WAAmB;IAC7C,MAAM,cAAc,GAAG,cAAI,CAAC,IAAI,CAAC,gBAAgB,EAAE,cAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;IAE/E,IAAI,CAAC;QACD,qBAAqB;QACrB,YAAE,CAAC,UAAU,CAAC,WAAW,EAAE,cAAc,CAAC,CAAC;QAE3C,eAAe;QACf,MAAM,WAAW,GAAgB,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC;QACrF,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,WAAW,EAAE,GAAG,WAAW,CAAC;QAEvF,GAAG,CAAC,MAAM,EAAE,eAAe,OAAO,UAAU,MAAM,KAAK,OAAO,CAAC,SAAS,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;QAEtF,uBAAuB;QACvB,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC7B,GAAG,CAAC,MAAM,EAAE,kDAAkD,CAAC,CAAC;YAChE,cAAc,CAAC,KAAK,EAAE,CAAC;YACvB,MAAM,YAAY,GAAiB;gBAChC,OAAO;gBACP,MAAM;gBACN,OAAO,EAAE,+BAA+B;gBACxC,eAAe,EAAE,OAAO;gBACxB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,SAAS;gBACT,GAAG,WAAW;aACjB,CAAC;YACF,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,IAAI,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC7F,YAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACtE,YAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAC9B,OAAO;QACX,CAAC;QAED,2BAA2B;QAC3B,MAAM,WAAW,GAAG,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC9C,IAAI,WAAW,EAAE,CAAC;YACd,GAAG,CAAC,MAAM,EAAE,0CAA0C,CAAC,CAAC;YACxD,cAAc,CAAC,KAAK,EAAE,CAAC;YACvB,YAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC9B,CAAC;QAED,8BAA8B;QAC9B,IAAI,MAAM,GAAG,8BAAa,CAAC,IAAI,EAAE,CAAC;QAElC,6BAA6B;QAC7B,IAAI,iBAAiB,GAAG,EAAE,CAAC;QAE3B,8BAA8B;QAC9B,IAAI,MAAM,CAAC,QAAQ;YAAE,iBAAiB,IAAI,gBAAgB,MAAM,CAAC,QAAQ,IAAI,CAAC;QAC9E,IAAI,MAAM,CAAC,OAAO;YAAE,iBAAiB,IAAI,cAAc,MAAM,CAAC,OAAO,IAAI,CAAC;QAC1E,IAAI,MAAM,CAAC,UAAU;YAAE,iBAAiB,IAAI,yBAAyB,MAAM,CAAC,UAAU,IAAI,CAAC;QAE3F,kBAAkB;QAClB,MAAM,WAAW,GAAiB,4BAAY,CAAC,cAAc,EAAE,CAAC;QAChE,IAAI,WAAW,EAAE,CAAC;YACd,iBAAiB,IAAI,uBAAuB,WAAW,CAAC,IAAI,QAAQ,CAAC;YACrE,iBAAiB,IAAI,GAAG,WAAW,CAAC,iBAAiB,IAAI,CAAC;YAC1D,iBAAiB,IAAI,sCAAsC,CAAC;YAC5D,GAAG,CAAC,MAAM,EAAE,gBAAgB,WAAW,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,CAAC;QAED,YAAY;QACZ,IAAI,CAAC,KAAK;YAAE,MAAM,UAAU,EAAE,CAAC;QAE/B,gCAAgC;QAChC,MAAM,WAAW,GAAQ;YACrB,KAAK,EAAE,UAAU;YACjB,iBAAiB,EAAE,iBAAiB,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,SAAS;YAC3G,cAAc,EAAE;gBACZ,EAAE,QAAQ,EAAE,4BAAY,CAAC,wBAAwB,EAAE,SAAS,EAAE,kCAAkB,CAAC,UAAU,EAAE;gBAC7F,EAAE,QAAQ,EAAE,4BAAY,CAAC,yBAAyB,EAAE,SAAS,EAAE,kCAAkB,CAAC,UAAU,EAAE;gBAC9F,EAAE,QAAQ,EAAE,4BAAY,CAAC,+BAA+B,EAAE,SAAS,EAAE,kCAAkB,CAAC,UAAU,EAAE;gBACpG,EAAE,QAAQ,EAAE,4BAAY,CAAC,+BAA+B,EAAE,SAAS,EAAE,kCAAkB,CAAC,UAAU,EAAE;aACvG;SACJ,CAAC;QAEF,2CAA2C;QAC3C,uEAAuE;QACvE,+BAA+B;QAC/B,2EAA2E;QAC3E,oFAAoF;QACpF,6EAA6E;QAC7E,8GAA8G;QAC9G,oDAAoD;QACpD,iEAAiE;QACjE,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;YACrB,MAAM,aAAa,GAAG,MAAM,CAAC,KAAK,CAAC;YACnC,aAAa;YACb,MAAM,CAAC,KAAK,GAAG,KAAK,EAAE,GAAQ,EAAE,IAAU,EAAE,EAAE;gBAC1C,IAAI,MAAM,GAAG,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAC5B,IAAI,MAAM,CAAC,QAAQ,CAAC,mCAAmC,CAAC,EAAE,CAAC;oBACvD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,2CAA2C,EAAE,MAAM,CAAC,YAAa,CAAC,CAAC;gBAC/F,CAAC;gBAED,IAAI,OAAO,GAAQ,IAAI,IAAI,EAAE,CAAC;gBAC9B,IAAI,OAAY,CAAC;gBAEjB,4BAA4B;gBAC5B,IAAI,CAAC;oBACD,aAAa;oBACb,OAAO,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC;gBACjD,CAAC;gBAAC,OAAM,CAAC,EAAE,CAAC;oBACR,OAAO,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,CAAC;gBAC7D,CAAC;gBAED,iBAAiB;gBACjB,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;oBACzB,IAAI,OAAO,CAAC,GAAG;wBAAE,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,gBAAgB,CAAC,CAAC;;wBAC9D,OAAO,CAAC,WAAW,CAAC,GAAG,MAAM,CAAC,gBAAgB,CAAC;gBACzD,CAAC;gBAED,sBAAsB;gBACtB,6CAA6C;gBAC7C,IAAI,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;gBAExF,IAAI,SAAS,EAAE,CAAC;oBACX,IAAI,OAAO,CAAC,GAAG;wBAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;;wBACvD,OAAO,CAAC,kBAAkB,CAAC,GAAG,SAAS,CAAC;gBAClD,CAAC;qBAAM,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;oBAC5B,WAAW;oBACX,IAAI,OAAO,CAAC,GAAG;wBAAE,OAAO,CAAC,GAAG,CAAC,kBAAkB,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;;wBACjE,OAAO,CAAC,kBAAkB,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC;gBAC5D,CAAC;gBAED,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC;gBAE1B,OAAO,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAE1C,CAAC,CAAC;QACP,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,kBAAkB,CAAC,WAAW,CAAC,CAAC;QAEpD,eAAe;QACf,IAAI,OAAO,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC;QAEpC,0BAA0B;QAC1B,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,QAAQ,EAAE,CAAC;YAC7B,IAAI,WAAW,GAAG,MAAM,CAAC,aAAa,IAAI,SAAS,CAAC;YACpD,IAAI,UAAU,GAAG,CAAC,CAAC;YACnB,IAAI,CAAC;gBACF,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC;gBAC/E,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,WAAW,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;gBACrD,UAAU,GAAG,MAAM,CAAC,WAAW,CAAC;YACnC,CAAC;YAAC,OAAM,CAAC,EAAE,CAAC,CAAA,CAAC;YAEb,IAAI,SAAS,GAAG,WAAW,CAAC,CAAC,CAAC,qBAAqB,WAAW,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;YAE7E,MAAM,KAAK,GAAG,oCAAoC,WAAW,KAAK,SAAS,qBAAqB,OAAO,CAAC,MAAM,yBAAyB,UAAU,MAAM,kBAAkB,EAAE,CAAC;YAE5K,MAAM,YAAY,GAAiB;gBAChC,OAAO;gBACP,MAAM;gBACN,OAAO,EAAE,KAAK;gBACd,eAAe,EAAE,OAAO;gBACxB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;gBACrB,SAAS;gBACT,GAAG,WAAW;aACjB,CAAC;YACF,MAAM,YAAY,GAAG,cAAI,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,IAAI,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;YAC7F,YAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACtE,YAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;YAC9B,OAAO;QACX,CAAC;QAED,0FAA0F;QAC1F,wBAAwB;QACxB,kEAAkE;QAClE,mEAAmE;QACnE,mFAAmF;QACnF,mDAAmD;QACnD,oEAAoE;QACpE,oFAAoF;QACpF,yEAAyE;QACzE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,WAAW,IAAI,WAAW,CAAC,QAAQ,IAAI,WAAW,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChG,KAAK,MAAM,OAAO,IAAI,WAAW,CAAC,QAAQ,EAAE,CAAC;gBACzC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC,CAAC;gBACjE,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YACvE,CAAC;YACD,6EAA6E;YAC7E,2EAA2E;YAC3E,+DAA+D;YAC/D,kDAAkD;YAClD,gEAAgE;YAChE,uEAAuE;YACvE,0CAA0C;YAC1C,uCAAuC;YACvC,oFAAoF;YACpF,8EAA8E;YAC9E,uCAAuC;YACvC,8CAA8C;QACnD,CAAC;QAED,wCAAwC;QACxC,wDAAwD;QACxD,OAAO,GAAG,MAAM,YAAY,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;QAEtD,WAAW;QACX,IAAI,YAAoB,CAAC;QACzB,IAAI,CAAC;YACD,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC;YACnD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;YAC/C,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,QAAQ,CAAC;YACvC,YAAY,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC;YAE/B,iCAAiC;YACjC,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC;YAC3D,OAAO,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,CAAC,EAAE,CAAC,CAAC;YACjE,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAEjC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,GAAG,CAAC,OAAO,EAAE,iBAAkB,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1D,YAAY,GAAG,8BAA+B,KAAe,CAAC,OAAO,mDAAmD,CAAC;QAC7H,CAAC;QAED,iBAAiB;QACjB,MAAM,YAAY,GAAiB;YAC/B,OAAO;YACP,MAAM;YACN,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE;YAC5B,eAAe,EAAE,OAAO;YACxB,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE;YACrB,SAAS;YACT,GAAG,WAAW;SACjB,CAAC;QAEF,MAAM,YAAY,GAAG,OAAO,KAAK,WAAW;YACxC,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,SAAS,OAAO,CAAC;YAChD,CAAC,CAAC,cAAI,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,OAAO,IAAI,SAAS,IAAI,IAAI,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC;QAE9E,YAAE,CAAC,aAAa,CAAC,YAAY,EAAE,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAEtE,GAAG,CAAC,MAAM,EAAE,qBAAqB,OAAO,KAAK,MAAM,EAAE,CAAC,CAAC;QAEvD,UAAU;QACV,YAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC;IAElC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,GAAG,CAAC,OAAO,EAAE,qBAAsB,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAC9D,IAAI,YAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAChC,IAAI,CAAC;gBACD,YAAE,CAAC,UAAU,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;YAC/C,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACT,GAAG,CAAC,OAAO,EAAE,0BAA0B,CAAC,CAAC;YAC7C,CAAC;QACL,CAAC;IACL,CAAC;AACL,CAAC;AAQD,OAAO;AACP,KAAK,UAAU,YAAY;IACvB,IAAI,CAAC;QACD,MAAM,KAAK,GAAgB,YAAE,CAAC,WAAW,CAAC,cAAc,CAAC;aACpD,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;aAChC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACP,IAAI,EAAE,CAAC;YACP,IAAI,EAAE,cAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC;YAClC,IAAI,EAAE,YAAE,CAAC,QAAQ,CAAC,cAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO;SAC1D,CAAC,CAAC;aACF,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC;QAErC,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACnB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;gBACvB,MAAM,cAAc,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;QACL,CAAC;IACL,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACb,GAAG,CAAC,OAAO,EAAE,qBAAsB,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;IAClE,CAAC;AACL,CAAC;AAED,QAAQ;AACR,UAAU,EAAE,CAAC,IAAI,CAAC,GAAG,EAAE;IACnB,GAAG,CAAC,MAAM,EAAE,uCAAuC,UAAU,EAAE,CAAC,CAAC;IACjE,GAAG,CAAC,MAAM,EAAE,aAAa,cAAc,EAAE,CAAC,CAAC;IAC3C,MAAM,cAAc,GAAG,8BAAa,CAAC,IAAI,EAAE,CAAC,aAAa,IAAI,SAAS,CAAC;IACvE,GAAG,CAAC,MAAM,EAAE,mBAAmB,cAAc,EAAE,CAAC,CAAC;IACjD,WAAW,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AACpC,CAAC,CAAC,CAAC;AAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;AAC5C,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC"}
1
+ {"version":3,"file":"queue-processor.js","sourceRoot":"","sources":["../src/queue-processor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { AppConfig } from '../config-manager';
2
+ export declare class WebSearch {
3
+ private apiKey;
4
+ constructor(config: AppConfig);
5
+ search(query: string): Promise<string>;
6
+ }
7
+ //# sourceMappingURL=web-search.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-search.d.ts","sourceRoot":"","sources":["../../src/tools/web-search.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAE9C,qBAAa,SAAS;IAClB,OAAO,CAAC,MAAM,CAAS;gBAEX,MAAM,EAAE,SAAS;IAIvB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;CAkC/C"}
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.WebSearch = void 0;
4
+ class WebSearch {
5
+ apiKey;
6
+ constructor(config) {
7
+ this.apiKey = config.braveApiKey || process.env.BRAVE_API_KEY || '';
8
+ }
9
+ async search(query) {
10
+ if (!this.apiKey) {
11
+ return "Error: Brave Search API Key is missing. Please configure it.";
12
+ }
13
+ try {
14
+ const response = await fetch(`https://api.search.brave.com/res/v1/web/search?q=${encodeURIComponent(query)}&count=5`, {
15
+ headers: {
16
+ 'Accept': 'application/json',
17
+ 'Accept-Encoding': 'gzip',
18
+ 'X-Subscription-Token': this.apiKey
19
+ }
20
+ });
21
+ if (!response.ok) {
22
+ return `Error: Brave Search failed (${response.status})`;
23
+ }
24
+ const data = await response.json();
25
+ if (!data.web || !data.web.results) {
26
+ return "No results found.";
27
+ }
28
+ // Format results
29
+ const results = data.web.results.map((result) => {
30
+ return `[${result.title}](${result.url})\n${result.description || ''}`;
31
+ });
32
+ return `**Search Results for "${query}":**\n\n${results.join('\n\n')}`;
33
+ }
34
+ catch (error) {
35
+ return `Error performing search: ${error.message}`;
36
+ }
37
+ }
38
+ }
39
+ exports.WebSearch = WebSearch;
40
+ //# sourceMappingURL=web-search.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"web-search.js","sourceRoot":"","sources":["../../src/tools/web-search.ts"],"names":[],"mappings":";;;AAGA,MAAa,SAAS;IACV,MAAM,CAAS;IAEvB,YAAY,MAAiB;QACzB,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,EAAE,CAAC;IACxE,CAAC;IAED,KAAK,CAAC,MAAM,CAAC,KAAa;QACtB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACf,OAAO,8DAA8D,CAAC;QAC1E,CAAC;QAED,IAAI,CAAC;YACD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,oDAAoD,kBAAkB,CAAC,KAAK,CAAC,UAAU,EAAE;gBAClH,OAAO,EAAE;oBACL,QAAQ,EAAE,kBAAkB;oBAC5B,iBAAiB,EAAE,MAAM;oBACzB,sBAAsB,EAAE,IAAI,CAAC,MAAM;iBACtC;aACJ,CAAC,CAAC;YAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;gBACf,OAAO,+BAA+B,QAAQ,CAAC,MAAM,GAAG,CAAC;YAC7D,CAAC;YAED,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAS,CAAC;YAE1C,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;gBACjC,OAAO,mBAAmB,CAAC;YAC/B,CAAC;YAED,iBAAiB;YACjB,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAW,EAAE,EAAE;gBACjD,OAAO,IAAI,MAAM,CAAC,KAAK,KAAK,MAAM,CAAC,GAAG,MAAM,MAAM,CAAC,WAAW,IAAI,EAAE,EAAE,CAAC;YAC3E,CAAC,CAAC,CAAC;YAEH,OAAO,yBAAyB,KAAK,WAAW,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,OAAO,4BAA6B,KAAe,CAAC,OAAO,EAAE,CAAC;QAClE,CAAC;IACL,CAAC;CACJ;AAzCD,8BAyCC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@thelapyae/geniclaw",
3
- "version": "1.1.11",
3
+ "version": "1.2.0",
4
4
  "description": "Geniclaw - Gemini + Telegram CLI Assistant",
5
5
  "main": "dist/telegram-client.js",
6
6
  "bin": {