video-context-mcp-server 1.1.4 → 1.2.0

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 (39) hide show
  1. package/README.md +52 -27
  2. package/dist/generated/version.d.ts +1 -1
  3. package/dist/generated/version.js +1 -1
  4. package/dist/index.js +12 -1
  5. package/dist/index.js.map +1 -1
  6. package/dist/services/ffmpeg.d.ts +37 -0
  7. package/dist/services/ffmpeg.d.ts.map +1 -1
  8. package/dist/services/ffmpeg.js +175 -0
  9. package/dist/services/ffmpeg.js.map +1 -1
  10. package/dist/services/providerRouter.d.ts +9 -0
  11. package/dist/services/providerRouter.d.ts.map +1 -1
  12. package/dist/services/providerRouter.js +14 -0
  13. package/dist/services/providerRouter.js.map +1 -1
  14. package/dist/services/redactionDetector.d.ts +187 -0
  15. package/dist/services/redactionDetector.d.ts.map +1 -0
  16. package/dist/services/redactionDetector.js +766 -0
  17. package/dist/services/redactionDetector.js.map +1 -0
  18. package/dist/tools/analyzeVideo.d.ts.map +1 -1
  19. package/dist/tools/analyzeVideo.js +4 -3
  20. package/dist/tools/analyzeVideo.js.map +1 -1
  21. package/dist/tools/redactSensitive.d.ts +11 -0
  22. package/dist/tools/redactSensitive.d.ts.map +1 -0
  23. package/dist/tools/redactSensitive.js +466 -0
  24. package/dist/tools/redactSensitive.js.map +1 -0
  25. package/dist/tools/schemas.d.ts +53 -0
  26. package/dist/tools/schemas.d.ts.map +1 -1
  27. package/dist/tools/schemas.js +87 -0
  28. package/dist/tools/schemas.js.map +1 -1
  29. package/dist/tools/summarizeVideo.d.ts +17 -0
  30. package/dist/tools/summarizeVideo.d.ts.map +1 -1
  31. package/dist/tools/summarizeVideo.js +36 -2
  32. package/dist/tools/summarizeVideo.js.map +1 -1
  33. package/dist/types/redaction.d.ts +32 -0
  34. package/dist/types/redaction.d.ts.map +1 -0
  35. package/dist/types/redaction.js +5 -0
  36. package/dist/types/redaction.js.map +1 -0
  37. package/dist/utils/license.js +1 -1
  38. package/dist/utils/license.js.map +1 -1
  39. 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
  ---
@@ -252,19 +253,20 @@ claude mcp add \
252
253
 
253
254
  ## Available Tools
254
255
 
255
- | Tool | Description | Key Parameters |
256
- | ----------------------- | ------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
257
- | `analyze_video` | Ask questions about video content | `videoPath`, `question`, `provider?` |
258
- | `summarize_video` | Generate a structured video summary | `videoPath`, `provider?` |
259
- | `extract_frames` | Extract frames from a video | `videoPath`, `mode`, `count/intervalSec/timestamps/sceneThreshold`, `maxImages?`, `offset?` |
260
- | `search_timestamp` | Find when something specific happens | `videoPath`, `query`, `provider?` |
261
- | `get_video_info` | Get video metadata | `videoPath` |
262
- | `transcribe_video` | Transcribe audio/speech from a video | `videoPath`, `provider?`, `language?`, `diarize?`, `translate?`, `outputFormat?` |
263
- | `text_to_speech` | Convert text to natural speech audio | `text`, `model?`, `voice_id?`, `speed?`, `vol?`, `pitch?`, `emotion?`, `format?` |
264
- | `generate_image` | Generate images from a text prompt | `prompt`, `model?`, `aspect_ratio?`, `n?`, `prompt_optimizer?` |
265
- | `generate_video` | Generate video from text/image prompt (returns task_id) | `prompt?`, `model?`, `first_frame_image?`, `duration?`, `resolution?` |
266
- | `generate_music` | Generate music from prompt + lyrics | `prompt`, `lyrics?`, `model?`, `is_instrumental?`, `lyrics_optimizer?` |
267
- | `query_generation_task` | Poll async generation task status + download result | `task_id` |
256
+ | Tool | Description | Key Parameters |
257
+ | ----------------------- | ------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------- |
258
+ | `analyze_video` | Ask questions about video content | `videoPath`, `question`, `provider?` |
259
+ | `summarize_video` | Generate a structured video summary | `videoPath`, `provider?` |
260
+ | `extract_frames` | Extract frames from a video | `videoPath`, `mode`, `count/intervalSec/timestamps/sceneThreshold`, `maxImages?`, `offset?` |
261
+ | `search_timestamp` | Find when something specific happens | `videoPath`, `query`, `provider?` |
262
+ | `get_video_info` | Get video metadata | `videoPath` |
263
+ | `transcribe_video` | Transcribe audio/speech from a video | `videoPath`, `provider?`, `language?`, `diarize?`, `translate?`, `outputFormat?` |
264
+ | `redact_sensitive` ⚠️ | Blur, pixelate, or blackout sensitive regions in a video _(experimental)_ | `videoPath`, `effect?`, `regions?`, `detectionMode?`, `previewOnly?`, `provider?` |
265
+ | `text_to_speech` ⚠️ | Convert text to natural speech audio _(experimental)_ | `text`, `model?`, `voice_id?`, `speed?`, `vol?`, `pitch?`, `emotion?`, `format?` |
266
+ | `generate_image` ⚠️ | Generate images from a text prompt _(experimental)_ | `prompt`, `model?`, `aspect_ratio?`, `n?`, `prompt_optimizer?` |
267
+ | `generate_video` ⚠️ | Generate video from text/image prompt _(experimental)_ | `prompt?`, `model?`, `first_frame_image?`, `duration?`, `resolution?` |
268
+ | `generate_music` ⚠️ | Generate music from prompt + lyrics _(experimental)_ | `prompt`, `lyrics?`, `model?`, `is_instrumental?`, `lyrics_optimizer?` |
269
+ | `query_generation_task` | Poll async generation task status + download result | `task_id` |
268
270
 
269
271
  All tools accept local file paths, `file://` URIs, and remote `http(s)` URLs. Remote videos are downloaded automatically.
270
272
 
@@ -304,6 +306,16 @@ All tools accept local file paths, `file://` URIs, and remote `http(s)` URLs. Re
304
306
 
305
307
  > "Transcribe the audio from `https://vimeo.com/123456789`"
306
308
 
309
+ **Redacting sensitive regions**
310
+
311
+ > "Redact the API key visible in `./screen-recording.mp4` at region x=100 y=200 width=400 height=30"
312
+
313
+ > "Preview the redaction before applying it: use previewOnly: true with `./recording.mp4`"
314
+
315
+ > "Blur the password field in `./demo.mp4` (region x=50 y=300 width=250 height=40) from 5s to 20s"
316
+
317
+ > "Auto-detect and blur sensitive info in `./screen-recording.mp4`" (set `detectionMode: ai`, `allowRemoteDetection: true`)
318
+
307
319
  ---
308
320
 
309
321
  ## API Keys
@@ -737,9 +749,9 @@ vmcp cache clear:all --yes # skip confirmation
737
749
 
738
750
  ### Pro
739
751
 
740
- | Variable | Description | Default |
741
- | ----------------------- | --------------------------------------------------------------------------------------------------------------------- | ------- |
742
- | `VIDEO_MCP_LICENSE_KEY` | Pro license key. Unlocks extended frames, platform downloads beyond YouTube, and resolution above 720p. Valid 1 year. | — |
752
+ | Variable | Description | Default |
753
+ | ----------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ------- |
754
+ | `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
755
 
744
756
  ### Complete Example Config
745
757
 
@@ -841,14 +853,15 @@ Restart the MCP server. **Keep your cookies file private** — never commit it t
841
853
 
842
854
  ## Pro
843
855
 
844
- The free tier covers all core functionality. A **pro license** unlocks four power features:
856
+ The free tier covers all core functionality. A **pro license** unlocks five power features:
845
857
 
846
- | Feature | Free | Pro |
847
- | ------------------------------------------------ | ------------------- | --------------------------------- |
848
- | 🖼️ Extended frame extraction (`summarize_video`) | Capped at 50 frames | Default 100; set `0` for uncapped |
849
- | 🌐 Platform video downloads | YouTube only | Almost all video platforms |
850
- | 📺 Download resolution | Capped at 720p | Uncapped |
851
- | 🗣️ Media generation (TTS, image, video, music) | Not available | Full access |
858
+ | Feature | Free | Pro |
859
+ | ------------------------------------------------- | ------------------- | --------------------------------- |
860
+ | 🖼️ Extended frame extraction (`summarize_video`) | Capped at 50 frames | Default 100; set `0` for uncapped |
861
+ | 🌐 Platform video downloads | YouTube only | Almost all video platforms |
862
+ | 📺 Download resolution | Capped at 720p | Uncapped |
863
+ | 🗣️ Media generation (TTS, image, video, music) ⚠️ | Not available | Full access _(experimental)_ |
864
+ | 🔒 Sensitive video redaction ⚠️ | Not available | Full access _(experimental)_ |
852
865
 
853
866
  > 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
867
 
@@ -882,6 +895,18 @@ Add `VIDEO_MCP_LICENSE_KEY` to your MCP config `env` block and restart the serve
882
895
 
883
896
  - **Missing API key errors** — Set only the keys for providers you use. When a key is missing, tools automatically fall back to the next available provider and include a notice in the response.
884
897
 
898
+ ## Funding
899
+
900
+ If you find this project helpful, please consider supporting its development:
901
+
902
+ [![GitHub Sponsors](https://img.shields.io/badge/Sponsor-GitHub-pink?logo=github)](https://github.com/sponsors/tugudush)
903
+
904
+ **Solana (SOL)**
905
+
906
+ ```
907
+ CWZccD3Ny3XotFZtnkcyzP3hapmu3ExknN1PF4rEvP3u
908
+ ```
909
+
885
910
  ---
886
911
 
887
912
  ## Development
@@ -1,2 +1,2 @@
1
- export declare const VERSION = "1.1.4";
1
+ export declare const VERSION = "1.2.0";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Auto-generated by scripts/sync-version.ts — do not edit
2
- export const VERSION = '1.1.4';
2
+ export const VERSION = '1.2.0';
3
3
  //# sourceMappingURL=version.js.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":"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"}
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":"AASA,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"}
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"}
@@ -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":"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"}
@@ -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"}
@@ -157,6 +157,20 @@ export function getMaxFrames() {
157
157
  return FREE_MAX_FRAMES;
158
158
  return Math.max(5, Math.min(FREE_MAX_FRAMES, envValue));
159
159
  }
160
+ /**
161
+ * Returns the maximum number of images that can be sent in a single
162
+ * analyzeImages() request for a given provider.
163
+ *
164
+ * Qwen3.6 and MiMo-V2 Omni enforce a per-request image cap of 20.
165
+ * GLM-4.6V shares the same 20-image practical limit.
166
+ * Kimi/Gemini are upload-based and do not use multi-image requests.
167
+ */
168
+ export function getProviderImageCountLimit(provider) {
169
+ if (provider === 'glm' || provider === 'qwen' || provider === 'mimo') {
170
+ return 20;
171
+ }
172
+ return Infinity;
173
+ }
160
174
  /**
161
175
  * Returns the maximum base64 payload size in bytes for a given provider.
162
176
  * Used to determine whether a local video must be sent as extracted frames
@@ -1 +1 @@
1
- {"version":3,"file":"providerRouter.js","sourceRoot":"","sources":["../../src/services/providerRouter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAA;AAI3C;;;;;;;;;GASG;AACH,MAAM,UAAU,cAAc,CAC5B,QAAuB,EACvB,UAAmB,EACnB,SAAkB,EAClB,eAAwB,KAAK,EAC7B,aAAsB,KAAK,EAC3B,aAAsB,KAAK;IAE3B,MAAM,YAAY,GAAmC;QACnD,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,YAAY;QACpB,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,UAAU;KACjB,CAAA;IACD,MAAM,WAAW,GAAkC;QACjD,GAAG,EAAE,UAAU;QACf,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,QAAQ;QAChB,IAAI,EAAE,SAAS;QACf,IAAI,EAAE,cAAc;KACrB,CAAA;IACD,MAAM,MAAM,GAAkC;QAC5C,GAAG,EAAE,cAAc;QACnB,IAAI,EAAE,kBAAkB;QACxB,MAAM,EAAE,gBAAgB;QACxB,IAAI,EAAE,mBAAmB;QACzB,IAAI,EAAE,cAAc;KACrB,CAAA;IACD,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC5B,MAAM,IAAI,KAAK,CACb,GAAG,WAAW,CAAC,QAAQ,CAAC,0BAA0B,MAAM,CAAC,QAAQ,CAAC,oBAAoB,CACvF,CAAA;IACH,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAYD,wDAAwD;AACxD,MAAM,uBAAuB,GAAoB;IAC/C,QAAQ;IACR,KAAK;IACL,MAAM;IACN,MAAM;IACN,MAAM;CACP,CAAA;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,2BAA2B,CACzC,QAAuB,EACvB,UAAmB,EACnB,SAAkB,EAClB,eAAwB,KAAK,EAC7B,aAAsB,KAAK,EAC3B,aAAsB,KAAK;IAE3B,MAAM,MAAM,GAAmC;QAC7C,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,YAAY;QACpB,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,UAAU;KACjB,CAAA;IAED,IAAI,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;QACrB,OAAO,EAAE,QAAQ,EAAE,CAAA;IACrB,CAAC;IAED,mFAAmF;IACnF,KAAK,MAAM,SAAS,IAAI,uBAAuB,EAAE,CAAC;QAChD,IAAI,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;YAChD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAA;QACxD,CAAC;IACH,CAAC;IAED,MAAM,IAAI,KAAK,CACb,iJAAiJ,CAClJ,CAAA;AACH,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,kBAAkB;IAChC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAA;IAC1D,IACE,WAAW,KAAK,KAAK;QACrB,WAAW,KAAK,MAAM;QACtB,WAAW,KAAK,QAAQ;QACxB,WAAW,KAAK,MAAM;QACtB,WAAW,KAAK,MAAM,EACtB,CAAC;QACD,OAAO,WAAW,CAAA;IACpB,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,uBAAuB,CACrC,QAAuB,EACvB,UAAmB,EACnB,SAAkB,EAClB,eAAwB,KAAK,EAC7B,aAAsB,KAAK,EAC3B,aAAsB,KAAK;IAE3B,gFAAgF;IAChF,MAAM,UAAU,GAAoB;QAClC,QAAQ;QACR,GAAG,uBAAuB,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,QAAQ,CAAC;KACzD,CAAA;IAED,MAAM,MAAM,GAAmC;QAC7C,GAAG,EAAE,SAAS;QACd,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,YAAY;QACpB,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,UAAU;KACjB,CAAA;IAED,OAAO,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;AAC5C,CAAC;AAED,iEAAiE;AACjE,MAAM,eAAe,GAAG,EAAE,CAAA;AAE1B,yFAAyF;AACzF,MAAM,kBAAkB,GAAG,GAAG,CAAA;AAE9B;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY;IAC1B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAA;IAClD,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IAC1B,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IAClC,MAAM,QAAQ,GAAG,OAAO,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAEnD,IAAI,KAAK,EAAE,EAAE,CAAC;QACZ,IAAI,CAAC,QAAQ;YAAE,OAAO,kBAAkB,CAAA,CAAC,4BAA4B;QACrE,IAAI,QAAQ,IAAI,CAAC;YAAE,OAAO,QAAQ,CAAA,CAAC,2BAA2B;QAC9D,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA,CAAC,4BAA4B;IAC3D,CAAC;IAED,kEAAkE;IAClE,IAAI,CAAC,QAAQ,IAAI,QAAQ,IAAI,CAAC;QAAE,OAAO,eAAe,CAAA;IACtD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,eAAe,EAAE,QAAQ,CAAC,CAAC,CAAA;AACzD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,0BAA0B,CAAC,QAAuB;IAChE,IAAI,QAAQ,KAAK,KAAK;QAAE,OAAO,EAAE,GAAG,IAAI,GAAG,IAAI,CAAA;IAC/C,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,EAAE,GAAG,IAAI,GAAG,IAAI,CAAA;IAChD,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,EAAE,GAAG,IAAI,GAAG,IAAI,CAAA;IAChD,IAAI,QAAQ,KAAK,MAAM;QAAE,OAAO,EAAE,GAAG,IAAI,GAAG,IAAI,CAAA,CAAC,mCAAmC;IACpF,OAAO,QAAQ,CAAA,CAAC,wBAAwB;AAC1C,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,0BAA0B,CACxC,aAAqB,EACrB,QAAuB;IAEvB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,aAAa,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;IACtD,OAAO,WAAW,GAAG,0BAA0B,CAAC,QAAQ,CAAC,CAAA;AAC3D,CAAC;AAED,qDAAqD;AACrD,MAAM,CAAC,MAAM,sBAAsB,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,CAAA;AAEvD;;;;;GAKG;AACH,MAAM,UAAU,iCAAiC,CAC/C,KAAsB,EACtB,UAAkB,EAClB,aAAqB;IAErB,KAAK,IAAI,CAAC,GAAG,UAAU,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACnD,MAAM,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QAClB,IAAI,CAAC,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAA;QAC/B,IAAI,CAAC,KAAK,MAAM,IAAI,aAAa,IAAI,sBAAsB;YAAE,OAAO,IAAI,CAAA;IAC1E,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,eAAe;IAC7B,IAAI,KAAK,EAAE;QAAE,OAAO,KAAK,CAAA;IACzB,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,EAAE,CAAA;IAClD,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;IAClC,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IACtD,kEAAkE;IAClE,IAAI,CAAC,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3B,OAAO,QAAQ,IAAI,CAAC,IAAI,QAAQ,GAAG,eAAe,CAAA;AACpD,CAAC"}
1
+ {"version":3,"file":"providerRouter.js","sourceRoot":"","sources":["../../src/services/providerRouter.ts"],"names":[],"mappings":"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"}