video-context-mcp-server 1.1.5 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +129 -31
- package/dist/generated/version.d.ts +1 -1
- package/dist/generated/version.js +1 -1
- package/dist/index.js +12 -1
- package/dist/index.js.map +1 -1
- package/dist/services/ffmpeg.d.ts +37 -0
- package/dist/services/ffmpeg.d.ts.map +1 -1
- package/dist/services/ffmpeg.js +175 -0
- package/dist/services/ffmpeg.js.map +1 -1
- package/dist/services/providerRouter.d.ts +9 -0
- package/dist/services/providerRouter.d.ts.map +1 -1
- package/dist/services/providerRouter.js +14 -0
- package/dist/services/providerRouter.js.map +1 -1
- package/dist/services/redactionDetector.d.ts +187 -0
- package/dist/services/redactionDetector.d.ts.map +1 -0
- package/dist/services/redactionDetector.js +766 -0
- package/dist/services/redactionDetector.js.map +1 -0
- package/dist/tools/analyzeVideo.d.ts.map +1 -1
- package/dist/tools/analyzeVideo.js +4 -3
- package/dist/tools/analyzeVideo.js.map +1 -1
- package/dist/tools/redactSensitive.d.ts +11 -0
- package/dist/tools/redactSensitive.d.ts.map +1 -0
- package/dist/tools/redactSensitive.js +466 -0
- package/dist/tools/redactSensitive.js.map +1 -0
- package/dist/tools/schemas.d.ts +53 -0
- package/dist/tools/schemas.d.ts.map +1 -1
- package/dist/tools/schemas.js +87 -0
- package/dist/tools/schemas.js.map +1 -1
- package/dist/tools/summarizeVideo.d.ts +17 -0
- package/dist/tools/summarizeVideo.d.ts.map +1 -1
- package/dist/tools/summarizeVideo.js +36 -2
- package/dist/tools/summarizeVideo.js.map +1 -1
- package/dist/types/redaction.d.ts +32 -0
- package/dist/types/redaction.d.ts.map +1 -0
- package/dist/types/redaction.js +5 -0
- package/dist/types/redaction.js.map +1 -0
- package/dist/utils/license.js +1 -1
- package/dist/utils/license.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -17,10 +17,11 @@ An MCP server that gives coding assistants (GitHub Copilot, Cursor, Claude Code)
|
|
|
17
17
|
- 🔊 **Audio-Enhanced Analysis** — Auto-transcribes audio and injects transcripts into AI prompts for richer results (GLM/Kimi/Qwen)
|
|
18
18
|
- 🔄 **Multi-Provider Support** — Choose between GLM-4.6V, Qwen3.6, Kimi K2.6, Gemini, or MiMo-V2 Omni
|
|
19
19
|
- 🎯 **Smart Video Handling** — Extracts keyframes from long videos to reduce token usage
|
|
20
|
-
- 🗣️ **Text-to-Speech** — Convert text to natural speech audio (MiniMax TTS)
|
|
21
|
-
- 🖼️ **Image Generation** — Generate images from text prompts (MiniMax image-01)
|
|
22
|
-
- 🎬 **Video Generation** — Generate videos from text or image prompts (MiniMax Hailuo)
|
|
23
|
-
- 🎵 **Music Generation** — Generate music from prompts and lyrics (MiniMax music-2.6)
|
|
20
|
+
- 🗣️ **Text-to-Speech** ⚠️ _Experimental_ — Convert text to natural speech audio (MiniMax TTS)
|
|
21
|
+
- 🖼️ **Image Generation** ⚠️ _Experimental_ — Generate images from text prompts (MiniMax image-01)
|
|
22
|
+
- 🎬 **Video Generation** ⚠️ _Experimental_ — Generate videos from text or image prompts (MiniMax Hailuo)
|
|
23
|
+
- 🎵 **Music Generation** ⚠️ _Experimental_ — Generate music from prompts and lyrics (MiniMax music-2.6)
|
|
24
|
+
- 🔒 **Sensitive Redaction** ⚠️ _Experimental_ — Blur, pixelate, or blackout API keys and secrets in screen recordings (manual coordinates or AI-assisted detection)
|
|
24
25
|
- ⭐ **Pro tier** — Extended frame extraction, multi-platform downloads, higher resolution, media generation. [Learn more ↓](#pro)
|
|
25
26
|
|
|
26
27
|
---
|
|
@@ -198,6 +199,91 @@ Create `.mcp.json` in your project root:
|
|
|
198
199
|
|
|
199
200
|
</details>
|
|
200
201
|
|
|
202
|
+
<details>
|
|
203
|
+
<summary><strong>Google Antigravity</strong></summary>
|
|
204
|
+
|
|
205
|
+
Antigravity stores its MCP configuration at `~/.gemini/antigravity/mcp_config.json`.
|
|
206
|
+
|
|
207
|
+
**Option A — MCP Store UI**
|
|
208
|
+
|
|
209
|
+
1. Click the `...` dropdown at the top of the Antigravity agent panel and open the **MCP Store**.
|
|
210
|
+
2. Click **Manage MCP Servers** → **View raw config**.
|
|
211
|
+
3. Add the following entry to your `mcpServers` object:
|
|
212
|
+
|
|
213
|
+
**Option B — Direct Edit**
|
|
214
|
+
|
|
215
|
+
Open `~/.gemini/antigravity/mcp_config.json` and add `videoMcp`:
|
|
216
|
+
|
|
217
|
+
```json
|
|
218
|
+
{
|
|
219
|
+
"mcpServers": {
|
|
220
|
+
"videoMcp": {
|
|
221
|
+
"command": "video-context-mcp",
|
|
222
|
+
"env": {
|
|
223
|
+
"GEMINI_API_KEY": "your-gemini-key",
|
|
224
|
+
"Z_AI_API_KEY": "your-zai-key",
|
|
225
|
+
"DASHSCOPE_API_KEY": "your-dashscope-key",
|
|
226
|
+
"MOONSHOT_API_KEY": "your-moonshot-key",
|
|
227
|
+
"MIMO_API_KEY": "your-mimo-key",
|
|
228
|
+
"DEEPGRAM_API_KEY": "your-deepgram-key",
|
|
229
|
+
"ASSEMBLYAI_API_KEY": "your-assemblyai-key",
|
|
230
|
+
"GROQ_API_KEY": "your-groq-key",
|
|
231
|
+
"MINIMAX_API_KEY": "your-minimax-key"
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
```
|
|
237
|
+
|
|
238
|
+
</details>
|
|
239
|
+
|
|
240
|
+
<details>
|
|
241
|
+
<summary><strong>OpenAI Codex</strong></summary>
|
|
242
|
+
|
|
243
|
+
Codex stores MCP configuration in `~/.codex/config.toml` (global) or `.codex/config.toml` in a trusted project root.
|
|
244
|
+
|
|
245
|
+
**Option A — CLI**
|
|
246
|
+
|
|
247
|
+
```bash
|
|
248
|
+
codex mcp add videoMcp \
|
|
249
|
+
--env GEMINI_API_KEY=your-gemini-key \
|
|
250
|
+
--env Z_AI_API_KEY=your-zai-key \
|
|
251
|
+
--env DASHSCOPE_API_KEY=your-dashscope-key \
|
|
252
|
+
--env MOONSHOT_API_KEY=your-moonshot-key \
|
|
253
|
+
--env MIMO_API_KEY=your-mimo-key \
|
|
254
|
+
--env DEEPGRAM_API_KEY=your-deepgram-key \
|
|
255
|
+
--env ASSEMBLYAI_API_KEY=your-assemblyai-key \
|
|
256
|
+
--env GROQ_API_KEY=your-groq-key \
|
|
257
|
+
--env MINIMAX_API_KEY=your-minimax-key \
|
|
258
|
+
-- video-context-mcp
|
|
259
|
+
```
|
|
260
|
+
|
|
261
|
+
Verify with `codex mcp --help` or type `/mcp` inside the Codex TUI.
|
|
262
|
+
|
|
263
|
+
**Option B — `config.toml`**
|
|
264
|
+
|
|
265
|
+
Add the following to `~/.codex/config.toml` (or a project-scoped `.codex/config.toml`):
|
|
266
|
+
|
|
267
|
+
```toml
|
|
268
|
+
[mcp_servers.videoMcp]
|
|
269
|
+
command = "video-context-mcp"
|
|
270
|
+
|
|
271
|
+
[mcp_servers.videoMcp.env]
|
|
272
|
+
GEMINI_API_KEY = "your-gemini-key"
|
|
273
|
+
Z_AI_API_KEY = "your-zai-key"
|
|
274
|
+
DASHSCOPE_API_KEY = "your-dashscope-key"
|
|
275
|
+
MOONSHOT_API_KEY = "your-moonshot-key"
|
|
276
|
+
MIMO_API_KEY = "your-mimo-key"
|
|
277
|
+
DEEPGRAM_API_KEY = "your-deepgram-key"
|
|
278
|
+
ASSEMBLYAI_API_KEY = "your-assemblyai-key"
|
|
279
|
+
GROQ_API_KEY = "your-groq-key"
|
|
280
|
+
MINIMAX_API_KEY = "your-minimax-key"
|
|
281
|
+
```
|
|
282
|
+
|
|
283
|
+
> **Important:** This file contains sensitive API keys. **Never commit it to source control.** Ensure it is added to your `.gitignore` file.
|
|
284
|
+
|
|
285
|
+
</details>
|
|
286
|
+
|
|
201
287
|
<details>
|
|
202
288
|
<summary><strong>Run via npx (no global install)</strong></summary>
|
|
203
289
|
|
|
@@ -252,19 +338,20 @@ claude mcp add \
|
|
|
252
338
|
|
|
253
339
|
## Available Tools
|
|
254
340
|
|
|
255
|
-
| Tool | Description
|
|
256
|
-
| ----------------------- |
|
|
257
|
-
| `analyze_video` | Ask questions about video content
|
|
258
|
-
| `summarize_video` | Generate a structured video summary
|
|
259
|
-
| `extract_frames` | Extract frames from a video
|
|
260
|
-
| `search_timestamp` | Find when something specific happens
|
|
261
|
-
| `get_video_info` | Get video metadata
|
|
262
|
-
| `transcribe_video` | Transcribe audio/speech from a video
|
|
263
|
-
| `
|
|
264
|
-
| `
|
|
265
|
-
| `
|
|
266
|
-
| `
|
|
267
|
-
| `
|
|
341
|
+
| Tool | Description | Key Parameters |
|
|
342
|
+
| ----------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
|
|
343
|
+
| `analyze_video` | Ask questions about video content | `videoPath`, `question`, `provider?` |
|
|
344
|
+
| `summarize_video` | Generate a structured video summary | `videoPath`, `provider?` |
|
|
345
|
+
| `extract_frames` | Extract frames from a video | `videoPath`, `mode`, `count/intervalSec/timestamps/sceneThreshold`, `maxImages?`, `offset?` |
|
|
346
|
+
| `search_timestamp` | Find when something specific happens | `videoPath`, `query`, `provider?` |
|
|
347
|
+
| `get_video_info` | Get video metadata | `videoPath` |
|
|
348
|
+
| `transcribe_video` | Transcribe audio/speech from a video | `videoPath`, `provider?`, `language?`, `diarize?`, `translate?`, `outputFormat?` |
|
|
349
|
+
| `redact_sensitive` ⚠️ | Blur, pixelate, or blackout sensitive regions in a video _(experimental)_ | `videoPath`, `effect?`, `regions?`, `detectionMode?`, `previewOnly?`, `provider?` |
|
|
350
|
+
| `text_to_speech` ⚠️ | Convert text to natural speech audio _(experimental)_ | `text`, `model?`, `voice_id?`, `speed?`, `vol?`, `pitch?`, `emotion?`, `format?` |
|
|
351
|
+
| `generate_image` ⚠️ | Generate images from a text prompt _(experimental)_ | `prompt`, `model?`, `aspect_ratio?`, `n?`, `prompt_optimizer?` |
|
|
352
|
+
| `generate_video` ⚠️ | Generate video from text/image prompt _(experimental)_ | `prompt?`, `model?`, `first_frame_image?`, `duration?`, `resolution?` |
|
|
353
|
+
| `generate_music` ⚠️ | Generate music from prompt + lyrics _(experimental)_ | `prompt`, `lyrics?`, `model?`, `is_instrumental?`, `lyrics_optimizer?` |
|
|
354
|
+
| `query_generation_task` | Poll async generation task status + download result | `task_id` |
|
|
268
355
|
|
|
269
356
|
All tools accept local file paths, `file://` URIs, and remote `http(s)` URLs. Remote videos are downloaded automatically.
|
|
270
357
|
|
|
@@ -304,6 +391,16 @@ All tools accept local file paths, `file://` URIs, and remote `http(s)` URLs. Re
|
|
|
304
391
|
|
|
305
392
|
> "Transcribe the audio from `https://vimeo.com/123456789`"
|
|
306
393
|
|
|
394
|
+
**Redacting sensitive regions**
|
|
395
|
+
|
|
396
|
+
> "Redact the API key visible in `./screen-recording.mp4` at region x=100 y=200 width=400 height=30"
|
|
397
|
+
|
|
398
|
+
> "Preview the redaction before applying it: use previewOnly: true with `./recording.mp4`"
|
|
399
|
+
|
|
400
|
+
> "Blur the password field in `./demo.mp4` (region x=50 y=300 width=250 height=40) from 5s to 20s"
|
|
401
|
+
|
|
402
|
+
> "Auto-detect and blur sensitive info in `./screen-recording.mp4`" (set `detectionMode: ai`, `allowRemoteDetection: true`)
|
|
403
|
+
|
|
307
404
|
---
|
|
308
405
|
|
|
309
406
|
## API Keys
|
|
@@ -320,7 +417,7 @@ Set all keys to get the full fallback chain. The server will try Gemini first, t
|
|
|
320
417
|
| ----------------------------------------------- | ------------------- | --------------------------------------------------------------------------------------------- |
|
|
321
418
|
| **Gemini 3 Flash Preview** (default, free-tier) | `GEMINI_API_KEY` | [Get key](https://aistudio.google.com/app/apikey) |
|
|
322
419
|
| **GLM-4.6V** (free-tier) | `Z_AI_API_KEY` | [Get key](https://z.ai/manage-apikey/apikey-list) |
|
|
323
|
-
| **Qwen3.6** (
|
|
420
|
+
| **Qwen3.6** (paid) | `DASHSCOPE_API_KEY` | [Get key](https://modelstudio.console.alibabacloud.com/ap-southeast-1?tab=dashboard#/api-key) |
|
|
324
421
|
| **Kimi K2.6** (paid) | `MOONSHOT_API_KEY` | [Get key](https://platform.kimi.ai) |
|
|
325
422
|
| **MiMo-V2 Omni** (paid) | `MIMO_API_KEY` | [Get key](https://platform.xiaomimimo.com/#/console/api-keys) |
|
|
326
423
|
|
|
@@ -353,13 +450,13 @@ When an audio key is missing or an audio API call fails at runtime, tools automa
|
|
|
353
450
|
|
|
354
451
|
| Feature | Gemini 3 Flash Preview (default) | GLM-4.6V | Qwen3.6 | Kimi K2.6 | MiMo-V2 Omni |
|
|
355
452
|
| -------------- | ---------------------------------------------- | ------------------------------------------------------ | ------------------------------------------------------ | ---------------------------------------------- | ------------------------------------------------------ |
|
|
356
|
-
| Price | Free tier available | Free tier available (GLM-4.6V-Flash) |
|
|
453
|
+
| Price | Free tier available | Free tier available (GLM-4.6V-Flash) | $0.50 input / $3.00 output per 1M tokens | $0.60 input / $3.00 output per 1M tokens | $0.40 input / $2.00 output per 1M tokens |
|
|
357
454
|
| Video formats | mp4, mpeg, mov, avi, flv, mpg, webm, wmv, 3gpp | mp4, avi, mov, wmv, webm, m4v | mp4, avi, mov, wmv, webm, m4v | mp4, mpeg, mov, avi, flv, mpg, webm, wmv, 3gpp | mp4, mov, avi, wmv |
|
|
358
455
|
| Context window | 1M tokens | 128K tokens | 1M tokens | 256K tokens | 256K tokens |
|
|
359
456
|
| Max file size | 2 GB | ~12 MB base64 / frames fallback / **unlimited w/ S3↓** | ~10 MB base64 / frames fallback / **unlimited w/ S3↓** | 100 MB | ~10 MB base64 / frames fallback / **unlimited w/ S3↓** |
|
|
360
|
-
| Best for | **Default** — free, no card required | Free, no card required |
|
|
457
|
+
| Best for | **Default** — free, no card required | Free, no card required | SOTA agentic coding | Paid — broadest format support | Paid — thinking mode; multimodal |
|
|
361
458
|
|
|
362
|
-
**Gemini 3 Flash Preview** is the default — it offers a free tier with no credit card required, 1M context window, and 2 GB file support. **GLM-4.6V** is the second fallback — also free with no card required. **Qwen3.6** is
|
|
459
|
+
**Gemini 3 Flash Preview** is the default — it offers a free tier with no credit card required, 1M context window, and 2 GB file support. **GLM-4.6V** is the second fallback — also free with no card required. **Qwen3.6** is a paid provider at $0.50 input / $3.00 output per 1M tokens with SOTA agentic coding performance. **Kimi K2.6** is a paid provider with the broadest video format support. **MiMo-V2 Omni** is Xiaomi's multimodal model with thinking mode support ($0.40 input / $2.00 output per 1M tokens).
|
|
363
460
|
|
|
364
461
|
Set `VIDEO_MCP_DEFAULT_PROVIDER=gemini`, `glm`, `qwen`, `kimi`, or `mimo` to change the default provider used when a tool call does not pass `provider`. If a tool call includes `provider`, that per-call value takes precedence.
|
|
365
462
|
|
|
@@ -737,9 +834,9 @@ vmcp cache clear:all --yes # skip confirmation
|
|
|
737
834
|
|
|
738
835
|
### Pro
|
|
739
836
|
|
|
740
|
-
| Variable | Description
|
|
741
|
-
| ----------------------- |
|
|
742
|
-
| `VIDEO_MCP_LICENSE_KEY` | Pro license key. Unlocks extended frames, platform downloads beyond YouTube,
|
|
837
|
+
| Variable | Description | Default |
|
|
838
|
+
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------- |
|
|
839
|
+
| `VIDEO_MCP_LICENSE_KEY` | Pro license key. Unlocks extended frames, platform downloads beyond YouTube, resolution above 720p, media generation, and sensitive video redaction. Valid 1 year. | — |
|
|
743
840
|
|
|
744
841
|
### Complete Example Config
|
|
745
842
|
|
|
@@ -841,14 +938,15 @@ Restart the MCP server. **Keep your cookies file private** — never commit it t
|
|
|
841
938
|
|
|
842
939
|
## Pro
|
|
843
940
|
|
|
844
|
-
The free tier covers all core functionality. A **pro license** unlocks
|
|
941
|
+
The free tier covers all core functionality. A **pro license** unlocks five power features:
|
|
845
942
|
|
|
846
|
-
| Feature
|
|
847
|
-
|
|
|
848
|
-
| 🖼️ Extended frame extraction (`summarize_video`)
|
|
849
|
-
| 🌐 Platform video downloads
|
|
850
|
-
| 📺 Download resolution
|
|
851
|
-
| 🗣️ Media generation (TTS, image, video, music)
|
|
943
|
+
| Feature | Free | Pro |
|
|
944
|
+
| ------------------------------------------------- | ------------------- | --------------------------------- |
|
|
945
|
+
| 🖼️ Extended frame extraction (`summarize_video`) | Capped at 50 frames | Default 100; set `0` for uncapped |
|
|
946
|
+
| 🌐 Platform video downloads | YouTube only | Almost all video platforms |
|
|
947
|
+
| 📺 Download resolution | Capped at 720p | Uncapped |
|
|
948
|
+
| 🗣️ Media generation (TTS, image, video, music) ⚠️ | Not available | Full access _(experimental)_ |
|
|
949
|
+
| 🔒 Sensitive video redaction ⚠️ | Not available | Full access _(experimental)_ |
|
|
852
950
|
|
|
853
951
|
> Local files and direct `http(s)://` video URLs work for all users — the platform gate only applies to yt-dlp URLs (YouTube, Vimeo, TikTok, Bilibili, etc.).
|
|
854
952
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "1.1
|
|
1
|
+
export declare const VERSION = "1.2.1";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -13,6 +13,7 @@ import { generateImageTool } from './tools/generateImage.js';
|
|
|
13
13
|
import { generateVideoTool } from './tools/generateVideo.js';
|
|
14
14
|
import { generateMusicTool } from './tools/generateMusic.js';
|
|
15
15
|
import { queryGenerationTaskTool } from './tools/queryGenerationTask.js';
|
|
16
|
+
import { redactSensitiveTool } from './tools/redactSensitive.js';
|
|
16
17
|
import { setLoggerServer, logProgress } from './utils/logger.js';
|
|
17
18
|
import { initLicenseValidation } from './utils/license.js';
|
|
18
19
|
import { sweepStaleTempDirs } from './utils/tempFiles.js';
|
|
@@ -21,7 +22,7 @@ import { resolveYtDlpPath } from './utils/ytDlpPath.js';
|
|
|
21
22
|
import { registerSessionCleanup, sweepStaleRelayKeys, } from './services/s3Relay.js';
|
|
22
23
|
import { triggerUpdateCheck, waitForUpdateCheck, wrapWithUpdateNotice, } from './utils/updateCheck.js';
|
|
23
24
|
import { VERSION } from './generated/version.js';
|
|
24
|
-
import { analyzeVideoSchema, summarizeVideoSchema, extractFramesSchema, searchTimestampSchema, getVideoInfoSchema, transcribeVideoSchema, textToSpeechSchema, generateImageSchema, generateVideoSchema, generateMusicSchema, queryGenerationTaskSchema, } from './tools/schemas.js';
|
|
25
|
+
import { analyzeVideoSchema, summarizeVideoSchema, extractFramesSchema, searchTimestampSchema, getVideoInfoSchema, transcribeVideoSchema, textToSpeechSchema, generateImageSchema, generateVideoSchema, generateMusicSchema, queryGenerationTaskSchema, redactSensitiveSchema, } from './tools/schemas.js';
|
|
25
26
|
/**
|
|
26
27
|
* Main entry point for the Video Context MCP Server
|
|
27
28
|
* Creates an MCP server, registers all video analysis tools, and connects via stdio
|
|
@@ -144,6 +145,16 @@ async function main() {
|
|
|
144
145
|
description: 'Query the status of an asynchronous generation task (e.g., video generation). Returns task status and downloads the result when complete.',
|
|
145
146
|
inputSchema: queryGenerationTaskSchema,
|
|
146
147
|
}, withUpdateCheck(queryGenerationTaskTool));
|
|
148
|
+
// Tool 12: redact_sensitive - Redact sensitive regions in a video
|
|
149
|
+
server.registerTool('redact_sensitive', {
|
|
150
|
+
title: 'Redact Sensitive Video Regions',
|
|
151
|
+
description: 'Redact sensitive regions in a video using blur, pixelate, or blackout effects. ' +
|
|
152
|
+
"For the simplest usage, just provide the video path and describe what to blur in the 'intent' field " +
|
|
153
|
+
"(e.g. 'blur the parts where it shows the api keys' or 'hide all passwords and credentials') — " +
|
|
154
|
+
'AI detection is enabled automatically. ' +
|
|
155
|
+
'Also supports manual region input (pixel coordinates) and preview mode for precise control.',
|
|
156
|
+
inputSchema: redactSensitiveSchema,
|
|
157
|
+
}, withUpdateCheck(redactSensitiveTool));
|
|
147
158
|
// Connect to VS Code via stdio transport
|
|
148
159
|
const transport = new StdioServerTransport();
|
|
149
160
|
await server.connect(transport);
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAEhF,uBAAuB;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAA;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAA;AACvD,OAAO,EACL,sBAAsB,EACtB,mBAAmB,GACpB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,oBAAoB,GACrB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAA;AAEhD,OAAO,EACL,kBAAkB,EAClB,oBAAoB,EACpB,mBAAmB,EACnB,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,yBAAyB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -80,4 +80,41 @@ export declare function detectSceneTimestamps(videoPath: string, threshold: numb
|
|
|
80
80
|
* @param outputPath - Path to write the .m4a audio file
|
|
81
81
|
*/
|
|
82
82
|
export declare function extractAudio(videoPath: string, outputPath: string): Promise<void>;
|
|
83
|
+
import type { RedactionPlan } from '../types/redaction.js';
|
|
84
|
+
/**
|
|
85
|
+
* Build an ffmpeg filter_complex graph for redacting rectangular regions.
|
|
86
|
+
*
|
|
87
|
+
* Each region becomes a crop → effect → overlay chain. Time-bounded regions
|
|
88
|
+
* use the `enable='between(t,start,end)'` overlay option.
|
|
89
|
+
*
|
|
90
|
+
* @param videoWidth - Source video width in pixels
|
|
91
|
+
* @param videoHeight - Source video height in pixels
|
|
92
|
+
* @param plan - Redaction plan with effect and regions
|
|
93
|
+
* @returns Filter graph string suitable for fluent-ffmpeg's `.complexFilter()`
|
|
94
|
+
*/
|
|
95
|
+
export declare function buildRedactionFilter(videoWidth: number, videoHeight: number, plan: RedactionPlan): {
|
|
96
|
+
filter: string;
|
|
97
|
+
outputLabel: string;
|
|
98
|
+
};
|
|
99
|
+
/**
|
|
100
|
+
* Apply redaction regions to a video file using ffmpeg.
|
|
101
|
+
*
|
|
102
|
+
* Builds a filter_complex graph and re-encodes the video with the
|
|
103
|
+
* redactions applied. Audio is copied when possible.
|
|
104
|
+
*
|
|
105
|
+
* @param inputPath - Path to the source video
|
|
106
|
+
* @param outputPath - Path to write the redacted video
|
|
107
|
+
* @param plan - Redaction plan with effect and regions
|
|
108
|
+
*/
|
|
109
|
+
export declare function applyRedactions(inputPath: string, outputPath: string, plan: RedactionPlan): Promise<void>;
|
|
110
|
+
/**
|
|
111
|
+
* Generate preview frames with drawbox overlays showing where redaction
|
|
112
|
+
* regions will be applied. Useful for dry-run / preview mode.
|
|
113
|
+
*
|
|
114
|
+
* @param inputPath - Path to the source video
|
|
115
|
+
* @param plan - Redaction plan (regions are shown as colored boxes)
|
|
116
|
+
* @param timestamps - Timestamps at which to capture preview frames
|
|
117
|
+
* @returns Array of JPEG buffers with drawbox overlays
|
|
118
|
+
*/
|
|
119
|
+
export declare function generatePreviewFrames(inputPath: string, plan: RedactionPlan, timestamps: number[]): Promise<Buffer[]>;
|
|
83
120
|
//# sourceMappingURL=ffmpeg.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ffmpeg.d.ts","sourceRoot":"","sources":["../../src/services/ffmpeg.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ffmpeg.d.ts","sourceRoot":"","sources":["../../src/services/ffmpeg.ts"],"names":[],"mappings":"AAUA,sEAAsE;AACtE,eAAO,MAAM,iBAAiB,IAAI,CAAA;AAElC,+EAA+E;AAC/E,eAAO,MAAM,kBAAkB,QAAgB,CAAA;AAC/C,sDAAsD;AACtD,eAAO,MAAM,sBAAsB,QAAgB,CAAA;AACnD,yFAAyF;AACzF,eAAO,MAAM,oBAAoB,QAAiB,CAQjD;AA+BD;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,MAAM,CAAA;IAChB,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,GAAG,EAAE,MAAM,CAAA;IACX,KAAK,EAAE,MAAM,CAAA;IACb,QAAQ,EAAE,MAAM,CAAA;IAChB,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,OAAO,CAAA;CAClB;AAED;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,aAAa,CAAC,CA4BxB;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,EAAE,CAAC,CA+BnB;AAED;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,EAAE,CAAC,CAyBnB;AAED;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAC7C,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,MAAM,EAAE,CAAC,CA2BnB;AAED;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,MAAM,EAAE,CAAC,CAwBnB;AAED;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAOf;AAmFD,OAAO,KAAK,EAAE,aAAa,EAAmB,MAAM,uBAAuB,CAAA;AAE3E;;;;;;;;;;GAUG;AACH,wBAAgB,oBAAoB,CAClC,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,EACnB,IAAI,EAAE,aAAa,GAClB;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAqEzC;AAED;;;;;;;;;GASG;AACH,wBAAsB,eAAe,CACnC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,aAAa,GAClB,OAAO,CAAC,IAAI,CAAC,CAgEf;AAED;;;;;;;;GAQG;AACH,wBAAsB,qBAAqB,CACzC,SAAS,EAAE,MAAM,EACjB,IAAI,EAAE,aAAa,EACnB,UAAU,EAAE,MAAM,EAAE,GACnB,OAAO,CAAC,MAAM,EAAE,CAAC,CAwCnB"}
|
package/dist/services/ffmpeg.js
CHANGED
|
@@ -3,6 +3,7 @@ import ffmpegInstaller from '@ffmpeg-installer/ffmpeg';
|
|
|
3
3
|
import ffprobeInstaller from '@ffprobe-installer/ffprobe';
|
|
4
4
|
import * as fs from 'fs/promises';
|
|
5
5
|
import * as path from 'path';
|
|
6
|
+
import { spawn } from 'child_process';
|
|
6
7
|
import { mkdtemp, rm } from 'fs/promises';
|
|
7
8
|
import { tmpdir } from 'os';
|
|
8
9
|
import pLimit from 'p-limit';
|
|
@@ -291,4 +292,178 @@ function parseFps(fpsString) {
|
|
|
291
292
|
}
|
|
292
293
|
return parseInt(fpsString, 10) || 0;
|
|
293
294
|
}
|
|
295
|
+
/**
|
|
296
|
+
* Build an ffmpeg filter_complex graph for redacting rectangular regions.
|
|
297
|
+
*
|
|
298
|
+
* Each region becomes a crop → effect → overlay chain. Time-bounded regions
|
|
299
|
+
* use the `enable='between(t,start,end)'` overlay option.
|
|
300
|
+
*
|
|
301
|
+
* @param videoWidth - Source video width in pixels
|
|
302
|
+
* @param videoHeight - Source video height in pixels
|
|
303
|
+
* @param plan - Redaction plan with effect and regions
|
|
304
|
+
* @returns Filter graph string suitable for fluent-ffmpeg's `.complexFilter()`
|
|
305
|
+
*/
|
|
306
|
+
export function buildRedactionFilter(videoWidth, videoHeight, plan) {
|
|
307
|
+
const { effect, regions } = plan;
|
|
308
|
+
if (regions.length === 0) {
|
|
309
|
+
throw new Error('At least one redaction region is required');
|
|
310
|
+
}
|
|
311
|
+
const filters = [];
|
|
312
|
+
let prevLabel = '0:v';
|
|
313
|
+
for (let i = 0; i < regions.length; i++) {
|
|
314
|
+
const r = regions[i];
|
|
315
|
+
// Split the current stream into two: one for the crop extraction,
|
|
316
|
+
// one to serve as the base layer of the overlay. Named filtergraph
|
|
317
|
+
// outputs can only be consumed once, so we must duplicate the stream.
|
|
318
|
+
const cropSrc = `sc${i}`;
|
|
319
|
+
const baseSrc = `sb${i}`;
|
|
320
|
+
const cropLabel = `crop${i}`;
|
|
321
|
+
const effectLabel = `effect${i}`;
|
|
322
|
+
// Use 'vout' for the final region so intermediate labels ('tmp0'…'tmpN-1')
|
|
323
|
+
// are never confused with the mapped output stream.
|
|
324
|
+
const outLabel = i < regions.length - 1 ? `tmp${i}` : 'vout';
|
|
325
|
+
filters.push(`[${prevLabel}]split=2[${cropSrc}][${baseSrc}]`);
|
|
326
|
+
// Clamp region to video bounds
|
|
327
|
+
const x = Math.max(0, Math.min(r.x, videoWidth - 1));
|
|
328
|
+
const y = Math.max(0, Math.min(r.y, videoHeight - 1));
|
|
329
|
+
const w = Math.max(1, Math.min(r.width, videoWidth - x));
|
|
330
|
+
const h = Math.max(1, Math.min(r.height, videoHeight - y));
|
|
331
|
+
// Crop the region from the first split copy
|
|
332
|
+
filters.push(`[${cropSrc}]crop=${w}:${h}:${x}:${y}[${cropLabel}]`);
|
|
333
|
+
// Apply the effect
|
|
334
|
+
switch (effect) {
|
|
335
|
+
case 'blur': {
|
|
336
|
+
const sigma = Math.max(5, Math.min(Math.round(Math.max(w, h) / 10), 50));
|
|
337
|
+
filters.push(`[${cropLabel}]gblur=sigma=${sigma}[${effectLabel}]`);
|
|
338
|
+
break;
|
|
339
|
+
}
|
|
340
|
+
case 'pixelate': {
|
|
341
|
+
// Downscale heavily then upscale with nearest-neighbor
|
|
342
|
+
const pw = Math.max(1, Math.round(w / 16));
|
|
343
|
+
const ph = Math.max(1, Math.round(h / 16));
|
|
344
|
+
filters.push(`[${cropLabel}]scale=${pw}:${ph}:flags=neighbor,scale=${w}:${h}:flags=neighbor[${effectLabel}]`);
|
|
345
|
+
break;
|
|
346
|
+
}
|
|
347
|
+
case 'blackout': {
|
|
348
|
+
filters.push(`[${cropLabel}]drawbox=c=black:t=fill[${effectLabel}]`);
|
|
349
|
+
break;
|
|
350
|
+
}
|
|
351
|
+
}
|
|
352
|
+
// Overlay back onto the video
|
|
353
|
+
const overlayOpts = [`${x}:${y}`];
|
|
354
|
+
if (r.startTime != null && r.endTime != null) {
|
|
355
|
+
overlayOpts.push(`enable='between(t,${r.startTime},${r.endTime})'`);
|
|
356
|
+
}
|
|
357
|
+
// Overlay effect onto the second split copy (base layer)
|
|
358
|
+
filters.push(`[${baseSrc}][${effectLabel}]overlay=${overlayOpts.join(':')}[${outLabel}]`);
|
|
359
|
+
prevLabel = outLabel;
|
|
360
|
+
}
|
|
361
|
+
return { filter: filters.join(';'), outputLabel: prevLabel };
|
|
362
|
+
}
|
|
363
|
+
/**
|
|
364
|
+
* Apply redaction regions to a video file using ffmpeg.
|
|
365
|
+
*
|
|
366
|
+
* Builds a filter_complex graph and re-encodes the video with the
|
|
367
|
+
* redactions applied. Audio is copied when possible.
|
|
368
|
+
*
|
|
369
|
+
* @param inputPath - Path to the source video
|
|
370
|
+
* @param outputPath - Path to write the redacted video
|
|
371
|
+
* @param plan - Redaction plan with effect and regions
|
|
372
|
+
*/
|
|
373
|
+
export async function applyRedactions(inputPath, outputPath, plan) {
|
|
374
|
+
const meta = await getVideoMetadata(inputPath);
|
|
375
|
+
const { filter: filterGraph, outputLabel } = buildRedactionFilter(meta.width, meta.height, plan);
|
|
376
|
+
// Bypass fluent-ffmpeg entirely for applyRedactions: use spawn() directly
|
|
377
|
+
// so we have full control over the exact argv array. fluent-ffmpeg's
|
|
378
|
+
// complexFilter() auto-maps the first named output (breaking the chain), and
|
|
379
|
+
// addOption('-filter_complex', ...) still causes ffmpeg to emit
|
|
380
|
+
// "Stream specifier 'tmpN' matches no streams" on Windows because
|
|
381
|
+
// fluent-ffmpeg injects its own default -map 0:v before our explicit maps.
|
|
382
|
+
const args = [
|
|
383
|
+
'-y',
|
|
384
|
+
'-i',
|
|
385
|
+
inputPath,
|
|
386
|
+
'-filter_complex',
|
|
387
|
+
filterGraph,
|
|
388
|
+
'-map',
|
|
389
|
+
`[${outputLabel}]`,
|
|
390
|
+
'-c:v',
|
|
391
|
+
'libx264',
|
|
392
|
+
'-preset',
|
|
393
|
+
'fast',
|
|
394
|
+
'-crf',
|
|
395
|
+
'18',
|
|
396
|
+
];
|
|
397
|
+
if (meta.hasAudio) {
|
|
398
|
+
args.push('-map', '0:a?', '-c:a', 'copy');
|
|
399
|
+
}
|
|
400
|
+
args.push(outputPath);
|
|
401
|
+
const ffmpegBin = ffmpegInstaller.path;
|
|
402
|
+
await new Promise((resolve, reject) => {
|
|
403
|
+
const proc = spawn(ffmpegBin, args, { stdio: ['ignore', 'pipe', 'pipe'] });
|
|
404
|
+
let stderr = '';
|
|
405
|
+
proc.stderr?.on('data', (chunk) => {
|
|
406
|
+
stderr += chunk.toString();
|
|
407
|
+
});
|
|
408
|
+
const timer = setTimeout(() => {
|
|
409
|
+
proc.kill('SIGKILL');
|
|
410
|
+
reject(new Error(`applyRedactions timed out after ${FFMPEG_FULL_VIDEO_MS / 1000}s`));
|
|
411
|
+
}, FFMPEG_FULL_VIDEO_MS);
|
|
412
|
+
proc.on('close', (code) => {
|
|
413
|
+
clearTimeout(timer);
|
|
414
|
+
if (code === 0) {
|
|
415
|
+
resolve();
|
|
416
|
+
}
|
|
417
|
+
else {
|
|
418
|
+
const lastLines = stderr.split('\n').slice(-5).join('\n');
|
|
419
|
+
reject(new Error(`ffmpeg exited with code ${code}: ${lastLines}`));
|
|
420
|
+
}
|
|
421
|
+
});
|
|
422
|
+
proc.on('error', (err) => {
|
|
423
|
+
clearTimeout(timer);
|
|
424
|
+
reject(err);
|
|
425
|
+
});
|
|
426
|
+
});
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Generate preview frames with drawbox overlays showing where redaction
|
|
430
|
+
* regions will be applied. Useful for dry-run / preview mode.
|
|
431
|
+
*
|
|
432
|
+
* @param inputPath - Path to the source video
|
|
433
|
+
* @param plan - Redaction plan (regions are shown as colored boxes)
|
|
434
|
+
* @param timestamps - Timestamps at which to capture preview frames
|
|
435
|
+
* @returns Array of JPEG buffers with drawbox overlays
|
|
436
|
+
*/
|
|
437
|
+
export async function generatePreviewFrames(inputPath, plan, timestamps) {
|
|
438
|
+
if (timestamps.length === 0)
|
|
439
|
+
return [];
|
|
440
|
+
const tempDir = await mkdtemp(path.join(tmpdir(), 'video-mcp-'));
|
|
441
|
+
try {
|
|
442
|
+
const frames = [];
|
|
443
|
+
for (let i = 0; i < timestamps.length; i++) {
|
|
444
|
+
const outputPath = path.join(tempDir, `preview-${i}.jpg`);
|
|
445
|
+
// Build a drawbox filter for each region
|
|
446
|
+
const drawFilters = plan.regions.map((r, ri) => {
|
|
447
|
+
const x = Math.max(0, r.x);
|
|
448
|
+
const y = Math.max(0, r.y);
|
|
449
|
+
const w = Math.max(1, r.width);
|
|
450
|
+
const h = Math.max(1, r.height);
|
|
451
|
+
const color = ri % 2 === 0 ? 'red' : 'yellow';
|
|
452
|
+
return `drawbox=x=${x}:y=${y}:w=${w}:h=${h}:color=${color}@0.5:t=3`;
|
|
453
|
+
});
|
|
454
|
+
const filterStr = drawFilters.join(',');
|
|
455
|
+
const command = ffmpeg(inputPath)
|
|
456
|
+
.seekInput(timestamps[i])
|
|
457
|
+
.frames(1)
|
|
458
|
+
.outputOptions([`-vf ${filterStr}`, '-q:v 2'])
|
|
459
|
+
.output(outputPath);
|
|
460
|
+
await runWithTimeout(command, FFMPEG_SINGLE_FRAME_MS, 'generatePreviewFrames');
|
|
461
|
+
frames.push(await fs.readFile(outputPath));
|
|
462
|
+
}
|
|
463
|
+
return frames;
|
|
464
|
+
}
|
|
465
|
+
finally {
|
|
466
|
+
await rm(tempDir, { recursive: true, force: true });
|
|
467
|
+
}
|
|
468
|
+
}
|
|
294
469
|
//# sourceMappingURL=ffmpeg.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ffmpeg.js","sourceRoot":"","sources":["../../src/services/ffmpeg.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ffmpeg.js","sourceRoot":"","sources":["../../src/services/ffmpeg.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,eAAe,CAAA;AAClC,OAAO,eAAe,MAAM,0BAA0B,CAAA;AACtD,OAAO,gBAAgB,MAAM,4BAA4B,CAAA;AACzD,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAA;AACrC,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;AAC3B,OAAO,MAAM,MAAM,SAAS,CAAA;AAE5B,sEAAsE;AACtE,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAA;AAElC,+EAA+E;AAC/E,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA,CAAC,WAAW;AAC3D,sDAAsD;AACtD,MAAM,CAAC,MAAM,sBAAsB,GAAG,CAAC,GAAG,EAAE,GAAG,IAAI,CAAA,CAAC,YAAY;AAChE,yFAAyF;AACzF,MAAM,CAAC,MAAM,oBAAoB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,aAAa;CAQ/D;AAAA,CAAC,GAAG,EAAE;IACL,MAAM,OAAO,GACX,OAAO,CAAC,QAAQ,KAAK,OAAO;QAC1B,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;YAChE,MAAM;QACR,CAAC,CAAC,MAAM,CAAA;IACZ,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;IACtC,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAA;IACpD,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,MAAM,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE;QAC9C,IAAI,CAAC,KAAK;YAAE,OAAO,KAAK,CAAA;QACxB,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,KAAK,CAAA;QACtE,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,KAAK,CAAA;QAC/B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;QACb,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CAAA;IACF,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;AAC1C,CAAC,CAAC,EAAE,CAAA;AAEJ,oDAAoD;AACpD,uEAAuE;AACvE,wEAAwE;AACxE,uEAAuE;AACvE,yEAAyE;AACzE,2EAA2E;AAC3E,oEAAoE;AACpE,MAAM,CAAC,aAAa,CAAC,eAAe,CAAC,IAAI,CAAC,CAAA;AAC1C,MAAM,CAAC,cAAc,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAA;AAC5C,OAAO,CAAC,GAAG,CAAC,WAAW,GAAG,eAAe,CAAC,IAAI,CAAA;AAC9C,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,gBAAgB,CAAC,IAAI,CAAA;AAgBhD;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,SAAiB;IAEjB,MAAM,YAAY,GAAG,IAAI,OAAO,CAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAClE,MAAM,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,QAAQ,EAAE,EAAE;YAC1C,IAAI,GAAG,EAAE,CAAC;gBACR,MAAM,CAAC,GAAG,CAAC,CAAA;gBACX,OAAM;YACR,CAAC;YAED,MAAM,WAAW,GAAG,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC,CAAA;YAE1E,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,CAAC,IAAI,KAAK,CAAC,+BAA+B,CAAC,CAAC,CAAA;gBAClD,OAAM;YACR,CAAC;YAED,OAAO,CAAC;gBACN,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,QAAQ,IAAI,CAAC;gBACvC,KAAK,EAAE,WAAW,CAAC,KAAK,IAAI,CAAC;gBAC7B,MAAM,EAAE,WAAW,CAAC,MAAM,IAAI,CAAC;gBAC/B,GAAG,EAAE,QAAQ,CAAC,WAAW,CAAC,YAAY,CAAC;gBACvC,KAAK,EAAE,WAAW,CAAC,UAAU,IAAI,SAAS;gBAC1C,QAAQ,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,IAAI,CAAC;gBACnC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,WAAW,IAAI,SAAS;gBAChD,QAAQ,EAAE,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,KAAK,OAAO,CAAC;aACjE,CAAC,CAAA;QACJ,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;IACF,OAAO,gBAAgB,CAAC,YAAY,EAAE,kBAAkB,EAAE,kBAAkB,CAAC,CAAA;AAC/E,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,SAAiB,EACjB,YAAoB;IAEpB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC,CAAA;IAChE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;IAElD,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;aAC9B,SAAS,CAAC,YAAY,CAAC;aACvB,MAAM,CAAC,CAAC,CAAC;aACT,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC;aACzB,MAAM,CAAC,UAAU,CAAC,CAAA;QACrB,MAAM,cAAc,CAAC,OAAO,EAAE,sBAAsB,EAAE,gBAAgB,CAAC,CAAA;QAEvE,MAAM,WAAW,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;QACjD,OAAO,WAAW,CAAA;IACpB,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACrD,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,SAAiB,EACjB,KAAa;IAEb,0CAA0C;IAC1C,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAA;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAA;IAC9B,IAAI,QAAQ,IAAI,CAAC,IAAI,KAAK,IAAI,CAAC;QAAE,OAAO,EAAE,CAAA;IAE1C,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC,CAAA;IAEhE,IAAI,CAAC;QACH,iEAAiE;QACjE,wEAAwE;QACxE,MAAM,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAA;QAEhC,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;aAC9B,aAAa,CAAC,CAAC,WAAW,OAAO,gBAAgB,EAAE,QAAQ,CAAC,CAAC;aAC7D,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAA;QAC/C,MAAM,cAAc,CAAC,OAAO,EAAE,oBAAoB,EAAE,qBAAqB,CAAC,CAAA;QAE1E,iCAAiC;QACjC,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;aAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aACjC,IAAI,EAAE,CAAA;QAET,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAC1D,CAAA;QAED,OAAO,MAAM,CAAA;IACf,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACrD,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,SAAiB,EACjB,WAAmB;IAEnB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC,CAAA;IAEhE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;aAC9B,aAAa,CAAC,CAAC,aAAa,WAAW,EAAE,EAAE,QAAQ,CAAC,CAAC;aACrD,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,CAAC,CAAA;QAC/C,MAAM,cAAc,CAClB,OAAO,EACP,oBAAoB,EACpB,yBAAyB,CAC1B,CAAA;QAED,MAAM,UAAU,GAAG,CAAC,MAAM,EAAE,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;aAC3C,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;aACjC,IAAI,EAAE,CAAA;QAET,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAC1D,CAAA;QAED,OAAO,MAAM,CAAA;IACf,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACrD,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,yBAAyB,CAC7C,SAAiB,EACjB,UAAoB;IAEpB,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC,CAAA;IAChE,MAAM,KAAK,GAAG,MAAM,CAAC,iBAAiB,CAAC,CAAA;IAEvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,UAAU,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,CAC9B,KAAK,CAAC,KAAK,IAAI,EAAE;YACf,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,MAAM,CAAC,CAAA;YACvD,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;iBAC9B,SAAS,CAAC,SAAS,CAAC;iBACpB,MAAM,CAAC,CAAC,CAAC;iBACT,aAAa,CAAC,CAAC,QAAQ,CAAC,CAAC;iBACzB,MAAM,CAAC,UAAU,CAAC,CAAA;YACrB,MAAM,cAAc,CAClB,OAAO,EACP,sBAAsB,EACtB,2BAA2B,CAC5B,CAAA;YACD,OAAO,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;QAChC,CAAC,CAAC,CACH,CACF,CAAA;QACD,OAAO,MAAM,CAAA;IACf,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACrD,CAAC;AACH,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,SAAiB,EACjB,SAAiB;IAEjB,MAAM,WAAW,GAAa,EAAE,CAAA;IAEhC,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;SAC9B,aAAa,CAAC;QACb,wBAAwB,SAAS,aAAa;QAC9C,YAAY;QACZ,KAAK;QACL,SAAS;KACV,CAAC;SACD,MAAM,CAAC,GAAG,CAAC;SACX,EAAE,CAAC,QAAQ,EAAE,CAAC,IAAY,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;IACzD,MAAM,cAAc,CAAC,OAAO,EAAE,oBAAoB,EAAE,uBAAuB,CAAC,CAAA;IAE5E,MAAM,UAAU,GAAa,EAAE,CAAA;IAC/B,MAAM,KAAK,GAAG,mBAAmB,CAAA;IACjC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC9B,IAAI,KAAK,EAAE,CAAC;YACV,UAAU,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QACvC,CAAC;IACH,CAAC;IAED,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAA;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAChC,SAAiB,EACjB,UAAkB;IAElB,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;SAC9B,OAAO,EAAE;SACT,UAAU,CAAC,KAAK,CAAC;SACjB,YAAY,CAAC,KAAK,CAAC;SACnB,MAAM,CAAC,UAAU,CAAC,CAAA;IACrB,MAAM,cAAc,CAAC,OAAO,EAAE,oBAAoB,EAAE,cAAc,CAAC,CAAA;AACrE,CAAC;AAED;;;GAGG;AACH,SAAS,gBAAgB,CACvB,IAAgB,EAChB,SAAiB,EACjB,WAAmB;IAEnB,OAAO,IAAI,OAAO,CAAI,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACxC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,MAAM,CACJ,IAAI,KAAK,CACP,0BAA0B,SAAS,GAAG,IAAI,aAAa,WAAW,EAAE,CACrE,CACF,CAAA;QACH,CAAC,EAAE,SAAS,CAAC,CAAA;QACb,KAAK,IAAI,CAAC,IAAI,CACZ,CAAC,MAAM,EAAE,EAAE;YACT,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,OAAO,CAAC,MAAM,CAAC,CAAA;QACjB,CAAC,EACD,CAAC,GAAY,EAAE,EAAE;YACf,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,MAAM,CAAC,GAAG,CAAC,CAAA;QACb,CAAC,CACF,CAAA;IACH,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,cAAc,CACrB,OAA6B,EAC7B,SAAiB,EACjB,WAAmB;IAEnB,OAAO,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC3C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACvB,MAAM,CACJ,IAAI,KAAK,CACP,0BAA0B,SAAS,GAAG,IAAI,aAAa,WAAW,EAAE,CACrE,CACF,CAAA;QACH,CAAC,EAAE,SAAS,CAAC,CAAA;QACb,OAAO;aACJ,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACd,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,OAAO,EAAE,CAAA;QACX,CAAC,CAAC;aACD,EAAE,CAAC,OAAO,EAAE,CAAC,GAAU,EAAE,EAAE;YAC1B,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,MAAM,CAAC,GAAG,CAAC,CAAA;QACb,CAAC,CAAC;aACD,GAAG,EAAE,CAAA;IACV,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;GAEG;AACH,SAAS,QAAQ,CAAC,SAA6B;IAC7C,IAAI,CAAC,SAAS;QAAE,OAAO,CAAC,CAAA;IAExB,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;IAClC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,MAAM,SAAS,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QACxC,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAC1C,IAAI,WAAW,KAAK,CAAC,EAAE,CAAC;YACtB,OAAO,SAAS,GAAG,WAAW,CAAA;QAChC,CAAC;IACH,CAAC;IAED,OAAO,QAAQ,CAAC,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,CAAA;AACrC,CAAC;AAMD;;;;;;;;;;GAUG;AACH,MAAM,UAAU,oBAAoB,CAClC,UAAkB,EAClB,WAAmB,EACnB,IAAmB;IAEnB,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,IAAI,CAAA;IAChC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;IAC9D,CAAC;IAED,MAAM,OAAO,GAAa,EAAE,CAAA;IAC5B,IAAI,SAAS,GAAG,KAAK,CAAA;IAErB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QACpB,kEAAkE;QAClE,mEAAmE;QACnE,sEAAsE;QACtE,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAA;QACxB,MAAM,OAAO,GAAG,KAAK,CAAC,EAAE,CAAA;QACxB,MAAM,SAAS,GAAG,OAAO,CAAC,EAAE,CAAA;QAC5B,MAAM,WAAW,GAAG,SAAS,CAAC,EAAE,CAAA;QAChC,2EAA2E;QAC3E,oDAAoD;QACpD,MAAM,QAAQ,GAAG,CAAC,GAAG,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAA;QAE5D,OAAO,CAAC,IAAI,CAAC,IAAI,SAAS,YAAY,OAAO,KAAK,OAAO,GAAG,CAAC,CAAA;QAE7D,+BAA+B;QAC/B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAA;QACpD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAA;QACrD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAA;QACxD,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,WAAW,GAAG,CAAC,CAAC,CAAC,CAAA;QAE1D,4CAA4C;QAC5C,OAAO,CAAC,IAAI,CAAC,IAAI,OAAO,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,SAAS,GAAG,CAAC,CAAA;QAElE,mBAAmB;QACnB,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAA;gBACxE,OAAO,CAAC,IAAI,CAAC,IAAI,SAAS,gBAAgB,KAAK,IAAI,WAAW,GAAG,CAAC,CAAA;gBAClE,MAAK;YACP,CAAC;YACD,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,uDAAuD;gBACvD,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;gBAC1C,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC,CAAA;gBAC1C,OAAO,CAAC,IAAI,CACV,IAAI,SAAS,UAAU,EAAE,IAAI,EAAE,yBAAyB,CAAC,IAAI,CAAC,mBAAmB,WAAW,GAAG,CAChG,CAAA;gBACD,MAAK;YACP,CAAC;YACD,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC,IAAI,SAAS,2BAA2B,WAAW,GAAG,CAAC,CAAA;gBACpE,MAAK;YACP,CAAC;QACH,CAAC;QAED,8BAA8B;QAC9B,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAA;QACjC,IAAI,CAAC,CAAC,SAAS,IAAI,IAAI,IAAI,CAAC,CAAC,OAAO,IAAI,IAAI,EAAE,CAAC;YAC7C,WAAW,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,SAAS,IAAI,CAAC,CAAC,OAAO,IAAI,CAAC,CAAA;QACrE,CAAC;QACD,yDAAyD;QACzD,OAAO,CAAC,IAAI,CACV,IAAI,OAAO,KAAK,WAAW,YAAY,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,QAAQ,GAAG,CAC5E,CAAA;QAED,SAAS,GAAG,QAAQ,CAAA;IACtB,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,WAAW,EAAE,SAAS,EAAE,CAAA;AAC9D,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,SAAiB,EACjB,UAAkB,EAClB,IAAmB;IAEnB,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAA;IAC9C,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,oBAAoB,CAC/D,IAAI,CAAC,KAAK,EACV,IAAI,CAAC,MAAM,EACX,IAAI,CACL,CAAA;IAED,0EAA0E;IAC1E,qEAAqE;IACrE,6EAA6E;IAC7E,gEAAgE;IAChE,kEAAkE;IAClE,2EAA2E;IAC3E,MAAM,IAAI,GAAa;QACrB,IAAI;QACJ,IAAI;QACJ,SAAS;QACT,iBAAiB;QACjB,WAAW;QACX,MAAM;QACN,IAAI,WAAW,GAAG;QAClB,MAAM;QACN,SAAS;QACT,SAAS;QACT,MAAM;QACN,MAAM;QACN,IAAI;KACL,CAAA;IACD,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAA;IAC3C,CAAC;IACD,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,CAAA;IAErB,MAAM,SAAS,GAAW,eAAe,CAAC,IAAI,CAAA;IAE9C,MAAM,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QAC1C,MAAM,IAAI,GAAG,KAAK,CAAC,SAAS,EAAE,IAAI,EAAE,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;QAC1E,IAAI,MAAM,GAAG,EAAE,CAAA;QACf,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,MAAM,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAA;QAC5B,CAAC,CAAC,CAAA;QACF,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,EAAE;YAC5B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;YACpB,MAAM,CACJ,IAAI,KAAK,CACP,mCAAmC,oBAAoB,GAAG,IAAI,GAAG,CAClE,CACF,CAAA;QACH,CAAC,EAAE,oBAAoB,CAAC,CAAA;QACxB,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YACxB,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO,EAAE,CAAA;YACX,CAAC;iBAAM,CAAC;gBACN,MAAM,SAAS,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;gBACzD,MAAM,CAAC,IAAI,KAAK,CAAC,2BAA2B,IAAI,KAAK,SAAS,EAAE,CAAC,CAAC,CAAA;YACpE,CAAC;QACH,CAAC,CAAC,CAAA;QACF,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,EAAE;YACvB,YAAY,CAAC,KAAK,CAAC,CAAA;YACnB,MAAM,CAAC,GAAG,CAAC,CAAA;QACb,CAAC,CAAC,CAAA;IACJ,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,SAAiB,EACjB,IAAmB,EACnB,UAAoB;IAEpB,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAEtC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,YAAY,CAAC,CAAC,CAAA;IAEhE,IAAI,CAAC;QACH,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,UAAU,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YAC3C,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,WAAW,CAAC,MAAM,CAAC,CAAA;YAEzD,yCAAyC;YACzC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;gBAC7C,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;gBAC1B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,KAAK,CAAC,CAAA;gBAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAA;gBAC/B,MAAM,KAAK,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAA;gBAC7C,OAAO,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,KAAK,UAAU,CAAA;YACrE,CAAC,CAAC,CAAA;YAEF,MAAM,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAA;YAEvC,MAAM,OAAO,GAAG,MAAM,CAAC,SAAS,CAAC;iBAC9B,SAAS,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;iBACxB,MAAM,CAAC,CAAC,CAAC;iBACT,aAAa,CAAC,CAAC,OAAO,SAAS,EAAE,EAAE,QAAQ,CAAC,CAAC;iBAC7C,MAAM,CAAC,UAAU,CAAC,CAAA;YACrB,MAAM,cAAc,CAClB,OAAO,EACP,sBAAsB,EACtB,uBAAuB,CACxB,CAAA;YAED,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAA;QAC5C,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAA;IACrD,CAAC;AACH,CAAC"}
|
|
@@ -70,6 +70,15 @@ export declare function getRuntimeFallbackChain(provider: VideoProvider, hasKimi
|
|
|
70
70
|
* Explicit values are clamped to the 5–50 range.
|
|
71
71
|
*/
|
|
72
72
|
export declare function getMaxFrames(): number;
|
|
73
|
+
/**
|
|
74
|
+
* Returns the maximum number of images that can be sent in a single
|
|
75
|
+
* analyzeImages() request for a given provider.
|
|
76
|
+
*
|
|
77
|
+
* Qwen3.6 and MiMo-V2 Omni enforce a per-request image cap of 20.
|
|
78
|
+
* GLM-4.6V shares the same 20-image practical limit.
|
|
79
|
+
* Kimi/Gemini are upload-based and do not use multi-image requests.
|
|
80
|
+
*/
|
|
81
|
+
export declare function getProviderImageCountLimit(provider: VideoProvider): number;
|
|
73
82
|
/**
|
|
74
83
|
* Returns the maximum base64 payload size in bytes for a given provider.
|
|
75
84
|
* Used to determine whether a local video must be sent as extracted frames
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providerRouter.d.ts","sourceRoot":"","sources":["../../src/services/providerRouter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAA;AAEvE;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,OAAO,EAClB,YAAY,GAAE,OAAe,EAC7B,UAAU,GAAE,OAAe,EAC3B,UAAU,GAAE,OAAe,GAC1B,aAAa,CA4Bf;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,aAAa,CAAA;IACvB,YAAY,CAAC,EAAE,aAAa,CAAA;CAC7B,CAAA;AAWD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,OAAO,EAClB,YAAY,GAAE,OAAe,EAC7B,UAAU,GAAE,OAAe,EAC3B,UAAU,GAAE,OAAe,GAC1B,cAAc,CAuBhB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,CAYlD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,OAAO,EAClB,YAAY,GAAE,OAAe,EAC7B,UAAU,GAAE,OAAe,EAC3B,UAAU,GAAE,OAAe,GAC1B,aAAa,EAAE,CAgBjB;AAQD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAerC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAM1E;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,aAAa,GACtB,OAAO,CAGT;AAED,qDAAqD;AACrD,eAAO,MAAM,sBAAsB,QAAoB,CAAA;AAEvD;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,aAAa,EAAE,EACtB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,OAAO,CAOT;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAQzC"}
|
|
1
|
+
{"version":3,"file":"providerRouter.d.ts","sourceRoot":"","sources":["../../src/services/providerRouter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,GAAG,MAAM,CAAA;AAEvE;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,OAAO,EAClB,YAAY,GAAE,OAAe,EAC7B,UAAU,GAAE,OAAe,EAC3B,UAAU,GAAE,OAAe,GAC1B,aAAa,CA4Bf;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,aAAa,CAAA;IACvB,YAAY,CAAC,EAAE,aAAa,CAAA;CAC7B,CAAA;AAWD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,OAAO,EAClB,YAAY,GAAE,OAAe,EAC7B,UAAU,GAAE,OAAe,EAC3B,UAAU,GAAE,OAAe,GAC1B,cAAc,CAuBhB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,CAYlD;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,OAAO,EAClB,YAAY,GAAE,OAAe,EAC7B,UAAU,GAAE,OAAe,EAC3B,UAAU,GAAE,OAAe,GAC1B,aAAa,EAAE,CAgBjB;AAQD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAerC;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAK1E;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAM1E;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,aAAa,GACtB,OAAO,CAGT;AAED,qDAAqD;AACrD,eAAO,MAAM,sBAAsB,QAAoB,CAAA;AAEvD;;;;;GAKG;AACH,wBAAgB,iCAAiC,CAC/C,KAAK,EAAE,aAAa,EAAE,EACtB,UAAU,EAAE,MAAM,EAClB,aAAa,EAAE,MAAM,GACpB,OAAO,CAOT;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAQzC"}
|