@j0hanz/fetch-url-mcp 1.12.7 → 1.12.9
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/dist/http/auth.d.ts +9 -4
- package/dist/http/auth.d.ts.map +1 -1
- package/dist/http/auth.js +30 -5
- package/dist/http/index.d.ts +4 -0
- package/dist/http/index.d.ts.map +1 -0
- package/dist/http/index.js +5 -0
- package/dist/http/native.d.ts +73 -0
- package/dist/http/native.d.ts.map +1 -1
- package/dist/http/native.js +597 -10
- package/dist/http/rate-limit.d.ts +7 -2
- package/dist/http/rate-limit.d.ts.map +1 -1
- package/dist/http/rate-limit.js +9 -4
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +68 -6
- package/dist/lib/config.d.ts.map +1 -1
- package/dist/lib/config.js +22 -2
- package/dist/lib/core.d.ts +57 -5
- package/dist/lib/core.d.ts.map +1 -1
- package/dist/lib/core.js +155 -5
- package/dist/lib/error/classes.d.ts +19 -0
- package/dist/lib/error/classes.d.ts.map +1 -0
- package/dist/lib/error/classes.js +107 -0
- package/dist/lib/error/classify.d.ts +4 -0
- package/dist/lib/error/classify.d.ts.map +1 -0
- package/dist/lib/error/classify.js +154 -0
- package/dist/lib/error/codes.d.ts +23 -0
- package/dist/lib/error/codes.d.ts.map +1 -0
- package/dist/lib/error/codes.js +22 -0
- package/dist/lib/error/index.d.ts +6 -0
- package/dist/lib/error/index.d.ts.map +1 -0
- package/dist/lib/error/index.js +7 -0
- package/dist/lib/{error-messages.d.ts → error/messages.d.ts} +2 -2
- package/dist/lib/error/messages.d.ts.map +1 -0
- package/dist/lib/{error-messages.js → error/messages.js} +2 -2
- package/dist/lib/{tool-errors.d.ts → error/payload.d.ts} +7 -13
- package/dist/lib/error/payload.d.ts.map +1 -0
- package/dist/lib/error/payload.js +108 -0
- package/dist/lib/mcp-interop.d.ts.map +1 -1
- package/dist/lib/mcp-interop.js +4 -6
- package/dist/lib/net/http.d.ts.map +1 -0
- package/dist/lib/{http.js → net/http.js} +5 -7
- package/dist/lib/net/index.d.ts +4 -0
- package/dist/lib/net/index.d.ts.map +1 -0
- package/dist/lib/net/index.js +5 -0
- package/dist/lib/{fetch-pipeline.d.ts → net/pipeline.d.ts} +3 -3
- package/dist/lib/net/pipeline.d.ts.map +1 -0
- package/dist/lib/{fetch-pipeline.js → net/pipeline.js} +4 -5
- package/dist/lib/{url.d.ts → net/url.d.ts} +1 -1
- package/dist/lib/net/url.d.ts.map +1 -0
- package/dist/lib/{url.js → net/url.js} +4 -5
- package/dist/lib/utils.d.ts +2 -32
- package/dist/lib/utils.d.ts.map +1 -1
- package/dist/lib/utils.js +28 -146
- package/dist/resources/index.d.ts.map +1 -1
- package/dist/resources/index.js +11 -6
- package/dist/schemas.d.ts +1 -1
- package/dist/schemas.js +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +8 -9
- package/dist/tasks/index.d.ts +2 -0
- package/dist/tasks/index.d.ts.map +1 -0
- package/dist/tasks/index.js +3 -0
- package/dist/tasks/manager.d.ts +123 -1
- package/dist/tasks/manager.d.ts.map +1 -1
- package/dist/tasks/manager.js +756 -10
- package/dist/tools/{fetch-url.d.ts → index.d.ts} +4 -5
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/{fetch-url.js → index.js} +7 -8
- package/dist/transform/index.d.ts +279 -0
- package/dist/transform/index.d.ts.map +1 -0
- package/dist/transform/index.js +5235 -0
- package/package.json +2 -2
- package/dist/cli.d.ts +0 -19
- package/dist/cli.d.ts.map +0 -1
- package/dist/cli.js +0 -65
- package/dist/http/health.d.ts +0 -8
- package/dist/http/health.d.ts.map +0 -1
- package/dist/http/health.js +0 -152
- package/dist/http/helpers.d.ts +0 -68
- package/dist/http/helpers.d.ts.map +0 -1
- package/dist/http/helpers.js +0 -402
- package/dist/lib/error-codes.d.ts +0 -13
- package/dist/lib/error-codes.d.ts.map +0 -1
- package/dist/lib/error-codes.js +0 -12
- package/dist/lib/error-messages.d.ts.map +0 -1
- package/dist/lib/fetch-pipeline.d.ts.map +0 -1
- package/dist/lib/http.d.ts.map +0 -1
- package/dist/lib/logger-names.d.ts +0 -16
- package/dist/lib/logger-names.d.ts.map +0 -1
- package/dist/lib/logger-names.js +0 -15
- package/dist/lib/session.d.ts +0 -44
- package/dist/lib/session.d.ts.map +0 -1
- package/dist/lib/session.js +0 -137
- package/dist/lib/tool-errors.d.ts.map +0 -1
- package/dist/lib/tool-errors.js +0 -253
- package/dist/lib/url.d.ts.map +0 -1
- package/dist/lib/zod.d.ts +0 -3
- package/dist/lib/zod.d.ts.map +0 -1
- package/dist/lib/zod.js +0 -27
- package/dist/tasks/call-contract.d.ts +0 -25
- package/dist/tasks/call-contract.d.ts.map +0 -1
- package/dist/tasks/call-contract.js +0 -59
- package/dist/tasks/execution.d.ts +0 -16
- package/dist/tasks/execution.d.ts.map +0 -1
- package/dist/tasks/execution.js +0 -241
- package/dist/tasks/handlers.d.ts +0 -11
- package/dist/tasks/handlers.d.ts.map +0 -1
- package/dist/tasks/handlers.js +0 -157
- package/dist/tasks/owner.d.ts +0 -43
- package/dist/tasks/owner.d.ts.map +0 -1
- package/dist/tasks/owner.js +0 -144
- package/dist/tasks/registry.d.ts +0 -20
- package/dist/tasks/registry.d.ts.map +0 -1
- package/dist/tasks/registry.js +0 -40
- package/dist/tasks/waiters.d.ts +0 -27
- package/dist/tasks/waiters.d.ts.map +0 -1
- package/dist/tasks/waiters.js +0 -114
- package/dist/tools/fetch-url.d.ts.map +0 -1
- package/dist/transform/dom-prep.d.ts +0 -16
- package/dist/transform/dom-prep.d.ts.map +0 -1
- package/dist/transform/dom-prep.js +0 -1287
- package/dist/transform/html-translators.d.ts +0 -5
- package/dist/transform/html-translators.d.ts.map +0 -1
- package/dist/transform/html-translators.js +0 -697
- package/dist/transform/markdown-cleanup.d.ts +0 -10
- package/dist/transform/markdown-cleanup.d.ts.map +0 -1
- package/dist/transform/markdown-cleanup.js +0 -542
- package/dist/transform/metadata.d.ts +0 -18
- package/dist/transform/metadata.d.ts.map +0 -1
- package/dist/transform/metadata.js +0 -462
- package/dist/transform/next-flight.d.ts +0 -2
- package/dist/transform/next-flight.d.ts.map +0 -1
- package/dist/transform/next-flight.js +0 -374
- package/dist/transform/shared.d.ts +0 -8
- package/dist/transform/shared.d.ts.map +0 -1
- package/dist/transform/shared.js +0 -137
- package/dist/transform/transform.d.ts +0 -38
- package/dist/transform/transform.d.ts.map +0 -1
- package/dist/transform/transform.js +0 -1042
- package/dist/transform/types.d.ts +0 -124
- package/dist/transform/types.d.ts.map +0 -1
- package/dist/transform/types.js +0 -5
- package/dist/transform/worker-pool.d.ts +0 -76
- package/dist/transform/worker-pool.d.ts.map +0 -1
- package/dist/transform/worker-pool.js +0 -725
- /package/dist/lib/{http.d.ts → net/http.d.ts} +0 -0
package/dist/lib/utils.js
CHANGED
|
@@ -1,12 +1,9 @@
|
|
|
1
1
|
import { Buffer } from 'node:buffer';
|
|
2
2
|
import { createHmac, timingSafeEqual } from 'node:crypto';
|
|
3
3
|
import { setInterval as setIntervalPromise, setTimeout as setTimeoutPromise, } from 'node:timers/promises';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import { SystemErrors } from './error-codes.js';
|
|
7
|
-
import { Loggers } from './logger-names.js';
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { isAbortError } from './error/index.js';
|
|
8
6
|
const textEncoder = new TextEncoder();
|
|
9
|
-
const UNKNOWN_ERROR_MESSAGE = 'Unknown error';
|
|
10
7
|
export function composeAbortSignal(signal, timeoutMs) {
|
|
11
8
|
const timeoutSignal = timeoutMs && timeoutMs > 0 ? AbortSignal.timeout(timeoutMs) : undefined;
|
|
12
9
|
if (signal && timeoutSignal) {
|
|
@@ -17,25 +14,6 @@ export function composeAbortSignal(signal, timeoutMs) {
|
|
|
17
14
|
export function parseUrlOrNull(input, base) {
|
|
18
15
|
return URL.parse(input, base);
|
|
19
16
|
}
|
|
20
|
-
export function throwIfAborted(signal, url, stage) {
|
|
21
|
-
if (!signal?.aborted)
|
|
22
|
-
return;
|
|
23
|
-
if (signal.reason instanceof Error && signal.reason.name === 'TimeoutError') {
|
|
24
|
-
const error = new FetchError('Request timeout', url, 504, {
|
|
25
|
-
reason: 'timeout',
|
|
26
|
-
stage,
|
|
27
|
-
});
|
|
28
|
-
throw error;
|
|
29
|
-
}
|
|
30
|
-
throw createAbortError(url, stage);
|
|
31
|
-
}
|
|
32
|
-
export function createAbortError(url, stage) {
|
|
33
|
-
const error = new FetchError('Request was canceled', url, 499, {
|
|
34
|
-
reason: 'aborted',
|
|
35
|
-
stage,
|
|
36
|
-
});
|
|
37
|
-
return error;
|
|
38
|
-
}
|
|
39
17
|
export function timingSafeEqualUtf8(a, b) {
|
|
40
18
|
const aBuf = textEncoder.encode(a);
|
|
41
19
|
const bBuf = textEncoder.encode(b);
|
|
@@ -46,119 +24,6 @@ export function timingSafeEqualUtf8(a, b) {
|
|
|
46
24
|
export function hmacSha256Hex(key, input) {
|
|
47
25
|
return createHmac('sha256', key).update(input).digest('hex');
|
|
48
26
|
}
|
|
49
|
-
const DEFAULT_HTTP_STATUS = 502;
|
|
50
|
-
export class FetchError extends Error {
|
|
51
|
-
url;
|
|
52
|
-
statusCode;
|
|
53
|
-
code;
|
|
54
|
-
details;
|
|
55
|
-
constructor(message, url, httpStatus, details = {}, options) {
|
|
56
|
-
super(message, options);
|
|
57
|
-
this.url = url;
|
|
58
|
-
this.name = 'FetchError';
|
|
59
|
-
this.statusCode = httpStatus ?? DEFAULT_HTTP_STATUS;
|
|
60
|
-
this.details = Object.freeze({ url, httpStatus, ...details });
|
|
61
|
-
const explicitCode = this.details['code'];
|
|
62
|
-
if (typeof explicitCode === 'string') {
|
|
63
|
-
this.code = explicitCode;
|
|
64
|
-
}
|
|
65
|
-
else if (httpStatus) {
|
|
66
|
-
this.code = `HTTP_${httpStatus}`;
|
|
67
|
-
}
|
|
68
|
-
else {
|
|
69
|
-
this.code = SystemErrors.FETCH_ERROR;
|
|
70
|
-
}
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
export function getErrorMessage(error) {
|
|
74
|
-
if (isError(error))
|
|
75
|
-
return error.message;
|
|
76
|
-
if (typeof error === 'string' && error.length > 0)
|
|
77
|
-
return error;
|
|
78
|
-
if (isObject(error) &&
|
|
79
|
-
typeof error['message'] === 'string' &&
|
|
80
|
-
error['message'].length > 0) {
|
|
81
|
-
return error['message'];
|
|
82
|
-
}
|
|
83
|
-
if (error === null || error === undefined)
|
|
84
|
-
return UNKNOWN_ERROR_MESSAGE;
|
|
85
|
-
try {
|
|
86
|
-
return inspect(error, {
|
|
87
|
-
depth: 2,
|
|
88
|
-
maxStringLength: 200,
|
|
89
|
-
breakLength: Infinity,
|
|
90
|
-
compact: true,
|
|
91
|
-
colors: false,
|
|
92
|
-
});
|
|
93
|
-
}
|
|
94
|
-
catch {
|
|
95
|
-
return UNKNOWN_ERROR_MESSAGE;
|
|
96
|
-
}
|
|
97
|
-
}
|
|
98
|
-
export function toError(error) {
|
|
99
|
-
return isError(error) ? error : new Error(getErrorMessage(error));
|
|
100
|
-
}
|
|
101
|
-
export function isAbortError(error) {
|
|
102
|
-
return isError(error) && error.name === 'AbortError';
|
|
103
|
-
}
|
|
104
|
-
export class CodedError extends Error {
|
|
105
|
-
code;
|
|
106
|
-
constructor(message, code, options) {
|
|
107
|
-
super(message, options);
|
|
108
|
-
this.code = code;
|
|
109
|
-
this.name = 'CodedError';
|
|
110
|
-
}
|
|
111
|
-
}
|
|
112
|
-
export function isSystemError(error) {
|
|
113
|
-
if (!isError(error))
|
|
114
|
-
return false;
|
|
115
|
-
if (!('code' in error))
|
|
116
|
-
return false;
|
|
117
|
-
const { code } = error;
|
|
118
|
-
return typeof code === 'string';
|
|
119
|
-
}
|
|
120
|
-
const DROP_LOG_INTERVAL_MS = 10_000;
|
|
121
|
-
export function applyHttpServerTuning(server) {
|
|
122
|
-
const { headersTimeoutMs, requestTimeoutMs, keepAliveTimeoutMs, keepAliveTimeoutBufferMs, maxHeadersCount, maxConnections, } = config.server.http;
|
|
123
|
-
if (headersTimeoutMs !== undefined)
|
|
124
|
-
server.headersTimeout = headersTimeoutMs;
|
|
125
|
-
if (requestTimeoutMs !== undefined)
|
|
126
|
-
server.requestTimeout = requestTimeoutMs;
|
|
127
|
-
if (keepAliveTimeoutMs !== undefined)
|
|
128
|
-
server.keepAliveTimeout = keepAliveTimeoutMs;
|
|
129
|
-
if (keepAliveTimeoutBufferMs !== undefined)
|
|
130
|
-
server.keepAliveTimeoutBuffer = keepAliveTimeoutBufferMs;
|
|
131
|
-
if (maxHeadersCount !== undefined)
|
|
132
|
-
server.maxHeadersCount = maxHeadersCount;
|
|
133
|
-
if (typeof maxConnections === 'number' && maxConnections > 0) {
|
|
134
|
-
server.maxConnections = maxConnections;
|
|
135
|
-
server.dropMaxConnection = true;
|
|
136
|
-
if (typeof server.on === 'function') {
|
|
137
|
-
let lastLoggedAt = 0;
|
|
138
|
-
let droppedSinceLastLog = 0;
|
|
139
|
-
const onDrop = (data) => {
|
|
140
|
-
droppedSinceLastLog += 1;
|
|
141
|
-
const now = Date.now();
|
|
142
|
-
if (now - lastLoggedAt < DROP_LOG_INTERVAL_MS)
|
|
143
|
-
return;
|
|
144
|
-
logWarn('Incoming connection dropped (maxConnections reached)', {
|
|
145
|
-
maxConnections,
|
|
146
|
-
dropped: droppedSinceLastLog,
|
|
147
|
-
data,
|
|
148
|
-
}, Loggers.LOG_HTTP);
|
|
149
|
-
lastLoggedAt = now;
|
|
150
|
-
droppedSinceLastLog = 0;
|
|
151
|
-
};
|
|
152
|
-
server.on('drop', onDrop);
|
|
153
|
-
}
|
|
154
|
-
}
|
|
155
|
-
}
|
|
156
|
-
export function drainConnectionsOnShutdown(server) {
|
|
157
|
-
if (typeof server.closeIdleConnections === 'function') {
|
|
158
|
-
server.closeIdleConnections();
|
|
159
|
-
logDebug('Closed idle HTTP connections during shutdown', undefined, Loggers.LOG_HTTP);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
27
|
function createAbortSafeTimeoutPromise(timeoutMs, value, signal) {
|
|
163
28
|
return setTimeoutPromise(timeoutMs, value, {
|
|
164
29
|
ref: false,
|
|
@@ -207,15 +72,6 @@ export function isObject(value) {
|
|
|
207
72
|
export function compactContext(obj) {
|
|
208
73
|
return Object.fromEntries(Object.entries(obj).filter(([, v]) => v !== undefined));
|
|
209
74
|
}
|
|
210
|
-
export function isError(value) {
|
|
211
|
-
const maybeIsError = Error.isError;
|
|
212
|
-
if (typeof maybeIsError === 'function') {
|
|
213
|
-
const result = maybeIsError(value);
|
|
214
|
-
if (typeof result === 'boolean')
|
|
215
|
-
return result;
|
|
216
|
-
}
|
|
217
|
-
return value instanceof Error;
|
|
218
|
-
}
|
|
219
75
|
export function isHtmlNode(value) {
|
|
220
76
|
return (isObject(value) &&
|
|
221
77
|
('nodeType' in value || 'nodeName' in value || 'tagName' in value));
|
|
@@ -340,3 +196,29 @@ export function buildOptionalIcons(iconInfo) {
|
|
|
340
196
|
],
|
|
341
197
|
};
|
|
342
198
|
}
|
|
199
|
+
function formatPathSegment(segment) {
|
|
200
|
+
if (typeof segment === 'number')
|
|
201
|
+
return `[${segment}]`;
|
|
202
|
+
if (typeof segment === 'string')
|
|
203
|
+
return segment;
|
|
204
|
+
return segment.description ?? '<symbol>';
|
|
205
|
+
}
|
|
206
|
+
function formatIssuePath(path) {
|
|
207
|
+
return path.reduce((acc, segment) => {
|
|
208
|
+
const isNum = typeof segment === 'number';
|
|
209
|
+
const formatted = formatPathSegment(segment);
|
|
210
|
+
return acc ? `${acc}${isNum ? '' : '.'}${formatted}` : formatted;
|
|
211
|
+
}, '');
|
|
212
|
+
}
|
|
213
|
+
export function formatZodError(error) {
|
|
214
|
+
const parts = error.issues.map((issue) => {
|
|
215
|
+
const path = formatIssuePath(issue.path);
|
|
216
|
+
return path ? `${path}: ${issue.message}` : issue.message;
|
|
217
|
+
});
|
|
218
|
+
const uniqueParts = [
|
|
219
|
+
...new Set(parts.filter((val) => val.trim().length > 0)),
|
|
220
|
+
];
|
|
221
|
+
if (uniqueParts.length > 0)
|
|
222
|
+
return uniqueParts.join('; ');
|
|
223
|
+
return z.prettifyError(error).replace(/\s+/g, ' ').trim() || 'Invalid input';
|
|
224
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/resources/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AASzE,OAAO,EAAsB,KAAK,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAOpE,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,SAAS,EACjB,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,QAAQ,GAClB,IAAI,CAwBN;AAED,eAAO,MAAM,WAAW,iEAKd,CAAC;AAEX,MAAM,MAAM,SAAS,GAAG,CAAC,OAAO,WAAW,CAAC,CAAC,MAAM,CAAC,CAAC;AAErD,wBAAgB,cAAc,CAC5B,YAAY,EAAE,MAAM,EACpB,KAAK,EAAE,SAAS,GACf,MAAM,GAAG,SAAS,CAIpB;AAED,wBAAgB,kBAAkB,CAChC,YAAY,EAAE,MAAM,EACpB,KAAK,CAAC,EAAE,MAAM,GACb,MAAM,CAKR;AAED,wBAAgB,uBAAuB,IAAI,MAAM,CAmChD;AAiBD,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,SAAS,EACjB,YAAY,EAAE,MAAM,EACpB,QAAQ,CAAC,EAAE,QAAQ,GAClB,IAAI,CA2BN"}
|
package/dist/resources/index.js
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { completable } from '@modelcontextprotocol/sdk/server/completable.js';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import { config } from '../lib/
|
|
3
|
+
import { config } from '../lib/config.js';
|
|
4
4
|
import { buildOptionalIcons } from '../lib/utils.js';
|
|
5
|
-
import { FETCH_URL_TOOL_NAME } from '../tools/
|
|
5
|
+
import { FETCH_URL_TOOL_NAME } from '../tools/index.js';
|
|
6
|
+
// Area contract: MCP resources and prompts for server guidance.
|
|
7
|
+
// Export only assistant-facing help surfaces; keep tool execution and transport wiring out.
|
|
6
8
|
export function registerInstructionResource(server, instructions, iconInfo) {
|
|
7
9
|
server.registerResource('fetch-url-mcp-instructions', 'internal://instructions', {
|
|
8
10
|
title: 'Server Instructions',
|
|
@@ -68,10 +70,13 @@ export function buildServerInstructions() {
|
|
|
68
70
|
- Notifications: opt-in. Set \`TASKS_STATUS_NOTIFICATIONS=true\`.
|
|
69
71
|
|
|
70
72
|
# Errors
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
73
|
+
- VALIDATION_ERROR: invalid/blocked URL. Do not retry.
|
|
74
|
+
- FETCH_ERROR: network failure. Retry once with backoff.
|
|
75
|
+
- UPSTREAM_HTTP_ERROR: upstream HTTP error. Retry only for 5xx.
|
|
76
|
+
- UPSTREAM_RATE_LIMITED: upstream returned 429. Back off and retry.
|
|
77
|
+
- UPSTREAM_TIMEOUT: upstream request timed out. Retry with backoff.
|
|
78
|
+
- UPSTREAM_ABORTED: request was cancelled. Retry if needed.
|
|
79
|
+
- MCP_ERROR: internal protocol error. Do not retry.
|
|
75
80
|
- queue_full: worker pool busy. Wait and retry, or use task mode.`;
|
|
76
81
|
}
|
|
77
82
|
function buildTopicSchema() {
|
package/dist/schemas.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import type { ExtractedMetadata } from './transform/
|
|
2
|
+
import type { ExtractedMetadata } from './transform/index.js';
|
|
3
3
|
export declare const extractedMetadataSchema: z.ZodType<ExtractedMetadata>;
|
|
4
4
|
export declare function normalizeExtractedMetadata(value: unknown): ExtractedMetadata | undefined;
|
|
5
5
|
export declare function normalizePageTitle(value: unknown): string | undefined;
|
package/dist/schemas.js
CHANGED
package/dist/server.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAgHpE,wBAAsB,eAAe,IAAI,OAAO,CAAC,SAAS,CAAC,CAE1D;AAkDD,wBAAsB,6BAA6B,IAAI,OAAO,CAAC,SAAS,CAAC,CAExE;AAwHD,wBAAsB,gBAAgB,IAAI,OAAO,CAAC;IAChD,QAAQ,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC7C,CAAC,CASD"}
|
package/dist/server.js
CHANGED
|
@@ -1,17 +1,16 @@
|
|
|
1
|
-
import * as fs from 'node:fs/promises';
|
|
2
|
-
import process from 'node:process';
|
|
3
1
|
import { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
4
2
|
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
5
3
|
import { SetLevelRequestSchema } from '@modelcontextprotocol/sdk/types.js';
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
4
|
+
import * as fs from 'node:fs/promises';
|
|
5
|
+
import process from 'node:process';
|
|
6
|
+
import { config } from './lib/config.js';
|
|
7
|
+
import { getSessionId, logError, Loggers, logInfo, logNotice, setLogLevel, setMcpServer, } from './lib/core.js';
|
|
8
|
+
import { toError } from './lib/error/index.js';
|
|
9
9
|
import { setTaskToolCallCapability } from './lib/mcp-interop.js';
|
|
10
|
-
import { toError } from './lib/utils.js';
|
|
11
10
|
import { buildServerInstructions, registerGetHelpPrompt, registerInstructionResource, } from './resources/index.js';
|
|
12
|
-
import { abortAllTaskExecutions, registerTaskHandlers
|
|
13
|
-
import { registerTools as registerFetchUrlTool } from './tools/
|
|
14
|
-
import { shutdownTransformWorkerPool } from './transform/
|
|
11
|
+
import { abortAllTaskExecutions, registerTaskHandlers } from './tasks/index.js';
|
|
12
|
+
import { registerTools as registerFetchUrlTool } from './tools/index.js';
|
|
13
|
+
import { shutdownTransformWorkerPool } from './transform/index.js';
|
|
15
14
|
/* -------------------------------------------------------------------------------------------------
|
|
16
15
|
* Icons + server info
|
|
17
16
|
* ------------------------------------------------------------------------------------------------- */
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tasks/index.ts"],"names":[],"mappings":"AAGA,cAAc,cAAc,CAAC"}
|
package/dist/tasks/manager.d.ts
CHANGED
|
@@ -1,3 +1,46 @@
|
|
|
1
|
+
import { type McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import { type ServerResult } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
+
import { z } from 'zod';
|
|
4
|
+
import { type ProgressNotification, type ToolHandlerExtra } from '../lib/mcp-interop.js';
|
|
5
|
+
export declare const extendedCallToolRequestSchema: z.ZodObject<{
|
|
6
|
+
method: z.ZodLiteral<"tools/call">;
|
|
7
|
+
params: z.ZodObject<{
|
|
8
|
+
name: z.ZodString;
|
|
9
|
+
arguments: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
10
|
+
task: z.ZodOptional<z.ZodObject<{
|
|
11
|
+
ttl: z.ZodOptional<z.ZodNumber>;
|
|
12
|
+
}, z.core.$strict>>;
|
|
13
|
+
_meta: z.ZodOptional<z.ZodObject<{
|
|
14
|
+
progressToken: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
|
|
15
|
+
'io.modelcontextprotocol/related-task': z.ZodOptional<z.ZodObject<{
|
|
16
|
+
taskId: z.ZodString;
|
|
17
|
+
}, z.core.$strict>>;
|
|
18
|
+
}, z.core.$loose>>;
|
|
19
|
+
}, z.core.$strict>;
|
|
20
|
+
}, z.core.$loose>;
|
|
21
|
+
export type ExtendedCallToolRequest = z.infer<typeof extendedCallToolRequestSchema>;
|
|
22
|
+
export type ToolCallRequestMeta = ExtendedCallToolRequest['params']['_meta'];
|
|
23
|
+
export declare function parseExtendedCallToolRequest(request: unknown): ExtendedCallToolRequest;
|
|
24
|
+
export declare function sanitizeToolCallMeta(meta?: ToolCallRequestMeta): ToolCallRequestMeta | undefined;
|
|
25
|
+
export declare function buildRelatedTaskMeta(taskId: string, meta?: ToolCallRequestMeta): Record<string, unknown>;
|
|
26
|
+
export declare function withRelatedTaskMeta(result: ServerResult, taskId: string): ServerResult;
|
|
27
|
+
export declare function abortTaskExecution(taskId: string): void;
|
|
28
|
+
export declare function cancelTasksForOwner(ownerKey: string, statusMessage?: string): number;
|
|
29
|
+
export declare function abortAllTaskExecutions(): void;
|
|
30
|
+
type TaskSummary = CreateTaskResult['task'];
|
|
31
|
+
type TaskLifecycleProjection = Pick<TaskState, 'taskId' | 'status' | 'statusMessage' | 'progress' | 'total' | 'createdAt' | 'lastUpdatedAt' | 'ttl' | 'pollInterval'>;
|
|
32
|
+
export declare function toTaskSummary(task: TaskLifecycleProjection): TaskSummary;
|
|
33
|
+
export declare function emitTaskStatusNotification(server: McpServer, task: TaskState): void;
|
|
34
|
+
export declare function throwTaskNotFound(): never;
|
|
35
|
+
export declare function handleToolCallRequest(server: McpServer, request: ExtendedCallToolRequest, context: ToolCallContext): Promise<ServerResult>;
|
|
36
|
+
interface TaskHandlerRegistrationOptions {
|
|
37
|
+
requireInterception?: boolean;
|
|
38
|
+
}
|
|
39
|
+
interface TaskHandlerRegistrationResult {
|
|
40
|
+
interceptedToolsCall: boolean;
|
|
41
|
+
taskCapableToolsRegistered: boolean;
|
|
42
|
+
}
|
|
43
|
+
export declare function registerTaskHandlers(server: McpServer, options?: TaskHandlerRegistrationOptions): TaskHandlerRegistrationResult;
|
|
1
44
|
export type TaskStatus = 'working' | 'input_required' | 'completed' | 'failed' | 'cancelled';
|
|
2
45
|
export interface TaskError {
|
|
3
46
|
code: number;
|
|
@@ -68,10 +111,89 @@ declare class TaskManager {
|
|
|
68
111
|
waitForTerminalTask(taskId: string, ownerKey: string, signal?: AbortSignal): Promise<TaskState | undefined>;
|
|
69
112
|
shrinkTtlAfterDelivery(taskId: string): void;
|
|
70
113
|
}
|
|
71
|
-
export declare const taskManager: TaskManager;
|
|
72
114
|
export declare function encodeTaskCursor(anchorTaskId: string): string;
|
|
73
115
|
export declare function decodeTaskCursor(cursor: string): {
|
|
74
116
|
anchorTaskId: string;
|
|
75
117
|
} | null;
|
|
118
|
+
interface HandlerExtra {
|
|
119
|
+
sessionId?: string;
|
|
120
|
+
authInfo?: {
|
|
121
|
+
clientId?: string;
|
|
122
|
+
token?: string;
|
|
123
|
+
};
|
|
124
|
+
signal?: AbortSignal;
|
|
125
|
+
requestId?: string | number;
|
|
126
|
+
sendNotification?: (notification: ProgressNotification) => Promise<void>;
|
|
127
|
+
requestInfo?: unknown;
|
|
128
|
+
}
|
|
129
|
+
export interface ToolExecutionContext {
|
|
130
|
+
ownerKey: string;
|
|
131
|
+
sessionId?: string;
|
|
132
|
+
signal?: AbortSignal;
|
|
133
|
+
requestId?: string | number;
|
|
134
|
+
sendNotification?: (notification: ProgressNotification) => Promise<void>;
|
|
135
|
+
requestMeta?: ToolCallRequestMeta;
|
|
136
|
+
}
|
|
137
|
+
export type ToolCallContext = ToolExecutionContext;
|
|
138
|
+
interface AuthIdentity {
|
|
139
|
+
clientId?: string;
|
|
140
|
+
token?: string;
|
|
141
|
+
}
|
|
142
|
+
/** Strip keys whose value is `undefined`, returning an object with only the
|
|
143
|
+
* present keys. Return type correctly omits the `undefined` union so the result
|
|
144
|
+
* is compatible with `exactOptionalPropertyTypes`. */
|
|
145
|
+
type Compacted<T extends object> = {
|
|
146
|
+
[K in keyof T as Exclude<T[K], undefined> extends never ? never : K]?: Exclude<T[K], undefined>;
|
|
147
|
+
};
|
|
148
|
+
export declare function compact<T extends object>(obj: T): Compacted<T>;
|
|
149
|
+
export declare function parseHandlerExtra(extra: unknown): HandlerExtra | undefined;
|
|
150
|
+
export declare function buildAuthenticatedOwnerKey(authInfo?: AuthIdentity): string | undefined;
|
|
151
|
+
export declare function resolveTaskOwnerKey(extra?: HandlerExtra): string;
|
|
152
|
+
export declare function resolveToolCallContext(extra?: HandlerExtra, requestMeta?: ToolCallRequestMeta): ToolCallContext;
|
|
153
|
+
export declare function buildToolHandlerExtra(context: ToolExecutionContext, requestMeta?: ToolCallRequestMeta): ToolHandlerExtra;
|
|
154
|
+
export declare function withRequestContextIfMissing<TParams, TResult, TExtra = unknown>(handler: (params: TParams, extra?: TExtra) => Promise<TResult>): (params: TParams, extra?: TExtra) => Promise<TResult>;
|
|
155
|
+
export declare function isServerResult(value: unknown): value is ServerResult;
|
|
156
|
+
export type TaskCapableToolSupport = 'required' | 'optional' | 'forbidden';
|
|
157
|
+
export interface TaskCapableToolDescriptor<TArgs = unknown> {
|
|
158
|
+
name: string;
|
|
159
|
+
parseArguments: (args: unknown) => TArgs;
|
|
160
|
+
execute: (args: TArgs, extra?: ToolHandlerExtra) => Promise<ServerResult>;
|
|
161
|
+
getCompletionStatusMessage?: (result: ServerResult) => string | undefined;
|
|
162
|
+
taskSupport?: TaskCapableToolSupport;
|
|
163
|
+
immediateResponse?: string;
|
|
164
|
+
}
|
|
165
|
+
export declare function registerTaskCapableTool<TArgs>(server: McpServer, descriptor: TaskCapableToolDescriptor<TArgs>): void;
|
|
166
|
+
export declare function unregisterTaskCapableTool(server: McpServer, name: string): void;
|
|
167
|
+
export declare function getTaskCapableTool(server: McpServer, name: string): TaskCapableToolDescriptor | undefined;
|
|
168
|
+
export declare function getTaskCapableToolSupport(server: McpServer, name: string): TaskCapableToolSupport | undefined;
|
|
169
|
+
export declare function hasTaskCapableTool(server: McpServer, name: string): boolean;
|
|
170
|
+
export declare function hasRegisteredTaskCapableTools(server: McpServer): boolean;
|
|
171
|
+
export declare function setTaskCapableToolSupport(server: McpServer, name: string, support: TaskCapableToolSupport): void;
|
|
172
|
+
interface WaitableTask {
|
|
173
|
+
taskId: string;
|
|
174
|
+
ownerKey: string;
|
|
175
|
+
status: string;
|
|
176
|
+
ttl: number;
|
|
177
|
+
_createdAtMs: number;
|
|
178
|
+
}
|
|
179
|
+
type TaskWaiter<TTask extends WaitableTask> = (task: TTask) => void;
|
|
180
|
+
export declare class TaskWaiterRegistry<TTask extends WaitableTask> {
|
|
181
|
+
private readonly isTerminalStatus;
|
|
182
|
+
private waiters;
|
|
183
|
+
constructor(isTerminalStatus: (status: TTask['status']) => boolean);
|
|
184
|
+
add(taskId: string, waiter: TaskWaiter<TTask>): void;
|
|
185
|
+
remove(taskId: string, waiter: TaskWaiter<TTask> | null): void;
|
|
186
|
+
notify(task: TTask): void;
|
|
187
|
+
}
|
|
188
|
+
export declare function waitForTerminalTask<TTask extends WaitableTask>(options: {
|
|
189
|
+
taskId: string;
|
|
190
|
+
ownerKey: string;
|
|
191
|
+
signal?: AbortSignal;
|
|
192
|
+
lookupTask: (taskId: string, ownerKey: string) => TTask | undefined;
|
|
193
|
+
removeTask: (taskId: string) => void;
|
|
194
|
+
registry: TaskWaiterRegistry<TTask>;
|
|
195
|
+
isTerminalStatus: (status: TTask['status']) => boolean;
|
|
196
|
+
}): Promise<TTask | undefined>;
|
|
197
|
+
export declare const taskManager: TaskManager;
|
|
76
198
|
export {};
|
|
77
199
|
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/tasks/manager.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/tasks/manager.ts"],"names":[],"mappings":"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"}
|