@bedolla/enrivision 0.1.2 → 0.1.4
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 +3 -3
- package/dist/client/EnriProxyClient.d.ts +21 -0
- package/dist/client/EnriProxyClient.d.ts.map +1 -1
- package/dist/client/EnriProxyClient.js +13 -0
- package/dist/client/EnriProxyClient.js.map +1 -1
- package/dist/server/EnriVisionServer.d.ts.map +1 -1
- package/dist/server/EnriVisionServer.js +32 -4
- package/dist/server/EnriVisionServer.js.map +1 -1
- package/dist/shared/mediaUrlFetcher.d.ts +119 -0
- package/dist/shared/mediaUrlFetcher.d.ts.map +1 -0
- package/dist/shared/mediaUrlFetcher.js +269 -0
- package/dist/shared/mediaUrlFetcher.js.map +1 -0
- package/dist/tools/AnalyzeMediaTool.d.ts +75 -7
- package/dist/tools/AnalyzeMediaTool.d.ts.map +1 -1
- package/dist/tools/AnalyzeMediaTool.js +157 -67
- package/dist/tools/AnalyzeMediaTool.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -121,15 +121,15 @@ General notes:
|
|
|
121
121
|
|
|
122
122
|
- The tool accepts a single JSON object as its input (the MCP `arguments`).
|
|
123
123
|
- Exactly one of `path` or `paths` is required.
|
|
124
|
-
- Paths must be absolute on the machine running the MCP server.
|
|
124
|
+
- Paths must be absolute on the machine running the MCP server, or http(s) URLs. URLs are downloaded to a temporary directory on the MCP host (up to 64 MiB each; localhost and private-network destinations are blocked) and deleted after analysis.
|
|
125
125
|
- EnriVision does not accept per-call `server_url`/`api_key` overrides (these are configured via env vars).
|
|
126
126
|
|
|
127
127
|
### `analyze_media`
|
|
128
128
|
|
|
129
129
|
Inputs:
|
|
130
130
|
|
|
131
|
-
- `path` (`string`, optional): absolute local file path.
|
|
132
|
-
- `paths` (`string[]`, optional): absolute local image paths (useful for UI screenshot sets).
|
|
131
|
+
- `path` (`string`, optional): absolute local file path, or one http(s) URL to download and analyze (up to 64 MiB).
|
|
132
|
+
- `paths` (`string[]`, optional): absolute local image paths or http(s) image URLs (useful for UI screenshot sets).
|
|
133
133
|
- `context` (`string`, optional): high-level hint (examples: `ui`, `diagram`, `chart`, `error`, `code`, `meeting`, `tutorial`, `photo`).
|
|
134
134
|
- `question` (`string`, optional): what you want to extract/answer.
|
|
135
135
|
- `language` (`string`, optional): preferred response language (ISO 639-1; e.g., `es`, `en`). If omitted, uses `ENRIVISION_DEFAULT_LANGUAGE` when set.
|
|
@@ -51,6 +51,18 @@ export interface AnalyzeVisionResponse {
|
|
|
51
51
|
* Text analysis.
|
|
52
52
|
*/
|
|
53
53
|
readonly analysis: string;
|
|
54
|
+
/**
|
|
55
|
+
* Grounded element boxes for image analyses (original-relative [0,1]).
|
|
56
|
+
*/
|
|
57
|
+
readonly elements?: ReadonlyArray<{
|
|
58
|
+
readonly label: string;
|
|
59
|
+
readonly box: {
|
|
60
|
+
readonly x: number;
|
|
61
|
+
readonly y: number;
|
|
62
|
+
readonly width: number;
|
|
63
|
+
readonly height: number;
|
|
64
|
+
};
|
|
65
|
+
}>;
|
|
54
66
|
/**
|
|
55
67
|
* Detected media type.
|
|
56
68
|
*/
|
|
@@ -202,6 +214,15 @@ export declare class EnriProxyClient {
|
|
|
202
214
|
* Optional analysis mode selector.
|
|
203
215
|
*/
|
|
204
216
|
readonly analysisMode?: "auto" | "single" | "multipass";
|
|
217
|
+
/**
|
|
218
|
+
* Optional relative image region for native-resolution zoom (images only).
|
|
219
|
+
*/
|
|
220
|
+
readonly region?: {
|
|
221
|
+
readonly x: number;
|
|
222
|
+
readonly y: number;
|
|
223
|
+
readonly width: number;
|
|
224
|
+
readonly height: number;
|
|
225
|
+
};
|
|
205
226
|
/**
|
|
206
227
|
* Optional video multipass tuning.
|
|
207
228
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnriProxyClient.d.ts","sourceRoot":"","sources":["../../src/client/EnriProxyClient.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"EnriProxyClient.d.ts","sourceRoot":"","sources":["../../src/client/EnriProxyClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -168,6 +168,19 @@ export class EnriProxyClient {
|
|
|
168
168
|
if (typeof params.analysisMode === "string" && params.analysisMode.trim()) {
|
|
169
169
|
payload["analysis_mode"] = params.analysisMode.trim();
|
|
170
170
|
}
|
|
171
|
+
if (typeof params.region === "object" &&
|
|
172
|
+
params.region !== null &&
|
|
173
|
+
Number.isFinite(params.region.x) &&
|
|
174
|
+
Number.isFinite(params.region.y) &&
|
|
175
|
+
Number.isFinite(params.region.width) &&
|
|
176
|
+
Number.isFinite(params.region.height)) {
|
|
177
|
+
payload["region"] = {
|
|
178
|
+
x: params.region.x,
|
|
179
|
+
y: params.region.y,
|
|
180
|
+
width: params.region.width,
|
|
181
|
+
height: params.region.height
|
|
182
|
+
};
|
|
183
|
+
}
|
|
171
184
|
if (params.video && typeof params.video === "object") {
|
|
172
185
|
const videoPayload = {};
|
|
173
186
|
if (typeof params.video.clipStartSeconds === "number" && Number.isFinite(params.video.clipStartSeconds)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnriProxyClient.js","sourceRoot":"","sources":["../../src/client/EnriProxyClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"EnriProxyClient.js","sourceRoot":"","sources":["../../src/client/EnriProxyClient.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,YAAY,CAAC;AACrD,OAAO,EAAE,GAAG,EAAE,MAAM,UAAU,CAAC;AAsE/B;;GAEG;AACH,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAC3C;;OAEG;IACa,MAAM,CAAS;IAE/B;;OAEG;IACa,OAAO,CAAgD;IAEvE;;OAEG;IACa,IAAI,CAAS;IAE7B;;;;;;;OAOG;IACH,YACE,OAAe,EACf,MAAc,EACd,OAAsD,EACtD,IAAY;QAEZ,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;QACjC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QACvB,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;IACnB,CAAC;CACF;AAsBD;;GAEG;AACH,MAAM,OAAO,eAAe;IAC1B;;OAEG;IACc,OAAO,CAAS;IAEjC;;OAEG;IACc,MAAM,CAAS;IAEhC;;OAEG;IACc,SAAS,CAAS;IAEnC;;;;OAIG;IACH,YAAmB,MAA6B;QAC9C,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAClD,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;QAC5B,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;IACpC,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,mBAAmB,CAAC,MAoBhC;QACC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG;YACd,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,UAAU,EAAE,MAAM,CAAC,SAAS;YAC5B,YAAY,EAAE,MAAM,CAAC,WAAW;YAChC,eAAe,EAAE,MAAM,CAAC,aAAa;SACtC,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5E,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YAChD,MAAM,IAAI,kBAAkB,CAC1B,kDAAkD,MAAM,CAAC,MAAM,IAAI,EACnE,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,IAAI,CACZ,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAgC,CAAC;QACtE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,eAAe,CAAC,QAAgB;QAC3C,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QACzE,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QACxF,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YAChD,MAAM,IAAI,kBAAkB,CAC1B,gDAAgD,MAAM,CAAC,MAAM,IAAI,EACjE,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,IAAI,CACZ,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAC1E,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACjD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,iCAAiC,YAAY,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,iBAAiB,CAAC,MAoB9B;QACC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,eAAe,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;QAChF,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,SAAS,CAAC;QAErD,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,iCAAiC;YACjD,eAAe,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;YACtC,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC;SAC9C,CAAC;QAEF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACrF,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YAChD,MAAM,IAAI,kBAAkB,CAC1B,uCAAuC,MAAM,CAAC,MAAM,IAAI,EACxD,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,IAAI,CACZ,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,CAAC,MAAM,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAC1E,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;QACtE,CAAC;QAED,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACpD,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,IAAI,SAAS,GAAG,CAAC,EAAE,CAAC;YACjD,MAAM,IAAI,KAAK,CAAC,iCAAiC,YAAY,EAAE,CAAC,CAAC;QACnE,CAAC;QAED,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;OAKG;IACI,KAAK,CAAC,OAAO,CAAC,MAiJpB;QACC,MAAM,GAAG,GAAG,IAAI,CAAC,QAAQ,CAAC,oBAAoB,CAAC,CAAC;QAChD,MAAM,OAAO,GAA4B;YACvC,SAAS,EAAE,MAAM,CAAC,QAAQ;SAC3B,CAAC;QAEF,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,QAAQ,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE;YAAE,OAAO,CAAC,SAAS,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;QAC5G,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;YAAE,OAAO,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChH,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE;YAAE,OAAO,CAAC,UAAU,CAAC,GAAG,MAAM,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QAChH,IAAI,OAAO,MAAM,CAAC,SAAS,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC;YAAE,OAAO,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,SAAS,CAAC;QACxH,IAAI,OAAO,MAAM,CAAC,UAAU,KAAK,SAAS;YAAE,OAAO,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,UAAU,CAAC;QACtF,IAAI,OAAO,MAAM,CAAC,qBAAqB,KAAK,QAAQ,IAAI,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,EAAE,CAAC;YAC5F,OAAO,CAAC,wBAAwB,CAAC,GAAG,MAAM,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;QAC1E,CAAC;QAED,IAAI,OAAO,MAAM,CAAC,YAAY,KAAK,QAAQ,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,EAAE,CAAC;YAC1E,OAAO,CAAC,eAAe,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC;QACxD,CAAC;QACD,IACE,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;YACjC,MAAM,CAAC,MAAM,KAAK,IAAI;YACtB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAChC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;YAChC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC;YACpC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,EACrC,CAAC;YACD,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAClB,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBAClB,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBAClB,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC,KAAK;gBAC1B,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM;aAC7B,CAAC;QACJ,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrD,MAAM,YAAY,GAA4B,EAAE,CAAC;YACjD,IAAI,OAAO,MAAM,CAAC,KAAK,CAAC,gBAAgB,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBACxG,YAAY,CAAC,oBAAoB,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;YAClF,CAAC;YACD,IACE,OAAO,MAAM,CAAC,KAAK,CAAC,mBAAmB,KAAK,QAAQ;gBACpD,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC;gBACjD,MAAM,CAAC,KAAK,CAAC,mBAAmB,GAAG,CAAC,EACpC,CAAC;gBACD,YAAY,CAAC,uBAAuB,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC;YAC3E,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,KAAK,CAAC,cAAc,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;gBACpG,YAAY,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;YAChE,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC9F,YAAY,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACtE,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,KAAK,CAAC,mBAAmB,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,EAAE,CAAC;gBAC9G,YAAY,CAAC,wBAAwB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;YACxF,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzC,OAAO,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC;YAClC,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,QAAQ,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ,EAAE,CAAC;YAC3D,MAAM,eAAe,GAA4B,EAAE,CAAC;YACpD,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,aAAa,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;gBACxG,eAAe,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YACjF,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,aAAa,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;gBACxG,eAAe,CAAC,iBAAiB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YACjF,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,QAAQ,CAAC,iBAAiB,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAChH,eAAe,CAAC,sBAAsB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,iBAAiB,CAAC,CAAC;YAC1F,CAAC;YACD,IACE,OAAO,MAAM,CAAC,QAAQ,CAAC,yBAAyB,KAAK,QAAQ;gBAC7D,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAC,EAC1D,CAAC;gBACD,eAAe,CAAC,8BAA8B,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,QAAQ,CAAC,yBAAyB,CAAC,CAAC;YAC1G,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC5C,OAAO,CAAC,UAAU,CAAC,GAAG,eAAe,CAAC;YACxC,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,KAAK,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YACrD,MAAM,YAAY,GAA4B,EAAE,CAAC;YACjD,IAAI,OAAO,MAAM,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBACjD,YAAY,CAAC,YAAY,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC;YACvD,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,KAAK,CAAC,cAAc,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;gBACpG,YAAY,CAAC,iBAAiB,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC;YAChE,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,KAAK,CAAC,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC9F,YAAY,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YACtE,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACzC,OAAO,CAAC,OAAO,CAAC,GAAG,YAAY,CAAC;YAClC,CAAC;QACH,CAAC;QAED,IAAI,MAAM,CAAC,MAAM,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;YACvD,MAAM,aAAa,GAA4B,EAAE,CAAC;YAClD,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,cAAc,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;gBACtG,aAAa,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAC/E,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,cAAc,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,EAAE,CAAC;gBACtG,aAAa,CAAC,kBAAkB,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAC/E,CAAC;YACD,IAAI,OAAO,MAAM,CAAC,MAAM,CAAC,YAAY,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,EAAE,CAAC;gBAClG,aAAa,CAAC,eAAe,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;YAC1E,CAAC;YACD,IAAI,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAC1C,OAAO,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC;YACpC,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,CAAC;QAC5E,IAAI,MAAM,CAAC,MAAM,GAAG,GAAG,IAAI,MAAM,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;YAChD,MAAM,IAAI,kBAAkB,CAC1B,qCAAqC,MAAM,CAAC,MAAM,IAAI,EACtD,MAAM,CAAC,MAAM,EACb,MAAM,CAAC,OAAO,EACd,MAAM,CAAC,IAAI,CACZ,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAA0B,CAAC;QAChE,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;;;;OAKG;IACK,QAAQ,CAAC,QAAgB;QAC/B,OAAO,IAAI,GAAG,CAAC,QAAQ,EAAE,IAAI,CAAC,OAAO,CAAC,CAAC;IACzC,CAAC;IAED;;;;;;OAMG;IACK,cAAc,CACpB,OAAsD,EACtD,IAAY;QAEZ,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QAClC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;YACnD,IAAI,GAAG,CAAC,WAAW,EAAE,KAAK,MAAM,EAAE,CAAC;gBACjC,SAAS;YACX,CAAC;YACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACzB,OAAO,KAAK,CAAC,CAAC,CAAC,CAAC;YAClB,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAED;;;;;;;;OAQG;IACK,KAAK,CAAC,WAAW,CACvB,MAAsB,EACtB,GAAQ,EACR,QAAiC,EACjC,SAAiB;QAEjB,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;QACtC,MAAM,OAAO,GAA2B;YACtC,cAAc,EAAE,kBAAkB;YAClC,gBAAgB,EAAE,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;SAClD,CAAC;QACF,OAAO,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,SAAS,CAAC,CAAC;IAC3F,CAAC;IAED;;;;;;;;;OASG;IACK,KAAK,CAAC,UAAU,CACtB,MAAyC,EACzC,GAAQ,EACR,OAA2C,EAC3C,IAAwB,EACxB,SAAiB;QAEjB,MAAM,OAAO,GAAG,GAAG,CAAC,QAAQ,KAAK,QAAQ,CAAC;QAC1C,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;QAEnD,MAAM,cAAc,GAA2B;YAC7C,aAAa,EAAE,UAAU,IAAI,CAAC,MAAM,EAAE;YACtC,GAAG,CAAC,OAAO,IAAI,EAAE,CAAC;SACnB,CAAC;QAEF,OAAO,MAAM,IAAI,OAAO,CAAa,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;YACvD,MAAM,GAAG,GAAG,KAAK,CACf,GAAG,EACH;gBACE,MAAM;gBACN,OAAO,EAAE,cAAc;aACxB,EACD,CAAC,GAAG,EAAE,EAAE;gBACN,MAAM,MAAM,GAAa,EAAE,CAAC;gBAC5B,IAAI,QAAQ,GAAG,CAAC,CAAC;gBACjB,MAAM,gBAAgB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,iBAAiB;gBAE5D,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;oBAC/B,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC;oBACzB,IAAI,QAAQ,GAAG,gBAAgB,EAAE,CAAC;wBAChC,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC,CAAC;wBAC3E,OAAO;oBACT,CAAC;oBACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBACrB,CAAC,CAAC,CAAC;gBAEH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;oBACjB,OAAO,CAAC;wBACN,MAAM,EAAE,GAAG,CAAC,UAAU,IAAI,CAAC;wBAC3B,OAAO,EAAE,GAAG,CAAC,OAAwD;wBACrE,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC;qBAC7C,CAAC,CAAC;gBACL,CAAC,CAAC,CAAC;YACL,CAAC,CACF,CAAC;YAEF,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YAE1C,GAAG,CAAC,UAAU,CAAC,SAAS,EAAE,GAAG,EAAE;gBAC7B,GAAG,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,iCAAiC,SAAS,IAAI,CAAC,CAAC,CAAC;YACzE,CAAC,CAAC,CAAC;YAEH,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;gBACjD,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAClB,CAAC;YACD,GAAG,CAAC,GAAG,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnriVisionServer.d.ts","sourceRoot":"","sources":["../../src/server/EnriVisionServer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAQ/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;CAC7C;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IAEpD;;;;OAIG;gBACgB,MAAM,EAAE,sBAAsB;IAiBjD;;;;OAIG;IACU,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD;;OAEG;IACH,OAAO,CAAC,oBAAoB;
|
|
1
|
+
{"version":3,"file":"EnriVisionServer.d.ts","sourceRoot":"","sources":["../../src/server/EnriVisionServer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+CAA+C,CAAC;AAQ/E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAErE;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC;;OAEG;IACH,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IAEzB;;OAEG;IACH,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;CAC7C;AAED;;GAEG;AACH,qBAAa,gBAAgB;IAC3B;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAEhC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IAEpD;;;;OAIG;gBACgB,MAAM,EAAE,sBAAsB;IAiBjD;;;;OAIG;IACU,OAAO,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzD;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAiD5B;;;;OAIG;IACH,OAAO,CAAC,6BAA6B;CAiMtC"}
|
|
@@ -68,7 +68,12 @@ export class EnriVisionServer {
|
|
|
68
68
|
content: [
|
|
69
69
|
{
|
|
70
70
|
type: "text",
|
|
71
|
-
text: `
|
|
71
|
+
text: `ANALISIS (${result.media_type}):\n${result.analysis}` +
|
|
72
|
+
(Array.isArray(result.elements) && result.elements.length > 0
|
|
73
|
+
? `\n\nelements (cajas relativas a la imagen original, reutilizables como 'region' para zoom):\n${result.elements
|
|
74
|
+
.map((element) => `- ${element.label} [${element.box.x}, ${element.box.y}, ${element.box.width}, ${element.box.height}]`)
|
|
75
|
+
.join("\n")}`
|
|
76
|
+
: "")
|
|
72
77
|
}
|
|
73
78
|
],
|
|
74
79
|
structuredContent: result
|
|
@@ -104,7 +109,7 @@ export class EnriVisionServer {
|
|
|
104
109
|
"\n" +
|
|
105
110
|
"Reglas:\n" +
|
|
106
111
|
"- Use `path` para un archivo, o `paths` para varias imágenes (capturas de UI/sets de fotos).\n" +
|
|
107
|
-
"- `path`/`paths`
|
|
112
|
+
"- `path`/`paths` aceptan rutas absolutas en la máquina donde corre este servidor MCP (el cliente), o URLs http(s) que se descargan temporalmente en esa misma máquina (hasta 64 MiB; no se permiten hosts locales ni redes privadas).\n" +
|
|
108
113
|
"- Requiere una API key válida de EnriProxy (env `ENRIPROXY_API_KEY`, enviada como Authorization: Bearer ...).\n" +
|
|
109
114
|
"- Prefiera el Read nativo del cliente sólo para texto/PDF/imágenes comunes pequeños y simples cuando funcione; prefiera esta herramienta para PDFs grandes.\n" +
|
|
110
115
|
"- Responda estrictamente con la salida de la herramienta; si faltan fotogramas/transcripción, dígalo.\n" +
|
|
@@ -124,11 +129,11 @@ export class EnriVisionServer {
|
|
|
124
129
|
properties: {
|
|
125
130
|
path: {
|
|
126
131
|
type: "string",
|
|
127
|
-
description: "Ruta absoluta a un archivo local en la máquina donde corre el servidor MCP (por ejemplo, C:\\\\Users\\\\User\\\\Downloads\\\\video.mp4)."
|
|
132
|
+
description: "Ruta absoluta a un archivo local en la máquina donde corre el servidor MCP (por ejemplo, C:\\\\Users\\\\User\\\\Downloads\\\\video.mp4), o una URL http(s) de imagen/video/audio/PDF para descargar y analizar (hasta 64 MiB; hosts locales y redes privadas bloqueados)."
|
|
128
133
|
},
|
|
129
134
|
paths: {
|
|
130
135
|
type: "array",
|
|
131
|
-
description: "Rutas absolutas a varios archivos de imagen locales (capturas de UI/sets de fotos). Cuando se proporcionan, EnriVision sube un único archivo de conjunto para procesamiento por lotes y reducción del lado servidor.",
|
|
136
|
+
description: "Rutas absolutas a varios archivos de imagen locales o URLs http(s) (capturas de UI/sets de fotos; cada URL hasta 64 MiB). Cuando se proporcionan, EnriVision sube un único archivo de conjunto para procesamiento por lotes y reducción del lado servidor.",
|
|
132
137
|
items: {
|
|
133
138
|
type: "string"
|
|
134
139
|
}
|
|
@@ -162,6 +167,29 @@ export class EnriVisionServer {
|
|
|
162
167
|
enum: ["auto", "single", "multipass"],
|
|
163
168
|
description: "Selector opcional de modo de análisis: auto, single o multipass."
|
|
164
169
|
},
|
|
170
|
+
region: {
|
|
171
|
+
type: "object",
|
|
172
|
+
description: "Región relativa de la IMAGEN original para analizar a resolución nativa (zoom). Coordenadas entre 0 y 1; (0,0) es la esquina superior izquierda. Use las cajas devueltas en 'elements' de un análisis previo de la misma imagen: NUNCA invente coordenadas. Ideal para leer texto pequeño (labels, código) que en la imagen completa comprimida resulta ilegible. Sólo imágenes (path, no paths).",
|
|
173
|
+
properties: {
|
|
174
|
+
x: {
|
|
175
|
+
type: "number",
|
|
176
|
+
description: "Coordenada horizontal relativa de la esquina superior izquierda (0 = borde izquierdo)."
|
|
177
|
+
},
|
|
178
|
+
y: {
|
|
179
|
+
type: "number",
|
|
180
|
+
description: "Coordenada vertical relativa de la esquina superior izquierda (0 = borde superior)."
|
|
181
|
+
},
|
|
182
|
+
width: {
|
|
183
|
+
type: "number",
|
|
184
|
+
description: "Ancho relativo (1 = ancho completo)."
|
|
185
|
+
},
|
|
186
|
+
height: {
|
|
187
|
+
type: "number",
|
|
188
|
+
description: "Alto relativo (1 = alto completo)."
|
|
189
|
+
}
|
|
190
|
+
},
|
|
191
|
+
required: ["x", "y", "width", "height"]
|
|
192
|
+
},
|
|
165
193
|
video: {
|
|
166
194
|
type: "object",
|
|
167
195
|
description: "Ajuste opcional de multipass para video. Se usa sólo al analizar videos.",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EnriVisionServer.js","sourceRoot":"","sources":["../../src/server/EnriVisionServer.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,MAAM,EAAE,MAAM,2CAA2C,CAAC;AAEnE,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EAGvB,MAAM,oCAAoC,CAAC;AAwB5C;;GAEG;AACH,MAAM,OAAO,gBAAgB;IAC3B;;OAEG;IACc,MAAM,CAAS;IAEhC;;OAEG;IACc,gBAAgB,CAAmB;IAEpD;;;;OAIG;IACH,YAAmB,MAA8B;QAC/C,IAAI,CAAC,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,CAAC;QAEhD,IAAI,CAAC,MAAM,GAAG,IAAI,MAAM,CACtB,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,EAC9C;YACE,YAAY,EAAE;gBACZ,KAAK,EAAE;oBACL,WAAW,EAAE,KAAK;iBACnB;aACF;SACF,CACF,CAAC;QAEF,IAAI,CAAC,oBAAoB,EAAE,CAAC;IAC9B,CAAC;IAED;;;;OAIG;IACI,KAAK,CAAC,OAAO,CAAC,SAAoB;QACvC,MAAM,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACvC,CAAC;IAED;;OAEG;IACK,oBAAoB;QAC1B,MAAM,sBAAsB,GAAG,IAAI,CAAC,6BAA6B,EAAE,CAAC;QAEpE,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,sBAAsB,EAAE,KAAK,IAAI,EAAE;YAC/D,OAAO,EAAE,KAAK,EAAE,CAAC,sBAAsB,CAAC,EAAE,CAAC;QAC7C,CAAC,CAAC,CAAC;QAEH,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,qBAAqB,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE;YACrE,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,KAAK,eAAe,EAAE,CAAC;gBAC5C,OAAO;oBACL,OAAO,EAAE,IAAI;oBACb,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,4BAA4B,OAAO,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;iBAC5D,CAAC;YAC7B,CAAC;YAED,IAAI,CAAC;gBACH,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,SAAS,IAAI,EAAE,CAAC;gBAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;gBACvD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAE3D,OAAO;oBACL,OAAO,EAAE,KAAK;oBACd,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,
|
|
1
|
+
{"version":3,"file":"EnriVisionServer.js","sourceRoot":"","sources":["../../src/server/EnriVisionServer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BOUNDED MEDIA URL FETCHER
|
|
3
|
+
*
|
|
4
|
+
* Downloads one http(s) media resource into a temporary directory so the
|
|
5
|
+
* upload pipeline can treat it like any local file.
|
|
6
|
+
*
|
|
7
|
+
* Protections: 64 MiB size cap, 60 s timeout, SSRF guard (literal private
|
|
8
|
+
* addresses rejected, DNS-resolved addresses rejected, per-hop validation of
|
|
9
|
+
* up to 3 redirects), and an owned cleanup callback.
|
|
10
|
+
*
|
|
11
|
+
* @module shared/mediaUrlFetcher
|
|
12
|
+
*/
|
|
13
|
+
/**
|
|
14
|
+
* Result of one bounded media URL fetch.
|
|
15
|
+
*/
|
|
16
|
+
export interface MediaUrlFetchResult {
|
|
17
|
+
/**
|
|
18
|
+
* Absolute local path holding the downloaded bytes.
|
|
19
|
+
*/
|
|
20
|
+
readonly localPath: string;
|
|
21
|
+
/**
|
|
22
|
+
* Content type reported by the server, without parameters (empty when absent).
|
|
23
|
+
*/
|
|
24
|
+
readonly contentType: string;
|
|
25
|
+
/**
|
|
26
|
+
* Removes the owned temporary directory.
|
|
27
|
+
*/
|
|
28
|
+
cleanup(): Promise<void>;
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Resolves hostnames to addresses for SSRF validation.
|
|
32
|
+
*/
|
|
33
|
+
export type HostAddressResolver = (hostname: string) => Promise<readonly string[]>;
|
|
34
|
+
/**
|
|
35
|
+
* Downloads bounded http(s) media into a temporary directory.
|
|
36
|
+
*/
|
|
37
|
+
export declare class MediaUrlFetcher {
|
|
38
|
+
/**
|
|
39
|
+
* Maximum accepted download size in bytes.
|
|
40
|
+
*/
|
|
41
|
+
private static readonly MAX_BYTES;
|
|
42
|
+
/**
|
|
43
|
+
* Download timeout in milliseconds.
|
|
44
|
+
*/
|
|
45
|
+
private static readonly TIMEOUT_MS;
|
|
46
|
+
/**
|
|
47
|
+
* Maximum followed redirects (each hop re-validated).
|
|
48
|
+
*/
|
|
49
|
+
private static readonly MAX_REDIRECTS;
|
|
50
|
+
/**
|
|
51
|
+
* Fetch implementation (injectable for tests).
|
|
52
|
+
*/
|
|
53
|
+
private readonly fetchImpl;
|
|
54
|
+
/**
|
|
55
|
+
* Host address resolver (injectable for tests).
|
|
56
|
+
*/
|
|
57
|
+
private readonly resolveHostAddresses;
|
|
58
|
+
/**
|
|
59
|
+
* Creates one media URL fetcher.
|
|
60
|
+
*
|
|
61
|
+
* @param fetchImpl - Optional fetch override for tests.
|
|
62
|
+
* @param resolveHostAddresses - Optional DNS resolver override for tests.
|
|
63
|
+
*/
|
|
64
|
+
constructor(fetchImpl?: typeof fetch, resolveHostAddresses?: HostAddressResolver);
|
|
65
|
+
/**
|
|
66
|
+
* Reports whether one input looks like an accepted http(s) URL.
|
|
67
|
+
*
|
|
68
|
+
* @param value - Raw path argument.
|
|
69
|
+
* @returns True for http/https URLs.
|
|
70
|
+
*/
|
|
71
|
+
static isHttpUrl(value: string): boolean;
|
|
72
|
+
/**
|
|
73
|
+
* Downloads one http(s) URL into a temporary directory.
|
|
74
|
+
*
|
|
75
|
+
* @param url - Absolute http(s) URL.
|
|
76
|
+
* @returns Bounded fetch result with owned cleanup.
|
|
77
|
+
* @throws Error when the destination is blocked, too large, or the download fails.
|
|
78
|
+
*/
|
|
79
|
+
fetch(url: string): Promise<MediaUrlFetchResult>;
|
|
80
|
+
/**
|
|
81
|
+
* Performs one fetch request after validating the destination addresses.
|
|
82
|
+
*
|
|
83
|
+
* @param url - Candidate URL (already normalized).
|
|
84
|
+
* @param timeoutSignal - Timeout signal shared by every hop.
|
|
85
|
+
* @returns Fetch response.
|
|
86
|
+
* @throws Error when the hostname resolves to a blocked address or the request fails.
|
|
87
|
+
*/
|
|
88
|
+
private requestValidated;
|
|
89
|
+
/**
|
|
90
|
+
* Validates that the URL hostname is not a private/loopback/link-local target.
|
|
91
|
+
*
|
|
92
|
+
* @param url - Candidate URL.
|
|
93
|
+
* @throws Error when a literal or resolved address is blocked.
|
|
94
|
+
*/
|
|
95
|
+
private assertPublicDestination;
|
|
96
|
+
/**
|
|
97
|
+
* Rejects private, loopback, link-local, and unspecified addresses.
|
|
98
|
+
*
|
|
99
|
+
* @param address - Literal IP address.
|
|
100
|
+
* @throws Error when the address belongs to a blocked range.
|
|
101
|
+
*/
|
|
102
|
+
private assertPublicAddress;
|
|
103
|
+
/**
|
|
104
|
+
* Derives one safe file name for the downloaded media.
|
|
105
|
+
*
|
|
106
|
+
* @param url - Source URL.
|
|
107
|
+
* @param contentType - Reported content type.
|
|
108
|
+
* @returns Bounded file name with a recognized extension.
|
|
109
|
+
*/
|
|
110
|
+
private deriveFileName;
|
|
111
|
+
/**
|
|
112
|
+
* Resolves one default extension for a content type.
|
|
113
|
+
*
|
|
114
|
+
* @param contentType - Reported content type.
|
|
115
|
+
* @returns Extension with leading dot.
|
|
116
|
+
*/
|
|
117
|
+
private extensionForContentType;
|
|
118
|
+
}
|
|
119
|
+
//# sourceMappingURL=mediaUrlFetcher.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mediaUrlFetcher.d.ts","sourceRoot":"","sources":["../../src/shared/mediaUrlFetcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAQH;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC;;OAEG;IACH,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAE3B;;OAEG;IACH,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAE7B;;OAEG;IACH,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,MAAM,mBAAmB,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;AA2BnF;;GAEG;AACH,qBAAa,eAAe;IAC1B;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAoB;IAErD;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,UAAU,CAAU;IAE5C;;OAEG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,aAAa,CAAK;IAE1C;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAe;IAEzC;;OAEG;IACH,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAsB;IAE3D;;;;;OAKG;gBACgB,SAAS,CAAC,EAAE,OAAO,KAAK,EAAE,oBAAoB,CAAC,EAAE,mBAAmB;IAUvF;;;;;OAKG;WACW,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI/C;;;;;;OAMG;IACU,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAiE7D;;;;;;;OAOG;YACW,gBAAgB;IAW9B;;;;;OAKG;YACW,uBAAuB;IAkBrC;;;;;OAKG;IACH,OAAO,CAAC,mBAAmB;IAwC3B;;;;;;OAMG;IACH,OAAO,CAAC,cAAc;IAWtB;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;CAQhC"}
|
|
@@ -0,0 +1,269 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BOUNDED MEDIA URL FETCHER
|
|
3
|
+
*
|
|
4
|
+
* Downloads one http(s) media resource into a temporary directory so the
|
|
5
|
+
* upload pipeline can treat it like any local file.
|
|
6
|
+
*
|
|
7
|
+
* Protections: 64 MiB size cap, 60 s timeout, SSRF guard (literal private
|
|
8
|
+
* addresses rejected, DNS-resolved addresses rejected, per-hop validation of
|
|
9
|
+
* up to 3 redirects), and an owned cleanup callback.
|
|
10
|
+
*
|
|
11
|
+
* @module shared/mediaUrlFetcher
|
|
12
|
+
*/
|
|
13
|
+
import { isIP } from "node:net";
|
|
14
|
+
import { lookup as dnsLookup } from "node:dns/promises";
|
|
15
|
+
import { mkdtemp, rm, writeFile } from "node:fs/promises";
|
|
16
|
+
import { tmpdir } from "node:os";
|
|
17
|
+
import { join } from "node:path";
|
|
18
|
+
/**
|
|
19
|
+
* Immutable media URL fetch result record.
|
|
20
|
+
*/
|
|
21
|
+
class MediaUrlFetchResultRecord {
|
|
22
|
+
localPath;
|
|
23
|
+
contentType;
|
|
24
|
+
cleanupCallback;
|
|
25
|
+
/**
|
|
26
|
+
* Creates one fetch result.
|
|
27
|
+
*
|
|
28
|
+
* @param localPath - Downloaded file path.
|
|
29
|
+
* @param contentType - Reported content type.
|
|
30
|
+
* @param cleanupCallback - Owned cleanup callback.
|
|
31
|
+
*/
|
|
32
|
+
constructor(localPath, contentType, cleanupCallback) {
|
|
33
|
+
this.localPath = localPath;
|
|
34
|
+
this.contentType = contentType;
|
|
35
|
+
this.cleanupCallback = cleanupCallback;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* @inheritdoc
|
|
39
|
+
*/
|
|
40
|
+
async cleanup() {
|
|
41
|
+
await this.cleanupCallback();
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Downloads bounded http(s) media into a temporary directory.
|
|
46
|
+
*/
|
|
47
|
+
export class MediaUrlFetcher {
|
|
48
|
+
/**
|
|
49
|
+
* Maximum accepted download size in bytes.
|
|
50
|
+
*/
|
|
51
|
+
static MAX_BYTES = 64 * 1024 * 1024;
|
|
52
|
+
/**
|
|
53
|
+
* Download timeout in milliseconds.
|
|
54
|
+
*/
|
|
55
|
+
static TIMEOUT_MS = 60_000;
|
|
56
|
+
/**
|
|
57
|
+
* Maximum followed redirects (each hop re-validated).
|
|
58
|
+
*/
|
|
59
|
+
static MAX_REDIRECTS = 3;
|
|
60
|
+
/**
|
|
61
|
+
* Fetch implementation (injectable for tests).
|
|
62
|
+
*/
|
|
63
|
+
fetchImpl;
|
|
64
|
+
/**
|
|
65
|
+
* Host address resolver (injectable for tests).
|
|
66
|
+
*/
|
|
67
|
+
resolveHostAddresses;
|
|
68
|
+
/**
|
|
69
|
+
* Creates one media URL fetcher.
|
|
70
|
+
*
|
|
71
|
+
* @param fetchImpl - Optional fetch override for tests.
|
|
72
|
+
* @param resolveHostAddresses - Optional DNS resolver override for tests.
|
|
73
|
+
*/
|
|
74
|
+
constructor(fetchImpl, resolveHostAddresses) {
|
|
75
|
+
this.fetchImpl = fetchImpl ?? fetch;
|
|
76
|
+
this.resolveHostAddresses =
|
|
77
|
+
resolveHostAddresses ??
|
|
78
|
+
(async (hostname) => {
|
|
79
|
+
const results = await dnsLookup(hostname, { all: true });
|
|
80
|
+
return results.map((result) => result.address);
|
|
81
|
+
});
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Reports whether one input looks like an accepted http(s) URL.
|
|
85
|
+
*
|
|
86
|
+
* @param value - Raw path argument.
|
|
87
|
+
* @returns True for http/https URLs.
|
|
88
|
+
*/
|
|
89
|
+
static isHttpUrl(value) {
|
|
90
|
+
return /^https?:\/\//iu.test(String(value ?? "").trim());
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Downloads one http(s) URL into a temporary directory.
|
|
94
|
+
*
|
|
95
|
+
* @param url - Absolute http(s) URL.
|
|
96
|
+
* @returns Bounded fetch result with owned cleanup.
|
|
97
|
+
* @throws Error when the destination is blocked, too large, or the download fails.
|
|
98
|
+
*/
|
|
99
|
+
async fetch(url) {
|
|
100
|
+
let currentUrl = String(url ?? "").trim();
|
|
101
|
+
if (!MediaUrlFetcher.isHttpUrl(currentUrl)) {
|
|
102
|
+
throw new Error("Sólo se aceptan URLs http(s) en path/paths.");
|
|
103
|
+
}
|
|
104
|
+
const timeoutSignal = AbortSignal.timeout(MediaUrlFetcher.TIMEOUT_MS);
|
|
105
|
+
let response = await this.requestValidated(currentUrl, timeoutSignal);
|
|
106
|
+
for (let redirectCount = 0; redirectCount < MediaUrlFetcher.MAX_REDIRECTS; redirectCount += 1) {
|
|
107
|
+
if (response.status < 301 || response.status > 308) {
|
|
108
|
+
break;
|
|
109
|
+
}
|
|
110
|
+
const location = response.headers.get("location");
|
|
111
|
+
if (!location) {
|
|
112
|
+
break;
|
|
113
|
+
}
|
|
114
|
+
currentUrl = new URL(location, currentUrl).toString();
|
|
115
|
+
if (!MediaUrlFetcher.isHttpUrl(currentUrl)) {
|
|
116
|
+
throw new Error("La redirección apunta fuera de http(s).");
|
|
117
|
+
}
|
|
118
|
+
response = await this.requestValidated(currentUrl, timeoutSignal);
|
|
119
|
+
}
|
|
120
|
+
if (!response.ok) {
|
|
121
|
+
throw new Error(`La URL respondió HTTP ${String(response.status)}.`);
|
|
122
|
+
}
|
|
123
|
+
const declaredLengthHeader = response.headers.get("content-length");
|
|
124
|
+
if (declaredLengthHeader !== null &&
|
|
125
|
+
Number(declaredLengthHeader) > MediaUrlFetcher.MAX_BYTES) {
|
|
126
|
+
throw new Error(`El archivo remoto excede el límite de 64 MiB.`);
|
|
127
|
+
}
|
|
128
|
+
const buffer = await response.arrayBuffer();
|
|
129
|
+
if (buffer.byteLength > MediaUrlFetcher.MAX_BYTES) {
|
|
130
|
+
throw new Error(`El archivo remoto excede el límite de 64 MiB.`);
|
|
131
|
+
}
|
|
132
|
+
const contentType = (response.headers.get("content-type") ?? "")
|
|
133
|
+
.split(";", 1)[0]
|
|
134
|
+
.trim()
|
|
135
|
+
.toLowerCase();
|
|
136
|
+
const temporaryDirectory = await mkdtemp(join(tmpdir(), "enrivision-url-"));
|
|
137
|
+
const localPath = join(temporaryDirectory, this.deriveFileName(currentUrl, contentType));
|
|
138
|
+
try {
|
|
139
|
+
await writeFile(localPath, Buffer.from(buffer));
|
|
140
|
+
}
|
|
141
|
+
catch (error) {
|
|
142
|
+
await rm(temporaryDirectory, { recursive: true, force: true });
|
|
143
|
+
throw new Error(`No se pudo guardar la media descargada: ${error instanceof Error ? error.message : String(error)}`);
|
|
144
|
+
}
|
|
145
|
+
return new MediaUrlFetchResultRecord(localPath, contentType, async () => {
|
|
146
|
+
await rm(temporaryDirectory, { recursive: true, force: true });
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Performs one fetch request after validating the destination addresses.
|
|
151
|
+
*
|
|
152
|
+
* @param url - Candidate URL (already normalized).
|
|
153
|
+
* @param timeoutSignal - Timeout signal shared by every hop.
|
|
154
|
+
* @returns Fetch response.
|
|
155
|
+
* @throws Error when the hostname resolves to a blocked address or the request fails.
|
|
156
|
+
*/
|
|
157
|
+
async requestValidated(url, timeoutSignal) {
|
|
158
|
+
await this.assertPublicDestination(url);
|
|
159
|
+
try {
|
|
160
|
+
return await this.fetchImpl(url, { signal: timeoutSignal, redirect: "manual" });
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
throw new Error(`La descarga de media falló: ${error instanceof Error ? error.message : String(error)}`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Validates that the URL hostname is not a private/loopback/link-local target.
|
|
168
|
+
*
|
|
169
|
+
* @param url - Candidate URL.
|
|
170
|
+
* @throws Error when a literal or resolved address is blocked.
|
|
171
|
+
*/
|
|
172
|
+
async assertPublicDestination(url) {
|
|
173
|
+
const hostname = new URL(url).hostname.replace(/^\[|\]$/gu, "");
|
|
174
|
+
if (hostname === "localhost") {
|
|
175
|
+
throw new Error("Destino bloqueado: no se permiten hosts locales ni redes privadas.");
|
|
176
|
+
}
|
|
177
|
+
if (isIP(hostname) !== 0) {
|
|
178
|
+
this.assertPublicAddress(hostname);
|
|
179
|
+
return;
|
|
180
|
+
}
|
|
181
|
+
const addresses = await this.resolveHostAddresses(hostname);
|
|
182
|
+
if (addresses.length === 0) {
|
|
183
|
+
throw new Error("No se pudo resolver el host antes de descargar la media.");
|
|
184
|
+
}
|
|
185
|
+
for (const address of addresses) {
|
|
186
|
+
this.assertPublicAddress(address);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Rejects private, loopback, link-local, and unspecified addresses.
|
|
191
|
+
*
|
|
192
|
+
* @param address - Literal IP address.
|
|
193
|
+
* @throws Error when the address belongs to a blocked range.
|
|
194
|
+
*/
|
|
195
|
+
assertPublicAddress(address) {
|
|
196
|
+
const version = isIP(address);
|
|
197
|
+
if (version === 4) {
|
|
198
|
+
const octets = address.split(".").map((part) => Number(part));
|
|
199
|
+
const [first = 0, second = 0] = octets;
|
|
200
|
+
const blocked = first === 0 ||
|
|
201
|
+
first === 10 ||
|
|
202
|
+
first === 127 ||
|
|
203
|
+
(first === 169 && second === 254) ||
|
|
204
|
+
(first === 172 && second >= 16 && second <= 31) ||
|
|
205
|
+
(first === 192 && second === 168) ||
|
|
206
|
+
first >= 224;
|
|
207
|
+
if (blocked) {
|
|
208
|
+
throw new Error("Destino bloqueado: no se permiten hosts locales ni redes privadas.");
|
|
209
|
+
}
|
|
210
|
+
return;
|
|
211
|
+
}
|
|
212
|
+
if (version === 6) {
|
|
213
|
+
const normalized = address.toLowerCase();
|
|
214
|
+
const blocked = normalized === "::" ||
|
|
215
|
+
normalized === "::1" ||
|
|
216
|
+
normalized.startsWith("fc") ||
|
|
217
|
+
normalized.startsWith("fd") ||
|
|
218
|
+
normalized.startsWith("fe8") ||
|
|
219
|
+
normalized.startsWith("fe9") ||
|
|
220
|
+
normalized.startsWith("fea") ||
|
|
221
|
+
normalized.startsWith("feb");
|
|
222
|
+
const mappedV4 = /^::ffff:(\d+\.\d+\.\d+\.\d+)$/u.exec(normalized)?.[1] ?? null;
|
|
223
|
+
if (mappedV4 !== null) {
|
|
224
|
+
this.assertPublicAddress(mappedV4);
|
|
225
|
+
return;
|
|
226
|
+
}
|
|
227
|
+
if (blocked) {
|
|
228
|
+
throw new Error("Destino bloqueado: no se permiten hosts locales ni redes privadas.");
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
/**
|
|
233
|
+
* Derives one safe file name for the downloaded media.
|
|
234
|
+
*
|
|
235
|
+
* @param url - Source URL.
|
|
236
|
+
* @param contentType - Reported content type.
|
|
237
|
+
* @returns Bounded file name with a recognized extension.
|
|
238
|
+
*/
|
|
239
|
+
deriveFileName(url, contentType) {
|
|
240
|
+
const withoutQuery = url.split("?")[0] ?? url;
|
|
241
|
+
const baseName = withoutQuery.split("/").pop() ?? "media";
|
|
242
|
+
const sanitized = baseName.replace(/[^A-Za-z0-9._-]/gu, "").slice(0, 80);
|
|
243
|
+
if (sanitized.length > 0 && /\.[A-Za-z0-9]{2,5}$/u.test(sanitized)) {
|
|
244
|
+
return sanitized;
|
|
245
|
+
}
|
|
246
|
+
const extension = this.extensionForContentType(contentType);
|
|
247
|
+
return `${sanitized.length > 0 ? sanitized : "media"}${extension}`;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Resolves one default extension for a content type.
|
|
251
|
+
*
|
|
252
|
+
* @param contentType - Reported content type.
|
|
253
|
+
* @returns Extension with leading dot.
|
|
254
|
+
*/
|
|
255
|
+
extensionForContentType(contentType) {
|
|
256
|
+
if (contentType.startsWith("image/"))
|
|
257
|
+
return ".png";
|
|
258
|
+
if (contentType.startsWith("video/"))
|
|
259
|
+
return ".mp4";
|
|
260
|
+
if (contentType.startsWith("audio/"))
|
|
261
|
+
return ".mp3";
|
|
262
|
+
if (contentType.includes("pdf"))
|
|
263
|
+
return ".pdf";
|
|
264
|
+
if (contentType.includes("tar"))
|
|
265
|
+
return ".tar";
|
|
266
|
+
return ".bin";
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
//# sourceMappingURL=mediaUrlFetcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mediaUrlFetcher.js","sourceRoot":"","sources":["../../src/shared/mediaUrlFetcher.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AAChC,OAAO,EAAE,MAAM,IAAI,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AACjC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AA2BjC;;GAEG;AACH,MAAM,yBAAyB;IASX;IACA;IACC;IAVnB;;;;;;OAMG;IACH,YACkB,SAAiB,EACjB,WAAmB,EAClB,eAAoC;QAFrC,cAAS,GAAT,SAAS,CAAQ;QACjB,gBAAW,GAAX,WAAW,CAAQ;QAClB,oBAAe,GAAf,eAAe,CAAqB;IACpD,CAAC;IAEJ;;OAEG;IACI,KAAK,CAAC,OAAO;QAClB,MAAM,IAAI,CAAC,eAAe,EAAE,CAAC;IAC/B,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,eAAe;IAC1B;;OAEG;IACK,MAAM,CAAU,SAAS,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;IAErD;;OAEG;IACK,MAAM,CAAU,UAAU,GAAG,MAAM,CAAC;IAE5C;;OAEG;IACK,MAAM,CAAU,aAAa,GAAG,CAAC,CAAC;IAE1C;;OAEG;IACc,SAAS,CAAe;IAEzC;;OAEG;IACc,oBAAoB,CAAsB;IAE3D;;;;;OAKG;IACH,YAAmB,SAAwB,EAAE,oBAA0C;QACrF,IAAI,CAAC,SAAS,GAAG,SAAS,IAAI,KAAK,CAAC;QACpC,IAAI,CAAC,oBAAoB;YACvB,oBAAoB;gBACpB,CAAC,KAAK,EAAE,QAAgB,EAA8B,EAAE;oBACtD,MAAM,OAAO,GAA+B,MAAM,SAAS,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC;oBACrF,OAAO,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;gBACjD,CAAC,CAAC,CAAC;IACP,CAAC;IAED;;;;;OAKG;IACI,MAAM,CAAC,SAAS,CAAC,KAAa;QACnC,OAAO,gBAAgB,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IAED;;;;;;OAMG;IACI,KAAK,CAAC,KAAK,CAAC,GAAW;QAC5B,IAAI,UAAU,GAAW,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAClD,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3C,MAAM,IAAI,KAAK,CAAC,6CAA6C,CAAC,CAAC;QACjE,CAAC;QAED,MAAM,aAAa,GAAgB,WAAW,CAAC,OAAO,CAAC,eAAe,CAAC,UAAU,CAAC,CAAC;QACnF,IAAI,QAAQ,GAAa,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QAEhF,KAAK,IAAI,aAAa,GAAG,CAAC,EAAE,aAAa,GAAG,eAAe,CAAC,aAAa,EAAE,aAAa,IAAI,CAAC,EAAE,CAAC;YAC9F,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,IAAI,QAAQ,CAAC,MAAM,GAAG,GAAG,EAAE,CAAC;gBACnD,MAAM;YACR,CAAC;YACD,MAAM,QAAQ,GAAkB,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;YACjE,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACd,MAAM;YACR,CAAC;YACD,UAAU,GAAG,IAAI,GAAG,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,QAAQ,EAAE,CAAC;YACtD,IAAI,CAAC,eAAe,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;gBAC3C,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;YAC7D,CAAC;YACD,QAAQ,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,EAAE,aAAa,CAAC,CAAC;QACpE,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CAAC,yBAAyB,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QACvE,CAAC;QAED,MAAM,oBAAoB,GAAkB,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;QACnF,IACE,oBAAoB,KAAK,IAAI;YAC7B,MAAM,CAAC,oBAAoB,CAAC,GAAG,eAAe,CAAC,SAAS,EACxD,CAAC;YACD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,MAAM,GAAgB,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;QACzD,IAAI,MAAM,CAAC,UAAU,GAAG,eAAe,CAAC,SAAS,EAAE,CAAC;YAClD,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;QACnE,CAAC;QAED,MAAM,WAAW,GAAW,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;aACrE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAE;aACjB,IAAI,EAAE;aACN,WAAW,EAAE,CAAC;QACjB,MAAM,kBAAkB,GAAW,MAAM,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC,CAAC;QACpF,MAAM,SAAS,GAAW,IAAI,CAC5B,kBAAkB,EAClB,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,WAAW,CAAC,CAC7C,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,EAAE,CAAC,kBAAkB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;YAC/D,MAAM,IAAI,KAAK,CACb,2CAA2C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACpG,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,yBAAyB,CAAC,SAAS,EAAE,WAAW,EAAE,KAAK,IAAmB,EAAE;YACrF,MAAM,EAAE,CAAC,kBAAkB,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACjE,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;OAOG;IACK,KAAK,CAAC,gBAAgB,CAAC,GAAW,EAAE,aAA0B;QACpE,MAAM,IAAI,CAAC,uBAAuB,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClF,CAAC;QAAC,OAAO,KAAc,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CACb,+BAA+B,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CACxF,CAAC;QACJ,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,KAAK,CAAC,uBAAuB,CAAC,GAAW;QAC/C,MAAM,QAAQ,GAAW,IAAI,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QACxE,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;YAC7B,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;QACxF,CAAC;QACD,IAAI,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;YACnC,OAAO;QACT,CAAC;QACD,MAAM,SAAS,GAAsB,MAAM,IAAI,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QAC/E,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAC;QAC9E,CAAC;QACD,KAAK,MAAM,OAAO,IAAI,SAAS,EAAE,CAAC;YAChC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC;QACpC,CAAC;IACH,CAAC;IAED;;;;;OAKG;IACK,mBAAmB,CAAC,OAAe;QACzC,MAAM,OAAO,GAAW,IAAI,CAAC,OAAO,CAAC,CAAC;QACtC,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;YAClB,MAAM,MAAM,GAAsB,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;YACjF,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,MAAM,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC;YACvC,MAAM,OAAO,GACX,KAAK,KAAK,CAAC;gBACX,KAAK,KAAK,EAAE;gBACZ,KAAK,KAAK,GAAG;gBACb,CAAC,KAAK,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,CAAC;gBACjC,CAAC,KAAK,KAAK,GAAG,IAAI,MAAM,IAAI,EAAE,IAAI,MAAM,IAAI,EAAE,CAAC;gBAC/C,CAAC,KAAK,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,CAAC;gBACjC,KAAK,IAAI,GAAG,CAAC;YACf,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;YACxF,CAAC;YACD,OAAO;QACT,CAAC;QACD,IAAI,OAAO,KAAK,CAAC,EAAE,CAAC;YAClB,MAAM,UAAU,GAAW,OAAO,CAAC,WAAW,EAAE,CAAC;YACjD,MAAM,OAAO,GACX,UAAU,KAAK,IAAI;gBACnB,UAAU,KAAK,KAAK;gBACpB,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;gBAC3B,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC;gBAC3B,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC;gBAC5B,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC;gBAC5B,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC;gBAC5B,UAAU,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;YAC/B,MAAM,QAAQ,GAAkB,gCAAgC,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;YAC/F,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;gBACtB,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;gBACnC,OAAO;YACT,CAAC;YACD,IAAI,OAAO,EAAE,CAAC;gBACZ,MAAM,IAAI,KAAK,CAAC,oEAAoE,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACK,cAAc,CAAC,GAAW,EAAE,WAAmB;QACrD,MAAM,YAAY,GAAW,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;QACtD,MAAM,QAAQ,GAAW,YAAY,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,IAAI,OAAO,CAAC;QAClE,MAAM,SAAS,GAAW,QAAQ,CAAC,OAAO,CAAC,mBAAmB,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACjF,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,IAAI,sBAAsB,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;YACnE,OAAO,SAAS,CAAC;QACnB,CAAC;QACD,MAAM,SAAS,GAAW,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;QACpE,OAAO,GAAG,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,GAAG,SAAS,EAAE,CAAC;IACrE,CAAC;IAED;;;;;OAKG;IACK,uBAAuB,CAAC,WAAmB;QACjD,IAAI,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,MAAM,CAAC;QACpD,IAAI,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,MAAM,CAAC;QACpD,IAAI,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC;YAAE,OAAO,MAAM,CAAC;QACpD,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QAC/C,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,OAAO,MAAM,CAAC;QAC/C,OAAO,MAAM,CAAC;IAChB,CAAC"}
|
|
@@ -2,26 +2,29 @@
|
|
|
2
2
|
* ANALYZE MEDIA TOOL
|
|
3
3
|
*
|
|
4
4
|
* Implements the `analyze_media` MCP tool:
|
|
5
|
-
* - Validates local file
|
|
6
|
-
* -
|
|
5
|
+
* - Validates local file paths or http(s) URLs
|
|
6
|
+
* - Materializes URL inputs via bounded downloads (temporary, owned cleanup)
|
|
7
|
+
* - Streams the bytes to EnriProxy via resumable uploads
|
|
7
8
|
* - Triggers server-side analysis and returns text-only results
|
|
8
9
|
*
|
|
9
10
|
* @module tools/AnalyzeMediaTool
|
|
10
11
|
*/
|
|
11
12
|
import { type EnriProxyClient } from "../client/EnriProxyClient.js";
|
|
13
|
+
import { MediaUrlFetcher } from "../shared/mediaUrlFetcher.js";
|
|
12
14
|
/**
|
|
13
15
|
* Tool parameters for `analyze_media`.
|
|
14
16
|
*/
|
|
15
17
|
export interface AnalyzeMediaToolParams {
|
|
16
18
|
/**
|
|
17
|
-
* Absolute local filesystem path on the MCP host
|
|
19
|
+
* Absolute local filesystem path on the MCP host, or one http(s) URL to
|
|
20
|
+
* download (bounded, temporary) and analyze.
|
|
18
21
|
*
|
|
19
22
|
* @remarks
|
|
20
23
|
* Use `paths` to analyze multiple images in a single call.
|
|
21
24
|
*/
|
|
22
25
|
readonly path?: string;
|
|
23
26
|
/**
|
|
24
|
-
* Absolute local filesystem paths on the MCP host.
|
|
27
|
+
* Absolute local filesystem paths or http(s) URLs on the MCP host.
|
|
25
28
|
*
|
|
26
29
|
* @remarks
|
|
27
30
|
* When provided, EnriVision uploads the files as a single media-set archive
|
|
@@ -148,6 +151,38 @@ export interface AnalyzeMediaToolParams {
|
|
|
148
151
|
*/
|
|
149
152
|
readonly maxDimension?: number;
|
|
150
153
|
};
|
|
154
|
+
/**
|
|
155
|
+
* Optional relative region of the analyzed image for native-resolution zoom.
|
|
156
|
+
*
|
|
157
|
+
* @remarks
|
|
158
|
+
* Normalized [0,1] coordinates over the original image (0,0 = top-left
|
|
159
|
+
* corner). Use the boxes returned in `elements` of a previous analysis of
|
|
160
|
+
* the same image; never invent coordinates.
|
|
161
|
+
*/
|
|
162
|
+
readonly region?: {
|
|
163
|
+
readonly x: number;
|
|
164
|
+
readonly y: number;
|
|
165
|
+
readonly width: number;
|
|
166
|
+
readonly height: number;
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* One grounded element box returned by an image analysis.
|
|
171
|
+
*/
|
|
172
|
+
export interface AnalyzeMediaElementBox {
|
|
173
|
+
/**
|
|
174
|
+
* Short label naming the grounded element.
|
|
175
|
+
*/
|
|
176
|
+
readonly label: string;
|
|
177
|
+
/**
|
|
178
|
+
* Original-relative [0,1] box that can be echoed back as `region`.
|
|
179
|
+
*/
|
|
180
|
+
readonly box: {
|
|
181
|
+
readonly x: number;
|
|
182
|
+
readonly y: number;
|
|
183
|
+
readonly width: number;
|
|
184
|
+
readonly height: number;
|
|
185
|
+
};
|
|
151
186
|
}
|
|
152
187
|
/**
|
|
153
188
|
* Structured result for `analyze_media`.
|
|
@@ -157,6 +192,10 @@ export interface AnalyzeMediaToolResult extends Record<string, unknown> {
|
|
|
157
192
|
* Text analysis produced by EnriProxy.
|
|
158
193
|
*/
|
|
159
194
|
readonly analysis: string;
|
|
195
|
+
/**
|
|
196
|
+
* Grounded element boxes for image analyses (original-relative [0,1]).
|
|
197
|
+
*/
|
|
198
|
+
readonly elements?: ReadonlyArray<AnalyzeMediaElementBox>;
|
|
160
199
|
/**
|
|
161
200
|
* Detected media type.
|
|
162
201
|
*/
|
|
@@ -198,19 +237,24 @@ export interface AnalyzeMediaToolDeps {
|
|
|
198
237
|
readonly defaultTimeoutMs: number;
|
|
199
238
|
}
|
|
200
239
|
/**
|
|
201
|
-
* MCP tool that uploads and analyzes local media.
|
|
240
|
+
* MCP tool that uploads and analyzes local or http(s) URL media.
|
|
202
241
|
*/
|
|
203
242
|
export declare class AnalyzeMediaTool {
|
|
204
243
|
/**
|
|
205
244
|
* Tool dependencies.
|
|
206
245
|
*/
|
|
207
246
|
private readonly deps;
|
|
247
|
+
/**
|
|
248
|
+
* Bounded http(s) media fetcher used when `path`/`paths` carry URLs.
|
|
249
|
+
*/
|
|
250
|
+
private readonly urlFetcher;
|
|
208
251
|
/**
|
|
209
252
|
* Creates a new {@link AnalyzeMediaTool}.
|
|
210
253
|
*
|
|
211
254
|
* @param deps - Tool dependencies
|
|
255
|
+
* @param urlFetcher - Optional URL fetcher override for tests
|
|
212
256
|
*/
|
|
213
|
-
constructor(deps: AnalyzeMediaToolDeps);
|
|
257
|
+
constructor(deps: AnalyzeMediaToolDeps, urlFetcher?: MediaUrlFetcher);
|
|
214
258
|
/**
|
|
215
259
|
* Validates raw MCP tool arguments.
|
|
216
260
|
*
|
|
@@ -225,6 +269,19 @@ export declare class AnalyzeMediaTool {
|
|
|
225
269
|
* @returns Tool result
|
|
226
270
|
*/
|
|
227
271
|
execute(params: AnalyzeMediaToolParams): Promise<AnalyzeMediaToolResult>;
|
|
272
|
+
/**
|
|
273
|
+
* Resolves the upload content type for one media input.
|
|
274
|
+
*
|
|
275
|
+
* @remarks
|
|
276
|
+
* URL downloads keep their extension-derived type when the extension is
|
|
277
|
+
* recognized; otherwise the server-reported content type wins over the
|
|
278
|
+
* generic `application/octet-stream` fallback.
|
|
279
|
+
*
|
|
280
|
+
* @param localPath - Local file path (already materialized for URLs)
|
|
281
|
+
* @param urlContentType - Server-reported content type for downloaded URLs
|
|
282
|
+
* @returns Effective MIME type
|
|
283
|
+
*/
|
|
284
|
+
private resolveEffectiveContentType;
|
|
228
285
|
/**
|
|
229
286
|
* Removes internal identifiers (upload ids, routing-only values, etc.) from the
|
|
230
287
|
* extraction payload before returning it to the model.
|
|
@@ -247,6 +304,17 @@ export declare class AnalyzeMediaTool {
|
|
|
247
304
|
* @returns Plain object
|
|
248
305
|
*/
|
|
249
306
|
private asPlainObject;
|
|
307
|
+
/**
|
|
308
|
+
* Validates that a path exists and is a readable file.
|
|
309
|
+
*
|
|
310
|
+
* @param filePath - Local filesystem path
|
|
311
|
+
/**
|
|
312
|
+
* Parses and validates the optional relative image region.
|
|
313
|
+
*
|
|
314
|
+
* @param raw - Raw `region` argument.
|
|
315
|
+
* @returns Validated region, or undefined when absent.
|
|
316
|
+
*/
|
|
317
|
+
private parseRegion;
|
|
250
318
|
/**
|
|
251
319
|
* Validates that a path exists and is a readable file.
|
|
252
320
|
*
|
|
@@ -270,7 +338,7 @@ export declare class AnalyzeMediaTool {
|
|
|
270
338
|
* screenshot sets.
|
|
271
339
|
*
|
|
272
340
|
* @param client - EnriProxy client
|
|
273
|
-
* @param
|
|
341
|
+
* @param inputs - Resolved media inputs (local paths, URLs already materialized)
|
|
274
342
|
* @param timeoutMs - Request timeout per HTTP request
|
|
275
343
|
* @param clientTraceId - Client trace id for correlation
|
|
276
344
|
* @returns Upload id for the created tar session
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnalyzeMediaTool.d.ts","sourceRoot":"","sources":["../../src/tools/AnalyzeMediaTool.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"AnalyzeMediaTool.d.ts","sourceRoot":"","sources":["../../src/tools/AnalyzeMediaTool.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* ANALYZE MEDIA TOOL
|
|
3
3
|
*
|
|
4
4
|
* Implements the `analyze_media` MCP tool:
|
|
5
|
-
* - Validates local file
|
|
6
|
-
* -
|
|
5
|
+
* - Validates local file paths or http(s) URLs
|
|
6
|
+
* - Materializes URL inputs via bounded downloads (temporary, owned cleanup)
|
|
7
|
+
* - Streams the bytes to EnriProxy via resumable uploads
|
|
7
8
|
* - Triggers server-side analysis and returns text-only results
|
|
8
9
|
*
|
|
9
10
|
* @module tools/AnalyzeMediaTool
|
|
@@ -15,6 +16,7 @@ import { randomUUID } from "node:crypto";
|
|
|
15
16
|
import { lookup as mimeLookup } from "mime-types";
|
|
16
17
|
import { EnriProxyHttpError } from "../client/EnriProxyClient.js";
|
|
17
18
|
import { assertHttpUrl, assertNonEmptyString, assertObject, optionalBoolean, optionalInt, optionalNumber, optionalString } from "../shared/validation.js";
|
|
19
|
+
import { MediaUrlFetcher } from "../shared/mediaUrlFetcher.js";
|
|
18
20
|
import { computeTarSizeBytes, TarStream } from "../shared/tar.js";
|
|
19
21
|
/**
|
|
20
22
|
* Content type for EnriVision media-set archives (tar, no compression).
|
|
@@ -25,20 +27,26 @@ const ENRIVISION_MEDIA_SET_TAR_CONTENT_TYPE = "application/vnd.enrivision.media-
|
|
|
25
27
|
*/
|
|
26
28
|
const ENRIVISION_MEDIA_SET_TAR_MANIFEST_NAME = "manifest.json";
|
|
27
29
|
/**
|
|
28
|
-
* MCP tool that uploads and analyzes local media.
|
|
30
|
+
* MCP tool that uploads and analyzes local or http(s) URL media.
|
|
29
31
|
*/
|
|
30
32
|
export class AnalyzeMediaTool {
|
|
31
33
|
/**
|
|
32
34
|
* Tool dependencies.
|
|
33
35
|
*/
|
|
34
36
|
deps;
|
|
37
|
+
/**
|
|
38
|
+
* Bounded http(s) media fetcher used when `path`/`paths` carry URLs.
|
|
39
|
+
*/
|
|
40
|
+
urlFetcher;
|
|
35
41
|
/**
|
|
36
42
|
* Creates a new {@link AnalyzeMediaTool}.
|
|
37
43
|
*
|
|
38
44
|
* @param deps - Tool dependencies
|
|
45
|
+
* @param urlFetcher - Optional URL fetcher override for tests
|
|
39
46
|
*/
|
|
40
|
-
constructor(deps) {
|
|
47
|
+
constructor(deps, urlFetcher = new MediaUrlFetcher()) {
|
|
41
48
|
this.deps = deps;
|
|
49
|
+
this.urlFetcher = urlFetcher;
|
|
42
50
|
}
|
|
43
51
|
/**
|
|
44
52
|
* Validates raw MCP tool arguments.
|
|
@@ -50,8 +58,8 @@ export class AnalyzeMediaTool {
|
|
|
50
58
|
const obj = assertObject(raw, "arguments");
|
|
51
59
|
const pathRaw = typeof obj["path"] === "string" ? obj["path"].trim() : "";
|
|
52
60
|
const path = pathRaw ? pathRaw : undefined;
|
|
53
|
-
if (path && !isAbsolute(path)) {
|
|
54
|
-
throw new Error("path debe ser una ruta de archivo absoluta.");
|
|
61
|
+
if (path && !isAbsolute(path) && !MediaUrlFetcher.isHttpUrl(path)) {
|
|
62
|
+
throw new Error("path debe ser una ruta de archivo absoluta o una URL http(s).");
|
|
55
63
|
}
|
|
56
64
|
const pathsRaw = obj["paths"];
|
|
57
65
|
let paths;
|
|
@@ -65,8 +73,8 @@ export class AnalyzeMediaTool {
|
|
|
65
73
|
continue;
|
|
66
74
|
}
|
|
67
75
|
const p = item.trim();
|
|
68
|
-
if (!isAbsolute(p)) {
|
|
69
|
-
throw new Error("paths debe contener sólo rutas de archivo absolutas.");
|
|
76
|
+
if (!isAbsolute(p) && !MediaUrlFetcher.isHttpUrl(p)) {
|
|
77
|
+
throw new Error("paths debe contener sólo rutas de archivo absolutas o URLs http(s).");
|
|
70
78
|
}
|
|
71
79
|
out.push(p);
|
|
72
80
|
}
|
|
@@ -144,6 +152,7 @@ export class AnalyzeMediaTool {
|
|
|
144
152
|
transcribe,
|
|
145
153
|
transcriptionLanguage,
|
|
146
154
|
analysisMode,
|
|
155
|
+
region: this.parseRegion(obj["region"]),
|
|
147
156
|
video,
|
|
148
157
|
document,
|
|
149
158
|
audio,
|
|
@@ -162,63 +171,107 @@ export class AnalyzeMediaTool {
|
|
|
162
171
|
const timeoutMs = this.deps.defaultTimeoutMs;
|
|
163
172
|
const clientTraceId = `enrivision_${randomUUID()}`;
|
|
164
173
|
const client = this.deps.createClient(serverUrl, apiKey, timeoutMs);
|
|
165
|
-
const
|
|
174
|
+
const requestedPaths = Array.isArray(params.paths) && params.paths.length > 0
|
|
166
175
|
? [...params.paths]
|
|
167
176
|
: typeof params.path === "string" && params.path.trim()
|
|
168
177
|
? [params.path.trim()]
|
|
169
178
|
: [];
|
|
170
|
-
if (
|
|
179
|
+
if (requestedPaths.length === 0) {
|
|
171
180
|
throw new Error("Proporcione 'path' o 'paths'.");
|
|
172
181
|
}
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
182
|
+
const materialized = [];
|
|
183
|
+
try {
|
|
184
|
+
const inputs = [];
|
|
185
|
+
for (const requested of requestedPaths) {
|
|
186
|
+
if (!MediaUrlFetcher.isHttpUrl(requested)) {
|
|
187
|
+
inputs.push({ localPath: requested });
|
|
188
|
+
continue;
|
|
189
|
+
}
|
|
190
|
+
const fetched = await this.urlFetcher.fetch(requested);
|
|
191
|
+
materialized.push(fetched);
|
|
192
|
+
inputs.push({ localPath: fetched.localPath, urlContentType: fetched.contentType });
|
|
193
|
+
}
|
|
194
|
+
let uploadId;
|
|
195
|
+
if (inputs.length > 1) {
|
|
196
|
+
uploadId = await this.uploadImageSetAsMediaSetTar(client, inputs, timeoutMs, clientTraceId);
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
const single = inputs[0];
|
|
200
|
+
const fileSize = await this.assertReadableFile(single.localPath);
|
|
201
|
+
const filename = basename(single.localPath);
|
|
202
|
+
const contentType = this.resolveEffectiveContentType(single.localPath, single.urlContentType);
|
|
203
|
+
const session = await client.createUploadSession({
|
|
204
|
+
filename,
|
|
205
|
+
sizeBytes: fileSize,
|
|
206
|
+
contentType,
|
|
207
|
+
clientTraceId
|
|
208
|
+
});
|
|
209
|
+
const finalOffset = await this.uploadFileResumable(client, single.localPath, fileSize, session, timeoutMs);
|
|
210
|
+
if (finalOffset !== fileSize) {
|
|
211
|
+
throw new Error(`Subida incompleta: se enviaron ${finalOffset} de ${fileSize} bytes.`);
|
|
212
|
+
}
|
|
213
|
+
uploadId = session.upload_id;
|
|
214
|
+
}
|
|
215
|
+
const defaultLanguageRaw = typeof process.env["ENRIVISION_DEFAULT_LANGUAGE"] === "string"
|
|
216
|
+
? process.env["ENRIVISION_DEFAULT_LANGUAGE"].trim()
|
|
217
|
+
: "";
|
|
218
|
+
const language = typeof params.language === "string" && params.language.trim()
|
|
219
|
+
? params.language.trim()
|
|
220
|
+
: defaultLanguageRaw
|
|
221
|
+
? defaultLanguageRaw
|
|
222
|
+
: undefined;
|
|
223
|
+
const analysis = await client.analyze({
|
|
224
|
+
uploadId,
|
|
225
|
+
context: params.context,
|
|
226
|
+
question: params.question,
|
|
227
|
+
language,
|
|
228
|
+
maxFrames: params.maxFrames,
|
|
229
|
+
transcribe: params.transcribe,
|
|
230
|
+
transcriptionLanguage: params.transcriptionLanguage,
|
|
231
|
+
analysisMode: params.analysisMode,
|
|
232
|
+
region: params.region,
|
|
233
|
+
video: params.video,
|
|
234
|
+
document: params.document,
|
|
235
|
+
audio: params.audio,
|
|
236
|
+
images: params.images
|
|
187
237
|
});
|
|
188
|
-
const
|
|
189
|
-
|
|
190
|
-
|
|
238
|
+
const extraction = this.stripInternalExtractionFields(analysis.extraction);
|
|
239
|
+
return {
|
|
240
|
+
analysis: analysis.analysis,
|
|
241
|
+
...(Array.isArray(analysis.elements) && analysis.elements.length > 0
|
|
242
|
+
? { elements: Object.freeze(analysis.elements.map((element) => Object.freeze({ ...element }))) }
|
|
243
|
+
: {}),
|
|
244
|
+
media_type: analysis.media_type,
|
|
245
|
+
extraction
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
finally {
|
|
249
|
+
for (const fetched of materialized) {
|
|
250
|
+
await fetched.cleanup();
|
|
191
251
|
}
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
});
|
|
216
|
-
const extraction = this.stripInternalExtractionFields(analysis.extraction);
|
|
217
|
-
return {
|
|
218
|
-
analysis: analysis.analysis,
|
|
219
|
-
media_type: analysis.media_type,
|
|
220
|
-
extraction
|
|
221
|
-
};
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
/**
|
|
255
|
+
* Resolves the upload content type for one media input.
|
|
256
|
+
*
|
|
257
|
+
* @remarks
|
|
258
|
+
* URL downloads keep their extension-derived type when the extension is
|
|
259
|
+
* recognized; otherwise the server-reported content type wins over the
|
|
260
|
+
* generic `application/octet-stream` fallback.
|
|
261
|
+
*
|
|
262
|
+
* @param localPath - Local file path (already materialized for URLs)
|
|
263
|
+
* @param urlContentType - Server-reported content type for downloaded URLs
|
|
264
|
+
* @returns Effective MIME type
|
|
265
|
+
*/
|
|
266
|
+
resolveEffectiveContentType(localPath, urlContentType) {
|
|
267
|
+
const detected = this.detectMimeType(localPath);
|
|
268
|
+
if (detected !== "application/octet-stream") {
|
|
269
|
+
return detected;
|
|
270
|
+
}
|
|
271
|
+
if (urlContentType && urlContentType.trim() && urlContentType !== "application/octet-stream") {
|
|
272
|
+
return urlContentType.trim();
|
|
273
|
+
}
|
|
274
|
+
return detected;
|
|
222
275
|
}
|
|
223
276
|
/**
|
|
224
277
|
* Removes internal identifiers (upload ids, routing-only values, etc.) from the
|
|
@@ -278,6 +331,43 @@ export class AnalyzeMediaTool {
|
|
|
278
331
|
}
|
|
279
332
|
return {};
|
|
280
333
|
}
|
|
334
|
+
/**
|
|
335
|
+
* Validates that a path exists and is a readable file.
|
|
336
|
+
*
|
|
337
|
+
* @param filePath - Local filesystem path
|
|
338
|
+
/**
|
|
339
|
+
* Parses and validates the optional relative image region.
|
|
340
|
+
*
|
|
341
|
+
* @param raw - Raw `region` argument.
|
|
342
|
+
* @returns Validated region, or undefined when absent.
|
|
343
|
+
*/
|
|
344
|
+
parseRegion(raw) {
|
|
345
|
+
if (raw === undefined || raw === null) {
|
|
346
|
+
return undefined;
|
|
347
|
+
}
|
|
348
|
+
if (typeof raw !== "object" || Array.isArray(raw)) {
|
|
349
|
+
throw new Error("region debe ser un objeto {x, y, width, height} con coordenadas relativas entre 0 y 1. Nunca invente coordenadas: use las cajas devueltas en 'elements' de un análisis previo de la misma imagen.");
|
|
350
|
+
}
|
|
351
|
+
const record = raw;
|
|
352
|
+
const readFraction = (fieldName) => {
|
|
353
|
+
const value = record[fieldName];
|
|
354
|
+
const parsed = typeof value === "number" ? value : Number(value);
|
|
355
|
+
if (!Number.isFinite(parsed) || parsed < 0 || parsed > 1) {
|
|
356
|
+
throw new Error(`region.${fieldName} debe ser un número entre 0 y 1 (coordenadas relativas a la imagen original). Use las cajas de 'elements' de un análisis previo.`);
|
|
357
|
+
}
|
|
358
|
+
return parsed;
|
|
359
|
+
};
|
|
360
|
+
const region = {
|
|
361
|
+
x: readFraction("x"),
|
|
362
|
+
y: readFraction("y"),
|
|
363
|
+
width: readFraction("width"),
|
|
364
|
+
height: readFraction("height")
|
|
365
|
+
};
|
|
366
|
+
if (region.width <= 0 || region.height <= 0) {
|
|
367
|
+
throw new Error("region.width y region.height deben ser mayores que 0.");
|
|
368
|
+
}
|
|
369
|
+
return region;
|
|
370
|
+
}
|
|
281
371
|
/**
|
|
282
372
|
* Validates that a path exists and is a readable file.
|
|
283
373
|
*
|
|
@@ -323,30 +413,30 @@ export class AnalyzeMediaTool {
|
|
|
323
413
|
* screenshot sets.
|
|
324
414
|
*
|
|
325
415
|
* @param client - EnriProxy client
|
|
326
|
-
* @param
|
|
416
|
+
* @param inputs - Resolved media inputs (local paths, URLs already materialized)
|
|
327
417
|
* @param timeoutMs - Request timeout per HTTP request
|
|
328
418
|
* @param clientTraceId - Client trace id for correlation
|
|
329
419
|
* @returns Upload id for the created tar session
|
|
330
420
|
*/
|
|
331
|
-
async uploadImageSetAsMediaSetTar(client,
|
|
332
|
-
if (
|
|
421
|
+
async uploadImageSetAsMediaSetTar(client, inputs, timeoutMs, clientTraceId) {
|
|
422
|
+
if (inputs.length < 2) {
|
|
333
423
|
throw new Error("uploadImageSetAsMediaSetTar requires at least 2 file paths.");
|
|
334
424
|
}
|
|
335
425
|
const files = [];
|
|
336
|
-
for (let i = 0; i <
|
|
337
|
-
const
|
|
338
|
-
const sizeBytes = await this.assertReadableFile(
|
|
339
|
-
const filename = basename(
|
|
340
|
-
const contentType = this.
|
|
426
|
+
for (let i = 0; i < inputs.length; i += 1) {
|
|
427
|
+
const input = inputs[i];
|
|
428
|
+
const sizeBytes = await this.assertReadableFile(input.localPath);
|
|
429
|
+
const filename = basename(input.localPath);
|
|
430
|
+
const contentType = this.resolveEffectiveContentType(input.localPath, input.urlContentType);
|
|
341
431
|
if (!contentType.toLowerCase().startsWith("image/")) {
|
|
342
|
-
throw new Error(`paths debe contener sólo archivos de imagen. No es imagen: ${
|
|
432
|
+
throw new Error(`paths debe contener sólo archivos de imagen. No es imagen: ${input.localPath} (${contentType})`);
|
|
343
433
|
}
|
|
344
434
|
const extRaw = extname(filename).toLowerCase();
|
|
345
435
|
const ext = extRaw && /^[a-z0-9.]+$/.test(extRaw) ? extRaw : ".img";
|
|
346
436
|
const entryName = `${String(i + 1).padStart(6, "0")}${ext}`;
|
|
347
437
|
files.push({
|
|
348
438
|
index: i + 1,
|
|
349
|
-
path:
|
|
439
|
+
path: input.localPath,
|
|
350
440
|
filename,
|
|
351
441
|
sizeBytes,
|
|
352
442
|
contentType,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AnalyzeMediaTool.js","sourceRoot":"","sources":["../../src/tools/AnalyzeMediaTool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"AnalyzeMediaTool.js","sourceRoot":"","sources":["../../src/tools/AnalyzeMediaTool.ts"],"names":[],"mappings":"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"}
|