video-context-mcp-server 0.15.3-beta → 0.17.0-beta
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 +31 -31
- package/dist/services/ffmpeg.d.ts +14 -4
- package/dist/services/ffmpeg.d.ts.map +1 -1
- package/dist/services/ffmpeg.js +62 -18
- package/dist/services/ffmpeg.js.map +1 -1
- package/dist/services/providerRouter.d.ts +10 -5
- package/dist/services/providerRouter.d.ts.map +1 -1
- package/dist/services/providerRouter.js +38 -14
- package/dist/services/providerRouter.js.map +1 -1
- package/dist/tools/analyzeVideo.js +5 -5
- package/dist/tools/analyzeVideo.js.map +1 -1
- package/dist/tools/extractFrames.js +3 -3
- package/dist/tools/extractFrames.js.map +1 -1
- package/dist/tools/getVideoInfo.js +2 -2
- package/dist/tools/getVideoInfo.js.map +1 -1
- package/dist/tools/searchTimestamp.js +4 -4
- package/dist/tools/searchTimestamp.js.map +1 -1
- package/dist/tools/summarizeVideo.d.ts.map +1 -1
- package/dist/tools/summarizeVideo.js +42 -8
- package/dist/tools/summarizeVideo.js.map +1 -1
- package/dist/tools/transcribeVideo.js +2 -2
- package/dist/tools/transcribeVideo.js.map +1 -1
- package/dist/utils/audioUtils.d.ts +1 -1
- package/dist/utils/audioUtils.js +3 -3
- package/dist/utils/audioUtils.js.map +1 -1
- package/dist/utils/license.d.ts +5 -5
- package/dist/utils/license.d.ts.map +1 -1
- package/dist/utils/license.js +7 -7
- package/dist/utils/license.js.map +1 -1
- package/dist/utils/videoUtils.d.ts +2 -2
- package/dist/utils/videoUtils.d.ts.map +1 -1
- package/dist/utils/videoUtils.js +10 -12
- package/dist/utils/videoUtils.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -13,18 +13,18 @@ Video Context MCP Server is a Model Context Protocol (MCP) server that gives MCP
|
|
|
13
13
|
- 🔊 **Speaker Diarization** — Identify who said what (Deepgram and AssemblyAI)
|
|
14
14
|
- 🔄 **Multi-Backend Support** — Choose between Gemini (native multimodal), GLM-4.6V (cheap/free), or Kimi K2.5 (broader format support)
|
|
15
15
|
- 🎯 **Smart Video Handling** — Extracts keyframes from long videos to reduce token usage (when not using Gemini)
|
|
16
|
-
- ⭐ **
|
|
16
|
+
- ⭐ **Pro tier** — audio-enhanced analysis, extended frame extraction, and multi-platform video downloads. [Learn more ↓](#-pro)
|
|
17
17
|
|
|
18
|
-
## 🔓
|
|
18
|
+
## 🔓 Pro
|
|
19
19
|
|
|
20
|
-
The free tier covers all core functionality. A **
|
|
20
|
+
The free tier covers all core functionality. A **pro license** unlocks four power features:
|
|
21
21
|
|
|
22
|
-
| Feature | Free Tier |
|
|
23
|
-
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- |
|
|
24
|
-
| **🔊 Audio-enhanced analysis** — Auto-transcribes a video's audio track and injects the transcript into AI prompts, giving `analyze_video` and `summarize_video` richer, more accurate results. Controlled by `AUDIO_ENHANCE_VIDEO_ANALYSIS`.<br />**Note**: The `transcribe_video` tool itself is available to all users — this feature specifically enhances the _analysis_ tools by injecting the transcript automatically. | Disabled | ✅ Enabled
|
|
25
|
-
| **🖼️ Extended frame extraction** — Raise the keyframe cap for long or complex videos beyond the free-tier limit. Controlled by `VIDEO_MCP_MAX_FRAMES`. | Capped at
|
|
26
|
-
| **🌐 Platform video downloads** — Analyze videos directly from YouTube, Vimeo, TikTok, and hundreds of other yt-dlp-supported platforms without downloading manually.<br />**Note**: Local files and direct
|
|
27
|
-
| **📺 Extended download resolution** — Raise the yt-dlp download resolution cap beyond 720p for higher-quality platform video downloads. Controlled by `YT_DLP_MAX_RESOLUTION`. | Capped at 720p | Uncapped
|
|
22
|
+
| Feature | Free Tier | Pro |
|
|
23
|
+
| ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------- | --------------------------------- |
|
|
24
|
+
| **🔊 Audio-enhanced analysis** — Auto-transcribes a video's audio track and injects the transcript into AI prompts, giving `analyze_video` and `summarize_video` richer, more accurate results. Controlled by `AUDIO_ENHANCE_VIDEO_ANALYSIS`.<br />**Note**: The `transcribe_video` tool itself is available to all users — this feature specifically enhances the _analysis_ tools by injecting the transcript automatically. | Disabled | ✅ Enabled |
|
|
25
|
+
| **🖼️ Extended frame extraction** — Raise the keyframe cap for long or complex videos beyond the free-tier limit. Controlled by `VIDEO_MCP_MAX_FRAMES`. | Capped at 50 | Default 100; set `0` for uncapped |
|
|
26
|
+
| **🌐 Platform video downloads** — Analyze videos directly from YouTube, Vimeo, TikTok, and hundreds of other yt-dlp-supported platforms without downloading manually.<br />**Note**: Local files and direct `http(s)://` video file URLs (e.g., `https://example.com/video.mp4`) work for all users — no license needed. This gate only applies to platform URLs handled by yt-dlp (e.g., YouTube, Vimeo, TikTok links). | YouTube only | All platforms |
|
|
27
|
+
| **📺 Extended download resolution** — Raise the yt-dlp download resolution cap beyond 720p for higher-quality platform video downloads. Controlled by `YT_DLP_MAX_RESOLUTION`. | Capped at 720p | Uncapped |
|
|
28
28
|
|
|
29
29
|
When a free-tier limit is reached, the tool falls back gracefully and includes a clear notice in the response — it **never hard-blocks**.
|
|
30
30
|
|
|
@@ -44,7 +44,7 @@ To obtain a key, contact the author. Once you have it:
|
|
|
44
44
|
}
|
|
45
45
|
```
|
|
46
46
|
|
|
47
|
-
**Step 2.** Restart the MCP server (or reload VS Code).
|
|
47
|
+
**Step 2.** Restart the MCP server (or reload VS Code). Pro features activate automatically.
|
|
48
48
|
|
|
49
49
|
> That's all — no registration, no internet check, no extra setup.
|
|
50
50
|
|
|
@@ -367,23 +367,23 @@ When a provider's API key is missing, the tool automatically falls back to the n
|
|
|
367
367
|
|
|
368
368
|
## Environment Variables
|
|
369
369
|
|
|
370
|
-
| Variable | Description
|
|
371
|
-
| ------------------------------ |
|
|
372
|
-
| `Z_AI_API_KEY` | Z.AI API key for GLM-4.6V
|
|
373
|
-
| `MOONSHOT_API_KEY` | Moonshot AI API key for Kimi K2.5
|
|
374
|
-
| `GEMINI_API_KEY` | Google API key for Gemini 3 Flash Preview
|
|
375
|
-
| `VIDEO_MCP_DEFAULT_PROVIDER` | Default video backend (`gemini`, `glm`, `kimi`)
|
|
376
|
-
| `VIDEO_MCP_MAX_FRAMES` | Max frames for summarization (GLM/Kimi only).
|
|
377
|
-
| `DEEPGRAM_API_KEY` | Deepgram API key for `transcribe_video`
|
|
378
|
-
| `ASSEMBLYAI_API_KEY` | AssemblyAI API key for `transcribe_video`
|
|
379
|
-
| `GROQ_API_KEY` | Groq API key for Whisper transcription via `transcribe_video`
|
|
380
|
-
| `AUDIO_MCP_DEFAULT_PROVIDER` | Default audio provider; defaults to `deepgram`. Falls back in order: **deepgram → assemblyai → groq → gemini** when the selected provider's key is unavailable. A fallback notice is included in the response.
|
|
381
|
-
| `AUDIO_ENHANCE_VIDEO_ANALYSIS` | Controls audio transcript injection into GLM/Kimi `analyze_video`/`summarize_video` prompts. **Requires a
|
|
382
|
-
| `VIDEO_MCP_CACHE_TTL_MINUTES` | How long downloaded remote/platform videos are cached (in minutes) across separate tool calls. Cached files live in `os.tmpdir()/video-mcp-cache/` and survive per-call cleanup, avoiding redundant downloads on retries or follow-up questions. Set to `0` to disable caching entirely.
|
|
383
|
-
| `YT_DLP_MAX_RESOLUTION` | Maximum video height in pixels when downloading via yt-dlp (YouTube, Vimeo, TikTok, etc.). Lower values reduce file size and download time. Free users capped at 720;
|
|
384
|
-
| `YT_DLP_PATH` | Path to a custom yt-dlp binary. If unset, uses the binary bundled by `youtube-dl-exec` at install time.
|
|
385
|
-
| `YT_DLP_COOKIES_FILE` | Path to a Netscape-format cookies file for authenticated yt-dlp downloads (e.g. age-restricted or private YouTube videos).
|
|
386
|
-
| `VIDEO_MCP_LICENSE_KEY` |
|
|
370
|
+
| Variable | Description | Required |
|
|
371
|
+
| ------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------- |
|
|
372
|
+
| `Z_AI_API_KEY` | Z.AI API key for GLM-4.6V | Optional (required if using GLM) |
|
|
373
|
+
| `MOONSHOT_API_KEY` | Moonshot AI API key for Kimi K2.5 | Optional (required if using Kimi) |
|
|
374
|
+
| `GEMINI_API_KEY` | Google API key for Gemini 3 Flash Preview | Optional (required if using Gemini) |
|
|
375
|
+
| `VIDEO_MCP_DEFAULT_PROVIDER` | Default video backend (`gemini`, `glm`, `kimi`) | Optional (default: `glm`) |
|
|
376
|
+
| `VIDEO_MCP_MAX_FRAMES` | Max frames for summarization (GLM/Kimi only). **Pro**: unset/empty defaults to 100; set to `0` for uncapped (size guard still enforced); any value ≥ 5 is used as-is. **Free**: clamped to 5–50; `0` or unset defaults to 50. | Optional (default: 50 for free / 100 for pro; free users clamped to 5–50) |
|
|
377
|
+
| `DEEPGRAM_API_KEY` | Deepgram API key for `transcribe_video` | Optional (required if using Deepgram) |
|
|
378
|
+
| `ASSEMBLYAI_API_KEY` | AssemblyAI API key for `transcribe_video` | Optional (required if using AssemblyAI) |
|
|
379
|
+
| `GROQ_API_KEY` | Groq API key for Whisper transcription via `transcribe_video` | Optional (required if using Groq) |
|
|
380
|
+
| `AUDIO_MCP_DEFAULT_PROVIDER` | Default audio provider; defaults to `deepgram`. Falls back in order: **deepgram → assemblyai → groq → gemini** when the selected provider's key is unavailable. A fallback notice is included in the response. | Optional (auto-selects from available keys) |
|
|
381
|
+
| `AUDIO_ENHANCE_VIDEO_ANALYSIS` | Controls audio transcript injection into GLM/Kimi `analyze_video`/`summarize_video` prompts. **Requires a pro license.** `auto` (default) — transcribes only when the video has a detected audio track; `true` — always attempt transcription; `false` — disabled. A confidence label (`high`/`medium`/`low`) is included in the injected header so the model can weight the transcript appropriately. Gemini is always skipped (handles audio natively). | Optional (default: `auto`; pro only) |
|
|
382
|
+
| `VIDEO_MCP_CACHE_TTL_MINUTES` | How long downloaded remote/platform videos are cached (in minutes) across separate tool calls. Cached files live in `os.tmpdir()/video-mcp-cache/` and survive per-call cleanup, avoiding redundant downloads on retries or follow-up questions. Set to `0` to disable caching entirely. | Optional (default: `30`) |
|
|
383
|
+
| `YT_DLP_MAX_RESOLUTION` | Maximum video height in pixels when downloading via yt-dlp (YouTube, Vimeo, TikTok, etc.). Lower values reduce file size and download time. Free users capped at 720; pro users can set any value. | Optional (default: `720`) |
|
|
384
|
+
| `YT_DLP_PATH` | Path to a custom yt-dlp binary. If unset, uses the binary bundled by `youtube-dl-exec` at install time. | Optional |
|
|
385
|
+
| `YT_DLP_COOKIES_FILE` | Path to a Netscape-format cookies file for authenticated yt-dlp downloads (e.g. age-restricted or private YouTube videos). | Optional |
|
|
386
|
+
| `VIDEO_MCP_LICENSE_KEY` | Pro license key. Unlocks audio-enhanced analysis, extended frame extraction (uncapped), platform downloads beyond YouTube, and extended download resolution (above 720p). Valid for 1 year from date of issue. | Optional (free tier without it) |
|
|
387
387
|
|
|
388
388
|
> **Tip: install yt-dlp system-wide for faster startup.** The `youtube-dl-exec` package bundles a yt-dlp binary downloaded at `npm install` time, which adds ~30 MB to the install footprint. If you use platform video URLs regularly, it's lighter to install yt-dlp directly and point to it:
|
|
389
389
|
>
|
|
@@ -420,7 +420,7 @@ When a provider's API key is missing, the tool automatically falls back to the n
|
|
|
420
420
|
"ASSEMBLYAI_API_KEY": "your-assemblyai-key",
|
|
421
421
|
"GROQ_API_KEY": "your-groq-key",
|
|
422
422
|
"VIDEO_MCP_DEFAULT_PROVIDER": "glm",
|
|
423
|
-
"VIDEO_MCP_MAX_FRAMES": "
|
|
423
|
+
"VIDEO_MCP_MAX_FRAMES": "100",
|
|
424
424
|
"AUDIO_ENHANCE_VIDEO_ANALYSIS": "auto",
|
|
425
425
|
"VIDEO_MCP_CACHE_TTL_MINUTES": "30",
|
|
426
426
|
"YT_DLP_MAX_RESOLUTION": "720",
|
|
@@ -432,13 +432,13 @@ When a provider's API key is missing, the tool automatically falls back to the n
|
|
|
432
432
|
}
|
|
433
433
|
```
|
|
434
434
|
|
|
435
|
-
> **Note:** `VIDEO_MCP_MAX_FRAMES` only applies when using **GLM or Kimi** as the provider. Gemini uploads the full video natively and ignores this setting.
|
|
435
|
+
> **Note:** `VIDEO_MCP_MAX_FRAMES` only applies when using **GLM or Kimi** as the provider. Gemini uploads the full video natively and ignores this setting. You can omit it if you are running with `VIDEO_MCP_DEFAULT_PROVIDER=gemini`.
|
|
436
436
|
>
|
|
437
437
|
> **Note:** `YT_DLP_PATH` and `YT_DLP_COOKIES_FILE` are only needed if you want to use a custom yt-dlp binary or authenticate downloads of private/age-restricted videos. Omit them for standard use.
|
|
438
438
|
|
|
439
|
-
## Free vs
|
|
439
|
+
## Free vs Pro
|
|
440
440
|
|
|
441
|
-
See the [
|
|
441
|
+
See the [Pro section](#-pro) at the top of this document for a full feature comparison and license setup instructions.
|
|
442
442
|
|
|
443
443
|
## Development
|
|
444
444
|
|
|
@@ -21,28 +21,38 @@ export declare function getVideoMetadata(videoPath: string): Promise<VideoMetada
|
|
|
21
21
|
* Extract a single frame at a specific timestamp
|
|
22
22
|
* @param videoPath - Path to the video file
|
|
23
23
|
* @param timestampSec - Timestamp in seconds
|
|
24
|
-
* @returns Buffer containing the
|
|
24
|
+
* @returns Buffer containing the JPEG frame
|
|
25
25
|
*/
|
|
26
26
|
export declare function extractFrameAt(videoPath: string, timestampSec: number): Promise<Buffer>;
|
|
27
27
|
/**
|
|
28
28
|
* Extract N evenly-spaced frames from a video
|
|
29
|
+
*
|
|
30
|
+
* Uses the ffmpeg `fps` filter with a single output instead of
|
|
31
|
+
* fluent-ffmpeg's `.screenshots()` API. `.screenshots()` creates one output
|
|
32
|
+
* entry per frame, producing a command line that grows linearly with the
|
|
33
|
+
* frame count. On Windows, where CreateProcessW imposes a ~32 KB limit on
|
|
34
|
+
* the combined command line + environment block, this easily exceeds the
|
|
35
|
+
* limit in VS Code's MCP server environment (which inherits a large set of
|
|
36
|
+
* environment variables). The fps-filter approach emits all frames through
|
|
37
|
+
* a single output, keeping the command line constant regardless of count.
|
|
38
|
+
*
|
|
29
39
|
* @param videoPath - Path to the video file
|
|
30
40
|
* @param count - Number of frames to extract
|
|
31
|
-
* @returns Array of
|
|
41
|
+
* @returns Array of JPEG buffers
|
|
32
42
|
*/
|
|
33
43
|
export declare function extractFramesEvenly(videoPath: string, count: number): Promise<Buffer[]>;
|
|
34
44
|
/**
|
|
35
45
|
* Extract frames at regular intervals
|
|
36
46
|
* @param videoPath - Path to the video file
|
|
37
47
|
* @param intervalSec - Interval in seconds between frames
|
|
38
|
-
* @returns Array of
|
|
48
|
+
* @returns Array of JPEG buffers
|
|
39
49
|
*/
|
|
40
50
|
export declare function extractFramesAtInterval(videoPath: string, intervalSec: number): Promise<Buffer[]>;
|
|
41
51
|
/**
|
|
42
52
|
* Extract frames at specific timestamps
|
|
43
53
|
* @param videoPath - Path to the video file
|
|
44
54
|
* @param timestamps - Array of timestamps in seconds
|
|
45
|
-
* @returns Array of
|
|
55
|
+
* @returns Array of JPEG buffers (same order as timestamps)
|
|
46
56
|
*/
|
|
47
57
|
export declare function extractFramesAtTimestamps(videoPath: string, timestamps: number[]): Promise<Buffer[]>;
|
|
48
58
|
/**
|
|
@@ -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":"AA6CA;;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,CA2BxB;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAClC,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,GACnB,OAAO,CAAC,MAAM,CAAC,CAqBjB;AAED;;;;;;;;;;;;;;;GAeG;AACH,wBAAsB,mBAAmB,CACvC,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,MAAM,GACZ,OAAO,CAAC,MAAM,EAAE,CAAC,CAmCnB;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;;;;GAIG;AACH,wBAAsB,YAAY,CAChC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,IAAI,CAAC,CAWf"}
|
package/dist/services/ffmpeg.js
CHANGED
|
@@ -5,9 +5,36 @@ import * as fs from 'fs/promises';
|
|
|
5
5
|
import * as path from 'path';
|
|
6
6
|
import { mkdtemp, rm } from 'fs/promises';
|
|
7
7
|
import { tmpdir } from 'os';
|
|
8
|
-
|
|
8
|
+
(() => {
|
|
9
|
+
const pathKey = process.platform === 'win32'
|
|
10
|
+
? Object.keys(process.env).find((k) => k.toUpperCase() === 'PATH') ||
|
|
11
|
+
'Path'
|
|
12
|
+
: 'PATH';
|
|
13
|
+
const raw = process.env[pathKey] || '';
|
|
14
|
+
const sep = process.platform === 'win32' ? ';' : ':';
|
|
15
|
+
const seen = new Set();
|
|
16
|
+
const deduped = raw.split(sep).filter((entry) => {
|
|
17
|
+
if (!entry)
|
|
18
|
+
return false;
|
|
19
|
+
const key = process.platform === 'win32' ? entry.toLowerCase() : entry;
|
|
20
|
+
if (seen.has(key))
|
|
21
|
+
return false;
|
|
22
|
+
seen.add(key);
|
|
23
|
+
return true;
|
|
24
|
+
});
|
|
25
|
+
process.env[pathKey] = deduped.join(sep);
|
|
26
|
+
})();
|
|
27
|
+
// Set paths to bundled ffmpeg and ffprobe binaries.
|
|
28
|
+
// Both the instance-level setters (used for actual processing) and the
|
|
29
|
+
// FFMPEG_PATH / FFPROBE_PATH env vars (used by fluent-ffmpeg's internal
|
|
30
|
+
// capabilities-check code path, e.g. getAvailableEncoders triggered by
|
|
31
|
+
// .screenshots()) must point to the same bundled binary. Without setting
|
|
32
|
+
// the env vars, the capabilities check falls back to which('ffmpeg') which
|
|
33
|
+
// can fail with ENAMETOOLONG in environments with a very long PATH.
|
|
9
34
|
ffmpeg.setFfmpegPath(ffmpegInstaller.path);
|
|
10
35
|
ffmpeg.setFfprobePath(ffprobeInstaller.path);
|
|
36
|
+
process.env.FFMPEG_PATH = ffmpegInstaller.path;
|
|
37
|
+
process.env.FFPROBE_PATH = ffprobeInstaller.path;
|
|
11
38
|
/**
|
|
12
39
|
* Get video metadata using ffprobe
|
|
13
40
|
* @param videoPath - Path to the video file
|
|
@@ -42,16 +69,17 @@ export async function getVideoMetadata(videoPath) {
|
|
|
42
69
|
* Extract a single frame at a specific timestamp
|
|
43
70
|
* @param videoPath - Path to the video file
|
|
44
71
|
* @param timestampSec - Timestamp in seconds
|
|
45
|
-
* @returns Buffer containing the
|
|
72
|
+
* @returns Buffer containing the JPEG frame
|
|
46
73
|
*/
|
|
47
74
|
export async function extractFrameAt(videoPath, timestampSec) {
|
|
48
75
|
const tempDir = await mkdtemp(path.join(tmpdir(), 'video-mcp-'));
|
|
49
|
-
const outputPath = path.join(tempDir, 'frame.
|
|
76
|
+
const outputPath = path.join(tempDir, 'frame.jpg');
|
|
50
77
|
try {
|
|
51
78
|
await new Promise((resolve, reject) => {
|
|
52
79
|
ffmpeg(videoPath)
|
|
53
80
|
.seekInput(timestampSec)
|
|
54
81
|
.frames(1)
|
|
82
|
+
.outputOptions(['-q:v 2'])
|
|
55
83
|
.output(outputPath)
|
|
56
84
|
.on('end', () => resolve())
|
|
57
85
|
.on('error', reject)
|
|
@@ -66,27 +94,42 @@ export async function extractFrameAt(videoPath, timestampSec) {
|
|
|
66
94
|
}
|
|
67
95
|
/**
|
|
68
96
|
* Extract N evenly-spaced frames from a video
|
|
97
|
+
*
|
|
98
|
+
* Uses the ffmpeg `fps` filter with a single output instead of
|
|
99
|
+
* fluent-ffmpeg's `.screenshots()` API. `.screenshots()` creates one output
|
|
100
|
+
* entry per frame, producing a command line that grows linearly with the
|
|
101
|
+
* frame count. On Windows, where CreateProcessW imposes a ~32 KB limit on
|
|
102
|
+
* the combined command line + environment block, this easily exceeds the
|
|
103
|
+
* limit in VS Code's MCP server environment (which inherits a large set of
|
|
104
|
+
* environment variables). The fps-filter approach emits all frames through
|
|
105
|
+
* a single output, keeping the command line constant regardless of count.
|
|
106
|
+
*
|
|
69
107
|
* @param videoPath - Path to the video file
|
|
70
108
|
* @param count - Number of frames to extract
|
|
71
|
-
* @returns Array of
|
|
109
|
+
* @returns Array of JPEG buffers
|
|
72
110
|
*/
|
|
73
111
|
export async function extractFramesEvenly(videoPath, count) {
|
|
112
|
+
// Need duration to calculate the fps rate
|
|
113
|
+
const meta = await getVideoMetadata(videoPath);
|
|
114
|
+
const duration = meta.duration;
|
|
115
|
+
if (duration <= 0 || count <= 0)
|
|
116
|
+
return [];
|
|
74
117
|
const tempDir = await mkdtemp(path.join(tmpdir(), 'video-mcp-'));
|
|
75
118
|
try {
|
|
119
|
+
// fps = count / duration → e.g. 40 frames over 514 s ≈ 0.078 fps
|
|
120
|
+
// This naturally produces ~count frames evenly spaced across the video.
|
|
121
|
+
const fpsRate = count / duration;
|
|
76
122
|
await new Promise((resolve, reject) => {
|
|
77
123
|
ffmpeg(videoPath)
|
|
78
|
-
.
|
|
79
|
-
|
|
80
|
-
folder: tempDir,
|
|
81
|
-
filename: 'frame-%i.png',
|
|
82
|
-
size: '1280x?', // Resize width to 1280, maintain aspect ratio
|
|
83
|
-
})
|
|
124
|
+
.outputOptions([`-vf fps=${fpsRate},scale=1280:-2`, '-q:v 2'])
|
|
125
|
+
.output(path.join(tempDir, 'frame-%04d.jpg'))
|
|
84
126
|
.on('end', () => resolve())
|
|
85
|
-
.on('error', reject)
|
|
127
|
+
.on('error', reject)
|
|
128
|
+
.run();
|
|
86
129
|
});
|
|
87
130
|
// Read all generated frame files
|
|
88
131
|
const framePaths = (await fs.readdir(tempDir))
|
|
89
|
-
.filter((f) => f.endsWith('.
|
|
132
|
+
.filter((f) => f.endsWith('.jpg'))
|
|
90
133
|
.sort();
|
|
91
134
|
const frames = await Promise.all(framePaths.map((f) => fs.readFile(path.join(tempDir, f))));
|
|
92
135
|
return frames;
|
|
@@ -99,21 +142,21 @@ export async function extractFramesEvenly(videoPath, count) {
|
|
|
99
142
|
* Extract frames at regular intervals
|
|
100
143
|
* @param videoPath - Path to the video file
|
|
101
144
|
* @param intervalSec - Interval in seconds between frames
|
|
102
|
-
* @returns Array of
|
|
145
|
+
* @returns Array of JPEG buffers
|
|
103
146
|
*/
|
|
104
147
|
export async function extractFramesAtInterval(videoPath, intervalSec) {
|
|
105
148
|
const tempDir = await mkdtemp(path.join(tmpdir(), 'video-mcp-'));
|
|
106
149
|
try {
|
|
107
150
|
await new Promise((resolve, reject) => {
|
|
108
151
|
ffmpeg(videoPath)
|
|
109
|
-
.outputOptions([`-vf fps=1/${intervalSec}
|
|
110
|
-
.output(path.join(tempDir, 'frame-%04d.
|
|
152
|
+
.outputOptions([`-vf fps=1/${intervalSec}`, '-q:v 2'])
|
|
153
|
+
.output(path.join(tempDir, 'frame-%04d.jpg'))
|
|
111
154
|
.on('end', () => resolve())
|
|
112
155
|
.on('error', reject)
|
|
113
156
|
.run();
|
|
114
157
|
});
|
|
115
158
|
const framePaths = (await fs.readdir(tempDir))
|
|
116
|
-
.filter((f) => f.endsWith('.
|
|
159
|
+
.filter((f) => f.endsWith('.jpg'))
|
|
117
160
|
.sort();
|
|
118
161
|
const frames = await Promise.all(framePaths.map((f) => fs.readFile(path.join(tempDir, f))));
|
|
119
162
|
return frames;
|
|
@@ -126,19 +169,20 @@ export async function extractFramesAtInterval(videoPath, intervalSec) {
|
|
|
126
169
|
* Extract frames at specific timestamps
|
|
127
170
|
* @param videoPath - Path to the video file
|
|
128
171
|
* @param timestamps - Array of timestamps in seconds
|
|
129
|
-
* @returns Array of
|
|
172
|
+
* @returns Array of JPEG buffers (same order as timestamps)
|
|
130
173
|
*/
|
|
131
174
|
export async function extractFramesAtTimestamps(videoPath, timestamps) {
|
|
132
175
|
const frames = [];
|
|
133
176
|
const tempDir = await mkdtemp(path.join(tmpdir(), 'video-mcp-'));
|
|
134
177
|
try {
|
|
135
178
|
for (let i = 0; i < timestamps.length; i++) {
|
|
136
|
-
const outputPath = path.join(tempDir, `frame-${i}.
|
|
179
|
+
const outputPath = path.join(tempDir, `frame-${i}.jpg`);
|
|
137
180
|
const timestamp = timestamps[i];
|
|
138
181
|
await new Promise((resolve, reject) => {
|
|
139
182
|
ffmpeg(videoPath)
|
|
140
183
|
.seekInput(timestamp)
|
|
141
184
|
.frames(1)
|
|
185
|
+
.outputOptions(['-q:v 2'])
|
|
142
186
|
.output(outputPath)
|
|
143
187
|
.on('end', () => resolve())
|
|
144
188
|
.on('error', reject)
|
|
@@ -1 +1 @@
|
|
|
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,OAAO,EAAE,EAAE,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,IAAI,CAAA;
|
|
1
|
+
{"version":3,"file":"ffmpeg.js","sourceRoot":"","sources":["../../src/services/ffmpeg.ts"],"names":[],"mappings":"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"}
|
|
@@ -49,14 +49,19 @@ export declare function getRuntimeFallbackChain(provider: VideoProvider, hasKimi
|
|
|
49
49
|
/**
|
|
50
50
|
* Get the maximum number of frames to extract for summarization.
|
|
51
51
|
*
|
|
52
|
-
*
|
|
53
|
-
*
|
|
52
|
+
* Pro users: unset or empty → default 100. `VIDEO_MCP_MAX_FRAMES=0` (or any
|
|
53
|
+
* non-positive value) → uncapped (`Infinity`; size guard still enforced).
|
|
54
|
+
* Any positive value ≥ 5 is used as-is.
|
|
55
|
+
*
|
|
56
|
+
* Free users: `0`, unset, or empty falls back to the default of 50.
|
|
57
|
+
* Explicit values are clamped to the 5–50 range.
|
|
54
58
|
*/
|
|
55
59
|
export declare function getMaxFrames(): number;
|
|
56
60
|
/**
|
|
57
|
-
* Returns true when the user
|
|
58
|
-
*
|
|
59
|
-
*
|
|
61
|
+
* Returns true when the user is not on pro and their `VIDEO_MCP_MAX_FRAMES`
|
|
62
|
+
* setting was silently capped (set to a value outside the free 5–50 range
|
|
63
|
+
* or set to 0 which is not allowed on free). Used by tool handlers to
|
|
64
|
+
* append a pro notice to the response.
|
|
60
65
|
*/
|
|
61
66
|
export declare function wasFramesCapped(): boolean;
|
|
62
67
|
//# sourceMappingURL=providerRouter.d.ts.map
|
|
@@ -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,CAAA;AAErD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,OAAO,EAClB,YAAY,GAAE,OAAe,GAC5B,aAAa,CAiBf;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,aAAa,CAAA;IACvB,YAAY,CAAC,EAAE,aAAa,CAAA;CAC7B,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,OAAO,EAClB,YAAY,GAAE,OAAe,GAC5B,cAAc,CAgBhB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,CAUlD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,OAAO,EAClB,YAAY,GAAE,OAAe,GAC5B,aAAa,EAAE,CAejB;
|
|
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,CAAA;AAErD;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,OAAO,EAClB,YAAY,GAAE,OAAe,GAC5B,aAAa,CAiBf;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,aAAa,CAAA;IACvB,YAAY,CAAC,EAAE,aAAa,CAAA;CAC7B,CAAA;AAED;;;;;;GAMG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,OAAO,EAClB,YAAY,GAAE,OAAe,GAC5B,cAAc,CAgBhB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,CAUlD;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,OAAO,EAClB,YAAY,GAAE,OAAe,GAC5B,aAAa,EAAE,CAejB;AAQD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAerC;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAQzC"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Provider Selection
|
|
3
3
|
* Determines which AI backend to use based on user preference
|
|
4
4
|
*/
|
|
5
|
-
import {
|
|
5
|
+
import { isPro } from '../utils/license.js';
|
|
6
6
|
/**
|
|
7
7
|
* Validate that the selected provider has a configured API key
|
|
8
8
|
* @param provider - User-specified provider ('glm', 'kimi', or 'gemini')
|
|
@@ -80,28 +80,52 @@ export function getRuntimeFallbackChain(provider, hasKimiKey, hasGLMKey, hasGemi
|
|
|
80
80
|
};
|
|
81
81
|
return candidates.filter((p) => keyMap[p]);
|
|
82
82
|
}
|
|
83
|
-
/** Free-tier cap for max frames.
|
|
84
|
-
const FREE_MAX_FRAMES =
|
|
83
|
+
/** Free-tier cap for max frames. Free users stay within 5–50. */
|
|
84
|
+
const FREE_MAX_FRAMES = 50;
|
|
85
|
+
/** Pro-tier default frames when VIDEO_MCP_MAX_FRAMES is unset. Set to 0 for uncapped. */
|
|
86
|
+
const PRO_DEFAULT_FRAMES = 100;
|
|
85
87
|
/**
|
|
86
88
|
* Get the maximum number of frames to extract for summarization.
|
|
87
89
|
*
|
|
88
|
-
*
|
|
89
|
-
*
|
|
90
|
+
* Pro users: unset or empty → default 100. `VIDEO_MCP_MAX_FRAMES=0` (or any
|
|
91
|
+
* non-positive value) → uncapped (`Infinity`; size guard still enforced).
|
|
92
|
+
* Any positive value ≥ 5 is used as-is.
|
|
93
|
+
*
|
|
94
|
+
* Free users: `0`, unset, or empty falls back to the default of 50.
|
|
95
|
+
* Explicit values are clamped to the 5–50 range.
|
|
90
96
|
*/
|
|
91
97
|
export function getMaxFrames() {
|
|
92
|
-
const
|
|
93
|
-
const
|
|
94
|
-
|
|
98
|
+
const raw = process.env.VIDEO_MCP_MAX_FRAMES ?? '';
|
|
99
|
+
const trimmed = raw.trim();
|
|
100
|
+
const envValue = parseInt(raw, 10);
|
|
101
|
+
const hasValue = trimmed !== '' && !isNaN(envValue);
|
|
102
|
+
if (isPro()) {
|
|
103
|
+
if (!hasValue)
|
|
104
|
+
return PRO_DEFAULT_FRAMES; // unset/empty → default 100
|
|
105
|
+
if (envValue <= 0)
|
|
106
|
+
return Infinity; // 0 or negative → uncapped
|
|
107
|
+
return Math.max(5, envValue); // positive → use it (min 5)
|
|
108
|
+
}
|
|
109
|
+
// Free tier: 0 / unset / empty → default 50, otherwise clamp 5–50
|
|
110
|
+
if (!hasValue || envValue <= 0)
|
|
111
|
+
return FREE_MAX_FRAMES;
|
|
112
|
+
return Math.max(5, Math.min(FREE_MAX_FRAMES, envValue));
|
|
95
113
|
}
|
|
96
114
|
/**
|
|
97
|
-
* Returns true when the user
|
|
98
|
-
*
|
|
99
|
-
*
|
|
115
|
+
* Returns true when the user is not on pro and their `VIDEO_MCP_MAX_FRAMES`
|
|
116
|
+
* setting was silently capped (set to a value outside the free 5–50 range
|
|
117
|
+
* or set to 0 which is not allowed on free). Used by tool handlers to
|
|
118
|
+
* append a pro notice to the response.
|
|
100
119
|
*/
|
|
101
120
|
export function wasFramesCapped() {
|
|
102
|
-
if (
|
|
121
|
+
if (isPro())
|
|
122
|
+
return false;
|
|
123
|
+
const raw = process.env.VIDEO_MCP_MAX_FRAMES ?? '';
|
|
124
|
+
const envValue = parseInt(raw, 10);
|
|
125
|
+
const hasValue = raw.trim() !== '' && !isNaN(envValue);
|
|
126
|
+
// Capped if they set 0, a negative, or a value above the free max
|
|
127
|
+
if (!hasValue)
|
|
103
128
|
return false;
|
|
104
|
-
|
|
105
|
-
return envMaxFrames > FREE_MAX_FRAMES;
|
|
129
|
+
return envValue <= 0 || envValue > FREE_MAX_FRAMES;
|
|
106
130
|
}
|
|
107
131
|
//# sourceMappingURL=providerRouter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providerRouter.js","sourceRoot":"","sources":["../../src/services/providerRouter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"providerRouter.js","sourceRoot":"","sources":["../../src/services/providerRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ import { createTempDir, cleanupTempDir } from '../utils/tempFiles.js';
|
|
|
13
13
|
import { isPlatformUrl, isRemoteUrl, normalizeVideoPath, downloadVideoToTemp, downloadWithYtDlp, wasResolutionCapped, } from '../utils/videoUtils.js';
|
|
14
14
|
import { logProgress } from '../utils/logger.js';
|
|
15
15
|
import { getAudioEnhancementMode, tryExtractAndTranscribeAudio, buildPromptWithTranscript, } from '../utils/audioUtils.js';
|
|
16
|
-
import {
|
|
16
|
+
import { isPro, proNotice } from '../utils/license.js';
|
|
17
17
|
export const analyzeVideoTool = async (params) => {
|
|
18
18
|
let tempDir = null;
|
|
19
19
|
try {
|
|
@@ -149,13 +149,13 @@ export const analyzeVideoTool = async (params) => {
|
|
|
149
149
|
}
|
|
150
150
|
runtimeFallbacks.forEach((p) => parts.push(`${p} (runtime error)`));
|
|
151
151
|
const fallbackNotice = parts.length > 0 ? ` (fell back from: ${parts.join(', ')})` : '';
|
|
152
|
-
// ──
|
|
152
|
+
// ── Pro notices ────────────────────────────────────────────────────────────
|
|
153
153
|
const notices = [];
|
|
154
|
-
if (!
|
|
155
|
-
notices.push(
|
|
154
|
+
if (!isPro() && process.env.AUDIO_ENHANCE_VIDEO_ANALYSIS !== 'false') {
|
|
155
|
+
notices.push(proNotice('Audio-enhanced analysis'));
|
|
156
156
|
}
|
|
157
157
|
if (wasResolutionCapped()) {
|
|
158
|
-
notices.push(
|
|
158
|
+
notices.push(proNotice('Extended download resolution (above 720p)'));
|
|
159
159
|
}
|
|
160
160
|
return {
|
|
161
161
|
content: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzeVideo.js","sourceRoot":"","sources":["../../src/tools/analyzeVideo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAA;AACrC,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EACL,kBAAkB,EAClB,uBAAuB,GAExB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACrE,OAAO,EACL,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EACL,uBAAuB,EACvB,4BAA4B,EAC5B,yBAAyB,GAC1B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"analyzeVideo.js","sourceRoot":"","sources":["../../src/tools/analyzeVideo.ts"],"names":[],"mappings":"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"}
|
|
@@ -7,7 +7,7 @@ import { bufferToBase64String } from '../utils/base64.js';
|
|
|
7
7
|
import { cleanupTempDir } from '../utils/tempFiles.js';
|
|
8
8
|
import { resolveVideoInput, wasResolutionCapped } from '../utils/videoUtils.js';
|
|
9
9
|
import { logProgress } from '../utils/logger.js';
|
|
10
|
-
import {
|
|
10
|
+
import { proNotice } from '../utils/license.js';
|
|
11
11
|
export const extractFramesTool = async (params) => {
|
|
12
12
|
let tempDir = null;
|
|
13
13
|
try {
|
|
@@ -60,13 +60,13 @@ export const extractFramesTool = async (params) => {
|
|
|
60
60
|
...frames.map((frameBuffer) => ({
|
|
61
61
|
type: 'image',
|
|
62
62
|
data: bufferToBase64String(frameBuffer),
|
|
63
|
-
mimeType: 'image/
|
|
63
|
+
mimeType: 'image/jpeg',
|
|
64
64
|
})),
|
|
65
65
|
];
|
|
66
66
|
if (wasResolutionCapped()) {
|
|
67
67
|
content.push({
|
|
68
68
|
type: 'text',
|
|
69
|
-
text:
|
|
69
|
+
text: proNotice('Extended download resolution (above 720p)'),
|
|
70
70
|
});
|
|
71
71
|
}
|
|
72
72
|
return { content };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"extractFrames.js","sourceRoot":"","sources":["../../src/tools/extractFrames.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,cAAc,EACd,uBAAuB,EACvB,yBAAyB,EACzB,mBAAmB,GACpB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"extractFrames.js","sourceRoot":"","sources":["../../src/tools/extractFrames.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,7 +6,7 @@ import { getVideoMetadata } from '../services/ffmpeg.js';
|
|
|
6
6
|
import { cleanupTempDir } from '../utils/tempFiles.js';
|
|
7
7
|
import { resolveVideoInput, wasResolutionCapped } from '../utils/videoUtils.js';
|
|
8
8
|
import { logProgress } from '../utils/logger.js';
|
|
9
|
-
import {
|
|
9
|
+
import { proNotice } from '../utils/license.js';
|
|
10
10
|
export const getVideoInfoTool = async (params) => {
|
|
11
11
|
let tempDir = null;
|
|
12
12
|
try {
|
|
@@ -37,7 +37,7 @@ export const getVideoInfoTool = async (params) => {
|
|
|
37
37
|
if (wasResolutionCapped()) {
|
|
38
38
|
content.push({
|
|
39
39
|
type: 'text',
|
|
40
|
-
text:
|
|
40
|
+
text: proNotice('Extended download resolution (above 720p)'),
|
|
41
41
|
});
|
|
42
42
|
}
|
|
43
43
|
return { content };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"getVideoInfo.js","sourceRoot":"","sources":["../../src/tools/getVideoInfo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"getVideoInfo.js","sourceRoot":"","sources":["../../src/tools/getVideoInfo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACxD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACtD,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAA;AAC/E,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAE/C,MAAM,CAAC,MAAM,gBAAgB,GAAG,KAAK,EAAE,MAAW,EAAE,EAAE;IACpD,IAAI,OAAO,GAAkB,IAAI,CAAA;IACjC,IAAI,CAAC;QACH,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAA;QAE5B,MAAM,WAAW,CAAC,2BAA2B,CAAC,CAAA;QAC9C,MAAM,QAAQ,GAAG,MAAM,iBAAiB,CAAC,SAAS,CAAC,CAAA;QACnD,MAAM,YAAY,GAAG,QAAQ,CAAC,YAAY,CAAA;QAC1C,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAA;QAC1B,IAAI,QAAQ,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACnC,MAAM,WAAW,CAAC,sCAAsC,CAAC,CAAA;QAC3D,CAAC;aAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACxC,MAAM,WAAW,CAAC,6BAA6B,CAAC,CAAA;QAClD,CAAC;QAED,MAAM,WAAW,CAAC,2BAA2B,CAAC,CAAA;QAC9C,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,YAAY,CAAC,CAAA;QAErD,IAAI,OAAO;YAAE,MAAM,cAAc,CAAC,OAAO,CAAC,CAAA;QAE1C,MAAM,OAAO,GAAU;YACrB;gBACE,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAClB;oBACE,SAAS;oBACT,GAAG,QAAQ;iBACZ,EACD,IAAI,EACJ,CAAC,CACF;aACF;SACF,CAAA;QAED,IAAI,mBAAmB,EAAE,EAAE,CAAC;YAC1B,OAAO,CAAC,IAAI,CAAC;gBACX,IAAI,EAAE,MAAe;gBACrB,IAAI,EAAE,SAAS,CAAC,2CAA2C,CAAC;aAC7D,CAAC,CAAA;QACJ,CAAC;QAED,OAAO,EAAE,OAAO,EAAE,CAAA;IACpB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,OAAO;YAAE,MAAM,cAAc,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QAC1D,OAAO;YACL,OAAO,EAAE,IAAI;YACb,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,6BAA6B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;iBAC5F;aACF;SACF,CAAA;IACH,CAAC;AACH,CAAC,CAAA"}
|
|
@@ -11,7 +11,7 @@ import { bufferToBase64String } from '../utils/base64.js';
|
|
|
11
11
|
import { createTempDir, cleanupTempDir } from '../utils/tempFiles.js';
|
|
12
12
|
import { isPlatformUrl, isRemoteUrl, normalizeVideoPath, downloadVideoToTemp, downloadWithYtDlp, wasResolutionCapped, } from '../utils/videoUtils.js';
|
|
13
13
|
import { logProgress } from '../utils/logger.js';
|
|
14
|
-
import {
|
|
14
|
+
import { proNotice } from '../utils/license.js';
|
|
15
15
|
function clamp(value, min, max) {
|
|
16
16
|
return Math.max(min, Math.min(max, value));
|
|
17
17
|
}
|
|
@@ -101,7 +101,7 @@ export const searchTimestampTool = async (params) => {
|
|
|
101
101
|
}
|
|
102
102
|
extractedFrames = rawFrames.map((buf) => ({
|
|
103
103
|
data: bufferToBase64String(buf),
|
|
104
|
-
mimeType: 'image/
|
|
104
|
+
mimeType: 'image/jpeg',
|
|
105
105
|
}));
|
|
106
106
|
}
|
|
107
107
|
const searchPrompt = [
|
|
@@ -160,7 +160,7 @@ export const searchTimestampTool = async (params) => {
|
|
|
160
160
|
content.push({
|
|
161
161
|
type: 'image',
|
|
162
162
|
data: responseImage,
|
|
163
|
-
mimeType: 'image/
|
|
163
|
+
mimeType: 'image/jpeg',
|
|
164
164
|
});
|
|
165
165
|
}
|
|
166
166
|
content.push({
|
|
@@ -170,7 +170,7 @@ export const searchTimestampTool = async (params) => {
|
|
|
170
170
|
if (wasResolutionCapped()) {
|
|
171
171
|
content.push({
|
|
172
172
|
type: 'text',
|
|
173
|
-
text:
|
|
173
|
+
text: proNotice('Extended download resolution (above 720p)'),
|
|
174
174
|
});
|
|
175
175
|
}
|
|
176
176
|
return { content };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"searchTimestamp.js","sourceRoot":"","sources":["../../src/tools/searchTimestamp.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACL,uBAAuB,EACvB,gBAAgB,GACjB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EACL,kBAAkB,EAClB,uBAAuB,GAExB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACrE,OAAO,EACL,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"searchTimestamp.js","sourceRoot":"","sources":["../../src/tools/searchTimestamp.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summarizeVideo.d.ts","sourceRoot":"","sources":["../../src/tools/summarizeVideo.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"summarizeVideo.d.ts","sourceRoot":"","sources":["../../src/tools/summarizeVideo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAgEH,eAAO,MAAM,kBAAkB,GAAU,QAAQ,GAAG;;;;;;;;;;;;EA4QnD,CAAA"}
|
|
@@ -14,7 +14,7 @@ import { createTempDir, cleanupTempDir } from '../utils/tempFiles.js';
|
|
|
14
14
|
import { isPlatformUrl, isRemoteUrl, normalizeVideoPath, downloadVideoToTemp, downloadWithYtDlp, wasResolutionCapped, } from '../utils/videoUtils.js';
|
|
15
15
|
import { logProgress } from '../utils/logger.js';
|
|
16
16
|
import { getAudioEnhancementMode, tryExtractAndTranscribeAudio, buildPromptWithTranscript, } from '../utils/audioUtils.js';
|
|
17
|
-
import {
|
|
17
|
+
import { isPro, proNotice } from '../utils/license.js';
|
|
18
18
|
const LONG_VIDEO_THRESHOLD_SEC = 5 * 60;
|
|
19
19
|
function buildSummaryPrompt() {
|
|
20
20
|
return [
|
|
@@ -26,6 +26,20 @@ function buildSummaryPrompt() {
|
|
|
26
26
|
'4) Notable details',
|
|
27
27
|
].join('\n');
|
|
28
28
|
}
|
|
29
|
+
/**
|
|
30
|
+
* Trim trailing frames until the total base64 payload fits within maxBytes.
|
|
31
|
+
* Always keeps at least 1 frame. Returns the number of frames removed.
|
|
32
|
+
*/
|
|
33
|
+
function trimFramesToFitSize(frames, maxBytes) {
|
|
34
|
+
let totalBytes = frames.reduce((sum, f) => sum + f.data.length, 0);
|
|
35
|
+
let removed = 0;
|
|
36
|
+
while (frames.length > 1 && totalBytes > maxBytes) {
|
|
37
|
+
const dropped = frames.pop();
|
|
38
|
+
totalBytes -= dropped.data.length;
|
|
39
|
+
removed++;
|
|
40
|
+
}
|
|
41
|
+
return removed;
|
|
42
|
+
}
|
|
29
43
|
export const summarizeVideoTool = async (params) => {
|
|
30
44
|
let tempDir = null;
|
|
31
45
|
try {
|
|
@@ -67,6 +81,7 @@ export const summarizeVideoTool = async (params) => {
|
|
|
67
81
|
let enhancedPrompt = null; // lazy: first non-Gemini attempt
|
|
68
82
|
let isLongVideo = null; // lazy: once localPath is available
|
|
69
83
|
let longVideoFrames = null; // lazy
|
|
84
|
+
let sizeTrimmedCount = 0; // frames dropped by size guard
|
|
70
85
|
let summary;
|
|
71
86
|
let selectedProvider = firstProvider;
|
|
72
87
|
let lastError = '';
|
|
@@ -127,12 +142,28 @@ export const summarizeVideoTool = async (params) => {
|
|
|
127
142
|
else if (isLongVideo) {
|
|
128
143
|
// Long video — extract frames once and reuse across retries
|
|
129
144
|
if (!longVideoFrames) {
|
|
145
|
+
// Provider-aware size limits applied to the total base64 frame payload.
|
|
146
|
+
// The limit is intentionally conservative relative to the raw API limit
|
|
147
|
+
// to leave headroom for JSON structure overhead (content array, per-frame
|
|
148
|
+
// field names, data URI prefix, prompt text, model name, etc.).
|
|
149
|
+
// GLM practical limit: ~12 MB of frame data (~20 MB raw API limit minus overhead).
|
|
150
|
+
// Kimi conservative limit: ~80 MB.
|
|
151
|
+
const sizeLimitBytes = p === 'glm' ? 12 * 1024 * 1024 : 80 * 1024 * 1024;
|
|
152
|
+
// Cap extraction count to prevent OOM: extract at most ~1.5× what the
|
|
153
|
+
// provider can accept. Assumes ~100 KB per base64-encoded JPEG frame.
|
|
154
|
+
const extractionCap = Math.ceil((sizeLimitBytes / (100 * 1024)) * 1.5);
|
|
155
|
+
const framesToExtract = Math.min(getMaxFrames(), extractionCap);
|
|
130
156
|
await logProgress('Extracting keyframes...');
|
|
131
|
-
const rawFrames = await extractFramesEvenly(localPath,
|
|
157
|
+
const rawFrames = await extractFramesEvenly(localPath, framesToExtract);
|
|
132
158
|
longVideoFrames = rawFrames.map((buf) => ({
|
|
133
159
|
data: bufferToBase64String(buf),
|
|
134
|
-
mimeType: 'image/
|
|
160
|
+
mimeType: 'image/jpeg',
|
|
135
161
|
}));
|
|
162
|
+
// Apply size guard: trim trailing frames if payload still exceeds limit.
|
|
163
|
+
sizeTrimmedCount = trimFramesToFitSize(longVideoFrames, sizeLimitBytes);
|
|
164
|
+
if (sizeTrimmedCount > 0) {
|
|
165
|
+
await logProgress(`Size guard: dropped ${sizeTrimmedCount} frame(s) to fit within provider limit`);
|
|
166
|
+
}
|
|
136
167
|
}
|
|
137
168
|
await logProgress('Summarizing video...');
|
|
138
169
|
if (p === 'glm') {
|
|
@@ -183,16 +214,19 @@ export const summarizeVideoTool = async (params) => {
|
|
|
183
214
|
}
|
|
184
215
|
runtimeFallbacks.forEach((p) => parts.push(`${p} (runtime error)`));
|
|
185
216
|
const fallbackNotice = parts.length > 0 ? ` (fell back from: ${parts.join(', ')})` : '';
|
|
186
|
-
// ──
|
|
217
|
+
// ── Pro notices ────────────────────────────────────────────────────────────
|
|
187
218
|
const notices = [];
|
|
188
|
-
if (!
|
|
189
|
-
notices.push(
|
|
219
|
+
if (!isPro() && process.env.AUDIO_ENHANCE_VIDEO_ANALYSIS !== 'false') {
|
|
220
|
+
notices.push(proNotice('Audio-enhanced analysis'));
|
|
190
221
|
}
|
|
191
222
|
if (wasFramesCapped()) {
|
|
192
|
-
notices.push(
|
|
223
|
+
notices.push(proNotice('Extended frame extraction (uncapped for pro users)'));
|
|
224
|
+
}
|
|
225
|
+
if (sizeTrimmedCount > 0) {
|
|
226
|
+
notices.push(`Note: ${sizeTrimmedCount} frame(s) were dropped to keep the payload within the provider size limit.`);
|
|
193
227
|
}
|
|
194
228
|
if (wasResolutionCapped()) {
|
|
195
|
-
notices.push(
|
|
229
|
+
notices.push(proNotice('Extended download resolution (above 720p)'));
|
|
196
230
|
}
|
|
197
231
|
return {
|
|
198
232
|
content: [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summarizeVideo.js","sourceRoot":"","sources":["../../src/tools/summarizeVideo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,EAAE,gBAAgB,EAAE,MAAM,IAAI,CAAA;AACrC,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7E,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAA;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EACL,kBAAkB,EAClB,YAAY,EACZ,uBAAuB,EACvB,eAAe,GAEhB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,oBAAoB,EAAE,MAAM,oBAAoB,CAAA;AACzD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AACrE,OAAO,EACL,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EACL,uBAAuB,EACvB,4BAA4B,EAC5B,yBAAyB,GAC1B,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"summarizeVideo.js","sourceRoot":"","sources":["../../src/tools/summarizeVideo.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,7 +12,7 @@ import { resolveAudioProvider, getAudioProviderKeys, } from '../services/audioRo
|
|
|
12
12
|
import { createTempDir, cleanupTempDir, generateTempFilename, } from '../utils/tempFiles.js';
|
|
13
13
|
import { isPlatformUrl, isRemoteUrl, normalizeVideoPath, downloadVideoToTemp, downloadWithYtDlp, wasResolutionCapped, } from '../utils/videoUtils.js';
|
|
14
14
|
import { logProgress } from '../utils/logger.js';
|
|
15
|
-
import {
|
|
15
|
+
import { proNotice } from '../utils/license.js';
|
|
16
16
|
export const transcribeVideoTool = async (params) => {
|
|
17
17
|
let tempDir = null;
|
|
18
18
|
try {
|
|
@@ -91,7 +91,7 @@ export const transcribeVideoTool = async (params) => {
|
|
|
91
91
|
if (wasResolutionCapped()) {
|
|
92
92
|
content.push({
|
|
93
93
|
type: 'text',
|
|
94
|
-
text:
|
|
94
|
+
text: proNotice('Extended download resolution (above 720p)'),
|
|
95
95
|
});
|
|
96
96
|
}
|
|
97
97
|
return { content };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcribeVideo.js","sourceRoot":"","sources":["../../src/tools/transcribeVideo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpD,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAA;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GAGrB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EACL,aAAa,EACb,cAAc,EACd,oBAAoB,GACrB,MAAM,uBAAuB,CAAA;AAC9B,OAAO,EACL,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,GACpB,MAAM,wBAAwB,CAAA;AAC/B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"transcribeVideo.js","sourceRoot":"","sources":["../../src/tools/transcribeVideo.ts"],"names":[],"mappings":"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"}
|
|
@@ -18,7 +18,7 @@ export type TranscriptResult = {
|
|
|
18
18
|
* Reads and validates AUDIO_ENHANCE_VIDEO_ANALYSIS env var.
|
|
19
19
|
* Returns 'auto' if unset or unrecognised (the default behaviour).
|
|
20
20
|
*
|
|
21
|
-
* Audio enhancement is a
|
|
21
|
+
* Audio enhancement is a pro feature. When no valid license is present,
|
|
22
22
|
* this always returns 'false' regardless of the env var value.
|
|
23
23
|
*/
|
|
24
24
|
export declare function getAudioEnhancementMode(): AudioEnhancementMode;
|
package/dist/utils/audioUtils.js
CHANGED
|
@@ -18,16 +18,16 @@ import { createGeminiClient } from '../services/geminiClient.js';
|
|
|
18
18
|
import { resolveAudioProvider, getAudioProviderKeys, } from '../services/audioRouter.js';
|
|
19
19
|
import { generateTempFilename } from './tempFiles.js';
|
|
20
20
|
import { logProgress } from './logger.js';
|
|
21
|
-
import {
|
|
21
|
+
import { isPro } from './license.js';
|
|
22
22
|
/**
|
|
23
23
|
* Reads and validates AUDIO_ENHANCE_VIDEO_ANALYSIS env var.
|
|
24
24
|
* Returns 'auto' if unset or unrecognised (the default behaviour).
|
|
25
25
|
*
|
|
26
|
-
* Audio enhancement is a
|
|
26
|
+
* Audio enhancement is a pro feature. When no valid license is present,
|
|
27
27
|
* this always returns 'false' regardless of the env var value.
|
|
28
28
|
*/
|
|
29
29
|
export function getAudioEnhancementMode() {
|
|
30
|
-
if (!
|
|
30
|
+
if (!isPro())
|
|
31
31
|
return 'false';
|
|
32
32
|
const val = process.env.AUDIO_ENHANCE_VIDEO_ANALYSIS;
|
|
33
33
|
if (val === 'true' || val === 'false' || val === 'auto')
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"audioUtils.js","sourceRoot":"","sources":["../../src/utils/audioUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAA;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GAErB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"audioUtils.js","sourceRoot":"","sources":["../../src/utils/audioUtils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AACtE,OAAO,EAAE,cAAc,EAAE,MAAM,qCAAqC,CAAA;AACpE,OAAO,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAA;AACxE,OAAO,EAAE,eAAe,EAAE,MAAM,sCAAsC,CAAA;AACtE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAA;AAChE,OAAO,EACL,oBAAoB,EACpB,oBAAoB,GAErB,MAAM,4BAA4B,CAAA;AACnC,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACrD,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,KAAK,EAAE,MAAM,cAAc,CAAA;AASpC;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB;IACrC,IAAI,CAAC,KAAK,EAAE;QAAE,OAAO,OAAO,CAAA;IAC5B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAA;IACpD,IAAI,GAAG,KAAK,MAAM,IAAI,GAAG,KAAK,OAAO,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,GAAG,CAAA;IACnE,OAAO,MAAM,CAAA;AACf,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,yBAAyB;IACvC,OAAO,uBAAuB,EAAE,KAAK,OAAO,CAAA;AAC9C,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,2BAA2B,CACzC,SAAiB,EACjB,WAAmB;IAEnB,IAAI,WAAW,IAAI,CAAC;QAAE,OAAO,SAAS,GAAG,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAA;IAC9D,MAAM,cAAc,GAAG,SAAS,GAAG,CAAC,WAAW,GAAG,EAAE,CAAC,CAAA;IACrD,IAAI,cAAc,IAAI,EAAE;QAAE,OAAO,MAAM,CAAA;IACvC,IAAI,cAAc,IAAI,EAAE;QAAE,OAAO,QAAQ,CAAA;IACzC,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,KAAK,UAAU,4BAA4B,CAChD,cAAsB,EACtB,OAAe;IAEf,MAAM,IAAI,GAAG,uBAAuB,EAAE,CAAA;IACtC,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,IAAI,CAAA;IAEjC,IAAI,CAAC;QACH,gFAAgF;QAChF,MAAM,QAAQ,GAAG,MAAM,gBAAgB,CAAC,cAAc,CAAC,CAAA;QAEvD,IAAI,IAAI,KAAK,MAAM,IAAI,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;YAC1C,qDAAqD;YACrD,OAAO,IAAI,CAAA;QACb,CAAC;QAED,MAAM,IAAI,GAAG,oBAAoB,EAAE,CAAA;QACnC,IAAI,gBAA+B,CAAA;QACnC,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,oBAAoB,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;YACtD,gBAAgB,GAAG,QAAQ,CAAC,QAAQ,CAAA;QACtC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAA,CAAC,iDAAiD;QAC/D,CAAC;QAED,MAAM,WAAW,CAAC,oCAAoC,CAAC,CAAA;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAA;QAClE,MAAM,YAAY,CAAC,cAAc,EAAE,SAAS,CAAC,CAAA;QAE7C,MAAM,WAAW,CAAC,uBAAuB,CAAC,CAAA;QAE1C,IAAI,IAAY,CAAA;QAEhB,QAAQ,gBAAgB,EAAE,CAAC;YACzB,KAAK,UAAU,CAAC,CAAC,CAAC;gBAChB,MAAM,MAAM,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAiB,CAAC,CAAA;gBAChE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;gBACjD,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;gBAClB,MAAK;YACP,CAAC;YACD,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,MAAM,GAAG,IAAI,gBAAgB,CAAC,OAAO,CAAC,GAAG,CAAC,kBAAmB,CAAC,CAAA;gBACpE,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;gBACjD,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;gBAClB,MAAK;YACP,CAAC;YACD,KAAK,MAAM,CAAC,CAAC,CAAC;gBACZ,MAAM,MAAM,GAAG,IAAI,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,YAAa,CAAC,CAAA;gBAC7D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,SAAS,CAAC,CAAA;gBACjD,IAAI,GAAG,MAAM,CAAC,IAAI,CAAA;gBAClB,MAAK;YACP,CAAC;YACD,KAAK,QAAQ,CAAC,CAAC,CAAC;gBACd,MAAM,YAAY,GAAG,kBAAkB,EAAE,CAAA;gBACzC,IAAI,CAAC,YAAY;oBAAE,OAAO,IAAI,CAAA;gBAC9B,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,WAAW,CAAC,SAAS,CAAC,CAAA;gBAC9D,MAAM,YAAY,CAAC,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,CAAA;gBAC3D,IAAI,GAAG,MAAM,YAAY,CAAC,eAAe,CAAC,YAAY,CAAC,CAAA;gBACvD,MAAK;YACP,CAAC;QACH,CAAC;QAED,MAAM,SAAS,GAAG,IAAK,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAA;QAClE,MAAM,UAAU,GAAG,2BAA2B,CAAC,SAAS,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAA;QAC5E,OAAO,EAAE,IAAI,EAAE,IAAK,EAAE,UAAU,EAAE,CAAA;IACpC,CAAC;IAAC,MAAM,CAAC;QACP,6EAA6E;QAC7E,OAAO,IAAI,CAAA;IACb,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,yBAAyB,CACvC,MAAc,EACd,MAA+B;IAE/B,IAAI,CAAC,MAAM;QAAE,OAAO,MAAM,CAAA;IAC1B,MAAM,cAAc,GAClB,MAAM,CAAC,UAAU,KAAK,MAAM;QAC1B,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,MAAM,CAAC,UAAU,KAAK,QAAQ;YAC9B,CAAC,CAAC,uBAAuB;YACzB,CAAC,CAAC,6CAA6C,CAAA;IACrD,OAAO,uBAAuB,cAAc,SAAS,MAAM,CAAC,IAAI,+BAA+B,MAAM,EAAE,CAAA;AACzG,CAAC"}
|
package/dist/utils/license.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Pro license validation module.
|
|
3
3
|
*
|
|
4
4
|
* License tokens are compact `payload.signature` strings where:
|
|
5
5
|
* - payload = base64url-encoded JSON: { email, iat, exp }
|
|
@@ -42,14 +42,14 @@ export declare function validateLicenseToken(token: string, nowSec?: number): Li
|
|
|
42
42
|
*/
|
|
43
43
|
export declare function getLicenseInfo(): LicenseInfo;
|
|
44
44
|
/**
|
|
45
|
-
* Returns true if the current process has a valid (non-expired)
|
|
45
|
+
* Returns true if the current process has a valid (non-expired) pro license.
|
|
46
46
|
* The result is cached after the first call (per process lifetime).
|
|
47
47
|
*/
|
|
48
|
-
export declare function
|
|
48
|
+
export declare function isPro(): boolean;
|
|
49
49
|
/**
|
|
50
50
|
* Returns a standard notice string for free-tier feature limits.
|
|
51
51
|
*
|
|
52
|
-
* @param feature - Human-readable name of the
|
|
52
|
+
* @param feature - Human-readable name of the pro feature
|
|
53
53
|
*/
|
|
54
|
-
export declare function
|
|
54
|
+
export declare function proNotice(feature: string): string;
|
|
55
55
|
//# sourceMappingURL=license.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../src/utils/license.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAiBH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,+BAA+B;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,4BAA4B;IAC5B,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAmBD;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAMD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,MAAsC,GAC7C,WAAW,CA4Db;AAMD;;;GAGG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAK5C;AAED;;;GAGG;AACH,wBAAgB,
|
|
1
|
+
{"version":3,"file":"license.d.ts","sourceRoot":"","sources":["../../src/utils/license.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAiBH,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAA;IACb,+BAA+B;IAC/B,GAAG,EAAE,MAAM,CAAA;IACX,4BAA4B;IAC5B,GAAG,EAAE,MAAM,CAAA;CACZ;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,OAAO,CAAA;IACd,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,SAAS,CAAC,EAAE,IAAI,CAAA;IAChB,MAAM,CAAC,EAAE,MAAM,CAAA;CAChB;AAmBD;;;;GAIG;AACH,wBAAgB,kBAAkB,IAAI,IAAI,CAEzC;AAMD;;;;;GAKG;AACH,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,MAAM,EACb,MAAM,GAAE,MAAsC,GAC7C,WAAW,CA4Db;AAMD;;;GAGG;AACH,wBAAgB,cAAc,IAAI,WAAW,CAK5C;AAED;;;GAGG;AACH,wBAAgB,KAAK,IAAI,OAAO,CAE/B;AAED;;;;GAIG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAOjD"}
|
package/dist/utils/license.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
2
|
+
* Pro license validation module.
|
|
3
3
|
*
|
|
4
4
|
* License tokens are compact `payload.signature` strings where:
|
|
5
5
|
* - payload = base64url-encoded JSON: { email, iat, exp }
|
|
@@ -116,21 +116,21 @@ export function getLicenseInfo() {
|
|
|
116
116
|
return cachedResult;
|
|
117
117
|
}
|
|
118
118
|
/**
|
|
119
|
-
* Returns true if the current process has a valid (non-expired)
|
|
119
|
+
* Returns true if the current process has a valid (non-expired) pro license.
|
|
120
120
|
* The result is cached after the first call (per process lifetime).
|
|
121
121
|
*/
|
|
122
|
-
export function
|
|
122
|
+
export function isPro() {
|
|
123
123
|
return getLicenseInfo().valid;
|
|
124
124
|
}
|
|
125
125
|
/**
|
|
126
126
|
* Returns a standard notice string for free-tier feature limits.
|
|
127
127
|
*
|
|
128
|
-
* @param feature - Human-readable name of the
|
|
128
|
+
* @param feature - Human-readable name of the pro feature
|
|
129
129
|
*/
|
|
130
|
-
export function
|
|
131
|
-
return (`⚡
|
|
130
|
+
export function proNotice(feature) {
|
|
131
|
+
return (`⚡ Pro feature: ${feature}. ` +
|
|
132
132
|
'Using free-tier limit instead. ' +
|
|
133
133
|
'Set VIDEO_MCP_LICENSE_KEY to unlock. ' +
|
|
134
|
-
'Learn more: https://github.com/video-mcp/video-mcp#
|
|
134
|
+
'Learn more: https://github.com/video-mcp/video-mcp#pro');
|
|
135
135
|
}
|
|
136
136
|
//# sourceMappingURL=license.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/utils/license.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"license.js","sourceRoot":"","sources":["../../src/utils/license.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,KAAK,MAAM,MAAM,aAAa,CAAA;AAErC,8EAA8E;AAC9E,4CAA4C;AAC5C,iFAAiF;AACjF,8EAA8E;AAE9E,MAAM,cAAc,GAAG;;yBAEE,CAAA;AAqBzB,8EAA8E;AAC9E,uCAAuC;AACvC,8EAA8E;AAE9E,SAAS,eAAe,CAAC,GAAW;IAClC,iDAAiD;IACjD,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAA;IACxD,MAAM,GAAG,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAA;IACzC,OAAO,MAAM,CAAC,IAAI,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,QAAQ,CAAC,CAAA;AACxD,CAAC;AAED,8EAA8E;AAC9E,sDAAsD;AACtD,8EAA8E;AAE9E,IAAI,YAAY,GAAuB,IAAI,CAAA;AAE3C;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAChC,YAAY,GAAG,IAAI,CAAA;AACrB,CAAC;AAED,8EAA8E;AAC9E,kBAAkB;AAClB,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,UAAU,oBAAoB,CAClC,KAAa,EACb,SAAiB,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;IAE9C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACxC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,CAAA;IAC5C,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAA;IACnC,IAAI,QAAQ,KAAK,CAAC,CAAC,IAAI,QAAQ,KAAK,CAAC,IAAI,QAAQ,KAAK,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;IAC9C,CAAC;IAED,MAAM,UAAU,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAA;IAC3C,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAA;IAE9C,iBAAiB;IACjB,IAAI,OAAuB,CAAA;IAC3B,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,eAAe,CAAC,UAAU,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACzD,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC5B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;IAC9C,CAAC;IAED,0BAA0B;IAC1B,IACE,OAAO,OAAO,CAAC,KAAK,KAAK,QAAQ;QACjC,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ;QAC/B,OAAO,OAAO,CAAC,GAAG,KAAK,QAAQ,EAC/B,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,CAAA;IAC9C,CAAC;IAED,2BAA2B;IAC3B,IAAI,CAAC;QACH,MAAM,SAAS,GAAG,MAAM,CAAC,eAAe,CAAC,cAAc,CAAC,CAAA;QACxD,MAAM,cAAc,GAAG,eAAe,CAAC,YAAY,CAAC,CAAA;QACpD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;QAEpD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,SAAS,EAAE,cAAc,CAAC,CAAA;QAC5E,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAA;QACtD,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAA;IACtD,CAAC;IAED,eAAe;IACf,IAAI,OAAO,CAAC,GAAG,IAAI,MAAM,EAAE,CAAC;QAC1B,OAAO;YACL,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,SAAS,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;YACvC,MAAM,EAAE,SAAS;SAClB,CAAA;IACH,CAAC;IAED,OAAO;QACL,KAAK,EAAE,IAAI;QACX,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,SAAS,EAAE,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,IAAI,CAAC;KACxC,CAAA;AACH,CAAC;AAED,8EAA8E;AAC9E,aAAa;AACb,8EAA8E;AAE9E;;;GAGG;AACH,MAAM,UAAU,cAAc;IAC5B,IAAI,YAAY;QAAE,OAAO,YAAY,CAAA;IACrC,MAAM,KAAK,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,IAAI,EAAE,CAAA;IACrD,YAAY,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAA;IAC1C,OAAO,YAAY,CAAA;AACrB,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,KAAK;IACnB,OAAO,cAAc,EAAE,CAAC,KAAK,CAAA;AAC/B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,SAAS,CAAC,OAAe;IACvC,OAAO,CACL,kBAAkB,OAAO,IAAI;QAC7B,iCAAiC;QACjC,uCAAuC;QACvC,wDAAwD,CACzD,CAAA;AACH,CAAC"}
|
|
@@ -57,8 +57,8 @@ export declare function isYtDlpAvailable(): Promise<boolean>;
|
|
|
57
57
|
export declare function downloadWithYtDlp(url: string, tempDir: string): Promise<string>;
|
|
58
58
|
/**
|
|
59
59
|
* Returns true when the user requested a higher resolution than the free-tier
|
|
60
|
-
* cap (720p) and does not have a
|
|
61
|
-
* append a
|
|
60
|
+
* cap (720p) and does not have a pro license. Used by tool handlers to
|
|
61
|
+
* append a pro notice to the response.
|
|
62
62
|
*/
|
|
63
63
|
export declare function wasResolutionCapped(): boolean;
|
|
64
64
|
export type VideoSource = 'local' | 'direct' | 'platform';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"videoUtils.d.ts","sourceRoot":"","sources":["../../src/utils/videoUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwBH;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAa5D;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAuBjB;AA8BD;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAUjD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAUlD;AAKD;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAgBzD;AAiCD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,
|
|
1
|
+
{"version":3,"file":"videoUtils.d.ts","sourceRoot":"","sources":["../../src/utils/videoUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAwBH;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAa5D;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAuBjB;AA8BD;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAUjD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAUlD;AAKD;;;GAGG;AACH,wBAAgB,yBAAyB,IAAI,IAAI,CAEhD;AAED;;GAEG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAgBzD;AAiCD;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAoFjB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAI7C;AAMD,MAAM,MAAM,WAAW,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAA;AAEzD,MAAM,WAAW,kBAAkB;IACjC,YAAY,EAAE,MAAM,CAAA;IACpB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;IACtB,MAAM,EAAE,WAAW,CAAA;CACpB;AAED;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC,kBAAkB,CAAC,CAkC7B"}
|
package/dist/utils/videoUtils.js
CHANGED
|
@@ -10,8 +10,8 @@ import { youtubeDl as youtubeDlExec, create as createYtDlp, } from 'youtube-dl-e
|
|
|
10
10
|
import { createTempDir, generateTempFilename } from './tempFiles.js';
|
|
11
11
|
import { logProgress } from './logger.js';
|
|
12
12
|
import { isCachingEnabled, ensureCacheDir, getCachedDownload, registerCachedDownload, } from './downloadCache.js';
|
|
13
|
-
import {
|
|
14
|
-
/** Free-tier cap for max download resolution.
|
|
13
|
+
import { isPro, proNotice } from './license.js';
|
|
14
|
+
/** Free-tier cap for max download resolution. Pro users have no cap. */
|
|
15
15
|
const FREE_MAX_RESOLUTION = 720;
|
|
16
16
|
/**
|
|
17
17
|
* Returns true if the value is an http or https URL
|
|
@@ -189,11 +189,11 @@ function classifyYtDlpError(stderr) {
|
|
|
189
189
|
* @returns - Absolute path to the downloaded video file
|
|
190
190
|
*/
|
|
191
191
|
export async function downloadWithYtDlp(url, tempDir) {
|
|
192
|
-
// ──
|
|
193
|
-
if (!
|
|
194
|
-
throw new Error(
|
|
192
|
+
// ── Pro gate: free users can only download from YouTube ────────────────
|
|
193
|
+
if (!isPro() && !isYouTubeUrl(url)) {
|
|
194
|
+
throw new Error(proNotice('Platform downloads (non-YouTube)') +
|
|
195
195
|
'\nFree-tier users can only download from YouTube. ' +
|
|
196
|
-
'This URL requires a
|
|
196
|
+
'This URL requires a pro license.');
|
|
197
197
|
}
|
|
198
198
|
// ── Cache hit ──────────────────────────────────────────────────────────────
|
|
199
199
|
const cached = await getCachedDownload(url);
|
|
@@ -203,9 +203,7 @@ export async function downloadWithYtDlp(url, tempDir) {
|
|
|
203
203
|
}
|
|
204
204
|
// ── Download ───────────────────────────────────────────────────────────────
|
|
205
205
|
const envMaxRes = Number(process.env.YT_DLP_MAX_RESOLUTION ?? 720);
|
|
206
|
-
const maxRes =
|
|
207
|
-
? envMaxRes
|
|
208
|
-
: Math.min(envMaxRes, FREE_MAX_RESOLUTION);
|
|
206
|
+
const maxRes = isPro() ? envMaxRes : Math.min(envMaxRes, FREE_MAX_RESOLUTION);
|
|
209
207
|
const format = `bestvideo[height<=${maxRes}][ext=mp4]+bestaudio[ext=m4a]` +
|
|
210
208
|
`/best[height<=${maxRes}][ext=mp4]` +
|
|
211
209
|
`/best[height<=${maxRes}]`;
|
|
@@ -255,11 +253,11 @@ export async function downloadWithYtDlp(url, tempDir) {
|
|
|
255
253
|
}
|
|
256
254
|
/**
|
|
257
255
|
* Returns true when the user requested a higher resolution than the free-tier
|
|
258
|
-
* cap (720p) and does not have a
|
|
259
|
-
* append a
|
|
256
|
+
* cap (720p) and does not have a pro license. Used by tool handlers to
|
|
257
|
+
* append a pro notice to the response.
|
|
260
258
|
*/
|
|
261
259
|
export function wasResolutionCapped() {
|
|
262
|
-
if (
|
|
260
|
+
if (isPro())
|
|
263
261
|
return false;
|
|
264
262
|
const envMaxRes = Number(process.env.YT_DLP_MAX_RESOLUTION ?? 720);
|
|
265
263
|
return envMaxRes > FREE_MAX_RESOLUTION;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"videoUtils.js","sourceRoot":"","sources":["../../src/utils/videoUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,IAAI,CAAA;AACtC,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,KAAK,IAAI,MAAM,MAAM,CAAA;AAC5B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,KAAK,CAAA;AACnC,OAAO,EACL,SAAS,IAAI,aAAa,EAC1B,MAAM,IAAI,WAAW,GACtB,MAAM,iBAAiB,CAAA;AACxB,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAA;AACpE,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EACL,gBAAgB,EAChB,cAAc,EACd,iBAAiB,EACjB,sBAAsB,GACvB,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"videoUtils.js","sourceRoot":"","sources":["../../src/utils/videoUtils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "video-context-mcp-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.17.0-beta",
|
|
4
4
|
"description": "A Model Context Protocol server that gives GitHub Copilot the ability to understand and analyze video content",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|