@bedolla/enriweb 0.1.5 → 0.1.7
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 +48 -20
- package/dist/client/EnriProxyClient.d.ts +176 -5
- package/dist/client/EnriProxyClient.d.ts.map +1 -1
- package/dist/client/EnriProxyClient.js +255 -31
- package/dist/client/EnriProxyClient.js.map +1 -1
- package/dist/index.js +65 -25
- package/dist/index.js.map +1 -1
- package/dist/package-info.d.ts +26 -0
- package/dist/package-info.d.ts.map +1 -1
- package/dist/package-info.js +29 -2
- package/dist/package-info.js.map +1 -1
- package/dist/server/EnriWebServer.d.ts +33 -0
- package/dist/server/EnriWebServer.d.ts.map +1 -1
- package/dist/server/EnriWebServer.js +338 -28
- package/dist/server/EnriWebServer.js.map +1 -1
- package/dist/shared/Utf8SafeTextSlicer.d.ts +47 -0
- package/dist/shared/Utf8SafeTextSlicer.d.ts.map +1 -0
- package/dist/shared/Utf8SafeTextSlicer.js +97 -0
- package/dist/shared/Utf8SafeTextSlicer.js.map +1 -0
- package/dist/shared/validation.d.ts +13 -1
- package/dist/shared/validation.d.ts.map +1 -1
- package/dist/shared/validation.js +41 -17
- package/dist/shared/validation.js.map +1 -1
- package/dist/tools/WebFetchNpmProjection.d.ts +143 -0
- package/dist/tools/WebFetchNpmProjection.d.ts.map +1 -0
- package/dist/tools/WebFetchNpmProjection.js +480 -0
- package/dist/tools/WebFetchNpmProjection.js.map +1 -0
- package/dist/tools/WebFetchParamsParser.d.ts +26 -0
- package/dist/tools/WebFetchParamsParser.d.ts.map +1 -0
- package/dist/tools/WebFetchParamsParser.js +157 -0
- package/dist/tools/WebFetchParamsParser.js.map +1 -0
- package/dist/tools/WebFetchRangesExecutor.d.ts +86 -0
- package/dist/tools/WebFetchRangesExecutor.d.ts.map +1 -0
- package/dist/tools/WebFetchRangesExecutor.js +277 -0
- package/dist/tools/WebFetchRangesExecutor.js.map +1 -0
- package/dist/tools/WebFetchTool.d.ts +187 -71
- package/dist/tools/WebFetchTool.d.ts.map +1 -1
- package/dist/tools/WebFetchTool.js +145 -367
- package/dist/tools/WebFetchTool.js.map +1 -1
- package/dist/tools/WebFetchToolTextFormatter.d.ts +57 -0
- package/dist/tools/WebFetchToolTextFormatter.d.ts.map +1 -0
- package/dist/tools/WebFetchToolTextFormatter.js +135 -0
- package/dist/tools/WebFetchToolTextFormatter.js.map +1 -0
- package/dist/tools/WebSearchRegistryHttpReader.d.ts +116 -0
- package/dist/tools/WebSearchRegistryHttpReader.d.ts.map +1 -0
- package/dist/tools/WebSearchRegistryHttpReader.js +157 -0
- package/dist/tools/WebSearchRegistryHttpReader.js.map +1 -0
- package/dist/tools/WebSearchRegistryVerifier.d.ts +111 -6
- package/dist/tools/WebSearchRegistryVerifier.d.ts.map +1 -1
- package/dist/tools/WebSearchRegistryVerifier.js +406 -125
- package/dist/tools/WebSearchRegistryVerifier.js.map +1 -1
- package/dist/tools/WebSearchTool.d.ts +85 -2
- package/dist/tools/WebSearchTool.d.ts.map +1 -1
- package/dist/tools/WebSearchTool.js +197 -19
- package/dist/tools/WebSearchTool.js.map +1 -1
- package/package.json +3 -2
|
@@ -6,10 +6,75 @@
|
|
|
6
6
|
* - POST /v1/tools/web_fetch
|
|
7
7
|
*
|
|
8
8
|
* @module client/EnriProxyClient
|
|
9
|
+
*
|
|
10
|
+
* @remarks Size note (~950 lines, documented exception to the <=700 policy):
|
|
11
|
+
* one file currently owns the transport (dual-timeout raw HTTP, abort
|
|
12
|
+
* labeling, response-size ceilings), the wire payload builders, the typed
|
|
13
|
+
* response contracts, and the Spanish error mapping. The planned split is a
|
|
14
|
+
* dedicated `EnriProxyHttpTransport` module; until that batch, moving any
|
|
15
|
+
* single piece would duplicate the carefully paired timeout/abort/cap
|
|
16
|
+
* invariants that the tests pin together.
|
|
9
17
|
*/
|
|
10
18
|
import { request as httpRequest } from "node:http";
|
|
11
19
|
import { request as httpsRequest } from "node:https";
|
|
12
20
|
import { URL } from "node:url";
|
|
21
|
+
import { sliceUtf8Safe } from "../shared/Utf8SafeTextSlicer.js";
|
|
22
|
+
/**
|
|
23
|
+
* Default ceiling for one proxied response body.
|
|
24
|
+
*
|
|
25
|
+
* @remarks
|
|
26
|
+
* Generous for the default 200k-char budget; larger `max_chars` budgets
|
|
27
|
+
* derive a higher ceiling via {@link resolveMaxResponseBytes}.
|
|
28
|
+
*/
|
|
29
|
+
const DEFAULT_MAX_RESPONSE_BYTES = 20 * 1024 * 1024;
|
|
30
|
+
/**
|
|
31
|
+
* Derives the per-request response size ceiling from the content budget.
|
|
32
|
+
*
|
|
33
|
+
* @remarks
|
|
34
|
+
* EnriProxy answers JSON, so every character may expand up to ~6 bytes
|
|
35
|
+
* (`\uXXXX` escapes, quotes, newlines). A known `maxChars` raises the
|
|
36
|
+
* ceiling to `6 × maxChars + 1MB` so a legitimate ~4M-char capture rich in
|
|
37
|
+
* escapes is not rejected mid-stream.
|
|
38
|
+
*
|
|
39
|
+
* @param maxChars - Requested content budget in characters, when known.
|
|
40
|
+
* @returns Maximum accepted response body in bytes.
|
|
41
|
+
*/
|
|
42
|
+
export function resolveMaxResponseBytes(maxChars) {
|
|
43
|
+
if (maxChars === undefined) {
|
|
44
|
+
return DEFAULT_MAX_RESPONSE_BYTES;
|
|
45
|
+
}
|
|
46
|
+
return Math.max(DEFAULT_MAX_RESPONSE_BYTES, 6 * maxChars + 1024 * 1024);
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Upper character budget accepted from one tool call.
|
|
50
|
+
*
|
|
51
|
+
* @remarks
|
|
52
|
+
* Single source of truth for the shared 4M wire ceiling: the client clamps
|
|
53
|
+
* every request payload with it and the tool layer imports the same constant
|
|
54
|
+
* so the documented ceiling cannot drift between modules.
|
|
55
|
+
*/
|
|
56
|
+
export const MAX_WIRE_MAX_CHARS = 4_000_000;
|
|
57
|
+
/**
|
|
58
|
+
* Detects a delete-cursor web fetch request.
|
|
59
|
+
*
|
|
60
|
+
* @param params - Web fetch request union member
|
|
61
|
+
* @returns True when the request deletes a cursor.
|
|
62
|
+
*/
|
|
63
|
+
function isDeleteRequest(params) {
|
|
64
|
+
return "action" in params && params.action === "delete";
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Normalizes one max_chars budget to a positive integer within the ceiling.
|
|
68
|
+
*
|
|
69
|
+
* @param value - Raw budget value.
|
|
70
|
+
* @returns Normalized budget, or undefined when unusable.
|
|
71
|
+
*/
|
|
72
|
+
function normalizeMaxChars(value) {
|
|
73
|
+
if (typeof value !== "number" || !Number.isFinite(value)) {
|
|
74
|
+
return undefined;
|
|
75
|
+
}
|
|
76
|
+
return Math.min(MAX_WIRE_MAX_CHARS, Math.max(1, Math.trunc(value)));
|
|
77
|
+
}
|
|
13
78
|
/**
|
|
14
79
|
* Error thrown when EnriProxy returns a non-2xx HTTP response.
|
|
15
80
|
*/
|
|
@@ -72,9 +137,10 @@ export class EnriProxyClient {
|
|
|
72
137
|
* Executes a web search via EnriProxy.
|
|
73
138
|
*
|
|
74
139
|
* @param params - Search parameters
|
|
140
|
+
* @param signal - Optional caller abort signal
|
|
75
141
|
* @returns Search response
|
|
76
142
|
*/
|
|
77
|
-
async webSearch(params) {
|
|
143
|
+
async webSearch(params, signal, options) {
|
|
78
144
|
const url = this.buildUrl("/v1/tools/web_search");
|
|
79
145
|
const payload = {
|
|
80
146
|
query: params.query
|
|
@@ -97,22 +163,29 @@ export class EnriProxyClient {
|
|
|
97
163
|
if (typeof params.searchPrompt === "string" && params.searchPrompt.trim()) {
|
|
98
164
|
payload["search_prompt"] = params.searchPrompt.trim();
|
|
99
165
|
}
|
|
100
|
-
const result = await this.requestJson("POST", url, payload, this.timeoutMs);
|
|
166
|
+
const result = await this.requestJson("POST", url, payload, this.timeoutMs, signal, options);
|
|
101
167
|
if (result.status < 200 || result.status >= 300) {
|
|
102
|
-
throw new EnriProxyHttpError(`La búsqueda web falló (HTTP ${result.status})
|
|
168
|
+
throw new EnriProxyHttpError(`La búsqueda web falló (HTTP ${result.status}). ${EnriProxyClient.describeHttpStatus(result.status)}`.trimEnd(), result.status, result.headers, result.body.slice(0, 4000));
|
|
169
|
+
}
|
|
170
|
+
try {
|
|
171
|
+
return JSON.parse(result.body);
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
throw new Error(`Respuesta no JSON de EnriProxy en /v1/tools/web_search (HTTP ${String(result.status)}): ${EnriProxyClient.describeUnparseableBody(error)}`);
|
|
103
175
|
}
|
|
104
|
-
return JSON.parse(result.body);
|
|
105
176
|
}
|
|
106
|
-
|
|
107
|
-
* Executes a web fetch via EnriProxy.
|
|
108
|
-
*
|
|
109
|
-
* @param params - Fetch parameters
|
|
110
|
-
* @returns Fetch response
|
|
111
|
-
*/
|
|
112
|
-
async webFetch(params) {
|
|
177
|
+
async webFetch(params, signal, options) {
|
|
113
178
|
const url = this.buildUrl("/v1/tools/web_fetch");
|
|
114
179
|
const payload = {};
|
|
115
|
-
if (
|
|
180
|
+
if (isDeleteRequest(params)) {
|
|
181
|
+
const cursor = params.cursor.trim();
|
|
182
|
+
if (!cursor) {
|
|
183
|
+
throw new Error("webFetch requiere un cursor no vacío.");
|
|
184
|
+
}
|
|
185
|
+
payload["cursor"] = cursor;
|
|
186
|
+
payload["action"] = "delete";
|
|
187
|
+
}
|
|
188
|
+
else if ("cursor" in params) {
|
|
116
189
|
const cursor = params.cursor.trim();
|
|
117
190
|
if (!cursor) {
|
|
118
191
|
throw new Error("webFetch requiere un cursor no vacío.");
|
|
@@ -122,10 +195,16 @@ export class EnriProxyClient {
|
|
|
122
195
|
payload["offset_chars"] = Math.max(0, Math.trunc(params.offsetChars));
|
|
123
196
|
}
|
|
124
197
|
if (typeof params.limitChars === "number" && Number.isFinite(params.limitChars)) {
|
|
125
|
-
|
|
198
|
+
const limitChars = Math.trunc(params.limitChars);
|
|
199
|
+
// A zero limit means "no explicit limit" (tool contract); only send
|
|
200
|
+
// positive limits so direct callers agree with the tool layer.
|
|
201
|
+
if (limitChars !== 0) {
|
|
202
|
+
payload["limit_chars"] = Math.max(1, limitChars);
|
|
203
|
+
}
|
|
126
204
|
}
|
|
127
|
-
|
|
128
|
-
|
|
205
|
+
const cursorMaxChars = normalizeMaxChars(params.maxChars);
|
|
206
|
+
if (cursorMaxChars !== undefined) {
|
|
207
|
+
payload["max_chars"] = cursorMaxChars;
|
|
129
208
|
}
|
|
130
209
|
}
|
|
131
210
|
else {
|
|
@@ -133,8 +212,9 @@ export class EnriProxyClient {
|
|
|
133
212
|
if (typeof params.prompt === "string" && params.prompt.trim()) {
|
|
134
213
|
payload["prompt"] = params.prompt.trim();
|
|
135
214
|
}
|
|
136
|
-
|
|
137
|
-
|
|
215
|
+
const urlMaxChars = normalizeMaxChars(params.maxChars);
|
|
216
|
+
if (urlMaxChars !== undefined) {
|
|
217
|
+
payload["max_chars"] = urlMaxChars;
|
|
138
218
|
}
|
|
139
219
|
if (params.format === "markdown" || params.format === "text" || params.format === "html") {
|
|
140
220
|
payload["format"] = params.format;
|
|
@@ -145,18 +225,82 @@ export class EnriProxyClient {
|
|
|
145
225
|
if (params.includeLinks === true) {
|
|
146
226
|
payload["include_links"] = true;
|
|
147
227
|
}
|
|
228
|
+
if (params.includeLinks === false) {
|
|
229
|
+
payload["include_links"] = false;
|
|
230
|
+
}
|
|
148
231
|
if (params.includeMetadata === true) {
|
|
149
232
|
payload["include_metadata"] = true;
|
|
150
233
|
}
|
|
234
|
+
if (params.includeMetadata === false) {
|
|
235
|
+
payload["include_metadata"] = false;
|
|
236
|
+
}
|
|
151
237
|
if (typeof params.anchor === "string" && params.anchor.trim()) {
|
|
152
|
-
|
|
238
|
+
const anchor = sliceUtf8Safe(params.anchor.trim().replace(/^#+/, "").trim(), 0, 300);
|
|
239
|
+
if (anchor) {
|
|
240
|
+
payload["anchor"] = anchor;
|
|
241
|
+
}
|
|
153
242
|
}
|
|
154
243
|
}
|
|
155
|
-
const
|
|
244
|
+
const requestMaxChars = isDeleteRequest(params)
|
|
245
|
+
? undefined
|
|
246
|
+
: normalizeMaxChars(params.maxChars);
|
|
247
|
+
const transportOptions = {
|
|
248
|
+
...options,
|
|
249
|
+
maxResponseBytes: options?.maxResponseBytes ?? resolveMaxResponseBytes(requestMaxChars)
|
|
250
|
+
};
|
|
251
|
+
const result = await this.requestJson("POST", url, payload, this.timeoutMs, signal, transportOptions);
|
|
156
252
|
if (result.status < 200 || result.status >= 300) {
|
|
157
|
-
throw new EnriProxyHttpError(`El fetch web falló (HTTP ${result.status})
|
|
253
|
+
throw new EnriProxyHttpError(`El fetch web falló (HTTP ${result.status}). ${EnriProxyClient.describeHttpStatus(result.status)}`.trimEnd(), result.status, result.headers, result.body.slice(0, 4000));
|
|
254
|
+
}
|
|
255
|
+
let parsed;
|
|
256
|
+
try {
|
|
257
|
+
parsed = JSON.parse(result.body);
|
|
258
|
+
}
|
|
259
|
+
catch (error) {
|
|
260
|
+
throw new Error(`Respuesta no JSON de EnriProxy en /v1/tools/web_fetch (HTTP ${String(result.status)}): ${EnriProxyClient.describeUnparseableBody(error)}`);
|
|
261
|
+
}
|
|
262
|
+
if (isDeleteRequest(params)) {
|
|
263
|
+
const record = typeof parsed === "object" && parsed !== null && !Array.isArray(parsed)
|
|
264
|
+
? parsed
|
|
265
|
+
: {};
|
|
266
|
+
return {
|
|
267
|
+
deleted: record["deleted"] === true,
|
|
268
|
+
cursor: typeof record["cursor"] === "string" ? record["cursor"] : params.cursor
|
|
269
|
+
};
|
|
270
|
+
}
|
|
271
|
+
return parsed;
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Summarizes a response-body parse failure as a bounded Spanish tail.
|
|
275
|
+
*
|
|
276
|
+
* @remarks
|
|
277
|
+
* V8's parser message ("Unexpected token …") is English jargon that would
|
|
278
|
+
* reach the model verbatim through the tool result; it is reduced to a
|
|
279
|
+
* Spanish label plus at most 80 characters of raw parser detail.
|
|
280
|
+
*
|
|
281
|
+
* @param error - Failure thrown while parsing the proxy response body.
|
|
282
|
+
* @returns Short Spanish summary for a model-facing error message.
|
|
283
|
+
*/
|
|
284
|
+
static describeUnparseableBody(error) {
|
|
285
|
+
const raw = error instanceof Error ? error.message : String(error);
|
|
286
|
+
return `cuerpo de respuesta no parseable (${sliceUtf8Safe(raw, 0, 80)})`;
|
|
287
|
+
}
|
|
288
|
+
/**
|
|
289
|
+
* Summarizes one non-2xx HTTP status as bounded Spanish guidance.
|
|
290
|
+
*
|
|
291
|
+
* @remarks
|
|
292
|
+
* The raw HTTP client does not follow redirects: an `ENRIPROXY_URL` behind
|
|
293
|
+
* a 301/302/303/307/308 would otherwise surface as a bare status code with
|
|
294
|
+
* no hint that the server configuration (not the call) must change.
|
|
295
|
+
*
|
|
296
|
+
* @param status - HTTP status returned by the server.
|
|
297
|
+
* @returns Spanish guidance suffix (may be empty).
|
|
298
|
+
*/
|
|
299
|
+
static describeHttpStatus(status) {
|
|
300
|
+
if (status === 301 || status === 302 || status === 303 || status === 307 || status === 308) {
|
|
301
|
+
return "El servidor respondió con una redirección que este cliente no sigue: configure ENRIPROXY_URL con la URL final (sin redirección) y reintente.";
|
|
158
302
|
}
|
|
159
|
-
return
|
|
303
|
+
return "";
|
|
160
304
|
}
|
|
161
305
|
/**
|
|
162
306
|
* Builds an absolute URL relative to the configured base URL.
|
|
@@ -165,7 +309,13 @@ export class EnriProxyClient {
|
|
|
165
309
|
* @returns URL instance
|
|
166
310
|
*/
|
|
167
311
|
buildUrl(pathname) {
|
|
168
|
-
|
|
312
|
+
const base = new URL(this.baseUrl);
|
|
313
|
+
const basePath = base.pathname.replace(/\/+$/u, "");
|
|
314
|
+
const cleanPath = pathname.startsWith("/") ? pathname : `/${pathname}`;
|
|
315
|
+
base.pathname = `${basePath}${cleanPath}`.replace(/\/{2,}/gu, "/");
|
|
316
|
+
base.search = "";
|
|
317
|
+
base.hash = "";
|
|
318
|
+
return base;
|
|
169
319
|
}
|
|
170
320
|
/**
|
|
171
321
|
* Sends a JSON request and returns the response.
|
|
@@ -174,15 +324,16 @@ export class EnriProxyClient {
|
|
|
174
324
|
* @param url - Target URL
|
|
175
325
|
* @param jsonBody - JSON payload
|
|
176
326
|
* @param timeoutMs - Timeout in milliseconds
|
|
327
|
+
* @param signal - Optional caller abort signal
|
|
177
328
|
* @returns HTTP result
|
|
178
329
|
*/
|
|
179
|
-
async requestJson(method, url, jsonBody, timeoutMs) {
|
|
330
|
+
async requestJson(method, url, jsonBody, timeoutMs, signal, options) {
|
|
180
331
|
const body = JSON.stringify(jsonBody);
|
|
181
332
|
const headers = {
|
|
182
333
|
"Content-Type": "application/json",
|
|
183
334
|
"Content-Length": String(Buffer.byteLength(body))
|
|
184
335
|
};
|
|
185
|
-
return this.requestRaw(method, url, headers, Buffer.from(body, "utf8"), timeoutMs);
|
|
336
|
+
return this.requestRaw(method, url, headers, Buffer.from(body, "utf8"), timeoutMs, signal, options);
|
|
186
337
|
}
|
|
187
338
|
/**
|
|
188
339
|
* Sends an HTTP request with optional headers and body.
|
|
@@ -192,43 +343,116 @@ export class EnriProxyClient {
|
|
|
192
343
|
* @param headers - Request headers
|
|
193
344
|
* @param body - Request body
|
|
194
345
|
* @param timeoutMs - Timeout in milliseconds
|
|
346
|
+
* @param signal - Optional abort signal (destroys the request on abort)
|
|
347
|
+
* @param options - Optional transport options (caller signal labeling, size ceiling)
|
|
195
348
|
* @returns HTTP result
|
|
196
349
|
*/
|
|
197
|
-
async requestRaw(method, url, headers, body, timeoutMs) {
|
|
350
|
+
async requestRaw(method, url, headers, body, timeoutMs, signal, options) {
|
|
198
351
|
const isHttps = url.protocol === "https:";
|
|
199
352
|
const reqFn = isHttps ? httpsRequest : httpRequest;
|
|
200
353
|
const requestHeaders = {
|
|
201
354
|
Authorization: `Bearer ${this.apiKey}`,
|
|
202
355
|
...(headers ?? {})
|
|
203
356
|
};
|
|
357
|
+
// When the caller wraps its signal (caller abort + subfetch timeout) it
|
|
358
|
+
// also passes `callerSignal`: an abort with a live caller signal means
|
|
359
|
+
// the subfetch timeout fired, not a client cancellation.
|
|
360
|
+
const callerSignal = options?.callerSignal;
|
|
361
|
+
const abortMessage = () => {
|
|
362
|
+
if (callerSignal !== undefined && !callerSignal.aborted) {
|
|
363
|
+
return `La petición expiró después de ${String(options?.subfetchTimeoutMs ?? timeoutMs)}ms`;
|
|
364
|
+
}
|
|
365
|
+
return "La petición fue cancelada por el cliente.";
|
|
366
|
+
};
|
|
204
367
|
return await new Promise((resolve, reject) => {
|
|
368
|
+
let settled = false;
|
|
369
|
+
const settleResolve = (result) => {
|
|
370
|
+
if (!settled) {
|
|
371
|
+
settled = true;
|
|
372
|
+
resolve(result);
|
|
373
|
+
}
|
|
374
|
+
};
|
|
375
|
+
const settleReject = (error) => {
|
|
376
|
+
if (!settled) {
|
|
377
|
+
settled = true;
|
|
378
|
+
reject(error);
|
|
379
|
+
}
|
|
380
|
+
};
|
|
381
|
+
if (signal?.aborted) {
|
|
382
|
+
settleReject(new Error(abortMessage()));
|
|
383
|
+
return;
|
|
384
|
+
}
|
|
205
385
|
const req = reqFn(url, {
|
|
206
386
|
method,
|
|
207
387
|
headers: requestHeaders
|
|
208
388
|
}, (res) => {
|
|
209
389
|
const chunks = [];
|
|
210
390
|
let received = 0;
|
|
211
|
-
const maxResponseBytes =
|
|
391
|
+
const maxResponseBytes = options?.maxResponseBytes ?? DEFAULT_MAX_RESPONSE_BYTES;
|
|
212
392
|
res.on("data", (chunk) => {
|
|
213
393
|
received += chunk.length;
|
|
214
394
|
if (received > maxResponseBytes) {
|
|
215
|
-
|
|
395
|
+
cleanupAbort();
|
|
396
|
+
settleReject(new Error("La respuesta excedió el tamaño máximo permitido."));
|
|
397
|
+
req.destroy();
|
|
216
398
|
return;
|
|
217
399
|
}
|
|
218
400
|
chunks.push(chunk);
|
|
219
401
|
});
|
|
402
|
+
res.on("error", (error) => {
|
|
403
|
+
cleanupAbort();
|
|
404
|
+
req.destroy();
|
|
405
|
+
settleReject(error);
|
|
406
|
+
});
|
|
220
407
|
res.on("end", () => {
|
|
221
|
-
|
|
408
|
+
cleanupAbort();
|
|
409
|
+
settleResolve({
|
|
222
410
|
status: res.statusCode ?? 0,
|
|
223
411
|
headers: res.headers,
|
|
224
412
|
body: Buffer.concat(chunks).toString("utf8")
|
|
225
413
|
});
|
|
226
414
|
});
|
|
227
415
|
});
|
|
228
|
-
|
|
229
|
-
|
|
416
|
+
const cleanupAbort = () => {
|
|
417
|
+
try {
|
|
418
|
+
req.setTimeout(0);
|
|
419
|
+
}
|
|
420
|
+
catch {
|
|
421
|
+
// Best-effort timer disarm on finished sockets.
|
|
422
|
+
}
|
|
423
|
+
if (totalBudgetTimer !== undefined) {
|
|
424
|
+
clearTimeout(totalBudgetTimer);
|
|
425
|
+
}
|
|
426
|
+
if (signal !== undefined) {
|
|
427
|
+
signal.removeEventListener("abort", onAbort);
|
|
428
|
+
}
|
|
429
|
+
};
|
|
430
|
+
const onAbort = () => {
|
|
431
|
+
req.destroy(new Error(abortMessage()));
|
|
432
|
+
};
|
|
433
|
+
const onError = (error) => {
|
|
434
|
+
cleanupAbort();
|
|
435
|
+
settleReject(error);
|
|
436
|
+
};
|
|
437
|
+
const onTimeout = () => {
|
|
438
|
+
cleanupAbort();
|
|
230
439
|
req.destroy(new Error(`La petición expiró después de ${timeoutMs}ms`));
|
|
231
|
-
}
|
|
440
|
+
};
|
|
441
|
+
if (signal !== undefined) {
|
|
442
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
443
|
+
}
|
|
444
|
+
req.on("error", onError);
|
|
445
|
+
// Socket-inactivity timeout (per-chunk deadline): a slow-drip response
|
|
446
|
+
// could otherwise extend the documented budget indefinitely.
|
|
447
|
+
req.setTimeout(timeoutMs, onTimeout);
|
|
448
|
+
// Total-budget timer: bounds the whole request wall-clock time so the
|
|
449
|
+
// documented ENRIWEB_TIMEOUT_MS / ENRIWEB_SEARCH_TIMEOUT_MS budgets
|
|
450
|
+
// hold even when chunks keep arriving (matching EnriCode's
|
|
451
|
+
// AbortSignal.timeout semantics).
|
|
452
|
+
const totalBudgetTimer = setTimeout(() => {
|
|
453
|
+
req.destroy(new Error(`La petición expiró después de ${timeoutMs}ms (presupuesto total)`));
|
|
454
|
+
}, timeoutMs);
|
|
455
|
+
totalBudgetTimer.unref?.();
|
|
232
456
|
if (body && body.length > 0) {
|
|
233
457
|
req.write(body);
|
|
234
458
|
}
|
|
@@ -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":"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"}
|
package/dist/index.js
CHANGED
|
@@ -7,12 +7,13 @@
|
|
|
7
7
|
* @module index
|
|
8
8
|
*/
|
|
9
9
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
10
|
-
import { EnriProxyClient } from "./client/EnriProxyClient.js";
|
|
10
|
+
import { EnriProxyClient, MAX_WIRE_MAX_CHARS } from "./client/EnriProxyClient.js";
|
|
11
11
|
import { WebSearchTool } from "./tools/WebSearchTool.js";
|
|
12
12
|
import { WebFetchTool } from "./tools/WebFetchTool.js";
|
|
13
13
|
import { WebSearchRegistryVerifier } from "./tools/WebSearchRegistryVerifier.js";
|
|
14
14
|
import { EnriWebServer } from "./server/EnriWebServer.js";
|
|
15
15
|
import { packageInfoService } from "./package-info.js";
|
|
16
|
+
import { assertHttpUrl } from "./shared/validation.js";
|
|
16
17
|
/**
|
|
17
18
|
* Environment variable for EnriProxy base URL.
|
|
18
19
|
*/
|
|
@@ -25,6 +26,10 @@ const ENRIPROXY_API_KEY_ENV = "ENRIPROXY_API_KEY";
|
|
|
25
26
|
* Environment variable for default request timeout in milliseconds.
|
|
26
27
|
*/
|
|
27
28
|
const ENRIWEB_TIMEOUT_MS_ENV = "ENRIWEB_TIMEOUT_MS";
|
|
29
|
+
/**
|
|
30
|
+
* Environment variable for the `web_search` request timeout in milliseconds.
|
|
31
|
+
*/
|
|
32
|
+
const ENRIWEB_SEARCH_TIMEOUT_MS_ENV = "ENRIWEB_SEARCH_TIMEOUT_MS";
|
|
28
33
|
/**
|
|
29
34
|
* Environment variable for the default `web_fetch` max_chars limit.
|
|
30
35
|
*/
|
|
@@ -39,9 +44,23 @@ const ENRIWEB_GITHUB_TOKEN_ENV = "ENRIWEB_GITHUB_TOKEN";
|
|
|
39
44
|
*/
|
|
40
45
|
const DEFAULT_ENRIPROXY_URL = "http://127.0.0.1:8787";
|
|
41
46
|
/**
|
|
42
|
-
* Default request timeout in milliseconds.
|
|
47
|
+
* Default `web_fetch` request timeout in milliseconds.
|
|
48
|
+
*
|
|
49
|
+
* @remarks
|
|
50
|
+
* Exceeds EnriProxy's total fetch budget (150 s) so slow tier chains
|
|
51
|
+
* (CycleTLS floor ~35 s, stealth renders, embedding-reducer cold start)
|
|
52
|
+
* finish before the client gives up; matches EnriCode's 180 s remote fetch
|
|
53
|
+
* budget.
|
|
43
54
|
*/
|
|
44
|
-
const
|
|
55
|
+
const DEFAULT_FETCH_TIMEOUT_MS = 180 * 1000;
|
|
56
|
+
/**
|
|
57
|
+
* Default `web_search` request timeout in milliseconds.
|
|
58
|
+
*
|
|
59
|
+
* @remarks
|
|
60
|
+
* Covers the SearXNG budget plus batched queries and server-side auto-fetch,
|
|
61
|
+
* matching EnriCode's remote search budget.
|
|
62
|
+
*/
|
|
63
|
+
const DEFAULT_SEARCH_TIMEOUT_MS = 320 * 1000;
|
|
45
64
|
/**
|
|
46
65
|
* Default maximum `web_fetch` content length.
|
|
47
66
|
*
|
|
@@ -54,6 +73,14 @@ const DEFAULT_TIMEOUT_MS = 60 * 1000;
|
|
|
54
73
|
* truncated by the client or written to a tool-results file for paging.
|
|
55
74
|
*/
|
|
56
75
|
const DEFAULT_WEB_FETCH_MAX_CHARS = 200_000;
|
|
76
|
+
/**
|
|
77
|
+
* Upper character budget accepted for the `web_fetch` default.
|
|
78
|
+
*
|
|
79
|
+
* @remarks
|
|
80
|
+
* The shared 4M wire ceiling (single source in the client) so the
|
|
81
|
+
* environment cannot configure an unbounded default.
|
|
82
|
+
*/
|
|
83
|
+
const MAX_DEFAULT_WEB_FETCH_MAX_CHARS = MAX_WIRE_MAX_CHARS;
|
|
57
84
|
/**
|
|
58
85
|
* Default timeout (ms) for registry enrichment requests.
|
|
59
86
|
*/
|
|
@@ -66,6 +93,21 @@ const DEFAULT_REGISTRY_CACHE_TTL_MS = 5 * 60 * 1000;
|
|
|
66
93
|
* Default maximum entities verified per `web_search` call.
|
|
67
94
|
*/
|
|
68
95
|
const DEFAULT_REGISTRY_MAX_ENTITIES_PER_CALL = 6;
|
|
96
|
+
/**
|
|
97
|
+
* Parses one positive-integer environment value with strict digits.
|
|
98
|
+
*
|
|
99
|
+
* @param raw - Raw environment value, if set.
|
|
100
|
+
* @param fallback - Default used when unset, blank, or invalid.
|
|
101
|
+
* @returns Parsed value or the fallback.
|
|
102
|
+
*/
|
|
103
|
+
function parsePositiveIntEnv(raw, fallback) {
|
|
104
|
+
const trimmed = (raw ?? "").trim();
|
|
105
|
+
if (!/^\d+$/u.test(trimmed)) {
|
|
106
|
+
return fallback;
|
|
107
|
+
}
|
|
108
|
+
const parsed = Number.parseInt(trimmed, 10);
|
|
109
|
+
return Number.isFinite(parsed) && parsed > 0 ? parsed : fallback;
|
|
110
|
+
}
|
|
69
111
|
/**
|
|
70
112
|
* Entry point for the MCP server.
|
|
71
113
|
*/
|
|
@@ -74,19 +116,20 @@ async function main() {
|
|
|
74
116
|
if (args[0] === "--help" || args[0] === "-h" || args[0] === "help") {
|
|
75
117
|
console.log("EnriWeb");
|
|
76
118
|
console.log("");
|
|
77
|
-
console.log("
|
|
119
|
+
console.log("Servidor MCP por stdio que provee búsqueda web y lectura de URLs vía EnriProxy.");
|
|
78
120
|
console.log("");
|
|
79
|
-
console.log("
|
|
80
|
-
console.log(" enriweb (
|
|
121
|
+
console.log("Uso:");
|
|
122
|
+
console.log(" enriweb (inicia el servidor MCP por stdio)");
|
|
81
123
|
console.log(" enriweb --version");
|
|
82
124
|
console.log(" enriweb --help");
|
|
83
125
|
console.log("");
|
|
84
|
-
console.log("
|
|
85
|
-
console.log(" ENRIPROXY_URL (
|
|
86
|
-
console.log(" ENRIPROXY_API_KEY (
|
|
87
|
-
console.log(" ENRIWEB_TIMEOUT_MS (
|
|
88
|
-
console.log("
|
|
89
|
-
console.log("
|
|
126
|
+
console.log("Variables de entorno:");
|
|
127
|
+
console.log(" ENRIPROXY_URL (opcional, default: http://127.0.0.1:8787)");
|
|
128
|
+
console.log(" ENRIPROXY_API_KEY (requerida)");
|
|
129
|
+
console.log(" ENRIWEB_TIMEOUT_MS (opcional, default: 180000, timeout de web_fetch)");
|
|
130
|
+
console.log(" ENRIWEB_SEARCH_TIMEOUT_MS (opcional, default: 320000, timeout de web_search)");
|
|
131
|
+
console.log(" ENRIWEB_WEB_FETCH_DEFAULT_MAX_CHARS (opcional, default: 200000, máximo 4000000)");
|
|
132
|
+
console.log(" ENRIWEB_GITHUB_TOKEN (opcional, mejora los límites de la API de GitHub)");
|
|
90
133
|
process.exit(0);
|
|
91
134
|
}
|
|
92
135
|
if (args[0] === "--version" || args[0] === "-v" || args[0] === "version") {
|
|
@@ -95,27 +138,24 @@ async function main() {
|
|
|
95
138
|
}
|
|
96
139
|
const serverUrl = (process.env[ENRIPROXY_URL_ENV] ?? DEFAULT_ENRIPROXY_URL).trim();
|
|
97
140
|
const apiKey = (process.env[ENRIPROXY_API_KEY_ENV] ?? "").trim();
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
141
|
+
if (!apiKey) {
|
|
142
|
+
throw new Error("Falta ENRIPROXY_API_KEY: configure la API key de EnriProxy antes de iniciar el MCP.");
|
|
143
|
+
}
|
|
144
|
+
assertHttpUrl(serverUrl, ENRIPROXY_URL_ENV);
|
|
145
|
+
const timeoutMs = parsePositiveIntEnv(process.env[ENRIWEB_TIMEOUT_MS_ENV], DEFAULT_FETCH_TIMEOUT_MS);
|
|
146
|
+
const searchTimeoutMs = parsePositiveIntEnv(process.env[ENRIWEB_SEARCH_TIMEOUT_MS_ENV], DEFAULT_SEARCH_TIMEOUT_MS);
|
|
147
|
+
const defaultWebFetchMaxChars = Math.min(parsePositiveIntEnv(process.env[ENRIWEB_WEB_FETCH_DEFAULT_MAX_CHARS_ENV], DEFAULT_WEB_FETCH_MAX_CHARS), MAX_DEFAULT_WEB_FETCH_MAX_CHARS);
|
|
104
148
|
const githubToken = (process.env[ENRIWEB_GITHUB_TOKEN_ENV] ?? "").trim();
|
|
105
149
|
const createClient = (baseUrl, key, timeout) => new EnriProxyClient({
|
|
106
150
|
baseUrl,
|
|
107
151
|
apiKey: key,
|
|
108
152
|
timeoutMs: timeout
|
|
109
153
|
});
|
|
110
|
-
const resolvedTimeoutMs = Number.isFinite(timeoutMs) && timeoutMs > 0 ? timeoutMs : DEFAULT_TIMEOUT_MS;
|
|
111
|
-
const resolvedDefaultWebFetchMaxChars = Number.isFinite(defaultWebFetchMaxChars) && defaultWebFetchMaxChars > 0
|
|
112
|
-
? defaultWebFetchMaxChars
|
|
113
|
-
: DEFAULT_WEB_FETCH_MAX_CHARS;
|
|
114
154
|
const webSearchTool = new WebSearchTool({
|
|
115
155
|
createClient,
|
|
116
156
|
defaultServerUrl: serverUrl,
|
|
117
157
|
defaultApiKey: apiKey,
|
|
118
|
-
defaultTimeoutMs:
|
|
158
|
+
defaultTimeoutMs: searchTimeoutMs,
|
|
119
159
|
registryVerifier: new WebSearchRegistryVerifier({
|
|
120
160
|
fetchImpl: fetch,
|
|
121
161
|
timeoutMs: DEFAULT_REGISTRY_TIMEOUT_MS,
|
|
@@ -128,8 +168,8 @@ async function main() {
|
|
|
128
168
|
createClient,
|
|
129
169
|
defaultServerUrl: serverUrl,
|
|
130
170
|
defaultApiKey: apiKey,
|
|
131
|
-
defaultTimeoutMs:
|
|
132
|
-
defaultMaxChars:
|
|
171
|
+
defaultTimeoutMs: timeoutMs,
|
|
172
|
+
defaultMaxChars: defaultWebFetchMaxChars
|
|
133
173
|
});
|
|
134
174
|
const server = new EnriWebServer({
|
|
135
175
|
name: "EnriWeb",
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AACA;;;;;;GAMG;AACH,OAAO,EAAE,oBAAoB,EAAE,MAAM,2CAA2C,CAAC;AACjF,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|