virtualcode 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAA;;;;;AAmrBjD,wBAGC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,qBAAqB,CAAA;;;;;AA+yBjD,wBAGC"}
package/dist/index.js CHANGED
@@ -1,6 +1,6 @@
1
1
  import { tool } from "@opencode-ai/plugin/tool";
2
2
  import { Telegraf } from "telegraf";
3
- import { readFileSync, writeFileSync, mkdirSync, existsSync, renameSync } from "node:fs";
3
+ import { readFileSync, writeFileSync, mkdirSync, existsSync, renameSync, chmodSync } from "node:fs";
4
4
  import { join } from "node:path";
5
5
  import { homedir } from "node:os";
6
6
  const LINK_FILE = join(homedir(), ".config", "opencode", "telegram-links.json");
@@ -8,51 +8,80 @@ const LINK_TMP = LINK_FILE + ".tmp";
8
8
  const TOKEN_FILE = join(homedir(), ".config", "opencode", "telegram-token.json");
9
9
  const TOKEN_TMP = TOKEN_FILE + ".tmp";
10
10
  const CONFIG_DIR = join(homedir(), ".config", "opencode");
11
- const TOKEN_REGEX = /^\d+:[\w-]+$/;
11
+ const TOKEN_REGEX = /^\d{8,12}:[\w-]{30,50}$/;
12
12
  const MAX_LRU_SIZE = 100;
13
13
  const PENDING_TIMEOUT_MS = 30_000;
14
14
  const RECONNECT_DELAYS = [5_000, 10_000, 20_000, 30_000];
15
- function loadLinks() {
15
+ const MAX_TELEGRAM_INPUT = 4096;
16
+ const MAX_TUI_TEXT = 400;
17
+ const MIN_PREFIX_LEN = 4;
18
+ const MAX_TOKENS_PER_CHUNK = 25;
19
+ const MIN_HISTORY_LIMIT = 1;
20
+ const FILE_MODE = 0o600;
21
+ function safeChmod(p) {
16
22
  try {
17
- if (existsSync(LINK_FILE)) {
18
- return JSON.parse(readFileSync(LINK_FILE, "utf-8"));
19
- }
23
+ chmodSync(p, FILE_MODE);
20
24
  }
21
25
  catch { }
22
- return {};
23
26
  }
24
- function persistLinks(links) {
27
+ function atomicWrite(path, tmp, data) {
25
28
  mkdirSync(CONFIG_DIR, { recursive: true });
26
- writeFileSync(LINK_TMP, JSON.stringify(links, null, 2));
29
+ writeFileSync(tmp, data);
30
+ safeChmod(tmp);
27
31
  try {
28
- renameSync(LINK_TMP, LINK_FILE);
32
+ renameSync(tmp, path);
29
33
  }
30
34
  catch {
31
- writeFileSync(LINK_FILE, JSON.stringify(links, null, 2));
35
+ writeFileSync(path, data);
36
+ }
37
+ safeChmod(path);
38
+ }
39
+ function loadLinks() {
40
+ try {
41
+ if (existsSync(LINK_FILE)) {
42
+ const raw = readFileSync(LINK_FILE, "utf-8");
43
+ const parsed = JSON.parse(raw);
44
+ if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
45
+ return parsed;
46
+ }
47
+ }
32
48
  }
49
+ catch (err) {
50
+ debugLog("loadLinks failed:", userError(err));
51
+ }
52
+ return {};
53
+ }
54
+ function persistLinks(links) {
55
+ atomicWrite(LINK_FILE, LINK_TMP, JSON.stringify(links, null, 2));
33
56
  }
34
57
  function loadSavedToken() {
35
58
  try {
36
59
  if (existsSync(TOKEN_FILE)) {
37
60
  const data = JSON.parse(readFileSync(TOKEN_FILE, "utf-8"));
38
- if (data?.token)
61
+ if (typeof data?.token === "string" && data.token.length > 0)
39
62
  return data.token;
40
63
  }
41
64
  }
42
- catch { }
65
+ catch (err) {
66
+ debugLog("loadSavedToken failed:", userError(err));
67
+ }
43
68
  return null;
44
69
  }
45
- function saveToken(token) {
46
- mkdirSync(CONFIG_DIR, { recursive: true });
47
- writeFileSync(TOKEN_TMP, JSON.stringify({ token }, null, 2));
70
+ function clearSavedToken() {
48
71
  try {
49
- renameSync(TOKEN_TMP, TOKEN_FILE);
50
- }
51
- catch {
52
- writeFileSync(TOKEN_FILE, JSON.stringify({ token }, null, 2));
72
+ if (existsSync(TOKEN_FILE))
73
+ renameSync(TOKEN_FILE, TOKEN_FILE + ".bak");
53
74
  }
75
+ catch { }
76
+ }
77
+ function saveToken(token) {
78
+ atomicWrite(TOKEN_FILE, TOKEN_TMP, JSON.stringify({ token }, null, 2));
54
79
  }
55
80
  function isValidToken(token) {
81
+ if (typeof token !== "string")
82
+ return false;
83
+ if (token.length > 100)
84
+ return false;
56
85
  return TOKEN_REGEX.test(token);
57
86
  }
58
87
  function userError(err) {
@@ -67,28 +96,34 @@ function userError(err) {
67
96
  }
68
97
  const DEBUG = !!process.env.DEBUG_TELEGRAM;
69
98
  function debugLog(...args) {
70
- console.error("[telegram-plugin]", ...args);
71
99
  if (DEBUG) {
100
+ console.error("[telegram-plugin]", ...args);
72
101
  for (const a of args) {
73
102
  if (a instanceof Error)
74
- console.error(a);
103
+ console.error(a.stack || a.message);
75
104
  }
76
105
  }
77
106
  }
78
107
  function sanitizeUI(text, maxLen = 200) {
79
108
  if (!text)
80
109
  return "";
81
- let cleaned = text
110
+ let cleaned = String(text)
82
111
  .split("\n")
83
112
  .filter((line) => !/^\s*at\s/.test(line))
84
113
  .join(" ")
85
114
  .trim();
86
115
  cleaned = cleaned.replace(/\s+/g, " ");
87
116
  if (cleaned.length > maxLen) {
88
- cleaned = cleaned.slice(0, maxLen - 3).trim() + "...";
117
+ cleaned = cleaned.slice(0, Math.max(0, maxLen - 3)).trim() + "...";
89
118
  }
90
119
  return cleaned;
91
120
  }
121
+ function sanitizeTUI(text, maxLen = MAX_TUI_TEXT) {
122
+ const s = sanitizeUI(text, maxLen);
123
+ if (!s)
124
+ return "";
125
+ return s.length > maxLen ? s.slice(0, maxLen - 3) + "..." : s;
126
+ }
92
127
  const KNOWN_ERRORS = [
93
128
  [/Expected a string starting with "ses"/, "Invalid session ID."],
94
129
  [/ECONNRESET/, "Connection lost."],
@@ -107,6 +142,8 @@ function handlePluginError(err, context) {
107
142
  return "Something went wrong.";
108
143
  }
109
144
  function chunkText(text, maxLen = 4000) {
145
+ if (!text)
146
+ return [""];
110
147
  if (text.length <= maxLen)
111
148
  return [text];
112
149
  const chunks = [];
@@ -116,19 +153,33 @@ function chunkText(text, maxLen = 4000) {
116
153
  return chunks;
117
154
  }
118
155
  function fmtId(id) {
156
+ if (typeof id !== "string")
157
+ return "(invalid)";
119
158
  return id.length > 12 ? id.slice(0, 12) + "..." : id;
120
159
  }
121
160
  function findSessionById(id, list) {
122
- const exact = list.find((s) => s.id === id);
161
+ if (typeof id !== "string" || !Array.isArray(list))
162
+ return { status: "not_found" };
163
+ const exact = list.find((s) => s && typeof s.id === "string" && s.id === id);
123
164
  if (exact)
124
165
  return { status: "found", session: exact };
125
- const prefix = list.filter((s) => s.id.startsWith(id));
166
+ if (id.length < MIN_PREFIX_LEN)
167
+ return { status: "not_found" };
168
+ const prefix = list.filter((s) => s && typeof s.id === "string" && s.id.startsWith(id));
126
169
  if (prefix.length === 1)
127
170
  return { status: "found", session: prefix[0] };
128
171
  if (prefix.length > 1)
129
172
  return { status: "ambiguous" };
130
173
  return { status: "not_found" };
131
174
  }
175
+ function safeList(arr) {
176
+ if (!Array.isArray(arr))
177
+ return [];
178
+ return arr.filter((s) => s && typeof s === "object" && typeof s.id === "string");
179
+ }
180
+ function delay(ms) {
181
+ return new Promise((r) => setTimeout(r, ms));
182
+ }
132
183
  const TelegramPlugin = async ({ client, directory }, options) => {
133
184
  const config = options;
134
185
  const allowedSet = config?.allowed_users?.length ? new Set(config.allowed_users) : null;
@@ -217,40 +268,67 @@ const TelegramPlugin = async ({ client, directory }, options) => {
217
268
  return;
218
269
  if (reconnectTimer)
219
270
  return;
220
- const delay = RECONNECT_DELAYS[Math.min(reconnectAttempts, RECONNECT_DELAYS.length - 1)];
271
+ if (reconnectAttempts >= 10) {
272
+ debugLog("reconnect attempts exhausted; giving up until next event");
273
+ return;
274
+ }
275
+ const delayMs = RECONNECT_DELAYS[Math.min(reconnectAttempts, RECONNECT_DELAYS.length - 1)];
221
276
  reconnectAttempts++;
222
- debugLog("scheduling reconnect in", delay, "ms (attempt", reconnectAttempts + ")");
277
+ debugLog("scheduling reconnect in", delayMs, "ms (attempt", reconnectAttempts + ")");
223
278
  reconnectTimer = setTimeout(async () => {
224
279
  reconnectTimer = null;
225
280
  if (savedToken && !userStopped) {
226
281
  await startBot(savedToken);
227
282
  }
228
- }, delay);
283
+ }, delayMs);
229
284
  }
230
285
  async function sendToChats(chats, text) {
231
- if (!botReady)
232
- return;
233
- const chunks = chunkText(text);
286
+ if (!botReady || !bot)
287
+ return false;
288
+ const safeText = sanitizeUI(text, 4000);
289
+ const chunks = chunkText(safeText, 4000);
290
+ let sentAny = false;
234
291
  for (const chatId of chats) {
235
292
  for (const chunk of chunks) {
236
- try {
237
- await bot.telegram.sendMessage(chatId, chunk);
238
- }
239
- catch (err) {
240
- const msg = handlePluginError(err, "sendMessage");
241
- if (msg.includes("blocked") || msg.includes("Invalid token")) {
242
- botReady = false;
243
- scheduleReconnect();
293
+ let attempt = 0;
294
+ while (attempt < 2) {
295
+ try {
296
+ await bot.telegram.sendMessage(chatId, chunk);
297
+ sentAny = true;
298
+ break;
244
299
  }
300
+ catch (err) {
301
+ attempt++;
302
+ const msg = handlePluginError(err, "sendMessage");
303
+ if (msg.includes("blocked")) {
304
+ removeLink(chatId);
305
+ break;
306
+ }
307
+ if (msg.includes("Invalid token")) {
308
+ botReady = false;
309
+ scheduleReconnect();
310
+ return sentAny;
311
+ }
312
+ if (attempt >= 2) {
313
+ debugLog("sendMessage gave up for chat", chatId, ":", msg);
314
+ }
315
+ else {
316
+ await delay(500);
317
+ }
318
+ }
319
+ }
320
+ if (chunks.length > MAX_TOKENS_PER_CHUNK) {
321
+ await delay(50);
245
322
  }
246
323
  }
247
324
  }
325
+ return sentAny;
248
326
  }
249
327
  async function sendToSession(sessionId, text) {
250
328
  const chats = sessionToChats.get(sessionId);
251
329
  if (!chats)
252
- return;
253
- await sendToChats(chats, text);
330
+ return false;
331
+ return await sendToChats(chats, text) ?? false;
254
332
  }
255
333
  async function startBot(token) {
256
334
  if (botStarting)
@@ -274,161 +352,250 @@ const TelegramPlugin = async ({ client, directory }, options) => {
274
352
  handlePluginError(err, "bot.catch");
275
353
  });
276
354
  bot.command("start", async (ctx) => {
277
- if (allowedSet && !allowedSet.has(ctx.from.id))
355
+ if (allowedSet && (!ctx.from || !allowedSet.has(ctx.from.id)))
278
356
  return;
279
- await ctx.reply("virtualcode - OpenCode Telegram bridge\n\n" +
280
- "Quick setup:\n" +
281
- "1. /ls - list your sessions\n" +
282
- "2. /link <ID> - bind this chat\n" +
283
- "3. Send any message to talk to OpenCode\n\n" +
284
- "Type /help for all commands.");
357
+ try {
358
+ await ctx.reply("virtualcode - OpenCode Telegram bridge\n\n" +
359
+ "Quick setup:\n" +
360
+ "1. /ls - list your sessions\n" +
361
+ "2. /link <ID> - bind this chat\n" +
362
+ "3. Send any message to talk to OpenCode\n\n" +
363
+ "Type /help for all commands.");
364
+ }
365
+ catch { }
285
366
  });
286
367
  bot.command("link", async (ctx) => {
287
- if (allowedSet && !allowedSet.has(ctx.from.id))
368
+ if (allowedSet && (!ctx.from || !allowedSet.has(ctx.from.id)))
288
369
  return;
289
- const arg = ctx.payload.trim();
370
+ const arg = ctx.payload.trim().slice(0, 200);
290
371
  if (!arg) {
291
- await ctx.reply("Usage: /link <sessionID>");
372
+ try {
373
+ await ctx.reply("Usage: /link <sessionID>");
374
+ }
375
+ catch { }
292
376
  return;
293
377
  }
294
378
  try {
295
379
  const list = await client.session.list();
296
380
  if (list.error || !list.data) {
297
- await ctx.reply("Could not load sessions.");
381
+ try {
382
+ await ctx.reply("Could not load sessions.");
383
+ }
384
+ catch { }
298
385
  return;
299
386
  }
300
- const result = findSessionById(arg, list.data);
387
+ const sessions = safeList(list.data);
388
+ const result = findSessionById(arg, sessions);
301
389
  if (result.status === "not_found") {
302
- await ctx.reply("Session not found.");
390
+ try {
391
+ await ctx.reply(arg.length < MIN_PREFIX_LEN ? "Prefix too short (min 4 chars)." : "Session not found.");
392
+ }
393
+ catch { }
303
394
  return;
304
395
  }
305
396
  if (result.status === "ambiguous") {
306
- await ctx.reply("Multiple sessions match. Use the full ID from /ls.");
397
+ try {
398
+ await ctx.reply("Multiple sessions match. Use the full ID from /ls.");
399
+ }
400
+ catch { }
307
401
  return;
308
402
  }
309
403
  const old = links[ctx.chat.id];
310
404
  addLink(ctx.chat.id, result.session.id);
311
405
  if (old) {
312
- await ctx.reply("Switched to " + fmtId(result.session.id) + " (from " + fmtId(old) + ")");
406
+ try {
407
+ await ctx.reply("Switched to " + fmtId(result.session.id) + " (from " + fmtId(old) + ")");
408
+ }
409
+ catch { }
313
410
  }
314
411
  else {
315
- await ctx.reply("Linked to " + (result.session.title || fmtId(result.session.id)));
412
+ try {
413
+ await ctx.reply("Linked to " + (result.session.title || fmtId(result.session.id)));
414
+ }
415
+ catch { }
316
416
  }
317
417
  }
318
418
  catch (err) {
319
419
  const msg = handlePluginError(err, "/link");
320
- await ctx.reply(sanitizeUI(msg));
420
+ try {
421
+ await ctx.reply(sanitizeUI(msg));
422
+ }
423
+ catch { }
321
424
  }
322
425
  });
323
426
  bot.command("unlink", async (ctx) => {
324
- if (allowedSet && !allowedSet.has(ctx.from.id))
427
+ if (allowedSet && (!ctx.from || !allowedSet.has(ctx.from.id)))
325
428
  return;
326
429
  if (!links[ctx.chat.id]) {
327
- await ctx.reply("Not linked.");
430
+ try {
431
+ await ctx.reply("Not linked.");
432
+ }
433
+ catch { }
328
434
  return;
329
435
  }
330
436
  removeLink(ctx.chat.id);
331
- await ctx.reply("Unlinked.");
437
+ try {
438
+ await ctx.reply("Unlinked.");
439
+ }
440
+ catch { }
332
441
  });
333
442
  bot.command("status", async (ctx) => {
334
- if (allowedSet && !allowedSet.has(ctx.from.id))
443
+ if (allowedSet && (!ctx.from || !allowedSet.has(ctx.from.id)))
335
444
  return;
336
445
  const sessionId = links[ctx.chat.id];
337
446
  if (!sessionId) {
338
- await ctx.reply("Not linked. Use /link <ID>");
447
+ try {
448
+ await ctx.reply("Not linked. Use /link <ID>");
449
+ }
450
+ catch { }
339
451
  return;
340
452
  }
341
- await ctx.reply("Connected | Session: " + fmtId(sessionId) + " | Project: " + (directory || "none"));
453
+ try {
454
+ await ctx.reply("Connected | Session: " + fmtId(sessionId) + " | Project: " + (directory || "none"));
455
+ }
456
+ catch { }
342
457
  });
343
458
  bot.command(["ls", "sessions"], async (ctx) => {
344
- if (allowedSet && !allowedSet.has(ctx.from.id))
459
+ if (allowedSet && (!ctx.from || !allowedSet.has(ctx.from.id)))
345
460
  return;
346
461
  try {
347
462
  const res = await client.session.list();
348
463
  if (res.error || !res.data) {
349
- await ctx.reply("Could not load sessions.");
464
+ try {
465
+ await ctx.reply("Could not load sessions.");
466
+ }
467
+ catch { }
350
468
  return;
351
469
  }
352
470
  const current = links[ctx.chat.id];
353
- const lines = res.data.slice(-20).map((s, i, arr) => {
354
- const num = arr.length - i;
471
+ const sessions = safeList(res.data);
472
+ const recent = sessions.slice(-20);
473
+ const lines = recent.map((s, i) => {
474
+ const num = recent.length - i;
355
475
  const marker = s.id === current ? " *" : "";
356
- const label = s.title || s.id.slice(0, 16);
476
+ const label = (s.title || s.id.slice(0, 16)).slice(0, 60);
357
477
  return num + ". " + label + " -- " + s.id + marker;
358
478
  });
359
- await ctx.reply("Sessions:\n" + (lines.length ? lines.join("\n") : "None"));
479
+ try {
480
+ await ctx.reply("Sessions:\n" + (lines.length ? lines.join("\n") : "None"));
481
+ }
482
+ catch { }
360
483
  }
361
484
  catch (err) {
362
485
  const msg = handlePluginError(err, "/ls");
363
- await ctx.reply(sanitizeUI(msg));
486
+ try {
487
+ await ctx.reply(sanitizeUI(msg));
488
+ }
489
+ catch { }
364
490
  }
365
491
  });
366
492
  bot.command("use", async (ctx) => {
367
- if (allowedSet && !allowedSet.has(ctx.from.id))
493
+ if (allowedSet && (!ctx.from || !allowedSet.has(ctx.from.id)))
368
494
  return;
369
- const arg = ctx.payload.trim();
495
+ const arg = ctx.payload.trim().slice(0, 200);
370
496
  if (!arg) {
371
- await ctx.reply("Usage: /use <number|ID>");
497
+ try {
498
+ await ctx.reply("Usage: /use <number|ID>");
499
+ }
500
+ catch { }
372
501
  return;
373
502
  }
374
503
  try {
375
504
  const res = await client.session.list();
376
505
  if (res.error || !res.data) {
377
- await ctx.reply("Could not load sessions.");
506
+ try {
507
+ await ctx.reply("Could not load sessions.");
508
+ }
509
+ catch { }
378
510
  return;
379
511
  }
512
+ const sessions = safeList(res.data);
380
513
  const num = parseInt(arg);
514
+ if (!isNaN(num) && num > 0 && num <= sessions.length) {
515
+ const s = sessions[sessions.length - num];
516
+ addLink(ctx.chat.id, s.id);
517
+ try {
518
+ await ctx.reply("Switched to " + (s.title || fmtId(s.id)));
519
+ }
520
+ catch { }
521
+ return;
522
+ }
381
523
  if (!isNaN(num) && num > 0) {
382
- if (num > res.data.length) {
383
- await ctx.reply("Only " + res.data.length + " sessions available.");
384
- return;
524
+ try {
525
+ await ctx.reply("Only " + sessions.length + " sessions available.");
385
526
  }
386
- const s = res.data[res.data.length - num];
387
- if (!s)
388
- return;
389
- addLink(ctx.chat.id, s.id);
390
- await ctx.reply("Switched to " + (s.title || fmtId(s.id)));
527
+ catch { }
391
528
  return;
392
529
  }
393
- const result = findSessionById(arg, res.data);
530
+ const result = findSessionById(arg, sessions);
394
531
  if (result.status === "not_found") {
395
- await ctx.reply("Session not found.");
532
+ try {
533
+ await ctx.reply(arg.length < MIN_PREFIX_LEN ? "Prefix too short (min 4 chars)." : "Session not found.");
534
+ }
535
+ catch { }
396
536
  return;
397
537
  }
398
538
  if (result.status === "ambiguous") {
399
- await ctx.reply("Multiple sessions match. Use the full ID from /ls.");
539
+ try {
540
+ await ctx.reply("Multiple sessions match. Use the full ID from /ls.");
541
+ }
542
+ catch { }
400
543
  return;
401
544
  }
402
545
  addLink(ctx.chat.id, result.session.id);
403
- await ctx.reply("Switched to " + (result.session.title || fmtId(result.session.id)));
546
+ try {
547
+ await ctx.reply("Switched to " + (result.session.title || fmtId(result.session.id)));
548
+ }
549
+ catch { }
404
550
  }
405
551
  catch (err) {
406
552
  const msg = handlePluginError(err, "/use");
407
- await ctx.reply(sanitizeUI(msg));
553
+ try {
554
+ await ctx.reply(sanitizeUI(msg));
555
+ }
556
+ catch { }
408
557
  }
409
558
  });
410
559
  bot.command("history", async (ctx) => {
411
- if (allowedSet && !allowedSet.has(ctx.from.id))
560
+ if (allowedSet && (!ctx.from || !allowedSet.has(ctx.from.id)))
412
561
  return;
413
562
  const sessionId = links[ctx.chat.id];
414
563
  if (!sessionId) {
415
- await ctx.reply("Not linked. Use /link <ID>");
564
+ try {
565
+ await ctx.reply("Not linked. Use /link <ID>");
566
+ }
567
+ catch { }
416
568
  return;
417
569
  }
418
570
  try {
419
- const limitText = ctx.payload.trim();
420
- const limit = limitText ? Math.min(parseInt(limitText) || 20, 100) : 20;
571
+ const limitText = ctx.payload.trim().slice(0, 10);
572
+ let limit = MIN_HISTORY_LIMIT;
573
+ if (limitText) {
574
+ const parsed = parseInt(limitText);
575
+ if (!isNaN(parsed) && parsed > 0) {
576
+ limit = Math.min(parsed, 100);
577
+ }
578
+ }
579
+ else {
580
+ limit = 20;
581
+ }
421
582
  const res = await client.session.messages({ path: { id: sessionId }, query: { directory, limit } });
422
583
  if (res.error || !res.data || res.data.length === 0) {
423
- await ctx.reply("No messages found.");
584
+ try {
585
+ await ctx.reply("No messages found.");
586
+ }
587
+ catch { }
424
588
  return;
425
589
  }
426
590
  const lines = [];
427
591
  for (const msg of res.data) {
592
+ if (!msg || !msg.info)
593
+ continue;
428
594
  const role = msg.info.role === "user" ? "[User]" : "[AI]";
429
- const text = msg.parts
430
- .filter((p) => p.type === "text" && !p.synthetic)
431
- .map((p) => p.text)
595
+ const parts = Array.isArray(msg.parts) ? msg.parts : [];
596
+ const text = parts
597
+ .filter((p) => p && p.type === "text" && !p.synthetic)
598
+ .map((p) => String(p.text || ""))
432
599
  .join("\n")
433
600
  .trim();
434
601
  if (!text)
@@ -437,45 +604,69 @@ const TelegramPlugin = async ({ client, directory }, options) => {
437
604
  lines.push(role + " " + truncated);
438
605
  }
439
606
  if (lines.length === 0) {
440
- await ctx.reply("No text messages found.");
607
+ try {
608
+ await ctx.reply("No text messages found.");
609
+ }
610
+ catch { }
441
611
  return;
442
612
  }
443
613
  const text = lines.join("\n\n");
444
614
  for (const chunk of chunkText(text)) {
445
- await ctx.reply(chunk);
615
+ try {
616
+ await ctx.reply(chunk);
617
+ }
618
+ catch { }
446
619
  }
447
620
  }
448
621
  catch (err) {
449
622
  const msg = handlePluginError(err, "/history");
450
- await ctx.reply(sanitizeUI(msg));
623
+ try {
624
+ await ctx.reply(sanitizeUI(msg));
625
+ }
626
+ catch { }
451
627
  }
452
628
  });
453
629
  bot.command("help", async (ctx) => {
454
- if (allowedSet && !allowedSet.has(ctx.from.id))
630
+ if (allowedSet && (!ctx.from || !allowedSet.has(ctx.from.id)))
455
631
  return;
456
- await ctx.reply("/link <sessionId> - Bind this chat to a session\n" +
457
- "/unlink - Remove binding\n" +
458
- "/status - Show connection state\n" +
459
- "/ls - List recent sessions\n" +
460
- "/use <number|ID> - Switch active session\n" +
461
- "/history [N] - View last N messages\n" +
462
- "/help - Show this help\n\n" +
463
- "Any other message will be sent to the linked session.");
632
+ try {
633
+ await ctx.reply("/link <sessionId> - Bind this chat to a session\n" +
634
+ "/unlink - Remove binding\n" +
635
+ "/status - Show connection state\n" +
636
+ "/ls - List recent sessions\n" +
637
+ "/use <number|ID> - Switch active session\n" +
638
+ "/history [N] - View last N messages\n" +
639
+ "/help - Show this help\n\n" +
640
+ "Any other message will be sent to the linked session.");
641
+ }
642
+ catch { }
464
643
  });
465
644
  bot.on(["photo", "sticker", "document", "video", "audio", "voice"], async (ctx) => {
466
- if (allowedSet && !allowedSet.has(ctx.from.id))
645
+ if (allowedSet && (!ctx.from || !allowedSet.has(ctx.from.id)))
467
646
  return;
468
- await ctx.reply("Only text messages are supported.");
647
+ try {
648
+ await ctx.reply("Only text messages are supported.");
649
+ }
650
+ catch { }
469
651
  });
470
652
  bot.on("text", async (ctx) => {
471
- if (allowedSet && !allowedSet.has(ctx.from.id))
653
+ if (allowedSet && (!ctx.from || !allowedSet.has(ctx.from.id)))
472
654
  return;
473
655
  const sessionId = links[ctx.chat.id];
474
656
  if (!sessionId) {
475
- await ctx.reply("Not linked. Use /link <ID>");
657
+ try {
658
+ await ctx.reply("Not linked. Use /link <ID>");
659
+ }
660
+ catch { }
476
661
  return;
477
662
  }
478
- const working = await ctx.reply("...");
663
+ let working = null;
664
+ try {
665
+ working = await ctx.reply("...");
666
+ }
667
+ catch (err) {
668
+ debugLog("working reply failed:", userError(err));
669
+ }
479
670
  setPending(sessionId, ctx.chat.id);
480
671
  try {
481
672
  const res = await client.session.prompt({
@@ -485,20 +676,28 @@ const TelegramPlugin = async ({ client, directory }, options) => {
485
676
  },
486
677
  query: { directory },
487
678
  });
488
- if (res.error) {
679
+ if (res?.error) {
489
680
  const msg = handlePluginError(res.error, "prompt");
490
- await ctx.reply(sanitizeUI(msg));
681
+ try {
682
+ await ctx.reply(sanitizeUI(msg));
683
+ }
684
+ catch { }
491
685
  }
492
686
  }
493
687
  catch (err) {
494
688
  const msg = handlePluginError(err, "prompt");
495
- await ctx.reply(sanitizeUI(msg));
689
+ try {
690
+ await ctx.reply(sanitizeUI(msg));
691
+ }
692
+ catch { }
496
693
  }
497
694
  clearPending(sessionId);
498
- try {
499
- await ctx.deleteMessage(working.message_id);
695
+ if (working?.message_id) {
696
+ try {
697
+ await ctx.deleteMessage(working.message_id);
698
+ }
699
+ catch { }
500
700
  }
501
- catch { }
502
701
  });
503
702
  if (notifyOnReconnect) {
504
703
  for (const chatId of Object.keys(links)) {
@@ -518,9 +717,13 @@ const TelegramPlugin = async ({ client, directory }, options) => {
518
717
  }
519
718
  botReady = true;
520
719
  botStarting = false;
521
- bot.launch().catch((err) => {
720
+ bot.launch().catch(async (err) => {
522
721
  handlePluginError(err, "bot.launch");
523
722
  botReady = false;
723
+ try {
724
+ await bot?.stop();
725
+ }
726
+ catch { }
524
727
  scheduleReconnect();
525
728
  });
526
729
  }
@@ -594,13 +797,19 @@ const TelegramPlugin = async ({ client, directory }, options) => {
594
797
  await startBot(saved);
595
798
  }
596
799
  }
800
+ if (!output || !Array.isArray(output.parts))
801
+ return;
597
802
  for (const part of output.parts) {
598
- if (part.type !== "text")
803
+ if (!part || part.type !== "text" || typeof part.text !== "string")
599
804
  continue;
600
- const text = part.text;
805
+ let text = part.text;
806
+ if (text.length > MAX_TELEGRAM_INPUT) {
807
+ text = text.slice(0, MAX_TELEGRAM_INPUT);
808
+ }
601
809
  if (text.startsWith("/telegram")) {
602
- const args = text.slice("/telegram".length).trim().toLowerCase();
603
- if (args === "disconnect" || args === "stop") {
810
+ const rawArgs = text.slice("/telegram".length).trim().slice(0, 200);
811
+ const cmd = rawArgs.toLowerCase();
812
+ if (cmd === "disconnect" || cmd === "stop") {
604
813
  userStopped = true;
605
814
  if (reconnectTimer) {
606
815
  clearTimeout(reconnectTimer);
@@ -614,12 +823,11 @@ const TelegramPlugin = async ({ client, directory }, options) => {
614
823
  bot = null;
615
824
  botStarting = false;
616
825
  savedToken = null;
617
- if (loadSavedToken())
618
- saveToken("");
826
+ clearSavedToken();
619
827
  part.text = "Telegram bot disconnected and token removed.";
620
828
  return;
621
829
  }
622
- if (args === "status" || args === "") {
830
+ if (cmd === "status" || cmd === "") {
623
831
  if (botReady) {
624
832
  part.text =
625
833
  "Telegram bot is connected.\n" +
@@ -633,16 +841,22 @@ const TelegramPlugin = async ({ client, directory }, options) => {
633
841
  "- /telegram <your_bot_token> - Connect with a token\n" +
634
842
  "- /telegram - Open setup dialog (type /telegram in command palette)";
635
843
  }
844
+ part.text = sanitizeTUI(part.text, MAX_TUI_TEXT);
845
+ return;
846
+ }
847
+ const tokenMatch = rawArgs.match(/^\s*["'`]*([^\s"'`]+)["'`]*\s*$/);
848
+ if (!tokenMatch) {
849
+ part.text = sanitizeTUI("Invalid token.", MAX_TUI_TEXT);
636
850
  return;
637
851
  }
638
- const token = args;
852
+ const token = tokenMatch[1];
639
853
  if (!isValidToken(token)) {
640
- part.text = "Invalid token.";
854
+ part.text = sanitizeTUI("Invalid token.", MAX_TUI_TEXT);
641
855
  return;
642
856
  }
643
857
  saveToken(token);
644
858
  await startBot(token);
645
- part.text = botReady ? "Connected." : "Invalid token.";
859
+ part.text = sanitizeTUI(botReady ? "Connected." : "Invalid token.", MAX_TUI_TEXT);
646
860
  return;
647
861
  }
648
862
  }
@@ -659,9 +873,22 @@ const TelegramPlugin = async ({ client, directory }, options) => {
659
873
  sessionId: tool.schema.string().optional().describe("Target session ID (defaults to current)"),
660
874
  },
661
875
  async execute({ text, sessionId }, ctx) {
876
+ if (typeof text !== "string" || text.length === 0) {
877
+ return { output: "No text to send." };
878
+ }
879
+ if (!botReady) {
880
+ return { output: "Telegram bot is not connected." };
881
+ }
882
+ if (!ctx?.sessionID && !sessionId) {
883
+ return { output: "No session context." };
884
+ }
662
885
  const targetId = sessionId || ctx.sessionID;
663
- await sendToSession(targetId, text);
664
- return { output: "Message sent to Telegram" };
886
+ if (typeof targetId !== "string") {
887
+ return { output: "Invalid session ID." };
888
+ }
889
+ const safeText = text.length > 4000 ? text.slice(0, 4000) + "..." : text;
890
+ const ok = await sendToSession(targetId, safeText);
891
+ return { output: ok ? "Message sent to Telegram" : "No linked chats." };
665
892
  },
666
893
  }),
667
894
  },
@@ -677,7 +904,7 @@ const TelegramPlugin = async ({ client, directory }, options) => {
677
904
  pendingTelegram.clear();
678
905
  lastForwardedBySession.clear();
679
906
  try {
680
- bot?.stop();
907
+ await bot?.stop();
681
908
  }
682
909
  catch { }
683
910
  botReady = false;
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,IAAI,EAAE,MAAM,0BAA0B,CAAA;AAC/C,OAAO,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAA;AACnC,OAAO,EAAE,YAAY,EAAE,aAAa,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AACnG,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEjC,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,qBAAqB,CAAC,CAAA;AAC/E,MAAM,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAA;AACnC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,EAAE,qBAAqB,CAAC,CAAA;AAChF,MAAM,SAAS,GAAG,UAAU,GAAG,MAAM,CAAA;AACrC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;AAEzD,MAAM,WAAW,GAAG,yBAAyB,CAAA;AAC7C,MAAM,YAAY,GAAG,GAAG,CAAA;AACxB,MAAM,kBAAkB,GAAG,MAAM,CAAA;AACjC,MAAM,gBAAgB,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;AACxD,MAAM,kBAAkB,GAAG,IAAI,CAAA;AAC/B,MAAM,YAAY,GAAG,GAAG,CAAA;AACxB,MAAM,cAAc,GAAG,CAAC,CAAA;AACxB,MAAM,oBAAoB,GAAG,EAAE,CAAA;AAC/B,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAC3B,MAAM,SAAS,GAAG,KAAK,CAAA;AAEvB,SAAS,SAAS,CAAC,CAAS;IAC1B,IAAI,CAAC;QAAC,SAAS,CAAC,CAAC,EAAE,SAAS,CAAC,CAAA;IAAC,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;AAC1C,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,GAAW,EAAE,IAAY;IAC1D,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC1C,aAAa,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACxB,SAAS,CAAC,GAAG,CAAC,CAAA;IACd,IAAI,CAAC;QACH,UAAU,CAAC,GAAG,EAAE,IAAI,CAAC,CAAA;IACvB,CAAC;IAAC,MAAM,CAAC;QACP,aAAa,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;IAC3B,CAAC;IACD,SAAS,CAAC,IAAI,CAAC,CAAA;AACjB,CAAC;AAED,SAAS,SAAS;IAChB,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,SAAS,CAAC,EAAE,CAAC;YAC1B,MAAM,GAAG,GAAG,YAAY,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;YAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;YAC9B,IAAI,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;gBACnE,OAAO,MAAgC,CAAA;YACzC,CAAC;QACH,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,QAAQ,CAAC,mBAAmB,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;IAC/C,CAAC;IACD,OAAO,EAAE,CAAA;AACX,CAAC;AAED,SAAS,YAAY,CAAC,KAA6B;IACjD,WAAW,CAAC,SAAS,EAAE,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AAClE,CAAC;AAED,SAAS,cAAc;IACrB,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAA;YAC1D,IAAI,OAAO,IAAI,EAAE,KAAK,KAAK,QAAQ,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC;gBAAE,OAAO,IAAI,CAAC,KAAK,CAAA;QACjF,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,QAAQ,CAAC,wBAAwB,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;IACpD,CAAC;IACD,OAAO,IAAI,CAAA;AACb,CAAC;AAED,SAAS,eAAe;IACtB,IAAI,CAAC;QACH,IAAI,UAAU,CAAC,UAAU,CAAC;YAAE,UAAU,CAAC,UAAU,EAAE,UAAU,GAAG,MAAM,CAAC,CAAA;IACzE,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;AACZ,CAAC;AAED,SAAS,SAAS,CAAC,KAAa;IAC9B,WAAW,CAAC,UAAU,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;AACxE,CAAC;AAED,SAAS,YAAY,CAAC,KAAa;IACjC,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3C,IAAI,KAAK,CAAC,MAAM,GAAG,GAAG;QAAE,OAAO,KAAK,CAAA;IACpC,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAChC,CAAC;AAED,SAAS,SAAS,CAAC,GAAY;IAC7B,IAAI,CAAC,GAAG;QAAE,OAAO,eAAe,CAAA;IAChC,IAAI,GAAG,YAAY,KAAK,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAC/C,OAAO,KAAK,IAAI,eAAe,CAAA;IACjC,CAAC;IACD,MAAM,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;IAC3C,OAAO,CAAC,IAAI,eAAe,CAAA;AAC7B,CAAC;AAED,MAAM,KAAK,GAAG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAA;AAE1C,SAAS,QAAQ,CAAC,GAAG,IAAe;IAClC,IAAI,KAAK,EAAE,CAAC;QACV,OAAO,CAAC,KAAK,CAAC,mBAAmB,EAAE,GAAG,IAAI,CAAC,CAAA;QAC3C,KAAK,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;YACrB,IAAI,CAAC,YAAY,KAAK;gBAAE,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,OAAO,CAAC,CAAA;QAC7D,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,UAAU,CAAC,IAAY,EAAE,MAAM,GAAG,GAAG;IAC5C,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAA;IACpB,IAAI,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC;SACvB,KAAK,CAAC,IAAI,CAAC;SACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;SACxC,IAAI,CAAC,GAAG,CAAC;SACT,IAAI,EAAE,CAAA;IACT,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACtC,IAAI,OAAO,CAAC,MAAM,GAAG,MAAM,EAAE,CAAC;QAC5B,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,GAAG,KAAK,CAAA;IACpE,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,SAAS,WAAW,CAAC,IAAY,EAAE,MAAM,GAAG,YAAY;IACtD,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IAClC,IAAI,CAAC,CAAC;QAAE,OAAO,EAAE,CAAA;IACjB,OAAO,CAAC,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAA;AAC/D,CAAC;AAED,MAAM,YAAY,GAAuB;IACvC,CAAC,uCAAuC,EAAE,qBAAqB,CAAC;IAChE,CAAC,YAAY,EAAE,kBAAkB,CAAC;IAClC,CAAC,gBAAgB,EAAE,+BAA+B,CAAC;IACnD,CAAC,oCAAoC,EAAE,gBAAgB,CAAC;IACxD,CAAC,iBAAiB,EAAE,cAAc,CAAC;IACnC,CAAC,mBAAmB,EAAE,uBAAuB,CAAC;CAC/C,CAAA;AAED,SAAS,iBAAiB,CAAC,GAAY,EAAE,OAAe;IACtD,MAAM,GAAG,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;IAC1B,QAAQ,CAAC,OAAO,GAAG,GAAG,EAAE,GAAG,CAAC,CAAA;IAC5B,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,YAAY,EAAE,CAAC;QAC/C,IAAI,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC;YAAE,OAAO,QAAQ,CAAA;IACxC,CAAC;IACD,OAAO,uBAAuB,CAAA;AAChC,CAAC;AAED,SAAS,SAAS,CAAC,IAAY,EAAE,MAAM,GAAG,IAAI;IAC5C,IAAI,CAAC,IAAI;QAAE,OAAO,CAAC,EAAE,CAAC,CAAA;IACtB,IAAI,IAAI,CAAC,MAAM,IAAI,MAAM;QAAE,OAAO,CAAC,IAAI,CAAC,CAAA;IACxC,MAAM,MAAM,GAAa,EAAE,CAAA;IAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,MAAM,EAAE,CAAC;QAC7C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,GAAG,MAAM,CAAC,CAAC,CAAA;IACxC,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,IAAI,OAAO,EAAE,KAAK,QAAQ;QAAE,OAAO,WAAW,CAAA;IAC9C,OAAO,EAAE,CAAC,MAAM,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;AACtD,CAAC;AAOD,SAAS,eAAe,CAAC,EAAU,EAAE,IAAW;IAC9C,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;IAClF,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAA;IACjF,IAAI,KAAK;QAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,CAAA;IACrD,IAAI,EAAE,CAAC,MAAM,GAAG,cAAc;QAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;IAC9D,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAA;IAC5F,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,CAAA;IACvE,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;IACrD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;AAChC,CAAC;AAED,SAAS,QAAQ,CAAC,GAAU;IAC1B,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,EAAE,CAAA;IAClC,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,CAAC,CAAA;AAClF,CAAC;AAED,SAAS,KAAK,CAAC,EAAU;IACvB,OAAO,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;AACpD,CAAC;AAED,MAAM,cAAc,GAAW,KAAK,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,EAAE;IACtE,MAAM,MAAM,GAAG,OAMF,CAAA;IAEb,MAAM,UAAU,GAAG,MAAM,EAAE,aAAa,EAAE,MAAM,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,CAAA;IACvF,MAAM,iBAAiB,GAAG,MAAM,EAAE,mBAAmB,IAAI,KAAK,CAAA;IAE9D,IAAI,GAAG,GAAoB,IAAI,CAAA;IAC/B,IAAI,QAAQ,GAAG,KAAK,CAAA;IACpB,IAAI,WAAW,GAAG,KAAK,CAAA;IACvB,IAAI,WAAW,GAAG,KAAK,CAAA;IACvB,IAAI,UAAU,GAAkB,IAAI,CAAA;IACpC,IAAI,cAAc,GAAyC,IAAI,CAAA;IAC/D,IAAI,iBAAiB,GAAG,CAAC,CAAA;IAEzB,MAAM,sBAAsB,GAAG,IAAI,GAAG,EAAkB,CAAA;IACxD,MAAM,eAAe,GAAG,IAAI,GAAG,EAAoE,CAAA;IAEnG,MAAM,KAAK,GAAG,SAAS,EAAE,CAAA;IACzB,MAAM,aAAa,GAAG,IAAI,GAAG,EAAkB,CAAA;IAC/C,MAAM,cAAc,GAAG,IAAI,GAAG,EAAuB,CAAA;IAErD,SAAS,WAAW;QAClB,aAAa,CAAC,KAAK,EAAE,CAAA;QACrB,cAAc,CAAC,KAAK,EAAE,CAAA;QACtB,KAAK,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACxD,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,CAAA;YAC1B,aAAa,CAAC,GAAG,CAAC,GAAG,EAAE,SAAS,CAAC,CAAA;YACjC,IAAI,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YACvC,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,GAAG,GAAG,IAAI,GAAG,EAAE,CAAA;gBACf,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;YACpC,CAAC;YACD,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACd,CAAC;IACH,CAAC;IACD,WAAW,EAAE,CAAA;IAEb,SAAS,OAAO,CAAC,MAAc,EAAE,SAAiB;QAChD,KAAK,CAAC,MAAM,CAAC,GAAG,SAAS,CAAA;QACzB,aAAa,CAAC,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;QACpC,IAAI,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACvC,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,GAAG,GAAG,IAAI,GAAG,EAAE,CAAA;YACf,cAAc,CAAC,GAAG,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;QACpC,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QACf,YAAY,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC;IAED,SAAS,UAAU,CAAC,MAAc;QAChC,MAAM,SAAS,GAAG,KAAK,CAAC,MAAM,CAAC,CAAA;QAC/B,IAAI,CAAC,SAAS;YAAE,OAAM;QACtB,OAAO,KAAK,CAAC,MAAM,CAAC,CAAA;QACpB,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC5B,MAAM,GAAG,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QACzC,IAAI,GAAG,EAAE,CAAC;YACR,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;YAClB,IAAI,GAAG,CAAC,IAAI,KAAK,CAAC;gBAAE,cAAc,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACtD,CAAC;QACD,YAAY,CAAC,KAAK,CAAC,CAAA;IACrB,CAAC;IAED,SAAS,MAAM,CAAC,GAAwB,EAAE,GAAW,EAAE,KAAa;QAClE,IAAI,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC;YACjB,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAA;QACjB,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,IAAI,YAAY,EAAE,CAAC;YACpC,MAAM,MAAM,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,CAAA;YACtC,IAAI,MAAM,KAAK,SAAS;gBAAE,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QAC9C,CAAC;QACD,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;IACrB,CAAC;IAED,SAAS,UAAU,CAAC,SAAiB,EAAE,MAAc;QACnD,MAAM,QAAQ,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC/C,IAAI,QAAQ;YAAE,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;QAC1C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACnC,CAAC,EAAE,kBAAkB,CAAC,CAAA;QACtB,eAAe,CAAC,GAAG,CAAC,SAAS,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;IACnD,CAAC;IAED,SAAS,YAAY,CAAC,SAAiB;QACrC,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC5C,IAAI,KAAK,EAAE,CAAC;YACV,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YACzB,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAA;QACnC,CAAC;IACH,CAAC;IAED,SAAS,iBAAiB;QACxB,IAAI,WAAW,IAAI,CAAC,UAAU;YAAE,OAAM;QACtC,IAAI,cAAc;YAAE,OAAM;QAC1B,IAAI,iBAAiB,IAAI,EAAE,EAAE,CAAC;YAC5B,QAAQ,CAAC,0DAA0D,CAAC,CAAA;YACpE,OAAM;QACR,CAAC;QACD,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAA;QAC1F,iBAAiB,EAAE,CAAA;QACnB,QAAQ,CAAC,yBAAyB,EAAE,OAAO,EAAE,aAAa,EAAE,iBAAiB,GAAG,GAAG,CAAC,CAAA;QACpF,cAAc,GAAG,UAAU,CAAC,KAAK,IAAI,EAAE;YACrC,cAAc,GAAG,IAAI,CAAA;YACrB,IAAI,UAAU,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC/B,MAAM,QAAQ,CAAC,UAAU,CAAC,CAAA;YAC5B,CAAC;QACH,CAAC,EAAE,OAAO,CAAC,CAAA;IACb,CAAC;IAED,KAAK,UAAU,WAAW,CAAC,KAAuB,EAAE,IAAY;QAC9D,IAAI,CAAC,QAAQ,IAAI,CAAC,GAAG;YAAE,OAAO,KAAK,CAAA;QACnC,MAAM,QAAQ,GAAG,UAAU,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QACvC,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAA;QACxC,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,KAAK,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;YAC3B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,IAAI,OAAO,GAAG,CAAC,CAAA;gBACf,OAAO,OAAO,GAAG,CAAC,EAAE,CAAC;oBACnB,IAAI,CAAC;wBACH,MAAM,GAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;wBAC9C,OAAO,GAAG,IAAI,CAAA;wBACd,MAAK;oBACP,CAAC;oBAAC,OAAO,GAAG,EAAE,CAAC;wBACb,OAAO,EAAE,CAAA;wBACT,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,EAAE,aAAa,CAAC,CAAA;wBACjD,IAAI,GAAG,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;4BAC5B,UAAU,CAAC,MAAM,CAAC,CAAA;4BAClB,MAAK;wBACP,CAAC;wBACD,IAAI,GAAG,CAAC,QAAQ,CAAC,eAAe,CAAC,EAAE,CAAC;4BAClC,QAAQ,GAAG,KAAK,CAAA;4BAChB,iBAAiB,EAAE,CAAA;4BACnB,OAAO,OAAO,CAAA;wBAChB,CAAC;wBACD,IAAI,OAAO,IAAI,CAAC,EAAE,CAAC;4BACjB,QAAQ,CAAC,8BAA8B,EAAE,MAAM,EAAE,GAAG,EAAE,GAAG,CAAC,CAAA;wBAC5D,CAAC;6BAAM,CAAC;4BACN,MAAM,KAAK,CAAC,GAAG,CAAC,CAAA;wBAClB,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,IAAI,MAAM,CAAC,MAAM,GAAG,oBAAoB,EAAE,CAAC;oBACzC,MAAM,KAAK,CAAC,EAAE,CAAC,CAAA;gBACjB,CAAC;YACH,CAAC;QACH,CAAC;QACD,OAAO,OAAO,CAAA;IAChB,CAAC;IAED,KAAK,UAAU,aAAa,CAAC,SAAiB,EAAE,IAAY;QAC1D,MAAM,KAAK,GAAG,cAAc,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;QAC3C,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAA;QACxB,OAAO,MAAM,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,KAAK,CAAA;IAChD,CAAC;IAED,KAAK,UAAU,QAAQ,CAAC,KAAa;QACnC,IAAI,WAAW;YAAE,OAAM;QACvB,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,QAAQ,CAAC,gCAAgC,CAAC,CAAA;YAC1C,OAAM;QACR,CAAC;QACD,WAAW,GAAG,IAAI,CAAA;QAClB,QAAQ,GAAG,KAAK,CAAA;QAChB,WAAW,GAAG,KAAK,CAAA;QACnB,UAAU,GAAG,KAAK,CAAA;QAClB,iBAAiB,GAAG,CAAC,CAAA;QACrB,IAAI,CAAC;YACH,IAAI,CAAC;gBAAC,GAAG,EAAE,IAAI,EAAE,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;YAC5B,GAAG,GAAG,IAAI,QAAQ,CAAC,KAAK,CAAC,CAAA;YACzB,GAAG,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBAChB,iBAAiB,CAAC,GAAG,EAAE,WAAW,CAAC,CAAA;YACrC,CAAC,CAAC,CAAA;YAEF,GAAG,CAAC,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;gBACjC,IAAI,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAAE,OAAM;gBACrE,IAAI,CAAC;oBACH,MAAM,GAAG,CAAC,KAAK,CACb,4CAA4C;wBAC5C,gBAAgB;wBAChB,+BAA+B;wBAC/B,kCAAkC;wBAClC,6CAA6C;wBAC7C,8BAA8B,CAC/B,CAAA;gBACH,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YACZ,CAAC,CAAC,CAAA;YAEF,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;gBAChC,IAAI,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAAE,OAAM;gBACrE,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;gBAC5C,IAAI,CAAC,GAAG,EAAE,CAAC;oBACT,IAAI,CAAC;wBAAC,MAAM,GAAG,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;oBAC5D,OAAM;gBACR,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;oBACxC,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;wBAC7B,IAAI,CAAC;4BAAC,MAAM,GAAG,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAA,CAAC;wBAC5D,OAAM;oBACR,CAAC;oBACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;oBACpC,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;oBAC7C,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;wBAClC,IAAI,CAAC;4BAAC,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAA;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAA,CAAC;wBACxH,OAAM;oBACR,CAAC;oBACD,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;wBAClC,IAAI,CAAC;4BAAC,MAAM,GAAG,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAA;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAA,CAAC;wBACtF,OAAM;oBACR,CAAC;oBACD,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;oBAC9B,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;oBACvC,IAAI,GAAG,EAAE,CAAC;wBACR,IAAI,CAAC;4BAAC,MAAM,GAAG,CAAC,KAAK,CAAC,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,GAAG,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,GAAG,CAAC,CAAA;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAA,CAAC;oBAC5G,CAAC;yBAAM,CAAC;wBACN,IAAI,CAAC;4BAAC,MAAM,GAAG,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAA,CAAC;oBACrG,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;oBAC3C,IAAI,CAAC;wBAAC,MAAM,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;gBACnD,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;gBAClC,IAAI,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAAE,OAAM;gBACrE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,CAAC;oBACxB,IAAI,CAAC;wBAAC,MAAM,GAAG,CAAC,KAAK,CAAC,aAAa,CAAC,CAAA;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;oBAC/C,OAAM;gBACR,CAAC;gBACD,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBACvB,IAAI,CAAC;oBAAC,MAAM,GAAG,CAAC,KAAK,CAAC,WAAW,CAAC,CAAA;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YAC/C,CAAC,CAAC,CAAA;YAEF,GAAG,CAAC,OAAO,CAAC,QAAQ,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;gBAClC,IAAI,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAAE,OAAM;gBACrE,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBACpC,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,IAAI,CAAC;wBAAC,MAAM,GAAG,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAA;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;oBAC9D,OAAM;gBACR,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,GAAG,CAAC,KAAK,CACb,uBAAuB,GAAG,KAAK,CAAC,SAAS,CAAC,GAAG,cAAc,GAAG,CAAC,SAAS,IAAI,MAAM,CAAC,CACpF,CAAA;gBACH,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YACZ,CAAC,CAAC,CAAA;YAEF,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;gBAC5C,IAAI,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAAE,OAAM;gBACrE,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;oBACvC,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;wBAC3B,IAAI,CAAC;4BAAC,MAAM,GAAG,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAA,CAAC;wBAC5D,OAAM;oBACR,CAAC;oBACD,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;oBAClC,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;oBACnC,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAA;oBAClC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,CAAS,EAAE,EAAE;wBAC7C,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAA;wBAC7B,MAAM,MAAM,GAAG,CAAC,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAA;wBAC3C,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;wBACzD,OAAO,GAAG,GAAG,IAAI,GAAG,KAAK,GAAG,MAAM,GAAG,CAAC,CAAC,EAAE,GAAG,MAAM,CAAA;oBACpD,CAAC,CAAC,CAAA;oBACF,IAAI,CAAC;wBAAC,MAAM,GAAG,CAAC,KAAK,CAAC,aAAa,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAA;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;gBAC9F,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAA;oBACzC,IAAI,CAAC;wBAAC,MAAM,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;gBACnD,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;gBAC/B,IAAI,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAAE,OAAM;gBACrE,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;gBAC5C,IAAI,CAAC,GAAG,EAAE,CAAC;oBACT,IAAI,CAAC;wBAAC,MAAM,GAAG,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAA;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;oBAC3D,OAAM;gBACR,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;oBACvC,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;wBAC3B,IAAI,CAAC;4BAAC,MAAM,GAAG,CAAC,KAAK,CAAC,0BAA0B,CAAC,CAAA;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAA,CAAC;wBAC5D,OAAM;oBACR,CAAC;oBACD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;oBACnC,MAAM,GAAG,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAA;oBACzB,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;wBACrD,MAAM,CAAC,GAAG,QAAQ,CAAC,QAAQ,CAAC,MAAM,GAAG,GAAG,CAAC,CAAA;wBACzC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,CAAC,CAAA;wBAC1B,IAAI,CAAC;4BAAC,MAAM,GAAG,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAA,CAAC;wBAC3E,OAAM;oBACR,CAAC;oBACD,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;wBAC3B,IAAI,CAAC;4BAAC,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,GAAG,QAAQ,CAAC,MAAM,GAAG,sBAAsB,CAAC,CAAA;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAA,CAAC;wBACpF,OAAM;oBACR,CAAC;oBACD,MAAM,MAAM,GAAG,eAAe,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;oBAC7C,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;wBAClC,IAAI,CAAC;4BAAC,MAAM,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,GAAG,cAAc,CAAC,CAAC,CAAC,iCAAiC,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAA;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAA,CAAC;wBACxH,OAAM;oBACR,CAAC;oBACD,IAAI,MAAM,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;wBAClC,IAAI,CAAC;4BAAC,MAAM,GAAG,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAA;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAA,CAAC;wBACtF,OAAM;oBACR,CAAC;oBACD,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAA;oBACvC,IAAI,CAAC;wBAAC,MAAM,GAAG,CAAC,KAAK,CAAC,cAAc,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;gBACvG,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;oBAC1C,IAAI,CAAC;wBAAC,MAAM,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;gBACnD,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,GAAG,CAAC,OAAO,CAAC,SAAS,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;gBACnC,IAAI,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAAE,OAAM;gBACrE,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBACpC,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,IAAI,CAAC;wBAAC,MAAM,GAAG,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAA;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;oBAC9D,OAAM;gBACR,CAAC;gBACD,IAAI,CAAC;oBACH,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;oBACjD,IAAI,KAAK,GAAG,iBAAiB,CAAA;oBAC7B,IAAI,SAAS,EAAE,CAAC;wBACd,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAA;wBAClC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;4BACjC,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;wBAC/B,CAAC;oBACH,CAAC;yBAAM,CAAC;wBACN,KAAK,GAAG,EAAE,CAAA;oBACZ,CAAC;oBACD,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,CAAC,CAAA;oBACnG,IAAI,GAAG,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACpD,IAAI,CAAC;4BAAC,MAAM,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAA;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAA,CAAC;wBACtD,OAAM;oBACR,CAAC;oBACD,MAAM,KAAK,GAAa,EAAE,CAAA;oBAC1B,KAAK,MAAM,GAAG,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC;wBAC3B,IAAI,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI;4BAAE,SAAQ;wBAC/B,MAAM,IAAI,GAAG,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAA;wBACzD,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAA;wBACvD,MAAM,IAAI,GAAG,KAAK;6BACf,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;6BAC1D,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC,CAAC;6BACrC,IAAI,CAAC,IAAI,CAAC;6BACV,IAAI,EAAE,CAAA;wBACT,IAAI,CAAC,IAAI;4BAAE,SAAQ;wBACnB,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;wBACvE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,GAAG,GAAG,SAAS,CAAC,CAAA;oBACpC,CAAC;oBACD,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBACvB,IAAI,CAAC;4BAAC,MAAM,GAAG,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAA;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAA,CAAC;wBAC3D,OAAM;oBACR,CAAC;oBACD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;oBAC/B,KAAK,MAAM,KAAK,IAAI,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;wBACpC,IAAI,CAAC;4BAAC,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAA,CAAC;oBACzC,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;oBAC9C,IAAI,CAAC;wBAAC,MAAM,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;gBACnD,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;gBAChC,IAAI,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAAE,OAAM;gBACrE,IAAI,CAAC;oBACH,MAAM,GAAG,CAAC,KAAK,CACb,uDAAuD;wBACvD,0CAA0C;wBAC1C,iDAAiD;wBACjD,gDAAgD;wBAChD,iDAAiD;wBACjD,gDAAgD;wBAChD,4CAA4C;wBAC5C,uDAAuD,CACxD,CAAA;gBACH,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YACZ,CAAC,CAAC,CAAA;YAEF,GAAG,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;gBAChF,IAAI,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAAE,OAAM;gBACrE,IAAI,CAAC;oBACH,MAAM,GAAG,CAAC,KAAK,CAAC,mCAAmC,CAAC,CAAA;gBACtD,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YACZ,CAAC,CAAC,CAAA;YAEF,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE;gBAC3B,IAAI,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;oBAAE,OAAM;gBACrE,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBACpC,IAAI,CAAC,SAAS,EAAE,CAAC;oBACf,IAAI,CAAC;wBAAC,MAAM,GAAG,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAA;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;oBAC9D,OAAM;gBACR,CAAC;gBACD,IAAI,OAAO,GAAQ,IAAI,CAAA;gBACvB,IAAI,CAAC;oBACH,OAAO,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;gBAClC,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,QAAQ,CAAC,uBAAuB,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;gBACnD,CAAC;gBACD,UAAU,CAAC,SAAS,EAAE,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;gBAClC,IAAI,CAAC;oBACH,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC;wBACtC,IAAI,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE;wBACvB,IAAI,EAAE;4BACJ,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,EAAE,gBAAgB,EAAE,IAAI,EAAE,EAAE,CAAC;yBACxF;wBACD,KAAK,EAAE,EAAE,SAAS,EAAE;qBACrB,CAAC,CAAA;oBACF,IAAI,GAAG,EAAE,KAAK,EAAE,CAAC;wBACf,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;wBAClD,IAAI,CAAC;4BAAC,MAAM,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;wBAAC,CAAC;wBAAC,MAAM,CAAC,CAAA,CAAC;oBACnD,CAAC;gBACH,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;oBAC5C,IAAI,CAAC;wBAAC,MAAM,GAAG,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAA;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;gBACnD,CAAC;gBACD,YAAY,CAAC,SAAS,CAAC,CAAA;gBACvB,IAAI,OAAO,EAAE,UAAU,EAAE,CAAC;oBACxB,IAAI,CAAC;wBAAC,MAAM,GAAG,CAAC,aAAa,CAAC,OAAO,CAAC,UAAU,CAAC,CAAA;oBAAC,CAAC;oBAAC,MAAM,CAAC,CAAA,CAAC;gBAC9D,CAAC;YACH,CAAC,CAAC,CAAA;YAEF,IAAI,iBAAiB,EAAE,CAAC;gBACtB,KAAK,MAAM,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;oBACxC,GAAG,CAAC,QAAQ,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,8BAA8B,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;gBAC1F,CAAC;YACH,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAA;YAC5B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;gBAC3C,QAAQ,CAAC,kBAAkB,EAAE,GAAG,CAAC,CAAA;gBACjC,WAAW,GAAG,KAAK,CAAA;gBACnB,QAAQ,GAAG,KAAK,CAAA;gBAChB,iBAAiB,EAAE,CAAA;gBACnB,OAAM;YACR,CAAC;YACD,QAAQ,GAAG,IAAI,CAAA;YACf,WAAW,GAAG,KAAK,CAAA;YACnB,GAAG,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;gBAC/B,iBAAiB,CAAC,GAAG,EAAE,YAAY,CAAC,CAAA;gBACpC,QAAQ,GAAG,KAAK,CAAA;gBAChB,IAAI,CAAC;oBAAC,MAAM,GAAG,EAAE,IAAI,EAAE,CAAA;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;gBAClC,iBAAiB,EAAE,CAAA;YACrB,CAAC,CAAC,CAAA;QACJ,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,iBAAiB,CAAC,GAAG,EAAE,UAAU,CAAC,CAAA;YAClC,WAAW,GAAG,KAAK,CAAA;YACnB,QAAQ,GAAG,KAAK,CAAA;YAChB,iBAAiB,EAAE,CAAA;QACrB,CAAC;IACH,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,EAAE,KAAK,CAAA;IACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAA;IAC/C,MAAM,SAAS,GAAG,cAAc,EAAE,CAAA;IAClC,MAAM,aAAa,GAAG,WAAW,IAAI,QAAQ,IAAI,SAAS,CAAA;IAC1D,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,QAAQ,CAAC,aAAa,CAAC,CAAA;IAC/B,CAAC;IAED,OAAO;QACL,KAAK,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE;YACnB,IAAI,CAAC,QAAQ;gBAAE,OAAM;YACrB,IAAI,CAAC;gBACH,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;oBACnC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAA;oBAC5C,IAAI,SAAS,EAAE,CAAC;wBACd,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAA;wBAClC,MAAM,GAAG,GAAG,iBAAiB,CAAC,GAAG,EAAE,eAAe,CAAC,CAAA;wBACnD,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC,CAAA;oBAC/B,CAAC;oBACD,OAAM;gBACR,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,gBAAgB,IAAI,KAAK,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBAC/E,MAAM,GAAG,GAAG,KAAK,CAAC,UAAU,CAAC,SAAS,CAAA;oBACtC,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;oBACxC,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;oBAC3E,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,CAAC;wBAAE,OAAM;oBACtC,IAAI,IAAI,CAAA;oBACR,IAAI,CAAC;wBACH,IAAI,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,GAAG,EAAE,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC,CAAA;oBAC7F,CAAC;oBAAC,MAAM,CAAC;wBAAC,OAAM;oBAAC,CAAC;oBAClB,IAAI,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,IAAI;wBAAE,OAAM;oBACpC,MAAM,IAAI,GAAG,CAAC,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,KAAK,WAAW,CAAC,CAAA;oBACnF,IAAI,CAAC,IAAI,IAAI,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,IAAI,CAAC,EAAE;wBAAE,OAAM;oBACrE,MAAM,CAAC,sBAAsB,EAAE,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;oBACjD,MAAM,IAAI,GAAI,IAAI,CAAC,KAAe;yBAC/B,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;yBACrD,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;yBACvB,IAAI,CAAC,IAAI,CAAC,CAAA;oBACb,IAAI,IAAI;wBAAE,WAAW,CAAC,KAAK,EAAE,IAAI,CAAC,CAAA;gBACpC,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,QAAQ,CAAC,gBAAgB,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;YAC5C,CAAC;QACH,CAAC;QAED,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACvC,IAAI,CAAC;gBACH,IAAI,CAAC,QAAQ,IAAI,CAAC,WAAW,EAAE,CAAC;oBAC9B,MAAM,WAAW,GAAG,MAAM,EAAE,KAAK,CAAA;oBACjC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAA;oBAC/C,MAAM,SAAS,GAAG,cAAc,EAAE,CAAA;oBAClC,MAAM,KAAK,GAAG,WAAW,IAAI,QAAQ,IAAI,SAAS,CAAA;oBAClD,IAAI,KAAK,EAAE,CAAC;wBACV,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAA;oBACvB,CAAC;gBACH,CAAC;gBACD,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;oBAAE,OAAM;gBACnD,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAc,EAAE,CAAC;oBACzC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM,IAAI,OAAO,IAAI,CAAC,IAAI,KAAK,QAAQ;wBAAE,SAAQ;oBAC5E,IAAI,IAAI,GAAG,IAAI,CAAC,IAAI,CAAA;oBACpB,IAAI,IAAI,CAAC,MAAM,GAAG,kBAAkB,EAAE,CAAC;wBACrC,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAA;oBAC1C,CAAC;oBAED,IAAI,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;wBACjC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;wBACnE,MAAM,GAAG,GAAG,OAAO,CAAC,WAAW,EAAE,CAAA;wBAEjC,IAAI,GAAG,KAAK,YAAY,IAAI,GAAG,KAAK,MAAM,EAAE,CAAC;4BAC3C,WAAW,GAAG,IAAI,CAAA;4BAClB,IAAI,cAAc,EAAE,CAAC;gCACnB,YAAY,CAAC,cAAc,CAAC,CAAA;gCAC5B,cAAc,GAAG,IAAI,CAAA;4BACvB,CAAC;4BACD,IAAI,CAAC;gCAAC,GAAG,EAAE,IAAI,EAAE,CAAA;4BAAC,CAAC;4BAAC,MAAM,CAAC,CAAA,CAAC;4BAC5B,QAAQ,GAAG,KAAK,CAAA;4BAChB,GAAG,GAAG,IAAI,CAAA;4BACV,WAAW,GAAG,KAAK,CAAA;4BACnB,UAAU,GAAG,IAAI,CAAA;4BACjB,eAAe,EAAE,CAAA;4BACjB,IAAI,CAAC,IAAI,GAAG,8CAA8C,CAAA;4BAC1D,OAAM;wBACR,CAAC;wBAED,IAAI,GAAG,KAAK,QAAQ,IAAI,GAAG,KAAK,EAAE,EAAE,CAAC;4BACnC,IAAI,QAAQ,EAAE,CAAC;gCACb,IAAI,CAAC,IAAI;oCACP,8BAA8B;wCAC9B,8CAA8C;wCAC9C,sDAAsD;wCACtD,qEAAqE,CAAA;4BACzE,CAAC;iCAAM,CAAC;gCACN,IAAI,CAAC,IAAI;oCACP,kCAAkC;wCAClC,uDAAuD;wCACvD,qEAAqE,CAAA;4BACzE,CAAC;4BACD,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAA;4BAChD,OAAM;wBACR,CAAC;wBAED,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,iCAAiC,CAAC,CAAA;wBACnE,IAAI,CAAC,UAAU,EAAE,CAAC;4BAChB,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAA;4BACvD,OAAM;wBACR,CAAC;wBACD,MAAM,KAAK,GAAG,UAAU,CAAC,CAAC,CAAC,CAAA;wBAC3B,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;4BACzB,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAA;4BACvD,OAAM;wBACR,CAAC;wBACD,SAAS,CAAC,KAAK,CAAC,CAAA;wBAChB,MAAM,QAAQ,CAAC,KAAK,CAAC,CAAA;wBACrB,IAAI,CAAC,IAAI,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,gBAAgB,EAAE,YAAY,CAAC,CAAA;wBACjF,OAAM;oBACR,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,QAAQ,CAAC,eAAe,EAAE,SAAS,CAAC,GAAG,CAAC,CAAC,CAAA;YAC3C,CAAC;QACH,CAAC;QAED,IAAI,EAAE;YACJ,aAAa,EAAE,IAAI,CAAC;gBAClB,WAAW,EAAE,kEAAkE;gBAC/E,IAAI,EAAE;oBACJ,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,cAAc,CAAC;oBACnD,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,yCAAyC,CAAC;iBAC/F;gBACD,KAAK,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,SAAS,EAAE,EAAE,GAAG;oBACpC,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;wBAClD,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,CAAA;oBACvC,CAAC;oBACD,IAAI,CAAC,QAAQ,EAAE,CAAC;wBACd,OAAO,EAAE,MAAM,EAAE,gCAAgC,EAAE,CAAA;oBACrD,CAAC;oBACD,IAAI,CAAC,GAAG,EAAE,SAAS,IAAI,CAAC,SAAS,EAAE,CAAC;wBAClC,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAA;oBAC1C,CAAC;oBACD,MAAM,QAAQ,GAAG,SAAS,IAAI,GAAG,CAAC,SAAS,CAAA;oBAC3C,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;wBACjC,OAAO,EAAE,MAAM,EAAE,qBAAqB,EAAE,CAAA;oBAC1C,CAAC;oBACD,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,CAAA;oBACxE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAA;oBAClD,OAAO,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,0BAA0B,CAAC,CAAC,CAAC,kBAAkB,EAAE,CAAA;gBACzE,CAAC;aACF,CAAC;SACH;QAED,KAAK,CAAC,OAAO;YACX,WAAW,GAAG,IAAI,CAAA;YAClB,IAAI,cAAc,EAAE,CAAC;gBACnB,YAAY,CAAC,cAAc,CAAC,CAAA;gBAC5B,cAAc,GAAG,IAAI,CAAA;YACvB,CAAC;YACD,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,eAAe,EAAE,CAAC;gBACxC,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAA;YAC3B,CAAC;YACD,eAAe,CAAC,KAAK,EAAE,CAAA;YACvB,sBAAsB,CAAC,KAAK,EAAE,CAAA;YAC9B,IAAI,CAAC;gBAAC,MAAM,GAAG,EAAE,IAAI,EAAE,CAAA;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;YAClC,QAAQ,GAAG,KAAK,CAAA;YAChB,WAAW,GAAG,KAAK,CAAA;YACnB,GAAG,GAAG,IAAI,CAAA;YACV,UAAU,GAAG,IAAI,CAAA;QACnB,CAAC;KACF,CAAA;AACH,CAAC,CAAA;AAED,eAAe;IACb,EAAE,EAAE,aAAa;IACjB,MAAM,EAAE,cAAc;CACvB,CAAA"}
package/dist/tui.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"AAOA,QAAA,MAAM,SAAS;;aAEE,GAAG;CAqCnB,CAAA;AAED,eAAe,SAAS,CAAA"}
1
+ {"version":3,"file":"tui.d.ts","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"AAmCA,QAAA,MAAM,SAAS;;aAEE,GAAG;CAqEnB,CAAA;AAED,eAAe,SAAS,CAAA"}
package/dist/tui.js CHANGED
@@ -1,45 +1,114 @@
1
- import { writeFileSync, mkdirSync } from "node:fs";
1
+ import { writeFileSync, mkdirSync, renameSync, chmodSync } from "node:fs";
2
2
  import { join } from "node:path";
3
3
  import { homedir } from "node:os";
4
4
  const CONFIG_DIR = join(homedir(), ".config", "opencode");
5
5
  const TOKEN_FILE = join(CONFIG_DIR, "telegram-token.json");
6
+ const TOKEN_TMP = TOKEN_FILE + ".tmp";
7
+ const FILE_MODE = 0o600;
8
+ const TOKEN_REGEX = /^\d{8,12}:[\w-]{30,50}$/;
9
+ const MAX_TOKEN_LEN = 100;
10
+ function sanitizeTUI(text, maxLen = 400) {
11
+ if (typeof text !== "string")
12
+ return "";
13
+ let cleaned = text.split("\n").filter((l) => !/^\s*at\s/.test(l)).join(" ").trim();
14
+ cleaned = cleaned.replace(/\s+/g, " ");
15
+ if (cleaned.length > maxLen)
16
+ cleaned = cleaned.slice(0, maxLen - 3) + "...";
17
+ return cleaned;
18
+ }
19
+ function safeChmod(p) {
20
+ try {
21
+ chmodSync(p, FILE_MODE);
22
+ }
23
+ catch { }
24
+ }
25
+ function saveTokenAtomic(token) {
26
+ mkdirSync(CONFIG_DIR, { recursive: true });
27
+ writeFileSync(TOKEN_TMP, JSON.stringify({ token }, null, 2));
28
+ safeChmod(TOKEN_TMP);
29
+ try {
30
+ renameSync(TOKEN_TMP, TOKEN_FILE);
31
+ }
32
+ catch {
33
+ writeFileSync(TOKEN_FILE, JSON.stringify({ token }, null, 2));
34
+ }
35
+ safeChmod(TOKEN_FILE);
36
+ }
6
37
  const TuiPlugin = {
7
38
  id: "virtualcode/tui",
8
39
  async tui(api) {
9
- api.keymap.registerLayer({
10
- commands: [
11
- {
12
- namespace: "palette",
13
- name: "telegram.setup",
14
- title: "/telegram",
15
- slashName: "telegram",
16
- desc: "Setup or change your Telegram bot token",
17
- category: "Telegram",
18
- run() {
19
- api.ui.dialog.replace(() => api.ui.DialogPrompt({
20
- title: "Telegram Setup",
21
- placeholder: "Paste your BotFather token here",
22
- onConfirm(token) {
23
- if (!token?.trim())
24
- return;
25
- mkdirSync(CONFIG_DIR, { recursive: true });
26
- writeFileSync(TOKEN_FILE, JSON.stringify({ token: token.trim() }, null, 2));
27
- api.ui.toast({
28
- title: "Telegram",
29
- message: "Token saved! Bot will connect on next message.",
30
- variant: "success",
31
- duration: 4000,
32
- });
33
- api.ui.dialog.clear();
34
- },
35
- onCancel() {
36
- api.ui.dialog.clear();
37
- },
38
- }));
40
+ if (!api?.keymap?.registerLayer) {
41
+ console.error("[telegram-tui] OpenCode TUI API missing keymap.registerLayer; plugin disabled");
42
+ return;
43
+ }
44
+ try {
45
+ api.keymap.registerLayer({
46
+ commands: [
47
+ {
48
+ namespace: "palette",
49
+ name: "telegram.setup",
50
+ title: "/telegram",
51
+ slashName: "telegram",
52
+ desc: "Setup or change your Telegram bot token",
53
+ category: "Telegram",
54
+ run() {
55
+ if (!api.ui?.dialog?.replace || !api.ui?.DialogPrompt) {
56
+ console.error("[telegram-tui] OpenCode TUI dialog API missing; cannot open setup");
57
+ return;
58
+ }
59
+ api.ui.dialog.replace(() => api.ui.DialogPrompt({
60
+ title: "Telegram Setup",
61
+ placeholder: "Paste your BotFather token here",
62
+ onConfirm(token) {
63
+ try {
64
+ if (typeof token !== "string")
65
+ return;
66
+ const trimmed = token.trim().slice(0, MAX_TOKEN_LEN);
67
+ if (!trimmed)
68
+ return;
69
+ if (!TOKEN_REGEX.test(trimmed)) {
70
+ if (api.ui?.toast) {
71
+ api.ui.toast({
72
+ title: "Telegram",
73
+ message: sanitizeTUI("Invalid token format. Expected: 1234567890:ABC-DEF..."),
74
+ variant: "error",
75
+ duration: 4000,
76
+ });
77
+ }
78
+ return;
79
+ }
80
+ saveTokenAtomic(trimmed);
81
+ if (api.ui?.toast) {
82
+ api.ui.toast({
83
+ title: "Telegram",
84
+ message: sanitizeTUI("Token saved! Bot will connect on next message."),
85
+ variant: "success",
86
+ duration: 4000,
87
+ });
88
+ }
89
+ if (api.ui?.dialog?.clear)
90
+ api.ui.dialog.clear();
91
+ }
92
+ catch (err) {
93
+ console.error("[telegram-tui] onConfirm failed:", err instanceof Error ? err.message : String(err));
94
+ }
95
+ },
96
+ onCancel() {
97
+ try {
98
+ if (api.ui?.dialog?.clear)
99
+ api.ui.dialog.clear();
100
+ }
101
+ catch { }
102
+ },
103
+ }));
104
+ },
39
105
  },
40
- },
41
- ],
42
- });
106
+ ],
107
+ });
108
+ }
109
+ catch (err) {
110
+ console.error("[telegram-tui] failed to register layer:", err instanceof Error ? err.message : String(err));
111
+ }
43
112
  },
44
113
  };
45
114
  export default TuiPlugin;
package/dist/tui.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"tui.js","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,SAAS,CAAA;AAClD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAChC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAA;AAEjC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,UAAU,CAAC,CAAA;AACzD,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAA;AAE1D,MAAM,SAAS,GAAG;IAChB,EAAE,EAAE,iBAAiB;IACrB,KAAK,CAAC,GAAG,CAAC,GAAQ;QAChB,GAAG,CAAC,MAAM,CAAC,aAAa,CAAC;YACvB,QAAQ,EAAE;gBACR;oBACE,SAAS,EAAE,SAAS;oBACpB,IAAI,EAAE,gBAAgB;oBACtB,KAAK,EAAE,WAAW;oBAClB,SAAS,EAAE,UAAU;oBACrB,IAAI,EAAE,yCAAyC;oBAC/C,QAAQ,EAAE,UAAU;oBACpB,GAAG;wBACD,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,CACzB,GAAG,CAAC,EAAE,CAAC,YAAY,CAAC;4BAClB,KAAK,EAAE,gBAAgB;4BACvB,WAAW,EAAE,iCAAiC;4BAC9C,SAAS,CAAC,KAAa;gCACrB,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE;oCAAE,OAAM;gCAC1B,SAAS,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;gCAC1C,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAA;gCAC3E,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC;oCACX,KAAK,EAAE,UAAU;oCACjB,OAAO,EAAE,gDAAgD;oCACzD,OAAO,EAAE,SAAS;oCAClB,QAAQ,EAAE,IAAI;iCACf,CAAC,CAAA;gCACF,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;4BACvB,CAAC;4BACD,QAAQ;gCACN,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,KAAK,EAAE,CAAA;4BACvB,CAAC;yBACF,CAAC,CACH,CAAA;oBACH,CAAC;iBACF;aACF;SACF,CAAC,CAAA;IACJ,CAAC;CACF,CAAA;AAED,eAAe,SAAS,CAAA"}
1
+ {"version":3,"file":"tui.js","sourceRoot":"","sources":["../src/tui.ts"],"names":[],"mappings":"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"}
package/install.js CHANGED
@@ -17,12 +17,56 @@ function findConfig(start, name) {
17
17
  return null
18
18
  }
19
19
 
20
- function addToConfig(filename) {
20
+ function stripJsonc(src) {
21
+ let out = ""
22
+ let i = 0
23
+ let inString = false
24
+ let stringChar = ""
25
+ while (i < src.length) {
26
+ const c = src[i]
27
+ const next = src[i + 1]
28
+ if (inString) {
29
+ out += c
30
+ if (c === "\\" && i + 1 < src.length) {
31
+ out += next
32
+ i += 2
33
+ continue
34
+ }
35
+ if (c === stringChar) inString = false
36
+ i++
37
+ continue
38
+ }
39
+ if (c === '"' || c === "'") {
40
+ inString = true
41
+ stringChar = c
42
+ out += c
43
+ i++
44
+ continue
45
+ }
46
+ if (c === "/" && next === "/") {
47
+ while (i < src.length && src[i] !== "\n") i++
48
+ continue
49
+ }
50
+ if (c === "/" && next === "*") {
51
+ i += 2
52
+ while (i < src.length && !(src[i] === "*" && src[i + 1] === "/")) i++
53
+ i += 2
54
+ continue
55
+ }
56
+ out += c
57
+ i++
58
+ }
59
+ return out
60
+ }
61
+
62
+ function addToConfig(filename, parser) {
21
63
  const path = findConfig(process.cwd(), filename) || join(XDG_CONFIG, filename)
64
+ let raw = ""
22
65
  let config = { plugin: [] }
23
66
  if (existsSync(path)) {
24
67
  try {
25
- config = JSON.parse(readFileSync(path, "utf-8"))
68
+ raw = readFileSync(path, "utf-8")
69
+ config = parser(raw)
26
70
  } catch {
27
71
  config = { plugin: [] }
28
72
  }
@@ -31,10 +75,29 @@ function addToConfig(filename) {
31
75
  if (config.plugin.includes("virtualcode")) return
32
76
  config.plugin.unshift("virtualcode")
33
77
  mkdirSync(dirname(path), { recursive: true })
34
- writeFileSync(path, JSON.stringify(config, null, 2) + "\n")
78
+ const serialized = JSON.stringify(config, null, 2)
79
+ if (raw && filename.endsWith("jsonc")) {
80
+ const lines = raw.split("\n")
81
+ const pluginLineIdx = lines.findIndex((l) => /^\s*"plugin"\s*:/.test(l))
82
+ if (pluginLineIdx !== -1) {
83
+ const indent = (lines[pluginLineIdx].match(/^\s*/) || [""])[0]
84
+ const newLines = serialized.split("\n")
85
+ const newPluginBlock = newLines.find((l) => /^\s*"plugin"\s*:/.test(l))
86
+ if (newPluginBlock) {
87
+ const entryIndent = indent + " "
88
+ const pluginEntries = config.plugin.map((p) => entryIndent + JSON.stringify(p))
89
+ const replacement = indent + '"plugin": [\n' + pluginEntries.join(",\n") + "\n" + indent + "]"
90
+ lines[pluginLineIdx] = replacement
91
+ writeFileSync(path, lines.join("\n") + "\n")
92
+ console.log("[virtualcode] Added to " + path + " (comments preserved)")
93
+ return
94
+ }
95
+ }
96
+ }
97
+ writeFileSync(path, serialized + "\n")
35
98
  console.log("[virtualcode] Added to " + path)
36
99
  }
37
100
 
38
- addToConfig("opencode.jsonc")
39
- addToConfig("opencode.json")
40
- addToConfig("tui.json")
101
+ addToConfig("opencode.jsonc", (raw) => JSON.parse(stripJsonc(raw)))
102
+ addToConfig("opencode.json", (raw) => JSON.parse(raw))
103
+ addToConfig("tui.json", (raw) => JSON.parse(raw))
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "virtualcode",
3
- "version": "2.0.0",
3
+ "version": "2.0.1",
4
4
  "description": "OpenCode plugin that bridges your terminal sessions with Telegram",
5
5
  "type": "module",
6
6
  "license": "MIT",