aura-code 0.3.7 → 0.6.3

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.
Files changed (160) hide show
  1. package/README.md +56 -4
  2. package/dist/agent/compactor.d.ts +26 -0
  3. package/dist/agent/compactor.js +156 -0
  4. package/dist/agent/compactor.js.map +1 -0
  5. package/dist/agent/context.d.ts +4 -0
  6. package/dist/agent/context.js +38 -0
  7. package/dist/agent/context.js.map +1 -1
  8. package/dist/agent/design.d.ts +17 -0
  9. package/dist/agent/design.js +175 -0
  10. package/dist/agent/design.js.map +1 -0
  11. package/dist/agent/loop.js +24 -1
  12. package/dist/agent/loop.js.map +1 -1
  13. package/dist/agent/system-prompt.d.ts +1 -1
  14. package/dist/agent/system-prompt.js +14 -3
  15. package/dist/agent/system-prompt.js.map +1 -1
  16. package/dist/cli/display.js +46 -5
  17. package/dist/cli/display.js.map +1 -1
  18. package/dist/cli/index.js +323 -46
  19. package/dist/cli/index.js.map +1 -1
  20. package/dist/config/defaults.js +8 -1
  21. package/dist/config/defaults.js.map +1 -1
  22. package/dist/config/project-config.d.ts +6 -0
  23. package/dist/config/project-config.js +2 -0
  24. package/dist/config/project-config.js.map +1 -1
  25. package/dist/dream/dream.d.ts +71 -0
  26. package/dist/dream/dream.js +217 -0
  27. package/dist/dream/dream.js.map +1 -0
  28. package/dist/dream/okf.d.ts +10 -0
  29. package/dist/dream/okf.js +280 -0
  30. package/dist/dream/okf.js.map +1 -0
  31. package/dist/dream/parser.d.ts +60 -0
  32. package/dist/dream/parser.js +176 -0
  33. package/dist/dream/parser.js.map +1 -0
  34. package/dist/dream/reconcile.d.ts +69 -0
  35. package/dist/dream/reconcile.js +303 -0
  36. package/dist/dream/reconcile.js.map +1 -0
  37. package/dist/kanban/index.d.ts +5 -0
  38. package/dist/kanban/index.js +11 -0
  39. package/dist/kanban/index.js.map +1 -0
  40. package/dist/kanban/pipeline.d.ts +16 -0
  41. package/dist/kanban/pipeline.js +910 -0
  42. package/dist/kanban/pipeline.js.map +1 -0
  43. package/dist/kanban/server.d.ts +5 -0
  44. package/dist/kanban/server.js +820 -0
  45. package/dist/kanban/server.js.map +1 -0
  46. package/dist/kanban/types.d.ts +75 -0
  47. package/dist/kanban/types.js +6 -0
  48. package/dist/kanban/types.js.map +1 -0
  49. package/dist/learnlight/driven.d.ts +2 -0
  50. package/dist/learnlight/driven.js +109 -0
  51. package/dist/learnlight/driven.js.map +1 -0
  52. package/dist/learnlight/index.d.ts +4 -0
  53. package/dist/learnlight/index.js +32 -0
  54. package/dist/learnlight/index.js.map +1 -0
  55. package/dist/learnlight/lesson-prep.d.ts +36 -0
  56. package/dist/learnlight/lesson-prep.js +224 -0
  57. package/dist/learnlight/lesson-prep.js.map +1 -0
  58. package/dist/learnlight/report.d.ts +2 -0
  59. package/dist/learnlight/report.js +37 -0
  60. package/dist/learnlight/report.js.map +1 -0
  61. package/dist/learnlight/types.d.ts +72 -0
  62. package/dist/learnlight/types.js +6 -0
  63. package/dist/learnlight/types.js.map +1 -0
  64. package/dist/machina/index.d.ts +16 -0
  65. package/dist/machina/index.js +61 -0
  66. package/dist/machina/index.js.map +1 -0
  67. package/dist/machina/render-html.d.ts +2 -0
  68. package/dist/machina/render-html.js +189 -0
  69. package/dist/machina/render-html.js.map +1 -0
  70. package/dist/machina/render-terminal.d.ts +2 -0
  71. package/dist/machina/render-terminal.js +92 -0
  72. package/dist/machina/render-terminal.js.map +1 -0
  73. package/dist/machina/spec.d.ts +61 -0
  74. package/dist/machina/spec.js +124 -0
  75. package/dist/machina/spec.js.map +1 -0
  76. package/dist/machina/verify.d.ts +27 -0
  77. package/dist/machina/verify.js +85 -0
  78. package/dist/machina/verify.js.map +1 -0
  79. package/dist/perception/graph-store.d.ts +11 -0
  80. package/dist/perception/graph-store.js +33 -0
  81. package/dist/perception/graph-store.js.map +1 -1
  82. package/dist/perception/index.d.ts +1 -1
  83. package/dist/perception/index.js +2 -1
  84. package/dist/perception/index.js.map +1 -1
  85. package/dist/providers/anthropic.js +1 -1
  86. package/dist/providers/anthropic.js.map +1 -1
  87. package/dist/providers/factory.d.ts +49 -0
  88. package/dist/providers/factory.js +99 -0
  89. package/dist/providers/factory.js.map +1 -1
  90. package/dist/providers/google.js +1 -1
  91. package/dist/providers/google.js.map +1 -1
  92. package/dist/providers/openai-compatible.js +81 -50
  93. package/dist/providers/openai-compatible.js.map +1 -1
  94. package/dist/rem/graph.d.ts +72 -0
  95. package/dist/rem/graph.js +139 -0
  96. package/dist/rem/graph.js.map +1 -0
  97. package/dist/rem/index.d.ts +16 -0
  98. package/dist/rem/index.js +60 -0
  99. package/dist/rem/index.js.map +1 -0
  100. package/dist/rem/render-html.d.ts +2 -0
  101. package/dist/rem/render-html.js +189 -0
  102. package/dist/rem/render-html.js.map +1 -0
  103. package/dist/rem/render-terminal.d.ts +4 -0
  104. package/dist/rem/render-terminal.js +94 -0
  105. package/dist/rem/render-terminal.js.map +1 -0
  106. package/dist/research/council.d.ts +27 -0
  107. package/dist/research/council.js +263 -0
  108. package/dist/research/council.js.map +1 -0
  109. package/dist/research/research.d.ts +24 -0
  110. package/dist/research/research.js +116 -0
  111. package/dist/research/research.js.map +1 -0
  112. package/dist/ruby/alternator.d.ts +36 -1
  113. package/dist/ruby/alternator.js +40 -31
  114. package/dist/ruby/alternator.js.map +1 -1
  115. package/dist/ruby/stats.js +10 -11
  116. package/dist/ruby/stats.js.map +1 -1
  117. package/dist/ruby/types.js +1 -1
  118. package/dist/ruby/types.js.map +1 -1
  119. package/dist/safety/permissions.d.ts +8 -0
  120. package/dist/safety/permissions.js +12 -0
  121. package/dist/safety/permissions.js.map +1 -1
  122. package/dist/setup/provider-registry.js +14 -0
  123. package/dist/setup/provider-registry.js.map +1 -1
  124. package/dist/setup/provider-test.js +24 -2
  125. package/dist/setup/provider-test.js.map +1 -1
  126. package/dist/setup/telegram-wizard.d.ts +57 -0
  127. package/dist/setup/telegram-wizard.js +343 -0
  128. package/dist/setup/telegram-wizard.js.map +1 -0
  129. package/dist/tools/audio-transcribe.d.ts +20 -0
  130. package/dist/tools/audio-transcribe.js +39 -28
  131. package/dist/tools/audio-transcribe.js.map +1 -1
  132. package/dist/tools/browser.js +8 -10
  133. package/dist/tools/browser.js.map +1 -1
  134. package/dist/tools/gmail-tool.d.ts +15 -0
  135. package/dist/tools/gmail-tool.js +361 -0
  136. package/dist/tools/gmail-tool.js.map +1 -0
  137. package/dist/tools/read-file.js +13 -0
  138. package/dist/tools/read-file.js.map +1 -1
  139. package/dist/tools/telegram-bot.js +103 -20
  140. package/dist/tools/telegram-bot.js.map +1 -1
  141. package/dist/tools/telegram-voice.d.ts +22 -0
  142. package/dist/tools/telegram-voice.js +203 -0
  143. package/dist/tools/telegram-voice.js.map +1 -0
  144. package/dist/tools/telegram.d.ts +6 -1
  145. package/dist/tools/telegram.js +115 -5
  146. package/dist/tools/telegram.js.map +1 -1
  147. package/dist/tools/video-render.d.ts +11 -0
  148. package/dist/tools/video-render.js +189 -0
  149. package/dist/tools/video-render.js.map +1 -0
  150. package/dist/tools/web-search.d.ts +20 -0
  151. package/dist/tools/web-search.js +134 -38
  152. package/dist/tools/web-search.js.map +1 -1
  153. package/dist/util/errors.js +6 -0
  154. package/dist/util/errors.js.map +1 -1
  155. package/dist/viz/index.js +816 -30
  156. package/dist/viz/index.js.map +1 -1
  157. package/dist/viz/reader.d.ts +33 -0
  158. package/dist/viz/reader.js +343 -0
  159. package/dist/viz/reader.js.map +1 -0
  160. package/package.json +3 -1
@@ -1 +1 @@
1
- {"version":3,"file":"provider-test.js","sourceRoot":"","sources":["../../src/setup/provider-test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-test.js","sourceRoot":"","sources":["../../src/setup/provider-test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,57 @@
1
+ /**
2
+ * Telegram Bot Wizard — interactive setup for the Aura Telegram bot.
3
+ *
4
+ * Mirrors provider-wizard.ts's style and structure (numbered choices,
5
+ * keep/replace for existing values, a real connection test before saving),
6
+ * with one addition that came directly out of real deployment pain: it can
7
+ * generate a working systemd user-service file, since that — not picking a
8
+ * model — turned out to be the actual hard part in practice.
9
+ *
10
+ * Steps:
11
+ * 1. Bot token (from @BotFather — the one step nothing can automate)
12
+ * 2. Verify the token against Telegram's real API
13
+ * 3. Authorized user IDs (the bot refuses to start with none)
14
+ * 4. Task model — reuse an existing :provider setup, or configure fresh
15
+ * 5. Voice support (optional) — Groq API key for transcription + TTS
16
+ * 6. Optionally generate ~/.config/systemd/user/aura-telegram.service
17
+ *
18
+ * All Telegram API calls here shell out to curl rather than using native
19
+ * fetch — deliberately, not stylistically: native fetch was found to fail
20
+ * with ETIMEDOUT/ENETUNREACH on a real deployment of this exact bot, on a
21
+ * network where IPv6 is advertised but not actually routable. Since this
22
+ * wizard runs in the same kind of environment the bot itself will run in,
23
+ * it uses the same proven-reliable approach rather than risk hitting the
24
+ * same failure during setup.
25
+ */
26
+ import * as readline from 'readline';
27
+ export interface TelegramWizardResult {
28
+ botToken: string;
29
+ botUsername: string;
30
+ allowedUserIds: string[];
31
+ taskModel?: string;
32
+ groqConfigured: boolean;
33
+ systemdGenerated: boolean;
34
+ }
35
+ interface ExistingTelegramConfig {
36
+ bot_token?: string;
37
+ allowed_user_ids?: string;
38
+ }
39
+ export declare function telegramConfigPath(): string;
40
+ export declare function loadExistingTelegramConfig(): ExistingTelegramConfig | null;
41
+ export declare function runTelegramWizard(existingRl?: readline.Interface): Promise<TelegramWizardResult | null>;
42
+ /** Calls Telegram's getMe, returns the bot's username on success or null. */
43
+ export declare function testBotToken(token: string): Promise<string | null>;
44
+ export declare function saveTelegramConfig(botToken: string, allowedUserIds: string[]): void;
45
+ interface SystemdInputs {
46
+ taskModel?: string;
47
+ providerApiKey?: string;
48
+ groqKey?: string | null;
49
+ allowedUserIds: string[];
50
+ }
51
+ /**
52
+ * Builds the actual systemd unit file content. Pure and side-effect-free —
53
+ * split out from offerSystemdService() specifically so it's directly
54
+ * testable without needing to drive the readline prompts around it.
55
+ */
56
+ export declare function buildSystemdServiceContent(inputs: SystemdInputs, nodePath: string, botScriptPath: string, projectRoot: string, logPath: string): string;
57
+ export {};
@@ -0,0 +1,343 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.telegramConfigPath = telegramConfigPath;
40
+ exports.loadExistingTelegramConfig = loadExistingTelegramConfig;
41
+ exports.runTelegramWizard = runTelegramWizard;
42
+ exports.testBotToken = testBotToken;
43
+ exports.saveTelegramConfig = saveTelegramConfig;
44
+ exports.buildSystemdServiceContent = buildSystemdServiceContent;
45
+ /**
46
+ * Telegram Bot Wizard — interactive setup for the Aura Telegram bot.
47
+ *
48
+ * Mirrors provider-wizard.ts's style and structure (numbered choices,
49
+ * keep/replace for existing values, a real connection test before saving),
50
+ * with one addition that came directly out of real deployment pain: it can
51
+ * generate a working systemd user-service file, since that — not picking a
52
+ * model — turned out to be the actual hard part in practice.
53
+ *
54
+ * Steps:
55
+ * 1. Bot token (from @BotFather — the one step nothing can automate)
56
+ * 2. Verify the token against Telegram's real API
57
+ * 3. Authorized user IDs (the bot refuses to start with none)
58
+ * 4. Task model — reuse an existing :provider setup, or configure fresh
59
+ * 5. Voice support (optional) — Groq API key for transcription + TTS
60
+ * 6. Optionally generate ~/.config/systemd/user/aura-telegram.service
61
+ *
62
+ * All Telegram API calls here shell out to curl rather than using native
63
+ * fetch — deliberately, not stylistically: native fetch was found to fail
64
+ * with ETIMEDOUT/ENETUNREACH on a real deployment of this exact bot, on a
65
+ * network where IPv6 is advertised but not actually routable. Since this
66
+ * wizard runs in the same kind of environment the bot itself will run in,
67
+ * it uses the same proven-reliable approach rather than risk hitting the
68
+ * same failure during setup.
69
+ */
70
+ const readline = __importStar(require("readline"));
71
+ const fs = __importStar(require("fs"));
72
+ const path = __importStar(require("path"));
73
+ const os = __importStar(require("os"));
74
+ const child_process_1 = require("child_process");
75
+ const util_1 = require("util");
76
+ const chalk_1 = __importDefault(require("chalk"));
77
+ const env_js_1 = require("../util/env.js");
78
+ const provider_wizard_js_1 = require("./provider-wizard.js");
79
+ const factory_js_1 = require("../providers/factory.js");
80
+ const execAsync = (0, util_1.promisify)(child_process_1.exec);
81
+ function telegramConfigPath() {
82
+ return path.join(os.homedir(), '.aura', 'telegram.json');
83
+ }
84
+ function loadExistingTelegramConfig() {
85
+ try {
86
+ return JSON.parse(fs.readFileSync(telegramConfigPath(), 'utf8'));
87
+ }
88
+ catch {
89
+ return null;
90
+ }
91
+ }
92
+ /** Shell-escapes a string for safe embedding inside single quotes in a curl command. */
93
+ function shellEscape(value) {
94
+ return value.replace(/'/g, "'\\''");
95
+ }
96
+ async function runTelegramWizard(existingRl) {
97
+ const rl = existingRl || readline.createInterface({ input: process.stdin, output: process.stdout });
98
+ try {
99
+ console.log(chalk_1.default.hex('#cc785c')('\n ✦ Telegram Bot Setup Wizard'));
100
+ console.log(chalk_1.default.hex('#8a7768')(' Get Aura running as a Telegram bot in a few steps.\n'));
101
+ // ── Step 1: Bot token ─────────────────────────────────────────────────
102
+ const botToken = await configureBotToken(rl);
103
+ if (!botToken)
104
+ return null;
105
+ // ── Step 2: Verify it for real ────────────────────────────────────────
106
+ console.log(chalk_1.default.hex('#cc785c')('\n Verifying token with Telegram...'));
107
+ const botUsername = await testBotToken(botToken);
108
+ if (!botUsername) {
109
+ console.log(chalk_1.default.hex('#b15439')(' ✗ Could not verify this token. Double-check it and try again.\n'));
110
+ return null;
111
+ }
112
+ console.log(chalk_1.default.hex('#5a9e6e')(` ✓ Connected as @${botUsername}\n`));
113
+ // ── Step 3: Authorized users ──────────────────────────────────────────
114
+ const allowedUserIds = await configureAuthorizedUsers(rl);
115
+ if (allowedUserIds.length === 0) {
116
+ console.log(chalk_1.default.hex('#b15439')(' ✗ At least one authorized user ID is required — the bot refuses to start without one.\n'));
117
+ return null;
118
+ }
119
+ // ── Step 4: Task model ────────────────────────────────────────────────
120
+ const { taskModel, providerApiKey } = await configureTaskModel(rl);
121
+ // ── Step 5: Voice support (optional) ──────────────────────────────────
122
+ const groqKey = await configureVoiceSupport(rl);
123
+ // ── Save telegram.json ─────────────────────────────────────────────────
124
+ saveTelegramConfig(botToken, allowedUserIds);
125
+ console.log(chalk_1.default.hex('#8a7768')(`\n ✓ Saved to ${telegramConfigPath()}`));
126
+ // ── Step 6: systemd service (optional) ────────────────────────────────
127
+ const systemdGenerated = await offerSystemdService(rl, {
128
+ taskModel,
129
+ providerApiKey,
130
+ groqKey,
131
+ allowedUserIds,
132
+ });
133
+ printSummary(botUsername, systemdGenerated);
134
+ return { botToken, botUsername, allowedUserIds, taskModel, groqConfigured: !!groqKey, systemdGenerated };
135
+ }
136
+ finally {
137
+ if (!existingRl)
138
+ rl.close();
139
+ }
140
+ }
141
+ // ─────────────────────────────────────────────────────────────────────────────
142
+ // Step 1: Bot token
143
+ // ─────────────────────────────────────────────────────────────────────────────
144
+ async function configureBotToken(rl) {
145
+ console.log(chalk_1.default.hex('#cc785c')(' Step 1: Bot token\n'));
146
+ const existing = loadExistingTelegramConfig();
147
+ if (existing?.bot_token) {
148
+ console.log(chalk_1.default.hex('#8a7768')(` Existing token found (ends in ...${existing.bot_token.slice(-6)})\n`));
149
+ console.log(chalk_1.default.hex('#8a7768')(' 1. Keep this token'));
150
+ console.log(chalk_1.default.hex('#8a7768')(' 2. Replace with a new token\n'));
151
+ const choice = await askInput(rl, ' ▸ Choose (1 or 2): ');
152
+ if (choice !== '2')
153
+ return existing.bot_token;
154
+ }
155
+ else {
156
+ console.log(chalk_1.default.hex('#8a7768')(' No bot token configured yet.'));
157
+ }
158
+ console.log(chalk_1.default.hex('#8a7768')(' Need one? Message @BotFather on Telegram:'));
159
+ console.log(chalk_1.default.hex('#8a7768')(' 1. Send /newbot'));
160
+ console.log(chalk_1.default.hex('#8a7768')(' 2. Pick a display name, then a username ending in "bot"'));
161
+ console.log(chalk_1.default.hex('#8a7768')(' 3. BotFather replies with a token like 123456789:ABC-DEF1234...\n'));
162
+ const token = await askInput(rl, ' ▸ Paste your bot token: ');
163
+ if (!token) {
164
+ console.log(chalk_1.default.hex('#b15439')(' ✗ No token provided.'));
165
+ return null;
166
+ }
167
+ return token;
168
+ }
169
+ /** Calls Telegram's getMe, returns the bot's username on success or null. */
170
+ async function testBotToken(token) {
171
+ try {
172
+ const url = `https://api.telegram.org/bot${token}/getMe`;
173
+ const { stdout } = await execAsync(`curl -s "${url}"`, { timeout: 15_000 });
174
+ const parsed = JSON.parse(stdout);
175
+ if (!parsed.ok || !parsed.result?.username)
176
+ return null;
177
+ return parsed.result.username;
178
+ }
179
+ catch {
180
+ return null;
181
+ }
182
+ }
183
+ // ─────────────────────────────────────────────────────────────────────────────
184
+ // Step 3: Authorized users
185
+ // ─────────────────────────────────────────────────────────────────────────────
186
+ async function configureAuthorizedUsers(rl) {
187
+ console.log(chalk_1.default.hex('#cc785c')(' Step 2: Authorized users\n'));
188
+ console.log(chalk_1.default.hex('#8a7768')(' Only these Telegram user IDs will be able to use the bot.'));
189
+ console.log(chalk_1.default.hex('#8a7768')(" Don't know yours? Message @userinfobot on Telegram — it replies instantly.\n"));
190
+ const existing = loadExistingTelegramConfig();
191
+ const ids = existing?.allowed_user_ids
192
+ ? existing.allowed_user_ids.split(',').map(s => s.trim()).filter(Boolean)
193
+ : [];
194
+ if (ids.length > 0) {
195
+ console.log(chalk_1.default.hex('#8a7768')(` Currently authorized: ${ids.join(', ')}\n`));
196
+ }
197
+ for (;;) {
198
+ const prompt = ids.length > 0
199
+ ? ' ▸ Add another user ID (or press Enter to finish): '
200
+ : ' ▸ Your Telegram user ID: ';
201
+ const input = await askInput(rl, prompt);
202
+ if (!input)
203
+ break;
204
+ if (!/^\d+$/.test(input)) {
205
+ console.log(chalk_1.default.hex('#b15439')(" ✗ That doesn't look like a numeric Telegram ID — try again."));
206
+ continue;
207
+ }
208
+ if (!ids.includes(input))
209
+ ids.push(input);
210
+ }
211
+ return ids;
212
+ }
213
+ // ─────────────────────────────────────────────────────────────────────────────
214
+ // Step 4: Task model
215
+ // ─────────────────────────────────────────────────────────────────────────────
216
+ async function configureTaskModel(rl) {
217
+ console.log(chalk_1.default.hex('#cc785c')('\n Step 3: Which model should the bot use?\n'));
218
+ const saved = (0, provider_wizard_js_1.loadProviderConfig)();
219
+ if (saved?.model) {
220
+ console.log(chalk_1.default.hex('#8a7768')(` Found an existing :provider setup: ${chalk_1.default.hex('#e8d5b7')(saved.model)} (${saved.provider})\n`));
221
+ console.log(chalk_1.default.hex('#8a7768')(' 1. Use this for the bot too'));
222
+ console.log(chalk_1.default.hex('#8a7768')(' 2. Skip — configure this manually later\n'));
223
+ const choice = await askInput(rl, ' ▸ Choose (1 or 2): ');
224
+ if (choice !== '2') {
225
+ return { taskModel: saved.model, providerApiKey: saved.apiKey };
226
+ }
227
+ }
228
+ else {
229
+ console.log(chalk_1.default.hex('#8a7768')(' No existing provider setup found.'));
230
+ }
231
+ console.log(chalk_1.default.hex('#8a7768')(' Run :provider first if you want this filled in automatically,'));
232
+ console.log(chalk_1.default.hex('#8a7768')(' or set TELEGRAM_BOT_MODEL plus the matching API key manually later.\n'));
233
+ return {};
234
+ }
235
+ // ─────────────────────────────────────────────────────────────────────────────
236
+ // Step 5: Voice support (optional)
237
+ // ─────────────────────────────────────────────────────────────────────────────
238
+ async function configureVoiceSupport(rl) {
239
+ console.log(chalk_1.default.hex('#cc785c')('\n Step 4: Voice messages (optional)\n'));
240
+ console.log(chalk_1.default.hex('#8a7768')(' Lets the bot transcribe voice messages and reply with spoken audio.'));
241
+ console.log(chalk_1.default.hex('#8a7768')(' Needs a free Groq API key: https://console.groq.com/keys\n'));
242
+ const existing = (0, env_js_1.getApiKey)('GROQ_API_KEY', 'groq_api_key');
243
+ if (existing) {
244
+ console.log(chalk_1.default.hex('#8a7768')(` Found one already: ${chalk_1.default.hex('#5a9e6e')(maskKey(existing))}\n`));
245
+ const choice = await askInput(rl, ' ▸ Use this key for the bot? (Y/n): ');
246
+ if (choice.toLowerCase() !== 'n')
247
+ return existing;
248
+ }
249
+ const choice = await askInput(rl, ' ▸ Enable voice messages? (y/N): ');
250
+ if (choice.toLowerCase() !== 'y')
251
+ return null;
252
+ const key = await askInput(rl, ' ▸ Enter Groq API key: ');
253
+ return key || null;
254
+ }
255
+ function maskKey(key) {
256
+ if (key.length <= 8)
257
+ return '****';
258
+ return key.slice(0, 4) + '...' + key.slice(-4);
259
+ }
260
+ // ─────────────────────────────────────────────────────────────────────────────
261
+ // Save telegram.json
262
+ // ─────────────────────────────────────────────────────────────────────────────
263
+ function saveTelegramConfig(botToken, allowedUserIds) {
264
+ const dir = path.join(os.homedir(), '.aura');
265
+ fs.mkdirSync(dir, { recursive: true });
266
+ const config = {
267
+ bot_token: botToken,
268
+ allowed_user_ids: allowedUserIds.join(','),
269
+ };
270
+ fs.writeFileSync(telegramConfigPath(), JSON.stringify(config, null, 2) + '\n', { mode: 0o600 });
271
+ }
272
+ /**
273
+ * Builds the actual systemd unit file content. Pure and side-effect-free —
274
+ * split out from offerSystemdService() specifically so it's directly
275
+ * testable without needing to drive the readline prompts around it.
276
+ */
277
+ function buildSystemdServiceContent(inputs, nodePath, botScriptPath, projectRoot, logPath) {
278
+ const lines = [
279
+ '[Unit]',
280
+ 'Description=Aura Telegram Bot',
281
+ '[Service]',
282
+ `WorkingDirectory=${projectRoot}`,
283
+ `ExecStart=${nodePath} ${botScriptPath}`,
284
+ ];
285
+ if (inputs.taskModel) {
286
+ lines.push(`Environment="TELEGRAM_BOT_MODEL=${inputs.taskModel}"`);
287
+ if (inputs.providerApiKey) {
288
+ const envVar = (0, factory_js_1.apiKeyEnvVarForModel)(inputs.taskModel);
289
+ if (envVar)
290
+ lines.push(`Environment="${envVar}=${inputs.providerApiKey}"`);
291
+ }
292
+ }
293
+ if (inputs.groqKey) {
294
+ lines.push(`Environment="GROQ_API_KEY=${inputs.groqKey}"`);
295
+ }
296
+ lines.push(`Environment="TELEGRAM_BOT_ALLOWED_USER_IDS=${inputs.allowedUserIds.join(',')}"`);
297
+ lines.push('Restart=always', 'RestartSec=5', `StandardOutput=append:${logPath}`, `StandardError=append:${logPath}`, '[Install]', 'WantedBy=default.target');
298
+ return lines.join('\n') + '\n';
299
+ }
300
+ async function offerSystemdService(rl, inputs) {
301
+ console.log(chalk_1.default.hex('#cc785c')('\n Step 5: Run automatically with systemd? (Linux only)\n'));
302
+ console.log(chalk_1.default.hex('#8a7768')(' Keeps the bot running in the background, restarts it if it crashes,'));
303
+ console.log(chalk_1.default.hex('#8a7768')(' and starts it again automatically next time you log in.\n'));
304
+ const choice = await askInput(rl, ' ▸ Generate a systemd service file now? (y/N): ');
305
+ if (choice.toLowerCase() !== 'y')
306
+ return false;
307
+ const projectRoot = process.cwd();
308
+ const botScript = path.join(projectRoot, 'dist', 'tools', 'telegram-bot.js');
309
+ if (!fs.existsSync(botScript)) {
310
+ console.log(chalk_1.default.hex('#b15439')(` ✗ ${botScript} doesn't exist yet — run "npm run build" first, then re-run this step.`));
311
+ return false;
312
+ }
313
+ const logPath = path.join(os.homedir(), '.aura', 'telegram-bot.log');
314
+ const content = buildSystemdServiceContent(inputs, process.execPath, botScript, projectRoot, logPath);
315
+ const serviceDir = path.join(os.homedir(), '.config', 'systemd', 'user');
316
+ fs.mkdirSync(serviceDir, { recursive: true });
317
+ const servicePath = path.join(serviceDir, 'aura-telegram.service');
318
+ fs.writeFileSync(servicePath, content);
319
+ console.log(chalk_1.default.hex('#5a9e6e')(`\n ✓ Wrote ${servicePath}`));
320
+ console.log(chalk_1.default.hex('#8a7768')('\n Run these to start it:\n'));
321
+ console.log(chalk_1.default.hex('#e8d5b7')(' systemctl --user daemon-reload'));
322
+ console.log(chalk_1.default.hex('#e8d5b7')(' systemctl --user enable --now aura-telegram.service'));
323
+ console.log(chalk_1.default.hex('#e8d5b7')(' systemctl --user status aura-telegram.service\n'));
324
+ return true;
325
+ }
326
+ // ─────────────────────────────────────────────────────────────────────────────
327
+ // Helpers
328
+ // ─────────────────────────────────────────────────────────────────────────────
329
+ function askInput(rl, prompt) {
330
+ return new Promise(resolve => {
331
+ rl.question(chalk_1.default.hex('#cc785c')(prompt), answer => resolve((answer ?? '').trim()));
332
+ });
333
+ }
334
+ function printSummary(botUsername, systemdGenerated) {
335
+ console.log(chalk_1.default.hex('#cc785c')('\n ✦ Setup complete\n'));
336
+ console.log(chalk_1.default.hex('#8a7768')(` Bot: ${chalk_1.default.hex('#e8d5b7')('@' + botUsername)}`));
337
+ if (!systemdGenerated) {
338
+ console.log(chalk_1.default.hex('#8a7768')('\n To run it now:'));
339
+ console.log(chalk_1.default.hex('#e8d5b7')(` node dist/tools/telegram-bot.js\n`));
340
+ }
341
+ console.log(chalk_1.default.hex('#8a7768')(' Message your bot on Telegram to try it.\n'));
342
+ }
343
+ //# sourceMappingURL=telegram-wizard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"telegram-wizard.js","sourceRoot":"","sources":["../../src/setup/telegram-wizard.ts"],"names":[],"mappings":"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"}
@@ -5,4 +5,24 @@ export interface AudioTranscribeInput {
5
5
  action?: 'transcribe' | 'info';
6
6
  }
7
7
  export declare const AUDIO_TRANSCRIBE_DEFINITION: ToolDefinition;
8
+ export interface GroqWhisperResult {
9
+ text: string;
10
+ language?: string;
11
+ duration?: number;
12
+ segments?: Array<{
13
+ start: number;
14
+ end: number;
15
+ text: string;
16
+ }>;
17
+ }
18
+ /**
19
+ * Calls Groq's Whisper transcription API directly and returns the parsed
20
+ * result — no formatting, no file validation beyond what's needed to build
21
+ * the request. Used by audioTranscribe() below (which wraps this with the
22
+ * rich report format / error-string convention tools use), and by the
23
+ * Telegram bot's voice-message handler (which just wants the raw text to
24
+ * use directly as a task description, not a formatted report about it).
25
+ * Throws on any failure — callers decide how to present that.
26
+ */
27
+ export declare function callGroqWhisper(filePath: string, apiKey: string, language?: string): Promise<GroqWhisperResult>;
8
28
  export declare function audioTranscribe(input: AudioTranscribeInput): Promise<string>;
@@ -34,6 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.AUDIO_TRANSCRIBE_DEFINITION = void 0;
37
+ exports.callGroqWhisper = callGroqWhisper;
37
38
  exports.audioTranscribe = audioTranscribe;
38
39
  const fs = __importStar(require("fs"));
39
40
  const path = __importStar(require("path"));
@@ -72,6 +73,43 @@ function getAudioInfo(filePath) {
72
73
  `Model: ${WHISPER_MODEL} (via Groq)`,
73
74
  ].join('\n');
74
75
  }
76
+ /**
77
+ * Calls Groq's Whisper transcription API directly and returns the parsed
78
+ * result — no formatting, no file validation beyond what's needed to build
79
+ * the request. Used by audioTranscribe() below (which wraps this with the
80
+ * rich report format / error-string convention tools use), and by the
81
+ * Telegram bot's voice-message handler (which just wants the raw text to
82
+ * use directly as a task description, not a formatted report about it).
83
+ * Throws on any failure — callers decide how to present that.
84
+ */
85
+ async function callGroqWhisper(filePath, apiKey, language) {
86
+ const stat = fs.statSync(filePath);
87
+ const sizeMB = stat.size / (1024 * 1024);
88
+ if (sizeMB > 25) {
89
+ throw new Error(`Audio file is ${sizeMB.toFixed(1)} MB, Groq limit is 25 MB. Compress or split the file first.`);
90
+ }
91
+ const ext = path.extname(filePath).toLowerCase();
92
+ const fileBuffer = fs.readFileSync(filePath);
93
+ const blob = new Blob([fileBuffer], { type: `audio/${ext.slice(1) || 'ogg'}` });
94
+ const formData = new FormData();
95
+ formData.append('file', blob, path.basename(filePath));
96
+ formData.append('model', WHISPER_MODEL);
97
+ if (language && language !== 'auto') {
98
+ formData.append('language', language);
99
+ }
100
+ formData.append('response_format', 'verbose_json');
101
+ const response = await fetch(GROQ_API_URL, {
102
+ method: 'POST',
103
+ headers: { 'Authorization': `Bearer ${apiKey}` },
104
+ body: formData,
105
+ signal: AbortSignal.timeout(120_000),
106
+ });
107
+ if (!response.ok) {
108
+ const errorBody = await response.text();
109
+ throw new Error(`Groq API returned ${response.status}: ${errorBody}`);
110
+ }
111
+ return response.json();
112
+ }
75
113
  async function audioTranscribe(input) {
76
114
  const filePath = path.resolve(input.path);
77
115
  if (!fs.existsSync(filePath)) {
@@ -93,35 +131,8 @@ async function audioTranscribe(input) {
93
131
  if (!apiKey) {
94
132
  return 'Error: GROQ_API_KEY not set. Get a free key at https://console.groq.com/keys and set it: export GROQ_API_KEY=gsk_...';
95
133
  }
96
- // Check file size (Groq limit is 25 MB)
97
- const stat = fs.statSync(filePath);
98
- const sizeMB = stat.size / (1024 * 1024);
99
- if (sizeMB > 25) {
100
- return `Error: Audio file is ${sizeMB.toFixed(1)} MB, Groq limit is 25 MB. Compress or split the file first.`;
101
- }
102
134
  try {
103
- const fileBuffer = fs.readFileSync(filePath);
104
- const blob = new Blob([fileBuffer], { type: `audio/${ext.slice(1)}` });
105
- const formData = new FormData();
106
- formData.append('file', blob, path.basename(filePath));
107
- formData.append('model', WHISPER_MODEL);
108
- if (input.language && input.language !== 'auto') {
109
- formData.append('language', input.language);
110
- }
111
- formData.append('response_format', 'verbose_json');
112
- const response = await fetch(GROQ_API_URL, {
113
- method: 'POST',
114
- headers: {
115
- 'Authorization': `Bearer ${apiKey}`,
116
- },
117
- body: formData,
118
- signal: AbortSignal.timeout(120_000), // 2 min timeout for large files
119
- });
120
- if (!response.ok) {
121
- const errorBody = await response.text();
122
- return `Error: Groq API returned ${response.status}: ${errorBody}`;
123
- }
124
- const result = await response.json();
135
+ const result = await callGroqWhisper(filePath, apiKey, input.language);
125
136
  const lines = [];
126
137
  lines.push(`Transcription (${WHISPER_MODEL}):`);
127
138
  if (result.language)
@@ -1 +1 @@
1
- {"version":3,"file":"audio-transcribe.js","sourceRoot":"","sources":["../../src/tools/audio-transcribe.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"audio-transcribe.js","sourceRoot":"","sources":["../../src/tools/audio-transcribe.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuEA,0CAoCC;AAED,0CAsDC;AAnKD,uCAAyB;AACzB,2CAA6B;AAE7B,2CAA2C;AAY9B,QAAA,2BAA2B,GAAmB;IACzD,IAAI,EAAE,kBAAkB;IACxB,WAAW,EACT,yDAAyD;QACzD,iDAAiD;QACjD,8CAA8C;QAC9C,oEAAoE;IACtE,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;YACnE,QAAQ,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0FAA0F,EAAE;YACrI,MAAM,EAAI,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sCAAsC,EAAE;SAClF;QACD,QAAQ,EAAE,CAAC,MAAM,CAAC;KACnB;CACF,CAAC;AAEF,MAAM,gBAAgB,GAAG;IACvB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO;CAC3E,CAAC;AAEF,MAAM,YAAY,GAAG,qDAAqD,CAAC;AAC3E,MAAM,aAAa,GAAG,wBAAwB,CAAC;AAE/C,SAAS,YAAY,CAAC,QAAgB;IACpC,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACtD,MAAM,MAAM,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IAE7C,OAAO;QACL,SAAS,QAAQ,EAAE;QACnB,SAAS,MAAM,QAAQ,MAAM,MAAM;QACnC,WAAW,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE;QACvC,aAAa,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,EAAE;QACvC,UAAU,aAAa,aAAa;KACrC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC;AASD;;;;;;;;GAQG;AACI,KAAK,UAAU,eAAe,CACnC,QAAgB,EAChB,MAAc,EACd,QAAiB;IAEjB,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,GAAG,CAAC,IAAI,GAAG,IAAI,CAAC,CAAC;IACzC,IAAI,MAAM,GAAG,EAAE,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,iBAAiB,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,6DAA6D,CAAC,CAAC;IACnH,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD,MAAM,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,UAAU,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,KAAK,EAAE,EAAE,CAAC,CAAC;IAEhF,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAChC,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;IACvD,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;IACxC,IAAI,QAAQ,IAAI,QAAQ,KAAK,MAAM,EAAE,CAAC;QACpC,QAAQ,CAAC,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IACxC,CAAC;IACD,QAAQ,CAAC,MAAM,CAAC,iBAAiB,EAAE,cAAc,CAAC,CAAC;IAEnD,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,YAAY,EAAE;QACzC,MAAM,EAAE,MAAM;QACd,OAAO,EAAE,EAAE,eAAe,EAAE,UAAU,MAAM,EAAE,EAAE;QAChD,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,OAAO,CAAC;KACrC,CAAC,CAAC;IAEH,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,qBAAqB,QAAQ,CAAC,MAAM,KAAK,SAAS,EAAE,CAAC,CAAC;IACxE,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,EAAgC,CAAC;AACvD,CAAC;AAEM,KAAK,UAAU,eAAe,CAAC,KAA2B;IAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAE1C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC7B,OAAO,0BAA0B,KAAK,CAAC,IAAI,EAAE,CAAC;IAChD,CAAC;IAED,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC;IACjD,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,IAAI,YAAY,CAAC;IAE5C,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,OAAO,6BAA6B,GAAG,iBAAiB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACxF,CAAC;QACD,OAAO,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAED,oBAAoB;IACpB,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACpC,OAAO,6BAA6B,GAAG,iBAAiB,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;IACxF,CAAC;IAED,MAAM,MAAM,GAAG,IAAA,kBAAS,EAAC,cAAc,EAAE,cAAc,CAAC,CAAC;IACzD,IAAI,CAAC,MAAM,EAAE,CAAC;QACZ,OAAO,sHAAsH,CAAC;IAChI,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;QAEvE,MAAM,KAAK,GAAa,EAAE,CAAC;QAC3B,KAAK,CAAC,IAAI,CAAC,kBAAkB,aAAa,IAAI,CAAC,CAAC;QAChD,IAAI,MAAM,CAAC,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,QAAQ,EAAE,CAAC,CAAC;QAChE,IAAI,MAAM,CAAC,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;QAC5E,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACf,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAE/B,IAAI,MAAM,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAClD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACf,KAAK,CAAC,IAAI,CAAC,8BAA8B,CAAC,CAAC;YAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAClC,MAAM,KAAK,GAAG,eAAe,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACzC,MAAM,GAAG,GAAG,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;gBACrC,KAAK,CAAC,IAAI,CAAC,IAAI,KAAK,MAAM,GAAG,KAAK,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACvD,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC1B,CAAC;IAAC,OAAO,CAAM,EAAE,CAAC;QAChB,IAAI,CAAC,EAAE,IAAI,KAAK,cAAc,IAAI,CAAC,EAAE,IAAI,KAAK,YAAY,EAAE,CAAC;YAC3D,OAAO,sEAAsE,CAAC;QAChF,CAAC;QACD,OAAO,UAAU,CAAC,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7C,CAAC;AACH,CAAC;AAED,SAAS,eAAe,CAAC,OAAe;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACtC,OAAO,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,CAAC;AACnF,CAAC"}
@@ -97,22 +97,20 @@ async function ensurePage() {
97
97
  return page;
98
98
  }
99
99
  function findChrome() {
100
- const { execSync } = require('child_process');
101
- const candidates = [
102
- 'google-chrome',
103
- 'google-chrome-stable',
104
- 'chromium-browser',
105
- 'chromium',
100
+ const knownPaths = [
106
101
  '/usr/bin/google-chrome',
102
+ '/usr/bin/google-chrome-stable',
107
103
  '/usr/bin/chromium-browser',
104
+ '/snap/bin/chromium',
105
+ '/snap/bin/google-chrome',
108
106
  ];
109
- for (const cmd of candidates) {
107
+ for (const p of knownPaths) {
110
108
  try {
111
- execSync(`which ${cmd}`, { stdio: 'pipe' });
112
- return cmd;
109
+ require('fs').accessSync(p, require('fs').constants.X_OK);
110
+ return p;
113
111
  }
114
112
  catch {
115
- // not found, try next
113
+ // not executable, try next
116
114
  }
117
115
  }
118
116
  return null;