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
@@ -40,20 +40,25 @@ const path = __importStar(require("path"));
40
40
  const os = __importStar(require("os"));
41
41
  exports.TELEGRAM_DEFINITION = {
42
42
  name: 'telegram',
43
- description: 'Communicate via Telegram Bot. Send text messages, photos, documents. Read incoming messages. ' +
43
+ description: 'Communicate via Telegram Bot. Send text messages, photos, videos, documents. Read incoming messages. ' +
44
44
  'Configure ~/.aura/telegram.json with { "bot_token": "...", "default_chat_id": "..." }. ' +
45
45
  'Create a bot via @BotFather on Telegram.',
46
46
  parameters: {
47
47
  type: 'object',
48
48
  properties: {
49
- action: { type: 'string', description: 'Action: send, send_photo, send_document, get_updates, get_chat, set_webhook, info' },
49
+ action: { type: 'string', description: 'Action: send, send_photo, send_video, send_document, get_updates, get_chat, set_webhook, info' },
50
50
  chat_id: { type: 'string', description: 'Chat ID (uses default from config if omitted)' },
51
51
  text: { type: 'string', description: 'Message text (for send)' },
52
52
  photo: { type: 'string', description: 'Photo path or URL (for send_photo)' },
53
+ video: { type: 'string', description: 'Video URL or file_id (for send_video). Local files not yet supported — use a hosted URL.' },
53
54
  document: { type: 'string', description: 'Document path or URL (for send_document)' },
54
- caption: { type: 'string', description: 'Caption for photo/document' },
55
+ caption: { type: 'string', description: 'Caption for photo/video/document' },
55
56
  parse_mode: { type: 'string', description: 'Parse mode: HTML, Markdown, MarkdownV2' },
56
57
  reply_to: { type: 'number', description: 'Message ID to reply to' },
58
+ duration: { type: 'number', description: 'Video duration in seconds (for send_video)' },
59
+ width: { type: 'number', description: 'Video width in pixels (for send_video)' },
60
+ height: { type: 'number', description: 'Video height in pixels (for send_video)' },
61
+ supports_streaming: { type: 'boolean', description: 'Pass True if the video supports streaming (for send_video)' },
57
62
  offset: { type: 'number', description: 'Update offset for get_updates (to acknowledge processed updates)' },
58
63
  limit: { type: 'number', description: 'Max updates to fetch (default: 10)' },
59
64
  webhook_url: { type: 'string', description: 'Webhook URL for set_webhook' },
@@ -109,6 +114,59 @@ async function apiGet(token, method, params) {
109
114
  return data.result;
110
115
  }
111
116
  // ─────────────────────────────────────────────────────────────────────────────
117
+ // Helpers
118
+ // ─────────────────────────────────────────────────────────────────────────────
119
+ /** Check if a path is a local file (exists on disk), not a URL */
120
+ function isLocalPath(p) {
121
+ return !p.startsWith('http://') && !p.startsWith('https://') && fs.existsSync(p);
122
+ }
123
+ /** Get MIME type from file extension */
124
+ function mimeFromExt(filePath) {
125
+ const ext = path.extname(filePath).toLowerCase();
126
+ const mimeMap = {
127
+ '.jpg': 'image/jpeg',
128
+ '.jpeg': 'image/jpeg',
129
+ '.png': 'image/png',
130
+ '.gif': 'image/gif',
131
+ '.webp': 'image/webp',
132
+ '.bmp': 'image/bmp',
133
+ '.mp4': 'video/mp4',
134
+ '.avi': 'video/x-msvideo',
135
+ '.mov': 'video/quicktime',
136
+ '.webm': 'video/webm',
137
+ '.pdf': 'application/pdf',
138
+ '.txt': 'text/plain',
139
+ '.zip': 'application/zip',
140
+ };
141
+ return mimeMap[ext] ?? 'application/octet-stream';
142
+ }
143
+ /**
144
+ * Send a file to Telegram via multipart/form-data upload.
145
+ * Used when the file is a local path rather than a URL.
146
+ */
147
+ async function sendFileMultipart(token, method, fields, fileField, filePath) {
148
+ const url = `${API_BASE}/bot${token}/${method}`;
149
+ const formData = new FormData();
150
+ for (const [key, val] of Object.entries(fields)) {
151
+ formData.append(key, val);
152
+ }
153
+ const fileName = path.basename(filePath);
154
+ const mimeType = mimeFromExt(filePath);
155
+ const fileBuffer = fs.readFileSync(filePath);
156
+ const file = new File([fileBuffer], fileName, { type: mimeType });
157
+ formData.append(fileField, file);
158
+ const response = await fetch(url, {
159
+ method: 'POST',
160
+ body: formData,
161
+ signal: AbortSignal.timeout(30_000),
162
+ });
163
+ const data = await response.json();
164
+ if (!data.ok) {
165
+ throw new Error(`Telegram API error: ${data.description ?? 'Unknown error'} (code: ${data.error_code})`);
166
+ }
167
+ return data.result;
168
+ }
169
+ // ─────────────────────────────────────────────────────────────────────────────
112
170
  // Actions
113
171
  // ─────────────────────────────────────────────────────────────────────────────
114
172
  async function doSend(config, input) {
@@ -134,9 +192,21 @@ async function doSendPhoto(config, input) {
134
192
  return 'Error: chat_id required';
135
193
  if (!input.photo)
136
194
  return 'Error: photo required';
195
+ const photo = input.photo;
196
+ if (isLocalPath(photo)) {
197
+ // Local file — upload via multipart/form-data
198
+ const fields = { chat_id: chatId };
199
+ if (input.caption)
200
+ fields.caption = input.caption;
201
+ if (input.parse_mode)
202
+ fields.parse_mode = input.parse_mode;
203
+ const result = await sendFileMultipart(config.bot_token, 'sendPhoto', fields, 'photo', photo);
204
+ return `Photo sent to ${chatId} (msg_id: ${result.message_id})`;
205
+ }
206
+ // URL or file_id — send as JSON (Telegram fetches the URL)
137
207
  const body = {
138
208
  chat_id: chatId,
139
- photo: input.photo,
209
+ photo: photo,
140
210
  };
141
211
  if (input.caption)
142
212
  body.caption = input.caption;
@@ -145,15 +215,54 @@ async function doSendPhoto(config, input) {
145
215
  const result = await api(config.bot_token, 'sendPhoto', body);
146
216
  return `Photo sent to ${chatId} (msg_id: ${result.message_id})`;
147
217
  }
218
+ async function doSendVideo(config, input) {
219
+ const chatId = input.chat_id ?? config.default_chat_id;
220
+ if (!chatId)
221
+ return 'Error: chat_id required';
222
+ if (!input.video)
223
+ return 'Error: video required (URL or file_id)';
224
+ const body = {
225
+ chat_id: chatId,
226
+ video: input.video,
227
+ };
228
+ if (input.caption)
229
+ body.caption = input.caption;
230
+ if (input.parse_mode)
231
+ body.parse_mode = input.parse_mode;
232
+ if (input.duration !== undefined)
233
+ body.duration = input.duration;
234
+ if (input.width !== undefined)
235
+ body.width = input.width;
236
+ if (input.height !== undefined)
237
+ body.height = input.height;
238
+ if (input.supports_streaming !== undefined)
239
+ body.supports_streaming = input.supports_streaming;
240
+ if (input.reply_to)
241
+ body.reply_to_message_id = input.reply_to;
242
+ const result = await api(config.bot_token, 'sendVideo', body);
243
+ return `Video sent to ${chatId} (msg_id: ${result.message_id})`;
244
+ }
148
245
  async function doSendDocument(config, input) {
149
246
  const chatId = input.chat_id ?? config.default_chat_id;
150
247
  if (!chatId)
151
248
  return 'Error: chat_id required';
152
249
  if (!input.document)
153
250
  return 'Error: document required';
251
+ const document = input.document;
252
+ if (isLocalPath(document)) {
253
+ // Local file — upload via multipart/form-data
254
+ const fields = { chat_id: chatId };
255
+ if (input.caption)
256
+ fields.caption = input.caption;
257
+ if (input.parse_mode)
258
+ fields.parse_mode = input.parse_mode;
259
+ const result = await sendFileMultipart(config.bot_token, 'sendDocument', fields, 'document', document);
260
+ return `Document sent to ${chatId} (msg_id: ${result.message_id})`;
261
+ }
262
+ // URL — send as JSON (Telegram fetches the URL)
154
263
  const body = {
155
264
  chat_id: chatId,
156
- document: input.document,
265
+ document: document,
157
266
  };
158
267
  if (input.caption)
159
268
  body.caption = input.caption;
@@ -212,6 +321,7 @@ async function telegramTool(input) {
212
321
  switch (input.action) {
213
322
  case 'send': return await doSend(config, input);
214
323
  case 'send_photo': return await doSendPhoto(config, input);
324
+ case 'send_video': return await doSendVideo(config, input);
215
325
  case 'send_document': return await doSendDocument(config, input);
216
326
  case 'get_updates': return await doGetUpdates(config, input);
217
327
  case 'get_chat': return await doGetChat(config, input);
@@ -1 +1 @@
1
- {"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/tools/telegram.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"telegram.js","sourceRoot":"","sources":["../../src/tools/telegram.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ export interface RenderOptions {
2
+ htmlPath: string;
3
+ output: string;
4
+ fps?: number;
5
+ width?: number;
6
+ height?: number;
7
+ duration?: number;
8
+ keepFrames?: boolean;
9
+ onProgress?: (current: number, total: number) => void;
10
+ }
11
+ export declare function renderVideo(options: RenderOptions): Promise<string>;
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ /// <reference lib="dom" />
3
+ /// <reference lib="dom" />
4
+ // ─────────────────────────────────────────────────────────────────────────────
5
+ // Video Renderer — Puppeteer frame capture + ffmpeg MP4 encoding
6
+ // Takes an HTML file with CSS animations, captures every frame via Puppeteer,
7
+ // pipes PNGs to ffmpeg, produces an MP4. No new dependencies required.
8
+ // ─────────────────────────────────────────────────────────────────────────────
9
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ var desc = Object.getOwnPropertyDescriptor(m, k);
12
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
13
+ desc = { enumerable: true, get: function() { return m[k]; } };
14
+ }
15
+ Object.defineProperty(o, k2, desc);
16
+ }) : (function(o, m, k, k2) {
17
+ if (k2 === undefined) k2 = k;
18
+ o[k2] = m[k];
19
+ }));
20
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
21
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
22
+ }) : function(o, v) {
23
+ o["default"] = v;
24
+ });
25
+ var __importStar = (this && this.__importStar) || (function () {
26
+ var ownKeys = function(o) {
27
+ ownKeys = Object.getOwnPropertyNames || function (o) {
28
+ var ar = [];
29
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
30
+ return ar;
31
+ };
32
+ return ownKeys(o);
33
+ };
34
+ return function (mod) {
35
+ if (mod && mod.__esModule) return mod;
36
+ var result = {};
37
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
38
+ __setModuleDefault(result, mod);
39
+ return result;
40
+ };
41
+ })();
42
+ Object.defineProperty(exports, "__esModule", { value: true });
43
+ exports.renderVideo = renderVideo;
44
+ const path = __importStar(require("path"));
45
+ const fs = __importStar(require("fs"));
46
+ const os = __importStar(require("os"));
47
+ const child_process_1 = require("child_process");
48
+ // ─────────────────────────────────────────────────────────────────────────────
49
+ // Chrome detection
50
+ // ─────────────────────────────────────────────────────────────────────────────
51
+ function findChrome() {
52
+ const candidates = [
53
+ 'google-chrome-stable', 'google-chrome', 'chromium-browser', 'chromium',
54
+ ];
55
+ for (const cmd of candidates) {
56
+ try {
57
+ const result = (0, child_process_1.execSync)(`which ${cmd}`, { stdio: 'pipe' });
58
+ return result.toString().trim();
59
+ }
60
+ catch { }
61
+ }
62
+ // Direct paths as fallback
63
+ const directPaths = [
64
+ '/usr/bin/google-chrome-stable', '/usr/bin/google-chrome',
65
+ '/usr/bin/chromium-browser', '/snap/bin/chromium',
66
+ ];
67
+ for (const p of directPaths) {
68
+ if (fs.existsSync(p))
69
+ return p;
70
+ }
71
+ throw new Error('Chrome/Chromium not found.');
72
+ }
73
+ // ─────────────────────────────────────────────────────────────────────────────
74
+ // Main render function
75
+ // ─────────────────────────────────────────────────────────────────────────────
76
+ async function renderVideo(options) {
77
+ const { htmlPath, output, fps = 30, width = 1920, height = 1080, keepFrames = false, onProgress, } = options;
78
+ const absHtml = path.resolve(htmlPath);
79
+ if (!fs.existsSync(absHtml))
80
+ throw new Error(`HTML not found: ${absHtml}`);
81
+ const absOutput = path.resolve(output);
82
+ const outDir = path.dirname(absOutput);
83
+ if (!fs.existsSync(outDir))
84
+ fs.mkdirSync(outDir, { recursive: true });
85
+ const tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), 'aura-video-'));
86
+ const framePattern = path.join(tmpDir, 'frame-%06d.png');
87
+ // Puppeteer
88
+ const puppeteer = await Promise.resolve().then(() => __importStar(require('puppeteer-core')));
89
+ const browser = await puppeteer.launch({
90
+ executablePath: findChrome(),
91
+ headless: true,
92
+ args: ['--no-sandbox', '--disable-gpu', '--disable-dev-shm-usage'],
93
+ });
94
+ let totalFrames = 0;
95
+ try {
96
+ const page = await browser.newPage();
97
+ await page.setViewport({ width, height, deviceScaleFactor: 1 });
98
+ await page.goto(`file://${absHtml}`, { waitUntil: 'networkidle0', timeout: 15000 });
99
+ const pageDuration = options.duration ??
100
+ (await page.evaluate(() => {
101
+ const el = document.getElementById('__duration');
102
+ return el ? parseFloat(el.textContent || '5') : 5;
103
+ }));
104
+ totalFrames = Math.ceil(pageDuration * fps);
105
+ // Inject animation seek controller
106
+ await page.evaluate(() => {
107
+ const style = document.createElement('style');
108
+ style.id = '__aura-control';
109
+ style.textContent = `.aura-el { animation-play-state: paused !important; opacity: 0; }`;
110
+ document.head.appendChild(style);
111
+ window.__seek = (t) => {
112
+ document.querySelectorAll('.aura-el').forEach((el) => {
113
+ const enter = parseFloat(el.dataset.enter || '0');
114
+ const exit = parseFloat(el.dataset.exit || '9999');
115
+ const dur = parseFloat(el.dataset.dur || '0.5');
116
+ const enterAnim = el.dataset.enterAnim || 'fadeIn';
117
+ const exitAnim = el.dataset.exitAnim || 'fadeOut';
118
+ const centered = 'translate(-50%, -50%)';
119
+ if (t < enter) {
120
+ el.style.opacity = '0';
121
+ el.style.animation = 'none';
122
+ el.style.transform = centered;
123
+ }
124
+ else if (t >= enter && t < enter + dur) {
125
+ const elapsed = t - enter;
126
+ el.style.animation = `${enterAnim} ${dur}s ease-out 1 forwards`;
127
+ el.style.animationDelay = `-${elapsed}s`;
128
+ el.style.animationPlayState = 'paused';
129
+ }
130
+ else if (t >= enter + dur && t < exit) {
131
+ el.style.opacity = '1';
132
+ el.style.animation = 'none';
133
+ el.style.transform = centered;
134
+ }
135
+ else if (t >= exit && t < exit + dur) {
136
+ const elapsed = t - exit;
137
+ el.style.animation = `${exitAnim} ${dur}s ease-in 1 forwards`;
138
+ el.style.animationDelay = `-${elapsed}s`;
139
+ el.style.animationPlayState = 'paused';
140
+ }
141
+ else {
142
+ el.style.opacity = '0';
143
+ el.style.animation = 'none';
144
+ el.style.transform = centered;
145
+ }
146
+ });
147
+ };
148
+ });
149
+ // Capture frames
150
+ let lastLog = -1;
151
+ for (let frame = 0; frame < totalFrames; frame++) {
152
+ const t = frame / fps;
153
+ await page.evaluate((time) => { window.__seek?.(time); }, t);
154
+ const fp = path.join(tmpDir, `frame-${String(frame).padStart(6, '0')}.png`);
155
+ await page.screenshot({ path: fp, type: 'png' });
156
+ const pct = Math.round((frame / totalFrames) * 100);
157
+ if (pct >= lastLog + 10) {
158
+ lastLog = pct;
159
+ onProgress?.(frame, totalFrames);
160
+ }
161
+ }
162
+ await page.close();
163
+ }
164
+ finally {
165
+ await browser.close();
166
+ }
167
+ onProgress?.(totalFrames, totalFrames);
168
+ // ffmpeg stitch
169
+ await new Promise((resolve, reject) => {
170
+ const ffmpeg = (0, child_process_1.spawn)('ffmpeg', [
171
+ '-y', '-framerate', String(fps), '-i', framePattern,
172
+ '-c:v', 'libx264', '-preset', 'medium', '-crf', '18',
173
+ '-pix_fmt', 'yuv420p', '-movflags', '+faststart', absOutput,
174
+ ], { stdio: ['ignore', 'pipe', 'pipe'] });
175
+ let stderr = '';
176
+ ffmpeg.stderr.on('data', (d) => { stderr += d.toString(); });
177
+ ffmpeg.on('close', (code) => {
178
+ if (code === 0)
179
+ resolve();
180
+ else
181
+ reject(new Error(`ffmpeg exit ${code}: ${stderr.slice(-400)}`));
182
+ });
183
+ ffmpeg.on('error', reject);
184
+ });
185
+ if (!keepFrames)
186
+ fs.rmSync(tmpDir, { recursive: true, force: true });
187
+ return absOutput;
188
+ }
189
+ //# sourceMappingURL=video-render.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"video-render.js","sourceRoot":"","sources":["../../src/tools/video-render.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,24 @@
1
1
  import type { ToolDefinition } from '../providers/types.js';
2
+ /**
3
+ * Web Search — multi-provider with graceful fallback.
4
+ *
5
+ * Resolution order:
6
+ * 1. Tavily (process.env.TAVILY_API_KEY) — AI-tuned, best snippets, 1000/mo free
7
+ * 2. Serper (process.env.SERPER_API_KEY) — Google results passthrough, 2500/mo free
8
+ * 3. DuckDuckGo HTML scrape — no key required, but brittle (DDG changes
9
+ * its markup periodically; the scraper rots).
10
+ *
11
+ * If ALL THREE fail, we return an explicit `Error: web search unavailable...`
12
+ * string. This is critical — the previous implementation silently returned
13
+ * `"No results found for: <query>"` on scraper breakage, which the calling
14
+ * agents interpreted as a real empty result and then re-queried 15+ times
15
+ * burning tokens (see :council Pavle / SpaceX incidents, 2026-06-26). Loud
16
+ * errors make agents stop retrying and try a different tool (e.g. web_fetch
17
+ * to a known URL).
18
+ *
19
+ * Tool interface (name, params, return shape) is unchanged from the
20
+ * original so the agent loop and existing tests keep working.
21
+ */
2
22
  export interface WebSearchInput {
3
23
  query: string;
4
24
  max_results?: number;