@cyanheads/mcp-ts-core 0.11.0 → 0.11.2
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/AGENTS.md +9 -5
- package/CLAUDE.md +9 -5
- package/README.md +4 -2
- package/biome.json +2 -2
- package/changelog/0.11.x/0.11.0.md +0 -2
- package/changelog/0.11.x/0.11.1.md +74 -0
- package/changelog/0.11.x/0.11.2.md +98 -0
- package/dist/config/index.d.ts +10 -0
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +27 -13
- package/dist/config/index.js.map +1 -1
- package/dist/core/app.d.ts +37 -14
- package/dist/core/app.d.ts.map +1 -1
- package/dist/core/app.js +56 -23
- package/dist/core/app.js.map +1 -1
- package/dist/core/index.d.ts +1 -1
- package/dist/core/index.d.ts.map +1 -1
- package/dist/core/index.js.map +1 -1
- package/dist/core/worker.d.ts.map +1 -1
- package/dist/core/worker.js +35 -18
- package/dist/core/worker.js.map +1 -1
- package/dist/mcp-server/elicitation.d.ts +64 -0
- package/dist/mcp-server/elicitation.d.ts.map +1 -0
- package/dist/mcp-server/elicitation.js +81 -0
- package/dist/mcp-server/elicitation.js.map +1 -0
- package/dist/mcp-server/protocolSession.d.ts +34 -0
- package/dist/mcp-server/protocolSession.d.ts.map +1 -0
- package/dist/mcp-server/protocolSession.js +13 -0
- package/dist/mcp-server/protocolSession.js.map +1 -0
- package/dist/mcp-server/resources/resource-registration.d.ts +2 -1
- package/dist/mcp-server/resources/resource-registration.d.ts.map +1 -1
- package/dist/mcp-server/resources/resource-registration.js +6 -2
- package/dist/mcp-server/resources/resource-registration.js.map +1 -1
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts +7 -12
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts.map +1 -1
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js +24 -31
- package/dist/mcp-server/resources/utils/resourceHandlerFactory.js.map +1 -1
- package/dist/mcp-server/server.d.ts +3 -0
- package/dist/mcp-server/server.d.ts.map +1 -1
- package/dist/mcp-server/server.js +12 -2
- package/dist/mcp-server/server.js.map +1 -1
- package/dist/mcp-server/tools/tool-registration.d.ts +2 -1
- package/dist/mcp-server/tools/tool-registration.d.ts.map +1 -1
- package/dist/mcp-server/tools/tool-registration.js +6 -2
- package/dist/mcp-server/tools/tool-registration.js.map +1 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts +7 -13
- package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts.map +1 -1
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js +11 -44
- package/dist/mcp-server/tools/utils/toolHandlerFactory.js.map +1 -1
- package/dist/mcp-server/transports/http/httpErrorHandler.js +1 -1
- package/dist/mcp-server/transports/http/httpErrorHandler.js.map +1 -1
- package/dist/mcp-server/transports/http/httpServer.d.ts +2 -2
- package/dist/mcp-server/transports/http/httpServer.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/httpServer.js.map +1 -1
- package/dist/mcp-server/transports/http/httpTransport.d.ts +2 -2
- package/dist/mcp-server/transports/http/httpTransport.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/httpTransport.js +113 -55
- package/dist/mcp-server/transports/http/httpTransport.js.map +1 -1
- package/dist/mcp-server/transports/http/sessionStore.d.ts +17 -0
- package/dist/mcp-server/transports/http/sessionStore.d.ts.map +1 -1
- package/dist/mcp-server/transports/http/sessionStore.js +71 -0
- package/dist/mcp-server/transports/http/sessionStore.js.map +1 -1
- package/dist/mcp-server/transports/manager.d.ts +2 -6
- package/dist/mcp-server/transports/manager.d.ts.map +1 -1
- package/dist/mcp-server/transports/manager.js +4 -0
- package/dist/mcp-server/transports/manager.js.map +1 -1
- package/dist/services/canvas/core/CanvasRegistry.d.ts +2 -2
- package/dist/services/canvas/core/CanvasRegistry.d.ts.map +1 -1
- package/dist/services/canvas/core/CanvasRegistry.js +14 -3
- package/dist/services/canvas/core/CanvasRegistry.js.map +1 -1
- package/dist/services/canvas/core/DataCanvas.d.ts +1 -1
- package/dist/services/canvas/core/DataCanvas.d.ts.map +1 -1
- package/dist/services/canvas/core/DataCanvas.js +2 -2
- package/dist/services/canvas/core/DataCanvas.js.map +1 -1
- package/dist/services/canvas/providers/duckdb/DuckdbProvider.d.ts.map +1 -1
- package/dist/services/canvas/providers/duckdb/DuckdbProvider.js +11 -3
- package/dist/services/canvas/providers/duckdb/DuckdbProvider.js.map +1 -1
- package/dist/services/canvas/providers/duckdb/exportWriter.d.ts.map +1 -1
- package/dist/services/canvas/providers/duckdb/exportWriter.js +23 -2
- package/dist/services/canvas/providers/duckdb/exportWriter.js.map +1 -1
- package/dist/services/mirror/core/defineMirror.d.ts.map +1 -1
- package/dist/services/mirror/core/defineMirror.js +18 -7
- package/dist/services/mirror/core/defineMirror.js.map +1 -1
- package/dist/services/mirror/core/runner.d.ts.map +1 -1
- package/dist/services/mirror/core/runner.js +3 -0
- package/dist/services/mirror/core/runner.js.map +1 -1
- package/dist/services/mirror/index.d.ts +1 -1
- package/dist/services/mirror/index.d.ts.map +1 -1
- package/dist/services/mirror/index.js.map +1 -1
- package/dist/services/mirror/sqlite/sqliteMirrorStore.d.ts +20 -0
- package/dist/services/mirror/sqlite/sqliteMirrorStore.d.ts.map +1 -1
- package/dist/services/mirror/sqlite/sqliteMirrorStore.js +87 -8
- package/dist/services/mirror/sqlite/sqliteMirrorStore.js.map +1 -1
- package/dist/storage/core/StorageService.d.ts.map +1 -1
- package/dist/storage/core/StorageService.js +4 -1
- package/dist/storage/core/StorageService.js.map +1 -1
- package/dist/storage/core/storageValidation.d.ts +8 -0
- package/dist/storage/core/storageValidation.d.ts.map +1 -1
- package/dist/storage/core/storageValidation.js +38 -0
- package/dist/storage/core/storageValidation.js.map +1 -1
- package/dist/storage/providers/inMemory/inMemoryProvider.d.ts +1 -1
- package/dist/storage/providers/inMemory/inMemoryProvider.d.ts.map +1 -1
- package/dist/storage/providers/inMemory/inMemoryProvider.js +67 -25
- package/dist/storage/providers/inMemory/inMemoryProvider.js.map +1 -1
- package/dist/testing/fuzz.d.ts +5 -1
- package/dist/testing/fuzz.d.ts.map +1 -1
- package/dist/testing/fuzz.js +147 -37
- package/dist/testing/fuzz.js.map +1 -1
- package/dist/testing/index.d.ts +111 -1
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +139 -0
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/vitest.d.ts +86 -12
- package/dist/testing/vitest.d.ts.map +1 -1
- package/dist/testing/vitest.js +91 -11
- package/dist/testing/vitest.js.map +1 -1
- package/dist/utils/index.d.ts +1 -1
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +1 -1
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/network/fetchWithTimeout.d.ts +7 -6
- package/dist/utils/network/fetchWithTimeout.d.ts.map +1 -1
- package/dist/utils/network/fetchWithTimeout.js +141 -51
- package/dist/utils/network/fetchWithTimeout.js.map +1 -1
- package/dist/utils/network/httpError.d.ts.map +1 -1
- package/dist/utils/network/httpError.js +3 -2
- package/dist/utils/network/httpError.js.map +1 -1
- package/dist/utils/network/responseBody.d.ts +15 -0
- package/dist/utils/network/responseBody.d.ts.map +1 -0
- package/dist/utils/network/responseBody.js +63 -0
- package/dist/utils/network/responseBody.js.map +1 -0
- package/dist/utils/parsing/frontmatterParser.d.ts +3 -1
- package/dist/utils/parsing/frontmatterParser.d.ts.map +1 -1
- package/dist/utils/parsing/frontmatterParser.js +6 -7
- package/dist/utils/parsing/frontmatterParser.js.map +1 -1
- package/dist/utils/parsing/htmlExtractor.d.ts +4 -0
- package/dist/utils/parsing/htmlExtractor.d.ts.map +1 -1
- package/dist/utils/parsing/htmlExtractor.js +4 -5
- package/dist/utils/parsing/htmlExtractor.js.map +1 -1
- package/dist/utils/parsing/index.d.ts +1 -0
- package/dist/utils/parsing/index.d.ts.map +1 -1
- package/dist/utils/parsing/index.js +1 -0
- package/dist/utils/parsing/index.js.map +1 -1
- package/dist/utils/parsing/inputBudget.d.ts +28 -0
- package/dist/utils/parsing/inputBudget.d.ts.map +1 -0
- package/dist/utils/parsing/inputBudget.js +76 -0
- package/dist/utils/parsing/inputBudget.js.map +1 -0
- package/dist/utils/parsing/jsonParser.d.ts +3 -1
- package/dist/utils/parsing/jsonParser.d.ts.map +1 -1
- package/dist/utils/parsing/jsonParser.js +5 -6
- package/dist/utils/parsing/jsonParser.js.map +1 -1
- package/dist/utils/parsing/pdfParser.d.ts +11 -3
- package/dist/utils/parsing/pdfParser.d.ts.map +1 -1
- package/dist/utils/parsing/pdfParser.js +65 -50
- package/dist/utils/parsing/pdfParser.js.map +1 -1
- package/dist/utils/parsing/xmlParser.d.ts +3 -1
- package/dist/utils/parsing/xmlParser.d.ts.map +1 -1
- package/dist/utils/parsing/xmlParser.js +8 -6
- package/dist/utils/parsing/xmlParser.js.map +1 -1
- package/dist/utils/parsing/yamlParser.d.ts +3 -1
- package/dist/utils/parsing/yamlParser.d.ts.map +1 -1
- package/dist/utils/parsing/yamlParser.js +5 -6
- package/dist/utils/parsing/yamlParser.js.map +1 -1
- package/package.json +28 -26
- package/skills/api-testing/SKILL.md +65 -4
- package/skills/git-wrapup/SKILL.md +22 -1
- package/skills/security-pass/SKILL.md +2 -2
- package/templates/devcheck.config.json +1 -1
- package/templates/package.json +2 -0
- package/templates/tests/fuzz/echo-tool.fuzz.test.ts +20 -0
- package/templates/tests/integration/echo-contract.int.test.ts +25 -0
- package/templates/tests/smoke/definitions.smoke.test.ts +46 -0
- package/templates/vitest.config.ts +24 -27
- package/vitest.config.base.mjs +6 -0
- package/dist/logs/combined.log +0 -8
- package/dist/logs/error.log +0 -4
- package/dist/logs/interactions.log +0 -0
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Bounded response-body reader for error diagnostics.
|
|
3
|
+
* @module src/utils/network/responseBody
|
|
4
|
+
*/
|
|
5
|
+
export interface BoundedText {
|
|
6
|
+
text: string;
|
|
7
|
+
truncated: boolean;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* Reads at most `maxBytes` from a response body, then cancels the stream.
|
|
11
|
+
* This is intentionally destructive: callers use it only for non-success
|
|
12
|
+
* responses that will be converted into an error.
|
|
13
|
+
*/
|
|
14
|
+
export declare function readBoundedResponseText(response: Response, maxBytes: number): Promise<BoundedText>;
|
|
15
|
+
//# sourceMappingURL=responseBody.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responseBody.d.ts","sourceRoot":"","sources":["../../../src/utils/network/responseBody.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;CACpB;AAmBD;;;;GAIG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,QAAQ,EAClB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,WAAW,CAAC,CAsCtB"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Bounded response-body reader for error diagnostics.
|
|
3
|
+
* @module src/utils/network/responseBody
|
|
4
|
+
*/
|
|
5
|
+
function decodeUtf8Prefix(bytes) {
|
|
6
|
+
// A byte cap can split the final UTF-8 code point. Trim at most the maximum
|
|
7
|
+
// UTF-8 continuation width so a valid body never grows a replacement marker
|
|
8
|
+
// beyond the requested diagnostic budget.
|
|
9
|
+
const minimum = Math.max(0, bytes.byteLength - 3);
|
|
10
|
+
for (let end = bytes.byteLength; end >= minimum; end -= 1) {
|
|
11
|
+
try {
|
|
12
|
+
return new TextDecoder('utf-8', { fatal: true, ignoreBOM: false }).decode(bytes.subarray(0, end));
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
// Try the preceding byte boundary.
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
return new TextDecoder().decode(bytes);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Reads at most `maxBytes` from a response body, then cancels the stream.
|
|
22
|
+
* This is intentionally destructive: callers use it only for non-success
|
|
23
|
+
* responses that will be converted into an error.
|
|
24
|
+
*/
|
|
25
|
+
export async function readBoundedResponseText(response, maxBytes) {
|
|
26
|
+
const limit = Number.isSafeInteger(maxBytes) && maxBytes > 0 ? maxBytes : 0;
|
|
27
|
+
if (!response.body) {
|
|
28
|
+
return { text: await response.text(), truncated: false };
|
|
29
|
+
}
|
|
30
|
+
const reader = response.body.getReader();
|
|
31
|
+
const chunks = [];
|
|
32
|
+
// Keep reading until the limit is exceeded, not merely reached, so a body of
|
|
33
|
+
// exactly `limit` bytes is reported whole rather than marked truncated.
|
|
34
|
+
let read = 0;
|
|
35
|
+
while (read <= limit) {
|
|
36
|
+
const { done, value } = await reader.read();
|
|
37
|
+
if (done)
|
|
38
|
+
break;
|
|
39
|
+
chunks.push(value);
|
|
40
|
+
read += value.byteLength;
|
|
41
|
+
}
|
|
42
|
+
const truncated = read > limit;
|
|
43
|
+
if (truncated) {
|
|
44
|
+
try {
|
|
45
|
+
await reader.cancel('Response body diagnostic limit reached');
|
|
46
|
+
}
|
|
47
|
+
catch {
|
|
48
|
+
// The bounded capture remains valid if the producer rejects cancellation.
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
const captured = Math.min(read, limit);
|
|
52
|
+
const bytes = new Uint8Array(captured);
|
|
53
|
+
let offset = 0;
|
|
54
|
+
for (const chunk of chunks) {
|
|
55
|
+
if (offset >= captured)
|
|
56
|
+
break;
|
|
57
|
+
const accepted = chunk.subarray(0, captured - offset);
|
|
58
|
+
bytes.set(accepted, offset);
|
|
59
|
+
offset += accepted.byteLength;
|
|
60
|
+
}
|
|
61
|
+
return { text: decodeUtf8Prefix(bytes), truncated };
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=responseBody.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responseBody.js","sourceRoot":"","sources":["../../../src/utils/network/responseBody.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAOH,SAAS,gBAAgB,CAAC,KAAiB;IACzC,4EAA4E;IAC5E,4EAA4E;IAC5E,0CAA0C;IAC1C,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,UAAU,GAAG,CAAC,CAAC,CAAC;IAClD,KAAK,IAAI,GAAG,GAAG,KAAK,CAAC,UAAU,EAAE,GAAG,IAAI,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QAC1D,IAAI,CAAC;YACH,OAAO,IAAI,WAAW,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,CAAC,MAAM,CACvE,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CACvB,CAAC;QACJ,CAAC;QAAC,MAAM,CAAC;YACP,mCAAmC;QACrC,CAAC;IACH,CAAC;IACD,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AACzC,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,QAAkB,EAClB,QAAgB;IAEhB,MAAM,KAAK,GAAG,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;QACnB,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC;IAC3D,CAAC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACzC,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,6EAA6E;IAC7E,wEAAwE;IACxE,IAAI,IAAI,GAAG,CAAC,CAAC;IAEb,OAAO,IAAI,IAAI,KAAK,EAAE,CAAC;QACrB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;QAC5C,IAAI,IAAI;YAAE,MAAM;QAChB,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACnB,IAAI,IAAI,KAAK,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,GAAG,KAAK,CAAC;IAC/B,IAAI,SAAS,EAAE,CAAC;QACd,IAAI,CAAC;YACH,MAAM,MAAM,CAAC,MAAM,CAAC,wCAAwC,CAAC,CAAC;QAChE,CAAC;QAAC,MAAM,CAAC;YACP,0EAA0E;QAC5E,CAAC;IACH,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,IAAI,MAAM,IAAI,QAAQ;YAAE,MAAM;QAC9B,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC,CAAC;QACtD,KAAK,CAAC,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5B,MAAM,IAAI,QAAQ,CAAC,UAAU,CAAC;IAChC,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,gBAAgB,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,CAAC;AACtD,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type RequestContext } from '../../utils/internal/requestContext.js';
|
|
2
|
+
import { type ParserInputBudgetOptions } from './inputBudget.js';
|
|
2
3
|
/**
|
|
3
4
|
* Result of parsing markdown with frontmatter.
|
|
4
5
|
* @template T The expected type of the parsed frontmatter object.
|
|
@@ -36,6 +37,7 @@ export declare class FrontmatterParser {
|
|
|
36
37
|
* @template T - The expected shape of the parsed frontmatter object. Defaults to `unknown`.
|
|
37
38
|
* @param markdown - The markdown string that may contain a frontmatter block.
|
|
38
39
|
* @param context - Optional {@link RequestContext} used for correlated logging.
|
|
40
|
+
* @param budget - Optional UTF-8 byte budget for the input. Defaults to 1 MiB.
|
|
39
41
|
* @returns A {@link FrontmatterResult} with `frontmatter`, `content`, and `hasFrontmatter`.
|
|
40
42
|
* @throws {McpError} With code `ValidationError` if the YAML content is present but malformed.
|
|
41
43
|
* @example
|
|
@@ -49,7 +51,7 @@ export declare class FrontmatterParser {
|
|
|
49
51
|
* // result.hasFrontmatter → true
|
|
50
52
|
* ```
|
|
51
53
|
*/
|
|
52
|
-
parse<T = unknown>(markdown: string, context?: RequestContext): Promise<FrontmatterResult<T>>;
|
|
54
|
+
parse<T = unknown>(markdown: string, context?: RequestContext, budget?: ParserInputBudgetOptions): Promise<FrontmatterResult<T>>;
|
|
53
55
|
}
|
|
54
56
|
/**
|
|
55
57
|
* Singleton instance of {@link FrontmatterParser}.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontmatterParser.d.ts","sourceRoot":"","sources":["../../../src/utils/parsing/frontmatterParser.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,cAAc,EAAyB,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"frontmatterParser.d.ts","sourceRoot":"","sources":["../../../src/utils/parsing/frontmatterParser.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,KAAK,cAAc,EAAyB,MAAM,oCAAoC,CAAC;AAChG,OAAO,EAAyB,KAAK,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAYxF;;;GAGG;AACH,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,OAAO;IAC5C;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,WAAW,EAAE,CAAC,CAAC;IACf;;OAEG;IACH,cAAc,EAAE,OAAO,CAAC;CACzB;AAED;;;;GAIG;AACH,qBAAa,iBAAiB;IAC5B;;;;;;;;;;;;;;;;;;;;;;;;;OAyBG;IACG,KAAK,CAAC,CAAC,GAAG,OAAO,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,cAAc,EACxB,MAAM,CAAC,EAAE,wBAAwB,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CA2F/B;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
|
|
@@ -7,6 +7,7 @@
|
|
|
7
7
|
import { McpError, validationError } from '../../types-global/errors.js';
|
|
8
8
|
import { logger } from '../../utils/internal/logger.js';
|
|
9
9
|
import { requestContextService } from '../../utils/internal/requestContext.js';
|
|
10
|
+
import { assertTextInputBudget } from './inputBudget.js';
|
|
10
11
|
import { yamlParser } from './yamlParser.js';
|
|
11
12
|
/**
|
|
12
13
|
* Regular expression to extract frontmatter from markdown.
|
|
@@ -34,6 +35,7 @@ export class FrontmatterParser {
|
|
|
34
35
|
* @template T - The expected shape of the parsed frontmatter object. Defaults to `unknown`.
|
|
35
36
|
* @param markdown - The markdown string that may contain a frontmatter block.
|
|
36
37
|
* @param context - Optional {@link RequestContext} used for correlated logging.
|
|
38
|
+
* @param budget - Optional UTF-8 byte budget for the input. Defaults to 1 MiB.
|
|
37
39
|
* @returns A {@link FrontmatterResult} with `frontmatter`, `content`, and `hasFrontmatter`.
|
|
38
40
|
* @throws {McpError} With code `ValidationError` if the YAML content is present but malformed.
|
|
39
41
|
* @example
|
|
@@ -47,7 +49,8 @@ export class FrontmatterParser {
|
|
|
47
49
|
* // result.hasFrontmatter → true
|
|
48
50
|
* ```
|
|
49
51
|
*/
|
|
50
|
-
async parse(markdown, context) {
|
|
52
|
+
async parse(markdown, context, budget) {
|
|
53
|
+
assertTextInputBudget(markdown, budget);
|
|
51
54
|
const match = markdown.match(frontmatterRegex);
|
|
52
55
|
if (!match) {
|
|
53
56
|
// No frontmatter found - return original content
|
|
@@ -85,7 +88,7 @@ export class FrontmatterParser {
|
|
|
85
88
|
}
|
|
86
89
|
try {
|
|
87
90
|
// Use existing yamlParser for parsing (handles <think> blocks too)
|
|
88
|
-
const parsedFrontmatter = await yamlParser.parse(yamlContent, context);
|
|
91
|
+
const parsedFrontmatter = await yamlParser.parse(yamlContent, context, budget);
|
|
89
92
|
logger.debug('Frontmatter parsed successfully.', {
|
|
90
93
|
...logContext,
|
|
91
94
|
frontmatterKeys: parsedFrontmatter &&
|
|
@@ -115,11 +118,7 @@ export class FrontmatterParser {
|
|
|
115
118
|
if (error instanceof McpError) {
|
|
116
119
|
throw error;
|
|
117
120
|
}
|
|
118
|
-
throw validationError(
|
|
119
|
-
...context,
|
|
120
|
-
yamlContentSample: yamlContent.substring(0, 200) + (yamlContent.length > 200 ? '...' : ''),
|
|
121
|
-
rawError: error instanceof Error ? error.stack : String(error),
|
|
122
|
-
});
|
|
121
|
+
throw validationError('Failed to parse frontmatter content.', { reason: 'frontmatter_parse_failed' }, { cause: error });
|
|
123
122
|
}
|
|
124
123
|
}
|
|
125
124
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"frontmatterParser.js","sourceRoot":"","sources":["../../../src/utils/parsing/frontmatterParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAuB,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAChG,OAAO,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAE7C;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAG,uCAAuC,CAAC;AAsBjE;;;;GAIG;AACH,MAAM,OAAO,iBAAiB;IAC5B
|
|
1
|
+
{"version":3,"file":"frontmatterParser.js","sourceRoot":"","sources":["../../../src/utils/parsing/frontmatterParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -25,6 +25,10 @@ export interface ExtractArticleOptions {
|
|
|
25
25
|
* `'en'`, `'fr'`, `'ja'`).
|
|
26
26
|
*/
|
|
27
27
|
language?: string;
|
|
28
|
+
/**
|
|
29
|
+
* UTF-8 input budget in bytes. Defaults to 1 MiB; raise it for known-large pages.
|
|
30
|
+
*/
|
|
31
|
+
maxBytes?: number;
|
|
28
32
|
/**
|
|
29
33
|
* Strip all images from the extracted content. Defaults to `false`.
|
|
30
34
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"htmlExtractor.d.ts","sourceRoot":"","sources":["../../../src/utils/parsing/htmlExtractor.ts"],"names":[],"mappings":"AAgCA,OAAO,EAAE,KAAK,cAAc,EAAyB,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"htmlExtractor.d.ts","sourceRoot":"","sources":["../../../src/utils/parsing/htmlExtractor.ts"],"names":[],"mappings":"AAgCA,OAAO,EAAE,KAAK,cAAc,EAAyB,MAAM,oCAAoC,CAAC;AAsChG;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;OAGG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,CAAC;IAC7B;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;OAEG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB;;;OAGG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,mCAAmC;IACnC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,8EAA8E;IAC9E,OAAO,EAAE,MAAM,CAAC;IAChB,0EAA0E;IAC1E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sEAAsE;IACtE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qDAAqD;IACrD,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,4EAA4E;IAC5E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAClC,sDAAsD;IACtD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,+DAA+D;IAC/D,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kCAAkC;IAClC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,sEAAsE;IACtE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,qBAAa,aAAa;IACxB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACG,OAAO,CACX,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,qBAAqB,EAC/B,OAAO,CAAC,EAAE,cAAc,GACvB,OAAO,CAAC,oBAAoB,CAAC,CA6E/B;CACF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,aAAa,eAAsB,CAAC"}
|
|
@@ -2,6 +2,7 @@ import { McpError, validationError } from '../../types-global/errors.js';
|
|
|
2
2
|
import { lazyImport } from '../../utils/internal/lazyImport.js';
|
|
3
3
|
import { logger } from '../../utils/internal/logger.js';
|
|
4
4
|
import { requestContextService } from '../../utils/internal/requestContext.js';
|
|
5
|
+
import { assertTextInputBudget } from './inputBudget.js';
|
|
5
6
|
const getDefuddle = lazyImport(() => import('defuddle/node'), 'Install "defuddle" to use HTML article extraction: bun add defuddle linkedom');
|
|
6
7
|
const getLinkedom = lazyImport(() => import('linkedom'), 'Install "linkedom" to use HTML article extraction: bun add defuddle linkedom');
|
|
7
8
|
/** Flattens defuddle's `MetaTagItem[]` into a `Record<string, string>` keyed
|
|
@@ -64,6 +65,7 @@ export class HtmlExtractor {
|
|
|
64
65
|
* ```
|
|
65
66
|
*/
|
|
66
67
|
async extract(html, options, context) {
|
|
68
|
+
const byteLength = assertTextInputBudget(html, options);
|
|
67
69
|
const logContext = context ??
|
|
68
70
|
requestContextService.createRequestContext({
|
|
69
71
|
operation: 'HtmlExtractor.extract',
|
|
@@ -88,7 +90,7 @@ export class HtmlExtractor {
|
|
|
88
90
|
};
|
|
89
91
|
logger.debug('Extracting article content from HTML.', {
|
|
90
92
|
...logContext,
|
|
91
|
-
byteLength
|
|
93
|
+
byteLength,
|
|
92
94
|
format,
|
|
93
95
|
hasUrl: Boolean(options?.url),
|
|
94
96
|
hasContentSelector: Boolean(options?.contentSelector),
|
|
@@ -140,10 +142,7 @@ export class HtmlExtractor {
|
|
|
140
142
|
...logContext,
|
|
141
143
|
errorDetails: error.message,
|
|
142
144
|
});
|
|
143
|
-
throw validationError(
|
|
144
|
-
...context,
|
|
145
|
-
rawError: error.stack ?? String(error),
|
|
146
|
-
});
|
|
145
|
+
throw validationError('Failed to extract article from HTML.', { reason: 'html_extract_failed' }, { cause: error });
|
|
147
146
|
}
|
|
148
147
|
}
|
|
149
148
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"htmlExtractor.js","sourceRoot":"","sources":["../../../src/utils/parsing/htmlExtractor.ts"],"names":[],"mappings":"AA6BA,OAAO,EAAE,QAAQ,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAuB,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"htmlExtractor.js","sourceRoot":"","sources":["../../../src/utils/parsing/htmlExtractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,6 +8,7 @@ export { CsvParser, csvParser } from './csvParser.js';
|
|
|
8
8
|
export { dateParser, parseDateString, parseDateStringDetailed } from './dateParser.js';
|
|
9
9
|
export { FrontmatterParser, type FrontmatterResult, frontmatterParser, } from './frontmatterParser.js';
|
|
10
10
|
export { type ExtractArticleOptions, type ExtractArticleResult, HtmlExtractor, htmlExtractor, } from './htmlExtractor.js';
|
|
11
|
+
export { DEFAULT_BINARY_PARSER_MAX_BYTES, DEFAULT_TEXT_PARSER_MAX_BYTES, type ParserInputBudgetOptions, } from './inputBudget.js';
|
|
11
12
|
export { Allow, JsonParser, jsonParser } from './jsonParser.js';
|
|
12
13
|
export { type AddPageOptions, type DrawImageOptions, type DrawTextOptions, type EmbedImageOptions, type ExtractTextOptions, type ExtractTextResult, type FillFormOptions, type PageRange, type PdfMetadata, PdfParser, pdfParser, type SetMetadataOptions, } from './pdfParser.js';
|
|
13
14
|
export { thinkBlockRegex } from './thinkBlock.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/parsing/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EACL,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,aAAa,EACb,aAAa,GACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,SAAS,EACT,SAAS,EACT,KAAK,kBAAkB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/utils/parsing/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EACL,iBAAiB,EACjB,KAAK,iBAAiB,EACtB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,KAAK,qBAAqB,EAC1B,KAAK,oBAAoB,EACzB,aAAa,EACb,aAAa,GACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,+BAA+B,EAC/B,6BAA6B,EAC7B,KAAK,wBAAwB,GAC9B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,gBAAgB,EACrB,KAAK,eAAe,EACpB,KAAK,iBAAiB,EACtB,KAAK,kBAAkB,EACvB,KAAK,iBAAiB,EACtB,KAAK,eAAe,EACpB,KAAK,SAAS,EACd,KAAK,WAAW,EAChB,SAAS,EACT,SAAS,EACT,KAAK,kBAAkB,GACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -8,6 +8,7 @@ export { CsvParser, csvParser } from './csvParser.js';
|
|
|
8
8
|
export { dateParser, parseDateString, parseDateStringDetailed } from './dateParser.js';
|
|
9
9
|
export { FrontmatterParser, frontmatterParser, } from './frontmatterParser.js';
|
|
10
10
|
export { HtmlExtractor, htmlExtractor, } from './htmlExtractor.js';
|
|
11
|
+
export { DEFAULT_BINARY_PARSER_MAX_BYTES, DEFAULT_TEXT_PARSER_MAX_BYTES, } from './inputBudget.js';
|
|
11
12
|
export { Allow, JsonParser, jsonParser } from './jsonParser.js';
|
|
12
13
|
export { PdfParser, pdfParser, } from './pdfParser.js';
|
|
13
14
|
export { thinkBlockRegex } from './thinkBlock.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/parsing/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EACL,iBAAiB,EAEjB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAGL,aAAa,EACb,aAAa,GACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAUL,SAAS,EACT,SAAS,GAEV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/parsing/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AACvF,OAAO,EACL,iBAAiB,EAEjB,iBAAiB,GAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAGL,aAAa,EACb,aAAa,GACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,+BAA+B,EAC/B,6BAA6B,GAE9B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAChE,OAAO,EAUL,SAAS,EACT,SAAS,GAEV,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Input byte budgets shared by the parsing utilities. Bounds the
|
|
3
|
+
* work a single parse can schedule, so a hostile document cannot amplify a
|
|
4
|
+
* modest request into unbounded CPU or memory in the parser dependency.
|
|
5
|
+
* @module src/utils/parsing/inputBudget
|
|
6
|
+
*/
|
|
7
|
+
/** Default UTF-8 input budget for text parsers (1 MiB). */
|
|
8
|
+
export declare const DEFAULT_TEXT_PARSER_MAX_BYTES: number;
|
|
9
|
+
/** Default input budget for binary parsers (25 MiB). */
|
|
10
|
+
export declare const DEFAULT_BINARY_PARSER_MAX_BYTES: number;
|
|
11
|
+
/**
|
|
12
|
+
* Caller override for a parser's input budget. The defaults are a safe starting
|
|
13
|
+
* point rather than a security boundary — the input is already resident in
|
|
14
|
+
* memory by the time a parser sees it — so a caller that knowingly handles
|
|
15
|
+
* larger documents may raise as well as lower the limit.
|
|
16
|
+
*/
|
|
17
|
+
export interface ParserInputBudgetOptions {
|
|
18
|
+
maxBytes?: number;
|
|
19
|
+
}
|
|
20
|
+
/** Return the UTF-8 byte length without allocating a second copy of the input. */
|
|
21
|
+
export declare function utf8ByteLength(input: string): number;
|
|
22
|
+
/** Assert a text input fits its budget. Returns the input's UTF-8 byte length. */
|
|
23
|
+
export declare function assertTextInputBudget(input: string, options?: ParserInputBudgetOptions): number;
|
|
24
|
+
/** Assert a binary input fits its budget. Returns the input's byte length. */
|
|
25
|
+
export declare function assertBinaryInputBudget(input: Uint8Array | ArrayBuffer, options?: ParserInputBudgetOptions): number;
|
|
26
|
+
/** Assert a set of binary inputs fits one shared budget. Returns their combined byte length. */
|
|
27
|
+
export declare function assertBinaryInputsBudget(inputs: readonly (Uint8Array | ArrayBuffer)[], options?: ParserInputBudgetOptions): number;
|
|
28
|
+
//# sourceMappingURL=inputBudget.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inputBudget.d.ts","sourceRoot":"","sources":["../../../src/utils/parsing/inputBudget.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH,2DAA2D;AAC3D,eAAO,MAAM,6BAA6B,QAAc,CAAC;AAEzD,wDAAwD;AACxD,eAAO,MAAM,+BAA+B,QAAmB,CAAC;AAEhE;;;;;GAKG;AACH,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAgBD,kFAAkF;AAClF,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAyBpD;AAcD,kFAAkF;AAClF,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,wBAAwB,GAAG,MAAM,CAG/F;AAED,8EAA8E;AAC9E,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,UAAU,GAAG,WAAW,EAC/B,OAAO,CAAC,EAAE,wBAAwB,GACjC,MAAM,CAGR;AAED,gGAAgG;AAChG,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,SAAS,CAAC,UAAU,GAAG,WAAW,CAAC,EAAE,EAC7C,OAAO,CAAC,EAAE,wBAAwB,GACjC,MAAM,CAIR"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Input byte budgets shared by the parsing utilities. Bounds the
|
|
3
|
+
* work a single parse can schedule, so a hostile document cannot amplify a
|
|
4
|
+
* modest request into unbounded CPU or memory in the parser dependency.
|
|
5
|
+
* @module src/utils/parsing/inputBudget
|
|
6
|
+
*/
|
|
7
|
+
import { validationError } from '../../types-global/errors.js';
|
|
8
|
+
/** Default UTF-8 input budget for text parsers (1 MiB). */
|
|
9
|
+
export const DEFAULT_TEXT_PARSER_MAX_BYTES = 1024 * 1024;
|
|
10
|
+
/** Default input budget for binary parsers (25 MiB). */
|
|
11
|
+
export const DEFAULT_BINARY_PARSER_MAX_BYTES = 25 * 1024 * 1024;
|
|
12
|
+
function resolveLimit(options, defaultLimit) {
|
|
13
|
+
const requested = options?.maxBytes;
|
|
14
|
+
if (requested === undefined)
|
|
15
|
+
return defaultLimit;
|
|
16
|
+
if (!Number.isSafeInteger(requested) || requested < 1) {
|
|
17
|
+
throw validationError('Parser input byte limit must be a positive safe integer.', {
|
|
18
|
+
reason: 'parser_input_limit_invalid',
|
|
19
|
+
limitBytes: defaultLimit,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return requested;
|
|
23
|
+
}
|
|
24
|
+
/** Return the UTF-8 byte length without allocating a second copy of the input. */
|
|
25
|
+
export function utf8ByteLength(input) {
|
|
26
|
+
let bytes = 0;
|
|
27
|
+
for (let index = 0; index < input.length; index += 1) {
|
|
28
|
+
const codeUnit = input.charCodeAt(index);
|
|
29
|
+
if (codeUnit <= 0x7f) {
|
|
30
|
+
bytes += 1;
|
|
31
|
+
}
|
|
32
|
+
else if (codeUnit <= 0x7ff) {
|
|
33
|
+
bytes += 2;
|
|
34
|
+
}
|
|
35
|
+
else if (codeUnit >= 0xd800 &&
|
|
36
|
+
codeUnit <= 0xdbff &&
|
|
37
|
+
index + 1 < input.length &&
|
|
38
|
+
input.charCodeAt(index + 1) >= 0xdc00 &&
|
|
39
|
+
input.charCodeAt(index + 1) <= 0xdfff) {
|
|
40
|
+
bytes += 4;
|
|
41
|
+
index += 1;
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
// BMP characters and unpaired surrogates both encode as three bytes.
|
|
45
|
+
bytes += 3;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
return bytes;
|
|
49
|
+
}
|
|
50
|
+
function assertWithinLimit(sizeBytes, limitBytes) {
|
|
51
|
+
if (sizeBytes > limitBytes) {
|
|
52
|
+
throw validationError('Parser input exceeds the maximum allowed byte size.', {
|
|
53
|
+
reason: 'parser_input_too_large',
|
|
54
|
+
sizeBytes,
|
|
55
|
+
limitBytes,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return sizeBytes;
|
|
59
|
+
}
|
|
60
|
+
/** Assert a text input fits its budget. Returns the input's UTF-8 byte length. */
|
|
61
|
+
export function assertTextInputBudget(input, options) {
|
|
62
|
+
const limitBytes = resolveLimit(options, DEFAULT_TEXT_PARSER_MAX_BYTES);
|
|
63
|
+
return assertWithinLimit(utf8ByteLength(input), limitBytes);
|
|
64
|
+
}
|
|
65
|
+
/** Assert a binary input fits its budget. Returns the input's byte length. */
|
|
66
|
+
export function assertBinaryInputBudget(input, options) {
|
|
67
|
+
const limitBytes = resolveLimit(options, DEFAULT_BINARY_PARSER_MAX_BYTES);
|
|
68
|
+
return assertWithinLimit(input.byteLength, limitBytes);
|
|
69
|
+
}
|
|
70
|
+
/** Assert a set of binary inputs fits one shared budget. Returns their combined byte length. */
|
|
71
|
+
export function assertBinaryInputsBudget(inputs, options) {
|
|
72
|
+
const limitBytes = resolveLimit(options, DEFAULT_BINARY_PARSER_MAX_BYTES);
|
|
73
|
+
const sizeBytes = inputs.reduce((total, input) => total + input.byteLength, 0);
|
|
74
|
+
return assertWithinLimit(sizeBytes, limitBytes);
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=inputBudget.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"inputBudget.js","sourceRoot":"","sources":["../../../src/utils/parsing/inputBudget.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { type RequestContext } from '../../utils/internal/requestContext.js';
|
|
2
|
+
import { type ParserInputBudgetOptions } from './inputBudget.js';
|
|
2
3
|
/**
|
|
3
4
|
* Bit flags specifying which partial JSON types are permissible during parsing.
|
|
4
5
|
* Mirrors `partial-json`'s `Allow` constants. Combine flags with bitwise OR
|
|
@@ -68,6 +69,7 @@ export declare class JsonParser {
|
|
|
68
69
|
* @param allowPartial - Bitwise OR combination of `Allow` flags controlling which
|
|
69
70
|
* partial JSON types are accepted. Defaults to `Allow.ALL`.
|
|
70
71
|
* @param context - Optional `RequestContext` for correlated logging and error metadata.
|
|
72
|
+
* @param budget - Optional UTF-8 byte budget for the input. Defaults to 1 MiB.
|
|
71
73
|
* @returns The parsed JavaScript value cast to `T`.
|
|
72
74
|
* @throws {McpError} With `ValidationError` if the string is empty after stripping the
|
|
73
75
|
* `<think>` block and trimming, or if `partial-json` fails to parse the content.
|
|
@@ -86,7 +88,7 @@ export declare class JsonParser {
|
|
|
86
88
|
* console.log(result); // { items: [1, 2] }
|
|
87
89
|
* ```
|
|
88
90
|
*/
|
|
89
|
-
parse<T = unknown>(jsonString: string, allowPartial?: number, context?: RequestContext): Promise<T>;
|
|
91
|
+
parse<T = unknown>(jsonString: string, allowPartial?: number, context?: RequestContext, budget?: ParserInputBudgetOptions): Promise<T>;
|
|
90
92
|
}
|
|
91
93
|
/**
|
|
92
94
|
* Singleton instance of `JsonParser`.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonParser.d.ts","sourceRoot":"","sources":["../../../src/utils/parsing/jsonParser.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,cAAc,EAAyB,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"jsonParser.d.ts","sourceRoot":"","sources":["../../../src/utils/parsing/jsonParser.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,KAAK,cAAc,EAAyB,MAAM,oCAAoC,CAAC;AAChG,OAAO,EAAyB,KAAK,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAQxF;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,KAAK;IAChB,6BAA6B;aAC7B,GAAG,EAAE,CAAG;IACR,6BAA6B;aAC7B,GAAG,EAAE,CAAG;IACR,4BAA4B;aAC5B,GAAG,EAAE,CAAG;IACR,6BAA6B;aAC7B,GAAG,EAAE,CAAG;IACR,iCAAiC;aACjC,IAAI,EAAE,EAAI;IACV,8BAA8B;aAC9B,IAAI,EAAE,EAAI;IACV,wBAAwB;aACxB,GAAG,EAAE,EAAI;IACT,+BAA+B;aAC/B,QAAQ,EAAE,GAAI;IACd,+BAA+B;aAC/B,SAAS,EAAE,GAAK;IAChB,0EAA0E;aAC1E,GAAG;IACH,sEAAsE;aACtE,OAAO;IACP,8EAA8E;aAC9E,IAAI;IACJ,8CAA8C;aAC9C,UAAU;IACV,+BAA+B;aAC/B,GAAG;CACK,CAAC;AAEX;;;;;;;GAOG;AACH,qBAAa,UAAU;IACrB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAkCG;IACG,KAAK,CAAC,CAAC,GAAG,OAAO,EACrB,UAAU,EAAE,MAAM,EAClB,YAAY,GAAE,MAAkB,EAChC,OAAO,CAAC,EAAE,cAAc,EACxB,MAAM,CAAC,EAAE,wBAAwB,GAChC,OAAO,CAAC,CAAC,CAAC,CAyDZ;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,eAAO,MAAM,UAAU,YAAmB,CAAC"}
|
|
@@ -8,6 +8,7 @@ import { validationError } from '../../types-global/errors.js';
|
|
|
8
8
|
import { lazyImport } from '../../utils/internal/lazyImport.js';
|
|
9
9
|
import { logger } from '../../utils/internal/logger.js';
|
|
10
10
|
import { requestContextService } from '../../utils/internal/requestContext.js';
|
|
11
|
+
import { assertTextInputBudget } from './inputBudget.js';
|
|
11
12
|
import { thinkBlockRegex } from './thinkBlock.js';
|
|
12
13
|
const getPartialJson = lazyImport(() => import('partial-json'), 'Install "partial-json" to use partial JSON parsing: bun add partial-json');
|
|
13
14
|
/**
|
|
@@ -79,6 +80,7 @@ export class JsonParser {
|
|
|
79
80
|
* @param allowPartial - Bitwise OR combination of `Allow` flags controlling which
|
|
80
81
|
* partial JSON types are accepted. Defaults to `Allow.ALL`.
|
|
81
82
|
* @param context - Optional `RequestContext` for correlated logging and error metadata.
|
|
83
|
+
* @param budget - Optional UTF-8 byte budget for the input. Defaults to 1 MiB.
|
|
82
84
|
* @returns The parsed JavaScript value cast to `T`.
|
|
83
85
|
* @throws {McpError} With `ValidationError` if the string is empty after stripping the
|
|
84
86
|
* `<think>` block and trimming, or if `partial-json` fails to parse the content.
|
|
@@ -97,7 +99,8 @@ export class JsonParser {
|
|
|
97
99
|
* console.log(result); // { items: [1, 2] }
|
|
98
100
|
* ```
|
|
99
101
|
*/
|
|
100
|
-
async parse(jsonString, allowPartial = Allow.ALL, context) {
|
|
102
|
+
async parse(jsonString, allowPartial = Allow.ALL, context, budget) {
|
|
103
|
+
assertTextInputBudget(jsonString, budget);
|
|
101
104
|
let stringToParse = jsonString;
|
|
102
105
|
const match = jsonString.match(thinkBlockRegex);
|
|
103
106
|
if (match) {
|
|
@@ -137,11 +140,7 @@ export class JsonParser {
|
|
|
137
140
|
errorDetails: error.message,
|
|
138
141
|
contentAttempted: stringToParse.substring(0, 200),
|
|
139
142
|
});
|
|
140
|
-
throw validationError(
|
|
141
|
-
...context,
|
|
142
|
-
originalContentSample: stringToParse.substring(0, 200) + (stringToParse.length > 200 ? '...' : ''),
|
|
143
|
-
rawError: error instanceof Error ? error.stack : String(error),
|
|
144
|
-
});
|
|
143
|
+
throw validationError('Failed to parse JSON content.', { reason: 'json_parse_failed' }, { cause: error });
|
|
145
144
|
}
|
|
146
145
|
}
|
|
147
146
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jsonParser.js","sourceRoot":"","sources":["../../../src/utils/parsing/jsonParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAuB,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAChG,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,cAAc,GAAG,UAAU,CAC/B,GAAG,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,EAC5B,0EAA0E,CAC3E,CAAC;AAEF;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAC,MAAM,KAAK,GAAG;IACnB,6BAA6B;IAC7B,GAAG,EAAE,GAAG;IACR,6BAA6B;IAC7B,GAAG,EAAE,GAAG;IACR,4BAA4B;IAC5B,GAAG,EAAE,GAAG;IACR,6BAA6B;IAC7B,GAAG,EAAE,GAAG;IACR,iCAAiC;IACjC,IAAI,EAAE,IAAI;IACV,8BAA8B;IAC9B,IAAI,EAAE,IAAI;IACV,wBAAwB;IACxB,GAAG,EAAE,IAAI;IACT,+BAA+B;IAC/B,QAAQ,EAAE,IAAI;IACd,+BAA+B;IAC/B,SAAS,EAAE,KAAK;IAChB,0EAA0E;IAC1E,GAAG,EAAE,IAAI,GAAG,KAAK;IACjB,sEAAsE;IACtE,OAAO,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK;IAC1C,8EAA8E;IAC9E,IAAI,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK;IACnD,8CAA8C;IAC9C,UAAU,EAAE,GAAG,GAAG,GAAG;IACrB,+BAA+B;IAC/B,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,KAAK;CACtD,CAAC;AAEX;;;;;;;GAOG;AACH,MAAM,OAAO,UAAU;IACrB
|
|
1
|
+
{"version":3,"file":"jsonParser.js","sourceRoot":"","sources":["../../../src/utils/parsing/jsonParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,6 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { PDFDocument, PDFFont, PDFImage, PDFPage, RGB } from 'pdf-lib';
|
|
8
8
|
import { type RequestContext } from '../../utils/internal/requestContext.js';
|
|
9
|
+
import { type ParserInputBudgetOptions } from './inputBudget.js';
|
|
9
10
|
/**
|
|
10
11
|
* Options for adding a new page to a PDF document.
|
|
11
12
|
*/
|
|
@@ -73,6 +74,8 @@ export interface EmbedImageOptions {
|
|
|
73
74
|
* Image data as Uint8Array or ArrayBuffer.
|
|
74
75
|
*/
|
|
75
76
|
imageBytes: Uint8Array | ArrayBuffer;
|
|
77
|
+
/** Input budget in bytes. Defaults to 25 MiB; raise it for known-large images. */
|
|
78
|
+
maxBytes?: number;
|
|
76
79
|
}
|
|
77
80
|
/**
|
|
78
81
|
* Options for drawing an embedded image on a page.
|
|
@@ -208,6 +211,8 @@ export interface FillFormOptions {
|
|
|
208
211
|
* Options for extracting text from a PDF document.
|
|
209
212
|
*/
|
|
210
213
|
export interface ExtractTextOptions {
|
|
214
|
+
/** Input budget in bytes. Defaults to 25 MiB; raise it for known-large documents. */
|
|
215
|
+
maxBytes?: number;
|
|
211
216
|
/**
|
|
212
217
|
* Whether to merge all pages into a single string.
|
|
213
218
|
* If true, returns text as a single string.
|
|
@@ -263,6 +268,7 @@ export declare class PdfParser {
|
|
|
263
268
|
*
|
|
264
269
|
* @param pdfBytes - The PDF file contents as `Uint8Array` or `ArrayBuffer`.
|
|
265
270
|
* @param context - Optional `RequestContext` for correlated logging and error metadata.
|
|
271
|
+
* @param budget - Optional byte budget for the input. Defaults to 25 MiB.
|
|
266
272
|
* @returns The loaded `PDFDocument` instance.
|
|
267
273
|
* @throws {McpError} With `ConfigurationError` if `pdf-lib` is not installed.
|
|
268
274
|
* @throws {McpError} With `ValidationError` if the bytes are not a valid PDF.
|
|
@@ -273,7 +279,7 @@ export declare class PdfParser {
|
|
|
273
279
|
* const doc = await pdfParser.loadDocument(pdfBytes);
|
|
274
280
|
* ```
|
|
275
281
|
*/
|
|
276
|
-
loadDocument(pdfBytes: Uint8Array | ArrayBuffer, context?: RequestContext): Promise<PDFDocument>;
|
|
282
|
+
loadDocument(pdfBytes: Uint8Array | ArrayBuffer, context?: RequestContext, budget?: ParserInputBudgetOptions): Promise<PDFDocument>;
|
|
277
283
|
/**
|
|
278
284
|
* Adds a new blank page to a PDF document.
|
|
279
285
|
*
|
|
@@ -386,6 +392,7 @@ export declare class PdfParser {
|
|
|
386
392
|
*
|
|
387
393
|
* @param pdfBytesArray - Source PDF files as `Uint8Array` or `ArrayBuffer` elements.
|
|
388
394
|
* @param context - Optional `RequestContext` for correlated logging and error metadata.
|
|
395
|
+
* @param budget - Optional aggregate byte budget across all inputs. Defaults to 25 MiB.
|
|
389
396
|
* @returns A new `PDFDocument` containing all pages from the input documents.
|
|
390
397
|
* @throws {McpError} With `ConfigurationError` if `pdf-lib` is not installed.
|
|
391
398
|
* @throws {McpError} With `InternalError` if any source PDF is invalid or merging fails.
|
|
@@ -398,7 +405,7 @@ export declare class PdfParser {
|
|
|
398
405
|
* const bytes = await pdfParser.saveDocument(merged);
|
|
399
406
|
* ```
|
|
400
407
|
*/
|
|
401
|
-
mergePdfs(pdfBytesArray: (Uint8Array | ArrayBuffer)[], context?: RequestContext): Promise<PDFDocument>;
|
|
408
|
+
mergePdfs(pdfBytesArray: (Uint8Array | ArrayBuffer)[], context?: RequestContext, budget?: ParserInputBudgetOptions): Promise<PDFDocument>;
|
|
402
409
|
/**
|
|
403
410
|
* Splits a PDF document into multiple new documents based on page ranges.
|
|
404
411
|
*
|
|
@@ -409,6 +416,7 @@ export declare class PdfParser {
|
|
|
409
416
|
* @param pdfBytes - The source PDF as `Uint8Array` or `ArrayBuffer`.
|
|
410
417
|
* @param ranges - Page ranges to extract; each produces one output document.
|
|
411
418
|
* @param context - Optional `RequestContext` for correlated logging and error metadata.
|
|
419
|
+
* @param budget - Optional byte budget for the input. Defaults to 25 MiB.
|
|
412
420
|
* @returns An array of new `PDFDocument` instances, one per range, in order.
|
|
413
421
|
* @throws {McpError} With `ConfigurationError` if `pdf-lib` is not installed.
|
|
414
422
|
* @throws {McpError} With `InternalError` if the source PDF is invalid or a page index is out of bounds.
|
|
@@ -422,7 +430,7 @@ export declare class PdfParser {
|
|
|
422
430
|
* ]);
|
|
423
431
|
* ```
|
|
424
432
|
*/
|
|
425
|
-
splitPdf(pdfBytes: Uint8Array | ArrayBuffer, ranges: PageRange[], context?: RequestContext): Promise<PDFDocument[]>;
|
|
433
|
+
splitPdf(pdfBytes: Uint8Array | ArrayBuffer, ranges: PageRange[], context?: RequestContext, budget?: ParserInputBudgetOptions): Promise<PDFDocument[]>;
|
|
426
434
|
/**
|
|
427
435
|
* Fills form fields in a PDF document.
|
|
428
436
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pdfParser.d.ts","sourceRoot":"","sources":["../../../src/utils/parsing/pdfParser.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,SAAS,CAAC;AAK5E,OAAO,EAAE,KAAK,cAAc,EAAyB,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"pdfParser.d.ts","sourceRoot":"","sources":["../../../src/utils/parsing/pdfParser.ts"],"names":[],"mappings":"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"}
|