@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,77 @@
1
+ import { IOType } from 'node:child_process';
2
+ import { Stream } from 'node:stream';
3
+ import { Transport } from '../shared/transport.js';
4
+ import { JSONRPCMessage } from '../types.js';
5
+ export type StdioServerParameters = {
6
+ /**
7
+ * The executable to run to start the server.
8
+ */
9
+ command: string;
10
+ /**
11
+ * Command line arguments to pass to the executable.
12
+ */
13
+ args?: string[];
14
+ /**
15
+ * The environment to use when spawning the process.
16
+ *
17
+ * If not specified, the result of getDefaultEnvironment() will be used.
18
+ */
19
+ env?: Record<string, string>;
20
+ /**
21
+ * How to handle stderr of the child process. This matches the semantics of Node's `child_process.spawn`.
22
+ *
23
+ * The default is "inherit", meaning messages to stderr will be printed to the parent process's stderr.
24
+ */
25
+ stderr?: IOType | Stream | number;
26
+ /**
27
+ * The working directory to use when spawning the process.
28
+ *
29
+ * If not specified, the current working directory will be inherited.
30
+ */
31
+ cwd?: string;
32
+ };
33
+ /**
34
+ * Environment variables to inherit by default, if an environment is not explicitly given.
35
+ */
36
+ export declare const DEFAULT_INHERITED_ENV_VARS: string[];
37
+ /**
38
+ * Returns a default environment object including only environment variables deemed safe to inherit.
39
+ */
40
+ export declare function getDefaultEnvironment(): Record<string, string>;
41
+ /**
42
+ * Client transport for stdio: this will connect to a server by spawning a process and communicating with it over stdin/stdout.
43
+ *
44
+ * This transport is only available in Node.js environments.
45
+ */
46
+ export declare class StdioClientTransport implements Transport {
47
+ private _process?;
48
+ private _readBuffer;
49
+ private _serverParams;
50
+ private _stderrStream;
51
+ onclose?: () => void;
52
+ onerror?: (error: Error) => void;
53
+ onmessage?: (message: JSONRPCMessage) => void;
54
+ constructor(server: StdioServerParameters);
55
+ /**
56
+ * Starts the server process and prepares to communicate with it.
57
+ */
58
+ start(): Promise<void>;
59
+ /**
60
+ * The stderr stream of the child process, if `StdioServerParameters.stderr` was set to "pipe" or "overlapped".
61
+ *
62
+ * If stderr piping was requested, a PassThrough stream is returned _immediately_, allowing callers to
63
+ * attach listeners before the start method is invoked. This prevents loss of any early
64
+ * error output emitted by the child process.
65
+ */
66
+ get stderr(): Stream | null;
67
+ /**
68
+ * The child process pid spawned by this transport.
69
+ *
70
+ * This is only available after the transport has been started.
71
+ */
72
+ get pid(): number | null;
73
+ private processReadBuffer;
74
+ close(): Promise<void>;
75
+ send(message: JSONRPCMessage): Promise<void>;
76
+ }
77
+ //# sourceMappingURL=stdio.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdio.d.ts","sourceRoot":"","sources":["../../../src/client/stdio.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,MAAM,EAAE,MAAM,oBAAoB,CAAC;AAG1D,OAAO,EAAE,MAAM,EAAe,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAE7C,MAAM,MAAM,qBAAqB,GAAG;IAChC;;OAEG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;OAEG;IACH,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAE7B;;;;OAIG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC;IAElC;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,0BAA0B,UAiBuB,CAAC;AAE/D;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAkB9D;AAED;;;;GAIG;AACH,qBAAa,oBAAqB,YAAW,SAAS;IAClD,OAAO,CAAC,QAAQ,CAAC,CAAe;IAChC,OAAO,CAAC,WAAW,CAAgC;IACnD,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,aAAa,CAA4B;IAEjD,OAAO,CAAC,EAAE,MAAM,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,CAAC,OAAO,EAAE,cAAc,KAAK,IAAI,CAAC;gBAElC,MAAM,EAAE,qBAAqB;IAOzC;;OAEG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqD5B;;;;;;OAMG;IACH,IAAI,MAAM,IAAI,MAAM,GAAG,IAAI,CAM1B;IAED;;;;OAIG;IACH,IAAI,GAAG,IAAI,MAAM,GAAG,IAAI,CAEvB;IAED,OAAO,CAAC,iBAAiB;IAenB,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAyC5B,IAAI,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;CAc/C"}
@@ -0,0 +1,199 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.StdioClientTransport = exports.DEFAULT_INHERITED_ENV_VARS = void 0;
7
+ exports.getDefaultEnvironment = getDefaultEnvironment;
8
+ const cross_spawn_1 = __importDefault(require("cross-spawn"));
9
+ const node_process_1 = __importDefault(require("node:process"));
10
+ const node_stream_1 = require("node:stream");
11
+ const stdio_js_1 = require("../shared/stdio.js");
12
+ /**
13
+ * Environment variables to inherit by default, if an environment is not explicitly given.
14
+ */
15
+ exports.DEFAULT_INHERITED_ENV_VARS = node_process_1.default.platform === 'win32'
16
+ ? [
17
+ 'APPDATA',
18
+ 'HOMEDRIVE',
19
+ 'HOMEPATH',
20
+ 'LOCALAPPDATA',
21
+ 'PATH',
22
+ 'PROCESSOR_ARCHITECTURE',
23
+ 'SYSTEMDRIVE',
24
+ 'SYSTEMROOT',
25
+ 'TEMP',
26
+ 'USERNAME',
27
+ 'USERPROFILE',
28
+ 'PROGRAMFILES'
29
+ ]
30
+ : /* list inspired by the default env inheritance of sudo */
31
+ ['HOME', 'LOGNAME', 'PATH', 'SHELL', 'TERM', 'USER'];
32
+ /**
33
+ * Returns a default environment object including only environment variables deemed safe to inherit.
34
+ */
35
+ function getDefaultEnvironment() {
36
+ const env = {};
37
+ for (const key of exports.DEFAULT_INHERITED_ENV_VARS) {
38
+ const value = node_process_1.default.env[key];
39
+ if (value === undefined) {
40
+ continue;
41
+ }
42
+ if (value.startsWith('()')) {
43
+ // Skip functions, which are a security risk.
44
+ continue;
45
+ }
46
+ env[key] = value;
47
+ }
48
+ return env;
49
+ }
50
+ /**
51
+ * Client transport for stdio: this will connect to a server by spawning a process and communicating with it over stdin/stdout.
52
+ *
53
+ * This transport is only available in Node.js environments.
54
+ */
55
+ class StdioClientTransport {
56
+ constructor(server) {
57
+ this._readBuffer = new stdio_js_1.ReadBuffer();
58
+ this._stderrStream = null;
59
+ this._serverParams = server;
60
+ if (server.stderr === 'pipe' || server.stderr === 'overlapped') {
61
+ this._stderrStream = new node_stream_1.PassThrough();
62
+ }
63
+ }
64
+ /**
65
+ * Starts the server process and prepares to communicate with it.
66
+ */
67
+ async start() {
68
+ if (this._process) {
69
+ throw new Error('StdioClientTransport already started! If using Client class, note that connect() calls start() automatically.');
70
+ }
71
+ return new Promise((resolve, reject) => {
72
+ this._process = (0, cross_spawn_1.default)(this._serverParams.command, this._serverParams.args ?? [], {
73
+ // merge default env with server env because mcp server needs some env vars
74
+ env: {
75
+ ...getDefaultEnvironment(),
76
+ ...this._serverParams.env
77
+ },
78
+ stdio: ['pipe', 'pipe', this._serverParams.stderr ?? 'inherit'],
79
+ shell: false,
80
+ windowsHide: node_process_1.default.platform === 'win32' && isElectron(),
81
+ cwd: this._serverParams.cwd
82
+ });
83
+ this._process.on('error', error => {
84
+ reject(error);
85
+ this.onerror?.(error);
86
+ });
87
+ this._process.on('spawn', () => {
88
+ resolve();
89
+ });
90
+ this._process.on('close', _code => {
91
+ this._process = undefined;
92
+ this.onclose?.();
93
+ });
94
+ this._process.stdin?.on('error', error => {
95
+ this.onerror?.(error);
96
+ });
97
+ this._process.stdout?.on('data', chunk => {
98
+ this._readBuffer.append(chunk);
99
+ this.processReadBuffer();
100
+ });
101
+ this._process.stdout?.on('error', error => {
102
+ this.onerror?.(error);
103
+ });
104
+ if (this._stderrStream && this._process.stderr) {
105
+ this._process.stderr.pipe(this._stderrStream);
106
+ }
107
+ });
108
+ }
109
+ /**
110
+ * The stderr stream of the child process, if `StdioServerParameters.stderr` was set to "pipe" or "overlapped".
111
+ *
112
+ * If stderr piping was requested, a PassThrough stream is returned _immediately_, allowing callers to
113
+ * attach listeners before the start method is invoked. This prevents loss of any early
114
+ * error output emitted by the child process.
115
+ */
116
+ get stderr() {
117
+ if (this._stderrStream) {
118
+ return this._stderrStream;
119
+ }
120
+ return this._process?.stderr ?? null;
121
+ }
122
+ /**
123
+ * The child process pid spawned by this transport.
124
+ *
125
+ * This is only available after the transport has been started.
126
+ */
127
+ get pid() {
128
+ return this._process?.pid ?? null;
129
+ }
130
+ processReadBuffer() {
131
+ while (true) {
132
+ try {
133
+ const message = this._readBuffer.readMessage();
134
+ if (message === null) {
135
+ break;
136
+ }
137
+ this.onmessage?.(message);
138
+ }
139
+ catch (error) {
140
+ this.onerror?.(error);
141
+ }
142
+ }
143
+ }
144
+ async close() {
145
+ if (this._process) {
146
+ const processToClose = this._process;
147
+ this._process = undefined;
148
+ const closePromise = new Promise(resolve => {
149
+ processToClose.once('close', () => {
150
+ resolve();
151
+ });
152
+ });
153
+ try {
154
+ processToClose.stdin?.end();
155
+ }
156
+ catch {
157
+ // ignore
158
+ }
159
+ await Promise.race([closePromise, new Promise(resolve => setTimeout(resolve, 2000).unref())]);
160
+ if (processToClose.exitCode === null) {
161
+ try {
162
+ processToClose.kill('SIGTERM');
163
+ }
164
+ catch {
165
+ // ignore
166
+ }
167
+ await Promise.race([closePromise, new Promise(resolve => setTimeout(resolve, 2000).unref())]);
168
+ }
169
+ if (processToClose.exitCode === null) {
170
+ try {
171
+ processToClose.kill('SIGKILL');
172
+ }
173
+ catch {
174
+ // ignore
175
+ }
176
+ }
177
+ }
178
+ this._readBuffer.clear();
179
+ }
180
+ send(message) {
181
+ return new Promise(resolve => {
182
+ if (!this._process?.stdin) {
183
+ throw new Error('Not connected');
184
+ }
185
+ const json = (0, stdio_js_1.serializeMessage)(message);
186
+ if (this._process.stdin.write(json)) {
187
+ resolve();
188
+ }
189
+ else {
190
+ this._process.stdin.once('drain', resolve);
191
+ }
192
+ });
193
+ }
194
+ }
195
+ exports.StdioClientTransport = StdioClientTransport;
196
+ function isElectron() {
197
+ return 'type' in node_process_1.default;
198
+ }
199
+ //# sourceMappingURL=stdio.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stdio.js","sourceRoot":"","sources":["../../../src/client/stdio.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ /**
2
+ * Experimental MCP SDK features.
3
+ * WARNING: These APIs are experimental and may change without notice.
4
+ *
5
+ * Import experimental features from this module:
6
+ * ```typescript
7
+ * import { TaskStore, InMemoryTaskStore } from '@modelcontextprotocol/sdk/experimental';
8
+ * ```
9
+ *
10
+ * @experimental
11
+ */
12
+ export * from './tasks/index.js';
13
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/experimental/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ /**
3
+ * Experimental MCP SDK features.
4
+ * WARNING: These APIs are experimental and may change without notice.
5
+ *
6
+ * Import experimental features from this module:
7
+ * ```typescript
8
+ * import { TaskStore, InMemoryTaskStore } from '@modelcontextprotocol/sdk/experimental';
9
+ * ```
10
+ *
11
+ * @experimental
12
+ */
13
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
14
+ if (k2 === undefined) k2 = k;
15
+ var desc = Object.getOwnPropertyDescriptor(m, k);
16
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
17
+ desc = { enumerable: true, get: function() { return m[k]; } };
18
+ }
19
+ Object.defineProperty(o, k2, desc);
20
+ }) : (function(o, m, k, k2) {
21
+ if (k2 === undefined) k2 = k;
22
+ o[k2] = m[k];
23
+ }));
24
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
25
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
26
+ };
27
+ Object.defineProperty(exports, "__esModule", { value: true });
28
+ __exportStar(require("./tasks/index.js"), exports);
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/experimental/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;GAUG;;;;;;;;;;;;;;;;AAEH,mDAAiC"}
@@ -0,0 +1,121 @@
1
+ /**
2
+ * Experimental client task features for MCP SDK.
3
+ * WARNING: These APIs are experimental and may change without notice.
4
+ *
5
+ * @experimental
6
+ */
7
+ import type { Client } from '../../client/index.js';
8
+ import type { RequestOptions } from '../../shared/protocol.js';
9
+ import type { ResponseMessage } from '../../shared/responseMessage.js';
10
+ import type { AnyObjectSchema, SchemaOutput } from '../../server/zod-compat.js';
11
+ import type { CallToolRequest, ClientRequest, Notification, Request, Result } from '../../types.js';
12
+ import { CallToolResultSchema, type CompatibilityCallToolResultSchema } from '../../types.js';
13
+ import type { GetTaskResult, ListTasksResult, CancelTaskResult } from './types.js';
14
+ /**
15
+ * Experimental task features for MCP clients.
16
+ *
17
+ * Access via `client.experimental.tasks`:
18
+ * ```typescript
19
+ * const stream = client.experimental.tasks.callToolStream({ name: 'tool', arguments: {} });
20
+ * const task = await client.experimental.tasks.getTask(taskId);
21
+ * ```
22
+ *
23
+ * @experimental
24
+ */
25
+ export declare class ExperimentalClientTasks<RequestT extends Request = Request, NotificationT extends Notification = Notification, ResultT extends Result = Result> {
26
+ private readonly _client;
27
+ constructor(_client: Client<RequestT, NotificationT, ResultT>);
28
+ /**
29
+ * Calls a tool and returns an AsyncGenerator that yields response messages.
30
+ * The generator is guaranteed to end with either a 'result' or 'error' message.
31
+ *
32
+ * This method provides streaming access to tool execution, allowing you to
33
+ * observe intermediate task status updates for long-running tool calls.
34
+ * Automatically validates structured output if the tool has an outputSchema.
35
+ *
36
+ * @example
37
+ * ```typescript
38
+ * const stream = client.experimental.tasks.callToolStream({ name: 'myTool', arguments: {} });
39
+ * for await (const message of stream) {
40
+ * switch (message.type) {
41
+ * case 'taskCreated':
42
+ * console.log('Tool execution started:', message.task.taskId);
43
+ * break;
44
+ * case 'taskStatus':
45
+ * console.log('Tool status:', message.task.status);
46
+ * break;
47
+ * case 'result':
48
+ * console.log('Tool result:', message.result);
49
+ * break;
50
+ * case 'error':
51
+ * console.error('Tool error:', message.error);
52
+ * break;
53
+ * }
54
+ * }
55
+ * ```
56
+ *
57
+ * @param params - Tool call parameters (name and arguments)
58
+ * @param resultSchema - Zod schema for validating the result (defaults to CallToolResultSchema)
59
+ * @param options - Optional request options (timeout, signal, task creation params, etc.)
60
+ * @returns AsyncGenerator that yields ResponseMessage objects
61
+ *
62
+ * @experimental
63
+ */
64
+ callToolStream<T extends typeof CallToolResultSchema | typeof CompatibilityCallToolResultSchema>(params: CallToolRequest['params'], resultSchema?: T, options?: RequestOptions): AsyncGenerator<ResponseMessage<SchemaOutput<T>>, void, void>;
65
+ /**
66
+ * Gets the current status of a task.
67
+ *
68
+ * @param taskId - The task identifier
69
+ * @param options - Optional request options
70
+ * @returns The task status
71
+ *
72
+ * @experimental
73
+ */
74
+ getTask(taskId: string, options?: RequestOptions): Promise<GetTaskResult>;
75
+ /**
76
+ * Retrieves the result of a completed task.
77
+ *
78
+ * @param taskId - The task identifier
79
+ * @param resultSchema - Zod schema for validating the result
80
+ * @param options - Optional request options
81
+ * @returns The task result
82
+ *
83
+ * @experimental
84
+ */
85
+ getTaskResult<T extends AnyObjectSchema>(taskId: string, resultSchema?: T, options?: RequestOptions): Promise<SchemaOutput<T>>;
86
+ /**
87
+ * Lists tasks with optional pagination.
88
+ *
89
+ * @param cursor - Optional pagination cursor
90
+ * @param options - Optional request options
91
+ * @returns List of tasks with optional next cursor
92
+ *
93
+ * @experimental
94
+ */
95
+ listTasks(cursor?: string, options?: RequestOptions): Promise<ListTasksResult>;
96
+ /**
97
+ * Cancels a running task.
98
+ *
99
+ * @param taskId - The task identifier
100
+ * @param options - Optional request options
101
+ *
102
+ * @experimental
103
+ */
104
+ cancelTask(taskId: string, options?: RequestOptions): Promise<CancelTaskResult>;
105
+ /**
106
+ * Sends a request and returns an AsyncGenerator that yields response messages.
107
+ * The generator is guaranteed to end with either a 'result' or 'error' message.
108
+ *
109
+ * This method provides streaming access to request processing, allowing you to
110
+ * observe intermediate task status updates for task-augmented requests.
111
+ *
112
+ * @param request - The request to send
113
+ * @param resultSchema - Zod schema for validating the result
114
+ * @param options - Optional request options (timeout, signal, task creation params, etc.)
115
+ * @returns AsyncGenerator that yields ResponseMessage objects
116
+ *
117
+ * @experimental
118
+ */
119
+ requestStream<T extends AnyObjectSchema>(request: ClientRequest | RequestT, resultSchema: T, options?: RequestOptions): AsyncGenerator<ResponseMessage<SchemaOutput<T>>, void, void>;
120
+ }
121
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../../src/experimental/tasks/client.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,eAAe,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,KAAK,EAAE,eAAe,EAAE,aAAa,EAAE,YAAY,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AACpG,OAAO,EAAE,oBAAoB,EAAE,KAAK,iCAAiC,EAAuB,MAAM,gBAAgB,CAAC;AAEnH,OAAO,KAAK,EAAE,aAAa,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAgBnF;;;;;;;;;;GAUG;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;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAmCG;IACI,cAAc,CAAC,CAAC,SAAS,OAAO,oBAAoB,GAAG,OAAO,iCAAiC,EAClG,MAAM,EAAE,eAAe,CAAC,QAAQ,CAAC,EACjC,YAAY,GAAE,CAA6B,EAC3C,OAAO,CAAC,EAAE,cAAc,GACzB,cAAc,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC;IAyE/D;;;;;;;;OAQG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,CAAC;IAM/E;;;;;;;;;OASG;IACG,aAAa,CAAC,CAAC,SAAS,eAAe,EAAE,MAAM,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,CAAC,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IAapI;;;;;;;;OAQG;IACG,SAAS,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,eAAe,CAAC;IASpF;;;;;;;OAOG;IACG,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,gBAAgB,CAAC;IASrF;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,CAAC,SAAS,eAAe,EACnC,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;CAWlE"}
@@ -0,0 +1,188 @@
1
+ "use strict";
2
+ /**
3
+ * Experimental client 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.ExperimentalClientTasks = void 0;
10
+ const types_js_1 = require("../../types.js");
11
+ /**
12
+ * Experimental task features for MCP clients.
13
+ *
14
+ * Access via `client.experimental.tasks`:
15
+ * ```typescript
16
+ * const stream = client.experimental.tasks.callToolStream({ name: 'tool', arguments: {} });
17
+ * const task = await client.experimental.tasks.getTask(taskId);
18
+ * ```
19
+ *
20
+ * @experimental
21
+ */
22
+ class ExperimentalClientTasks {
23
+ constructor(_client) {
24
+ this._client = _client;
25
+ }
26
+ /**
27
+ * Calls a tool and returns an AsyncGenerator that yields response messages.
28
+ * The generator is guaranteed to end with either a 'result' or 'error' message.
29
+ *
30
+ * This method provides streaming access to tool execution, allowing you to
31
+ * observe intermediate task status updates for long-running tool calls.
32
+ * Automatically validates structured output if the tool has an outputSchema.
33
+ *
34
+ * @example
35
+ * ```typescript
36
+ * const stream = client.experimental.tasks.callToolStream({ name: 'myTool', arguments: {} });
37
+ * for await (const message of stream) {
38
+ * switch (message.type) {
39
+ * case 'taskCreated':
40
+ * console.log('Tool execution started:', message.task.taskId);
41
+ * break;
42
+ * case 'taskStatus':
43
+ * console.log('Tool status:', message.task.status);
44
+ * break;
45
+ * case 'result':
46
+ * console.log('Tool result:', message.result);
47
+ * break;
48
+ * case 'error':
49
+ * console.error('Tool error:', message.error);
50
+ * break;
51
+ * }
52
+ * }
53
+ * ```
54
+ *
55
+ * @param params - Tool call parameters (name and arguments)
56
+ * @param resultSchema - Zod schema for validating the result (defaults to CallToolResultSchema)
57
+ * @param options - Optional request options (timeout, signal, task creation params, etc.)
58
+ * @returns AsyncGenerator that yields ResponseMessage objects
59
+ *
60
+ * @experimental
61
+ */
62
+ async *callToolStream(params, resultSchema = types_js_1.CallToolResultSchema, options) {
63
+ // Access Client's internal methods
64
+ const clientInternal = this._client;
65
+ // Add task creation parameters if server supports it and not explicitly provided
66
+ const optionsWithTask = {
67
+ ...options,
68
+ // We check if the tool is known to be a task during auto-configuration, but assume
69
+ // the caller knows what they're doing if they pass this explicitly
70
+ task: options?.task ?? (clientInternal.isToolTask(params.name) ? {} : undefined)
71
+ };
72
+ const stream = clientInternal.requestStream({ method: 'tools/call', params }, resultSchema, optionsWithTask);
73
+ // Get the validator for this tool (if it has an output schema)
74
+ const validator = clientInternal.getToolOutputValidator(params.name);
75
+ // Iterate through the stream and validate the final result if needed
76
+ for await (const message of stream) {
77
+ // If this is a result message and the tool has an output schema, validate it
78
+ if (message.type === 'result' && validator) {
79
+ const result = message.result;
80
+ // If tool has outputSchema, it MUST return structuredContent (unless it's an error)
81
+ if (!result.structuredContent && !result.isError) {
82
+ yield {
83
+ type: 'error',
84
+ error: new types_js_1.McpError(types_js_1.ErrorCode.InvalidRequest, `Tool ${params.name} has an output schema but did not return structured content`)
85
+ };
86
+ return;
87
+ }
88
+ // Only validate structured content if present (not when there's an error)
89
+ if (result.structuredContent) {
90
+ try {
91
+ // Validate the structured content against the schema
92
+ const validationResult = validator(result.structuredContent);
93
+ if (!validationResult.valid) {
94
+ yield {
95
+ type: 'error',
96
+ error: new types_js_1.McpError(types_js_1.ErrorCode.InvalidParams, `Structured content does not match the tool's output schema: ${validationResult.errorMessage}`)
97
+ };
98
+ return;
99
+ }
100
+ }
101
+ catch (error) {
102
+ if (error instanceof types_js_1.McpError) {
103
+ yield { type: 'error', error };
104
+ return;
105
+ }
106
+ yield {
107
+ type: 'error',
108
+ error: new types_js_1.McpError(types_js_1.ErrorCode.InvalidParams, `Failed to validate structured content: ${error instanceof Error ? error.message : String(error)}`)
109
+ };
110
+ return;
111
+ }
112
+ }
113
+ }
114
+ // Yield the message (either validated result or any other message type)
115
+ yield message;
116
+ }
117
+ }
118
+ /**
119
+ * Gets the current status of a task.
120
+ *
121
+ * @param taskId - The task identifier
122
+ * @param options - Optional request options
123
+ * @returns The task status
124
+ *
125
+ * @experimental
126
+ */
127
+ async getTask(taskId, options) {
128
+ return this._client.getTask({ taskId }, options);
129
+ }
130
+ /**
131
+ * Retrieves the result of a completed task.
132
+ *
133
+ * @param taskId - The task identifier
134
+ * @param resultSchema - Zod schema for validating the result
135
+ * @param options - Optional request options
136
+ * @returns The task result
137
+ *
138
+ * @experimental
139
+ */
140
+ async getTaskResult(taskId, resultSchema, options) {
141
+ // Delegate to the client's underlying Protocol method
142
+ return this._client.getTaskResult({ taskId }, resultSchema, options);
143
+ }
144
+ /**
145
+ * Lists tasks with optional pagination.
146
+ *
147
+ * @param cursor - Optional pagination cursor
148
+ * @param options - Optional request options
149
+ * @returns List of tasks with optional next cursor
150
+ *
151
+ * @experimental
152
+ */
153
+ async listTasks(cursor, options) {
154
+ // Delegate to the client's underlying Protocol method
155
+ return this._client.listTasks(cursor ? { cursor } : undefined, options);
156
+ }
157
+ /**
158
+ * Cancels a running task.
159
+ *
160
+ * @param taskId - The task identifier
161
+ * @param options - Optional request options
162
+ *
163
+ * @experimental
164
+ */
165
+ async cancelTask(taskId, options) {
166
+ // Delegate to the client's underlying Protocol method
167
+ return this._client.cancelTask({ taskId }, options);
168
+ }
169
+ /**
170
+ * Sends a request and returns an AsyncGenerator that yields response messages.
171
+ * The generator is guaranteed to end with either a 'result' or 'error' message.
172
+ *
173
+ * This method provides streaming access to request processing, allowing you to
174
+ * observe intermediate task status updates for task-augmented requests.
175
+ *
176
+ * @param request - The request to send
177
+ * @param resultSchema - Zod schema for validating the result
178
+ * @param options - Optional request options (timeout, signal, task creation params, etc.)
179
+ * @returns AsyncGenerator that yields ResponseMessage objects
180
+ *
181
+ * @experimental
182
+ */
183
+ requestStream(request, resultSchema, options) {
184
+ return this._client.requestStream(request, resultSchema, options);
185
+ }
186
+ }
187
+ exports.ExperimentalClientTasks = ExperimentalClientTasks;
188
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../../src/experimental/tasks/client.ts"],"names":[],"mappings":"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"}