@j0hanz/fetch-url-mcp 1.2.0 → 1.3.1
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/cache.d.ts +9 -3
- package/dist/cache.d.ts.map +1 -0
- package/dist/cache.js +54 -119
- package/dist/cache.js.map +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +7 -4
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +2 -3
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +19 -27
- package/dist/config.js.map +1 -0
- package/dist/crypto.d.ts +1 -0
- package/dist/crypto.d.ts.map +1 -0
- package/dist/crypto.js +7 -3
- package/dist/crypto.js.map +1 -0
- package/dist/dom-noise-removal.d.ts +2 -1
- package/dist/dom-noise-removal.d.ts.map +1 -0
- package/dist/dom-noise-removal.js +9 -6
- package/dist/dom-noise-removal.js.map +1 -0
- package/dist/download.d.ts +4 -0
- package/dist/download.d.ts.map +1 -0
- package/dist/download.js +106 -0
- package/dist/download.js.map +1 -0
- package/dist/errors.d.ts +1 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +2 -1
- package/dist/errors.js.map +1 -0
- package/dist/examples/mcp-fetch-url-client.js +19 -3
- package/dist/examples/mcp-fetch-url-client.js.map +1 -1
- package/dist/fetch-content.d.ts +1 -0
- package/dist/fetch-content.d.ts.map +1 -0
- package/dist/fetch-content.js +15 -14
- package/dist/fetch-content.js.map +1 -0
- package/dist/fetch-stream.d.ts +1 -0
- package/dist/fetch-stream.d.ts.map +1 -0
- package/dist/fetch-stream.js +1 -0
- package/dist/fetch-stream.js.map +1 -0
- package/dist/fetch.d.ts +1 -0
- package/dist/fetch.d.ts.map +1 -0
- package/dist/fetch.js +123 -54
- package/dist/fetch.js.map +1 -0
- package/dist/host-normalization.d.ts +1 -0
- package/dist/host-normalization.d.ts.map +1 -0
- package/dist/host-normalization.js +22 -9
- package/dist/host-normalization.js.map +1 -0
- package/dist/http/auth.d.ts +51 -0
- package/dist/http/auth.d.ts.map +1 -0
- package/dist/http/auth.js +344 -0
- package/dist/http/auth.js.map +1 -0
- package/dist/http/health.d.ts +7 -0
- package/dist/http/health.d.ts.map +1 -0
- package/dist/http/health.js +156 -0
- package/dist/http/health.js.map +1 -0
- package/dist/http/helpers.d.ts +58 -0
- package/dist/http/helpers.d.ts.map +1 -0
- package/dist/http/helpers.js +370 -0
- package/dist/http/helpers.js.map +1 -0
- package/dist/{http-native.d.ts → http/native.d.ts} +1 -0
- package/dist/http/native.d.ts.map +1 -0
- package/dist/http/native.js +618 -0
- package/dist/http/native.js.map +1 -0
- package/dist/http/rate-limit.d.ts +13 -0
- package/dist/http/rate-limit.d.ts.map +1 -0
- package/dist/http/rate-limit.js +92 -0
- package/dist/http/rate-limit.js.map +1 -0
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +20 -14
- package/dist/index.js.map +1 -0
- package/dist/instructions.d.ts +2 -0
- package/dist/instructions.d.ts.map +1 -0
- package/dist/instructions.js +41 -0
- package/dist/instructions.js.map +1 -0
- package/dist/ip-blocklist.d.ts +1 -0
- package/dist/ip-blocklist.d.ts.map +1 -0
- package/dist/ip-blocklist.js +13 -8
- package/dist/ip-blocklist.js.map +1 -0
- package/dist/json.d.ts +2 -1
- package/dist/json.d.ts.map +1 -0
- package/dist/json.js +16 -6
- package/dist/json.js.map +1 -0
- package/dist/language-detection.d.ts +1 -0
- package/dist/language-detection.d.ts.map +1 -0
- package/dist/language-detection.js +2 -7
- package/dist/language-detection.js.map +1 -0
- package/dist/markdown-cleanup.d.ts +2 -1
- package/dist/markdown-cleanup.d.ts.map +1 -0
- package/dist/markdown-cleanup.js +52 -54
- package/dist/markdown-cleanup.js.map +1 -0
- package/dist/mcp-validator.d.ts +1 -0
- package/dist/mcp-validator.d.ts.map +1 -0
- package/dist/mcp-validator.js +20 -18
- package/dist/mcp-validator.js.map +1 -0
- package/dist/mcp.d.ts +2 -2
- package/dist/mcp.d.ts.map +1 -0
- package/dist/mcp.js +35 -344
- package/dist/mcp.js.map +1 -0
- package/dist/observability.d.ts +2 -0
- package/dist/observability.d.ts.map +1 -0
- package/dist/observability.js +32 -6
- package/dist/observability.js.map +1 -0
- package/dist/prompts.d.ts +1 -0
- package/dist/prompts.d.ts.map +1 -0
- package/dist/prompts.js +15 -3
- package/dist/prompts.js.map +1 -0
- package/dist/resources.d.ts +1 -0
- package/dist/resources.d.ts.map +1 -0
- package/dist/resources.js +46 -25
- package/dist/resources.js.map +1 -0
- package/dist/server-tuning.d.ts +1 -0
- package/dist/server-tuning.d.ts.map +1 -0
- package/dist/server-tuning.js +14 -17
- package/dist/server-tuning.js.map +1 -0
- package/dist/server.d.ts +1 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +29 -35
- package/dist/server.js.map +1 -0
- package/dist/session.d.ts +2 -0
- package/dist/session.d.ts.map +1 -0
- package/dist/session.js +58 -29
- package/dist/session.js.map +1 -0
- package/dist/tasks/execution.d.ts +42 -0
- package/dist/tasks/execution.d.ts.map +1 -0
- package/dist/tasks/execution.js +241 -0
- package/dist/tasks/execution.js.map +1 -0
- package/dist/{tasks.d.ts → tasks/manager.d.ts} +12 -0
- package/dist/tasks/manager.d.ts.map +1 -0
- package/dist/{tasks.js → tasks/manager.js} +95 -43
- package/dist/tasks/manager.js.map +1 -0
- package/dist/tasks/owner.d.ts +32 -0
- package/dist/tasks/owner.d.ts.map +1 -0
- package/dist/tasks/owner.js +92 -0
- package/dist/tasks/owner.js.map +1 -0
- package/dist/timer-utils.d.ts +1 -0
- package/dist/timer-utils.d.ts.map +1 -0
- package/dist/timer-utils.js +8 -4
- package/dist/timer-utils.js.map +1 -0
- package/dist/tool-errors.d.ts +12 -0
- package/dist/tool-errors.d.ts.map +1 -0
- package/dist/tool-errors.js +55 -0
- package/dist/tool-errors.js.map +1 -0
- package/dist/tool-pipeline.d.ts +72 -0
- package/dist/tool-pipeline.d.ts.map +1 -0
- package/dist/tool-pipeline.js +408 -0
- package/dist/tool-pipeline.js.map +1 -0
- package/dist/tool-progress.d.ts +32 -0
- package/dist/tool-progress.d.ts.map +1 -0
- package/dist/tool-progress.js +129 -0
- package/dist/tool-progress.js.map +1 -0
- package/dist/tools.d.ts +35 -111
- package/dist/tools.d.ts.map +1 -0
- package/dist/tools.js +150 -610
- package/dist/tools.js.map +1 -0
- package/dist/{transform.d.ts → transform/transform.d.ts} +2 -1
- package/dist/transform/transform.d.ts.map +1 -0
- package/dist/{transform.js → transform/transform.js} +81 -771
- package/dist/transform/transform.js.map +1 -0
- package/dist/{transform-types.d.ts → transform/types.d.ts} +2 -0
- package/dist/transform/types.d.ts.map +1 -0
- package/dist/{transform-types.js → transform/types.js} +1 -0
- package/dist/transform/types.js.map +1 -0
- package/dist/transform/worker-pool.d.ts +93 -0
- package/dist/transform/worker-pool.d.ts.map +1 -0
- package/dist/transform/worker-pool.js +757 -0
- package/dist/transform/worker-pool.js.map +1 -0
- package/dist/transform/workers/transform-child.d.ts +2 -0
- package/dist/transform/workers/transform-child.d.ts.map +1 -0
- package/dist/{workers → transform/workers}/transform-child.js +17 -13
- package/dist/transform/workers/transform-child.js.map +1 -0
- package/dist/transform/workers/transform-worker.d.ts +2 -0
- package/dist/transform/workers/transform-worker.d.ts.map +1 -0
- package/dist/{workers → transform/workers}/transform-worker.js +16 -13
- package/dist/transform/workers/transform-worker.js.map +1 -0
- package/dist/type-guards.d.ts +1 -0
- package/dist/type-guards.d.ts.map +1 -0
- package/dist/type-guards.js +4 -4
- package/dist/type-guards.js.map +1 -0
- package/package.json +6 -7
- package/dist/AGENTS.md +0 -152
- package/dist/http-native.js +0 -1320
- package/dist/instructions.md +0 -113
- package/dist/workers/transform-child.d.ts +0 -1
- package/dist/workers/transform-worker.d.ts +0 -1
package/dist/session.js
CHANGED
|
@@ -16,6 +16,7 @@ export function composeCloseHandlers(first, second) {
|
|
|
16
16
|
}
|
|
17
17
|
const MIN_CLEANUP_INTERVAL_MS = 10_000;
|
|
18
18
|
const MAX_CLEANUP_INTERVAL_MS = 60_000;
|
|
19
|
+
const SESSION_CLOSE_BATCH_SIZE = 10;
|
|
19
20
|
function getCleanupIntervalMs(sessionTtlMs) {
|
|
20
21
|
return Math.min(Math.max(Math.floor(sessionTtlMs / 2), MIN_CLEANUP_INTERVAL_MS), MAX_CLEANUP_INTERVAL_MS);
|
|
21
22
|
}
|
|
@@ -30,11 +31,29 @@ function handleSessionCleanupError(error) {
|
|
|
30
31
|
return;
|
|
31
32
|
logWarn('Session cleanup loop failed', { error: formatError(error) });
|
|
32
33
|
}
|
|
34
|
+
function getRejectedSettledResult(result) {
|
|
35
|
+
return result.status === 'rejected' ? result : undefined;
|
|
36
|
+
}
|
|
37
|
+
function logRejectedSettledResults(results, message) {
|
|
38
|
+
for (const result of results) {
|
|
39
|
+
const rejected = getRejectedSettledResult(result);
|
|
40
|
+
if (!rejected)
|
|
41
|
+
continue;
|
|
42
|
+
logWarn(message, { error: formatError(rejected.reason) });
|
|
43
|
+
}
|
|
44
|
+
}
|
|
33
45
|
function isSessionExpired(session, now, sessionTtlMs) {
|
|
34
46
|
if (sessionTtlMs <= 0)
|
|
35
47
|
return false;
|
|
36
48
|
return now - session.lastSeen > sessionTtlMs;
|
|
37
49
|
}
|
|
50
|
+
function chunkArray(items, size) {
|
|
51
|
+
const chunks = [];
|
|
52
|
+
for (let index = 0; index < items.length; index += size) {
|
|
53
|
+
chunks.push(items.slice(index, index + size));
|
|
54
|
+
}
|
|
55
|
+
return chunks;
|
|
56
|
+
}
|
|
38
57
|
class SessionCleanupLoop {
|
|
39
58
|
store;
|
|
40
59
|
sessionTtlMs;
|
|
@@ -56,27 +75,9 @@ class SessionCleanupLoop {
|
|
|
56
75
|
for await (const getNow of ticks) {
|
|
57
76
|
const now = getNow();
|
|
58
77
|
const evicted = this.store.evictExpired();
|
|
59
|
-
const
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
await Promise.allSettled(batch.map(async (session) => {
|
|
63
|
-
unregisterMcpSessionServerByServer(session.server);
|
|
64
|
-
const results = await Promise.allSettled([
|
|
65
|
-
session.transport.close(),
|
|
66
|
-
session.server.close(),
|
|
67
|
-
]);
|
|
68
|
-
const [transportResult, serverResult] = results;
|
|
69
|
-
if (transportResult.status === 'rejected') {
|
|
70
|
-
logWarn('Failed to close expired session transport', {
|
|
71
|
-
error: formatError(transportResult.reason),
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
if (serverResult.status === 'rejected') {
|
|
75
|
-
logWarn('Failed to close expired session server', {
|
|
76
|
-
error: formatError(serverResult.reason),
|
|
77
|
-
});
|
|
78
|
-
}
|
|
79
|
-
}));
|
|
78
|
+
for (const batch of chunkArray(evicted, SESSION_CLOSE_BATCH_SIZE)) {
|
|
79
|
+
const results = await Promise.allSettled(batch.map(async (session) => this.closeExpiredSession(session)));
|
|
80
|
+
logRejectedSettledResults(results, 'Failed to process expired session cleanup task');
|
|
80
81
|
if (signal.aborted)
|
|
81
82
|
return;
|
|
82
83
|
}
|
|
@@ -88,6 +89,31 @@ class SessionCleanupLoop {
|
|
|
88
89
|
}
|
|
89
90
|
}
|
|
90
91
|
}
|
|
92
|
+
async closeExpiredSession(session) {
|
|
93
|
+
try {
|
|
94
|
+
unregisterMcpSessionServerByServer(session.server);
|
|
95
|
+
}
|
|
96
|
+
catch (error) {
|
|
97
|
+
logWarn('Failed to unregister session server', {
|
|
98
|
+
error: formatError(error),
|
|
99
|
+
});
|
|
100
|
+
}
|
|
101
|
+
const [transportResult, serverResult] = await Promise.allSettled([
|
|
102
|
+
session.transport.close(),
|
|
103
|
+
session.server.close(),
|
|
104
|
+
]);
|
|
105
|
+
const transportRejected = getRejectedSettledResult(transportResult);
|
|
106
|
+
const serverRejected = getRejectedSettledResult(serverResult);
|
|
107
|
+
this.logCloseFailure('transport', transportRejected?.reason);
|
|
108
|
+
this.logCloseFailure('server', serverRejected?.reason);
|
|
109
|
+
}
|
|
110
|
+
logCloseFailure(target, error) {
|
|
111
|
+
if (error == null)
|
|
112
|
+
return;
|
|
113
|
+
logWarn(`Failed to close expired session ${target}`, {
|
|
114
|
+
error: formatError(error),
|
|
115
|
+
});
|
|
116
|
+
}
|
|
91
117
|
}
|
|
92
118
|
export function startSessionCleanupLoop(store, sessionTtlMs) {
|
|
93
119
|
return new SessionCleanupLoop(store, sessionTtlMs).start();
|
|
@@ -96,6 +122,11 @@ function moveSessionToEnd(sessions, sessionId, session) {
|
|
|
96
122
|
sessions.delete(sessionId);
|
|
97
123
|
sessions.set(sessionId, session);
|
|
98
124
|
}
|
|
125
|
+
function removeSessionById(sessions, sessionId) {
|
|
126
|
+
const session = sessions.get(sessionId);
|
|
127
|
+
sessions.delete(sessionId);
|
|
128
|
+
return session;
|
|
129
|
+
}
|
|
99
130
|
function isBlankSessionId(sessionId) {
|
|
100
131
|
return sessionId.length === 0;
|
|
101
132
|
}
|
|
@@ -128,9 +159,7 @@ class InMemorySessionStore {
|
|
|
128
159
|
remove(sessionId) {
|
|
129
160
|
if (isBlankSessionId(sessionId))
|
|
130
161
|
return undefined;
|
|
131
|
-
|
|
132
|
-
this.sessions.delete(sessionId);
|
|
133
|
-
return session;
|
|
162
|
+
return removeSessionById(this.sessions, sessionId);
|
|
134
163
|
}
|
|
135
164
|
size() {
|
|
136
165
|
return this.sessions.size;
|
|
@@ -142,7 +171,9 @@ class InMemorySessionStore {
|
|
|
142
171
|
this.inflight += 1;
|
|
143
172
|
}
|
|
144
173
|
decrementInFlight() {
|
|
145
|
-
|
|
174
|
+
if (this.inflight === 0)
|
|
175
|
+
return;
|
|
176
|
+
this.inflight -= 1;
|
|
146
177
|
}
|
|
147
178
|
clear() {
|
|
148
179
|
const entries = [...this.sessions.values()];
|
|
@@ -164,10 +195,7 @@ class InMemorySessionStore {
|
|
|
164
195
|
const oldest = this.sessions.keys().next();
|
|
165
196
|
if (oldest.done)
|
|
166
197
|
return undefined;
|
|
167
|
-
|
|
168
|
-
const session = this.sessions.get(oldestId);
|
|
169
|
-
this.sessions.delete(oldestId);
|
|
170
|
-
return session;
|
|
198
|
+
return removeSessionById(this.sessions, oldest.value);
|
|
171
199
|
}
|
|
172
200
|
}
|
|
173
201
|
export function createSessionStore(sessionTtlMs) {
|
|
@@ -224,3 +252,4 @@ export function ensureSessionCapacity({ store, maxSessions, evictOldest, }) {
|
|
|
224
252
|
return false;
|
|
225
253
|
return !isAtCapacity(store, maxSessions);
|
|
226
254
|
}
|
|
255
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../src/session.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,WAAW,IAAI,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAEzE,OAAO,EACL,OAAO,EACP,OAAO,EACP,kCAAkC,GACnC,MAAM,oBAAoB,CAAC;AAkC5B,MAAM,UAAU,oBAAoB,CAClC,KAAmB,EACnB,MAAoB;IAEpB,IAAI,CAAC,KAAK;QAAE,OAAO,MAAM,CAAC;IAC1B,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAC;IAE1B,OAAO,GAAG,EAAE;QACV,IAAI,CAAC;YACH,KAAK,EAAE,CAAC;QACV,CAAC;gBAAS,CAAC;YACT,MAAM,EAAE,CAAC;QACX,CAAC;IACH,CAAC,CAAC;AACJ,CAAC;AAED,MAAM,uBAAuB,GAAG,MAAM,CAAC;AACvC,MAAM,uBAAuB,GAAG,MAAM,CAAC;AACvC,MAAM,wBAAwB,GAAG,EAAE,CAAC;AAEpC,SAAS,oBAAoB,CAAC,YAAoB;IAChD,OAAO,IAAI,CAAC,GAAG,CACb,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,CAAC,CAAC,EAAE,uBAAuB,CAAC,EAC/D,uBAAuB,CACxB,CAAC;AACJ,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,YAAY,CAAC,KAAc;IAClC,OAAO,KAAK,YAAY,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,YAAY,CAAC;AAC/D,CAAC;AAED,SAAS,yBAAyB,CAAC,KAAc;IAC/C,IAAI,YAAY,CAAC,KAAK,CAAC;QAAE,OAAO;IAChC,OAAO,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,wBAAwB,CAC/B,MAA+B;IAE/B,OAAO,MAAM,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3D,CAAC;AAED,SAAS,yBAAyB,CAChC,OAAiD,EACjD,OAAe;IAEf,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,QAAQ,GAAG,wBAAwB,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,CAAC,QAAQ;YAAE,SAAS;QAExB,OAAO,CAAC,OAAO,EAAE,EAAE,KAAK,EAAE,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,OAAqB,EACrB,GAAW,EACX,YAAoB;IAEpB,IAAI,YAAY,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACpC,OAAO,GAAG,GAAG,OAAO,CAAC,QAAQ,GAAG,YAAY,CAAC;AAC/C,CAAC;AAED,SAAS,UAAU,CAAI,KAAmB,EAAE,IAAY;IACtD,MAAM,MAAM,GAAU,EAAE,CAAC;IACzB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,KAAK,CAAC,MAAM,EAAE,KAAK,IAAI,IAAI,EAAE,CAAC;QACxD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC,CAAC,CAAC;IAChD,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,MAAM,kBAAkB;IAEH;IACA;IAFnB,YACmB,KAAmB,EACnB,YAAoB;QADpB,UAAK,GAAL,KAAK,CAAc;QACnB,iBAAY,GAAZ,YAAY,CAAQ;IACpC,CAAC;IAEJ,KAAK;QACH,MAAM,UAAU,GAAG,IAAI,eAAe,EAAE,CAAC;QACzC,KAAK,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC;QAClE,OAAO,UAAU,CAAC;IACpB,CAAC;IAEO,KAAK,CAAC,GAAG,CAAC,MAAmB;QACnC,MAAM,UAAU,GAAG,oBAAoB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAE3D,MAAM,KAAK,GAAG,kBAAkB,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,EAAE;YACrD,MAAM;YACN,GAAG,EAAE,KAAK;SACX,CAAC,CAAC;QAEH,IAAI,KAAK,EAAE,MAAM,MAAM,IAAI,KAAK,EAAE,CAAC;YACjC,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC;YACrB,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,EAAE,CAAC;YAE1C,KAAK,MAAM,KAAK,IAAI,UAAU,CAAC,OAAO,EAAE,wBAAwB,CAAC,EAAE,CAAC;gBAClE,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,UAAU,CACtC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,OAAO,CAAC,CAAC,CAChE,CAAC;gBAEF,yBAAyB,CACvB,OAAO,EACP,gDAAgD,CACjD,CAAC;gBAEF,IAAI,MAAM,CAAC,OAAO;oBAAE,OAAO;YAC7B,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,OAAO,CAAC,0BAA0B,EAAE;oBAClC,OAAO,EAAE,OAAO,CAAC,MAAM;oBACvB,SAAS,EAAE,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE;iBACvC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAAC,OAAqB;QACrD,IAAI,CAAC;YACH,kCAAkC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,qCAAqC,EAAE;gBAC7C,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC;aAC1B,CAAC,CAAC;QACL,CAAC;QAED,MAAM,CAAC,eAAe,EAAE,YAAY,CAAC,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC;YAC/D,OAAO,CAAC,SAAS,CAAC,KAAK,EAAE;YACzB,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE;SACvB,CAAC,CAAC;QAEH,MAAM,iBAAiB,GAAG,wBAAwB,CAAC,eAAe,CAAC,CAAC;QACpE,MAAM,cAAc,GAAG,wBAAwB,CAAC,YAAY,CAAC,CAAC;QAE9D,IAAI,CAAC,eAAe,CAAC,WAAW,EAAE,iBAAiB,EAAE,MAAM,CAAC,CAAC;QAC7D,IAAI,CAAC,eAAe,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC;IACzD,CAAC;IAEO,eAAe,CACrB,MAA8B,EAC9B,KAAc;QAEd,IAAI,KAAK,IAAI,IAAI;YAAE,OAAO;QAE1B,OAAO,CAAC,mCAAmC,MAAM,EAAE,EAAE;YACnD,KAAK,EAAE,WAAW,CAAC,KAAK,CAAC;SAC1B,CAAC,CAAC;IACL,CAAC;CACF;AAED,MAAM,UAAU,uBAAuB,CACrC,KAAmB,EACnB,YAAoB;IAEpB,OAAO,IAAI,kBAAkB,CAAC,KAAK,EAAE,YAAY,CAAC,CAAC,KAAK,EAAE,CAAC;AAC7D,CAAC;AAED,SAAS,gBAAgB,CACvB,QAAmC,EACnC,SAAiB,EACjB,OAAqB;IAErB,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3B,QAAQ,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,iBAAiB,CACxB,QAAmC,EACnC,SAAiB;IAEjB,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACxC,QAAQ,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IAC3B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,gBAAgB,CAAC,SAAiB;IACzC,OAAO,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;AAChC,CAAC;AAED,MAAM,oBAAoB;IAIK;IAHZ,QAAQ,GAAG,IAAI,GAAG,EAAwB,CAAC;IACpD,QAAQ,GAAG,CAAC,CAAC;IAErB,YAA6B,YAAoB;QAApB,iBAAY,GAAZ,YAAY,CAAQ;IAAG,CAAC;IAErD,GAAG,CAAC,SAAiB;QACnB,IAAI,gBAAgB,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QAClD,OAAO,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,KAAK,CAAC,SAAiB;QACrB,IAAI,gBAAgB,CAAC,SAAS,CAAC;YAAE,OAAO;QAExC,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;QAC7C,IAAI,CAAC,OAAO;YAAE,OAAO;QAErB,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACtD,CAAC;IAED,GAAG,CAAC,SAAiB,EAAE,KAAmB;QACxC,IAAI,gBAAgB,CAAC,SAAS,CAAC;YAAE,OAAO;QACxC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,CAAC,SAAiB;QACtB,IAAI,gBAAgB,CAAC,SAAS,CAAC;YAAE,OAAO,SAAS,CAAC;QAClD,OAAO,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACrD,CAAC;IAED,IAAI;QACF,OAAO,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;IAC5B,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED,iBAAiB;QACf,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,iBAAiB;QACf,IAAI,IAAI,CAAC,QAAQ,KAAK,CAAC;YAAE,OAAO;QAChC,IAAI,CAAC,QAAQ,IAAI,CAAC,CAAC;IACrB,CAAC;IAED,KAAK;QACH,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5C,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,YAAY;QACV,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QACvB,MAAM,OAAO,GAAmB,EAAE,CAAC;QAEnC,KAAK,MAAM,CAAC,EAAE,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,CAAC;YACpD,IAAI,CAAC,gBAAgB,CAAC,OAAO,EAAE,GAAG,EAAE,IAAI,CAAC,YAAY,CAAC;gBAAE,SAAS;YACjE,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;YACzB,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QAED,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,WAAW;QACT,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3C,IAAI,MAAM,CAAC,IAAI;YAAE,OAAO,SAAS,CAAC;QAElC,OAAO,iBAAiB,CAAC,IAAI,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACxD,CAAC;CACF;AAED,MAAM,UAAU,kBAAkB,CAAC,YAAoB;IACrD,OAAO,IAAI,oBAAoB,CAAC,YAAY,CAAC,CAAC;AAChD,CAAC;AAED,MAAM,kBAAkB;IAIO;IAHrB,YAAY,GAAG,KAAK,CAAC;IACrB,WAAW,GAAG,KAAK,CAAC;IAE5B,YAA6B,KAAmB;QAAnB,UAAK,GAAL,KAAK,CAAc;IAAG,CAAC;IAEpD,WAAW;QACT,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO;QAC9B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,KAAK,CAAC,iBAAiB,EAAE,CAAC;IACjC,CAAC;IAED,eAAe;QACb,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;IAC1B,CAAC;IAED,aAAa;QACX,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;CACF;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAmB;IACnD,OAAO,IAAI,kBAAkB,CAAC,KAAK,CAAC,CAAC;AACvC,CAAC;AAED,SAAS,WAAW,CAAC,KAAmB;IACtC,OAAO,KAAK,CAAC,IAAI,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;AACzC,CAAC;AAED,MAAM,UAAU,kBAAkB,CAChC,KAAmB,EACnB,WAAmB;IAEnB,IAAI,WAAW,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IACnC,IAAI,WAAW,CAAC,KAAK,CAAC,IAAI,WAAW;QAAE,OAAO,KAAK,CAAC;IAEpD,KAAK,CAAC,iBAAiB,EAAE,CAAC;IAC1B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,YAAY,CAAC,KAAmB,EAAE,WAAmB;IAC5D,OAAO,WAAW,CAAC,KAAK,CAAC,IAAI,WAAW,CAAC;AAC3C,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,EACpC,KAAK,EACL,WAAW,EACX,WAAW,GAKZ;IACC,IAAI,WAAW,IAAI,CAAC;QAAE,OAAO,KAAK,CAAC;IAEnC,MAAM,WAAW,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IACjC,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IAElC,IAAI,WAAW,GAAG,QAAQ,GAAG,WAAW;QAAE,OAAO,IAAI,CAAC;IAEtD,MAAM,WAAW,GACf,WAAW,IAAI,WAAW,IAAI,WAAW,GAAG,CAAC,GAAG,QAAQ,GAAG,WAAW,CAAC;IAEzE,IAAI,CAAC,WAAW;QAAE,OAAO,KAAK,CAAC;IAC/B,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC;QAAE,OAAO,KAAK,CAAC;IAEtC,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;AAC3C,CAAC"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js';
|
|
2
|
+
import { type ServerResult } from '@modelcontextprotocol/sdk/types.js';
|
|
3
|
+
import { type CreateTaskResult, type TaskState } from './manager.js';
|
|
4
|
+
import { type ToolCallContext } from './owner.js';
|
|
5
|
+
export interface ExtendedCallToolRequest {
|
|
6
|
+
method: 'tools/call';
|
|
7
|
+
params: {
|
|
8
|
+
name: string;
|
|
9
|
+
arguments?: Record<string, unknown> | undefined;
|
|
10
|
+
task?: {
|
|
11
|
+
ttl?: number | undefined;
|
|
12
|
+
} | undefined;
|
|
13
|
+
_meta?: {
|
|
14
|
+
progressToken?: string | number | undefined;
|
|
15
|
+
'io.modelcontextprotocol/related-task'?: {
|
|
16
|
+
taskId: string;
|
|
17
|
+
} | undefined;
|
|
18
|
+
[key: string]: unknown;
|
|
19
|
+
} | undefined;
|
|
20
|
+
[key: string]: unknown;
|
|
21
|
+
};
|
|
22
|
+
[key: string]: unknown;
|
|
23
|
+
}
|
|
24
|
+
export declare function abortTaskExecution(taskId: string): void;
|
|
25
|
+
export declare function cancelTasksForOwner(ownerKey: string, statusMessage?: string): number;
|
|
26
|
+
export declare function abortAllTaskExecutions(): void;
|
|
27
|
+
type TaskSummary = CreateTaskResult['task'];
|
|
28
|
+
export declare function toTaskSummary(task: {
|
|
29
|
+
taskId: string;
|
|
30
|
+
status: TaskState['status'];
|
|
31
|
+
statusMessage?: string;
|
|
32
|
+
createdAt: string;
|
|
33
|
+
lastUpdatedAt: string;
|
|
34
|
+
ttl: number;
|
|
35
|
+
pollInterval: number;
|
|
36
|
+
}): TaskSummary;
|
|
37
|
+
export declare function withRelatedTaskMeta(result: ServerResult, taskId: string): ServerResult;
|
|
38
|
+
export declare function emitTaskStatusNotification(server: McpServer, task: TaskState): void;
|
|
39
|
+
export declare function throwTaskNotFound(): never;
|
|
40
|
+
export declare function handleToolCallRequest(server: McpServer, request: ExtendedCallToolRequest, context: ToolCallContext): Promise<ServerResult>;
|
|
41
|
+
export {};
|
|
42
|
+
//# sourceMappingURL=execution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../../src/tasks/execution.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAGL,KAAK,YAAY,EAClB,MAAM,oCAAoC,CAAC;AAW5C,OAAO,EACL,KAAK,gBAAgB,EAErB,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,YAAY,CAAC;AAMpB,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,YAAY,CAAC;IACrB,MAAM,EAAE;QACN,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAC;QAChD,IAAI,CAAC,EACD;YACE,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;SAC1B,GACD,SAAS,CAAC;QACd,KAAK,CAAC,EACF;YACE,aAAa,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;YAC5C,sCAAsC,CAAC,EACnC;gBAAE,MAAM,EAAE,MAAM,CAAA;aAAE,GAClB,SAAS,CAAC;YACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;SACxB,GACD,SAAS,CAAC;QACd,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;KACxB,CAAC;IACF,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAqBD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAKvD;AAMD,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,MAAM,EAChB,aAAa,SAA4D,GACxE,MAAM,CASR;AAED,wBAAgB,sBAAsB,IAAI,IAAI,CAE7C;AAgBD,KAAK,WAAW,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;AAM5C,wBAAgB,aAAa,CAAC,IAAI,EAAE;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,SAAS,CAAC,QAAQ,CAAC,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,GAAG,EAAE,MAAM,CAAC;IACZ,YAAY,EAAE,MAAM,CAAC;CACtB,GAAG,WAAW,CAed;AAED,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,MAAM,GACb,YAAY,CAYd;AAED,wBAAgB,0BAA0B,CACxC,MAAM,EAAE,SAAS,EACjB,IAAI,EAAE,SAAS,GACd,IAAI,CAiBN;AAoBD,wBAAgB,iBAAiB,IAAI,KAAK,CAEzC;AA8KD,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,uBAAuB,EAChC,OAAO,EAAE,eAAe,GACvB,OAAO,CAAC,YAAY,CAAC,CAYvB"}
|
|
@@ -0,0 +1,241 @@
|
|
|
1
|
+
import { ErrorCode, McpError, } from '@modelcontextprotocol/sdk/types.js';
|
|
2
|
+
import { logWarn, runWithRequestContext } from '../observability.js';
|
|
3
|
+
import { FETCH_URL_TOOL_NAME, fetchUrlInputSchema, fetchUrlToolHandler, } from '../tools.js';
|
|
4
|
+
import { isObject } from '../type-guards.js';
|
|
5
|
+
import { taskManager, } from './manager.js';
|
|
6
|
+
import { compact, tryReadToolStructuredError, } from './owner.js';
|
|
7
|
+
/* -------------------------------------------------------------------------------------------------
|
|
8
|
+
* Abort-controller management for in-flight task executions
|
|
9
|
+
* ------------------------------------------------------------------------------------------------- */
|
|
10
|
+
// Intentionally process-global (not session-scoped): abortAllTaskExecutions() is called
|
|
11
|
+
// during SIGTERM/SIGINT shutdown to cancel every in-flight task across all sessions.
|
|
12
|
+
// TODO: consider per-session isolation if stricter task-ownership semantics are needed.
|
|
13
|
+
const taskAbortControllers = new Map();
|
|
14
|
+
function attachAbortController(taskId) {
|
|
15
|
+
const existing = taskAbortControllers.get(taskId);
|
|
16
|
+
if (existing) {
|
|
17
|
+
taskAbortControllers.delete(taskId);
|
|
18
|
+
}
|
|
19
|
+
const controller = new AbortController();
|
|
20
|
+
taskAbortControllers.set(taskId, controller);
|
|
21
|
+
return controller;
|
|
22
|
+
}
|
|
23
|
+
export function abortTaskExecution(taskId) {
|
|
24
|
+
const controller = taskAbortControllers.get(taskId);
|
|
25
|
+
if (!controller)
|
|
26
|
+
return;
|
|
27
|
+
controller.abort();
|
|
28
|
+
taskAbortControllers.delete(taskId);
|
|
29
|
+
}
|
|
30
|
+
function clearTaskExecution(taskId) {
|
|
31
|
+
taskAbortControllers.delete(taskId);
|
|
32
|
+
}
|
|
33
|
+
export function cancelTasksForOwner(ownerKey, statusMessage = 'The task was cancelled because its owner session ended.') {
|
|
34
|
+
if (!ownerKey)
|
|
35
|
+
return 0;
|
|
36
|
+
const cancelled = taskManager.cancelTasksByOwner(ownerKey, statusMessage);
|
|
37
|
+
for (const task of cancelled) {
|
|
38
|
+
abortTaskExecution(task.taskId);
|
|
39
|
+
}
|
|
40
|
+
return cancelled.length;
|
|
41
|
+
}
|
|
42
|
+
export function abortAllTaskExecutions() {
|
|
43
|
+
for (const taskId of taskAbortControllers.keys())
|
|
44
|
+
abortTaskExecution(taskId);
|
|
45
|
+
}
|
|
46
|
+
export function toTaskSummary(task) {
|
|
47
|
+
return {
|
|
48
|
+
taskId: task.taskId,
|
|
49
|
+
status: task.status,
|
|
50
|
+
...(task.statusMessage ? { statusMessage: task.statusMessage } : {}),
|
|
51
|
+
createdAt: task.createdAt,
|
|
52
|
+
lastUpdatedAt: task.lastUpdatedAt,
|
|
53
|
+
ttl: task.ttl,
|
|
54
|
+
pollInterval: task.pollInterval,
|
|
55
|
+
_meta: {
|
|
56
|
+
'io.modelcontextprotocol/related-task': {
|
|
57
|
+
taskId: task.taskId,
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
export function withRelatedTaskMeta(result, taskId) {
|
|
63
|
+
const relatedTaskMeta = {
|
|
64
|
+
'io.modelcontextprotocol/related-task': { taskId },
|
|
65
|
+
};
|
|
66
|
+
return {
|
|
67
|
+
...result,
|
|
68
|
+
_meta: {
|
|
69
|
+
...result._meta,
|
|
70
|
+
...relatedTaskMeta,
|
|
71
|
+
},
|
|
72
|
+
};
|
|
73
|
+
}
|
|
74
|
+
export function emitTaskStatusNotification(server, task) {
|
|
75
|
+
if (!server.isConnected())
|
|
76
|
+
return;
|
|
77
|
+
// NOTE: 'notifications/tasks/status' is not part of the MCP v2025-11-25 specification.
|
|
78
|
+
// This relies on the experimental task infrastructure in the SDK and may change.
|
|
79
|
+
void server.server
|
|
80
|
+
.notification({
|
|
81
|
+
method: 'notifications/tasks/status',
|
|
82
|
+
params: toTaskSummary(task),
|
|
83
|
+
})
|
|
84
|
+
.catch((error) => {
|
|
85
|
+
logWarn('Failed to send task status notification', {
|
|
86
|
+
taskId: task.taskId,
|
|
87
|
+
status: task.status,
|
|
88
|
+
error,
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
}
|
|
92
|
+
/* -------------------------------------------------------------------------------------------------
|
|
93
|
+
* Validation helpers
|
|
94
|
+
* ------------------------------------------------------------------------------------------------- */
|
|
95
|
+
function requireFetchUrlArgs(args) {
|
|
96
|
+
const parsed = fetchUrlInputSchema.safeParse(args);
|
|
97
|
+
if (!parsed.success) {
|
|
98
|
+
throw new McpError(ErrorCode.InvalidParams, 'Invalid arguments for fetch-url');
|
|
99
|
+
}
|
|
100
|
+
return parsed.data;
|
|
101
|
+
}
|
|
102
|
+
// -32002 is the MCP extension code for resource-not-found; the SDK ErrorCode enum does not export it.
|
|
103
|
+
const RESOURCE_NOT_FOUND_ERROR_CODE = -32002;
|
|
104
|
+
export function throwTaskNotFound() {
|
|
105
|
+
throw new McpError(RESOURCE_NOT_FOUND_ERROR_CODE, 'Task not found');
|
|
106
|
+
}
|
|
107
|
+
function requireFetchUrlToolName(name) {
|
|
108
|
+
if (name === FETCH_URL_TOOL_NAME)
|
|
109
|
+
return;
|
|
110
|
+
throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: '${name}'`);
|
|
111
|
+
}
|
|
112
|
+
/* -------------------------------------------------------------------------------------------------
|
|
113
|
+
* Task result builders
|
|
114
|
+
* ------------------------------------------------------------------------------------------------- */
|
|
115
|
+
function buildRelatedTaskMeta(taskId, meta) {
|
|
116
|
+
return {
|
|
117
|
+
...(meta ?? {}),
|
|
118
|
+
'io.modelcontextprotocol/related-task': { taskId },
|
|
119
|
+
};
|
|
120
|
+
}
|
|
121
|
+
function buildCreateTaskResult(task) {
|
|
122
|
+
return {
|
|
123
|
+
task,
|
|
124
|
+
_meta: {
|
|
125
|
+
'io.modelcontextprotocol/related-task': {
|
|
126
|
+
taskId: task.taskId,
|
|
127
|
+
status: task.status,
|
|
128
|
+
...(task.statusMessage ? { statusMessage: task.statusMessage } : {}),
|
|
129
|
+
createdAt: task.createdAt,
|
|
130
|
+
lastUpdatedAt: task.lastUpdatedAt,
|
|
131
|
+
ttl: task.ttl,
|
|
132
|
+
pollInterval: task.pollInterval,
|
|
133
|
+
},
|
|
134
|
+
},
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
/* -------------------------------------------------------------------------------------------------
|
|
138
|
+
* Execution pipeline
|
|
139
|
+
* ------------------------------------------------------------------------------------------------- */
|
|
140
|
+
function updateWorkingTaskStatus(server, taskId, statusMessage) {
|
|
141
|
+
const current = taskManager.getTask(taskId);
|
|
142
|
+
if (current?.status !== 'working')
|
|
143
|
+
return;
|
|
144
|
+
if (current.statusMessage === statusMessage)
|
|
145
|
+
return;
|
|
146
|
+
taskManager.updateTask(taskId, { statusMessage });
|
|
147
|
+
const updated = taskManager.getTask(taskId);
|
|
148
|
+
if (updated)
|
|
149
|
+
emitTaskStatusNotification(server, updated);
|
|
150
|
+
}
|
|
151
|
+
async function runFetchTaskExecution(params) {
|
|
152
|
+
const { server, taskId, args, meta, sendNotification } = params;
|
|
153
|
+
return runWithRequestContext({ requestId: taskId, operationId: taskId }, async () => {
|
|
154
|
+
const controller = attachAbortController(taskId);
|
|
155
|
+
try {
|
|
156
|
+
const relatedMeta = buildRelatedTaskMeta(taskId, meta);
|
|
157
|
+
const result = await fetchUrlToolHandler(args, {
|
|
158
|
+
signal: controller.signal,
|
|
159
|
+
requestId: taskId,
|
|
160
|
+
_meta: relatedMeta,
|
|
161
|
+
...compact({ sendNotification }),
|
|
162
|
+
onProgress: (_progress, message) => {
|
|
163
|
+
updateWorkingTaskStatus(server, taskId, message);
|
|
164
|
+
},
|
|
165
|
+
});
|
|
166
|
+
const isToolError = isObject(result) &&
|
|
167
|
+
typeof result['isError'] === 'boolean' &&
|
|
168
|
+
result['isError'];
|
|
169
|
+
taskManager.updateTask(taskId, {
|
|
170
|
+
status: isToolError ? 'failed' : 'completed',
|
|
171
|
+
statusMessage: isToolError
|
|
172
|
+
? (tryReadToolStructuredError(result) ?? 'Tool execution failed')
|
|
173
|
+
: 'Task completed successfully.',
|
|
174
|
+
result,
|
|
175
|
+
});
|
|
176
|
+
const task = taskManager.getTask(taskId);
|
|
177
|
+
if (task)
|
|
178
|
+
emitTaskStatusNotification(server, task);
|
|
179
|
+
}
|
|
180
|
+
catch (error) {
|
|
181
|
+
const errorMessage = error instanceof Error ? error.message : String(error);
|
|
182
|
+
const errorPayload = error instanceof McpError
|
|
183
|
+
? {
|
|
184
|
+
code: error.code,
|
|
185
|
+
message: errorMessage,
|
|
186
|
+
data: error.data,
|
|
187
|
+
}
|
|
188
|
+
: {
|
|
189
|
+
code: ErrorCode.InternalError,
|
|
190
|
+
message: errorMessage,
|
|
191
|
+
};
|
|
192
|
+
taskManager.updateTask(taskId, {
|
|
193
|
+
status: 'failed',
|
|
194
|
+
statusMessage: errorMessage,
|
|
195
|
+
error: errorPayload,
|
|
196
|
+
});
|
|
197
|
+
const task = taskManager.getTask(taskId);
|
|
198
|
+
if (task)
|
|
199
|
+
emitTaskStatusNotification(server, task);
|
|
200
|
+
}
|
|
201
|
+
finally {
|
|
202
|
+
clearTaskExecution(taskId);
|
|
203
|
+
}
|
|
204
|
+
});
|
|
205
|
+
}
|
|
206
|
+
function handleTaskToolCall(server, params, context) {
|
|
207
|
+
requireFetchUrlToolName(params.name);
|
|
208
|
+
const validArgs = requireFetchUrlArgs(params.arguments);
|
|
209
|
+
const task = taskManager.createTask(params.task?.ttl !== undefined ? { ttl: params.task.ttl } : undefined, 'Task started', context.ownerKey);
|
|
210
|
+
void runFetchTaskExecution({
|
|
211
|
+
server,
|
|
212
|
+
taskId: task.taskId,
|
|
213
|
+
args: validArgs,
|
|
214
|
+
...compact({
|
|
215
|
+
meta: params._meta,
|
|
216
|
+
sendNotification: context.sendNotification,
|
|
217
|
+
}),
|
|
218
|
+
});
|
|
219
|
+
return buildCreateTaskResult(toTaskSummary(task));
|
|
220
|
+
}
|
|
221
|
+
async function handleDirectToolCall(params, context) {
|
|
222
|
+
const args = requireFetchUrlArgs(params.arguments);
|
|
223
|
+
const extra = compact({
|
|
224
|
+
signal: context.signal,
|
|
225
|
+
requestId: context.requestId,
|
|
226
|
+
sendNotification: context.sendNotification,
|
|
227
|
+
_meta: params._meta,
|
|
228
|
+
});
|
|
229
|
+
return fetchUrlToolHandler(args, extra);
|
|
230
|
+
}
|
|
231
|
+
export async function handleToolCallRequest(server, request, context) {
|
|
232
|
+
const { params } = request;
|
|
233
|
+
if (params.task) {
|
|
234
|
+
return handleTaskToolCall(server, params, context);
|
|
235
|
+
}
|
|
236
|
+
if (params.name === FETCH_URL_TOOL_NAME) {
|
|
237
|
+
return handleDirectToolCall(params, context);
|
|
238
|
+
}
|
|
239
|
+
throw new McpError(ErrorCode.MethodNotFound, `Unknown tool: ${params.name}`);
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=execution.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.js","sourceRoot":"","sources":["../../src/tasks/execution.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,16 +28,25 @@ export interface CreateTaskResult {
|
|
|
28
28
|
lastUpdatedAt: string;
|
|
29
29
|
ttl: number;
|
|
30
30
|
pollInterval: number;
|
|
31
|
+
_meta?: {
|
|
32
|
+
'io.modelcontextprotocol/related-task': {
|
|
33
|
+
taskId: string;
|
|
34
|
+
};
|
|
35
|
+
};
|
|
31
36
|
};
|
|
32
37
|
_meta?: Record<string, unknown>;
|
|
33
38
|
}
|
|
34
39
|
declare class TaskManager {
|
|
35
40
|
private tasks;
|
|
41
|
+
private ownerCounts;
|
|
36
42
|
private waiters;
|
|
37
43
|
constructor();
|
|
38
44
|
private startCleanupLoop;
|
|
39
45
|
private removeExpiredTasks;
|
|
46
|
+
private removeTask;
|
|
40
47
|
private countTasksForOwner;
|
|
48
|
+
private incrementOwnerCount;
|
|
49
|
+
private decrementOwnerCount;
|
|
41
50
|
private assertTaskCapacity;
|
|
42
51
|
createTask(options?: CreateTaskOptions, statusMessage?: string, ownerKey?: string): TaskState;
|
|
43
52
|
getTask(taskId: string, ownerKey?: string): TaskState | undefined;
|
|
@@ -56,8 +65,11 @@ declare class TaskManager {
|
|
|
56
65
|
waitForTerminalTask(taskId: string, ownerKey: string, signal?: AbortSignal): Promise<TaskState | undefined>;
|
|
57
66
|
private notifyWaiters;
|
|
58
67
|
private isExpired;
|
|
68
|
+
shrinkTtlAfterDelivery(taskId: string): void;
|
|
59
69
|
private encodeCursor;
|
|
60
70
|
private decodeCursor;
|
|
71
|
+
private resolveNextCursor;
|
|
61
72
|
}
|
|
62
73
|
export declare const taskManager: TaskManager;
|
|
63
74
|
export {};
|
|
75
|
+
//# sourceMappingURL=manager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/tasks/manager.ts"],"names":[],"mappings":"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"}
|