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.
- package/README.md +56 -4
- package/dist/agent/compactor.d.ts +26 -0
- package/dist/agent/compactor.js +156 -0
- package/dist/agent/compactor.js.map +1 -0
- package/dist/agent/context.d.ts +4 -0
- package/dist/agent/context.js +38 -0
- package/dist/agent/context.js.map +1 -1
- package/dist/agent/design.d.ts +17 -0
- package/dist/agent/design.js +175 -0
- package/dist/agent/design.js.map +1 -0
- package/dist/agent/loop.js +24 -1
- package/dist/agent/loop.js.map +1 -1
- package/dist/agent/system-prompt.d.ts +1 -1
- package/dist/agent/system-prompt.js +14 -3
- package/dist/agent/system-prompt.js.map +1 -1
- package/dist/cli/display.js +46 -5
- package/dist/cli/display.js.map +1 -1
- package/dist/cli/index.js +323 -46
- package/dist/cli/index.js.map +1 -1
- package/dist/config/defaults.js +8 -1
- package/dist/config/defaults.js.map +1 -1
- package/dist/config/project-config.d.ts +6 -0
- package/dist/config/project-config.js +2 -0
- package/dist/config/project-config.js.map +1 -1
- package/dist/dream/dream.d.ts +71 -0
- package/dist/dream/dream.js +217 -0
- package/dist/dream/dream.js.map +1 -0
- package/dist/dream/okf.d.ts +10 -0
- package/dist/dream/okf.js +280 -0
- package/dist/dream/okf.js.map +1 -0
- package/dist/dream/parser.d.ts +60 -0
- package/dist/dream/parser.js +176 -0
- package/dist/dream/parser.js.map +1 -0
- package/dist/dream/reconcile.d.ts +69 -0
- package/dist/dream/reconcile.js +303 -0
- package/dist/dream/reconcile.js.map +1 -0
- package/dist/kanban/index.d.ts +5 -0
- package/dist/kanban/index.js +11 -0
- package/dist/kanban/index.js.map +1 -0
- package/dist/kanban/pipeline.d.ts +16 -0
- package/dist/kanban/pipeline.js +910 -0
- package/dist/kanban/pipeline.js.map +1 -0
- package/dist/kanban/server.d.ts +5 -0
- package/dist/kanban/server.js +820 -0
- package/dist/kanban/server.js.map +1 -0
- package/dist/kanban/types.d.ts +75 -0
- package/dist/kanban/types.js +6 -0
- package/dist/kanban/types.js.map +1 -0
- package/dist/learnlight/driven.d.ts +2 -0
- package/dist/learnlight/driven.js +109 -0
- package/dist/learnlight/driven.js.map +1 -0
- package/dist/learnlight/index.d.ts +4 -0
- package/dist/learnlight/index.js +32 -0
- package/dist/learnlight/index.js.map +1 -0
- package/dist/learnlight/lesson-prep.d.ts +36 -0
- package/dist/learnlight/lesson-prep.js +224 -0
- package/dist/learnlight/lesson-prep.js.map +1 -0
- package/dist/learnlight/report.d.ts +2 -0
- package/dist/learnlight/report.js +37 -0
- package/dist/learnlight/report.js.map +1 -0
- package/dist/learnlight/types.d.ts +72 -0
- package/dist/learnlight/types.js +6 -0
- package/dist/learnlight/types.js.map +1 -0
- package/dist/machina/index.d.ts +16 -0
- package/dist/machina/index.js +61 -0
- package/dist/machina/index.js.map +1 -0
- package/dist/machina/render-html.d.ts +2 -0
- package/dist/machina/render-html.js +189 -0
- package/dist/machina/render-html.js.map +1 -0
- package/dist/machina/render-terminal.d.ts +2 -0
- package/dist/machina/render-terminal.js +92 -0
- package/dist/machina/render-terminal.js.map +1 -0
- package/dist/machina/spec.d.ts +61 -0
- package/dist/machina/spec.js +124 -0
- package/dist/machina/spec.js.map +1 -0
- package/dist/machina/verify.d.ts +27 -0
- package/dist/machina/verify.js +85 -0
- package/dist/machina/verify.js.map +1 -0
- package/dist/perception/graph-store.d.ts +11 -0
- package/dist/perception/graph-store.js +33 -0
- package/dist/perception/graph-store.js.map +1 -1
- package/dist/perception/index.d.ts +1 -1
- package/dist/perception/index.js +2 -1
- package/dist/perception/index.js.map +1 -1
- package/dist/providers/anthropic.js +1 -1
- package/dist/providers/anthropic.js.map +1 -1
- package/dist/providers/factory.d.ts +49 -0
- package/dist/providers/factory.js +99 -0
- package/dist/providers/factory.js.map +1 -1
- package/dist/providers/google.js +1 -1
- package/dist/providers/google.js.map +1 -1
- package/dist/providers/openai-compatible.js +81 -50
- package/dist/providers/openai-compatible.js.map +1 -1
- package/dist/rem/graph.d.ts +72 -0
- package/dist/rem/graph.js +139 -0
- package/dist/rem/graph.js.map +1 -0
- package/dist/rem/index.d.ts +16 -0
- package/dist/rem/index.js +60 -0
- package/dist/rem/index.js.map +1 -0
- package/dist/rem/render-html.d.ts +2 -0
- package/dist/rem/render-html.js +189 -0
- package/dist/rem/render-html.js.map +1 -0
- package/dist/rem/render-terminal.d.ts +4 -0
- package/dist/rem/render-terminal.js +94 -0
- package/dist/rem/render-terminal.js.map +1 -0
- package/dist/research/council.d.ts +27 -0
- package/dist/research/council.js +263 -0
- package/dist/research/council.js.map +1 -0
- package/dist/research/research.d.ts +24 -0
- package/dist/research/research.js +116 -0
- package/dist/research/research.js.map +1 -0
- package/dist/ruby/alternator.d.ts +36 -1
- package/dist/ruby/alternator.js +40 -31
- package/dist/ruby/alternator.js.map +1 -1
- package/dist/ruby/stats.js +10 -11
- package/dist/ruby/stats.js.map +1 -1
- package/dist/ruby/types.js +1 -1
- package/dist/ruby/types.js.map +1 -1
- package/dist/safety/permissions.d.ts +8 -0
- package/dist/safety/permissions.js +12 -0
- package/dist/safety/permissions.js.map +1 -1
- package/dist/setup/provider-registry.js +14 -0
- package/dist/setup/provider-registry.js.map +1 -1
- package/dist/setup/provider-test.js +24 -2
- package/dist/setup/provider-test.js.map +1 -1
- package/dist/setup/telegram-wizard.d.ts +57 -0
- package/dist/setup/telegram-wizard.js +343 -0
- package/dist/setup/telegram-wizard.js.map +1 -0
- package/dist/tools/audio-transcribe.d.ts +20 -0
- package/dist/tools/audio-transcribe.js +39 -28
- package/dist/tools/audio-transcribe.js.map +1 -1
- package/dist/tools/browser.js +8 -10
- package/dist/tools/browser.js.map +1 -1
- package/dist/tools/gmail-tool.d.ts +15 -0
- package/dist/tools/gmail-tool.js +361 -0
- package/dist/tools/gmail-tool.js.map +1 -0
- package/dist/tools/read-file.js +13 -0
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/telegram-bot.js +103 -20
- package/dist/tools/telegram-bot.js.map +1 -1
- package/dist/tools/telegram-voice.d.ts +22 -0
- package/dist/tools/telegram-voice.js +203 -0
- package/dist/tools/telegram-voice.js.map +1 -0
- package/dist/tools/telegram.d.ts +6 -1
- package/dist/tools/telegram.js +115 -5
- package/dist/tools/telegram.js.map +1 -1
- package/dist/tools/video-render.d.ts +11 -0
- package/dist/tools/video-render.js +189 -0
- package/dist/tools/video-render.js.map +1 -0
- package/dist/tools/web-search.d.ts +20 -0
- package/dist/tools/web-search.js +134 -38
- package/dist/tools/web-search.js.map +1 -1
- package/dist/util/errors.js +6 -0
- package/dist/util/errors.js.map +1 -1
- package/dist/viz/index.js +816 -30
- package/dist/viz/index.js.map +1 -1
- package/dist/viz/reader.d.ts +33 -0
- package/dist/viz/reader.js +343 -0
- package/dist/viz/reader.js.map +1 -0
- package/package.json +3 -1
package/dist/tools/telegram.js
CHANGED
|
@@ -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:
|
|
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:
|
|
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":";AAAA,2BAA2B;AAC3B,2BAA2B;AAC3B,gFAAgF;AAChF,iEAAiE;AACjE,8EAA8E;AAC9E,wEAAwE;AACxE,gFAAgF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA+ChF,kCAuHC;AApKD,2CAA6B;AAC7B,uCAAyB;AACzB,uCAAyB;AACzB,iDAAgD;AAahD,gFAAgF;AAChF,mBAAmB;AACnB,gFAAgF;AAEhF,SAAS,UAAU;IACjB,MAAM,UAAU,GAAG;QACjB,sBAAsB,EAAE,eAAe,EAAE,kBAAkB,EAAE,UAAU;KACxE,CAAC;IACF,KAAK,MAAM,GAAG,IAAI,UAAU,EAAE,CAAC;QAC7B,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAA,wBAAQ,EAAC,SAAS,GAAG,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC3D,OAAO,MAAM,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC;QAClC,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IACD,2BAA2B;IAC3B,MAAM,WAAW,GAAG;QAClB,+BAA+B,EAAE,wBAAwB;QACzD,2BAA2B,EAAE,oBAAoB;KAClD,CAAC;IACF,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,IAAI,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC;IACjC,CAAC;IACD,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;AAChD,CAAC;AAED,gFAAgF;AAChF,uBAAuB;AACvB,gFAAgF;AAEzE,KAAK,UAAU,WAAW,CAAC,OAAsB;IACtD,MAAM,EACJ,QAAQ,EAAE,MAAM,EAChB,GAAG,GAAG,EAAE,EAAE,KAAK,GAAG,IAAI,EAAE,MAAM,GAAG,IAAI,EACrC,UAAU,GAAG,KAAK,EAAE,UAAU,GAC/B,GAAG,OAAO,CAAC;IAEZ,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,OAAO,EAAE,CAAC,CAAC;IAE3E,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvC,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC;QAAE,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAEtE,MAAM,MAAM,GAAG,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,EAAE,EAAE,aAAa,CAAC,CAAC,CAAC;IACrE,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;IAEzD,YAAY;IACZ,MAAM,SAAS,GAAG,wDAAa,gBAAgB,GAAC,CAAC;IACjD,MAAM,OAAO,GAAG,MAAM,SAAS,CAAC,MAAM,CAAC;QACrC,cAAc,EAAE,UAAU,EAAE;QAC5B,QAAQ,EAAE,IAAI;QACd,IAAI,EAAE,CAAC,cAAc,EAAE,eAAe,EAAE,yBAAyB,CAAC;KACnE,CAAC,CAAC;IAEH,IAAI,WAAW,GAAG,CAAC,CAAC;IAEpB,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC;QACrC,MAAM,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,EAAE,CAAC,CAAC;QAChE,MAAM,IAAI,CAAC,IAAI,CAAC,UAAU,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAEpF,MAAM,YAAY,GAAG,OAAO,CAAC,QAAQ;YACnC,CAAC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;gBACxB,MAAM,EAAE,GAAG,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;gBACjD,OAAO,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC,WAAW,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YACpD,CAAC,CAAC,CAAC,CAAC;QAEN,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,GAAG,GAAG,CAAC,CAAC;QAE5C,mCAAmC;QACnC,MAAM,IAAI,CAAC,QAAQ,CAAC,GAAG,EAAE;YACvB,MAAM,KAAK,GAAG,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC;YAC9C,KAAK,CAAC,EAAE,GAAG,gBAAgB,CAAC;YAC5B,KAAK,CAAC,WAAW,GAAG,mEAAmE,CAAC;YACxF,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;YAEhC,MAAc,CAAC,MAAM,GAAG,CAAC,CAAS,EAAE,EAAE;gBACrC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,EAAO,EAAE,EAAE;oBACxD,MAAM,KAAK,GAAG,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,IAAI,GAAG,CAAC,CAAC;oBAClD,MAAM,IAAI,GAAG,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,CAAC;oBACnD,MAAM,GAAG,GAAG,UAAU,CAAC,EAAE,CAAC,OAAO,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC;oBAChD,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,SAAS,IAAI,QAAQ,CAAC;oBACnD,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CAAC,QAAQ,IAAI,SAAS,CAAC;oBAClD,MAAM,QAAQ,GAAG,uBAAuB,CAAC;oBAEzC,IAAI,CAAC,GAAG,KAAK,EAAE,CAAC;wBACd,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;wBACvB,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;wBAC5B,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;oBAChC,CAAC;yBAAM,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,GAAG,EAAE,CAAC;wBACzC,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,CAAC;wBAC1B,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,SAAS,IAAI,GAAG,uBAAuB,CAAC;wBAChE,EAAE,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,OAAO,GAAG,CAAC;wBACzC,EAAE,CAAC,KAAK,CAAC,kBAAkB,GAAG,QAAQ,CAAC;oBACzC,CAAC;yBAAM,IAAI,CAAC,IAAI,KAAK,GAAG,GAAG,IAAI,CAAC,GAAG,IAAI,EAAE,CAAC;wBACxC,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;wBACvB,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;wBAC5B,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;oBAChC,CAAC;yBAAM,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,GAAG,IAAI,GAAG,GAAG,EAAE,CAAC;wBACvC,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC;wBACzB,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,GAAG,QAAQ,IAAI,GAAG,sBAAsB,CAAC;wBAC9D,EAAE,CAAC,KAAK,CAAC,cAAc,GAAG,IAAI,OAAO,GAAG,CAAC;wBACzC,EAAE,CAAC,KAAK,CAAC,kBAAkB,GAAG,QAAQ,CAAC;oBACzC,CAAC;yBAAM,CAAC;wBACN,EAAE,CAAC,KAAK,CAAC,OAAO,GAAG,GAAG,CAAC;wBACvB,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,MAAM,CAAC;wBAC5B,EAAE,CAAC,KAAK,CAAC,SAAS,GAAG,QAAQ,CAAC;oBAChC,CAAC;gBACH,CAAC,CAAC,CAAC;YACL,CAAC,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,iBAAiB;QACjB,IAAI,OAAO,GAAG,CAAC,CAAC,CAAC;QACjB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,WAAW,EAAE,KAAK,EAAE,EAAE,CAAC;YACjD,MAAM,CAAC,GAAG,KAAK,GAAG,GAAG,CAAC;YACtB,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE,GAAI,MAAc,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;YACtE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,SAAS,MAAM,CAAC,KAAK,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YAC5E,MAAM,IAAI,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;YAEjD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,GAAG,CAAC,CAAC;YACpD,IAAI,GAAG,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;gBAAC,OAAO,GAAG,GAAG,CAAC;gBAAC,UAAU,EAAE,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;YAAC,CAAC;QAC/E,CAAC;QACD,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;IACrB,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;IACxB,CAAC;IACD,UAAU,EAAE,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IAEvC,gBAAgB;IAChB,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,MAAM,GAAG,IAAA,qBAAK,EAAC,QAAQ,EAAE;YAC7B,IAAI,EAAE,YAAY,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,IAAI,EAAE,YAAY;YACnD,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI;YACpD,UAAU,EAAE,SAAS,EAAE,WAAW,EAAE,YAAY,EAAE,SAAS;SAC5D,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC;QAE1C,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,CAAS,EAAE,EAAE,GAAG,MAAM,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACrE,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAY,EAAE,EAAE;YAClC,IAAI,IAAI,KAAK,CAAC;gBAAE,OAAO,EAAE,CAAC;;gBACrB,MAAM,CAAC,IAAI,KAAK,CAAC,eAAe,IAAI,KAAK,MAAM,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC;QACH,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC7B,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC,UAAU;QAAE,EAAE,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACrE,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -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;
|