@cyanheads/mcp-ts-core 0.11.2 → 0.11.3
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 +14 -10
- package/CLAUDE.md +14 -10
- package/README.md +3 -3
- package/changelog/0.11.x/0.11.3.md +49 -0
- package/dist/config/index.d.ts +0 -10
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -25
- package/dist/config/index.js.map +1 -1
- package/dist/config/logLevelAlias.d.ts +15 -0
- package/dist/config/logLevelAlias.d.ts.map +1 -0
- package/dist/config/logLevelAlias.js +30 -0
- package/dist/config/logLevelAlias.js.map +1 -0
- package/dist/core/context.d.ts +10 -0
- package/dist/core/context.d.ts.map +1 -1
- package/dist/core/context.js +10 -1
- package/dist/core/context.js.map +1 -1
- package/dist/core/worker.js +1 -1
- package/dist/core/worker.js.map +1 -1
- package/dist/logs/combined.log +16 -0
- package/dist/logs/error.log +12 -0
- package/dist/logs/interactions.log +0 -0
- package/dist/services/mirror/sqlite/sqliteMirrorStore.d.ts +10 -10
- package/dist/services/mirror/sqlite/sqliteMirrorStore.d.ts.map +1 -1
- package/dist/services/mirror/sqlite/sqliteMirrorStore.js +29 -24
- package/dist/services/mirror/sqlite/sqliteMirrorStore.js.map +1 -1
- package/dist/storage/core/storageValidation.d.ts +4 -4
- package/dist/storage/core/storageValidation.d.ts.map +1 -1
- package/dist/storage/core/storageValidation.js +4 -20
- package/dist/storage/core/storageValidation.js.map +1 -1
- package/dist/testing/index.d.ts +45 -13
- package/dist/testing/index.d.ts.map +1 -1
- package/dist/testing/index.js +29 -76
- package/dist/testing/index.js.map +1 -1
- package/dist/testing/vitest.d.ts +1 -1
- package/dist/utils/formatting/diffFormatter.d.ts +5 -5
- package/dist/utils/formatting/diffFormatter.d.ts.map +1 -1
- package/dist/utils/formatting/diffFormatter.js +1 -1
- package/dist/utils/formatting/diffFormatter.js.map +1 -1
- package/dist/utils/formatting/tableFormatter.d.ts +3 -3
- package/dist/utils/formatting/tableFormatter.d.ts.map +1 -1
- package/dist/utils/formatting/tableFormatter.js +1 -1
- package/dist/utils/formatting/tableFormatter.js.map +1 -1
- package/dist/utils/formatting/treeFormatter.d.ts +3 -3
- package/dist/utils/formatting/treeFormatter.d.ts.map +1 -1
- package/dist/utils/formatting/treeFormatter.js +1 -1
- package/dist/utils/formatting/treeFormatter.js.map +1 -1
- package/dist/utils/metrics/tokenCounter.d.ts +3 -3
- package/dist/utils/metrics/tokenCounter.d.ts.map +1 -1
- package/dist/utils/metrics/tokenCounter.js.map +1 -1
- package/dist/utils/network/fetchWithTimeout.d.ts +43 -15
- package/dist/utils/network/fetchWithTimeout.d.ts.map +1 -1
- package/dist/utils/network/fetchWithTimeout.js +163 -44
- 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 +1 -2
- package/dist/utils/network/httpError.js.map +1 -1
- package/dist/utils/network/responseBody.d.ts +27 -7
- package/dist/utils/network/responseBody.d.ts.map +1 -1
- package/dist/utils/network/responseBody.js +54 -13
- package/dist/utils/network/responseBody.js.map +1 -1
- package/dist/utils/network/retry.d.ts +2 -2
- package/dist/utils/network/retry.d.ts.map +1 -1
- package/dist/utils/pagination/pagination.d.ts +3 -3
- package/dist/utils/pagination/pagination.d.ts.map +1 -1
- package/dist/utils/pagination/pagination.js.map +1 -1
- package/dist/utils/parsing/csvParser.d.ts +2 -2
- package/dist/utils/parsing/csvParser.d.ts.map +1 -1
- package/dist/utils/parsing/csvParser.js +1 -1
- package/dist/utils/parsing/csvParser.js.map +1 -1
- package/dist/utils/parsing/dateParser.d.ts +11 -7
- package/dist/utils/parsing/dateParser.d.ts.map +1 -1
- package/dist/utils/parsing/dateParser.js +8 -4
- package/dist/utils/parsing/dateParser.js.map +1 -1
- package/dist/utils/parsing/frontmatterParser.d.ts +5 -4
- package/dist/utils/parsing/frontmatterParser.d.ts.map +1 -1
- package/dist/utils/parsing/frontmatterParser.js +5 -4
- package/dist/utils/parsing/frontmatterParser.js.map +1 -1
- package/dist/utils/parsing/htmlExtractor.d.ts +5 -4
- package/dist/utils/parsing/htmlExtractor.d.ts.map +1 -1
- package/dist/utils/parsing/htmlExtractor.js +4 -3
- package/dist/utils/parsing/htmlExtractor.js.map +1 -1
- package/dist/utils/parsing/inputBudget.d.ts +18 -11
- package/dist/utils/parsing/inputBudget.d.ts.map +1 -1
- package/dist/utils/parsing/inputBudget.js +20 -17
- package/dist/utils/parsing/inputBudget.js.map +1 -1
- package/dist/utils/parsing/jsonParser.d.ts +5 -4
- package/dist/utils/parsing/jsonParser.d.ts.map +1 -1
- package/dist/utils/parsing/jsonParser.js +5 -4
- package/dist/utils/parsing/jsonParser.js.map +1 -1
- package/dist/utils/parsing/pdfParser.d.ts +38 -24
- package/dist/utils/parsing/pdfParser.d.ts.map +1 -1
- package/dist/utils/parsing/pdfParser.js +42 -31
- package/dist/utils/parsing/pdfParser.js.map +1 -1
- package/dist/utils/parsing/xmlParser.d.ts +3 -3
- package/dist/utils/parsing/xmlParser.d.ts.map +1 -1
- package/dist/utils/parsing/xmlParser.js +3 -6
- package/dist/utils/parsing/xmlParser.js.map +1 -1
- package/dist/utils/parsing/yamlParser.d.ts +3 -3
- package/dist/utils/parsing/yamlParser.d.ts.map +1 -1
- package/dist/utils/parsing/yamlParser.js +3 -3
- package/dist/utils/parsing/yamlParser.js.map +1 -1
- package/dist/utils/security/rateLimiter.d.ts +2 -2
- package/dist/utils/security/rateLimiter.d.ts.map +1 -1
- package/dist/utils/security/rateLimiter.js +1 -1
- package/dist/utils/security/rateLimiter.js.map +1 -1
- package/dist/utils/telemetry/trace.d.ts +3 -3
- package/dist/utils/telemetry/trace.d.ts.map +1 -1
- package/dist/utils/telemetry/trace.js.map +1 -1
- package/package.json +1 -1
- package/skills/add-test/SKILL.md +2 -2
- package/skills/api-auth/SKILL.md +5 -5
- package/skills/api-context/SKILL.md +13 -12
- package/skills/api-testing/SKILL.md +29 -10
- package/skills/api-utils/SKILL.md +4 -2
- package/skills/api-utils/references/parsing.md +3 -2
- package/templates/AGENTS.md +1 -1
- package/templates/CLAUDE.md +1 -1
|
@@ -2,6 +2,8 @@
|
|
|
2
2
|
* @fileoverview Bounded response-body reader for error diagnostics.
|
|
3
3
|
* @module src/utils/network/responseBody
|
|
4
4
|
*/
|
|
5
|
+
/** Share of the capture budget spent on the head of an over-budget body. */
|
|
6
|
+
const HEAD_SHARE = 0.4;
|
|
5
7
|
function decodeUtf8Prefix(bytes) {
|
|
6
8
|
// A byte cap can split the final UTF-8 code point. Trim at most the maximum
|
|
7
9
|
// UTF-8 continuation width so a valid body never grows a replacement marker
|
|
@@ -17,30 +19,55 @@ function decodeUtf8Prefix(bytes) {
|
|
|
17
19
|
}
|
|
18
20
|
return new TextDecoder().decode(bytes);
|
|
19
21
|
}
|
|
22
|
+
/** Mirror of {@link decodeUtf8Prefix} for a slice taken from the end of a body. */
|
|
23
|
+
function decodeUtf8Suffix(bytes) {
|
|
24
|
+
const maximum = Math.min(3, bytes.byteLength);
|
|
25
|
+
for (let start = 0; start <= maximum; start += 1) {
|
|
26
|
+
try {
|
|
27
|
+
return new TextDecoder('utf-8', { fatal: true, ignoreBOM: false }).decode(bytes.subarray(start));
|
|
28
|
+
}
|
|
29
|
+
catch {
|
|
30
|
+
// Drop the leading continuation byte and try the next boundary.
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
return new TextDecoder().decode(bytes);
|
|
34
|
+
}
|
|
35
|
+
function positiveOrZero(value) {
|
|
36
|
+
return value !== undefined && Number.isSafeInteger(value) && value > 0 ? value : 0;
|
|
37
|
+
}
|
|
20
38
|
/**
|
|
21
|
-
* Reads
|
|
22
|
-
*
|
|
23
|
-
*
|
|
39
|
+
* Reads a response body under a byte budget and returns display-ready
|
|
40
|
+
* diagnostic text — elision markers included, so callers append nothing.
|
|
41
|
+
* At most `maxBytes` of body content is retained; the stream is cancelled once
|
|
42
|
+
* the scan ceiling is passed.
|
|
43
|
+
*
|
|
44
|
+
* This is intentionally destructive: callers use it only for responses that
|
|
45
|
+
* will be converted into an error.
|
|
46
|
+
*
|
|
47
|
+
* @param response - The response whose body is captured (consumed).
|
|
48
|
+
* @param maxBytes - Body bytes retained in the returned text.
|
|
49
|
+
* @param options - See {@link BoundedReadOptions.scanBytes} for head+tail capture.
|
|
24
50
|
*/
|
|
25
|
-
export async function readBoundedResponseText(response, maxBytes) {
|
|
26
|
-
const limit =
|
|
51
|
+
export async function readBoundedResponseText(response, maxBytes, options = {}) {
|
|
52
|
+
const limit = positiveOrZero(maxBytes);
|
|
53
|
+
const scan = Math.max(limit, positiveOrZero(options.scanBytes));
|
|
27
54
|
if (!response.body) {
|
|
28
|
-
return
|
|
55
|
+
return await response.text();
|
|
29
56
|
}
|
|
30
57
|
const reader = response.body.getReader();
|
|
31
58
|
const chunks = [];
|
|
32
|
-
// Keep reading until the
|
|
33
|
-
// exactly `
|
|
59
|
+
// Keep reading until the ceiling is exceeded, not merely reached, so a body of
|
|
60
|
+
// exactly `scan` bytes is known to be whole rather than assumed truncated.
|
|
34
61
|
let read = 0;
|
|
35
|
-
while (read <=
|
|
62
|
+
while (read <= scan) {
|
|
36
63
|
const { done, value } = await reader.read();
|
|
37
64
|
if (done)
|
|
38
65
|
break;
|
|
39
66
|
chunks.push(value);
|
|
40
67
|
read += value.byteLength;
|
|
41
68
|
}
|
|
42
|
-
const
|
|
43
|
-
if (
|
|
69
|
+
const stillStreaming = read > scan;
|
|
70
|
+
if (stillStreaming) {
|
|
44
71
|
try {
|
|
45
72
|
await reader.cancel('Response body diagnostic limit reached');
|
|
46
73
|
}
|
|
@@ -48,7 +75,7 @@ export async function readBoundedResponseText(response, maxBytes) {
|
|
|
48
75
|
// The bounded capture remains valid if the producer rejects cancellation.
|
|
49
76
|
}
|
|
50
77
|
}
|
|
51
|
-
const captured = Math.min(read,
|
|
78
|
+
const captured = Math.min(read, scan);
|
|
52
79
|
const bytes = new Uint8Array(captured);
|
|
53
80
|
let offset = 0;
|
|
54
81
|
for (const chunk of chunks) {
|
|
@@ -58,6 +85,20 @@ export async function readBoundedResponseText(response, maxBytes) {
|
|
|
58
85
|
bytes.set(accepted, offset);
|
|
59
86
|
offset += accepted.byteLength;
|
|
60
87
|
}
|
|
61
|
-
|
|
88
|
+
if (read <= limit)
|
|
89
|
+
return decodeUtf8Prefix(bytes);
|
|
90
|
+
// The tail was never read — keep the head and say so.
|
|
91
|
+
if (stillStreaming)
|
|
92
|
+
return `${decodeUtf8Prefix(bytes.subarray(0, limit))}…`;
|
|
93
|
+
// The whole document was read and is over budget: keep both ends, since the
|
|
94
|
+
// opening bytes are the least informative part of a wrapped error document.
|
|
95
|
+
const head = Math.floor(limit * HEAD_SHARE);
|
|
96
|
+
const tail = limit - head;
|
|
97
|
+
const elided = captured - limit;
|
|
98
|
+
return [
|
|
99
|
+
decodeUtf8Prefix(bytes.subarray(0, head)),
|
|
100
|
+
`…[${elided} byte${elided === 1 ? '' : 's'} elided]…`,
|
|
101
|
+
decodeUtf8Suffix(bytes.subarray(captured - tail)),
|
|
102
|
+
].join('');
|
|
62
103
|
}
|
|
63
104
|
//# sourceMappingURL=responseBody.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"responseBody.js","sourceRoot":"","sources":["../../../src/utils/network/responseBody.ts"],"names":[],"mappings":"AAAA;;;GAGG;
|
|
1
|
+
{"version":3,"file":"responseBody.js","sourceRoot":"","sources":["../../../src/utils/network/responseBody.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type { RequestContext } from '../../utils/internal/requestContext.js';
|
|
1
|
+
import type { RequestContext, RequestContextLike } from '../../utils/internal/requestContext.js';
|
|
2
2
|
/** Configuration for {@link withRetry}. */
|
|
3
3
|
export interface RetryOptions {
|
|
4
4
|
/**
|
|
@@ -17,7 +17,7 @@ export interface RetryOptions {
|
|
|
17
17
|
* safe — the logger strips non-serializable fields (`signal`, `log`,
|
|
18
18
|
* `state`, protocol method handles) before pino sees them.
|
|
19
19
|
*/
|
|
20
|
-
context?: RequestContext;
|
|
20
|
+
context?: RequestContextLike | RequestContext;
|
|
21
21
|
/**
|
|
22
22
|
* Custom predicate to determine if an error is transient and should be
|
|
23
23
|
* retried. When provided, this **replaces** the default predicate entirely
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../src/utils/network/retry.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"retry.d.ts","sourceRoot":"","sources":["../../../src/utils/network/retry.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAY7F,2CAA2C;AAC3C,MAAM,WAAW,YAAY;IAC3B;;;;;;;;OAQG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB;;;;;OAKG;IACH,OAAO,CAAC,EAAE,kBAAkB,GAAG,cAAc,CAAC;IAE9C;;;;;;;;;;OAUG;IACH,WAAW,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC;IAE1C;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;;;;OAOG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IAEnB;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AA8GD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6CG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,GAAE,YAAiB,GAAG,OAAO,CAAC,CAAC,CAAC,CAgE/F"}
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
* @see {@link https://modelcontextprotocol.io/specification/2025-06-18/utils/pagination | MCP Pagination Spec}
|
|
12
12
|
* @module src/utils/pagination/pagination
|
|
13
13
|
*/
|
|
14
|
-
import type { RequestContext } from '../../utils/internal/requestContext.js';
|
|
14
|
+
import type { RequestContext, RequestContextLike } from '../../utils/internal/requestContext.js';
|
|
15
15
|
/**
|
|
16
16
|
* Generic pagination state that can be encoded into a cursor.
|
|
17
17
|
* Implementations can extend this with additional fields as needed.
|
|
@@ -72,7 +72,7 @@ export declare function encodeCursor(state: PaginationState): string;
|
|
|
72
72
|
* const state = decodeCursor(req.params.cursor, ctx);
|
|
73
73
|
* // state.offset and state.limit are safe to use directly
|
|
74
74
|
*/
|
|
75
|
-
export declare function decodeCursor(cursor: string, context: RequestContext): PaginationState;
|
|
75
|
+
export declare function decodeCursor(cursor: string, context: RequestContextLike | RequestContext): PaginationState;
|
|
76
76
|
/**
|
|
77
77
|
* Extracts the cursor parameter from an MCP request's params object.
|
|
78
78
|
* Checks `params.cursor` first, then falls back to `params._meta.cursor`,
|
|
@@ -130,7 +130,7 @@ export declare function extractCursor(params?: {
|
|
|
130
130
|
* const page3 = paginateArray(allItems, page2.nextCursor, 2, 100, ctx);
|
|
131
131
|
* // => { items: ['e'], totalCount: 5 } (no nextCursor)
|
|
132
132
|
*/
|
|
133
|
-
export declare function paginateArray<T>(items: T[], cursorStr: string | undefined, defaultPageSize: number, maxPageSize: number, context: RequestContext): PaginatedResult<T>;
|
|
133
|
+
export declare function paginateArray<T>(items: T[], cursorStr: string | undefined, defaultPageSize: number, maxPageSize: number, context: RequestContextLike | RequestContext): PaginatedResult<T>;
|
|
134
134
|
/**
|
|
135
135
|
* Default pagination configuration values used by {@link paginateArray} callers.
|
|
136
136
|
* These serve as sensible defaults; individual call sites may pass different values
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../src/utils/pagination/pagination.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"pagination.d.ts","sourceRoot":"","sources":["../../../src/utils/pagination/pagination.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAKH,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAE7F;;;;GAIG;AACH,MAAM,WAAW,eAAe;IAC9B,mEAAmE;IACnE,KAAK,EAAE,MAAM,CAAC;IACd,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,iFAAiF;IAEjF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED;;;;GAIG;AACH,MAAM,WAAW,eAAe,CAAC,CAAC;IAChC,iCAAiC;IACjC,KAAK,EAAE,CAAC,EAAE,CAAC;IACX;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,KAAK,EAAE,eAAe,GAAG,MAAM,CAc3D;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,kBAAkB,GAAG,cAAc,GAC3C,eAAe,CA6BjB;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,aAAa,CAAC,MAAM,CAAC,EAAE;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;CAC7B,GAAG,MAAM,GAAG,SAAS,CAErB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAC7B,KAAK,EAAE,CAAC,EAAE,EACV,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,kBAAkB,GAAG,cAAc,GAC3C,eAAe,CAAC,CAAC,CAAC,CAmCpB;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,yBAAyB;IACpC,uCAAuC;aACvC,iBAAiB,EAAE,EAAE;IACrB,qCAAqC;aACrC,aAAa,EAAE,IAAI;IACnB,qCAAqC;aACrC,aAAa,EAAE,CAAC;CACR,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../../src/utils/pagination/pagination.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAAE,aAAa,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,0BAA0B,CAAC;AACrF,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAsCpD;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,YAAY,CAAC,KAAsB;IACjD,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACzC,yEAAyE;QACzE,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC;aACtC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;aACnB,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;aACnB,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;QACtB,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAc,EAAE,CAAC;QACxB,MAAM,IAAI,QAAQ,CAAC,gBAAgB,CAAC,aAAa,EAAE,oCAAoC,EAAE;YACvF,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;SAC9D,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,UAAU,YAAY,
|
|
1
|
+
{"version":3,"file":"pagination.js","sourceRoot":"","sources":["../../../src/utils/pagination/pagination.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
* @module src/utils/parsing/csvParser
|
|
9
9
|
*/
|
|
10
10
|
import type Papa from 'papaparse';
|
|
11
|
-
import { type RequestContext } from '../../utils/internal/requestContext.js';
|
|
11
|
+
import { type RequestContext, type RequestContextLike } from '../../utils/internal/requestContext.js';
|
|
12
12
|
/**
|
|
13
13
|
* Utility class for parsing CSV strings.
|
|
14
14
|
*
|
|
@@ -54,7 +54,7 @@ export declare class CsvParser {
|
|
|
54
54
|
* console.log(fromLlm.data[0]); // { a: '1', b: '2' }
|
|
55
55
|
* ```
|
|
56
56
|
*/
|
|
57
|
-
parse<T = unknown>(csvString: string, options?: Papa.ParseConfig, context?: RequestContext): Promise<Papa.ParseResult<T>>;
|
|
57
|
+
parse<T = unknown>(csvString: string, options?: Papa.ParseConfig, context?: RequestContextLike | RequestContext): Promise<Papa.ParseResult<T>>;
|
|
58
58
|
}
|
|
59
59
|
/**
|
|
60
60
|
* Singleton instance of {@link CsvParser}.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csvParser.d.ts","sourceRoot":"","sources":["../../../src/utils/parsing/csvParser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAKlC,OAAO,
|
|
1
|
+
{"version":3,"file":"csvParser.d.ts","sourceRoot":"","sources":["../../../src/utils/parsing/csvParser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAKlC,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,kBAAkB,EAExB,MAAM,oCAAoC,CAAC;AAkB5C;;;;;;;GAOG;AACH,qBAAa,SAAS;IACpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACG,KAAK,CAAC,CAAC,GAAG,OAAO,EACrB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,IAAI,CAAC,WAAW,EAC1B,OAAO,CAAC,EAAE,kBAAkB,GAAG,cAAc,GAC5C,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CA4D9B;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,eAAO,MAAM,SAAS,WAAkB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { 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
|
-
import { requestContextService } from '../../utils/internal/requestContext.js';
|
|
4
|
+
import { requestContextService, } from '../../utils/internal/requestContext.js';
|
|
5
5
|
import { thinkBlockRegex } from './thinkBlock.js';
|
|
6
6
|
const importPapa = lazyImport(() => import('papaparse'), 'Install "papaparse" to use CSV parsing: bun add papaparse');
|
|
7
7
|
let _papa;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"csvParser.js","sourceRoot":"","sources":["../../../src/utils/parsing/csvParser.ts"],"names":[],"mappings":"AAWA,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,
|
|
1
|
+
{"version":3,"file":"csvParser.js","sourceRoot":"","sources":["../../../src/utils/parsing/csvParser.ts"],"names":[],"mappings":"AAWA,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,EAGL,qBAAqB,GACtB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAElD,MAAM,UAAU,GAAG,UAAU,CAC3B,GAAG,EAAE,CAAC,MAAM,CAAC,WAAW,CAAC,EACzB,2DAA2D,CAC5D,CAAC;AAEF,IAAI,KAA8B,CAAC;AACnC,KAAK,UAAU,OAAO;IACpB,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,GAAG,GAAG,MAAM,UAAU,EAAE,CAAC;QAC/B,qDAAqD;QACrD,KAAK,GAAG,CAAC,SAAS,IAAI,GAAG,CAAC,CAAC,CAAE,GAAG,CAAC,OAAuB,CAAC,CAAC,CAAC,GAAG,CAAgB,CAAC;IACjF,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,OAAO,SAAS;IACpB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACH,KAAK,CAAC,KAAK,CACT,SAAiB,EACjB,OAA0B,EAC1B,OAA6C;QAE7C,IAAI,aAAa,GAAG,SAAS,CAAC;QAC9B,MAAM,KAAK,GAAG,SAAS,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAE/C,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;YAC5C,MAAM,YAAY,GAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;YAEpC,MAAM,UAAU,GACd,OAAO;gBACP,qBAAqB,CAAC,oBAAoB,CAAC;oBACzC,SAAS,EAAE,sBAAsB;iBAClC,CAAC,CAAC;YACL,IAAI,YAAY,EAAE,CAAC;gBACjB,MAAM,CAAC,KAAK,CAAC,wCAAwC,EAAE;oBACrD,GAAG,UAAU;oBACb,YAAY;iBACb,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,KAAK,CAAC,mCAAmC,EAAE,UAAU,CAAC,CAAC;YAChE,CAAC;YACD,aAAa,GAAG,YAAY,CAAC;QAC/B,CAAC;QAED,aAAa,GAAG,aAAa,CAAC,IAAI,EAAE,CAAC;QAErC,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,MAAM,eAAe,CACnB,gEAAgE,EAChE,OAAO,CACR,CAAC;QACJ,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAI,aAAa,EAAE,OAAO,CAAC,CAAC;QAErD,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,MAAM,eAAe,GACnB,OAAO;gBACP,qBAAqB,CAAC,oBAAoB,CAAC;oBACzC,SAAS,EAAE,sBAAsB;iBAClC,CAAC,CAAC;YACL,MAAM,CAAC,KAAK,CAAC,8BAA8B,EAAE;gBAC3C,GAAG,eAAe;gBAClB,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,gBAAgB,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC;aAClD,CAAC,CAAC;YAEH,MAAM,eAAe,CACnB,wBAAwB,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACxE;gBACE,GAAG,OAAO;gBACV,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,qBAAqB,EACnB,aAAa,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;aAC9E,CACF,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AACH,MAAM,CAAC,MAAM,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC"}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* @module src/utils/parsing/dateParser
|
|
5
5
|
*/
|
|
6
6
|
import type * as chrono from 'chrono-node';
|
|
7
|
-
import type { RequestContext } from '../../utils/internal/requestContext.js';
|
|
7
|
+
import type { RequestContext, RequestContextLike } from '../../utils/internal/requestContext.js';
|
|
8
8
|
/**
|
|
9
9
|
* Parses a natural language date string into a JavaScript `Date` object.
|
|
10
10
|
*
|
|
@@ -16,13 +16,14 @@ import type { RequestContext } from '../../utils/internal/requestContext.js';
|
|
|
16
16
|
* (`bun add chrono-node`).
|
|
17
17
|
*
|
|
18
18
|
* @param text - The natural language date string to parse (e.g. `"next Friday at 3pm"`).
|
|
19
|
-
* @param context -
|
|
19
|
+
* @param context - Context for correlated logging and error metadata. The handler
|
|
20
|
+
* `Context` is accepted directly.
|
|
20
21
|
* @param refDate - Reference date for relative expressions. Defaults to the current date/time.
|
|
21
22
|
* @returns A `Date` object if a date was found, or `null` if parsing yields no result.
|
|
22
23
|
* @throws {McpError} With `ConfigurationError` if `chrono-node` is not installed.
|
|
23
24
|
* @throws {McpError} With `ParseError` if an unexpected error occurs during parsing.
|
|
24
25
|
*/
|
|
25
|
-
export declare function parseDateString(text: string, context: RequestContext, refDate?: Date): Promise<Date | null>;
|
|
26
|
+
export declare function parseDateString(text: string, context: RequestContextLike | RequestContext, refDate?: Date): Promise<Date | null>;
|
|
26
27
|
/**
|
|
27
28
|
* Parses a natural language date string and returns detailed `chrono-node` results.
|
|
28
29
|
*
|
|
@@ -38,14 +39,15 @@ export declare function parseDateString(text: string, context: RequestContext, r
|
|
|
38
39
|
* (`bun add chrono-node`).
|
|
39
40
|
*
|
|
40
41
|
* @param text - The natural language date string to parse.
|
|
41
|
-
* @param context -
|
|
42
|
+
* @param context - Context for correlated logging and error metadata. The handler
|
|
43
|
+
* `Context` is accepted directly.
|
|
42
44
|
* @param refDate - Reference date for relative expressions. Defaults to the current date/time.
|
|
43
45
|
* @returns An array of `chrono.ParsedResult` objects — one per date expression found.
|
|
44
46
|
* Empty array if no dates are present in the text.
|
|
45
47
|
* @throws {McpError} With `ConfigurationError` if `chrono-node` is not installed.
|
|
46
48
|
* @throws {McpError} With `ParseError` if an unexpected error occurs during parsing.
|
|
47
49
|
*/
|
|
48
|
-
export declare function parseDateStringDetailed(text: string, context: RequestContext, refDate?: Date): Promise<chrono.ParsedResult[]>;
|
|
50
|
+
export declare function parseDateStringDetailed(text: string, context: RequestContextLike | RequestContext, refDate?: Date): Promise<chrono.ParsedResult[]>;
|
|
49
51
|
/**
|
|
50
52
|
* Singleton object providing natural language date parsing via `chrono-node`.
|
|
51
53
|
*
|
|
@@ -79,7 +81,8 @@ export declare const dateParser: {
|
|
|
79
81
|
* Async due to lazy loading of `chrono-node` (`bun add chrono-node`).
|
|
80
82
|
*
|
|
81
83
|
* @param text - The natural language date string to parse.
|
|
82
|
-
* @param context -
|
|
84
|
+
* @param context - Context for correlated logging and error metadata. The handler
|
|
85
|
+
* `Context` is accepted directly.
|
|
83
86
|
* @param refDate - Reference date for relative expressions. Defaults to now.
|
|
84
87
|
* @returns An array of `chrono.ParsedResult` objects; empty if no dates found.
|
|
85
88
|
* @throws {McpError} With `ConfigurationError` if `chrono-node` is not installed.
|
|
@@ -92,7 +95,8 @@ export declare const dateParser: {
|
|
|
92
95
|
* Async due to lazy loading of `chrono-node` (`bun add chrono-node`).
|
|
93
96
|
*
|
|
94
97
|
* @param text - The natural language date string to parse.
|
|
95
|
-
* @param context -
|
|
98
|
+
* @param context - Context for correlated logging and error metadata. The handler
|
|
99
|
+
* `Context` is accepted directly.
|
|
96
100
|
* @param refDate - Reference date for relative expressions. Defaults to now.
|
|
97
101
|
* @returns A `Date` if a date expression was found, or `null` if none was recognized.
|
|
98
102
|
* @throws {McpError} With `ConfigurationError` if `chrono-node` is not installed.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dateParser.d.ts","sourceRoot":"","sources":["../../../src/utils/parsing/dateParser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,aAAa,CAAC;AAM3C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;
|
|
1
|
+
{"version":3,"file":"dateParser.d.ts","sourceRoot":"","sources":["../../../src/utils/parsing/dateParser.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,KAAK,MAAM,MAAM,aAAa,CAAC;AAM3C,OAAO,KAAK,EAAE,cAAc,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAO7F;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,kBAAkB,GAAG,cAAc,EAC5C,OAAO,CAAC,EAAE,IAAI,GACb,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC,CA4BtB;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,kBAAkB,GAAG,cAAc,EAC5C,OAAO,CAAC,EAAE,IAAI,GACb,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAuBhC;AAED;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,eAAO,MAAM,UAAU;IACrB;;;;;;;;;;;;;OAaG;IACH,KAAK;IACL;;;;;;;;;;;;OAYG;IACH,SAAS;CACV,CAAC"}
|
|
@@ -14,7 +14,8 @@ const getChrono = lazyImport(() => import('chrono-node'), 'Install "chrono-node"
|
|
|
14
14
|
* (`bun add chrono-node`).
|
|
15
15
|
*
|
|
16
16
|
* @param text - The natural language date string to parse (e.g. `"next Friday at 3pm"`).
|
|
17
|
-
* @param context -
|
|
17
|
+
* @param context - Context for correlated logging and error metadata. The handler
|
|
18
|
+
* `Context` is accepted directly.
|
|
18
19
|
* @param refDate - Reference date for relative expressions. Defaults to the current date/time.
|
|
19
20
|
* @returns A `Date` object if a date was found, or `null` if parsing yields no result.
|
|
20
21
|
* @throws {McpError} With `ConfigurationError` if `chrono-node` is not installed.
|
|
@@ -60,7 +61,8 @@ export async function parseDateString(text, context, refDate) {
|
|
|
60
61
|
* (`bun add chrono-node`).
|
|
61
62
|
*
|
|
62
63
|
* @param text - The natural language date string to parse.
|
|
63
|
-
* @param context -
|
|
64
|
+
* @param context - Context for correlated logging and error metadata. The handler
|
|
65
|
+
* `Context` is accepted directly.
|
|
64
66
|
* @param refDate - Reference date for relative expressions. Defaults to the current date/time.
|
|
65
67
|
* @returns An array of `chrono.ParsedResult` objects — one per date expression found.
|
|
66
68
|
* Empty array if no dates are present in the text.
|
|
@@ -116,7 +118,8 @@ export const dateParser = {
|
|
|
116
118
|
* Async due to lazy loading of `chrono-node` (`bun add chrono-node`).
|
|
117
119
|
*
|
|
118
120
|
* @param text - The natural language date string to parse.
|
|
119
|
-
* @param context -
|
|
121
|
+
* @param context - Context for correlated logging and error metadata. The handler
|
|
122
|
+
* `Context` is accepted directly.
|
|
120
123
|
* @param refDate - Reference date for relative expressions. Defaults to now.
|
|
121
124
|
* @returns An array of `chrono.ParsedResult` objects; empty if no dates found.
|
|
122
125
|
* @throws {McpError} With `ConfigurationError` if `chrono-node` is not installed.
|
|
@@ -129,7 +132,8 @@ export const dateParser = {
|
|
|
129
132
|
* Async due to lazy loading of `chrono-node` (`bun add chrono-node`).
|
|
130
133
|
*
|
|
131
134
|
* @param text - The natural language date string to parse.
|
|
132
|
-
* @param context -
|
|
135
|
+
* @param context - Context for correlated logging and error metadata. The handler
|
|
136
|
+
* `Context` is accepted directly.
|
|
133
137
|
* @param refDate - Reference date for relative expressions. Defaults to now.
|
|
134
138
|
* @returns A `Date` if a date expression was found, or `null` if none was recognized.
|
|
135
139
|
* @throws {McpError} With `ConfigurationError` if `chrono-node` is not installed.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dateParser.js","sourceRoot":"","sources":["../../../src/utils/parsing/dateParser.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gDAAgD,CAAC;AAC9E,OAAO,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AAC5D,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAGpD,MAAM,SAAS,GAAG,UAAU,CAC1B,GAAG,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,EAC3B,gEAAgE,CACjE,CAAC;AAEF
|
|
1
|
+
{"version":3,"file":"dateParser.js","sourceRoot":"","sources":["../../../src/utils/parsing/dateParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type RequestContext } from '../../utils/internal/requestContext.js';
|
|
1
|
+
import { type RequestContext, type RequestContextLike } from '../../utils/internal/requestContext.js';
|
|
2
2
|
import { type ParserInputBudgetOptions } from './inputBudget.js';
|
|
3
3
|
/**
|
|
4
4
|
* Result of parsing markdown with frontmatter.
|
|
@@ -36,8 +36,9 @@ export declare class FrontmatterParser {
|
|
|
36
36
|
*
|
|
37
37
|
* @template T - The expected shape of the parsed frontmatter object. Defaults to `unknown`.
|
|
38
38
|
* @param markdown - The markdown string that may contain a frontmatter block.
|
|
39
|
-
* @param context - Optional
|
|
40
|
-
*
|
|
39
|
+
* @param context - Optional context for correlated logging. The handler `Context`
|
|
40
|
+
* is accepted directly.
|
|
41
|
+
* @param budget - Optional UTF-8 byte budget for the input. Unbounded when omitted.
|
|
41
42
|
* @returns A {@link FrontmatterResult} with `frontmatter`, `content`, and `hasFrontmatter`.
|
|
42
43
|
* @throws {McpError} With code `ValidationError` if the YAML content is present but malformed.
|
|
43
44
|
* @example
|
|
@@ -51,7 +52,7 @@ export declare class FrontmatterParser {
|
|
|
51
52
|
* // result.hasFrontmatter → true
|
|
52
53
|
* ```
|
|
53
54
|
*/
|
|
54
|
-
parse<T = unknown>(markdown: string, context?: RequestContext, budget?: ParserInputBudgetOptions): Promise<FrontmatterResult<T>>;
|
|
55
|
+
parse<T = unknown>(markdown: string, context?: RequestContextLike | RequestContext, budget?: ParserInputBudgetOptions): Promise<FrontmatterResult<T>>;
|
|
55
56
|
}
|
|
56
57
|
/**
|
|
57
58
|
* 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,
|
|
1
|
+
{"version":3,"file":"frontmatterParser.d.ts","sourceRoot":"","sources":["../../../src/utils/parsing/frontmatterParser.ts"],"names":[],"mappings":"AAQA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,kBAAkB,EAExB,MAAM,oCAAoC,CAAC;AAC5C,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;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACG,KAAK,CAAC,CAAC,GAAG,OAAO,EACrB,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE,kBAAkB,GAAG,cAAc,EAC7C,MAAM,CAAC,EAAE,wBAAwB,GAChC,OAAO,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,CA2F/B;CACF;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmCG;AACH,eAAO,MAAM,iBAAiB,mBAA0B,CAAC"}
|
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { McpError, validationError } from '../../types-global/errors.js';
|
|
8
8
|
import { logger } from '../../utils/internal/logger.js';
|
|
9
|
-
import { requestContextService } from '../../utils/internal/requestContext.js';
|
|
9
|
+
import { requestContextService, } from '../../utils/internal/requestContext.js';
|
|
10
10
|
import { assertTextInputBudget } from './inputBudget.js';
|
|
11
11
|
import { yamlParser } from './yamlParser.js';
|
|
12
12
|
/**
|
|
@@ -34,8 +34,9 @@ export class FrontmatterParser {
|
|
|
34
34
|
*
|
|
35
35
|
* @template T - The expected shape of the parsed frontmatter object. Defaults to `unknown`.
|
|
36
36
|
* @param markdown - The markdown string that may contain a frontmatter block.
|
|
37
|
-
* @param context - Optional
|
|
38
|
-
*
|
|
37
|
+
* @param context - Optional context for correlated logging. The handler `Context`
|
|
38
|
+
* is accepted directly.
|
|
39
|
+
* @param budget - Optional UTF-8 byte budget for the input. Unbounded when omitted.
|
|
39
40
|
* @returns A {@link FrontmatterResult} with `frontmatter`, `content`, and `hasFrontmatter`.
|
|
40
41
|
* @throws {McpError} With code `ValidationError` if the YAML content is present but malformed.
|
|
41
42
|
* @example
|
|
@@ -118,7 +119,7 @@ export class FrontmatterParser {
|
|
|
118
119
|
if (error instanceof McpError) {
|
|
119
120
|
throw error;
|
|
120
121
|
}
|
|
121
|
-
throw validationError(
|
|
122
|
+
throw validationError(`Failed to parse frontmatter content: ${error.message}`, { reason: 'frontmatter_parse_failed' }, { cause: error });
|
|
122
123
|
}
|
|
123
124
|
}
|
|
124
125
|
}
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"frontmatterParser.js","sourceRoot":"","sources":["../../../src/utils/parsing/frontmatterParser.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type RequestContext } from '../../utils/internal/requestContext.js';
|
|
1
|
+
import { type RequestContext, type RequestContextLike } from '../../utils/internal/requestContext.js';
|
|
2
2
|
/**
|
|
3
3
|
* Options for HTML article extraction.
|
|
4
4
|
*/
|
|
@@ -26,7 +26,7 @@ export interface ExtractArticleOptions {
|
|
|
26
26
|
*/
|
|
27
27
|
language?: string;
|
|
28
28
|
/**
|
|
29
|
-
* UTF-8 input budget in bytes.
|
|
29
|
+
* UTF-8 input budget in bytes. Unbounded when omitted.
|
|
30
30
|
*/
|
|
31
31
|
maxBytes?: number;
|
|
32
32
|
/**
|
|
@@ -103,7 +103,8 @@ export declare class HtmlExtractor {
|
|
|
103
103
|
*
|
|
104
104
|
* @param html - Raw HTML string to extract from.
|
|
105
105
|
* @param options - Optional extraction options (format, URL, content selector, etc.).
|
|
106
|
-
* @param context - Optional
|
|
106
|
+
* @param context - Optional context for correlated logging and error metadata. The
|
|
107
|
+
* handler `Context` is accepted directly.
|
|
107
108
|
* @returns Extracted content and metadata. Only `content` is guaranteed to
|
|
108
109
|
* be present; all other fields are best-effort.
|
|
109
110
|
* @throws {McpError} With `ConfigurationError` if `defuddle` or `linkedom` is not installed.
|
|
@@ -124,7 +125,7 @@ export declare class HtmlExtractor {
|
|
|
124
125
|
* console.log(result.content);
|
|
125
126
|
* ```
|
|
126
127
|
*/
|
|
127
|
-
extract(html: string, options?: ExtractArticleOptions, context?: RequestContext): Promise<ExtractArticleResult>;
|
|
128
|
+
extract(html: string, options?: ExtractArticleOptions, context?: RequestContextLike | RequestContext): Promise<ExtractArticleResult>;
|
|
128
129
|
}
|
|
129
130
|
/**
|
|
130
131
|
* Singleton instance of {@link HtmlExtractor}.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"htmlExtractor.d.ts","sourceRoot":"","sources":["../../../src/utils/parsing/htmlExtractor.ts"],"names":[],"mappings":"AAgCA,OAAO,
|
|
1
|
+
{"version":3,"file":"htmlExtractor.d.ts","sourceRoot":"","sources":["../../../src/utils/parsing/htmlExtractor.ts"],"names":[],"mappings":"AAgCA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,kBAAkB,EAExB,MAAM,oCAAoC,CAAC;AAsC5C;;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACG,OAAO,CACX,IAAI,EAAE,MAAM,EACZ,OAAO,CAAC,EAAE,qBAAqB,EAC/B,OAAO,CAAC,EAAE,kBAAkB,GAAG,cAAc,GAC5C,OAAO,CAAC,oBAAoB,CAAC,CA6E/B;CACF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,eAAO,MAAM,aAAa,eAAsB,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
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
|
-
import { requestContextService } from '../../utils/internal/requestContext.js';
|
|
4
|
+
import { requestContextService, } from '../../utils/internal/requestContext.js';
|
|
5
5
|
import { assertTextInputBudget } from './inputBudget.js';
|
|
6
6
|
const getDefuddle = lazyImport(() => import('defuddle/node'), 'Install "defuddle" to use HTML article extraction: bun add defuddle linkedom');
|
|
7
7
|
const getLinkedom = lazyImport(() => import('linkedom'), 'Install "linkedom" to use HTML article extraction: bun add defuddle linkedom');
|
|
@@ -43,7 +43,8 @@ export class HtmlExtractor {
|
|
|
43
43
|
*
|
|
44
44
|
* @param html - Raw HTML string to extract from.
|
|
45
45
|
* @param options - Optional extraction options (format, URL, content selector, etc.).
|
|
46
|
-
* @param context - Optional
|
|
46
|
+
* @param context - Optional context for correlated logging and error metadata. The
|
|
47
|
+
* handler `Context` is accepted directly.
|
|
47
48
|
* @returns Extracted content and metadata. Only `content` is guaranteed to
|
|
48
49
|
* be present; all other fields are best-effort.
|
|
49
50
|
* @throws {McpError} With `ConfigurationError` if `defuddle` or `linkedom` is not installed.
|
|
@@ -142,7 +143,7 @@ export class HtmlExtractor {
|
|
|
142
143
|
...logContext,
|
|
143
144
|
errorDetails: error.message,
|
|
144
145
|
});
|
|
145
|
-
throw validationError(
|
|
146
|
+
throw validationError(`Failed to extract article from HTML: ${error.message}`, { reason: 'html_extract_failed' }, { cause: error });
|
|
146
147
|
}
|
|
147
148
|
}
|
|
148
149
|
}
|
|
@@ -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,
|
|
1
|
+
{"version":3,"file":"htmlExtractor.js","sourceRoot":"","sources":["../../../src/utils/parsing/htmlExtractor.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,27 +1,34 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @fileoverview
|
|
3
|
-
*
|
|
4
|
-
*
|
|
2
|
+
* @fileoverview Opt-in input byte budgets shared by the parsing utilities. A
|
|
3
|
+
* parser is unbounded unless its caller supplies `maxBytes`: the input is
|
|
4
|
+
* already resident in memory by the time a parser sees it, so a budget is a
|
|
5
|
+
* caller's work-shaping knob rather than a trust boundary.
|
|
5
6
|
* @module src/utils/parsing/inputBudget
|
|
6
7
|
*/
|
|
7
|
-
/**
|
|
8
|
+
/**
|
|
9
|
+
* Suggested UTF-8 input budget for text parsers (1 MiB). Not applied unless a
|
|
10
|
+
* caller passes it as `maxBytes`.
|
|
11
|
+
*/
|
|
8
12
|
export declare const DEFAULT_TEXT_PARSER_MAX_BYTES: number;
|
|
9
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Suggested input budget for binary parsers (25 MiB). Not applied unless a
|
|
15
|
+
* caller passes it as `maxBytes`.
|
|
16
|
+
*/
|
|
10
17
|
export declare const DEFAULT_BINARY_PARSER_MAX_BYTES: number;
|
|
11
18
|
/**
|
|
12
|
-
* Caller override for a parser's input budget.
|
|
13
|
-
*
|
|
14
|
-
*
|
|
15
|
-
*
|
|
19
|
+
* Caller override for a parser's input budget. Omit `maxBytes` for no bound;
|
|
20
|
+
* {@link DEFAULT_TEXT_PARSER_MAX_BYTES} and
|
|
21
|
+
* {@link DEFAULT_BINARY_PARSER_MAX_BYTES} are starting points for a caller that
|
|
22
|
+
* wants one.
|
|
16
23
|
*/
|
|
17
24
|
export interface ParserInputBudgetOptions {
|
|
18
25
|
maxBytes?: number;
|
|
19
26
|
}
|
|
20
27
|
/** Return the UTF-8 byte length without allocating a second copy of the input. */
|
|
21
28
|
export declare function utf8ByteLength(input: string): number;
|
|
22
|
-
/** Assert a text input fits
|
|
29
|
+
/** Assert a text input fits any budget the caller declared. Returns its UTF-8 byte length. */
|
|
23
30
|
export declare function assertTextInputBudget(input: string, options?: ParserInputBudgetOptions): number;
|
|
24
|
-
/** Assert a binary input fits
|
|
31
|
+
/** Assert a binary input fits any budget the caller declared. Returns its byte length. */
|
|
25
32
|
export declare function assertBinaryInputBudget(input: Uint8Array | ArrayBuffer, options?: ParserInputBudgetOptions): number;
|
|
26
33
|
/** Assert a set of binary inputs fits one shared budget. Returns their combined byte length. */
|
|
27
34
|
export declare function assertBinaryInputsBudget(inputs: readonly (Uint8Array | ArrayBuffer)[], options?: ParserInputBudgetOptions): number;
|