video-context-mcp-server 0.51.0-beta → 0.52.1-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 +42 -42
- package/dist/generated/version.d.ts +1 -1
- package/dist/generated/version.js +1 -1
- package/dist/index.js +16 -1
- package/dist/index.js.map +1 -1
- package/dist/services/providerRouter.d.ts +10 -10
- package/dist/services/providerRouter.js +13 -13
- package/dist/services/providerRouter.js.map +1 -1
- package/dist/services/qwenClient.d.ts +1 -1
- package/dist/services/qwenClient.js +3 -3
- package/dist/services/qwenClient.js.map +1 -1
- package/dist/tools/schemas.js +3 -3
- package/dist/utils/videoUtils.d.ts +1 -0
- package/dist/utils/videoUtils.d.ts.map +1 -1
- package/dist/utils/videoUtils.js +8 -10
- package/dist/utils/videoUtils.js.map +1 -1
- package/dist/utils/ytDlpPath.d.ts +57 -0
- package/dist/utils/ytDlpPath.d.ts.map +1 -0
- package/dist/utils/ytDlpPath.js +252 -0
- package/dist/utils/ytDlpPath.js.map +1 -0
- package/package.json +15 -2
package/README.md
CHANGED
|
@@ -15,7 +15,7 @@ An MCP server that gives coding assistants (GitHub Copilot, Cursor, Claude Code)
|
|
|
15
15
|
- 🎙️ **Audio Transcription** — Transcribe speech with paragraph-level timestamps (`[MM:SS]`) or export as SRT/VTT subtitles and JSON using Deepgram, AssemblyAI, Groq/Whisper, or Gemini
|
|
16
16
|
- 🔊 **Speaker Diarization** — Identify who said what (Deepgram and AssemblyAI)
|
|
17
17
|
- 🔊 **Audio-Enhanced Analysis** — Auto-transcribes audio and injects transcripts into AI prompts for richer results (GLM/Kimi/Qwen)
|
|
18
|
-
- 🔄 **Multi-Provider Support** — Choose between GLM-4.6V, Qwen3.
|
|
18
|
+
- 🔄 **Multi-Provider Support** — Choose between GLM-4.6V, Qwen3.6, Kimi K2.5, Gemini, or MiMo-V2 Omni
|
|
19
19
|
- 🎯 **Smart Video Handling** — Extracts keyframes from long videos to reduce token usage
|
|
20
20
|
- ⭐ **Pro tier** — Extended frame extraction, multi-platform downloads, higher resolution. [Learn more ↓](#pro)
|
|
21
21
|
|
|
@@ -89,10 +89,10 @@ Set all keys to enable the full fallback chain. If one provider is unavailable o
|
|
|
89
89
|
"type": "stdio",
|
|
90
90
|
"command": "video-context-mcp",
|
|
91
91
|
"env": {
|
|
92
|
+
"GEMINI_API_KEY": "your-gemini-key",
|
|
92
93
|
"Z_AI_API_KEY": "your-zai-key",
|
|
93
94
|
"DASHSCOPE_API_KEY": "your-dashscope-key",
|
|
94
95
|
"MOONSHOT_API_KEY": "your-moonshot-key",
|
|
95
|
-
"GEMINI_API_KEY": "your-gemini-key",
|
|
96
96
|
"MIMO_API_KEY": "your-mimo-key",
|
|
97
97
|
"DEEPGRAM_API_KEY": "your-deepgram-key",
|
|
98
98
|
"ASSEMBLYAI_API_KEY": "your-assemblyai-key",
|
|
@@ -118,10 +118,10 @@ You can configure the MCP server globally (for all projects) or at the project l
|
|
|
118
118
|
"videoMcp": {
|
|
119
119
|
"command": "video-context-mcp",
|
|
120
120
|
"env": {
|
|
121
|
+
"GEMINI_API_KEY": "your-gemini-key",
|
|
121
122
|
"Z_AI_API_KEY": "your-zai-key",
|
|
122
123
|
"DASHSCOPE_API_KEY": "your-dashscope-key",
|
|
123
124
|
"MOONSHOT_API_KEY": "your-moonshot-key",
|
|
124
|
-
"GEMINI_API_KEY": "your-gemini-key",
|
|
125
125
|
"MIMO_API_KEY": "your-mimo-key",
|
|
126
126
|
"DEEPGRAM_API_KEY": "your-deepgram-key",
|
|
127
127
|
"ASSEMBLYAI_API_KEY": "your-assemblyai-key",
|
|
@@ -151,10 +151,10 @@ Create a `.cursor/mcp.json` (or `.mcp.json`) in your project root with the confi
|
|
|
151
151
|
|
|
152
152
|
```bash
|
|
153
153
|
claude mcp add \
|
|
154
|
+
--env GEMINI_API_KEY=your-gemini-key \
|
|
154
155
|
--env Z_AI_API_KEY=your-zai-key \
|
|
155
156
|
--env DASHSCOPE_API_KEY=your-dashscope-key \
|
|
156
157
|
--env MOONSHOT_API_KEY=your-moonshot-key \
|
|
157
|
-
--env GEMINI_API_KEY=your-gemini-key \
|
|
158
158
|
--env MIMO_API_KEY=your-mimo-key \
|
|
159
159
|
--env DEEPGRAM_API_KEY=your-deepgram-key \
|
|
160
160
|
--env ASSEMBLYAI_API_KEY=your-assemblyai-key \
|
|
@@ -176,10 +176,10 @@ Create `.mcp.json` in your project root:
|
|
|
176
176
|
"videoMcp": {
|
|
177
177
|
"command": "video-context-mcp",
|
|
178
178
|
"env": {
|
|
179
|
+
"GEMINI_API_KEY": "your-gemini-key",
|
|
179
180
|
"Z_AI_API_KEY": "your-zai-key",
|
|
180
181
|
"DASHSCOPE_API_KEY": "your-dashscope-key",
|
|
181
182
|
"MOONSHOT_API_KEY": "your-moonshot-key",
|
|
182
|
-
"GEMINI_API_KEY": "your-gemini-key",
|
|
183
183
|
"MIMO_API_KEY": "your-mimo-key",
|
|
184
184
|
"DEEPGRAM_API_KEY": "your-deepgram-key",
|
|
185
185
|
"ASSEMBLYAI_API_KEY": "your-assemblyai-key",
|
|
@@ -207,10 +207,10 @@ Use `npx -y video-context-mcp-server@latest` as the command instead of `video-co
|
|
|
207
207
|
"command": "npx",
|
|
208
208
|
"args": ["-y", "video-context-mcp-server@latest"],
|
|
209
209
|
"env": {
|
|
210
|
+
"GEMINI_API_KEY": "your-gemini-key",
|
|
210
211
|
"Z_AI_API_KEY": "your-zai-key",
|
|
211
212
|
"DASHSCOPE_API_KEY": "your-dashscope-key",
|
|
212
213
|
"MOONSHOT_API_KEY": "your-moonshot-key",
|
|
213
|
-
"GEMINI_API_KEY": "your-gemini-key",
|
|
214
214
|
"MIMO_API_KEY": "your-mimo-key",
|
|
215
215
|
"DEEPGRAM_API_KEY": "your-deepgram-key",
|
|
216
216
|
"ASSEMBLYAI_API_KEY": "your-assemblyai-key",
|
|
@@ -225,10 +225,10 @@ Use `npx -y video-context-mcp-server@latest` as the command instead of `video-co
|
|
|
225
225
|
|
|
226
226
|
```bash
|
|
227
227
|
claude mcp add \
|
|
228
|
+
--env GEMINI_API_KEY=your-gemini-key \
|
|
228
229
|
--env Z_AI_API_KEY=your-zai-key \
|
|
229
230
|
--env DASHSCOPE_API_KEY=your-dashscope-key \
|
|
230
231
|
--env MOONSHOT_API_KEY=your-moonshot-key \
|
|
231
|
-
--env GEMINI_API_KEY=your-gemini-key \
|
|
232
232
|
--env MIMO_API_KEY=your-mimo-key \
|
|
233
233
|
--env DEEPGRAM_API_KEY=your-deepgram-key \
|
|
234
234
|
--env ASSEMBLYAI_API_KEY=your-assemblyai-key \
|
|
@@ -297,23 +297,23 @@ All tools accept local file paths, `file://` URIs, and remote `http(s)` URLs. Re
|
|
|
297
297
|
|
|
298
298
|
### Video Providers
|
|
299
299
|
|
|
300
|
-
Set all keys to get the full fallback chain. The server will try
|
|
300
|
+
Set all keys to get the full fallback chain. The server will try Gemini first, then GLM, then Qwen, then Kimi, then MiMo, so having all keys ensures it never gets stuck without a working provider:
|
|
301
301
|
|
|
302
|
-
| Provider
|
|
303
|
-
|
|
|
304
|
-
| **
|
|
305
|
-
| **
|
|
306
|
-
| **Qwen3.
|
|
307
|
-
| **Kimi K2.5** (paid)
|
|
308
|
-
| **MiMo-V2 Omni** (paid)
|
|
302
|
+
| Provider | Key | Link |
|
|
303
|
+
| ----------------------------------------------- | ------------------- | --------------------------------------------------------------------------------------------- |
|
|
304
|
+
| **Gemini 3 Flash Preview** (default, free-tier) | `GEMINI_API_KEY` | [Get key](https://aistudio.google.com/app/apikey) |
|
|
305
|
+
| **GLM-4.6V** (free-tier) | `Z_AI_API_KEY` | [Get key](https://z.ai/manage-apikey/apikey-list) |
|
|
306
|
+
| **Qwen3.6** (FREE — promotional) | `DASHSCOPE_API_KEY` | [Get key](https://modelstudio.console.alibabacloud.com/ap-southeast-1?tab=dashboard#/api-key) |
|
|
307
|
+
| **Kimi K2.5** (paid) | `MOONSHOT_API_KEY` | [Get key](https://platform.moonshot.ai) |
|
|
308
|
+
| **MiMo-V2 Omni** (paid) | `MIMO_API_KEY` | [Get key](https://platform.xiaomimimo.com/#/console/api-keys) |
|
|
309
309
|
|
|
310
310
|
When a provider's API key is missing or its API call fails at runtime, tools automatically fall back through the remaining providers in priority order, starting from the configured default:
|
|
311
311
|
|
|
312
|
-
-
|
|
313
|
-
-
|
|
314
|
-
- Qwen default: **Qwen →
|
|
315
|
-
- Kimi default: **Kimi →
|
|
316
|
-
- MiMo default: **MiMo →
|
|
312
|
+
- Gemini default (standard): **Gemini → GLM → Qwen → Kimi → MiMo**
|
|
313
|
+
- GLM default: **GLM → Gemini → Qwen → Kimi → MiMo**
|
|
314
|
+
- Qwen default: **Qwen → Gemini → GLM → Kimi → MiMo**
|
|
315
|
+
- Kimi default: **Kimi → Gemini → GLM → Qwen → MiMo**
|
|
316
|
+
- MiMo default: **MiMo → Gemini → GLM → Qwen → Kimi**
|
|
317
317
|
|
|
318
318
|
### Audio Providers
|
|
319
319
|
|
|
@@ -334,15 +334,15 @@ When an audio key is missing or an audio API call fails at runtime, tools automa
|
|
|
334
334
|
|
|
335
335
|
### Video Providers
|
|
336
336
|
|
|
337
|
-
| Feature |
|
|
338
|
-
| -------------- |
|
|
339
|
-
| Price | Free tier available (GLM-4.6V-Flash) |
|
|
340
|
-
| Video formats | mp4,
|
|
341
|
-
| Context window |
|
|
342
|
-
| Max file size | ~12 MB base64 / frames fallback / **unlimited w/ S3↓** |
|
|
343
|
-
| Best for | **Default** — free, no card required
|
|
337
|
+
| Feature | Gemini 3 Flash Preview (default) | GLM-4.6V | Qwen3.6 | Kimi K2.5 | MiMo-V2 Omni |
|
|
338
|
+
| -------------- | ---------------------------------------------- | ------------------------------------------------------ | ------------------------------------------------------ | ---------------------------------------------- | ------------------------------------------------------ |
|
|
339
|
+
| Price | Free tier available | Free tier available (GLM-4.6V-Flash) | **FREE** (promotional launch period) | $0.60 input / $3.00 output per 1M tokens | $0.40 input / $2.00 output per 1M tokens |
|
|
340
|
+
| Video formats | mp4, mpeg, mov, avi, flv, mpg, webm, wmv, 3gpp | mp4, avi, mov, wmv, webm, m4v | mp4, avi, mov, wmv, webm, m4v | mp4, mpeg, mov, avi, flv, mpg, webm, wmv, 3gpp | mp4, mov, avi, wmv |
|
|
341
|
+
| Context window | 1M tokens | 128K tokens | 1M tokens | 256K tokens | 256K tokens |
|
|
342
|
+
| Max file size | 2 GB | ~12 MB base64 / frames fallback / **unlimited w/ S3↓** | ~10 MB base64 / frames fallback / **unlimited w/ S3↓** | 100 MB | ~10 MB base64 / frames fallback / **unlimited w/ S3↓** |
|
|
343
|
+
| Best for | **Default** — free, no card required | Free, no card required | **FREE during promo** — SOTA agentic coding | Paid — broadest format support | Paid — thinking mode; multimodal |
|
|
344
344
|
|
|
345
|
-
**
|
|
345
|
+
**Gemini 3 Flash Preview** is the default — it offers a free tier with no credit card required, 1M context window, and 2 GB file support. **GLM-4.6V** is the second fallback — also free with no card required. **Qwen3.6** is currently **FREE** during its promotional launch period (released April 2, 2026) — standard pricing will be $0.50 input / $3.00 output per 1M tokens. **Kimi K2.5** is a paid provider with the broadest video format support. **MiMo-V2 Omni** is Xiaomi's multimodal model with thinking mode support ($0.40 input / $2.00 output per 1M tokens).
|
|
346
346
|
|
|
347
347
|
Set `VIDEO_MCP_DEFAULT_PROVIDER=gemini`, `qwen`, `kimi`, or `mimo` to change the default.
|
|
348
348
|
|
|
@@ -351,7 +351,7 @@ Set `VIDEO_MCP_DEFAULT_PROVIDER=gemini`, `qwen`, `kimi`, or `mimo` to change the
|
|
|
351
351
|
<details open>
|
|
352
352
|
<summary><strong>Automatic S3 relay: bypass the 10 MB local file limit with GLM, Qwen, and MiMo</strong></summary>
|
|
353
353
|
|
|
354
|
-
**GLM-4.6V**, **Qwen3.
|
|
354
|
+
**GLM-4.6V**, **Qwen3.6**, and **MiMo-V2 Omni** all accept direct video URLs, but base64-encoding a local file caps out at **10–12 MB**. Above that limit, the server first tries to fall back to an upload-capable provider (Gemini or Kimi) if one is available, then falls back to **frame-based analysis** as a last resort. For the best results on large local videos, set `AWS_S3_BUCKET` — the server uploads the full video to S3 and passes a presigned URL to GLM, Qwen, and MiMo, bypassing the base64 limit entirely and taking priority over both fallbacks. No manual upload step needed.
|
|
355
355
|
|
|
356
356
|
**Why it works**: GLM, Qwen, and MiMo require the server to serve `Content-Length` and `Content-Type` headers alongside the video. AWS S3 provides these automatically.
|
|
357
357
|
|
|
@@ -422,14 +422,14 @@ Set `AUDIO_MCP_DEFAULT_PROVIDER` to change the default.
|
|
|
422
422
|
|
|
423
423
|
### Core
|
|
424
424
|
|
|
425
|
-
| Variable | Description | Default
|
|
426
|
-
| ---------------------------- | ------------------------------------------------------------------ |
|
|
427
|
-
| `Z_AI_API_KEY` | Z.AI API key for GLM-4.6V | —
|
|
428
|
-
| `DASHSCOPE_API_KEY` | Alibaba Cloud API key for Qwen3.
|
|
429
|
-
| `MOONSHOT_API_KEY` | Moonshot AI API key for Kimi K2.5 | —
|
|
430
|
-
| `GEMINI_API_KEY` | Google API key for Gemini | —
|
|
431
|
-
| `MIMO_API_KEY` | Xiaomi MiMo API key for MiMo-V2 Omni | —
|
|
432
|
-
| `VIDEO_MCP_DEFAULT_PROVIDER` | Default video provider: `glm`, `qwen`, `kimi`,
|
|
425
|
+
| Variable | Description | Default |
|
|
426
|
+
| ---------------------------- | ------------------------------------------------------------------ | -------- |
|
|
427
|
+
| `Z_AI_API_KEY` | Z.AI API key for GLM-4.6V | — |
|
|
428
|
+
| `DASHSCOPE_API_KEY` | Alibaba Cloud API key for Qwen3.6 | — |
|
|
429
|
+
| `MOONSHOT_API_KEY` | Moonshot AI API key for Kimi K2.5 | — |
|
|
430
|
+
| `GEMINI_API_KEY` | Google API key for Gemini | — |
|
|
431
|
+
| `MIMO_API_KEY` | Xiaomi MiMo API key for MiMo-V2 Omni | — |
|
|
432
|
+
| `VIDEO_MCP_DEFAULT_PROVIDER` | Default video provider: `gemini`, `glm`, `qwen`, `kimi`, or `mimo` | `gemini` |
|
|
433
433
|
|
|
434
434
|
### S3 Relay
|
|
435
435
|
|
|
@@ -573,15 +573,15 @@ vmcp cache clear:all --yes # skip confirmation
|
|
|
573
573
|
"type": "stdio",
|
|
574
574
|
"command": "video-context-mcp",
|
|
575
575
|
"env": {
|
|
576
|
+
"GEMINI_API_KEY": "your-gemini-key",
|
|
576
577
|
"Z_AI_API_KEY": "your-zai-key",
|
|
577
578
|
"DASHSCOPE_API_KEY": "your-dashscope-key",
|
|
578
579
|
"MOONSHOT_API_KEY": "your-moonshot-key",
|
|
579
|
-
"GEMINI_API_KEY": "your-gemini-key",
|
|
580
580
|
"MIMO_API_KEY": "your-mimo-key",
|
|
581
581
|
"DEEPGRAM_API_KEY": "your-deepgram-key",
|
|
582
582
|
"ASSEMBLYAI_API_KEY": "your-assemblyai-key",
|
|
583
583
|
"GROQ_API_KEY": "your-groq-key",
|
|
584
|
-
"VIDEO_MCP_DEFAULT_PROVIDER": "
|
|
584
|
+
"VIDEO_MCP_DEFAULT_PROVIDER": "gemini",
|
|
585
585
|
"AUDIO_MCP_DEFAULT_PROVIDER": "deepgram",
|
|
586
586
|
"AUDIO_ENHANCE_VIDEO_ANALYSIS": "auto",
|
|
587
587
|
"VIDEO_MCP_CACHE_TTL_MINUTES": "43200",
|
|
@@ -720,12 +720,12 @@ Use this `.vscode/mcp.json` to run the local build (never commit this file):
|
|
|
720
720
|
"command": "node",
|
|
721
721
|
"args": ["${workspaceFolder}/dist/index.js"],
|
|
722
722
|
"env": {
|
|
723
|
+
"GEMINI_API_KEY": "your-gemini-key",
|
|
723
724
|
"Z_AI_API_KEY": "your-zai-key",
|
|
724
725
|
"DASHSCOPE_API_KEY": "your-dashscope-key",
|
|
725
726
|
"MOONSHOT_API_KEY": "your-moonshot-key",
|
|
726
|
-
"GEMINI_API_KEY": "your-gemini-key",
|
|
727
727
|
"MIMO_API_KEY": "your-mimo-key",
|
|
728
|
-
"VIDEO_MCP_DEFAULT_PROVIDER": "
|
|
728
|
+
"VIDEO_MCP_DEFAULT_PROVIDER": "gemini",
|
|
729
729
|
"DEEPGRAM_API_KEY": "your-deepgram-key",
|
|
730
730
|
"ASSEMBLYAI_API_KEY": "your-assemblyai-key",
|
|
731
731
|
"GROQ_API_KEY": "your-groq-key",
|
|
@@ -770,7 +770,7 @@ Proprietary — All Rights Reserved. No part of this software may be copied, mod
|
|
|
770
770
|
- [MCP SDK](https://github.com/modelcontextprotocol/typescript-sdk) by Anthropic
|
|
771
771
|
- [Kimi K2.5](https://github.com/MoonshotAI/Kimi-K2.5) by Moonshot AI
|
|
772
772
|
- [GLM-4.6V](https://docs.z.ai/guides/vlm/glm-4.6v) by Z.AI
|
|
773
|
-
- [Qwen3.
|
|
773
|
+
- [Qwen3.6](https://bailian.console.alibabacloud.com/ap-southeast-1/) by Alibaba Cloud
|
|
774
774
|
- [MiMo-V2 Omni](https://platform.xiaomimimo.com/) by Xiaomi
|
|
775
775
|
- [Deepgram](https://www.deepgram.com/) for audio transcription
|
|
776
776
|
- [AssemblyAI](https://www.assemblyai.com/) for audio transcription
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.
|
|
1
|
+
export declare const VERSION = "0.52.1-beta";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/index.js
CHANGED
|
@@ -8,10 +8,11 @@ import { extractFramesTool } from './tools/extractFrames.js';
|
|
|
8
8
|
import { searchTimestampTool } from './tools/searchTimestamp.js';
|
|
9
9
|
import { getVideoInfoTool } from './tools/getVideoInfo.js';
|
|
10
10
|
import { transcribeVideoTool } from './tools/transcribeVideo.js';
|
|
11
|
-
import { setLoggerServer } from './utils/logger.js';
|
|
11
|
+
import { setLoggerServer, logProgress } from './utils/logger.js';
|
|
12
12
|
import { initLicenseValidation } from './utils/license.js';
|
|
13
13
|
import { sweepStaleTempDirs } from './utils/tempFiles.js';
|
|
14
14
|
import { sweepExpiredCacheDirs } from './utils/artifactCache.js';
|
|
15
|
+
import { resolveYtDlpPath } from './utils/ytDlpPath.js';
|
|
15
16
|
import { registerSessionCleanup, sweepStaleRelayKeys, } from './services/s3Relay.js';
|
|
16
17
|
import { triggerUpdateCheck, waitForUpdateCheck, wrapWithUpdateNotice, } from './utils/updateCheck.js';
|
|
17
18
|
import { VERSION } from './generated/version.js';
|
|
@@ -40,6 +41,20 @@ async function main() {
|
|
|
40
41
|
sweepStaleTempDirs().catch(() => { }); // fire-and-forget
|
|
41
42
|
// Remove expired per-video artifact directories from the persistent cache
|
|
42
43
|
sweepExpiredCacheDirs().catch(() => { }); // fire-and-forget
|
|
44
|
+
// Resolve yt-dlp binary path (env → auto-detect → bundled) and log the result
|
|
45
|
+
resolveYtDlpPath()
|
|
46
|
+
.then((resolved) => {
|
|
47
|
+
if (resolved.source === 'auto') {
|
|
48
|
+
logProgress(`yt-dlp: using auto-detected binary at ${resolved.path}`);
|
|
49
|
+
}
|
|
50
|
+
else if (resolved.source === 'bundled') {
|
|
51
|
+
logProgress(resolved.warning
|
|
52
|
+
? `yt-dlp: ${resolved.warning}`
|
|
53
|
+
: 'yt-dlp: using bundled binary (no custom path configured)');
|
|
54
|
+
}
|
|
55
|
+
// source === 'env': no log needed — user explicitly configured this path
|
|
56
|
+
})
|
|
57
|
+
.catch(() => { }); // fire-and-forget — never block startup
|
|
43
58
|
// Validate the pro license (offline Ed25519 + online heartbeat if key is set)
|
|
44
59
|
await initLicenseValidation();
|
|
45
60
|
/**
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAEA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAA;AACnE,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAA;AAEhF,uBAAuB;AACvB,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAA;AAC9D,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAA;AAC5D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAA;AAC1D,OAAO,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAA;AAChE,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -26,14 +26,14 @@ export type ProviderResult = {
|
|
|
26
26
|
/**
|
|
27
27
|
* Resolve the provider, with optional fallback behavior.
|
|
28
28
|
* If the requested provider's key is missing, falls back in canonical priority
|
|
29
|
-
* order (
|
|
29
|
+
* order (gemini → glm → qwen → kimi → mimo), skipping the requested provider and
|
|
30
30
|
* visiting all remaining candidates. This means every starting provider can
|
|
31
31
|
* eventually reach any other provider:
|
|
32
|
-
* glm → gemini → qwen → kimi → mimo
|
|
33
|
-
* kimi → glm → gemini → qwen → mimo
|
|
34
32
|
* gemini → glm → qwen → kimi → mimo
|
|
35
|
-
*
|
|
36
|
-
*
|
|
33
|
+
* glm → gemini → qwen → kimi → mimo
|
|
34
|
+
* kimi → gemini → glm → qwen → mimo
|
|
35
|
+
* qwen → gemini → glm → kimi → mimo
|
|
36
|
+
* mimo → gemini → glm → qwen → kimi
|
|
37
37
|
* Returns a ProviderResult with `fallbackFrom` set if a fallback occurred.
|
|
38
38
|
* Throws only when no provider API key is available at all.
|
|
39
39
|
*/
|
|
@@ -47,13 +47,13 @@ export declare function getDefaultProvider(): VideoProvider;
|
|
|
47
47
|
* filtered to only those whose API keys are available.
|
|
48
48
|
*
|
|
49
49
|
* Fallback order: start with the requested provider, then visit remaining
|
|
50
|
-
* providers in canonical priority order (
|
|
50
|
+
* providers in canonical priority order (gemini → glm → qwen → kimi → mimo), so
|
|
51
51
|
* every starting provider can reach all other providers:
|
|
52
|
-
* glm → glm, gemini, qwen, kimi, mimo
|
|
53
|
-
* kimi → kimi, glm, gemini, qwen, mimo
|
|
54
52
|
* gemini → gemini, glm, qwen, kimi, mimo
|
|
55
|
-
*
|
|
56
|
-
*
|
|
53
|
+
* glm → glm, gemini, qwen, kimi, mimo
|
|
54
|
+
* kimi → kimi, gemini, glm, qwen, mimo
|
|
55
|
+
* qwen → qwen, gemini, glm, kimi, mimo
|
|
56
|
+
* mimo → mimo, gemini, glm, qwen, kimi
|
|
57
57
|
*
|
|
58
58
|
* This is used for runtime error-based fallback: if the first provider's API call
|
|
59
59
|
* throws (overloaded, timeout, 5xx, etc.), the caller retries with the next entry.
|
|
@@ -25,7 +25,7 @@ export function selectProvider(provider, hasKimiKey, hasGLMKey, hasGeminiKey = f
|
|
|
25
25
|
glm: 'GLM-4.6V',
|
|
26
26
|
kimi: 'Kimi K2.5',
|
|
27
27
|
gemini: 'Gemini',
|
|
28
|
-
qwen: 'Qwen3.
|
|
28
|
+
qwen: 'Qwen3.6',
|
|
29
29
|
mimo: 'MiMo-V2 Omni',
|
|
30
30
|
};
|
|
31
31
|
const envVar = {
|
|
@@ -42,8 +42,8 @@ export function selectProvider(provider, hasKimiKey, hasGLMKey, hasGeminiKey = f
|
|
|
42
42
|
}
|
|
43
43
|
/** Canonical priority order for all video providers. */
|
|
44
44
|
const VIDEO_PROVIDER_PRIORITY = [
|
|
45
|
-
'glm',
|
|
46
45
|
'gemini',
|
|
46
|
+
'glm',
|
|
47
47
|
'qwen',
|
|
48
48
|
'kimi',
|
|
49
49
|
'mimo',
|
|
@@ -51,14 +51,14 @@ const VIDEO_PROVIDER_PRIORITY = [
|
|
|
51
51
|
/**
|
|
52
52
|
* Resolve the provider, with optional fallback behavior.
|
|
53
53
|
* If the requested provider's key is missing, falls back in canonical priority
|
|
54
|
-
* order (
|
|
54
|
+
* order (gemini → glm → qwen → kimi → mimo), skipping the requested provider and
|
|
55
55
|
* visiting all remaining candidates. This means every starting provider can
|
|
56
56
|
* eventually reach any other provider:
|
|
57
|
-
* glm → gemini → qwen → kimi → mimo
|
|
58
|
-
* kimi → glm → gemini → qwen → mimo
|
|
59
57
|
* gemini → glm → qwen → kimi → mimo
|
|
60
|
-
*
|
|
61
|
-
*
|
|
58
|
+
* glm → gemini → qwen → kimi → mimo
|
|
59
|
+
* kimi → gemini → glm → qwen → mimo
|
|
60
|
+
* qwen → gemini → glm → kimi → mimo
|
|
61
|
+
* mimo → gemini → glm → qwen → kimi
|
|
62
62
|
* Returns a ProviderResult with `fallbackFrom` set if a fallback occurred.
|
|
63
63
|
* Throws only when no provider API key is available at all.
|
|
64
64
|
*/
|
|
@@ -93,20 +93,20 @@ export function getDefaultProvider() {
|
|
|
93
93
|
envProvider === 'mimo') {
|
|
94
94
|
return envProvider;
|
|
95
95
|
}
|
|
96
|
-
return '
|
|
96
|
+
return 'gemini';
|
|
97
97
|
}
|
|
98
98
|
/**
|
|
99
99
|
* Returns an ordered list of providers to attempt for a given starting provider,
|
|
100
100
|
* filtered to only those whose API keys are available.
|
|
101
101
|
*
|
|
102
102
|
* Fallback order: start with the requested provider, then visit remaining
|
|
103
|
-
* providers in canonical priority order (
|
|
103
|
+
* providers in canonical priority order (gemini → glm → qwen → kimi → mimo), so
|
|
104
104
|
* every starting provider can reach all other providers:
|
|
105
|
-
* glm → glm, gemini, qwen, kimi, mimo
|
|
106
|
-
* kimi → kimi, glm, gemini, qwen, mimo
|
|
107
105
|
* gemini → gemini, glm, qwen, kimi, mimo
|
|
108
|
-
*
|
|
109
|
-
*
|
|
106
|
+
* glm → glm, gemini, qwen, kimi, mimo
|
|
107
|
+
* kimi → kimi, gemini, glm, qwen, mimo
|
|
108
|
+
* qwen → qwen, gemini, glm, kimi, mimo
|
|
109
|
+
* mimo → mimo, gemini, glm, qwen, kimi
|
|
110
110
|
*
|
|
111
111
|
* This is used for runtime error-based fallback: if the first provider's API call
|
|
112
112
|
* throws (overloaded, timeout, 5xx, etc.), the caller retries with the next entry.
|
|
@@ -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,KAAK;IACL,
|
|
1
|
+
{"version":3,"file":"providerRouter.js","sourceRoot":"","sources":["../../src/services/providerRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Qwen3.
|
|
2
|
+
* Qwen3.6 Client
|
|
3
3
|
* Handles video analysis using Alibaba Cloud's DashScope API (OpenAI-compatible)
|
|
4
4
|
*/
|
|
5
5
|
const QWEN_BASE_URL = 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions';
|
|
6
|
-
const QWEN_MODEL = 'qwen3.
|
|
7
|
-
const QWEN_MODEL_FLASH = 'qwen3.
|
|
6
|
+
const QWEN_MODEL = 'qwen3.6-plus';
|
|
7
|
+
const QWEN_MODEL_FLASH = 'qwen3.6-plus';
|
|
8
8
|
/** Default fps for server-side frame extraction on video URL inputs. */
|
|
9
9
|
const QWEN_DEFAULT_FPS = 2.0;
|
|
10
10
|
/** Client-side request timeout in ms. Default: 4 min (just under DashScope's ~5 min server cap).
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"qwenClient.js","sourceRoot":"","sources":["../../src/services/qwenClient.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,aAAa,GACjB,yEAAyE,CAAA;AAC3E,MAAM,UAAU,GAAG,cAAc,CAAA;AACjC,MAAM,gBAAgB,GAAG,
|
|
1
|
+
{"version":3,"file":"qwenClient.js","sourceRoot":"","sources":["../../src/services/qwenClient.ts"],"names":[],"mappings":"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"}
|
package/dist/tools/schemas.js
CHANGED
|
@@ -24,13 +24,13 @@ export const analyzeVideoSchema = z.object({
|
|
|
24
24
|
question: z.string().describe('Question to ask about the video content'),
|
|
25
25
|
provider: videoProviderEnum
|
|
26
26
|
.optional()
|
|
27
|
-
.describe("AI backend to use: 'glm' (GLM-4.6V, default), 'qwen' (Qwen3.
|
|
27
|
+
.describe("AI backend to use: 'glm' (GLM-4.6V, default), 'qwen' (Qwen3.6), 'kimi' (Kimi K2.5), 'gemini' (Gemini 3 Flash Preview), or 'mimo' (MiMo-V2 Omni)"),
|
|
28
28
|
});
|
|
29
29
|
export const summarizeVideoSchema = z.object({
|
|
30
30
|
videoPath: z.string().describe('Path to the video file (local path or URL)'),
|
|
31
31
|
provider: videoProviderEnum
|
|
32
32
|
.optional()
|
|
33
|
-
.describe("AI backend to use: 'glm' (GLM-4.6V, default), 'qwen' (Qwen3.
|
|
33
|
+
.describe("AI backend to use: 'glm' (GLM-4.6V, default), 'qwen' (Qwen3.6), 'kimi' (Kimi K2.5), 'gemini' (Gemini 3 Flash Preview), or 'mimo' (MiMo-V2 Omni)"),
|
|
34
34
|
});
|
|
35
35
|
export const extractFramesSchema = z.object({
|
|
36
36
|
videoPath: z
|
|
@@ -84,7 +84,7 @@ export const searchTimestampSchema = z.object({
|
|
|
84
84
|
.describe("What to search for, e.g., 'person waves', 'dog runs', 'car crash'"),
|
|
85
85
|
provider: videoProviderEnum
|
|
86
86
|
.optional()
|
|
87
|
-
.describe("AI backend to use: 'glm' (GLM-4.6V, default), 'qwen' (Qwen3.
|
|
87
|
+
.describe("AI backend to use: 'glm' (GLM-4.6V, default), 'qwen' (Qwen3.6), 'kimi' (Kimi K2.5), 'gemini' (Gemini 3 Flash Preview), or 'mimo' (MiMo-V2 Omni)"),
|
|
88
88
|
});
|
|
89
89
|
export const getVideoInfoSchema = z.object({
|
|
90
90
|
videoPath: z
|
|
@@ -59,6 +59,7 @@ export declare function isPlatformUrl(url: string): boolean;
|
|
|
59
59
|
export declare function _resetYtDlpAvailableCache(): void;
|
|
60
60
|
/**
|
|
61
61
|
* Checks whether the yt-dlp binary is available (result is cached after first call).
|
|
62
|
+
* Uses `resolveYtDlpPath()` to get the resolved binary path (env → auto-detect → bundled).
|
|
62
63
|
*/
|
|
63
64
|
export declare function isYtDlpAvailable(): Promise<boolean>;
|
|
64
65
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"videoUtils.d.ts","sourceRoot":"","sources":["../../src/utils/videoUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"videoUtils.d.ts","sourceRoot":"","sources":["../../src/utils/videoUtils.ts"],"names":[],"mappings":"AAAA;;GAEG;AAoCH;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAElD;AAED;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAGhE;AAED;;;;;;;;;GASG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CA2B5D;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAyCjB;AA8BD;;;GAGG;AACH,eAAO,MAAM,mBAAmB,UAAgB,CAAA;AAEhD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAUvD;AAKD;;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;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,OAAO,CAAC,CAazD;AAkOD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,iBAAiB,CACrC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAWjB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAG7C;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
|
@@ -12,6 +12,7 @@ import { createTempDir, generateTempFilename } from './tempFiles.js';
|
|
|
12
12
|
import { logProgress, logWarning } from './logger.js';
|
|
13
13
|
import { isCachingEnabled, ensureVideoDirs, getOrDownloadVideo, } from './artifactCache.js';
|
|
14
14
|
import { isPro, proNotice } from './license.js';
|
|
15
|
+
import { resolveYtDlpPath } from './ytDlpPath.js';
|
|
15
16
|
/** Free-tier cap for max download resolution. Pro users have no cap. */
|
|
16
17
|
const FREE_MAX_RESOLUTION = 720;
|
|
17
18
|
/**
|
|
@@ -207,16 +208,14 @@ export function _resetYtDlpAvailableCache() {
|
|
|
207
208
|
}
|
|
208
209
|
/**
|
|
209
210
|
* Checks whether the yt-dlp binary is available (result is cached after first call).
|
|
211
|
+
* Uses `resolveYtDlpPath()` to get the resolved binary path (env → auto-detect → bundled).
|
|
210
212
|
*/
|
|
211
213
|
export async function isYtDlpAvailable() {
|
|
212
214
|
if (ytDlpAvailableCache !== null)
|
|
213
215
|
return ytDlpAvailableCache;
|
|
214
216
|
try {
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
const ytdlp = (process.env.YT_DLP_PATH
|
|
218
|
-
? createYtDlp(process.env.YT_DLP_PATH)
|
|
219
|
-
: youtubeDlExec);
|
|
217
|
+
const resolved = await resolveYtDlpPath();
|
|
218
|
+
const ytdlp = (resolved.path ? createYtDlp(resolved.path) : youtubeDlExec);
|
|
220
219
|
await ytdlp('--version', { version: true });
|
|
221
220
|
ytDlpAvailableCache = true;
|
|
222
221
|
}
|
|
@@ -321,10 +320,9 @@ function buildYtDlpOptions(url, outputTemplate, maxRes) {
|
|
|
321
320
|
}
|
|
322
321
|
return options;
|
|
323
322
|
}
|
|
324
|
-
function getYtDlpExecutor() {
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
: youtubeDlExec);
|
|
323
|
+
async function getYtDlpExecutor() {
|
|
324
|
+
const resolved = await resolveYtDlpPath();
|
|
325
|
+
return (resolved.path ? createYtDlp(resolved.path) : youtubeDlExec);
|
|
328
326
|
}
|
|
329
327
|
async function warnIfImpersonationRecommended(url) {
|
|
330
328
|
if (!needsImpersonation(url) || process.env.YT_DLP_IMPERSONATE) {
|
|
@@ -375,7 +373,7 @@ async function _rawYtDlpDownload(url, tempDir) {
|
|
|
375
373
|
const filePrefix = `yt-${Date.now()}`;
|
|
376
374
|
const outputTemplate = path.join(outputDir, `${filePrefix}.%(ext)s`);
|
|
377
375
|
const options = buildYtDlpOptions(url, outputTemplate, maxRes);
|
|
378
|
-
const ytdlp = getYtDlpExecutor();
|
|
376
|
+
const ytdlp = await getYtDlpExecutor();
|
|
379
377
|
await warnIfImpersonationRecommended(url);
|
|
380
378
|
await logProgress(`Downloading from platform (max ${maxRes}p)...`);
|
|
381
379
|
await runYtDlpDownload(ytdlp, url, options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"videoUtils.js","sourceRoot":"","sources":["../../src/utils/videoUtils.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"videoUtils.js","sourceRoot":"","sources":["../../src/utils/videoUtils.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* yt-dlp path resolution: normalize, validate, auto-detect, and resolve
|
|
3
|
+
* the binary path from environment, common installation locations, or
|
|
4
|
+
* the bundled binary shipped with `youtube-dl-exec`.
|
|
5
|
+
*
|
|
6
|
+
* Resolution order:
|
|
7
|
+
* 1. `YT_DLP_PATH` env var (normalized + validated)
|
|
8
|
+
* 2. Auto-detect common installation paths (WinGet, Chocolatey, pip, Scoop, PATH)
|
|
9
|
+
* 3. Bundled binary (empty string → `youtube-dl-exec` default)
|
|
10
|
+
*
|
|
11
|
+
* If `YT_DLP_PATH` is set but invalid, a warning is included in the result
|
|
12
|
+
* and resolution falls through to auto-detect → bundled.
|
|
13
|
+
*/
|
|
14
|
+
export type YtDlpPathSource = 'env' | 'auto' | 'bundled';
|
|
15
|
+
export interface YtDlpPathResult {
|
|
16
|
+
/** Resolved binary path. Empty string means "use bundled binary". */
|
|
17
|
+
path: string;
|
|
18
|
+
/** How the path was resolved. */
|
|
19
|
+
source: YtDlpPathSource;
|
|
20
|
+
/** Warning message if `YT_DLP_PATH` was set but invalid. */
|
|
21
|
+
warning?: string;
|
|
22
|
+
}
|
|
23
|
+
export interface YtDlpValidationResult {
|
|
24
|
+
valid: boolean;
|
|
25
|
+
reason?: 'not_found' | 'not_executable';
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Normalizes a raw yt-dlp path string:
|
|
29
|
+
* - Strips surrounding quotes (single or double)
|
|
30
|
+
* - Converts Windows backslashes to forward slashes
|
|
31
|
+
* - Resolves relative paths to absolute via `path.resolve()`
|
|
32
|
+
*/
|
|
33
|
+
export declare function normalizeYtDlpPath(rawPath: string): string;
|
|
34
|
+
/**
|
|
35
|
+
* Validates that a path points to an existing, executable file.
|
|
36
|
+
*/
|
|
37
|
+
export declare function validateYtDlpPath(normalizedPath: string): Promise<YtDlpValidationResult>;
|
|
38
|
+
/**
|
|
39
|
+
* Auto-detects a yt-dlp binary by scanning common installation paths.
|
|
40
|
+
* Returns the first valid path found, or `null` if none found.
|
|
41
|
+
*/
|
|
42
|
+
export declare function autoDetectYtDlpPath(): Promise<string | null>;
|
|
43
|
+
/**
|
|
44
|
+
* Resets the cached resolution result. Exposed for testing purposes only.
|
|
45
|
+
* @internal
|
|
46
|
+
*/
|
|
47
|
+
export declare function _resetYtDlpPathCache(): void;
|
|
48
|
+
/**
|
|
49
|
+
* Resolves the yt-dlp binary path using the following priority:
|
|
50
|
+
* 1. `YT_DLP_PATH` env var (normalized + validated)
|
|
51
|
+
* 2. Auto-detect common installation paths
|
|
52
|
+
* 3. Bundled binary (empty string)
|
|
53
|
+
*
|
|
54
|
+
* Result is cached after first call. Use `_resetYtDlpPathCache()` to clear.
|
|
55
|
+
*/
|
|
56
|
+
export declare function resolveYtDlpPath(): Promise<YtDlpPathResult>;
|
|
57
|
+
//# sourceMappingURL=ytDlpPath.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ytDlpPath.d.ts","sourceRoot":"","sources":["../../src/utils/ytDlpPath.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AASH,MAAM,MAAM,eAAe,GAAG,KAAK,GAAG,MAAM,GAAG,SAAS,CAAA;AAExD,MAAM,WAAW,eAAe;IAC9B,qEAAqE;IACrE,IAAI,EAAE,MAAM,CAAA;IACZ,iCAAiC;IACjC,MAAM,EAAE,eAAe,CAAA;IACvB,4DAA4D;IAC5D,OAAO,CAAC,EAAE,MAAM,CAAA;CACjB;AAED,MAAM,WAAW,qBAAqB;IACpC,KAAK,EAAE,OAAO,CAAA;IACd,MAAM,CAAC,EAAE,WAAW,GAAG,gBAAgB,CAAA;CACxC;AAID;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CA2B1D;AAID;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,cAAc,EAAE,MAAM,GACrB,OAAO,CAAC,qBAAqB,CAAC,CAkBhC;AA4FD;;;GAGG;AACH,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAuBlE;AAOD;;;GAGG;AACH,wBAAgB,oBAAoB,IAAI,IAAI,CAE3C;AA+BD;;;;;;;GAOG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,eAAe,CAAC,CAqCjE"}
|
|
@@ -0,0 +1,252 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* yt-dlp path resolution: normalize, validate, auto-detect, and resolve
|
|
3
|
+
* the binary path from environment, common installation locations, or
|
|
4
|
+
* the bundled binary shipped with `youtube-dl-exec`.
|
|
5
|
+
*
|
|
6
|
+
* Resolution order:
|
|
7
|
+
* 1. `YT_DLP_PATH` env var (normalized + validated)
|
|
8
|
+
* 2. Auto-detect common installation paths (WinGet, Chocolatey, pip, Scoop, PATH)
|
|
9
|
+
* 3. Bundled binary (empty string → `youtube-dl-exec` default)
|
|
10
|
+
*
|
|
11
|
+
* If `YT_DLP_PATH` is set but invalid, a warning is included in the result
|
|
12
|
+
* and resolution falls through to auto-detect → bundled.
|
|
13
|
+
*/
|
|
14
|
+
import * as fs from 'fs/promises';
|
|
15
|
+
import * as path from 'path';
|
|
16
|
+
import * as os from 'os';
|
|
17
|
+
import { logWarning } from './logger.js';
|
|
18
|
+
// ── Path Normalization ───────────────────────────────────────────────────
|
|
19
|
+
/**
|
|
20
|
+
* Normalizes a raw yt-dlp path string:
|
|
21
|
+
* - Strips surrounding quotes (single or double)
|
|
22
|
+
* - Converts Windows backslashes to forward slashes
|
|
23
|
+
* - Resolves relative paths to absolute via `path.resolve()`
|
|
24
|
+
*/
|
|
25
|
+
export function normalizeYtDlpPath(rawPath) {
|
|
26
|
+
let normalized = rawPath.trim();
|
|
27
|
+
// Strip surrounding quotes
|
|
28
|
+
if ((normalized.startsWith('"') && normalized.endsWith('"')) ||
|
|
29
|
+
(normalized.startsWith("'") && normalized.endsWith("'"))) {
|
|
30
|
+
normalized = normalized.slice(1, -1);
|
|
31
|
+
}
|
|
32
|
+
// Convert Windows backslashes to forward slashes for consistency
|
|
33
|
+
// `youtube-dl-exec` (via execa) handles forward slashes on Windows fine
|
|
34
|
+
if (process.platform === 'win32') {
|
|
35
|
+
normalized = normalized.replace(/\\/g, '/');
|
|
36
|
+
}
|
|
37
|
+
// Resolve to absolute path
|
|
38
|
+
normalized = path.resolve(normalized);
|
|
39
|
+
// Re-convert to backslashes on Windows for fs operations
|
|
40
|
+
// (path.resolve already uses platform separators, but we normalized above)
|
|
41
|
+
if (process.platform === 'win32') {
|
|
42
|
+
normalized = normalized.replace(/\//g, '\\');
|
|
43
|
+
}
|
|
44
|
+
return normalized;
|
|
45
|
+
}
|
|
46
|
+
// ── Path Validation ──────────────────────────────────────────────────────
|
|
47
|
+
/**
|
|
48
|
+
* Validates that a path points to an existing, executable file.
|
|
49
|
+
*/
|
|
50
|
+
export async function validateYtDlpPath(normalizedPath) {
|
|
51
|
+
try {
|
|
52
|
+
await fs.access(normalizedPath, fs.constants.F_OK);
|
|
53
|
+
}
|
|
54
|
+
catch {
|
|
55
|
+
return { valid: false, reason: 'not_found' };
|
|
56
|
+
}
|
|
57
|
+
// On Windows, X_OK may not be reliable — F_OK is sufficient since .exe
|
|
58
|
+
// files are inherently executable. On Unix, check X_OK.
|
|
59
|
+
if (process.platform !== 'win32') {
|
|
60
|
+
try {
|
|
61
|
+
await fs.access(normalizedPath, fs.constants.X_OK);
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return { valid: false, reason: 'not_executable' };
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
return { valid: true };
|
|
68
|
+
}
|
|
69
|
+
// ── Auto-Detection ───────────────────────────────────────────────────────
|
|
70
|
+
/**
|
|
71
|
+
* Platform-specific search paths for yt-dlp, in priority order.
|
|
72
|
+
* Environment variable placeholders (e.g. %LOCALAPPDATA%) are expanded
|
|
73
|
+
* at runtime via `expandEnvVars()`.
|
|
74
|
+
*/
|
|
75
|
+
function getSearchPaths() {
|
|
76
|
+
const home = os.homedir();
|
|
77
|
+
if (process.platform === 'win32') {
|
|
78
|
+
const localAppData = process.env.LOCALAPPDATA ?? path.join(home, 'AppData', 'Local');
|
|
79
|
+
const appData = process.env.APPDATA ?? path.join(home, 'AppData', 'Roaming');
|
|
80
|
+
const userProfile = process.env.USERPROFILE ?? home;
|
|
81
|
+
return [
|
|
82
|
+
// WinGet: %LOCALAPPDATA%\Microsoft\WinGet\Packages\yt-dlp.*\yt-dlp.exe
|
|
83
|
+
path.join(localAppData, 'Microsoft', 'WinGet', 'Packages'),
|
|
84
|
+
// Chocolatey: C:\tools\yt-dlp.exe
|
|
85
|
+
'C:\\tools\\yt-dlp.exe',
|
|
86
|
+
// pip: %APPDATA%\Python\Scripts\yt-dlp.exe
|
|
87
|
+
path.join(appData, 'Python', 'Scripts', 'yt-dlp.exe'),
|
|
88
|
+
// Scoop: %USERPROFILE%\scoop\shims\yt-dlp.exe
|
|
89
|
+
path.join(userProfile, 'scoop', 'shims', 'yt-dlp.exe'),
|
|
90
|
+
// PATH fallback (handled separately via `which`-style lookup)
|
|
91
|
+
];
|
|
92
|
+
}
|
|
93
|
+
// macOS / Linux
|
|
94
|
+
return [
|
|
95
|
+
'/usr/local/bin/yt-dlp',
|
|
96
|
+
'/usr/bin/yt-dlp',
|
|
97
|
+
path.join(home, '.local', 'bin', 'yt-dlp'),
|
|
98
|
+
'/opt/homebrew/bin/yt-dlp', // Apple Silicon Homebrew
|
|
99
|
+
];
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Expands Windows environment variable placeholders in a path string.
|
|
103
|
+
* e.g. `%LOCALAPPDATA%\foo` → `C:\Users\...\AppData\Local\foo`
|
|
104
|
+
*/
|
|
105
|
+
function expandEnvVars(p) {
|
|
106
|
+
if (process.platform !== 'win32')
|
|
107
|
+
return p;
|
|
108
|
+
return p.replace(/%([^%]+)%/g, (_, name) => process.env[name] ?? `%${name}%`);
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Scans WinGet Packages directory for yt-dlp installations.
|
|
112
|
+
* WinGet installs to `%LOCALAPPDATA%\Microsoft\WinGet\Packages\yt-dlp.yt-dlp.*\yt-dlp.exe`
|
|
113
|
+
*/
|
|
114
|
+
async function findWinGetYtDlp(packagesDir) {
|
|
115
|
+
try {
|
|
116
|
+
const entries = await fs.readdir(packagesDir, { withFileTypes: true });
|
|
117
|
+
const ytDlpDirs = entries
|
|
118
|
+
.filter((e) => e.isDirectory() && e.name.startsWith('yt-dlp.yt-dlp.'))
|
|
119
|
+
.sort(); // Sort for deterministic ordering (prefer latest version)
|
|
120
|
+
for (const dir of ytDlpDirs) {
|
|
121
|
+
const candidate = path.join(packagesDir, dir.name, 'yt-dlp.exe');
|
|
122
|
+
const validation = await validateYtDlpPath(candidate);
|
|
123
|
+
if (validation.valid)
|
|
124
|
+
return candidate;
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
catch {
|
|
128
|
+
// Directory doesn't exist or can't be read — skip
|
|
129
|
+
}
|
|
130
|
+
return null;
|
|
131
|
+
}
|
|
132
|
+
/**
|
|
133
|
+
* Tries to find yt-dlp on PATH using `which` (Unix) or `where` (Windows).
|
|
134
|
+
* Returns the validated path or `null` if not found.
|
|
135
|
+
*/
|
|
136
|
+
async function findYtDlpOnPath() {
|
|
137
|
+
const pathFallback = process.platform === 'win32' ? 'yt-dlp.exe' : 'yt-dlp';
|
|
138
|
+
try {
|
|
139
|
+
const { execa } = await import('execa');
|
|
140
|
+
const whichCmd = process.platform === 'win32' ? 'where' : 'which';
|
|
141
|
+
const result = await execa(whichCmd, [pathFallback], { reject: false });
|
|
142
|
+
if (result.exitCode === 0 && result.stdout.trim()) {
|
|
143
|
+
const foundPath = result.stdout.trim().split('\n')[0].trim();
|
|
144
|
+
const validation = await validateYtDlpPath(foundPath);
|
|
145
|
+
if (validation.valid)
|
|
146
|
+
return foundPath;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
catch {
|
|
150
|
+
// `which`/`where` not available or yt-dlp not on PATH — skip
|
|
151
|
+
}
|
|
152
|
+
return null;
|
|
153
|
+
}
|
|
154
|
+
/**
|
|
155
|
+
* Auto-detects a yt-dlp binary by scanning common installation paths.
|
|
156
|
+
* Returns the first valid path found, or `null` if none found.
|
|
157
|
+
*/
|
|
158
|
+
export async function autoDetectYtDlpPath() {
|
|
159
|
+
const searchPaths = getSearchPaths();
|
|
160
|
+
for (const rawPath of searchPaths) {
|
|
161
|
+
const expandedPath = expandEnvVars(rawPath);
|
|
162
|
+
// Special handling for WinGet directory (glob-like search)
|
|
163
|
+
if (expandedPath.endsWith('WinGet\\Packages') ||
|
|
164
|
+
expandedPath.endsWith('WinGet/Packages')) {
|
|
165
|
+
const found = await findWinGetYtDlp(expandedPath);
|
|
166
|
+
if (found)
|
|
167
|
+
return found;
|
|
168
|
+
continue;
|
|
169
|
+
}
|
|
170
|
+
// Direct path check
|
|
171
|
+
const validation = await validateYtDlpPath(expandedPath);
|
|
172
|
+
if (validation.valid)
|
|
173
|
+
return expandedPath;
|
|
174
|
+
}
|
|
175
|
+
// PATH fallback: try `yt-dlp` (or `yt-dlp.exe` on Windows) via which/where
|
|
176
|
+
return findYtDlpOnPath();
|
|
177
|
+
}
|
|
178
|
+
// ── Resolution (orchestrator) ────────────────────────────────────────────
|
|
179
|
+
/** Cached resolution result to avoid repeated disk I/O. */
|
|
180
|
+
let cachedResolution = null;
|
|
181
|
+
/**
|
|
182
|
+
* Resets the cached resolution result. Exposed for testing purposes only.
|
|
183
|
+
* @internal
|
|
184
|
+
*/
|
|
185
|
+
export function _resetYtDlpPathCache() {
|
|
186
|
+
cachedResolution = null;
|
|
187
|
+
}
|
|
188
|
+
/**
|
|
189
|
+
* Validates the `YT_DLP_PATH` environment variable and returns either a
|
|
190
|
+
* resolved `YtDlpPathResult` (if valid) or a warning string (if invalid).
|
|
191
|
+
* Returns `null` when the variable is not set or empty.
|
|
192
|
+
*/
|
|
193
|
+
async function checkEnvPath(envPath) {
|
|
194
|
+
if (!envPath || !envPath.trim())
|
|
195
|
+
return null;
|
|
196
|
+
const normalized = normalizeYtDlpPath(envPath);
|
|
197
|
+
const validation = await validateYtDlpPath(normalized);
|
|
198
|
+
if (validation.valid) {
|
|
199
|
+
return { path: normalized, source: 'env' };
|
|
200
|
+
}
|
|
201
|
+
const reasonText = validation.reason === 'not_found'
|
|
202
|
+
? 'file does not exist'
|
|
203
|
+
: validation.reason === 'not_executable'
|
|
204
|
+
? 'file is not executable'
|
|
205
|
+
: 'invalid';
|
|
206
|
+
const warning = `YT_DLP_PATH is set to '${envPath}' but ${reasonText}. Falling back to auto-detection or bundled binary.`;
|
|
207
|
+
await logWarning(warning);
|
|
208
|
+
return warning;
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Resolves the yt-dlp binary path using the following priority:
|
|
212
|
+
* 1. `YT_DLP_PATH` env var (normalized + validated)
|
|
213
|
+
* 2. Auto-detect common installation paths
|
|
214
|
+
* 3. Bundled binary (empty string)
|
|
215
|
+
*
|
|
216
|
+
* Result is cached after first call. Use `_resetYtDlpPathCache()` to clear.
|
|
217
|
+
*/
|
|
218
|
+
export async function resolveYtDlpPath() {
|
|
219
|
+
if (cachedResolution !== null)
|
|
220
|
+
return cachedResolution;
|
|
221
|
+
const envPath = process.env.YT_DLP_PATH;
|
|
222
|
+
const envResult = await checkEnvPath(envPath);
|
|
223
|
+
// If env path is valid, return immediately
|
|
224
|
+
if (envResult !== null && typeof envResult !== 'string') {
|
|
225
|
+
cachedResolution = envResult;
|
|
226
|
+
return cachedResolution;
|
|
227
|
+
}
|
|
228
|
+
// envResult is a warning string (env set but invalid) or null (env not set)
|
|
229
|
+
const envWarning = typeof envResult === 'string' ? envResult : undefined;
|
|
230
|
+
// ── Step 2: Auto-detect ────────────────────────────────────────────
|
|
231
|
+
const autoDetected = await autoDetectYtDlpPath();
|
|
232
|
+
if (autoDetected) {
|
|
233
|
+
cachedResolution = {
|
|
234
|
+
path: autoDetected,
|
|
235
|
+
source: 'auto',
|
|
236
|
+
warning: envWarning
|
|
237
|
+
? `YT_DLP_PATH was invalid. Using auto-detected binary at ${autoDetected}.`
|
|
238
|
+
: undefined,
|
|
239
|
+
};
|
|
240
|
+
return cachedResolution;
|
|
241
|
+
}
|
|
242
|
+
// ── Step 3: Bundled binary ─────────────────────────────────────────
|
|
243
|
+
cachedResolution = {
|
|
244
|
+
path: '', // Empty string signals youtube-dl-exec to use bundled binary
|
|
245
|
+
source: 'bundled',
|
|
246
|
+
warning: envWarning
|
|
247
|
+
? `YT_DLP_PATH was invalid and no system binary was found. Using bundled binary.`
|
|
248
|
+
: undefined,
|
|
249
|
+
};
|
|
250
|
+
return cachedResolution;
|
|
251
|
+
}
|
|
252
|
+
//# sourceMappingURL=ytDlpPath.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ytDlpPath.js","sourceRoot":"","sources":["../../src/utils/ytDlpPath.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.52.1-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",
|
|
@@ -26,13 +26,26 @@
|
|
|
26
26
|
"mcp",
|
|
27
27
|
"model-context-protocol",
|
|
28
28
|
"video",
|
|
29
|
+
"video-analysis",
|
|
30
|
+
"video-summarization",
|
|
31
|
+
"transcription",
|
|
29
32
|
"ai",
|
|
30
33
|
"copilot",
|
|
34
|
+
"gemini",
|
|
31
35
|
"kimi",
|
|
32
36
|
"glm",
|
|
33
37
|
"qwen",
|
|
38
|
+
"mimo",
|
|
34
39
|
"moonshot",
|
|
35
|
-
"z.ai"
|
|
40
|
+
"z.ai",
|
|
41
|
+
"alibaba",
|
|
42
|
+
"xiaomi",
|
|
43
|
+
"google",
|
|
44
|
+
"deepgram",
|
|
45
|
+
"assemblyai",
|
|
46
|
+
"groq",
|
|
47
|
+
"ffmpeg",
|
|
48
|
+
"yt-dlp"
|
|
36
49
|
],
|
|
37
50
|
"author": "",
|
|
38
51
|
"license": "UNLICENSED",
|