@contextvm/mcp-sdk 1.27.1-contextvm.0

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.
Files changed (261) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +141 -0
  3. package/dist/cjs/client/index.d.ts +588 -0
  4. package/dist/cjs/client/index.d.ts.map +1 -0
  5. package/dist/cjs/client/index.js +629 -0
  6. package/dist/cjs/client/index.js.map +1 -0
  7. package/dist/cjs/client/stdio.d.ts +77 -0
  8. package/dist/cjs/client/stdio.d.ts.map +1 -0
  9. package/dist/cjs/client/stdio.js +199 -0
  10. package/dist/cjs/client/stdio.js.map +1 -0
  11. package/dist/cjs/experimental/index.d.ts +13 -0
  12. package/dist/cjs/experimental/index.d.ts.map +1 -0
  13. package/dist/cjs/experimental/index.js +29 -0
  14. package/dist/cjs/experimental/index.js.map +1 -0
  15. package/dist/cjs/experimental/tasks/client.d.ts +121 -0
  16. package/dist/cjs/experimental/tasks/client.d.ts.map +1 -0
  17. package/dist/cjs/experimental/tasks/client.js +188 -0
  18. package/dist/cjs/experimental/tasks/client.js.map +1 -0
  19. package/dist/cjs/experimental/tasks/helpers.d.ts +47 -0
  20. package/dist/cjs/experimental/tasks/helpers.d.ts.map +1 -0
  21. package/dist/cjs/experimental/tasks/helpers.js +68 -0
  22. package/dist/cjs/experimental/tasks/helpers.js.map +1 -0
  23. package/dist/cjs/experimental/tasks/index.d.ts +16 -0
  24. package/dist/cjs/experimental/tasks/index.d.ts.map +1 -0
  25. package/dist/cjs/experimental/tasks/index.js +39 -0
  26. package/dist/cjs/experimental/tasks/index.js.map +1 -0
  27. package/dist/cjs/experimental/tasks/interfaces.d.ts +232 -0
  28. package/dist/cjs/experimental/tasks/interfaces.d.ts.map +1 -0
  29. package/dist/cjs/experimental/tasks/interfaces.js +19 -0
  30. package/dist/cjs/experimental/tasks/interfaces.js.map +1 -0
  31. package/dist/cjs/experimental/tasks/mcp-server.d.ts +77 -0
  32. package/dist/cjs/experimental/tasks/mcp-server.d.ts.map +1 -0
  33. package/dist/cjs/experimental/tasks/mcp-server.js +36 -0
  34. package/dist/cjs/experimental/tasks/mcp-server.js.map +1 -0
  35. package/dist/cjs/experimental/tasks/server.d.ts +170 -0
  36. package/dist/cjs/experimental/tasks/server.d.ts.map +1 -0
  37. package/dist/cjs/experimental/tasks/server.js +250 -0
  38. package/dist/cjs/experimental/tasks/server.js.map +1 -0
  39. package/dist/cjs/experimental/tasks/stores/in-memory.d.ts +94 -0
  40. package/dist/cjs/experimental/tasks/stores/in-memory.d.ts.map +1 -0
  41. package/dist/cjs/experimental/tasks/stores/in-memory.js +251 -0
  42. package/dist/cjs/experimental/tasks/stores/in-memory.js.map +1 -0
  43. package/dist/cjs/experimental/tasks/types.d.ts +10 -0
  44. package/dist/cjs/experimental/tasks/types.d.ts.map +1 -0
  45. package/dist/cjs/experimental/tasks/types.js +28 -0
  46. package/dist/cjs/experimental/tasks/types.js.map +1 -0
  47. package/dist/cjs/inMemory.d.ts +31 -0
  48. package/dist/cjs/inMemory.d.ts.map +1 -0
  49. package/dist/cjs/inMemory.js +51 -0
  50. package/dist/cjs/inMemory.js.map +1 -0
  51. package/dist/cjs/package.json +1 -0
  52. package/dist/cjs/server/completable.d.ts +38 -0
  53. package/dist/cjs/server/completable.d.ts.map +1 -0
  54. package/dist/cjs/server/completable.js +48 -0
  55. package/dist/cjs/server/completable.js.map +1 -0
  56. package/dist/cjs/server/index.d.ts +196 -0
  57. package/dist/cjs/server/index.d.ts.map +1 -0
  58. package/dist/cjs/server/index.js +444 -0
  59. package/dist/cjs/server/index.js.map +1 -0
  60. package/dist/cjs/server/mcp.d.ts +364 -0
  61. package/dist/cjs/server/mcp.d.ts.map +1 -0
  62. package/dist/cjs/server/mcp.js +918 -0
  63. package/dist/cjs/server/mcp.js.map +1 -0
  64. package/dist/cjs/server/stdio.d.ts +28 -0
  65. package/dist/cjs/server/stdio.d.ts.map +1 -0
  66. package/dist/cjs/server/stdio.js +82 -0
  67. package/dist/cjs/server/stdio.js.map +1 -0
  68. package/dist/cjs/server/zod-compat.d.ts +84 -0
  69. package/dist/cjs/server/zod-compat.d.ts.map +1 -0
  70. package/dist/cjs/server/zod-compat.js +244 -0
  71. package/dist/cjs/server/zod-compat.js.map +1 -0
  72. package/dist/cjs/server/zod-json-schema-compat.d.ts +12 -0
  73. package/dist/cjs/server/zod-json-schema-compat.d.ts.map +1 -0
  74. package/dist/cjs/server/zod-json-schema-compat.js +79 -0
  75. package/dist/cjs/server/zod-json-schema-compat.js.map +1 -0
  76. package/dist/cjs/shared/auth-info.d.ts +32 -0
  77. package/dist/cjs/shared/auth-info.d.ts.map +1 -0
  78. package/dist/cjs/shared/auth-info.js +3 -0
  79. package/dist/cjs/shared/auth-info.js.map +1 -0
  80. package/dist/cjs/shared/metadataUtils.d.ts +16 -0
  81. package/dist/cjs/shared/metadataUtils.d.ts.map +1 -0
  82. package/dist/cjs/shared/metadataUtils.js +25 -0
  83. package/dist/cjs/shared/metadataUtils.js.map +1 -0
  84. package/dist/cjs/shared/protocol.d.ts +443 -0
  85. package/dist/cjs/shared/protocol.d.ts.map +1 -0
  86. package/dist/cjs/shared/protocol.js +1104 -0
  87. package/dist/cjs/shared/protocol.js.map +1 -0
  88. package/dist/cjs/shared/responseMessage.d.ts +45 -0
  89. package/dist/cjs/shared/responseMessage.d.ts.map +1 -0
  90. package/dist/cjs/shared/responseMessage.js +23 -0
  91. package/dist/cjs/shared/responseMessage.js.map +1 -0
  92. package/dist/cjs/shared/stdio.d.ts +13 -0
  93. package/dist/cjs/shared/stdio.d.ts.map +1 -0
  94. package/dist/cjs/shared/stdio.js +37 -0
  95. package/dist/cjs/shared/stdio.js.map +1 -0
  96. package/dist/cjs/shared/toolNameValidation.d.ts +31 -0
  97. package/dist/cjs/shared/toolNameValidation.d.ts.map +1 -0
  98. package/dist/cjs/shared/toolNameValidation.js +97 -0
  99. package/dist/cjs/shared/toolNameValidation.js.map +1 -0
  100. package/dist/cjs/shared/transport.d.ts +89 -0
  101. package/dist/cjs/shared/transport.d.ts.map +1 -0
  102. package/dist/cjs/shared/transport.js +43 -0
  103. package/dist/cjs/shared/transport.js.map +1 -0
  104. package/dist/cjs/shared/uriTemplate.d.ts +25 -0
  105. package/dist/cjs/shared/uriTemplate.d.ts.map +1 -0
  106. package/dist/cjs/shared/uriTemplate.js +243 -0
  107. package/dist/cjs/shared/uriTemplate.js.map +1 -0
  108. package/dist/cjs/spec.types.d.ts +2299 -0
  109. package/dist/cjs/spec.types.d.ts.map +1 -0
  110. package/dist/cjs/spec.types.js +27 -0
  111. package/dist/cjs/spec.types.js.map +1 -0
  112. package/dist/cjs/types.d.ts +8137 -0
  113. package/dist/cjs/types.d.ts.map +1 -0
  114. package/dist/cjs/types.js +2092 -0
  115. package/dist/cjs/types.js.map +1 -0
  116. package/dist/cjs/validation/ajv-provider.d.ts +53 -0
  117. package/dist/cjs/validation/ajv-provider.d.ts.map +1 -0
  118. package/dist/cjs/validation/ajv-provider.js +94 -0
  119. package/dist/cjs/validation/ajv-provider.js.map +1 -0
  120. package/dist/cjs/validation/cfworker-provider.d.ts +51 -0
  121. package/dist/cjs/validation/cfworker-provider.d.ts.map +1 -0
  122. package/dist/cjs/validation/cfworker-provider.js +69 -0
  123. package/dist/cjs/validation/cfworker-provider.js.map +1 -0
  124. package/dist/cjs/validation/index.d.ts +29 -0
  125. package/dist/cjs/validation/index.d.ts.map +1 -0
  126. package/dist/cjs/validation/index.js +30 -0
  127. package/dist/cjs/validation/index.js.map +1 -0
  128. package/dist/cjs/validation/types.d.ts +65 -0
  129. package/dist/cjs/validation/types.d.ts.map +1 -0
  130. package/dist/cjs/validation/types.js +3 -0
  131. package/dist/cjs/validation/types.js.map +1 -0
  132. package/dist/esm/client/index.d.ts +588 -0
  133. package/dist/esm/client/index.d.ts.map +1 -0
  134. package/dist/esm/client/index.js +624 -0
  135. package/dist/esm/client/index.js.map +1 -0
  136. package/dist/esm/client/stdio.d.ts +77 -0
  137. package/dist/esm/client/stdio.d.ts.map +1 -0
  138. package/dist/esm/client/stdio.js +191 -0
  139. package/dist/esm/client/stdio.js.map +1 -0
  140. package/dist/esm/experimental/index.d.ts +13 -0
  141. package/dist/esm/experimental/index.d.ts.map +1 -0
  142. package/dist/esm/experimental/index.js +13 -0
  143. package/dist/esm/experimental/index.js.map +1 -0
  144. package/dist/esm/experimental/tasks/client.d.ts +121 -0
  145. package/dist/esm/experimental/tasks/client.d.ts.map +1 -0
  146. package/dist/esm/experimental/tasks/client.js +184 -0
  147. package/dist/esm/experimental/tasks/client.js.map +1 -0
  148. package/dist/esm/experimental/tasks/helpers.d.ts +47 -0
  149. package/dist/esm/experimental/tasks/helpers.d.ts.map +1 -0
  150. package/dist/esm/experimental/tasks/helpers.js +64 -0
  151. package/dist/esm/experimental/tasks/helpers.js.map +1 -0
  152. package/dist/esm/experimental/tasks/index.d.ts +16 -0
  153. package/dist/esm/experimental/tasks/index.d.ts.map +1 -0
  154. package/dist/esm/experimental/tasks/index.js +20 -0
  155. package/dist/esm/experimental/tasks/index.js.map +1 -0
  156. package/dist/esm/experimental/tasks/interfaces.d.ts +232 -0
  157. package/dist/esm/experimental/tasks/interfaces.d.ts.map +1 -0
  158. package/dist/esm/experimental/tasks/interfaces.js +16 -0
  159. package/dist/esm/experimental/tasks/interfaces.js.map +1 -0
  160. package/dist/esm/experimental/tasks/mcp-server.d.ts +77 -0
  161. package/dist/esm/experimental/tasks/mcp-server.d.ts.map +1 -0
  162. package/dist/esm/experimental/tasks/mcp-server.js +32 -0
  163. package/dist/esm/experimental/tasks/mcp-server.js.map +1 -0
  164. package/dist/esm/experimental/tasks/server.d.ts +170 -0
  165. package/dist/esm/experimental/tasks/server.d.ts.map +1 -0
  166. package/dist/esm/experimental/tasks/server.js +246 -0
  167. package/dist/esm/experimental/tasks/server.js.map +1 -0
  168. package/dist/esm/experimental/tasks/stores/in-memory.d.ts +94 -0
  169. package/dist/esm/experimental/tasks/stores/in-memory.d.ts.map +1 -0
  170. package/dist/esm/experimental/tasks/stores/in-memory.js +246 -0
  171. package/dist/esm/experimental/tasks/stores/in-memory.js.map +1 -0
  172. package/dist/esm/experimental/tasks/types.d.ts +10 -0
  173. package/dist/esm/experimental/tasks/types.d.ts.map +1 -0
  174. package/dist/esm/experimental/tasks/types.js +10 -0
  175. package/dist/esm/experimental/tasks/types.js.map +1 -0
  176. package/dist/esm/inMemory.d.ts +31 -0
  177. package/dist/esm/inMemory.d.ts.map +1 -0
  178. package/dist/esm/inMemory.js +47 -0
  179. package/dist/esm/inMemory.js.map +1 -0
  180. package/dist/esm/package.json +1 -0
  181. package/dist/esm/server/completable.d.ts +38 -0
  182. package/dist/esm/server/completable.d.ts.map +1 -0
  183. package/dist/esm/server/completable.js +41 -0
  184. package/dist/esm/server/completable.js.map +1 -0
  185. package/dist/esm/server/index.d.ts +196 -0
  186. package/dist/esm/server/index.d.ts.map +1 -0
  187. package/dist/esm/server/index.js +440 -0
  188. package/dist/esm/server/index.js.map +1 -0
  189. package/dist/esm/server/mcp.d.ts +364 -0
  190. package/dist/esm/server/mcp.d.ts.map +1 -0
  191. package/dist/esm/server/mcp.js +913 -0
  192. package/dist/esm/server/mcp.js.map +1 -0
  193. package/dist/esm/server/stdio.d.ts +28 -0
  194. package/dist/esm/server/stdio.d.ts.map +1 -0
  195. package/dist/esm/server/stdio.js +75 -0
  196. package/dist/esm/server/stdio.js.map +1 -0
  197. package/dist/esm/server/zod-compat.d.ts +84 -0
  198. package/dist/esm/server/zod-compat.d.ts.map +1 -0
  199. package/dist/esm/server/zod-compat.js +209 -0
  200. package/dist/esm/server/zod-compat.js.map +1 -0
  201. package/dist/esm/server/zod-json-schema-compat.d.ts +12 -0
  202. package/dist/esm/server/zod-json-schema-compat.d.ts.map +1 -0
  203. package/dist/esm/server/zod-json-schema-compat.js +51 -0
  204. package/dist/esm/server/zod-json-schema-compat.js.map +1 -0
  205. package/dist/esm/shared/auth-info.d.ts +32 -0
  206. package/dist/esm/shared/auth-info.d.ts.map +1 -0
  207. package/dist/esm/shared/auth-info.js +2 -0
  208. package/dist/esm/shared/auth-info.js.map +1 -0
  209. package/dist/esm/shared/metadataUtils.d.ts +16 -0
  210. package/dist/esm/shared/metadataUtils.d.ts.map +1 -0
  211. package/dist/esm/shared/metadataUtils.js +22 -0
  212. package/dist/esm/shared/metadataUtils.js.map +1 -0
  213. package/dist/esm/shared/protocol.d.ts +443 -0
  214. package/dist/esm/shared/protocol.d.ts.map +1 -0
  215. package/dist/esm/shared/protocol.js +1099 -0
  216. package/dist/esm/shared/protocol.js.map +1 -0
  217. package/dist/esm/shared/responseMessage.d.ts +45 -0
  218. package/dist/esm/shared/responseMessage.d.ts.map +1 -0
  219. package/dist/esm/shared/responseMessage.js +19 -0
  220. package/dist/esm/shared/responseMessage.js.map +1 -0
  221. package/dist/esm/shared/stdio.d.ts +13 -0
  222. package/dist/esm/shared/stdio.d.ts.map +1 -0
  223. package/dist/esm/shared/stdio.js +31 -0
  224. package/dist/esm/shared/stdio.js.map +1 -0
  225. package/dist/esm/shared/toolNameValidation.d.ts +31 -0
  226. package/dist/esm/shared/toolNameValidation.d.ts.map +1 -0
  227. package/dist/esm/shared/toolNameValidation.js +92 -0
  228. package/dist/esm/shared/toolNameValidation.js.map +1 -0
  229. package/dist/esm/shared/transport.d.ts +89 -0
  230. package/dist/esm/shared/transport.d.ts.map +1 -0
  231. package/dist/esm/shared/transport.js +39 -0
  232. package/dist/esm/shared/transport.js.map +1 -0
  233. package/dist/esm/shared/uriTemplate.d.ts +25 -0
  234. package/dist/esm/shared/uriTemplate.d.ts.map +1 -0
  235. package/dist/esm/shared/uriTemplate.js +239 -0
  236. package/dist/esm/shared/uriTemplate.js.map +1 -0
  237. package/dist/esm/spec.types.d.ts +2299 -0
  238. package/dist/esm/spec.types.d.ts.map +1 -0
  239. package/dist/esm/spec.types.js +24 -0
  240. package/dist/esm/spec.types.js.map +1 -0
  241. package/dist/esm/types.d.ts +8137 -0
  242. package/dist/esm/types.d.ts.map +1 -0
  243. package/dist/esm/types.js +2052 -0
  244. package/dist/esm/types.js.map +1 -0
  245. package/dist/esm/validation/ajv-provider.d.ts +53 -0
  246. package/dist/esm/validation/ajv-provider.d.ts.map +1 -0
  247. package/dist/esm/validation/ajv-provider.js +87 -0
  248. package/dist/esm/validation/ajv-provider.js.map +1 -0
  249. package/dist/esm/validation/cfworker-provider.d.ts +51 -0
  250. package/dist/esm/validation/cfworker-provider.d.ts.map +1 -0
  251. package/dist/esm/validation/cfworker-provider.js +65 -0
  252. package/dist/esm/validation/cfworker-provider.js.map +1 -0
  253. package/dist/esm/validation/index.d.ts +29 -0
  254. package/dist/esm/validation/index.d.ts.map +1 -0
  255. package/dist/esm/validation/index.js +29 -0
  256. package/dist/esm/validation/index.js.map +1 -0
  257. package/dist/esm/validation/types.d.ts +65 -0
  258. package/dist/esm/validation/types.d.ts.map +1 -0
  259. package/dist/esm/validation/types.js +2 -0
  260. package/dist/esm/validation/types.js.map +1 -0
  261. package/package.json +124 -0
@@ -0,0 +1,170 @@
1
+ /**
2
+ * Experimental server task features for MCP SDK.
3
+ * WARNING: These APIs are experimental and may change without notice.
4
+ *
5
+ * @experimental
6
+ */
7
+ import type { Server } from '../../server/index.js';
8
+ import type { RequestOptions } from '../../shared/protocol.js';
9
+ import type { ResponseMessage } from '../../shared/responseMessage.js';
10
+ import type { AnySchema, SchemaOutput } from '../../server/zod-compat.js';
11
+ import type { ServerRequest, Notification, Request, Result, GetTaskResult, ListTasksResult, CancelTaskResult, CreateMessageRequestParams, CreateMessageResult, ElicitRequestFormParams, ElicitRequestURLParams, ElicitResult } from '../../types.js';
12
+ /**
13
+ * Experimental task features for low-level MCP servers.
14
+ *
15
+ * Access via `server.experimental.tasks`:
16
+ * ```typescript
17
+ * const stream = server.experimental.tasks.requestStream(request, schema, options);
18
+ * ```
19
+ *
20
+ * For high-level server usage with task-based tools, use `McpServer.experimental.tasks` instead.
21
+ *
22
+ * @experimental
23
+ */
24
+ export declare class ExperimentalServerTasks<RequestT extends Request = Request, NotificationT extends Notification = Notification, ResultT extends Result = Result> {
25
+ private readonly _server;
26
+ constructor(_server: Server<RequestT, NotificationT, ResultT>);
27
+ /**
28
+ * Sends a request and returns an AsyncGenerator that yields response messages.
29
+ * The generator is guaranteed to end with either a 'result' or 'error' message.
30
+ *
31
+ * This method provides streaming access to request processing, allowing you to
32
+ * observe intermediate task status updates for task-augmented requests.
33
+ *
34
+ * @param request - The request to send
35
+ * @param resultSchema - Zod schema for validating the result
36
+ * @param options - Optional request options (timeout, signal, task creation params, etc.)
37
+ * @returns AsyncGenerator that yields ResponseMessage objects
38
+ *
39
+ * @experimental
40
+ */
41
+ requestStream<T extends AnySchema>(request: ServerRequest | RequestT, resultSchema: T, options?: RequestOptions): AsyncGenerator<ResponseMessage<SchemaOutput<T>>, void, void>;
42
+ /**
43
+ * Sends a sampling request and returns an AsyncGenerator that yields response messages.
44
+ * The generator is guaranteed to end with either a 'result' or 'error' message.
45
+ *
46
+ * For task-augmented requests, yields 'taskCreated' and 'taskStatus' messages
47
+ * before the final result.
48
+ *
49
+ * @example
50
+ * ```typescript
51
+ * const stream = server.experimental.tasks.createMessageStream({
52
+ * messages: [{ role: 'user', content: { type: 'text', text: 'Hello' } }],
53
+ * maxTokens: 100
54
+ * }, {
55
+ * onprogress: (progress) => {
56
+ * // Handle streaming tokens via progress notifications
57
+ * console.log('Progress:', progress.message);
58
+ * }
59
+ * });
60
+ *
61
+ * for await (const message of stream) {
62
+ * switch (message.type) {
63
+ * case 'taskCreated':
64
+ * console.log('Task created:', message.task.taskId);
65
+ * break;
66
+ * case 'taskStatus':
67
+ * console.log('Task status:', message.task.status);
68
+ * break;
69
+ * case 'result':
70
+ * console.log('Final result:', message.result);
71
+ * break;
72
+ * case 'error':
73
+ * console.error('Error:', message.error);
74
+ * break;
75
+ * }
76
+ * }
77
+ * ```
78
+ *
79
+ * @param params - The sampling request parameters
80
+ * @param options - Optional request options (timeout, signal, task creation params, onprogress, etc.)
81
+ * @returns AsyncGenerator that yields ResponseMessage objects
82
+ *
83
+ * @experimental
84
+ */
85
+ createMessageStream(params: CreateMessageRequestParams, options?: RequestOptions): AsyncGenerator<ResponseMessage<CreateMessageResult>, void, void>;
86
+ /**
87
+ * Sends an elicitation request and returns an AsyncGenerator that yields response messages.
88
+ * The generator is guaranteed to end with either a 'result' or 'error' message.
89
+ *
90
+ * For task-augmented requests (especially URL-based elicitation), yields 'taskCreated'
91
+ * and 'taskStatus' messages before the final result.
92
+ *
93
+ * @example
94
+ * ```typescript
95
+ * const stream = server.experimental.tasks.elicitInputStream({
96
+ * mode: 'url',
97
+ * message: 'Please authenticate',
98
+ * elicitationId: 'auth-123',
99
+ * url: 'https://example.com/auth'
100
+ * }, {
101
+ * task: { ttl: 300000 } // Task-augmented for long-running auth flow
102
+ * });
103
+ *
104
+ * for await (const message of stream) {
105
+ * switch (message.type) {
106
+ * case 'taskCreated':
107
+ * console.log('Task created:', message.task.taskId);
108
+ * break;
109
+ * case 'taskStatus':
110
+ * console.log('Task status:', message.task.status);
111
+ * break;
112
+ * case 'result':
113
+ * console.log('User action:', message.result.action);
114
+ * break;
115
+ * case 'error':
116
+ * console.error('Error:', message.error);
117
+ * break;
118
+ * }
119
+ * }
120
+ * ```
121
+ *
122
+ * @param params - The elicitation request parameters
123
+ * @param options - Optional request options (timeout, signal, task creation params, etc.)
124
+ * @returns AsyncGenerator that yields ResponseMessage objects
125
+ *
126
+ * @experimental
127
+ */
128
+ elicitInputStream(params: ElicitRequestFormParams | ElicitRequestURLParams, options?: RequestOptions): AsyncGenerator<ResponseMessage<ElicitResult>, void, void>;
129
+ /**
130
+ * Gets the current status of a task.
131
+ *
132
+ * @param taskId - The task identifier
133
+ * @param options - Optional request options
134
+ * @returns The task status
135
+ *
136
+ * @experimental
137
+ */
138
+ getTask(taskId: string, options?: RequestOptions): Promise<GetTaskResult>;
139
+ /**
140
+ * Retrieves the result of a completed task.
141
+ *
142
+ * @param taskId - The task identifier
143
+ * @param resultSchema - Zod schema for validating the result
144
+ * @param options - Optional request options
145
+ * @returns The task result
146
+ *
147
+ * @experimental
148
+ */
149
+ getTaskResult<T extends AnySchema>(taskId: string, resultSchema?: T, options?: RequestOptions): Promise<SchemaOutput<T>>;
150
+ /**
151
+ * Lists tasks with optional pagination.
152
+ *
153
+ * @param cursor - Optional pagination cursor
154
+ * @param options - Optional request options
155
+ * @returns List of tasks with optional next cursor
156
+ *
157
+ * @experimental
158
+ */
159
+ listTasks(cursor?: string, options?: RequestOptions): Promise<ListTasksResult>;
160
+ /**
161
+ * Cancels a running task.
162
+ *
163
+ * @param taskId - The task identifier
164
+ * @param options - Optional request options
165
+ *
166
+ * @experimental
167
+ */
168
+ cancelTask(taskId: string, options?: RequestOptions): Promise<CancelTaskResult>;
169
+ }
170
+ //# sourceMappingURL=server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../../../src/experimental/tasks/server.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1E,OAAO,KAAK,EACR,aAAa,EACb,YAAY,EACZ,OAAO,EACP,MAAM,EACN,aAAa,EACb,eAAe,EACf,gBAAgB,EAChB,0BAA0B,EAC1B,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,YAAY,EACf,MAAM,gBAAgB,CAAC;AAGxB;;;;;;;;;;;GAWG;AACH,qBAAa,uBAAuB,CAChC,QAAQ,SAAS,OAAO,GAAG,OAAO,EAClC,aAAa,SAAS,YAAY,GAAG,YAAY,EACjD,OAAO,SAAS,MAAM,GAAG,MAAM;IAEnB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,MAAM,CAAC,QAAQ,EAAE,aAAa,EAAE,OAAO,CAAC;IAE9E;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,CAAC,SAAS,SAAS,EAC7B,OAAO,EAAE,aAAa,GAAG,QAAQ,EACjC,YAAY,EAAE,CAAC,EACf,OAAO,CAAC,EAAE,cAAc,GACzB,cAAc,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;IAY/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA0CG;IACH,mBAAmB,CACf,MAAM,EAAE,0BAA0B,EAClC,OAAO,CAAC,EAAE,cAAc,GACzB,cAAc,CAAC,eAAe,CAAC,mBAAmB,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;IAuDnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAyCG;IACH,iBAAiB,CACb,MAAM,EAAE,uBAAuB,GAAG,sBAAsB,EACxD,OAAO,CAAC,EAAE,cAAc,GACzB,cAAc,CAAC,eAAe,CAAC,YAAY,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;IAoC5D;;;;;;;;OAQG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAK/E;;;;;;;;;OASG;IACG,aAAa,CAAC,CAAC,SAAS,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAY9H;;;;;;;;OAQG;IACG,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IAQpF;;;;;;;OAOG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAOxF"}
@@ -0,0 +1,250 @@
1
+ "use strict";
2
+ /**
3
+ * Experimental server task features for MCP SDK.
4
+ * WARNING: These APIs are experimental and may change without notice.
5
+ *
6
+ * @experimental
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.ExperimentalServerTasks = void 0;
10
+ const types_js_1 = require("../../types.js");
11
+ /**
12
+ * Experimental task features for low-level MCP servers.
13
+ *
14
+ * Access via `server.experimental.tasks`:
15
+ * ```typescript
16
+ * const stream = server.experimental.tasks.requestStream(request, schema, options);
17
+ * ```
18
+ *
19
+ * For high-level server usage with task-based tools, use `McpServer.experimental.tasks` instead.
20
+ *
21
+ * @experimental
22
+ */
23
+ class ExperimentalServerTasks {
24
+ constructor(_server) {
25
+ this._server = _server;
26
+ }
27
+ /**
28
+ * Sends a request and returns an AsyncGenerator that yields response messages.
29
+ * The generator is guaranteed to end with either a 'result' or 'error' message.
30
+ *
31
+ * This method provides streaming access to request processing, allowing you to
32
+ * observe intermediate task status updates for task-augmented requests.
33
+ *
34
+ * @param request - The request to send
35
+ * @param resultSchema - Zod schema for validating the result
36
+ * @param options - Optional request options (timeout, signal, task creation params, etc.)
37
+ * @returns AsyncGenerator that yields ResponseMessage objects
38
+ *
39
+ * @experimental
40
+ */
41
+ requestStream(request, resultSchema, options) {
42
+ return this._server.requestStream(request, resultSchema, options);
43
+ }
44
+ /**
45
+ * Sends a sampling request and returns an AsyncGenerator that yields response messages.
46
+ * The generator is guaranteed to end with either a 'result' or 'error' message.
47
+ *
48
+ * For task-augmented requests, yields 'taskCreated' and 'taskStatus' messages
49
+ * before the final result.
50
+ *
51
+ * @example
52
+ * ```typescript
53
+ * const stream = server.experimental.tasks.createMessageStream({
54
+ * messages: [{ role: 'user', content: { type: 'text', text: 'Hello' } }],
55
+ * maxTokens: 100
56
+ * }, {
57
+ * onprogress: (progress) => {
58
+ * // Handle streaming tokens via progress notifications
59
+ * console.log('Progress:', progress.message);
60
+ * }
61
+ * });
62
+ *
63
+ * for await (const message of stream) {
64
+ * switch (message.type) {
65
+ * case 'taskCreated':
66
+ * console.log('Task created:', message.task.taskId);
67
+ * break;
68
+ * case 'taskStatus':
69
+ * console.log('Task status:', message.task.status);
70
+ * break;
71
+ * case 'result':
72
+ * console.log('Final result:', message.result);
73
+ * break;
74
+ * case 'error':
75
+ * console.error('Error:', message.error);
76
+ * break;
77
+ * }
78
+ * }
79
+ * ```
80
+ *
81
+ * @param params - The sampling request parameters
82
+ * @param options - Optional request options (timeout, signal, task creation params, onprogress, etc.)
83
+ * @returns AsyncGenerator that yields ResponseMessage objects
84
+ *
85
+ * @experimental
86
+ */
87
+ createMessageStream(params, options) {
88
+ // Access client capabilities via the server
89
+ const clientCapabilities = this._server.getClientCapabilities();
90
+ // Capability check - only required when tools/toolChoice are provided
91
+ if ((params.tools || params.toolChoice) && !clientCapabilities?.sampling?.tools) {
92
+ throw new Error('Client does not support sampling tools capability.');
93
+ }
94
+ // Message structure validation - always validate tool_use/tool_result pairs.
95
+ // These may appear even without tools/toolChoice in the current request when
96
+ // a previous sampling request returned tool_use and this is a follow-up with results.
97
+ if (params.messages.length > 0) {
98
+ const lastMessage = params.messages[params.messages.length - 1];
99
+ const lastContent = Array.isArray(lastMessage.content) ? lastMessage.content : [lastMessage.content];
100
+ const hasToolResults = lastContent.some(c => c.type === 'tool_result');
101
+ const previousMessage = params.messages.length > 1 ? params.messages[params.messages.length - 2] : undefined;
102
+ const previousContent = previousMessage
103
+ ? Array.isArray(previousMessage.content)
104
+ ? previousMessage.content
105
+ : [previousMessage.content]
106
+ : [];
107
+ const hasPreviousToolUse = previousContent.some(c => c.type === 'tool_use');
108
+ if (hasToolResults) {
109
+ if (lastContent.some(c => c.type !== 'tool_result')) {
110
+ throw new Error('The last message must contain only tool_result content if any is present');
111
+ }
112
+ if (!hasPreviousToolUse) {
113
+ throw new Error('tool_result blocks are not matching any tool_use from the previous message');
114
+ }
115
+ }
116
+ if (hasPreviousToolUse) {
117
+ // Extract tool_use IDs from previous message and tool_result IDs from current message
118
+ const toolUseIds = new Set(previousContent.filter(c => c.type === 'tool_use').map(c => c.id));
119
+ const toolResultIds = new Set(lastContent.filter(c => c.type === 'tool_result').map(c => c.toolUseId));
120
+ if (toolUseIds.size !== toolResultIds.size || ![...toolUseIds].every(id => toolResultIds.has(id))) {
121
+ throw new Error('ids of tool_result blocks and tool_use blocks from previous message do not match');
122
+ }
123
+ }
124
+ }
125
+ return this.requestStream({
126
+ method: 'sampling/createMessage',
127
+ params
128
+ }, types_js_1.CreateMessageResultSchema, options);
129
+ }
130
+ /**
131
+ * Sends an elicitation request and returns an AsyncGenerator that yields response messages.
132
+ * The generator is guaranteed to end with either a 'result' or 'error' message.
133
+ *
134
+ * For task-augmented requests (especially URL-based elicitation), yields 'taskCreated'
135
+ * and 'taskStatus' messages before the final result.
136
+ *
137
+ * @example
138
+ * ```typescript
139
+ * const stream = server.experimental.tasks.elicitInputStream({
140
+ * mode: 'url',
141
+ * message: 'Please authenticate',
142
+ * elicitationId: 'auth-123',
143
+ * url: 'https://example.com/auth'
144
+ * }, {
145
+ * task: { ttl: 300000 } // Task-augmented for long-running auth flow
146
+ * });
147
+ *
148
+ * for await (const message of stream) {
149
+ * switch (message.type) {
150
+ * case 'taskCreated':
151
+ * console.log('Task created:', message.task.taskId);
152
+ * break;
153
+ * case 'taskStatus':
154
+ * console.log('Task status:', message.task.status);
155
+ * break;
156
+ * case 'result':
157
+ * console.log('User action:', message.result.action);
158
+ * break;
159
+ * case 'error':
160
+ * console.error('Error:', message.error);
161
+ * break;
162
+ * }
163
+ * }
164
+ * ```
165
+ *
166
+ * @param params - The elicitation request parameters
167
+ * @param options - Optional request options (timeout, signal, task creation params, etc.)
168
+ * @returns AsyncGenerator that yields ResponseMessage objects
169
+ *
170
+ * @experimental
171
+ */
172
+ elicitInputStream(params, options) {
173
+ // Access client capabilities via the server
174
+ const clientCapabilities = this._server.getClientCapabilities();
175
+ const mode = params.mode ?? 'form';
176
+ // Capability check based on mode
177
+ switch (mode) {
178
+ case 'url': {
179
+ if (!clientCapabilities?.elicitation?.url) {
180
+ throw new Error('Client does not support url elicitation.');
181
+ }
182
+ break;
183
+ }
184
+ case 'form': {
185
+ if (!clientCapabilities?.elicitation?.form) {
186
+ throw new Error('Client does not support form elicitation.');
187
+ }
188
+ break;
189
+ }
190
+ }
191
+ // Normalize params to ensure mode is set for form mode (defaults to 'form' per spec)
192
+ const normalizedParams = mode === 'form' && params.mode === undefined ? { ...params, mode: 'form' } : params;
193
+ // Cast to ServerRequest needed because TypeScript can't narrow the union type
194
+ // based on the discriminated 'method' field when constructing the object literal
195
+ return this.requestStream({
196
+ method: 'elicitation/create',
197
+ params: normalizedParams
198
+ }, types_js_1.ElicitResultSchema, options);
199
+ }
200
+ /**
201
+ * Gets the current status of a task.
202
+ *
203
+ * @param taskId - The task identifier
204
+ * @param options - Optional request options
205
+ * @returns The task status
206
+ *
207
+ * @experimental
208
+ */
209
+ async getTask(taskId, options) {
210
+ return this._server.getTask({ taskId }, options);
211
+ }
212
+ /**
213
+ * Retrieves the result of a completed task.
214
+ *
215
+ * @param taskId - The task identifier
216
+ * @param resultSchema - Zod schema for validating the result
217
+ * @param options - Optional request options
218
+ * @returns The task result
219
+ *
220
+ * @experimental
221
+ */
222
+ async getTaskResult(taskId, resultSchema, options) {
223
+ return this._server.getTaskResult({ taskId }, resultSchema, options);
224
+ }
225
+ /**
226
+ * Lists tasks with optional pagination.
227
+ *
228
+ * @param cursor - Optional pagination cursor
229
+ * @param options - Optional request options
230
+ * @returns List of tasks with optional next cursor
231
+ *
232
+ * @experimental
233
+ */
234
+ async listTasks(cursor, options) {
235
+ return this._server.listTasks(cursor ? { cursor } : undefined, options);
236
+ }
237
+ /**
238
+ * Cancels a running task.
239
+ *
240
+ * @param taskId - The task identifier
241
+ * @param options - Optional request options
242
+ *
243
+ * @experimental
244
+ */
245
+ async cancelTask(taskId, options) {
246
+ return this._server.cancelTask({ taskId }, options);
247
+ }
248
+ }
249
+ exports.ExperimentalServerTasks = ExperimentalServerTasks;
250
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../../../src/experimental/tasks/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * In-memory implementations of TaskStore and TaskMessageQueue.
3
+ * WARNING: These APIs are experimental and may change without notice.
4
+ *
5
+ * @experimental
6
+ */
7
+ import { Task, RequestId, Result, Request } from '../../../types.js';
8
+ import { TaskStore, TaskMessageQueue, QueuedMessage, CreateTaskOptions } from '../interfaces.js';
9
+ /**
10
+ * A simple in-memory implementation of TaskStore for demonstration purposes.
11
+ *
12
+ * This implementation stores all tasks in memory and provides automatic cleanup
13
+ * based on the ttl duration specified in the task creation parameters.
14
+ *
15
+ * Note: This is not suitable for production use as all data is lost on restart.
16
+ * For production, consider implementing TaskStore with a database or distributed cache.
17
+ *
18
+ * @experimental
19
+ */
20
+ export declare class InMemoryTaskStore implements TaskStore {
21
+ private tasks;
22
+ private cleanupTimers;
23
+ /**
24
+ * Generates a unique task ID.
25
+ * Uses 16 bytes of random data encoded as hex (32 characters).
26
+ */
27
+ private generateTaskId;
28
+ createTask(taskParams: CreateTaskOptions, requestId: RequestId, request: Request, _sessionId?: string): Promise<Task>;
29
+ getTask(taskId: string, _sessionId?: string): Promise<Task | null>;
30
+ storeTaskResult(taskId: string, status: 'completed' | 'failed', result: Result, _sessionId?: string): Promise<void>;
31
+ getTaskResult(taskId: string, _sessionId?: string): Promise<Result>;
32
+ updateTaskStatus(taskId: string, status: Task['status'], statusMessage?: string, _sessionId?: string): Promise<void>;
33
+ listTasks(cursor?: string, _sessionId?: string): Promise<{
34
+ tasks: Task[];
35
+ nextCursor?: string;
36
+ }>;
37
+ /**
38
+ * Cleanup all timers (useful for testing or graceful shutdown)
39
+ */
40
+ cleanup(): void;
41
+ /**
42
+ * Get all tasks (useful for debugging)
43
+ */
44
+ getAllTasks(): Task[];
45
+ }
46
+ /**
47
+ * A simple in-memory implementation of TaskMessageQueue for demonstration purposes.
48
+ *
49
+ * This implementation stores messages in memory, organized by task ID and optional session ID.
50
+ * Messages are stored in FIFO queues per task.
51
+ *
52
+ * Note: This is not suitable for production use in distributed systems.
53
+ * For production, consider implementing TaskMessageQueue with Redis or other distributed queues.
54
+ *
55
+ * @experimental
56
+ */
57
+ export declare class InMemoryTaskMessageQueue implements TaskMessageQueue {
58
+ private queues;
59
+ /**
60
+ * Generates a queue key from taskId.
61
+ * SessionId is intentionally ignored because taskIds are globally unique
62
+ * and tasks need to be accessible across HTTP requests/sessions.
63
+ */
64
+ private getQueueKey;
65
+ /**
66
+ * Gets or creates a queue for the given task and session.
67
+ */
68
+ private getQueue;
69
+ /**
70
+ * Adds a message to the end of the queue for a specific task.
71
+ * Atomically checks queue size and throws if maxSize would be exceeded.
72
+ * @param taskId The task identifier
73
+ * @param message The message to enqueue
74
+ * @param sessionId Optional session ID for binding the operation to a specific session
75
+ * @param maxSize Optional maximum queue size - if specified and queue is full, throws an error
76
+ * @throws Error if maxSize is specified and would be exceeded
77
+ */
78
+ enqueue(taskId: string, message: QueuedMessage, sessionId?: string, maxSize?: number): Promise<void>;
79
+ /**
80
+ * Removes and returns the first message from the queue for a specific task.
81
+ * @param taskId The task identifier
82
+ * @param sessionId Optional session ID for binding the query to a specific session
83
+ * @returns The first message, or undefined if the queue is empty
84
+ */
85
+ dequeue(taskId: string, sessionId?: string): Promise<QueuedMessage | undefined>;
86
+ /**
87
+ * Removes and returns all messages from the queue for a specific task.
88
+ * @param taskId The task identifier
89
+ * @param sessionId Optional session ID for binding the query to a specific session
90
+ * @returns Array of all messages that were in the queue
91
+ */
92
+ dequeueAll(taskId: string, sessionId?: string): Promise<QueuedMessage[]>;
93
+ }
94
+ //# sourceMappingURL=in-memory.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"in-memory.d.ts","sourceRoot":"","sources":["../../../../../src/experimental/tasks/stores/in-memory.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AACrE,OAAO,EAAE,SAAS,EAAc,gBAAgB,EAAE,aAAa,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAU7G;;;;;;;;;;GAUG;AACH,qBAAa,iBAAkB,YAAW,SAAS;IAC/C,OAAO,CAAC,KAAK,CAAiC;IAC9C,OAAO,CAAC,aAAa,CAAoD;IAEzE;;;OAGG;IACH,OAAO,CAAC,cAAc;IAIhB,UAAU,CAAC,UAAU,EAAE,iBAAiB,EAAE,SAAS,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA0CrH,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,GAAG,IAAI,CAAC;IAKlE,eAAe,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,WAAW,GAAG,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAiCnH,aAAa,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAanE,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,EAAE,aAAa,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCpH,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,IAAI,EAAE,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA0BtG;;OAEG;IACH,OAAO,IAAI,IAAI;IAQf;;OAEG;IACH,WAAW,IAAI,IAAI,EAAE;CAGxB;AAED;;;;;;;;;;GAUG;AACH,qBAAa,wBAAyB,YAAW,gBAAgB;IAC7D,OAAO,CAAC,MAAM,CAAsC;IAEpD;;;;OAIG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,QAAQ;IAUhB;;;;;;;;OAQG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAW1G;;;;;OAKG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,GAAG,SAAS,CAAC;IAKrF;;;;;OAKG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC;CAMjF"}