@mecha.im/cli 0.3.4 → 0.3.6

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.
package/Dockerfile CHANGED
@@ -32,7 +32,7 @@ RUN apk add --no-cache xz \
32
32
  && rm /tmp/s6-overlay-*.tar.xz
33
33
 
34
34
  # Minimal system deps (root) — only what requires root privileges
35
- RUN apk add --no-cache git bash curl libstdc++ python3 py3-pip
35
+ RUN apk add --no-cache git bash curl libstdc++ python3 py3-pip make g++
36
36
 
37
37
  # Create non-root user
38
38
  RUN adduser -D -u 10001 appuser
package/README.md CHANGED
@@ -6,7 +6,8 @@ An army of agents. Run autonomous Claude bots in Docker containers with scheduli
6
6
 
7
7
  ```bash
8
8
  # Install
9
- npm install -g mecha
9
+ npm install -g @mecha.im/cli
10
+ # Or run without installing: npx @mecha.im/cli
10
11
 
11
12
  # Initialize (builds Docker image)
12
13
  mecha init
@@ -0,0 +1,96 @@
1
+ # Mecha Telegram Adapter
2
+
3
+ Bridge Telegram messages to mecha bots with real-time status updates.
4
+
5
+ ## Setup
6
+
7
+ 1. Create a bot via [@BotFather](https://t.me/BotFather) and get the token
8
+ 2. Install and run:
9
+
10
+ ```bash
11
+ cd adapters/telegram
12
+ npm install
13
+
14
+ # Set environment variables via .env file or shell profile
15
+ # Never pass tokens directly on the command line (shell history exposure)
16
+ export TELEGRAM_BOT_TOKEN=<your-botfather-token>
17
+ export MECHA_DASHBOARD_TOKEN=<your-dashboard-token> # if dashboard auth is enabled
18
+
19
+ npm run start
20
+ ```
21
+
22
+ ## Usage
23
+
24
+ Send a message in Telegram — it goes to the default bot (orchestrator).
25
+
26
+ Use `@botname message` to route to a specific bot:
27
+
28
+ ```
29
+ @posca What do you know about Claude Code?
30
+ @reviewer Check this PR for issues
31
+ @orchestrator spawn a data-analyst bot with model sonnet
32
+ ```
33
+
34
+ ### Commands
35
+
36
+ - `/start` — show help and available bots
37
+ - `/bots` — list fleet bots with status
38
+ - `/status` — fleet health summary
39
+
40
+ ## Features
41
+
42
+ ### Real-time status updates
43
+
44
+ While the bot is thinking, you see live updates:
45
+
46
+ ```
47
+ 🧠 Thinking... (3s)
48
+ 📖 Reading files... (5s)
49
+ ⚡ Running command... (8s)
50
+ ✍️ Editing code... (12s)
51
+ ```
52
+
53
+ ### Markdown rendering
54
+
55
+ Bot responses are converted to Telegram HTML:
56
+ - **Bold**, *italic*, `code`, ~~strikethrough~~
57
+ - Code blocks with syntax highlighting
58
+ - Links, headers, blockquotes
59
+
60
+ ## Verify Setup
61
+
62
+ After starting, send `/start` in Telegram. You should see:
63
+ - The adapter name and default bot
64
+ - A list of available bots (or a warning if the daemon is unreachable)
65
+
66
+ Send a test message like `Hello!` and verify you get a response from the default bot.
67
+
68
+ ## Environment Variables
69
+
70
+ | Variable | Required | Default | Description |
71
+ |----------|----------|---------|-------------|
72
+ | `TELEGRAM_BOT_TOKEN` | Yes | — | From @BotFather |
73
+ | `MECHA_DASHBOARD_TOKEN` | No | — | Dashboard bearer token for authenticated daemon access |
74
+ | `MECHA_DEFAULT_BOT` | No | `orchestrator` | Default bot for messages without @mention |
75
+ | `MECHA_URL` | No | `http://localhost:7700` | Mecha daemon URL |
76
+ | `TELEGRAM_ALLOWED_USERS` | No | (all) | Comma-separated Telegram user IDs |
77
+
78
+ ## Security
79
+
80
+ Set `TELEGRAM_ALLOWED_USERS` to restrict who can use the bot:
81
+
82
+ ```bash
83
+ # Find your Telegram user ID by sending /start to @userinfobot
84
+ export TELEGRAM_ALLOWED_USERS=123456789,987654321
85
+ npm run start
86
+ ```
87
+
88
+ ## Troubleshooting
89
+
90
+ | Symptom | Likely Cause | Fix |
91
+ |---------|-------------|-----|
92
+ | "Cannot reach mecha daemon" | Daemon not running or wrong URL | Start daemon with `mecha daemon start`, check `MECHA_URL` |
93
+ | "Auth failed" on bot queries | Missing or wrong dashboard token | Set `MECHA_DASHBOARD_TOKEN` to match daemon config |
94
+ | "Bot X is busy" | Bot is processing another request | Wait for current request to finish, or use a different bot |
95
+ | "⛔ Not authorized" | Your Telegram user ID not in allowlist | Add your ID to `TELEGRAM_ALLOWED_USERS` |
96
+ | No response / timeout | Bot taking too long (5min limit) | Check bot logs with `mecha logs <botname>` |
@@ -0,0 +1,447 @@
1
+ /**
2
+ * Mecha Telegram Adapter
3
+ *
4
+ * Bridges Telegram messages to mecha bots with:
5
+ * - Real-time status updates (thinking, tool use, searching...)
6
+ * - @bot mentions to route to specific bots
7
+ * - Markdown/HTML rendering for Telegram
8
+ *
9
+ * Usage:
10
+ * npm run start (with .env or exported env vars)
11
+ *
12
+ * Environment:
13
+ * TELEGRAM_BOT_TOKEN — from @BotFather
14
+ * MECHA_DEFAULT_BOT — default bot to route messages to (default: orchestrator)
15
+ * MECHA_URL — mecha daemon URL (default: http://localhost:7700)
16
+ * MECHA_DASHBOARD_TOKEN — dashboard bearer token for API access
17
+ * TELEGRAM_ALLOWED_USERS — comma-separated Telegram user IDs (empty = allow all)
18
+ */
19
+
20
+ import { Bot } from "grammy";
21
+
22
+ // ── Config ──────────────────────────────────────────────────
23
+
24
+ const DEFAULT_BOT = process.env.MECHA_DEFAULT_BOT ?? "orchestrator";
25
+ const MECHA_URL = process.env.MECHA_URL ?? "http://localhost:7700";
26
+ const DASHBOARD_TOKEN = process.env.MECHA_DASHBOARD_TOKEN ?? "";
27
+ const STATUS_UPDATE_INTERVAL_MS = 2000;
28
+ const MAX_CONTENT_BYTES = 64 * 1024; // cap streaming accumulation at 64KB
29
+ const DAEMON_FETCH_TIMEOUT_MS = 10_000;
30
+
31
+ // Fix #4: strict numeric parsing — reject partial garbage like "123abc"
32
+ const ALLOWED_USERS = (process.env.TELEGRAM_ALLOWED_USERS ?? "")
33
+ .split(",")
34
+ .map(s => s.trim())
35
+ .filter(s => /^\d+$/.test(s))
36
+ .map(Number)
37
+ .filter(n => Number.isSafeInteger(n));
38
+
39
+ // ── Authenticated daemon fetch ──────────────────────────────
40
+
41
+ function mechaHeaders(): Record<string, string> {
42
+ const h: Record<string, string> = {};
43
+ if (DASHBOARD_TOKEN) h["Authorization"] = `Bearer ${DASHBOARD_TOKEN}`;
44
+ return h;
45
+ }
46
+
47
+ // ── Bot registry ────────────────────────────────────────────
48
+
49
+ interface BotInfo { name: string; status: string }
50
+ interface ListBotsResult { bots: BotInfo[]; error?: string }
51
+
52
+ // Fix #6: return error info instead of swallowing
53
+ async function listBots(): Promise<ListBotsResult> {
54
+ try {
55
+ const resp = await fetch(`${MECHA_URL}/api/bots`, {
56
+ headers: mechaHeaders(),
57
+ signal: AbortSignal.timeout(DAEMON_FETCH_TIMEOUT_MS),
58
+ });
59
+ if (resp.status === 401) return { bots: [], error: "Auth failed — set MECHA_DASHBOARD_TOKEN" };
60
+ if (!resp.ok) return { bots: [], error: `Daemon returned ${resp.status}` };
61
+ return { bots: await resp.json() as BotInfo[] };
62
+ } catch {
63
+ return { bots: [], error: "Cannot reach mecha daemon" };
64
+ }
65
+ }
66
+
67
+ // ── Status formatting ───────────────────────────────────────
68
+
69
+ const STATUS_ICONS: Record<string, string> = {
70
+ thinking: "🧠", searching: "🔍", reading: "📖", writing: "✍️",
71
+ editing: "📝", running: "⚡", calling: "📞", analyzing: "🔬",
72
+ generating: "✨", default: "💭",
73
+ };
74
+
75
+ function formatStatus(tool: string | null, elapsed: number): string {
76
+ if (!tool) return `${STATUS_ICONS.thinking} Thinking... (${elapsed}s)`;
77
+ const lower = tool.toLowerCase();
78
+ let icon = STATUS_ICONS.default;
79
+ let label = tool;
80
+
81
+ if (lower.includes("read") || lower.includes("grep") || lower.includes("glob")) { icon = STATUS_ICONS.reading; label = "Reading files"; }
82
+ else if (lower.includes("write") || lower.includes("edit")) { icon = STATUS_ICONS.editing; label = "Editing code"; }
83
+ else if (lower.includes("bash") || lower.includes("exec")) { icon = STATUS_ICONS.running; label = "Running command"; }
84
+ else if (lower.includes("search") || lower.includes("web")) { icon = STATUS_ICONS.searching; label = "Searching"; }
85
+ else if (lower.includes("agent") || lower.includes("task") || lower.includes("subtask")) { icon = STATUS_ICONS.calling; label = "Delegating to agent"; }
86
+ else if (lower.includes("think")) { icon = STATUS_ICONS.thinking; label = "Thinking"; }
87
+
88
+ return `${icon} ${label}... (${elapsed}s)`;
89
+ }
90
+
91
+ // ── Markdown to Telegram HTML ───────────────────────────────
92
+
93
+ function escapeHtml(s: string): string {
94
+ return s.replace(/&/g, "&amp;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
95
+ }
96
+
97
+ // Fix #1: escape URL for use inside HTML attribute (quotes + angle brackets + ampersand)
98
+ function escapeHtmlAttr(s: string): string {
99
+ return s.replace(/&/g, "&amp;").replace(/"/g, "&quot;").replace(/</g, "&lt;").replace(/>/g, "&gt;");
100
+ }
101
+
102
+ function mdToTelegramHtml(md: string): string {
103
+ const codeBlocks: string[] = [];
104
+ const inlineCodes: string[] = [];
105
+
106
+ let html = md.replace(/```(\w*)\n([\s\S]*?)```/g, (_m, lang, code) => {
107
+ const idx = codeBlocks.length;
108
+ const escaped = escapeHtml(code.trimEnd());
109
+ codeBlocks.push(lang ? `<pre><code class="language-${lang}">${escaped}</code></pre>` : `<pre>${escaped}</pre>`);
110
+ return `\x00CB${idx}\x00`;
111
+ });
112
+
113
+ html = html.replace(/`([^`]+)`/g, (_m, code) => {
114
+ const idx = inlineCodes.length;
115
+ inlineCodes.push(`<code>${escapeHtml(code)}</code>`);
116
+ return `\x00IC${idx}\x00`;
117
+ });
118
+
119
+ html = escapeHtml(html);
120
+ html = html.replace(/\*\*(.+?)\*\*/g, "<b>$1</b>");
121
+ html = html.replace(/(?<!\*)\*(?!\*)(.+?)(?<!\*)\*(?!\*)/g, "<i>$1</i>");
122
+ html = html.replace(/~~(.+?)~~/g, "<s>$1</s>");
123
+ html = html.replace(/\[([^\]]+)\]\(([^)]+)\)/g, (_m, text, url) => {
124
+ try {
125
+ const parsed = new URL(url);
126
+ if (parsed.protocol === "http:" || parsed.protocol === "https:") {
127
+ return `<a href="${escapeHtmlAttr(url)}">${text}</a>`;
128
+ }
129
+ } catch { /* invalid URL */ }
130
+ return `${text} (${url})`;
131
+ });
132
+ html = html.replace(/^#{1,6}\s+(.+)$/gm, "\n<b>$1</b>\n");
133
+ html = html.replace(/^---+$/gm, "—————————");
134
+ html = html.replace(/^&gt;\s?(.*)$/gm, "┃ <i>$1</i>");
135
+
136
+ html = html.replace(/\x00CB(\d+)\x00/g, (_m, idx) => codeBlocks[parseInt(idx)]);
137
+ html = html.replace(/\x00IC(\d+)\x00/g, (_m, idx) => inlineCodes[parseInt(idx)]);
138
+
139
+ return html.trim();
140
+ }
141
+
142
+ function truncateContent(content: string, maxLen: number): { text: string; truncated: boolean } {
143
+ if (content.length <= maxLen) return { text: content, truncated: false };
144
+ return { text: content.slice(0, maxLen) + "\n\n... (truncated)", truncated: true };
145
+ }
146
+
147
+ // ── Extract target bot from @mention ────────────────────────
148
+
149
+ // Fix #5: tighter regex — 1-40 chars, no trailing hyphen (matches mecha name rules)
150
+ function extractTarget(text: string): { bot: string; message: string } {
151
+ const match = text.match(/^@([a-z0-9](?:[a-z0-9-]{0,38}[a-z0-9])?)\s+([\s\S]+)/);
152
+ if (match) return { bot: match[1], message: match[2] };
153
+ return { bot: DEFAULT_BOT, message: text };
154
+ }
155
+
156
+ // ── Send prompt to bot via SSE ──────────────────────────────
157
+
158
+ interface PromptResult {
159
+ content: string;
160
+ cost?: number;
161
+ duration?: number;
162
+ sessionId?: string;
163
+ error?: string;
164
+ }
165
+
166
+ async function sendPrompt(
167
+ botName: string,
168
+ message: string,
169
+ onStatus: (status: string) => void,
170
+ ): Promise<PromptResult> {
171
+ const baseUrl = `${MECHA_URL}/bot/${encodeURIComponent(botName)}`;
172
+
173
+ const resp = await fetch(`${baseUrl}/prompt`, {
174
+ method: "POST",
175
+ headers: { "Content-Type": "application/json", ...mechaHeaders() },
176
+ body: JSON.stringify({ message }),
177
+ signal: AbortSignal.timeout(5 * 60 * 1000),
178
+ });
179
+
180
+ if (resp.status === 409) return { content: "", error: `Bot "${botName}" is busy.` };
181
+ if (resp.status === 401) return { content: "", error: "Auth failed. Set MECHA_DASHBOARD_TOKEN." };
182
+ if (!resp.ok) return { content: "", error: `Bot error: ${resp.status} ${resp.statusText}` };
183
+
184
+ const reader = resp.body?.getReader();
185
+ if (!reader) return { content: "", error: "No response body" };
186
+
187
+ const decoder = new TextDecoder();
188
+ let sseBuffer = "";
189
+ let content = "";
190
+ let contentCapped = false;
191
+ let cost: number | undefined;
192
+ let duration: number | undefined;
193
+ let sessionId: string | undefined;
194
+ let error: string | undefined;
195
+
196
+ function parseLine(line: string) {
197
+ if (!line.startsWith("data: ")) return;
198
+ try {
199
+ const data = JSON.parse(line.slice(6));
200
+ if (data.content) {
201
+ if (!contentCapped) {
202
+ const remaining = MAX_CONTENT_BYTES - content.length;
203
+ if (remaining <= 0) {
204
+ contentCapped = true;
205
+ } else {
206
+ content += data.content.length > remaining
207
+ ? data.content.slice(0, remaining)
208
+ : data.content;
209
+ if (content.length >= MAX_CONTENT_BYTES) contentCapped = true;
210
+ }
211
+ }
212
+ } else if (data.summary) onStatus(formatStatus(data.summary, 0));
213
+ else if (data.tool) onStatus(formatStatus(data.tool, 0));
214
+ else if (data.thinking) onStatus(formatStatus("thinking", 0));
215
+ else if (data.message && !data.task_id) error = data.message;
216
+ else if (data.cost_usd !== undefined) {
217
+ cost = data.cost_usd;
218
+ duration = data.duration_ms;
219
+ sessionId = data.session_id;
220
+ if (data.success === false) error = "Query failed";
221
+ }
222
+ } catch { /* non-JSON */ }
223
+ }
224
+
225
+ while (true) {
226
+ const { done, value } = await reader.read();
227
+ if (done) break;
228
+ sseBuffer += decoder.decode(value, { stream: true });
229
+ const lines = sseBuffer.split("\n");
230
+ sseBuffer = lines.pop() ?? "";
231
+ for (const line of lines) parseLine(line);
232
+ }
233
+
234
+ if (sseBuffer) parseLine(sseBuffer);
235
+
236
+ return { content, cost, duration, sessionId, error };
237
+ }
238
+
239
+ // ── Cleanup helper ──────────────────────────────────────────
240
+
241
+ // Fix #15: centralized interval cleanup
242
+ function clearIntervals(...ids: ReturnType<typeof setInterval>[]) {
243
+ for (const id of ids) clearInterval(id);
244
+ }
245
+
246
+ // ── Telegram bot setup ──────────────────────────────────────
247
+
248
+ // Fix #10: wrap startup in main() so helpers above can be tested in isolation
249
+ async function main() {
250
+ const TELEGRAM_TOKEN = process.env.TELEGRAM_BOT_TOKEN;
251
+ if (!TELEGRAM_TOKEN) {
252
+ console.error("Set TELEGRAM_BOT_TOKEN environment variable");
253
+ process.exit(1);
254
+ }
255
+
256
+ const bot = new Bot(TELEGRAM_TOKEN);
257
+
258
+ bot.catch((err: Error) => {
259
+ console.error("Telegram bot error:", err.message ?? err);
260
+ });
261
+
262
+ bot.use(async (ctx: { from?: { id: number }; reply: (msg: string) => Promise<unknown> }, next: () => Promise<void>) => {
263
+ if (ALLOWED_USERS.length > 0 && ctx.from && !ALLOWED_USERS.includes(ctx.from.id)) {
264
+ await ctx.reply("⛔ Not authorized.");
265
+ return;
266
+ }
267
+ await next();
268
+ });
269
+
270
+ // /start command
271
+ bot.command("start", async (ctx) => {
272
+ const { bots, error } = await listBots();
273
+ const botList = bots.length > 0
274
+ ? bots.map(b => `• <b>${escapeHtml(b.name)}</b> (${escapeHtml(b.status)})`).join("\n")
275
+ : error ? `⚠️ ${escapeHtml(error)}` : "No bots running";
276
+
277
+ await ctx.reply(
278
+ `🤖 <b>Mecha Telegram Adapter</b>\n\n` +
279
+ `Send a message to talk to <b>${escapeHtml(DEFAULT_BOT)}</b>.\n` +
280
+ `Use <code>@botname message</code> to talk to a specific bot.\n\n` +
281
+ `<b>Available bots:</b>\n${botList}\n\n` +
282
+ `<b>Commands:</b>\n` +
283
+ `• /bots — list available bots\n` +
284
+ `• /status — fleet status`,
285
+ { parse_mode: "HTML" },
286
+ );
287
+ });
288
+
289
+ // /bots command
290
+ bot.command("bots", async (ctx) => {
291
+ const { bots, error } = await listBots();
292
+ if (bots.length === 0) {
293
+ await ctx.reply(error ? `⚠️ ${error}` : "No bots found. Is the mecha daemon running?");
294
+ return;
295
+ }
296
+ const lines = bots.map(b => {
297
+ const icon = b.status === "running" ? "🟢" : "🔴";
298
+ return `${icon} <b>${escapeHtml(b.name)}</b> — ${escapeHtml(b.status)}`;
299
+ });
300
+ await ctx.reply(`<b>Fleet Bots</b>\n\n${lines.join("\n")}`, { parse_mode: "HTML" });
301
+ });
302
+
303
+ // /status command — Fix #7: timeout, Fix #9: safe parsing
304
+ bot.command("status", async (ctx) => {
305
+ try {
306
+ const resp = await fetch(`${MECHA_URL}/api/health`, {
307
+ signal: AbortSignal.timeout(DAEMON_FETCH_TIMEOUT_MS),
308
+ });
309
+ if (!resp.ok) throw new Error(`HTTP ${resp.status}`);
310
+ const health = await resp.json() as Record<string, unknown>;
311
+ const version = typeof health.version === "string" ? health.version : "unknown";
312
+ const uptime = typeof health.uptime === "number" ? Math.floor(health.uptime / 60) : 0;
313
+ const botStats = (typeof health.bots === "object" && health.bots !== null) ? health.bots as Record<string, unknown> : {};
314
+ const running = typeof botStats.running === "number" ? botStats.running : 0;
315
+ const stopped = typeof botStats.stopped === "number" ? botStats.stopped : 0;
316
+ await ctx.reply(
317
+ `<b>Fleet Status</b>\n\n` +
318
+ `Version: <code>${escapeHtml(version)}</code>\n` +
319
+ `Uptime: ${uptime}m\n` +
320
+ `Bots: 🟢 ${running} running, 🔴 ${stopped} stopped`,
321
+ { parse_mode: "HTML" },
322
+ );
323
+ } catch {
324
+ await ctx.reply("❌ Cannot reach mecha daemon.");
325
+ }
326
+ });
327
+
328
+ // Message handler — forward to bot (Fix #14: extracted helpers for readability)
329
+ bot.on("message:text", async (ctx) => {
330
+ const text = ctx.message.text;
331
+ if (!text) return;
332
+
333
+ const { bot: targetBot, message } = extractTarget(text);
334
+ const startTime = Date.now();
335
+
336
+ let statusMsg: { message_id: number } | null = null;
337
+ try {
338
+ statusMsg = await ctx.reply(
339
+ `${STATUS_ICONS.thinking} Sending to <b>${escapeHtml(targetBot)}</b>...`,
340
+ { parse_mode: "HTML" },
341
+ );
342
+ } catch {
343
+ return;
344
+ }
345
+
346
+ let currentStatus = formatStatus(null, 0);
347
+ let lastUpdate = Date.now();
348
+ const statusInterval = setInterval(async () => {
349
+ const elapsed = Math.floor((Date.now() - startTime) / 1000);
350
+ const newStatus = currentStatus.replace(/\(\d+s\)/, `(${elapsed}s)`);
351
+ if (Date.now() - lastUpdate >= STATUS_UPDATE_INTERVAL_MS) {
352
+ try {
353
+ await ctx.api.editMessageText(
354
+ ctx.chat.id, statusMsg!.message_id,
355
+ `🤖 <b>${escapeHtml(targetBot)}</b>\n${newStatus}`,
356
+ { parse_mode: "HTML" },
357
+ );
358
+ lastUpdate = Date.now();
359
+ } catch { /* rate limit or unchanged */ }
360
+ }
361
+ }, 1000);
362
+
363
+ const typingInterval = setInterval(() => {
364
+ ctx.api.sendChatAction(ctx.chat.id, "typing").catch(() => {});
365
+ }, 4000);
366
+ ctx.api.sendChatAction(ctx.chat.id, "typing").catch(() => {});
367
+
368
+ try {
369
+ const result = await sendPrompt(targetBot, message, (status) => { currentStatus = status; });
370
+ clearIntervals(statusInterval, typingInterval);
371
+
372
+ if (result.error) {
373
+ await sendErrorReply(ctx, statusMsg, targetBot, result.error);
374
+ return;
375
+ }
376
+
377
+ const elapsed = ((Date.now() - startTime) / 1000).toFixed(1);
378
+ const footer = [
379
+ result.cost !== undefined ? `$${result.cost.toFixed(4)}` : null,
380
+ `${elapsed}s`,
381
+ ].filter(Boolean).join(" · ");
382
+
383
+ const { text: truncated } = truncateContent(result.content, 3500);
384
+ const responseHtml = mdToTelegramHtml(truncated);
385
+ const fullMsg = `${responseHtml}\n\n<i>— ${escapeHtml(targetBot)} · ${footer}</i>`;
386
+
387
+ await sendResponseReply(ctx, statusMsg!, fullMsg, truncated + `\n\n— ${targetBot} · ${footer}`);
388
+ } catch (err) {
389
+ clearIntervals(statusInterval, typingInterval);
390
+ const errMsg = err instanceof Error ? err.message : String(err);
391
+ await sendErrorReply(ctx, statusMsg, "Error", errMsg);
392
+ }
393
+ });
394
+
395
+ console.log("Mecha Telegram Adapter starting...");
396
+ console.log(` Default bot: ${DEFAULT_BOT}`);
397
+ console.log(` Mecha URL: ${MECHA_URL}`);
398
+ console.log(` Auth: ${DASHBOARD_TOKEN ? "token configured" : "no token (set MECHA_DASHBOARD_TOKEN)"}`);
399
+ console.log(` Allowed users: ${ALLOWED_USERS.length > 0 ? ALLOWED_USERS.join(", ") : "all"}`);
400
+
401
+ bot.start({
402
+ onStart: () => console.log("Telegram bot running — send a message to get started"),
403
+ });
404
+ }
405
+
406
+ // Fix #14: extracted reply helpers to reduce handler complexity
407
+ async function sendErrorReply(
408
+ ctx: { api: { editMessageText: Function; deleteMessage: Function }; chat: { id: number }; reply: Function },
409
+ statusMsg: { message_id: number } | null,
410
+ label: string,
411
+ error: string,
412
+ ) {
413
+ const html = `❌ <b>${escapeHtml(label)}</b>: ${escapeHtml(error)}`;
414
+ if (statusMsg) {
415
+ try {
416
+ await ctx.api.editMessageText(ctx.chat.id, statusMsg.message_id, html, { parse_mode: "HTML" });
417
+ return;
418
+ } catch { /* fall through */ }
419
+ }
420
+ await ctx.reply(`❌ ${escapeHtml(error)}`).catch(() => {});
421
+ }
422
+
423
+ async function sendResponseReply(
424
+ ctx: { api: { editMessageText: Function; deleteMessage: Function }; chat: { id: number }; reply: Function },
425
+ statusMsg: { message_id: number },
426
+ htmlMsg: string,
427
+ plainFallback: string,
428
+ ) {
429
+ try {
430
+ await ctx.api.editMessageText(ctx.chat.id, statusMsg.message_id, htmlMsg, { parse_mode: "HTML" });
431
+ } catch {
432
+ try {
433
+ await ctx.reply(htmlMsg, { parse_mode: "HTML" });
434
+ await ctx.api.deleteMessage(ctx.chat.id, statusMsg.message_id).catch(() => {});
435
+ } catch {
436
+ await ctx.reply(plainFallback).catch(() => {});
437
+ await ctx.api.deleteMessage(ctx.chat.id, statusMsg.message_id).catch(() => {});
438
+ }
439
+ }
440
+ }
441
+
442
+ // Export pure helpers for testing
443
+ export { escapeHtml, escapeHtmlAttr, mdToTelegramHtml, truncateContent, extractTarget, formatStatus };
444
+
445
+ // Only run when executed directly (not when imported for testing)
446
+ const isDirectRun = !process.env.MECHA_TELEGRAM_TEST_MODE;
447
+ if (isDirectRun) main();
@@ -0,0 +1,19 @@
1
+ {
2
+ "name": "@mecha.im/telegram-adapter",
3
+ "version": "0.1.0",
4
+ "private": true,
5
+ "license": "MIT",
6
+ "description": "Telegram bot adapter for mecha — forward messages to bots, stream responses",
7
+ "type": "module",
8
+ "scripts": {
9
+ "start": "tsx index.ts",
10
+ "dev": "tsx watch index.ts"
11
+ },
12
+ "engines": {
13
+ "node": ">=22.0.0"
14
+ },
15
+ "dependencies": {
16
+ "grammy": "^1.35.0",
17
+ "tsx": "^4.19.0"
18
+ }
19
+ }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "mecha-bot-dashboard",
3
3
  "private": true,
4
- "version": "0.3.4",
4
+ "version": "0.3.6",
5
5
  "type": "module",
6
6
  "scripts": {
7
7
  "dev": "vite",
package/dist/src/cli.js CHANGED
@@ -26,11 +26,12 @@ import { registerScheduleCommand } from "./commands/schedule.js";
26
26
  import { registerWebhooksCommand } from "./commands/webhooks.js";
27
27
  import { registerCompletionCommand } from "./commands/completion.js";
28
28
  import { registerDaemonCommand } from "./commands/daemon.js";
29
+ import { registerAdapterCommand } from "./commands/adapter.js";
29
30
  const program = new Command();
30
31
  program
31
32
  .name("mecha")
32
33
  .description("An army of agents")
33
- .version("0.3.4");
34
+ .version("0.3.6");
34
35
  // --- init ---
35
36
  program
36
37
  .command("init")
@@ -487,6 +488,8 @@ program
487
488
  registerCompletionCommand(program);
488
489
  // --- daemon ---
489
490
  registerDaemonCommand(program);
491
+ // --- adapter ---
492
+ registerAdapterCommand(program);
490
493
  // --- version (enhanced) ---
491
494
  program
492
495
  .command("version")
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":";AAEA,OAAO,CAAC,EAAE,CAAC,oBAAoB,EAAE,CAAC,MAAM,EAAE,EAAE;IAC1C,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,MAAM,YAAY,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;IACjG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAClB,CAAC,CAAC,CAAC;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC/C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACjD,OAAO,EAAE,SAAS,EAAe,MAAM,yBAAyB,CAAC;AACjE,OAAO,EAAE,cAAc,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAClE,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAC/D,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,EAAE,cAAc,EAAE,UAAU,EAAE,cAAc,EAAE,eAAe,EAAE,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAChK,OAAO,EAAE,EAAE,EAAE,WAAW,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,IAAI,IAAI,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAClG,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAC;AAC1D,OAAO,EAAE,4BAA4B,EAAE,MAAM,8BAA8B,CAAC;AAC5E,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,uBAAuB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAC7D,OAAO,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAE/D,MAAM,OAAO,GAAG,IAAI,OAAO,EAAE,CAAC;AAE9B,OAAO;KACJ,IAAI,CAAC,OAAO,CAAC;KACb,WAAW,CAAC,mBAAmB,CAAC;KAChC,OAAO,CAAC,OAAO,CAAC,CAAC;AAEpB,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,MAAM,CAAC;KACf,WAAW,CAAC,6CAA6C,CAAC;KAC1D,MAAM,CAAC,aAAa,EAAE,iDAAiD,CAAC;KACxE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAE7C,sBAAsB;IACtB,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;IACzC,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAC5D,MAAM,KAAK,GAAG,CAAC,KAAa,EAAE,GAAW,EAAE,IAAc,EAAW,EAAE;QACpE,IAAI,CAAC;YAAC,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;QAChH,MAAM,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,GAAG,GAAG,KAAK,GAAG,EAAE,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;YAAC,OAAO,KAAK,CAAC;QAAC,CAAC;IAC1F,CAAC,CAAC;IACF,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC;IACtD,KAAK,CAAC,UAAU,GAAG,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,CAAC,CAAC;IAC3D,MAAM,MAAM,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,iBAAiB,IAAI,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;IACxF,IAAI,MAAM;QAAE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,oBAAoB,CAAC,CAAC,CAAC;;QAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,kBAAkB,GAAG,EAAE,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC,CAAC;IAE9H,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC,CAAC;QACzE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,cAAc,EAAE,CAAC;IACjB,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAE1C,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;QACnB,MAAM,cAAc,CAAC,YAAY,EAAE,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,WAAW,CAAC,uBAAuB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,mBAAmB,CAAC,CAAC,CAAC;IAE1C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC;IACrC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC,CAAC;IAC9E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,uDAAuD,CAAC,CAAC,CAAC;IAC7E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC,CAAC;AACrF,CAAC,CAAC,CAAC;AAEL,gBAAgB;AAChB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,eAAe,EAAE,6BAA6B,CAAC;KACtD,MAAM,CAAC,mBAAmB,EAAE,kCAAkC,CAAC;KAC/D,MAAM,CAAC,iBAAiB,EAAE,cAAc,EAAE,QAAQ,CAAC;KACnD,MAAM,CAAC,cAAc,EAAE,qBAAqB,CAAC;KAC7C,MAAM,CAAC,iBAAiB,EAAE,qBAAqB,CAAC;KAChD,MAAM,CAAC,KAAK,EAAE,UAA8B,EAAE,IAAI,EAAE,EAAE;IACrD,cAAc,EAAE,CAAC;IAEjB,IAAI,MAAM,CAAC;IACX,IAAI,OAAO,GAAuB,IAAI,CAAC,GAAG,CAAC;IAE3C,IAAI,UAAU,EAAE,CAAC;QACf,MAAM,OAAO,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC;QACpC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;YACzB,OAAO,CAAC,KAAK,CAAC,0BAA0B,OAAO,EAAE,CAAC,CAAC;YACnD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,GAAG,aAAa,CAAC,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;IACH,CAAC;SAAM,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QACpC,MAAM,GAAG,iBAAiB,CAAC;YACzB,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,IAAI,CAAC,KAAK;SAClB,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;QACpE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,OAAO,CAAC,KAAK,CAAC,kBAAkB,IAAI,CAAC,MAAM,qBAAqB,CAAC,CAAC;YAClE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACvC,CAAC;IAED,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;QACzC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;YAC3D,OAAO,CAAC,KAAK,CAAC,sCAAsC,MAAM,EAAE,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,MAAM,GAAG,EAAE,GAAG,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,CAAC;IAC5C,CAAC;IAED,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,YAAY,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,CACvG,MAAM,CAAC,KAAK,CAAC,MAAM,EAAE,OAAO,CAAC,CAC9B,CAAC;IACF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAChH,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,uBAAuB,MAAM,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC;IAClE,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,sBAAsB,MAAM,CAAC,IAAI,KAAK,CAAC,CAAC,CAAC;AAC9D,CAAC,CAAC,CAAC;AAEL,gBAAgB;AAChB,OAAO;KACJ,OAAO,CAAC,cAAc,CAAC;KACvB,WAAW,CAAC,gCAAgC,CAAC;KAC7C,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,EAAE;IAC7B,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IACzB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,mDAAmD,CAAC,CAAC;QAC/E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,WAAW,CAAC,YAAY,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;IACzE,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,2BAA2B,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;AAC/H,CAAC,CAAC,CAAC;AAEL,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,4CAA4C,CAAC;KACzD,MAAM,CAAC,OAAO,EAAE,uBAAuB,CAAC;KACxC,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,IAAI,EAAE,EAAE;IAC/C,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;QACzD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,YAAY,OAAO,CAAC,MAAM,YAAY,CAAC,CAAC;QACpD,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC;gBAAC,MAAM,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YAAC,CAAC;YACtE,OAAO,CAAC,EAAE,CAAC;gBAAC,QAAQ,EAAE,CAAC;gBAAC,OAAO,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAAC,CAAC;QAC/G,CAAC;QACD,IAAI,QAAQ,GAAG,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClC,OAAO;IACT,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAC9F,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,WAAW,CAAC,YAAY,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC;AAEL,kBAAkB;AAClB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,SAAS,EAAE,mCAAmC,CAAC;KACtD,MAAM,CAAC,OAAO,EAAE,0BAA0B,CAAC;KAC3C,MAAM,CAAC,KAAK,EAAE,IAAwB,EAAE,IAAI,EAAE,EAAE;IAC/C,IAAI,IAAI,CAAC,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;QACzD,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAAC,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAAC,OAAO;QAAC,CAAC;QACtE,OAAO,CAAC,GAAG,CAAC,cAAc,OAAO,CAAC,MAAM,YAAY,CAAC,CAAC;QACtD,IAAI,QAAQ,GAAG,CAAC,CAAC;QACjB,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,IAAI,CAAC;gBAAC,MAAM,GAAG,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;gBAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC;YAAC,CAAC;YAC7G,OAAO,CAAC,EAAE,CAAC;gBAAC,QAAQ,EAAE,CAAC;gBAAC,OAAO,CAAC,KAAK,CAAC,uBAAuB,CAAC,CAAC,IAAI,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YAAC,CAAC;QAClH,CAAC;QACD,IAAI,QAAQ,GAAG,CAAC;YAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClC,OAAO;IACT,CAAC;IACD,IAAI,CAAC,IAAI,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IACpG,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,WAAW,GAAG,MAAM,WAAW,CAAC,cAAc,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;IACjG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,0BAA0B,EAAE,CAAC,GAAG,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1G,CAAC,CAAC,CAAC;AAEL,aAAa;AACb,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,aAAa,EAAE,8BAA8B,CAAC;KACrD,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,IAAI,EAAE,EAAE;IACnC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;YAC5C,IAAI,GAAG,IAAI,GAAG,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC;gBACpC,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,kDAAkD,CAAC,CAAC;gBAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;QACH,CAAC;QAAC,MAAM,CAAC,CAAC,iCAAiC,CAAC,CAAC;IAC/C,CAAC;IACD,MAAM,WAAW,CAAC,YAAY,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAC;AACvD,CAAC,CAAC,CAAC;AAEL,aAAa;AACb,OAAO;KACJ,OAAO,CAAC,IAAI,CAAC;KACb,WAAW,CAAC,WAAW,CAAC;KACxB,MAAM,CAAC,QAAQ,EAAE,gBAAgB,CAAC;KAClC,MAAM,CAAC,aAAa,EAAE,uBAAuB,CAAC;KAC9C,MAAM,CAAC,mBAAmB,EAAE,oCAAoC,CAAC;KACjE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,MAAM,UAAU,GAAG,CAAC,QAAQ,CAAC,aAAa,IAAI,QAAQ,CAAC,iBAAiB,CAAC;QACvE,CAAC,CAAC,MAAM,eAAe,CAAC,IAAI,EAAE,QAAQ,CAAC,aAAa,EAAE,QAAQ,CAAC,iBAAiB,CAAC;QACjF,CAAC,CAAC,EAAE,CAAC;IACP,IAAI,OAAO,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,UAAU,CAAC,CAAC;IAEvC,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC;IAED,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,KAAK;YAAE,OAAO,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAC9F,IAAI,IAAI,CAAC,IAAI;YAAE,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACjC,OAAO;IACT,CAAC;IAED,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;QACf,KAAK,MAAM,CAAC,IAAI,OAAO;YAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7C,OAAO;IACT,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE;YAC3B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAC7B,OAAO;gBACL,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,SAAS;gBAC3B,MAAM,EAAE,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC;gBACjC,IAAI,EAAE,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC;aAClC,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3C,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IACtE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7B,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,CAAC,SAAS,CAAC,EAAE,cAAc,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC;IAC3I,CAAC,CAAC,CAAC;IACH,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEL,+BAA+B;AAC/B,OAAO;KACJ,OAAO,CAAC,wBAAwB,CAAC;KACjC,WAAW,CAAC,iCAAiC,CAAC;KAC9C,MAAM,CAAC,iBAAiB,EAAE,2CAA2C,CAAC;KACtE,MAAM,CAAC,mBAAmB,EAAE,wBAAwB,CAAC;KACrD,MAAM,CAAC,iBAAiB,EAAE,oBAAoB,CAAC;KAC/C,MAAM,CAAC,oBAAoB,EAAE,8BAA8B,CAAC;KAC5D,MAAM,CAAC,kBAAkB,EAAE,yCAAyC,CAAC;KACrE,MAAM,CAAC,gBAAgB,EAAE,mBAAmB,CAAC;KAC7C,MAAM,CAAC,qBAAqB,EAAE,2CAA2C,CAAC;KAC1E,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAe,EAAE,IAAI,EAAE,EAAE;IACpD,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC9B,MAAM,QAAQ,GAAG,QAAQ,EAAE,QAAQ,CAAC;IACpC,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,IAAI,CAAC,CAAC;IACnD,IAAI,CAAC,QAAQ,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,8BAA8B,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAE9F,IAAI,WAAW,GAAG,OAAO,CAAC;IAC1B,IAAI,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QACxB,WAAW,GAAG,GAAG,kBAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,OAAO,EAAE,CAAC;IACnE,CAAC;IAED,MAAM,IAAI,GAA4B,EAAE,OAAO,EAAE,WAAW,EAAE,CAAC;IAC/D,IAAI,IAAI,CAAC,KAAK;QAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC;IACxC,IAAI,IAAI,CAAC,MAAM;QAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3C,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,MAAM,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,uBAAuB,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAC9G,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IACrB,CAAC;IACD,IAAI,IAAI,CAAC,MAAM;QAAE,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC3C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,IAAI,CAAC,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5D,OAAO,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,MAAM,mCAAmC,CAAC,CAAC;YAClF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;QACD,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;IAC5B,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAAC,OAAO,CAAC,KAAK,CAAC,oBAAoB,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;YAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QAC1G,IAAI,CAAC,cAAc,GAAG,CAAC,CAAC;IAC1B,CAAC;IAED,MAAM,OAAO,GAA2B,EAAE,cAAc,EAAE,kBAAkB,EAAE,CAAC;IAC/E,IAAI,QAAQ;QAAE,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,QAAQ,EAAE,CAAC;IAC9D,MAAM,IAAI,GAAG,MAAM,KAAK,CAAC,GAAG,QAAQ,CAAC,OAAO,SAAS,EAAE;QACrD,MAAM,EAAE,MAAM;QACd,OAAO;QACP,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAC1B,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;KAC3C,CAAC,CAAC;IAEH,IAAI,IAAI,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,sCAAsC,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAChH,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,mBAAmB,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IAEtG,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;IACtC,IAAI,CAAC,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAAC,CAAC;IACpE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE;QAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;AAC3B,CAAC,CAAC,CAAC;AAEL,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,0BAA0B,CAAC;KACnC,WAAW,CAAC,wCAAwC,CAAC;KACrD,MAAM,CAAC,mBAAmB,EAAE,6BAA6B,CAAC;KAC1D,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,OAAiB,EAAE,IAAI,EAAE,EAAE;IACtD,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,GAAG,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IACpD,MAAM,WAAW,GAAG,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,GAAG,EAAE,WAAW,CAAC,CAAC;IACrE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACzB,CAAC,CAAC,CAAC;AAEL,sDAAsD;AACtD,OAAO;KACJ,OAAO,CAAC,KAAK,CAAC;KACd,WAAW,CAAC,gEAAgE,CAAC;KAC7E,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,EAAE,cAAc,EAAE,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC,CAAC;IAC1D,MAAM,cAAc,EAAE,CAAC;AACzB,CAAC,CAAC,CAAC;AAEL,eAAe;AACf,OAAO;KACJ,OAAO,CAAC,aAAa,CAAC;KACtB,WAAW,CAAC,eAAe,CAAC;KAC5B,MAAM,CAAC,cAAc,EAAE,mBAAmB,CAAC;KAC3C,MAAM,CAAC,KAAK,EAAE,IAAY,EAAE,IAAI,EAAE,EAAE;IACnC,gBAAgB,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,CAAC;AAChD,CAAC,CAAC,CAAC;AAEL,eAAe;AACf,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAE9B,iBAAiB;AACjB,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAE/B,mBAAmB;AACnB,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAEjC,gBAAgB;AAChB,oBAAoB,CAAC,OAAO,CAAC,CAAC;AAE9B,mBAAmB;AACnB,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAEjC,mBAAmB;AACnB,uBAAuB,CAAC,OAAO,CAAC,CAAC;AAEjC,gBAAgB;AAChB,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC;KAChB,WAAW,CAAC,8CAA8C,CAAC;KAC3D,MAAM,CAAC,GAAG,EAAE;IACX,MAAM,KAAK,GAAG,QAAQ,GAAG,WAAW,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACzD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AACrB,CAAC,CAAC,CAAC;AAEL,iBAAiB;AACjB,OAAO;KACJ,OAAO,CAAC,eAAe,CAAC;KACxB,WAAW,CAAC,kCAAkC,CAAC;KAC/C,MAAM,CAAC,KAAK,EAAE,IAAa,EAAE,EAAE;IAC9B,MAAM,QAAQ,GAAG,IAAI,CAAC,CAAC,CAAC,MAAM,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,MAAM,WAAW,EAAE,CAAC;IACpE,IAAI,QAAQ,GAAG,CAAC;QAAE,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEL,0DAA0D;AAC1D,OAAO;KACJ,OAAO,CAAC,WAAW,CAAC;KACpB,WAAW,CAAC,2DAA2D,CAAC;KACxE,MAAM,CAAC,eAAe,EAAE,gBAAgB,EAAE,MAAM,CAAC;KACjD,MAAM,CAAC,eAAe,EAAE,cAAc,EAAE,WAAW,CAAC;KACpD,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,IAAI,GAAG,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAClC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,4BAA4B,IAAI,CAAC,IAAI,qBAAqB,CAAC,CAAC;QAC1E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,eAAe;IACf,MAAM,GAAG,GAAG,UAAU,IAAI,CAAC,IAAI,KAAK,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,EAAE,CAAC;IAClF,IAAI,OAAO,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;QAClC,QAAQ,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACpC,CAAC;SAAM,IAAI,OAAO,CAAC,QAAQ,KAAK,OAAO,EAAE,CAAC;QACxC,QAAQ,CAAC,UAAU,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IACxC,CAAC;IACD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,CAAC;IACpD,MAAM,WAAW,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAC3C,CAAC,CAAC,CAAC;AAEL,yBAAyB;AACzB,4BAA4B,CAAC,OAAO,CAAC,CAAC;AAEtC,kBAAkB;AAClB,OAAO;KACJ,OAAO,CAAC,gBAAgB,CAAC;KACzB,WAAW,CAAC,+DAA+D,CAAC;KAC5E,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;IACrB,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,CAAC;IAC9C,MAAM,EAAE,eAAe,EAAE,eAAe,EAAE,GAAG,MAAM,MAAM,CAAC,mBAAmB,CAAC,CAAC;IAC/E,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,yBAAyB,CAAC,CAAC;IAChE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,KAAK,CAAC,sBAAsB,IAAI,GAAG,CAAC,CAAC;QAC7C,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QACjB,OAAO,CAAC,KAAK,CAAC,QAAQ,IAAI,oDAAoD,CAAC,CAAC;QAChF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC5B,MAAM,MAAM,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;IACjD,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,MAAM,iBAAiB,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;IACxE,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,MAAM,CAAC,CAAC;IACjD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpB,OAAO,CAAC,GAAG,CAAC,qEAAqE,CAAC,CAAC;IACnF,OAAO,CAAC,GAAG,CAAC,aAAa,MAAM,eAAe,CAAC,CAAC;AAClD,CAAC,CAAC,CAAC;AAEL,qBAAqB;AACrB,yBAAyB,CAAC,OAAO,CAAC,CAAC;AAEnC,iBAAiB;AACjB,qBAAqB,CAAC,OAAO,CAAC,CAAC;AAE/B,kBAAkB;AAClB,sBAAsB,CAAC,OAAO,CAAC,CAAC;AAEhC,6BAA6B;AAC7B,OAAO;KACJ,OAAO,CAAC,SAAS,CAAC;KAClB,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,KAAK,IAAI,EAAE;IACjB,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,CAAC;IAC5D,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,IAAc,EAAU,EAAE;QAClD,IAAI,CAAC;YAAC,OAAO,YAAY,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,QAAQ,EAAE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC;QAAC,CAAC;QACnG,MAAM,CAAC;YAAC,OAAO,EAAE,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAAC,CAAC;IAC3C,CAAC,CAAC;IACF,MAAM,EAAE,YAAY,EAAE,GAAG,MAAM,MAAM,CAAC,SAAS,CAAC,CAAC;IACjD,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,MAAM,MAAM,CAAC,WAAW,CAAC,CAAC;IACpD,MAAM,EAAE,aAAa,EAAE,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;IACnD,IAAI,OAAO,GAAG,SAAS,CAAC;IACxB,IAAI,CAAC;QAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,cAAc,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;IAChJ,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,OAAO,EAAE,CAAC,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9D,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,CAAC,OAAO,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;IAC1E,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;IAC3E,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAW,GAAG,CAAC,QAAQ,EAAE,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC,CAAC;AAC7E,CAAC,CAAC,CAAC;AAEL,yBAAyB;AACzB,KAAK,UAAU,IAAI;IACjB,IAAI,CAAC;QACH,MAAM,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,GAAG,YAAY,UAAU,EAAE,CAAC;YAC9B,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,CAAC,QAAQ,CAAC,GAAG,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;YACpD,IAAI,GAAG,CAAC,IAAI;gBAAE,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC;YAC/C,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7B,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED,IAAI,EAAE,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Command } from "commander";
2
+ export declare function registerAdapterCommand(program: Command): void;
3
+ //# sourceMappingURL=adapter.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.d.ts","sourceRoot":"","sources":["../../../src/commands/adapter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA0EzC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA4G7D"}
@@ -0,0 +1,164 @@
1
+ import { existsSync, readdirSync, readFileSync } from "node:fs";
2
+ import { join, dirname } from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ import { pc, success } from "../cli-output.js";
5
+ import { getMechaDir } from "../store.js";
6
+ const __dirname = dirname(fileURLToPath(import.meta.url));
7
+ /** Resolve the package root (where adapters/ lives) */
8
+ function packageRoot() {
9
+ // src/commands/adapter.ts → ../../ → package root
10
+ // dist/src/commands/adapter.js → ../../../ → package root
11
+ return join(__dirname, "..", "..", "..");
12
+ }
13
+ /** Find all available adapters from built-in + user directories */
14
+ function discoverAdapters() {
15
+ const adapters = [];
16
+ // Built-in adapters (ship with npm package)
17
+ const builtinDir = join(packageRoot(), "adapters");
18
+ if (existsSync(builtinDir)) {
19
+ for (const entry of readdirSync(builtinDir, { withFileTypes: true })) {
20
+ if (!entry.isDirectory())
21
+ continue;
22
+ const adapterPath = join(builtinDir, entry.name);
23
+ const pkg = readPkg(adapterPath);
24
+ adapters.push({
25
+ name: entry.name,
26
+ description: pkg?.description ?? "",
27
+ builtin: true,
28
+ path: adapterPath,
29
+ });
30
+ }
31
+ }
32
+ // User adapters: <mecha-dir>/adapters/
33
+ const userDir = join(getMechaDir(), "adapters");
34
+ if (existsSync(userDir)) {
35
+ for (const entry of readdirSync(userDir, { withFileTypes: true })) {
36
+ if (!entry.isDirectory())
37
+ continue;
38
+ // User adapters override built-in with same name
39
+ if (adapters.some(a => a.name === entry.name))
40
+ continue;
41
+ const adapterPath = join(userDir, entry.name);
42
+ const pkg = readPkg(adapterPath);
43
+ adapters.push({
44
+ name: entry.name,
45
+ description: pkg?.description ?? "",
46
+ builtin: false,
47
+ path: adapterPath,
48
+ });
49
+ }
50
+ }
51
+ return adapters;
52
+ }
53
+ function readPkg(dir) {
54
+ try {
55
+ return JSON.parse(readFileSync(join(dir, "package.json"), "utf-8"));
56
+ }
57
+ catch {
58
+ return null;
59
+ }
60
+ }
61
+ function resolveAdapter(name) {
62
+ return discoverAdapters().find(a => a.name === name) ?? null;
63
+ }
64
+ export function registerAdapterCommand(program) {
65
+ const adapter = program
66
+ .command("adapter")
67
+ .description("Manage and run protocol adapters (Telegram, etc.)");
68
+ adapter
69
+ .command("list")
70
+ .alias("ls")
71
+ .description("List available adapters")
72
+ .action(() => {
73
+ const adapters = discoverAdapters();
74
+ if (adapters.length === 0) {
75
+ console.log("No adapters found.");
76
+ return;
77
+ }
78
+ console.log(pc.bold("\nAvailable Adapters\n"));
79
+ for (const a of adapters) {
80
+ const tag = a.builtin ? pc.dim("(built-in)") : pc.dim("(user)");
81
+ console.log(` ${pc.green(a.name)} ${tag}`);
82
+ if (a.description)
83
+ console.log(` ${pc.dim(a.description)}`);
84
+ }
85
+ console.log();
86
+ });
87
+ adapter
88
+ .command("start <name>")
89
+ .description("Start an adapter")
90
+ .option("--bot <bot>", "Default bot to route messages to")
91
+ .option("--env <vars...>", "Extra environment variables (KEY=VALUE)")
92
+ .option("--background", "Run in background (detached)")
93
+ .action(async (name, opts) => {
94
+ const info = resolveAdapter(name);
95
+ if (!info) {
96
+ console.error(`Adapter "${name}" not found. Run ${pc.cyan("mecha adapter list")} to see available adapters.`);
97
+ process.exit(1);
98
+ }
99
+ // Auto-install deps if node_modules missing
100
+ const nmPath = join(info.path, "node_modules");
101
+ if (!existsSync(nmPath)) {
102
+ console.log(`Installing ${name} adapter dependencies...`);
103
+ const { execFileSync } = await import("node:child_process");
104
+ execFileSync("npm", ["install", "--production"], { cwd: info.path, stdio: "inherit" });
105
+ }
106
+ // Build environment — auto-inject mecha connection info
107
+ const env = { ...process.env };
108
+ // Auto-detect daemon URL
109
+ if (!env.MECHA_URL) {
110
+ const { getDaemonUrl } = await import("../daemon.js");
111
+ const url = getDaemonUrl();
112
+ if (url)
113
+ env.MECHA_URL = url;
114
+ }
115
+ // Dashboard token comes from env (MECHA_DASHBOARD_TOKEN) or --env flag
116
+ // --bot flag → MECHA_DEFAULT_BOT
117
+ if (opts.bot)
118
+ env.MECHA_DEFAULT_BOT = opts.bot;
119
+ // Extra --env vars
120
+ if (opts.env) {
121
+ for (const kv of opts.env) {
122
+ const eq = kv.indexOf("=");
123
+ if (eq > 0)
124
+ env[kv.slice(0, eq)] = kv.slice(eq + 1);
125
+ }
126
+ }
127
+ const pkg = readPkg(info.path);
128
+ const startScript = pkg?.scripts?.start;
129
+ if (!startScript) {
130
+ console.error(`Adapter "${name}" has no start script in package.json.`);
131
+ process.exit(1);
132
+ }
133
+ console.log(success(`Starting ${name} adapter...`));
134
+ if (env.MECHA_URL)
135
+ console.log(` ${pc.dim("Daemon:")} ${env.MECHA_URL}`);
136
+ if (env.MECHA_DEFAULT_BOT)
137
+ console.log(` ${pc.dim("Default bot:")} ${env.MECHA_DEFAULT_BOT}`);
138
+ const { spawn } = await import("node:child_process");
139
+ if (opts.background) {
140
+ const child = spawn("npm", ["run", "start"], {
141
+ cwd: info.path,
142
+ env,
143
+ detached: true,
144
+ stdio: "ignore",
145
+ });
146
+ child.unref();
147
+ console.log(` ${pc.dim("PID:")} ${child.pid} (background)`);
148
+ return;
149
+ }
150
+ // Foreground — inherit stdio, forward signals
151
+ const child = spawn("npm", ["run", "start"], {
152
+ cwd: info.path,
153
+ env,
154
+ stdio: "inherit",
155
+ });
156
+ const cleanup = () => { child.kill("SIGTERM"); };
157
+ process.on("SIGINT", cleanup);
158
+ process.on("SIGTERM", cleanup);
159
+ child.on("exit", (code) => {
160
+ process.exit(code ?? 1);
161
+ });
162
+ });
163
+ }
164
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../src/commands/adapter.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mecha.im/cli",
3
- "version": "0.3.4",
3
+ "version": "0.3.6",
4
4
  "description": "An army of agents — run autonomous Claude bots in Docker containers",
5
5
  "type": "module",
6
6
  "bin": {
@@ -21,6 +21,9 @@
21
21
  "agent/dashboard/src/",
22
22
  "agent/dashboard/tsconfig.json",
23
23
  "agent/dashboard/index.html",
24
+ "adapters/*/index.ts",
25
+ "adapters/*/package.json",
26
+ "adapters/*/README.md",
24
27
  "s6/",
25
28
  "Dockerfile",
26
29
  "tsconfig.json",