@bedolla/enriweb 0.1.6 → 0.1.8
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 +143 -6
- package/dist/client/EnriProxyClient.d.ts.map +1 -1
- package/dist/client/EnriProxyClient.js +208 -33
- package/dist/client/EnriProxyClient.js.map +1 -1
- package/dist/index.js +58 -18
- 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 +322 -23
- 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 +27 -14
- 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 +186 -81
- package/dist/tools/WebFetchTool.d.ts.map +1 -1
- package/dist/tools/WebFetchTool.js +142 -425
- 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 +103 -7
- package/dist/tools/WebSearchRegistryVerifier.d.ts.map +1 -1
- package/dist/tools/WebSearchRegistryVerifier.js +375 -135
- package/dist/tools/WebSearchRegistryVerifier.js.map +1 -1
- package/dist/tools/WebSearchTool.d.ts +78 -0
- package/dist/tools/WebSearchTool.d.ts.map +1 -1
- package/dist/tools/WebSearchTool.js +191 -21
- package/dist/tools/WebSearchTool.js.map +1 -1
- package/package.json +3 -2
|
@@ -3,9 +3,16 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Implements the `web_fetch` MCP tool by delegating to EnriProxy.
|
|
5
5
|
*
|
|
6
|
+
* Size note (~610 lines, alert zone by design): this class owns the
|
|
7
|
+
* url/cursor/ranges/npm dispatch plus their result contracts in one
|
|
8
|
+
* readable place; the parser, ranges executor, npm projection and text
|
|
9
|
+
* formatter already live in dedicated modules. Splitting is tracked debt;
|
|
10
|
+
* any future edit must extract the touched unit instead of growing this
|
|
11
|
+
* file.
|
|
12
|
+
*
|
|
6
13
|
* @module tools/WebFetchTool
|
|
7
14
|
*/
|
|
8
|
-
import type
|
|
15
|
+
import { type EnriProxyClient } from "../client/EnriProxyClient.js";
|
|
9
16
|
/**
|
|
10
17
|
* Tool parameters for `web_fetch`.
|
|
11
18
|
*/
|
|
@@ -32,8 +39,8 @@ export interface WebFetchToolParams {
|
|
|
32
39
|
*/
|
|
33
40
|
readonly format?: "text" | "markdown" | "html";
|
|
34
41
|
/**
|
|
35
|
-
* Content scope for HTML sources: main content region only, or
|
|
36
|
-
* page
|
|
42
|
+
* Content scope for HTML sources: main content region only (default), or
|
|
43
|
+
* the full page.
|
|
37
44
|
*/
|
|
38
45
|
readonly content?: "main" | "full";
|
|
39
46
|
/**
|
|
@@ -56,6 +63,27 @@ export interface WebFetchToolParams {
|
|
|
56
63
|
* Limit in characters for cursor pagination.
|
|
57
64
|
*/
|
|
58
65
|
readonly limitChars?: number;
|
|
66
|
+
/**
|
|
67
|
+
* Special cursor action: "delete" releases the server-side capture.
|
|
68
|
+
*/
|
|
69
|
+
readonly action?: "delete";
|
|
70
|
+
/**
|
|
71
|
+
* Grouped character ranges read in one call (max 10).
|
|
72
|
+
*/
|
|
73
|
+
readonly ranges?: readonly WebFetchRangeSpec[];
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* One grouped character range for `web_fetch`.
|
|
77
|
+
*/
|
|
78
|
+
export interface WebFetchRangeSpec {
|
|
79
|
+
/**
|
|
80
|
+
* Zero-based start offset in characters.
|
|
81
|
+
*/
|
|
82
|
+
readonly offsetChars: number;
|
|
83
|
+
/**
|
|
84
|
+
* Range length in characters; omitted falls back to the call budget.
|
|
85
|
+
*/
|
|
86
|
+
readonly limitChars?: number;
|
|
59
87
|
}
|
|
60
88
|
/**
|
|
61
89
|
* Tool result for `web_fetch`.
|
|
@@ -101,6 +129,18 @@ export interface WebFetchToolResult extends Record<string, unknown> {
|
|
|
101
129
|
* Whether more content exists beyond this slice.
|
|
102
130
|
*/
|
|
103
131
|
readonly has_more?: boolean;
|
|
132
|
+
/**
|
|
133
|
+
* Exact offset where the next page starts, when the proxy reports it
|
|
134
|
+
* (cursor reads).
|
|
135
|
+
*/
|
|
136
|
+
readonly next_offset_chars?: number;
|
|
137
|
+
/**
|
|
138
|
+
* Budget applied to compose this result (npm stitching path). When the
|
|
139
|
+
* winning README sub-fetch issued a continuation cursor, that cursor (and
|
|
140
|
+
* the raw capture `total_chars`) propagates so pagination needs no
|
|
141
|
+
* re-download; otherwise retry with a larger `max_chars` for more content.
|
|
142
|
+
*/
|
|
143
|
+
readonly applied_max_chars?: number;
|
|
104
144
|
/**
|
|
105
145
|
* Whether content was reduced into an excerpt pack.
|
|
106
146
|
*/
|
|
@@ -109,7 +149,126 @@ export interface WebFetchToolResult extends Record<string, unknown> {
|
|
|
109
149
|
* Whether the upstream fetch was truncated.
|
|
110
150
|
*/
|
|
111
151
|
readonly fetched_truncated?: boolean;
|
|
152
|
+
/**
|
|
153
|
+
* Zero-based offset inside `content` where the undecorated page starts
|
|
154
|
+
* (passthrough of the proxy's bounds for local range windows).
|
|
155
|
+
*/
|
|
156
|
+
readonly page_offset_chars?: number;
|
|
157
|
+
/**
|
|
158
|
+
* Length of the undecorated page inside `content` (passthrough of the
|
|
159
|
+
* proxy's bounds for local range windows).
|
|
160
|
+
*/
|
|
161
|
+
readonly page_chars?: number;
|
|
112
162
|
}
|
|
163
|
+
/**
|
|
164
|
+
* Result for `action: "delete"` cursor release.
|
|
165
|
+
*/
|
|
166
|
+
export interface WebFetchToolDeleteResult extends Record<string, unknown> {
|
|
167
|
+
/**
|
|
168
|
+
* Whether the cursor existed and was deleted server-side.
|
|
169
|
+
*/
|
|
170
|
+
readonly deleted: boolean;
|
|
171
|
+
/**
|
|
172
|
+
* Cursor the deletion addressed.
|
|
173
|
+
*/
|
|
174
|
+
readonly cursor: string;
|
|
175
|
+
}
|
|
176
|
+
/**
|
|
177
|
+
* One slice produced for a grouped-ranges read.
|
|
178
|
+
*/
|
|
179
|
+
export interface WebFetchRangeSlice {
|
|
180
|
+
/**
|
|
181
|
+
* One-based range index in request order.
|
|
182
|
+
*/
|
|
183
|
+
readonly index: number;
|
|
184
|
+
/**
|
|
185
|
+
* Requested zero-based character offset.
|
|
186
|
+
*/
|
|
187
|
+
readonly offset_chars: number;
|
|
188
|
+
/**
|
|
189
|
+
* Requested maximum character count.
|
|
190
|
+
*/
|
|
191
|
+
readonly limit_chars: number;
|
|
192
|
+
/**
|
|
193
|
+
* Slice content.
|
|
194
|
+
*/
|
|
195
|
+
readonly content: string;
|
|
196
|
+
/**
|
|
197
|
+
* HTTP status of the underlying read.
|
|
198
|
+
*/
|
|
199
|
+
readonly status: number;
|
|
200
|
+
/**
|
|
201
|
+
* Content type of the underlying read.
|
|
202
|
+
*/
|
|
203
|
+
readonly content_type: string;
|
|
204
|
+
/**
|
|
205
|
+
* Whether this slice was truncated.
|
|
206
|
+
*/
|
|
207
|
+
readonly truncated: boolean;
|
|
208
|
+
/**
|
|
209
|
+
* Spanish error row when this range's read failed; the slice carries no
|
|
210
|
+
* content in that case.
|
|
211
|
+
*/
|
|
212
|
+
readonly error?: string;
|
|
213
|
+
/**
|
|
214
|
+
* Spanish model-facing note explaining an empty slice (offset beyond the
|
|
215
|
+
* captured content).
|
|
216
|
+
*/
|
|
217
|
+
readonly note?: string;
|
|
218
|
+
/**
|
|
219
|
+
* Whether more content exists beyond this slice (cursor reads).
|
|
220
|
+
*/
|
|
221
|
+
readonly has_more?: boolean;
|
|
222
|
+
/**
|
|
223
|
+
* Total captured characters for this cursor.
|
|
224
|
+
*/
|
|
225
|
+
readonly total_chars?: number;
|
|
226
|
+
/**
|
|
227
|
+
* Continuation cursor (cursor reads).
|
|
228
|
+
*/
|
|
229
|
+
readonly cursor?: string;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Grouped result for a `ranges` call (cursor fan-out or local slicing).
|
|
233
|
+
*/
|
|
234
|
+
export interface WebFetchToolRangesResult extends Record<string, unknown> {
|
|
235
|
+
/**
|
|
236
|
+
* Marker distinguishing grouped-range results.
|
|
237
|
+
*/
|
|
238
|
+
readonly range_applied: true;
|
|
239
|
+
/**
|
|
240
|
+
* Number of returned ranges.
|
|
241
|
+
*/
|
|
242
|
+
readonly range_count: number;
|
|
243
|
+
/**
|
|
244
|
+
* Range slices in request order.
|
|
245
|
+
*/
|
|
246
|
+
readonly ranges: readonly WebFetchRangeSlice[];
|
|
247
|
+
/**
|
|
248
|
+
* Whether at least one slice was truncated.
|
|
249
|
+
*/
|
|
250
|
+
readonly truncated: boolean;
|
|
251
|
+
/**
|
|
252
|
+
* Spanish continuation hint for the model.
|
|
253
|
+
*/
|
|
254
|
+
readonly range_hint: string;
|
|
255
|
+
/**
|
|
256
|
+
* URL the ranges were read from.
|
|
257
|
+
*/
|
|
258
|
+
readonly url: string;
|
|
259
|
+
/**
|
|
260
|
+
* Cursor backing the capture, when one exists.
|
|
261
|
+
*/
|
|
262
|
+
readonly cursor?: string;
|
|
263
|
+
/**
|
|
264
|
+
* Total capture size in characters, when the base read reported it.
|
|
265
|
+
*/
|
|
266
|
+
readonly total_chars?: number;
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* Result union for {@link WebFetchTool.execute}.
|
|
270
|
+
*/
|
|
271
|
+
export type WebFetchToolExecuteResult = WebFetchToolResult | WebFetchToolDeleteResult | WebFetchToolRangesResult;
|
|
113
272
|
/**
|
|
114
273
|
* Dependencies for {@link WebFetchTool}.
|
|
115
274
|
*/
|
|
@@ -141,18 +300,34 @@ export interface WebFetchToolDeps {
|
|
|
141
300
|
*/
|
|
142
301
|
readonly defaultMaxChars: number;
|
|
143
302
|
}
|
|
303
|
+
/**
|
|
304
|
+
* Maximum grouped ranges honored per call (parity with EnriCode).
|
|
305
|
+
*/
|
|
306
|
+
export declare const MAX_TOOL_RANGES = 10;
|
|
307
|
+
/**
|
|
308
|
+
* Maximum anchor-selector characters honored per call (parity with
|
|
309
|
+
* EnriCode's `WebFetchToolInputSchemaRecord.MAX_ANCHOR_CHARS` and
|
|
310
|
+
* EnriProxy's `WEB_FETCH_MAX_ANCHOR_CHARS`).
|
|
311
|
+
*
|
|
312
|
+
* @remarks
|
|
313
|
+
* The clamp is surrogate-safe through `sliceUtf8Safe`, so the unit is
|
|
314
|
+
* UTF-16 code units with pair safety at the cut. Single source for the
|
|
315
|
+
* parser clamp and the inputSchema `maxLength`/description so they can
|
|
316
|
+
* never drift apart.
|
|
317
|
+
*/
|
|
318
|
+
export declare const MAX_ANCHOR_CHARS = 300;
|
|
144
319
|
/**
|
|
145
320
|
* MCP tool that fetches URL content via EnriProxy.
|
|
146
321
|
*/
|
|
147
322
|
export declare class WebFetchTool {
|
|
148
323
|
/**
|
|
149
|
-
*
|
|
324
|
+
* npm package-page projection collaborator.
|
|
150
325
|
*/
|
|
151
|
-
private
|
|
326
|
+
private readonly npmProjection;
|
|
152
327
|
/**
|
|
153
|
-
*
|
|
328
|
+
* Grouped-ranges execution collaborator.
|
|
154
329
|
*/
|
|
155
|
-
private
|
|
330
|
+
private readonly rangesExecutor;
|
|
156
331
|
/**
|
|
157
332
|
* Tool dependencies.
|
|
158
333
|
*/
|
|
@@ -181,85 +356,15 @@ export declare class WebFetchTool {
|
|
|
181
356
|
*
|
|
182
357
|
* @param params - Validated parameters
|
|
183
358
|
* @param signal - Optional caller abort signal
|
|
184
|
-
* @returns Tool result
|
|
185
|
-
*/
|
|
186
|
-
execute(params: WebFetchToolParams, signal?: AbortSignal): Promise<WebFetchToolResult>;
|
|
187
|
-
/**
|
|
188
|
-
* Attempts to provide a higher-quality fetch for npm package pages.
|
|
189
|
-
*
|
|
190
|
-
* @param params - Tool parameters
|
|
191
|
-
* @param client - EnriProxy client
|
|
192
|
-
* @param maxChars - Maximum content length to return
|
|
193
|
-
* @param signal - Optional caller abort signal
|
|
194
|
-
* @returns Tool result if the URL is an npm package page, otherwise null
|
|
195
|
-
*/
|
|
196
|
-
private tryExecuteNpmPackageFetch;
|
|
197
|
-
/**
|
|
198
|
-
* Attempts to parse an npm package name from an npmjs.com package page URL.
|
|
199
|
-
*
|
|
200
|
-
* @param url - Parsed URL
|
|
201
|
-
* @returns npm package name (e.g. "chalk" or "@scope/name") or null
|
|
202
|
-
*/
|
|
203
|
-
private tryParseNpmPackageName;
|
|
204
|
-
/**
|
|
205
|
-
* Tries to parse a JSON object from a string.
|
|
206
|
-
*
|
|
207
|
-
* @param input - JSON string
|
|
208
|
-
* @returns Parsed object or null
|
|
209
|
-
*/
|
|
210
|
-
private tryParseJsonObject;
|
|
211
|
-
/**
|
|
212
|
-
* Extracts a string from an unknown value if possible.
|
|
213
|
-
*
|
|
214
|
-
* @param value - Unknown input
|
|
215
|
-
* @returns Trimmed string or null
|
|
216
|
-
*/
|
|
217
|
-
private tryGetString;
|
|
218
|
-
/**
|
|
219
|
-
* Extracts a repository URL from npm metadata.
|
|
220
|
-
*
|
|
221
|
-
* @param repository - Repository field value
|
|
222
|
-
* @returns Normalized URL string or null
|
|
223
|
-
*/
|
|
224
|
-
private tryGetRepositoryUrl;
|
|
225
|
-
/**
|
|
226
|
-
* Normalizes common git repository URL schemes into an https URL.
|
|
227
|
-
*
|
|
228
|
-
* @param rawUrl - Raw repository URL from metadata
|
|
229
|
-
* @returns Normalized URL string or null
|
|
230
|
-
*/
|
|
231
|
-
private normalizeRepositoryUrl;
|
|
232
|
-
/**
|
|
233
|
-
* Normalizes a GitHub repository URL to the canonical https form.
|
|
234
|
-
*
|
|
235
|
-
* @param repositoryUrl - Repository URL
|
|
236
|
-
* @returns Canonical GitHub repo URL (https://github.com/{owner}/{repo}) or null
|
|
237
|
-
*/
|
|
238
|
-
private tryNormalizeGitHubRepoUrl;
|
|
239
|
-
/**
|
|
240
|
-
* Attempts to fetch a GitHub repository README via raw.githubusercontent.com.
|
|
241
|
-
*
|
|
242
|
-
* @remarks
|
|
243
|
-
* All branch/filename candidates run in parallel and the first hit in
|
|
244
|
-
* preference order wins, so the worst case costs one timeout instead of
|
|
245
|
-
* one per candidate. Projection fields travel to the README sub-fetches;
|
|
246
|
-
* the registry metadata fetch stays raw because its JSON is parsed.
|
|
247
|
-
*
|
|
248
|
-
* @param client - EnriProxy client
|
|
249
|
-
* @param githubRepoUrl - Canonical GitHub repo URL
|
|
250
|
-
* @param maxChars - Maximum content length
|
|
251
|
-
* @param format - Optional content flavor for the README page
|
|
252
|
-
* @param content - Optional content scope for the README page
|
|
253
|
-
* @param signal - Optional caller abort signal
|
|
254
|
-
* @returns README content if found, otherwise null
|
|
359
|
+
* @returns Tool result (single read, delete outcome, or grouped ranges)
|
|
255
360
|
*/
|
|
256
|
-
|
|
361
|
+
execute(params: WebFetchToolParams, signal?: AbortSignal): Promise<WebFetchToolExecuteResult>;
|
|
257
362
|
/**
|
|
258
363
|
* Formats results for MCP text output.
|
|
259
364
|
*
|
|
260
|
-
* @param result - Tool result
|
|
365
|
+
* @param result - Tool result (single read, delete outcome, or ranges)
|
|
261
366
|
* @returns Formatted text
|
|
262
367
|
*/
|
|
263
|
-
formatOutput(result:
|
|
368
|
+
formatOutput(result: WebFetchToolExecuteResult): string;
|
|
264
369
|
}
|
|
265
370
|
//# sourceMappingURL=WebFetchTool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WebFetchTool.d.ts","sourceRoot":"","sources":["../../src/tools/WebFetchTool.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"WebFetchTool.d.ts","sourceRoot":"","sources":["../../src/tools/WebFetchTool.ts"],"names":[],"mappings":"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"}
|