video-context-mcp-server 0.46.0-beta → 0.47.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 +9 -9
- package/dist/generated/version.d.ts +1 -1
- package/dist/generated/version.js +1 -1
- package/dist/services/providerRouter.d.ts +19 -0
- package/dist/services/providerRouter.d.ts.map +1 -1
- package/dist/services/providerRouter.js +30 -0
- package/dist/services/providerRouter.js.map +1 -1
- package/dist/tools/analyzeVideo.d.ts.map +1 -1
- package/dist/tools/analyzeVideo.js +73 -9
- package/dist/tools/analyzeVideo.js.map +1 -1
- package/dist/tools/summarizeVideo.d.ts +8 -0
- package/dist/tools/summarizeVideo.d.ts.map +1 -1
- package/dist/tools/summarizeVideo.js +12 -2
- package/dist/tools/summarizeVideo.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -288,24 +288,24 @@ When an audio key is missing or an audio API call fails at runtime, tools automa
|
|
|
288
288
|
|
|
289
289
|
### Video Providers
|
|
290
290
|
|
|
291
|
-
| Feature | GLM-4.6V (default)
|
|
292
|
-
| -------------- |
|
|
293
|
-
| Price | Free tier available (GLM-4.6V-Flash)
|
|
294
|
-
| Video formats | mp4, avi, mov, wmv, webm, m4v
|
|
295
|
-
| Context window | 128K tokens
|
|
296
|
-
| Max file size | ~12 MB base64 / **unlimited w/ S3↓** | 2 GB | ~10 MB base64 / **unlimited w/ S3↓** | 100 MB |
|
|
297
|
-
| Best for | **Default** — free, no card required
|
|
291
|
+
| Feature | GLM-4.6V (default) | Gemini 3 Flash Preview | Qwen3.5 | Kimi K2.5 |
|
|
292
|
+
| -------------- | ------------------------------------------------------ | ---------------------------------------------- | ------------------------------------------------------ | ---------------------------------------------- |
|
|
293
|
+
| Price | Free tier available (GLM-4.6V-Flash) | Free tier available | Free credits (1M tokens, 90 days) | $0.60 input / $3.00 output per 1M tokens |
|
|
294
|
+
| Video formats | mp4, avi, mov, wmv, webm, m4v | mp4, mpeg, mov, avi, flv, mpg, webm, wmv, 3gpp | mp4, avi, mov, wmv, webm, m4v | mp4, mpeg, mov, avi, flv, mpg, webm, wmv, 3gpp |
|
|
295
|
+
| Context window | 128K tokens | 1M tokens | 1M tokens | 256K tokens |
|
|
296
|
+
| Max file size | ~12 MB base64 / frames fallback / **unlimited w/ S3↓** | 2 GB | ~10 MB base64 / frames fallback / **unlimited w/ S3↓** | 100 MB |
|
|
297
|
+
| Best for | **Default** — free, no card required | Free fallback, no card (less accurate) | Free credits (card required) | Paid — broadest format support |
|
|
298
298
|
|
|
299
299
|
**GLM-4.6V** is the default — it offers a free tier with no credit card required. **Gemini** is the second fallback — also free with no card required, though it has proven less accurate for video analysis in practice. **Qwen3.5** offers free credits (1M tokens for 90 days) but requires a credit card to sign up. **Kimi K2.5** is a paid provider with the broadest video format support.
|
|
300
300
|
|
|
301
301
|
Set `VIDEO_MCP_DEFAULT_PROVIDER=gemini`, `qwen`, or `kimi` to change the default.
|
|
302
302
|
|
|
303
|
-
>
|
|
303
|
+
> **ℹ️ Large local files with GLM or Qwen:** Both providers have a 10–12 MB base64 limit for local files. When a file exceeds this limit, the server **automatically falls back to frame-based analysis** (extracts evenly-spaced keyframes and sends them as images) — no configuration needed. For the highest quality with large local videos, set up the optional **S3 relay** (below) — GLM and Qwen will receive a presigned URL to the full video instead of extracted frames.
|
|
304
304
|
|
|
305
305
|
<details open>
|
|
306
306
|
<summary><strong>Automatic S3 relay: bypass the 10 MB local file limit with Qwen and GLM</strong></summary>
|
|
307
307
|
|
|
308
|
-
**GLM-4.6V** and **Qwen3.5** both accept direct video URLs, but base64-encoding a local file caps out at **10–12 MB**.
|
|
308
|
+
**GLM-4.6V** and **Qwen3.5** both accept direct video URLs, but base64-encoding a local file caps out at **10–12 MB**. Above that limit, the server automatically falls back to **frame-based analysis** (good quality). 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, bypassing the base64 limit entirely. No manual upload step needed.
|
|
309
309
|
|
|
310
310
|
**Why it works**: Qwen and GLM require the server to serve `Content-Length` and `Content-Type` headers alongside the video. AWS S3 provides these automatically.
|
|
311
311
|
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.
|
|
1
|
+
export declare const VERSION = "0.47.0-beta";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
|
@@ -67,6 +67,25 @@ export declare function getRuntimeFallbackChain(provider: VideoProvider, hasKimi
|
|
|
67
67
|
* Explicit values are clamped to the 5–50 range.
|
|
68
68
|
*/
|
|
69
69
|
export declare function getMaxFrames(): number;
|
|
70
|
+
/**
|
|
71
|
+
* Returns the maximum base64 payload size in bytes for a given provider.
|
|
72
|
+
* Used to determine whether a local video must be sent as extracted frames
|
|
73
|
+
* instead of a raw base64-encoded file.
|
|
74
|
+
*
|
|
75
|
+
* GLM cap: ~12 MB (Z.AI hard reject above this)
|
|
76
|
+
* Qwen cap: ~10 MB (DashScope hard reject above this)
|
|
77
|
+
* Kimi cap: ~80 MB (Kimi file upload limit)
|
|
78
|
+
* Gemini: no base64 path — always uses the Files API
|
|
79
|
+
*/
|
|
80
|
+
export declare function getProviderBase64SizeLimit(provider: VideoProvider): number;
|
|
81
|
+
/**
|
|
82
|
+
* Returns true when the given raw file size would exceed the provider's
|
|
83
|
+
* base64 payload limit after encoding.
|
|
84
|
+
*
|
|
85
|
+
* Base64 expands binary data by a factor of 4/3. The data-URI prefix
|
|
86
|
+
* ("data:<mime>;base64,") adds ~25 chars, which is negligible.
|
|
87
|
+
*/
|
|
88
|
+
export declare function exceedsProviderBase64Limit(fileSizeBytes: number, provider: VideoProvider): boolean;
|
|
70
89
|
/**
|
|
71
90
|
* Returns true when the user is not on pro and their `VIDEO_MCP_MAX_FRAMES`
|
|
72
91
|
* setting was silently capped (set to a value outside the free 5–50 range
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providerRouter.d.ts","sourceRoot":"","sources":["../../src/services/providerRouter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAA;AAE9D;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,OAAO,EAClB,YAAY,GAAE,OAAe,EAC7B,UAAU,GAAE,OAAe,GAC1B,aAAa,CAyBf;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,aAAa,CAAA;IACvB,YAAY,CAAC,EAAE,aAAa,CAAA;CAC7B,CAAA;AAUD;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,OAAO,EAClB,YAAY,GAAE,OAAe,EAC7B,UAAU,GAAE,OAAe,GAC1B,cAAc,CAsBhB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,CAWlD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,OAAO,EAClB,YAAY,GAAE,OAAe,EAC7B,UAAU,GAAE,OAAe,GAC1B,aAAa,EAAE,CAejB;AAQD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAerC;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAQzC"}
|
|
1
|
+
{"version":3,"file":"providerRouter.d.ts","sourceRoot":"","sources":["../../src/services/providerRouter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH,MAAM,MAAM,aAAa,GAAG,KAAK,GAAG,MAAM,GAAG,QAAQ,GAAG,MAAM,CAAA;AAE9D;;;;;;;;GAQG;AACH,wBAAgB,cAAc,CAC5B,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,OAAO,EAClB,YAAY,GAAE,OAAe,EAC7B,UAAU,GAAE,OAAe,GAC1B,aAAa,CAyBf;AAED;;;;GAIG;AACH,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,EAAE,aAAa,CAAA;IACvB,YAAY,CAAC,EAAE,aAAa,CAAA;CAC7B,CAAA;AAUD;;;;;;;;;;;;GAYG;AACH,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,OAAO,EAClB,YAAY,GAAE,OAAe,EAC7B,UAAU,GAAE,OAAe,GAC1B,cAAc,CAsBhB;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,aAAa,CAWlD;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,aAAa,EACvB,UAAU,EAAE,OAAO,EACnB,SAAS,EAAE,OAAO,EAClB,YAAY,GAAE,OAAe,EAC7B,UAAU,GAAE,OAAe,GAC1B,aAAa,EAAE,CAejB;AAQD;;;;;;;;;GASG;AACH,wBAAgB,YAAY,IAAI,MAAM,CAerC;AAED;;;;;;;;;GASG;AACH,wBAAgB,0BAA0B,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAK1E;AAED;;;;;;GAMG;AACH,wBAAgB,0BAA0B,CACxC,aAAa,EAAE,MAAM,EACrB,QAAQ,EAAE,aAAa,GACtB,OAAO,CAGT;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAQzC"}
|
|
@@ -147,6 +147,36 @@ export function getMaxFrames() {
|
|
|
147
147
|
return FREE_MAX_FRAMES;
|
|
148
148
|
return Math.max(5, Math.min(FREE_MAX_FRAMES, envValue));
|
|
149
149
|
}
|
|
150
|
+
/**
|
|
151
|
+
* Returns the maximum base64 payload size in bytes for a given provider.
|
|
152
|
+
* Used to determine whether a local video must be sent as extracted frames
|
|
153
|
+
* instead of a raw base64-encoded file.
|
|
154
|
+
*
|
|
155
|
+
* GLM cap: ~12 MB (Z.AI hard reject above this)
|
|
156
|
+
* Qwen cap: ~10 MB (DashScope hard reject above this)
|
|
157
|
+
* Kimi cap: ~80 MB (Kimi file upload limit)
|
|
158
|
+
* Gemini: no base64 path — always uses the Files API
|
|
159
|
+
*/
|
|
160
|
+
export function getProviderBase64SizeLimit(provider) {
|
|
161
|
+
if (provider === 'glm')
|
|
162
|
+
return 12 * 1024 * 1024;
|
|
163
|
+
if (provider === 'qwen')
|
|
164
|
+
return 10 * 1024 * 1024;
|
|
165
|
+
if (provider === 'kimi')
|
|
166
|
+
return 80 * 1024 * 1024;
|
|
167
|
+
return Infinity; // gemini uses Files API
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Returns true when the given raw file size would exceed the provider's
|
|
171
|
+
* base64 payload limit after encoding.
|
|
172
|
+
*
|
|
173
|
+
* Base64 expands binary data by a factor of 4/3. The data-URI prefix
|
|
174
|
+
* ("data:<mime>;base64,") adds ~25 chars, which is negligible.
|
|
175
|
+
*/
|
|
176
|
+
export function exceedsProviderBase64Limit(fileSizeBytes, provider) {
|
|
177
|
+
const encodedSize = Math.ceil(fileSizeBytes * (4 / 3));
|
|
178
|
+
return encodedSize > getProviderBase64SizeLimit(provider);
|
|
179
|
+
}
|
|
150
180
|
/**
|
|
151
181
|
* Returns true when the user is not on pro and their `VIDEO_MCP_MAX_FRAMES`
|
|
152
182
|
* setting was silently capped (set to a value outside the free 5–50 range
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"providerRouter.js","sourceRoot":"","sources":["../../src/services/providerRouter.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"providerRouter.js","sourceRoot":"","sources":["../../src/services/providerRouter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzeVideo.d.ts","sourceRoot":"","sources":["../../src/tools/analyzeVideo.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"analyzeVideo.d.ts","sourceRoot":"","sources":["../../src/tools/analyzeVideo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAuBH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAA;AAEjD,KAAK,kBAAkB,GAAG,OAAO,KAAK,EAAE,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAA;AA8GxE,eAAO,MAAM,gBAAgB,GAC3B,QAAQ,kBAAkB,KACzB,OAAO,CAAC,cAAc,CA4FxB,CAAA"}
|
|
@@ -2,8 +2,12 @@
|
|
|
2
2
|
* Tool: analyze_video
|
|
3
3
|
* Ask questions about video content and get AI-powered answers
|
|
4
4
|
*/
|
|
5
|
+
import { stat as fsStat } from 'fs/promises';
|
|
6
|
+
import { extractFramesEvenly } from '../services/ffmpeg.js';
|
|
7
|
+
import { exceedsProviderBase64Limit, getMaxFrames, getProviderBase64SizeLimit, } from '../services/providerRouter.js';
|
|
5
8
|
import { logProgress } from '../utils/logger.js';
|
|
6
|
-
import { getCachedProviderFileId, registerProviderFileId, } from '../utils/artifactCache.js';
|
|
9
|
+
import { buildFrameSubdir, getCachedFrames, getCachedProviderFileId, isCachingEnabled, registerCachedFrames, registerProviderFileId, } from '../utils/artifactCache.js';
|
|
10
|
+
import { trimFramesToFitSize } from './summarizeVideo.js';
|
|
7
11
|
import { runWithProviderFallback, } from './orchestrator.js';
|
|
8
12
|
async function resolveGeminiFileForAnalyze(ctx) {
|
|
9
13
|
const { geminiClient } = ctx.clients;
|
|
@@ -25,6 +29,52 @@ async function resolveGeminiFileForAnalyze(ctx) {
|
|
|
25
29
|
registerProviderFileId(ctx.videoId, 'gemini', uploaded.name);
|
|
26
30
|
return uploaded;
|
|
27
31
|
}
|
|
32
|
+
/**
|
|
33
|
+
* Extract evenly-spaced JPEG frames from a local video and send them to the
|
|
34
|
+
* provider's image-analysis endpoint. Used as a last-resort fallback when
|
|
35
|
+
* the video file would exceed the provider's base64 payload limit and no S3
|
|
36
|
+
* relay is configured.
|
|
37
|
+
*/
|
|
38
|
+
async function analyzeWithFrames(ctx, videoId, question) {
|
|
39
|
+
const sizeLimit = getProviderBase64SizeLimit(ctx.provider);
|
|
40
|
+
const extractionCap = Math.ceil((sizeLimit / (100 * 1024)) * 1.5);
|
|
41
|
+
const framesToExtract = Math.min(getMaxFrames(), extractionCap);
|
|
42
|
+
const frameSubdir = buildFrameSubdir('even', { count: framesToExtract });
|
|
43
|
+
let rawFrames;
|
|
44
|
+
if (isCachingEnabled()) {
|
|
45
|
+
const cached = await getCachedFrames(videoId, frameSubdir);
|
|
46
|
+
if (cached) {
|
|
47
|
+
await logProgress(`Using ${cached.buffers.length} cached keyframe(s)...`);
|
|
48
|
+
rawFrames = cached.buffers;
|
|
49
|
+
}
|
|
50
|
+
else {
|
|
51
|
+
await logProgress('Extracting keyframes...');
|
|
52
|
+
rawFrames = await extractFramesEvenly(ctx.localPath, framesToExtract);
|
|
53
|
+
await registerCachedFrames(videoId, frameSubdir, rawFrames);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
else {
|
|
57
|
+
await logProgress('Extracting keyframes...');
|
|
58
|
+
rawFrames = await extractFramesEvenly(ctx.localPath, framesToExtract);
|
|
59
|
+
}
|
|
60
|
+
const frames = rawFrames.map((buf) => ({
|
|
61
|
+
data: ctx.bufferToBase64String(buf),
|
|
62
|
+
mimeType: 'image/jpeg',
|
|
63
|
+
}));
|
|
64
|
+
const trimmed = trimFramesToFitSize(frames, sizeLimit);
|
|
65
|
+
if (trimmed > 0) {
|
|
66
|
+
await logProgress(`Size guard: dropped ${trimmed} frame(s) to fit within provider limit`);
|
|
67
|
+
}
|
|
68
|
+
if (ctx.provider === 'glm') {
|
|
69
|
+
const glmClient = ctx.clients.glmClient;
|
|
70
|
+
await logProgress('Analyzing video...');
|
|
71
|
+
return { text: await glmClient.analyzeImages(frames, ctx.promptToUse) };
|
|
72
|
+
}
|
|
73
|
+
// qwen
|
|
74
|
+
const qwenClient = ctx.clients.qwenClient;
|
|
75
|
+
await logProgress('Analyzing video...');
|
|
76
|
+
return { text: await qwenClient.analyzeImages(frames, ctx.promptToUse) };
|
|
77
|
+
}
|
|
28
78
|
async function resolveKimiFileId(ctx) {
|
|
29
79
|
const { kimiClient } = ctx.clients;
|
|
30
80
|
if (!kimiClient)
|
|
@@ -61,27 +111,41 @@ export const analyzeVideoTool = async (params) => {
|
|
|
61
111
|
if (p === 'glm') {
|
|
62
112
|
if (!glmClient)
|
|
63
113
|
throw new Error('GLM client unavailable. Set Z_AI_API_KEY.');
|
|
64
|
-
|
|
65
|
-
|
|
114
|
+
if (isDirectUrl) {
|
|
115
|
+
await logProgress('Analyzing video...');
|
|
66
116
|
return {
|
|
67
117
|
text: await glmClient.analyzeVideoUrl(effectivePath, promptToUse),
|
|
68
118
|
};
|
|
69
|
-
|
|
119
|
+
}
|
|
120
|
+
const glmStat = await fsStat(ctx.localPath);
|
|
121
|
+
if (exceedsProviderBase64Limit(glmStat.size, 'glm')) {
|
|
122
|
+
await logProgress('Video too large for base64 encoding, extracting keyframes...');
|
|
123
|
+
return analyzeWithFrames(ctx, ctx.videoId, question);
|
|
124
|
+
}
|
|
125
|
+
await logProgress('Analyzing video...');
|
|
126
|
+
const glmBuf = await ctx.fs.readFile(ctx.localPath);
|
|
70
127
|
return {
|
|
71
|
-
text: await glmClient.analyzeVideoBase64(ctx.bufferToBase64String(
|
|
128
|
+
text: await glmClient.analyzeVideoBase64(ctx.bufferToBase64String(glmBuf), promptToUse, ctx.getVideoMimeType(ctx.localPath)),
|
|
72
129
|
};
|
|
73
130
|
}
|
|
74
131
|
if (p === 'qwen') {
|
|
75
132
|
if (!qwenClient)
|
|
76
133
|
throw new Error('Qwen client unavailable. Set DASHSCOPE_API_KEY.');
|
|
77
|
-
|
|
78
|
-
|
|
134
|
+
if (isDirectUrl) {
|
|
135
|
+
await logProgress('Analyzing video...');
|
|
79
136
|
return {
|
|
80
137
|
text: await qwenClient.analyzeVideoUrl(effectivePath, promptToUse),
|
|
81
138
|
};
|
|
82
|
-
|
|
139
|
+
}
|
|
140
|
+
const qwenStat = await fsStat(ctx.localPath);
|
|
141
|
+
if (exceedsProviderBase64Limit(qwenStat.size, 'qwen')) {
|
|
142
|
+
await logProgress('Video too large for base64 encoding, extracting keyframes...');
|
|
143
|
+
return analyzeWithFrames(ctx, ctx.videoId, question);
|
|
144
|
+
}
|
|
145
|
+
await logProgress('Analyzing video...');
|
|
146
|
+
const qwenBuf = await ctx.fs.readFile(ctx.localPath);
|
|
83
147
|
return {
|
|
84
|
-
text: await qwenClient.analyzeVideoBase64(ctx.bufferToBase64String(
|
|
148
|
+
text: await qwenClient.analyzeVideoBase64(ctx.bufferToBase64String(qwenBuf), promptToUse, ctx.getVideoMimeType(ctx.localPath)),
|
|
85
149
|
};
|
|
86
150
|
}
|
|
87
151
|
// kimi
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"analyzeVideo.js","sourceRoot":"","sources":["../../src/tools/analyzeVideo.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"analyzeVideo.js","sourceRoot":"","sources":["../../src/tools/analyzeVideo.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,6 +5,14 @@
|
|
|
5
5
|
import type { CallToolResult } from '@modelcontextprotocol/sdk/types.js';
|
|
6
6
|
import { summarizeVideoSchema } from './schemas.js';
|
|
7
7
|
type SummarizeVideoParams = import('zod').infer<typeof summarizeVideoSchema>;
|
|
8
|
+
/**
|
|
9
|
+
* Trim trailing frames until the total base64 payload fits within maxBytes.
|
|
10
|
+
* Always keeps at least 1 frame. Returns the number of frames removed.
|
|
11
|
+
*/
|
|
12
|
+
export declare function trimFramesToFitSize(frames: {
|
|
13
|
+
data: string;
|
|
14
|
+
mimeType: string;
|
|
15
|
+
}[], maxBytes: number): number;
|
|
8
16
|
export declare const summarizeVideoTool: (params: SummarizeVideoParams) => Promise<CallToolResult>;
|
|
9
17
|
export {};
|
|
10
18
|
//# sourceMappingURL=summarizeVideo.d.ts.map
|
|
@@ -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;AAwBH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAA;AACxE,OAAO,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAA;AAEnD,KAAK,oBAAoB,GAAG,OAAO,KAAK,EAAE,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAA;AAe5E;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,EAAE,EAC5C,QAAQ,EAAE,MAAM,GACf,MAAM,CASR;AA2PD,eAAO,MAAM,kBAAkB,GAC7B,QAAQ,oBAAoB,KAC3B,OAAO,CAAC,cAAc,CAqExB,CAAA"}
|
|
@@ -3,10 +3,11 @@
|
|
|
3
3
|
* Generate a structured summary of the video
|
|
4
4
|
*/
|
|
5
5
|
import { extractFramesEvenly, getVideoMetadata } from '../services/ffmpeg.js';
|
|
6
|
-
import { getMaxFrames, wasFramesCapped } from '../services/providerRouter.js';
|
|
6
|
+
import { exceedsProviderBase64Limit, getMaxFrames, wasFramesCapped, } from '../services/providerRouter.js';
|
|
7
7
|
import { logProgress } from '../utils/logger.js';
|
|
8
8
|
import { proNotice } from '../utils/license.js';
|
|
9
9
|
import { isCachingEnabled, buildFrameSubdir, getCachedFrames, registerCachedFrames, getCachedProviderFileId, registerProviderFileId, } from '../utils/artifactCache.js';
|
|
10
|
+
import { stat as fsStat } from 'fs/promises';
|
|
10
11
|
import { isRemoteUrl, normalizeVideoPath } from '../utils/videoUtils.js';
|
|
11
12
|
import { runWithProviderFallback, } from './orchestrator.js';
|
|
12
13
|
const LONG_VIDEO_THRESHOLD_SEC = 5 * 60;
|
|
@@ -24,7 +25,7 @@ function buildSummaryPrompt() {
|
|
|
24
25
|
* Trim trailing frames until the total base64 payload fits within maxBytes.
|
|
25
26
|
* Always keeps at least 1 frame. Returns the number of frames removed.
|
|
26
27
|
*/
|
|
27
|
-
function trimFramesToFitSize(frames, maxBytes) {
|
|
28
|
+
export function trimFramesToFitSize(frames, maxBytes) {
|
|
28
29
|
let totalBytes = frames.reduce((sum, f) => sum + f.data.length, 0);
|
|
29
30
|
let removed = 0;
|
|
30
31
|
while (frames.length > 1 && totalBytes > maxBytes) {
|
|
@@ -228,6 +229,15 @@ export const summarizeVideoTool = async (params) => {
|
|
|
228
229
|
await loadLongVideoFrames(ctx, videoId);
|
|
229
230
|
return summarizeLongVideo(ctx);
|
|
230
231
|
}
|
|
232
|
+
// Short video that is still too large to base64-encode: fall back to frames
|
|
233
|
+
if (ctx.provider === 'glm' || ctx.provider === 'qwen') {
|
|
234
|
+
const stat = await fsStat(ctx.localPath);
|
|
235
|
+
if (exceedsProviderBase64Limit(stat.size, ctx.provider)) {
|
|
236
|
+
await logProgress('Short video exceeds base64 limit, extracting keyframes...');
|
|
237
|
+
await loadLongVideoFrames(ctx, videoId);
|
|
238
|
+
return summarizeLongVideo(ctx);
|
|
239
|
+
}
|
|
240
|
+
}
|
|
231
241
|
return summarizeShortVideo(ctx);
|
|
232
242
|
},
|
|
233
243
|
extraNotices(s) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"summarizeVideo.js","sourceRoot":"","sources":["../../src/tools/summarizeVideo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7E,OAAO,
|
|
1
|
+
{"version":3,"file":"summarizeVideo.js","sourceRoot":"","sources":["../../src/tools/summarizeVideo.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAA;AAC7E,OAAO,EACL,0BAA0B,EAC1B,YAAY,EACZ,eAAe,GAChB,MAAM,+BAA+B,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAA;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAA;AAC/C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,GACvB,MAAM,2BAA2B,CAAA;AAClC,OAAO,EAAE,IAAI,IAAI,MAAM,EAAE,MAAM,aAAa,CAAA;AAC5C,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAA;AACxE,OAAO,EACL,uBAAuB,GAExB,MAAM,mBAAmB,CAAA;AAM1B,MAAM,wBAAwB,GAAG,CAAC,GAAG,EAAE,CAAA;AAEvC,SAAS,kBAAkB;IACzB,OAAO;QACL,6CAA6C;QAC7C,qCAAqC;QACrC,aAAa;QACb,eAAe;QACf,2CAA2C;QAC3C,oBAAoB;KACrB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB,CACjC,MAA4C,EAC5C,QAAgB;IAEhB,IAAI,UAAU,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAA;IAClE,IAAI,OAAO,GAAG,CAAC,CAAA;IACf,OAAO,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,UAAU,GAAG,QAAQ,EAAE,CAAC;QAClD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,EAAG,CAAA;QAC7B,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC,MAAM,CAAA;QACjC,OAAO,EAAE,CAAA;IACX,CAAC;IACD,OAAO,OAAO,CAAA;AAChB,CAAC;AAQD,KAAK,UAAU,mBAAmB,CAChC,GAA4C,EAC5C,MAAc;IAEd,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,YAAY,CAAA;IAC7C,IAAI,CAAC,YAAY,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IACnE,CAAC;IAED,MAAM,UAAU,GAAG,uBAAuB,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAA;IACjE,IAAI,QAAQ,GAAG,UAAU;QACvB,CAAC,CAAC,MAAM,YAAY,CAAC,eAAe,CAAC,UAAU,CAAC;QAChD,CAAC,CAAC,IAAI,CAAA;IACR,IAAI,QAAQ,EAAE,CAAC;QACb,MAAM,WAAW,CAAC,+BAA+B,CAAC,CAAA;IACpD,CAAC;SAAM,CAAC;QACN,MAAM,WAAW,CAAC,wBAAwB,CAAC,CAAA;QAC3C,QAAQ,GAAG,MAAM,YAAY,CAAC,WAAW,CACvC,GAAG,CAAC,SAAU,EACd,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAU,CAAC,CACrC,CAAA;QACD,MAAM,WAAW,CAAC,wCAAwC,CAAC,CAAA;QAC3D,MAAM,YAAY,CAAC,qBAAqB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACvD,IAAI,QAAQ,CAAC,IAAI,EAAE,CAAC;YAClB,sBAAsB,CAAC,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC9D,CAAC;IACH,CAAC;IACD,MAAM,WAAW,CAAC,sBAAsB,CAAC,CAAA;IACzC,OAAO,EAAE,IAAI,EAAE,MAAM,YAAY,CAAC,YAAY,CAAC,QAAQ,EAAE,MAAM,CAAC,EAAE,CAAA;AACpE,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,GAA4C;IAE5C,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAA;QACvC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;QAC9D,CAAC;QAED,MAAM,WAAW,CAAC,6BAA6B,CAAC,CAAA;QAChD,OAAO;YACL,IAAI,EAAE,MAAM,SAAS,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,WAAW,CAAC;SAC1E,CAAA;IACH,CAAC;IAED,OAAO;IACP,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAA;IACzC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;IACpE,CAAC;IAED,MAAM,WAAW,CAAC,6BAA6B,CAAC,CAAA;IAChD,OAAO;QACL,IAAI,EAAE,MAAM,UAAU,CAAC,eAAe,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,WAAW,CAAC;KAC3E,CAAA;AACH,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,MAAuB,EACvB,SAAiB;IAEjB,IAAI,MAAM,CAAC,WAAW,KAAK,IAAI,EAAE,CAAC;QAChC,OAAM;IACR,CAAC;IAED,MAAM,IAAI,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAA;IAC9C,MAAM,CAAC,WAAW,GAAG,IAAI,CAAC,QAAQ,GAAG,wBAAwB,CAAA;AAC/D,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,GAA4C,EAC5C,OAAe;IAEf,MAAM,MAAM,GAAG,GAAG,CAAC,MAAM,CAAA;IACzB,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;QAC3B,OAAM;IACR,CAAC;IAED,MAAM,cAAc,GAClB,GAAG,CAAC,QAAQ,KAAK,KAAK;QACpB,CAAC,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI;QAClB,CAAC,CAAC,GAAG,CAAC,QAAQ,KAAK,MAAM;YACvB,CAAC,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI;YAClB,CAAC,CAAC,EAAE,GAAG,IAAI,GAAG,IAAI,CAAA;IACxB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,cAAc,GAAG,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAA;IACtE,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,EAAE,aAAa,CAAC,CAAA;IAC/D,MAAM,WAAW,GAAG,gBAAgB,CAAC,MAAM,EAAE,EAAE,KAAK,EAAE,eAAe,EAAE,CAAC,CAAA;IACxE,MAAM,SAAS,GAAG,MAAM,2BAA2B,CACjD,GAAG,CAAC,SAAU,EACd,OAAO,EACP,WAAW,EACX,eAAe,CAChB,CAAA;IAED,MAAM,CAAC,eAAe,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAClD,IAAI,EAAE,GAAG,CAAC,oBAAoB,CAAC,MAAM,CAAC;QACtC,QAAQ,EAAE,YAAY;KACvB,CAAC,CAAC,CAAA;IACH,MAAM,CAAC,gBAAgB,GAAG,mBAAmB,CAC3C,MAAM,CAAC,eAAe,EACtB,cAAc,CACf,CAAA;IAED,IAAI,MAAM,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;QAChC,MAAM,WAAW,CACf,uBAAuB,MAAM,CAAC,gBAAgB,wCAAwC,CACvF,CAAA;IACH,CAAC;AACH,CAAC;AAED,KAAK,UAAU,2BAA2B,CACxC,SAAiB,EACjB,OAAe,EACf,WAAmB,EACnB,eAAuB;IAEvB,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACvB,MAAM,YAAY,GAAG,MAAM,eAAe,CAAC,OAAO,EAAE,WAAW,CAAC,CAAA;QAChE,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,WAAW,CACf,SAAS,YAAY,CAAC,OAAO,CAAC,MAAM,wBAAwB,CAC7D,CAAA;YACD,OAAO,YAAY,CAAC,OAAO,CAAA;QAC7B,CAAC;IACH,CAAC;IAED,MAAM,WAAW,CAAC,yBAAyB,CAAC,CAAA;IAC5C,MAAM,SAAS,GAAG,MAAM,mBAAmB,CAAC,SAAS,EAAE,eAAe,CAAC,CAAA;IACvE,IAAI,gBAAgB,EAAE,EAAE,CAAC;QACvB,MAAM,oBAAoB,CAAC,OAAO,EAAE,WAAW,EAAE,SAAS,CAAC,CAAA;IAC7D,CAAC;IAED,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,GAA4C;IAE5C,MAAM,WAAW,CAAC,sBAAsB,CAAC,CAAA;IAEzC,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAA;QACvC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;QAC9D,CAAC;QAED,OAAO;YACL,IAAI,EAAE,MAAM,SAAS,CAAC,aAAa,CACjC,GAAG,CAAC,MAAM,CAAC,eAAgB,EAC3B,GAAG,CAAC,WAAW,CAChB;SACF,CAAA;IACH,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAA;QACzC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;QACpE,CAAC;QAED,OAAO;YACL,IAAI,EAAE,MAAM,UAAU,CAAC,aAAa,CAClC,GAAG,CAAC,MAAM,CAAC,eAAgB,EAC3B,GAAG,CAAC,WAAW,CAChB;SACF,CAAA;IACH,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAA;IACzC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IACnE,CAAC;IAED,OAAO;QACL,IAAI,EAAE,MAAM,UAAU,CAAC,aAAa,CAClC,GAAG,CAAC,MAAM,CAAC,eAAgB,EAC3B,GAAG,CAAC,WAAW,CAChB;KACF,CAAA;AACH,CAAC;AAED,KAAK,UAAU,mBAAmB,CAChC,GAA4C;IAE5C,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,GAAG,CAAC,OAAO,CAAC,SAAS,CAAA;QACvC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAA;QAC9D,CAAC;QAED,MAAM,WAAW,CAAC,sBAAsB,CAAC,CAAA;QACzC,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAU,CAAC,CAAA;QACzD,OAAO;YACL,IAAI,EAAE,MAAM,SAAS,CAAC,kBAAkB,CACtC,GAAG,CAAC,oBAAoB,CAAC,WAAW,CAAC,EACrC,GAAG,CAAC,WAAW,EACf,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAU,CAAC,CACrC;SACF,CAAA;IACH,CAAC;IAED,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAA;QACzC,IAAI,CAAC,UAAU,EAAE,CAAC;YAChB,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAA;QACpE,CAAC;QAED,MAAM,WAAW,CAAC,sBAAsB,CAAC,CAAA;QACzC,MAAM,WAAW,GAAG,MAAM,GAAG,CAAC,EAAE,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAU,CAAC,CAAA;QACzD,OAAO;YACL,IAAI,EAAE,MAAM,UAAU,CAAC,kBAAkB,CACvC,GAAG,CAAC,oBAAoB,CAAC,WAAW,CAAC,EACrC,GAAG,CAAC,WAAW,EACf,GAAG,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAU,CAAC,CACrC;SACF,CAAA;IACH,CAAC;IAED,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,CAAA;IACzC,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IACnE,CAAC;IAED,MAAM,YAAY,GAAG,uBAAuB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,CAAC,CAAA;IACjE,IAAI,UAAkB,CAAA;IACtB,IAAI,YAAY,EAAE,CAAC;QACjB,MAAM,WAAW,CAAC,6BAA6B,CAAC,CAAA;QAChD,UAAU,GAAG,YAAY,CAAA;IAC3B,CAAC;SAAM,CAAC;QACN,MAAM,WAAW,CAAC,sBAAsB,CAAC,CAAA;QACzC,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,WAAW,CAC/C,GAAG,CAAC,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,SAAU,CAAC,CACxC,CAAA;QACD,UAAU,GAAG,YAAY,CAAC,EAAE,CAAA;QAC5B,sBAAsB,CAAC,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,UAAU,CAAC,CAAA;IACzD,CAAC;IACD,MAAM,WAAW,CAAC,sBAAsB,CAAC,CAAA;IACzC,OAAO;QACL,IAAI,EAAE,MAAM,UAAU,CAAC,YAAY,CAAC,UAAU,EAAE,GAAG,CAAC,WAAW,CAAC;KACjE,CAAA;AACH,CAAC;AAED,MAAM,CAAC,MAAM,kBAAkB,GAAG,KAAK,EACrC,MAA4B,EACH,EAAE;IAC3B,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CAAA;IAC5B,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAA;IAEnC,kFAAkF;IAClF,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC;QACpC,CAAC,CAAC,SAAS;QACX,CAAC,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAA;IAEjC,MAAM,MAAM,GAAoB;QAC9B,WAAW,EAAE,IAAI;QACjB,eAAe,EAAE,IAAI;QACrB,gBAAgB,EAAE,CAAC;KACpB,CAAA;IAED,OAAO,uBAAuB,CAAC;QAC7B,QAAQ,EAAE,aAAa;QACvB,SAAS;QACT,aAAa,EAAE,MAAM,CAAC,QAAQ;QAC9B,UAAU,EAAE,MAAM;QAClB,gBAAgB,EAAE,IAAI;QACtB,aAAa,EAAE,UAAU;QACzB,WAAW,EAAE,MAAM;QAEnB,KAAK,CAAC,OAAO,CAAC,GAAG;YACf,IAAI,GAAG,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;gBAC9B,OAAO,mBAAmB,CAAC,GAAG,EAAE,MAAM,CAAC,CAAA;YACzC,CAAC;YAED,IAAI,GAAG,CAAC,WAAW,EAAE,CAAC;gBACpB,OAAO,wBAAwB,CAAC,GAAG,CAAC,CAAA;YACtC,CAAC;YAED,MAAM,oBAAoB,CAAC,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,SAAU,CAAC,CAAA;YACtD,IAAI,GAAG,CAAC,MAAM,CAAC,WAAW,EAAE,CAAC;gBAC3B,MAAM,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;gBACvC,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAA;YAChC,CAAC;YAED,4EAA4E;YAC5E,IAAI,GAAG,CAAC,QAAQ,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,KAAK,MAAM,EAAE,CAAC;gBACtD,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,SAAU,CAAC,CAAA;gBACzC,IAAI,0BAA0B,CAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACxD,MAAM,WAAW,CACf,2DAA2D,CAC5D,CAAA;oBACD,MAAM,mBAAmB,CAAC,GAAG,EAAE,OAAO,CAAC,CAAA;oBACvC,OAAO,kBAAkB,CAAC,GAAG,CAAC,CAAA;gBAChC,CAAC;YACH,CAAC;YAED,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAA;QACjC,CAAC;QAED,YAAY,CAAC,CAAC;YACZ,MAAM,OAAO,GAAa,EAAE,CAAA;YAC5B,IAAI,eAAe,EAAE,EAAE,CAAC;gBACtB,OAAO,CAAC,IAAI,CACV,SAAS,CAAC,oDAAoD,CAAC,CAChE,CAAA;YACH,CAAC;YACD,IAAI,CAAC,CAAC,gBAAgB,GAAG,CAAC,EAAE,CAAC;gBAC3B,OAAO,CAAC,IAAI,CACV,SAAS,CAAC,CAAC,gBAAgB,4EAA4E,CACxG,CAAA;YACH,CAAC;YACD,OAAO,OAAO,CAAA;QAChB,CAAC;KACF,CAAC,CAAA;AACJ,CAAC,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "video-context-mcp-server",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.47.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",
|