@toolgrain/mcp 0.0.0-stage → 0.1.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 (248) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +85 -2
  3. package/dist/auth/abort.d.ts +3 -0
  4. package/dist/auth/abort.d.ts.map +1 -0
  5. package/dist/auth/abort.js +14 -0
  6. package/dist/auth/abort.js.map +1 -0
  7. package/dist/auth/audience.d.ts +3 -0
  8. package/dist/auth/audience.d.ts.map +1 -0
  9. package/dist/auth/audience.js +17 -0
  10. package/dist/auth/audience.js.map +1 -0
  11. package/dist/auth/authorization.d.ts +7 -0
  12. package/dist/auth/authorization.d.ts.map +1 -0
  13. package/dist/auth/authorization.js +58 -0
  14. package/dist/auth/authorization.js.map +1 -0
  15. package/dist/auth/context.d.ts +8 -0
  16. package/dist/auth/context.d.ts.map +1 -0
  17. package/dist/auth/context.js +37 -0
  18. package/dist/auth/context.js.map +1 -0
  19. package/dist/auth/errors.d.ts +14 -0
  20. package/dist/auth/errors.d.ts.map +1 -0
  21. package/dist/auth/errors.js +23 -0
  22. package/dist/auth/errors.js.map +1 -0
  23. package/dist/auth/types.d.ts +28 -0
  24. package/dist/auth/types.d.ts.map +1 -0
  25. package/dist/auth/types.js +2 -0
  26. package/dist/auth/types.js.map +1 -0
  27. package/dist/auth/url.d.ts +3 -0
  28. package/dist/auth/url.d.ts.map +1 -0
  29. package/dist/auth/url.js +18 -0
  30. package/dist/auth/url.js.map +1 -0
  31. package/dist/connection.d.ts +12 -0
  32. package/dist/connection.d.ts.map +1 -0
  33. package/dist/connection.js +151 -0
  34. package/dist/connection.js.map +1 -0
  35. package/dist/context/access.d.ts +7 -0
  36. package/dist/context/access.d.ts.map +1 -0
  37. package/dist/context/access.js +22 -0
  38. package/dist/context/access.js.map +1 -0
  39. package/dist/context/definition.d.ts +24 -0
  40. package/dist/context/definition.d.ts.map +1 -0
  41. package/dist/context/definition.js +57 -0
  42. package/dist/context/definition.js.map +1 -0
  43. package/dist/context/registry.d.ts +5 -0
  44. package/dist/context/registry.d.ts.map +1 -0
  45. package/dist/context/registry.js +15 -0
  46. package/dist/context/registry.js.map +1 -0
  47. package/dist/context/scope.d.ts +5 -0
  48. package/dist/context/scope.d.ts.map +1 -0
  49. package/dist/context/scope.js +56 -0
  50. package/dist/context/scope.js.map +1 -0
  51. package/dist/diagnostics.d.ts +10 -0
  52. package/dist/diagnostics.d.ts.map +1 -0
  53. package/dist/diagnostics.js +13 -0
  54. package/dist/diagnostics.js.map +1 -0
  55. package/dist/dispatcher.d.ts +19 -0
  56. package/dist/dispatcher.d.ts.map +1 -0
  57. package/dist/dispatcher.js +23 -0
  58. package/dist/dispatcher.js.map +1 -0
  59. package/dist/execute-request.d.ts +7 -0
  60. package/dist/execute-request.d.ts.map +1 -0
  61. package/dist/execute-request.js +20 -0
  62. package/dist/execute-request.js.map +1 -0
  63. package/dist/index.d.ts +22 -0
  64. package/dist/index.d.ts.map +1 -0
  65. package/dist/index.js +12 -0
  66. package/dist/index.js.map +1 -0
  67. package/dist/legacy/connection.d.ts +26 -0
  68. package/dist/legacy/connection.d.ts.map +1 -0
  69. package/dist/legacy/connection.js +73 -0
  70. package/dist/legacy/connection.js.map +1 -0
  71. package/dist/legacy/dispatcher.d.ts +10 -0
  72. package/dist/legacy/dispatcher.d.ts.map +1 -0
  73. package/dist/legacy/dispatcher.js +41 -0
  74. package/dist/legacy/dispatcher.js.map +1 -0
  75. package/dist/legacy/handlers.d.ts +12 -0
  76. package/dist/legacy/handlers.d.ts.map +1 -0
  77. package/dist/legacy/handlers.js +44 -0
  78. package/dist/legacy/handlers.js.map +1 -0
  79. package/dist/legacy/messages.d.ts +31 -0
  80. package/dist/legacy/messages.d.ts.map +1 -0
  81. package/dist/legacy/messages.js +27 -0
  82. package/dist/legacy/messages.js.map +1 -0
  83. package/dist/legacy/responses.d.ts +5 -0
  84. package/dist/legacy/responses.d.ts.map +1 -0
  85. package/dist/legacy/responses.js +8 -0
  86. package/dist/legacy/responses.js.map +1 -0
  87. package/dist/legacy/results.d.ts +5 -0
  88. package/dist/legacy/results.d.ts.map +1 -0
  89. package/dist/legacy/results.js +19 -0
  90. package/dist/legacy/results.js.map +1 -0
  91. package/dist/modern/dispatcher.d.ts +7 -0
  92. package/dist/modern/dispatcher.d.ts.map +1 -0
  93. package/dist/modern/dispatcher.js +37 -0
  94. package/dist/modern/dispatcher.js.map +1 -0
  95. package/dist/modern/handlers.d.ts +9 -0
  96. package/dist/modern/handlers.d.ts.map +1 -0
  97. package/dist/modern/handlers.js +36 -0
  98. package/dist/modern/handlers.js.map +1 -0
  99. package/dist/modern/messages.d.ts +142 -0
  100. package/dist/modern/messages.d.ts.map +1 -0
  101. package/dist/modern/messages.js +14 -0
  102. package/dist/modern/messages.js.map +1 -0
  103. package/dist/modern/metadata.d.ts +45 -0
  104. package/dist/modern/metadata.d.ts.map +1 -0
  105. package/dist/modern/metadata.js +49 -0
  106. package/dist/modern/metadata.js.map +1 -0
  107. package/dist/modern/responses.d.ts +3 -0
  108. package/dist/modern/responses.d.ts.map +1 -0
  109. package/dist/modern/responses.js +15 -0
  110. package/dist/modern/responses.js.map +1 -0
  111. package/dist/modern/results.d.ts +4 -0
  112. package/dist/modern/results.d.ts.map +1 -0
  113. package/dist/modern/results.js +4 -0
  114. package/dist/modern/results.js.map +1 -0
  115. package/dist/pending-requests.d.ts +12 -0
  116. package/dist/pending-requests.d.ts.map +1 -0
  117. package/dist/pending-requests.js +30 -0
  118. package/dist/pending-requests.js.map +1 -0
  119. package/dist/protocol/decode.d.ts +21 -0
  120. package/dist/protocol/decode.d.ts.map +1 -0
  121. package/dist/protocol/decode.js +40 -0
  122. package/dist/protocol/decode.js.map +1 -0
  123. package/dist/protocol/icon.d.ts +11 -0
  124. package/dist/protocol/icon.d.ts.map +1 -0
  125. package/dist/protocol/icon.js +8 -0
  126. package/dist/protocol/icon.js.map +1 -0
  127. package/dist/protocol/messages.d.ts +19 -0
  128. package/dist/protocol/messages.d.ts.map +1 -0
  129. package/dist/protocol/messages.js +21 -0
  130. package/dist/protocol/messages.js.map +1 -0
  131. package/dist/protocol/responses.d.ts +9 -0
  132. package/dist/protocol/responses.d.ts.map +1 -0
  133. package/dist/protocol/responses.js +20 -0
  134. package/dist/protocol/responses.js.map +1 -0
  135. package/dist/protocol/version-metadata.d.ts +7 -0
  136. package/dist/protocol/version-metadata.d.ts.map +1 -0
  137. package/dist/protocol/version-metadata.js +21 -0
  138. package/dist/protocol/version-metadata.js.map +1 -0
  139. package/dist/server.d.ts +35 -0
  140. package/dist/server.d.ts.map +1 -0
  141. package/dist/server.js +101 -0
  142. package/dist/server.js.map +1 -0
  143. package/dist/tools/adapter.d.ts +12 -0
  144. package/dist/tools/adapter.d.ts.map +1 -0
  145. package/dist/tools/adapter.js +45 -0
  146. package/dist/tools/adapter.js.map +1 -0
  147. package/dist/tools/call.d.ts +8 -0
  148. package/dist/tools/call.d.ts.map +1 -0
  149. package/dist/tools/call.js +9 -0
  150. package/dist/tools/call.js.map +1 -0
  151. package/dist/tools/content.d.ts +181 -0
  152. package/dist/tools/content.d.ts.map +1 -0
  153. package/dist/tools/content.js +54 -0
  154. package/dist/tools/content.js.map +1 -0
  155. package/dist/tools/context.d.ts +36 -0
  156. package/dist/tools/context.d.ts.map +1 -0
  157. package/dist/tools/context.js +50 -0
  158. package/dist/tools/context.js.map +1 -0
  159. package/dist/tools/definition.d.ts +55 -0
  160. package/dist/tools/definition.d.ts.map +1 -0
  161. package/dist/tools/definition.js +44 -0
  162. package/dist/tools/definition.js.map +1 -0
  163. package/dist/tools/errors.d.ts +11 -0
  164. package/dist/tools/errors.d.ts.map +1 -0
  165. package/dist/tools/errors.js +19 -0
  166. package/dist/tools/errors.js.map +1 -0
  167. package/dist/tools/json-value.d.ts +15 -0
  168. package/dist/tools/json-value.d.ts.map +1 -0
  169. package/dist/tools/json-value.js +42 -0
  170. package/dist/tools/json-value.js.map +1 -0
  171. package/dist/tools/name.d.ts +6 -0
  172. package/dist/tools/name.d.ts.map +1 -0
  173. package/dist/tools/name.js +13 -0
  174. package/dist/tools/name.js.map +1 -0
  175. package/dist/tools/registry.d.ts +14 -0
  176. package/dist/tools/registry.d.ts.map +1 -0
  177. package/dist/tools/registry.js +31 -0
  178. package/dist/tools/registry.js.map +1 -0
  179. package/dist/tools/results.d.ts +14 -0
  180. package/dist/tools/results.d.ts.map +1 -0
  181. package/dist/tools/results.js +71 -0
  182. package/dist/tools/results.js.map +1 -0
  183. package/dist/tools/rich-result.d.ts +44 -0
  184. package/dist/tools/rich-result.d.ts.map +1 -0
  185. package/dist/tools/rich-result.js +24 -0
  186. package/dist/tools/rich-result.js.map +1 -0
  187. package/dist/tools/schema.d.ts +18 -0
  188. package/dist/tools/schema.d.ts.map +1 -0
  189. package/dist/tools/schema.js +70 -0
  190. package/dist/tools/schema.js.map +1 -0
  191. package/dist/transport-ownership.d.ts +4 -0
  192. package/dist/transport-ownership.d.ts.map +1 -0
  193. package/dist/transport-ownership.js +13 -0
  194. package/dist/transport-ownership.js.map +1 -0
  195. package/dist/transport.d.ts +24 -0
  196. package/dist/transport.d.ts.map +1 -0
  197. package/dist/transport.js +4 -0
  198. package/dist/transport.js.map +1 -0
  199. package/package.json +65 -4
  200. package/src/auth/abort.ts +14 -0
  201. package/src/auth/audience.ts +22 -0
  202. package/src/auth/authorization.ts +81 -0
  203. package/src/auth/context.ts +43 -0
  204. package/src/auth/errors.ts +35 -0
  205. package/src/auth/types.ts +34 -0
  206. package/src/auth/url.ts +22 -0
  207. package/src/connection.ts +207 -0
  208. package/src/context/access.ts +36 -0
  209. package/src/context/definition.ts +100 -0
  210. package/src/context/registry.ts +25 -0
  211. package/src/context/scope.ts +82 -0
  212. package/src/diagnostics.ts +25 -0
  213. package/src/dispatcher.ts +70 -0
  214. package/src/execute-request.ts +35 -0
  215. package/src/index.ts +41 -0
  216. package/src/legacy/connection.ts +101 -0
  217. package/src/legacy/dispatcher.ts +72 -0
  218. package/src/legacy/handlers.ts +76 -0
  219. package/src/legacy/messages.ts +27 -0
  220. package/src/legacy/responses.ts +20 -0
  221. package/src/legacy/results.ts +20 -0
  222. package/src/modern/dispatcher.ts +77 -0
  223. package/src/modern/handlers.ts +55 -0
  224. package/src/modern/messages.ts +14 -0
  225. package/src/modern/metadata.ts +49 -0
  226. package/src/modern/responses.ts +25 -0
  227. package/src/modern/results.ts +6 -0
  228. package/src/pending-requests.ts +30 -0
  229. package/src/protocol/decode.ts +69 -0
  230. package/src/protocol/icon.ts +8 -0
  231. package/src/protocol/messages.ts +29 -0
  232. package/src/protocol/responses.ts +27 -0
  233. package/src/protocol/version-metadata.ts +42 -0
  234. package/src/server.ts +164 -0
  235. package/src/tools/adapter.ts +76 -0
  236. package/src/tools/call.ts +18 -0
  237. package/src/tools/content.ts +57 -0
  238. package/src/tools/context.ts +119 -0
  239. package/src/tools/definition.ts +144 -0
  240. package/src/tools/errors.ts +21 -0
  241. package/src/tools/json-value.ts +81 -0
  242. package/src/tools/name.ts +13 -0
  243. package/src/tools/registry.ts +52 -0
  244. package/src/tools/results.ts +100 -0
  245. package/src/tools/rich-result.ts +70 -0
  246. package/src/tools/schema.ts +86 -0
  247. package/src/transport-ownership.ts +17 -0
  248. package/src/transport.ts +34 -0
@@ -0,0 +1,44 @@
1
+ import { INVALID_PARAMS, LEGACY_PROTOCOL_VERSION, } from "@toolgrain/protocol";
2
+ import { ProtocolError } from "../protocol/responses.js";
3
+ import { callTool as executeToolCall } from "../tools/call.js";
4
+ import { callParams, commonParams, initializeParams, listParams, } from "./messages.js";
5
+ import { toolResult } from "./results.js";
6
+ /** Initialization can only negotiate the initialization-based revision. */
7
+ export function initialize(params, identity, instructions) {
8
+ if (!initializeParams.safeParse(params).success)
9
+ throw new ProtocolError(INVALID_PARAMS, "Invalid initialization parameters");
10
+ return {
11
+ protocolVersion: LEGACY_PROTOCOL_VERSION,
12
+ capabilities: { tools: {} },
13
+ serverInfo: { ...identity },
14
+ ...(instructions === undefined ? {} : { instructions }),
15
+ };
16
+ }
17
+ export function ping(params) {
18
+ if (!commonParams.safeParse(params ?? {}).success)
19
+ throw new ProtocolError(INVALID_PARAMS, "Invalid ping parameters");
20
+ return {};
21
+ }
22
+ export function listTools(params, tools) {
23
+ const parsed = listParams.safeParse(params ?? {});
24
+ if (!parsed.success || parsed.data.cursor)
25
+ throw new ProtocolError(INVALID_PARAMS, "Invalid tool list parameters");
26
+ return {
27
+ tools: tools
28
+ .list()
29
+ .map(({ icons: _icons, outputSchema, ...definition }) => ({
30
+ ...definition,
31
+ ...(outputSchema?.type === "object"
32
+ ? { outputSchema: { ...outputSchema, type: "object" } }
33
+ : {}),
34
+ })),
35
+ };
36
+ }
37
+ export async function callTool(params, tools, ctx) {
38
+ const parsed = callParams.safeParse(params);
39
+ if (!parsed.success)
40
+ throw new ProtocolError(INVALID_PARAMS, "Invalid tool call parameters");
41
+ const result = await executeToolCall(parsed.data, tools, ctx(parsed.data));
42
+ return result ? toolResult(result) : undefined;
43
+ }
44
+ //# sourceMappingURL=handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/legacy/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EACd,uBAAuB,GACxB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EACL,UAAU,EACV,YAAY,EACZ,gBAAgB,EAChB,UAAU,GACX,MAAM,eAAe,CAAC;AACvB,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,2EAA2E;AAC3E,MAAM,UAAU,UAAU,CACxB,MAAe,EACf,QAAwB,EACxB,YAAqB;IAErB,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO;QAC7C,MAAM,IAAI,aAAa,CACrB,cAAc,EACd,mCAAmC,CACpC,CAAC;IACJ,OAAO;QACL,eAAe,EAAE,uBAAuB;QACxC,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAC3B,UAAU,EAAE,EAAE,GAAG,QAAQ,EAAE;QAC3B,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;KACxD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,IAAI,CAAC,MAAe;IAClC,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO;QAC/C,MAAM,IAAI,aAAa,CAAC,cAAc,EAAE,yBAAyB,CAAC,CAAC;IACrE,OAAO,EAAE,CAAC;AACZ,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,MAAe,EACf,KAAkB;IAElB,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC;IAClD,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM;QACvC,MAAM,IAAI,aAAa,CAAC,cAAc,EAAE,8BAA8B,CAAC,CAAC;IAC1E,OAAO;QACL,KAAK,EAAE,KAAK;aACT,IAAI,EAAE;aACN,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC;YACxD,GAAG,UAAU;YACb,GAAG,CAAC,YAAY,EAAE,IAAI,KAAK,QAAQ;gBACjC,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,GAAG,YAAY,EAAE,IAAI,EAAE,QAAiB,EAAE,EAAE;gBAChE,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,CAAC;KACN,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,MAAe,EACf,KAAkB,EAClB,GAA6E;IAE7E,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,CAAC,OAAO;QACjB,MAAM,IAAI,aAAa,CAAC,cAAc,EAAE,8BAA8B,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,OAAO,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC"}
@@ -0,0 +1,31 @@
1
+ import { z } from "zod";
2
+ export declare const commonParams: z.ZodObject<{
3
+ _meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
4
+ }, z.core.$loose>;
5
+ export declare const initializeParams: z.ZodObject<{
6
+ _meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
7
+ protocolVersion: z.ZodString;
8
+ capabilities: z.ZodObject<{
9
+ experimental: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodUnknown>>>;
10
+ roots: z.ZodOptional<z.ZodObject<{
11
+ listChanged: z.ZodOptional<z.ZodBoolean>;
12
+ }, z.core.$loose>>;
13
+ sampling: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
14
+ elicitation: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
15
+ }, z.core.$loose>;
16
+ clientInfo: z.ZodObject<{
17
+ name: z.ZodString;
18
+ version: z.ZodString;
19
+ title: z.ZodOptional<z.ZodString>;
20
+ }, z.core.$loose>;
21
+ }, z.core.$loose>;
22
+ export declare const listParams: z.ZodObject<{
23
+ _meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
24
+ cursor: z.ZodOptional<z.ZodString>;
25
+ }, z.core.$loose>;
26
+ export declare const callParams: z.ZodObject<{
27
+ _meta: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
28
+ name: z.ZodString;
29
+ arguments: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
30
+ }, z.core.$loose>;
31
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/legacy/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,eAAO,MAAM,YAAY;;iBAEvB,CAAC;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;iBAa3B,CAAC;AACH,eAAO,MAAM,UAAU;;;iBAErB,CAAC;AACH,eAAO,MAAM,UAAU;;;;iBAGrB,CAAC"}
@@ -0,0 +1,27 @@
1
+ import { z } from "zod";
2
+ import { object } from "../protocol/messages.js";
3
+ export const commonParams = z.looseObject({
4
+ _meta: object.optional(),
5
+ });
6
+ export const initializeParams = commonParams.extend({
7
+ protocolVersion: z.string(),
8
+ capabilities: z.looseObject({
9
+ experimental: z.record(z.string(), object).optional(),
10
+ roots: z.looseObject({ listChanged: z.boolean().optional() }).optional(),
11
+ sampling: object.optional(),
12
+ elicitation: object.optional(),
13
+ }),
14
+ clientInfo: z.looseObject({
15
+ name: z.string(),
16
+ version: z.string(),
17
+ title: z.string().optional(),
18
+ }),
19
+ });
20
+ export const listParams = commonParams.extend({
21
+ cursor: z.string().optional(),
22
+ });
23
+ export const callParams = commonParams.extend({
24
+ name: z.string(),
25
+ arguments: object.optional(),
26
+ });
27
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/legacy/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC;IACxC,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE;CACzB,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,CAAC;IAClD,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE;IAC3B,YAAY,EAAE,CAAC,CAAC,WAAW,CAAC;QAC1B,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,CAAC,CAAC,QAAQ,EAAE;QACrD,KAAK,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,QAAQ,EAAE;QACxE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE;QAC3B,WAAW,EAAE,MAAM,CAAC,QAAQ,EAAE;KAC/B,CAAC;IACF,UAAU,EAAE,CAAC,CAAC,WAAW,CAAC;QACxB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;QAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;QACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC7B,CAAC;CACH,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC;IAC5C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE;CAC7B,CAAC,CAAC"}
@@ -0,0 +1,5 @@
1
+ import { type JSONRPCErrorResponse, type LegacyJSONRPCErrorResponse, type RequestId } from "@toolgrain/protocol";
2
+ import type { JSONRPCResponse, Result } from "@toolgrain/protocol/2025-06-18";
3
+ export declare function successResponse(id: RequestId, result: Result): JSONRPCResponse;
4
+ export declare function errorResponse(response: JSONRPCErrorResponse): LegacyJSONRPCErrorResponse;
5
+ //# sourceMappingURL=responses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../src/legacy/responses.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,oBAAoB,EACzB,KAAK,0BAA0B,EAC/B,KAAK,SAAS,EACf,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,MAAM,gCAAgC,CAAC;AAE9E,wBAAgB,eAAe,CAC7B,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,MAAM,GACb,eAAe,CAEjB;AAED,wBAAgB,aAAa,CAC3B,QAAQ,EAAE,oBAAoB,GAC7B,0BAA0B,CAE5B"}
@@ -0,0 +1,8 @@
1
+ import { JSONRPC_VERSION, } from "@toolgrain/protocol";
2
+ export function successResponse(id, result) {
3
+ return { jsonrpc: JSONRPC_VERSION, id, result };
4
+ }
5
+ export function errorResponse(response) {
6
+ return { ...response, id: response.id ?? null };
7
+ }
8
+ //# sourceMappingURL=responses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses.js","sourceRoot":"","sources":["../../src/legacy/responses.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,GAIhB,MAAM,qBAAqB,CAAC;AAG7B,MAAM,UAAU,eAAe,CAC7B,EAAa,EACb,MAAc;IAEd,OAAO,EAAE,OAAO,EAAE,eAAe,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC;AAClD,CAAC;AAED,MAAM,UAAU,aAAa,CAC3B,QAA8B;IAE9B,OAAO,EAAE,GAAG,QAAQ,EAAE,EAAE,EAAE,QAAQ,CAAC,EAAE,IAAI,IAAI,EAAE,CAAC;AAClD,CAAC"}
@@ -0,0 +1,5 @@
1
+ import type { CallToolResult } from "@toolgrain/protocol/2025-06-18";
2
+ import type { ToolExecutionResult } from "../tools/results.js";
3
+ /** The initialization-based format permits structured content only at an object root. */
4
+ export declare function toolResult(result: ToolExecutionResult): CallToolResult;
5
+ //# sourceMappingURL=results.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"results.d.ts","sourceRoot":"","sources":["../../src/legacy/results.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,yFAAyF;AACzF,wBAAgB,UAAU,CAAC,MAAM,EAAE,mBAAmB,GAAG,cAAc,CAetE"}
@@ -0,0 +1,19 @@
1
+ /** The initialization-based format permits structured content only at an object root. */
2
+ export function toolResult(result) {
3
+ const { structuredContent, ...content } = result;
4
+ return {
5
+ ...content,
6
+ content: content.content.map((block) => {
7
+ if (block.type !== "resource_link")
8
+ return block;
9
+ const { icons: _icons, ...resource } = block;
10
+ return resource;
11
+ }),
12
+ ...(structuredContent !== null &&
13
+ typeof structuredContent === "object" &&
14
+ !Array.isArray(structuredContent)
15
+ ? { structuredContent: structuredContent }
16
+ : {}),
17
+ };
18
+ }
19
+ //# sourceMappingURL=results.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"results.js","sourceRoot":"","sources":["../../src/legacy/results.ts"],"names":[],"mappings":"AAGA,yFAAyF;AACzF,MAAM,UAAU,UAAU,CAAC,MAA2B;IACpD,MAAM,EAAE,iBAAiB,EAAE,GAAG,OAAO,EAAE,GAAG,MAAM,CAAC;IACjD,OAAO;QACL,GAAG,OAAO;QACV,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YACrC,IAAI,KAAK,CAAC,IAAI,KAAK,eAAe;gBAAE,OAAO,KAAK,CAAC;YACjD,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,QAAQ,EAAE,GAAG,KAAK,CAAC;YAC7C,OAAO,QAAQ,CAAC;QAClB,CAAC,CAAC;QACF,GAAG,CAAC,iBAAiB,KAAK,IAAI;YAC9B,OAAO,iBAAiB,KAAK,QAAQ;YACrC,CAAC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC;YAC/B,CAAC,CAAC,EAAE,iBAAiB,EAAE,iBAA4C,EAAE;YACrE,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { type Implementation, type JSONRPCResultResponse } from "@toolgrain/protocol";
2
+ import type { ContextRegistry } from "../context/registry.js";
3
+ import type { RequestScope } from "../dispatcher.js";
4
+ import type { Request } from "../protocol/messages.js";
5
+ import type { ToolAdapter } from "../tools/adapter.js";
6
+ export declare function createModernDispatcher(tools: ToolAdapter, identity: Implementation, instructions?: string, providers?: ContextRegistry): (request: Request, scope: RequestScope) => Promise<JSONRPCResultResponse | undefined>;
7
+ //# sourceMappingURL=dispatcher.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/modern/dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EAEnB,KAAK,qBAAqB,EAM3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,yBAAyB,CAAC;AAEvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAMvD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,cAAc,EACxB,YAAY,CAAC,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,eAAe,aAGhB,OAAO,SACT,YAAY,KAClB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CA8C9C"}
@@ -0,0 +1,37 @@
1
+ import { INVALID_PARAMS, METHOD_NOT_FOUND, PROTOCOL_VERSION, SUPPORTED_PROTOCOL_VERSIONS, UNSUPPORTED_PROTOCOL_VERSION, } from "@toolgrain/protocol";
2
+ import { ProtocolError } from "../protocol/responses.js";
3
+ import { createToolContext, toolClient } from "../tools/context.js";
4
+ import { callTool, discover, listTools } from "./handlers.js";
5
+ import { metadata } from "./metadata.js";
6
+ import { successResponse } from "./responses.js";
7
+ export function createModernDispatcher(tools, identity, instructions, providers) {
8
+ return async (request, scope) => {
9
+ const parsed = metadata.safeParse(request.params?._meta);
10
+ if (!parsed.success)
11
+ throw new ProtocolError(INVALID_PARAMS, "Invalid request metadata");
12
+ const revision = parsed.data["io.modelcontextprotocol/protocolVersion"];
13
+ if (revision !== PROTOCOL_VERSION)
14
+ throw new ProtocolError(UNSUPPORTED_PROTOCOL_VERSION, "Unsupported protocol version", { supported: [...SUPPORTED_PROTOCOL_VERSIONS], requested: revision });
15
+ let result;
16
+ switch (request.method) {
17
+ case "server/discover":
18
+ result = discover(request.params, instructions);
19
+ break;
20
+ case "tools/list":
21
+ result = listTools(request.params, tools);
22
+ break;
23
+ case "tools/call":
24
+ result = await callTool(request.params, tools, (params) => createToolContext(scope.signal, {
25
+ id: request.id,
26
+ protocolVersion: PROTOCOL_VERSION,
27
+ client: toolClient(parsed.data["io.modelcontextprotocol/clientInfo"], parsed.data["io.modelcontextprotocol/clientCapabilities"]),
28
+ meta: params._meta ?? {},
29
+ }, scope.auth, providers));
30
+ break;
31
+ default:
32
+ throw new ProtocolError(METHOD_NOT_FOUND, "Method not found");
33
+ }
34
+ return result ? successResponse(request.id, result, identity) : undefined;
35
+ };
36
+ }
37
+ //# sourceMappingURL=dispatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/modern/dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,cAAc,EAEd,gBAAgB,EAChB,gBAAgB,EAEhB,2BAA2B,EAC3B,4BAA4B,GAC7B,MAAM,qBAAqB,CAAC;AAI7B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACpE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,MAAM,UAAU,sBAAsB,CACpC,KAAkB,EAClB,QAAwB,EACxB,YAAqB,EACrB,SAA2B;IAE3B,OAAO,KAAK,EACV,OAAgB,EAChB,KAAmB,EACyB,EAAE;QAC9C,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QACzD,IAAI,CAAC,MAAM,CAAC,OAAO;YACjB,MAAM,IAAI,aAAa,CAAC,cAAc,EAAE,0BAA0B,CAAC,CAAC;QACtE,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,yCAAyC,CAAC,CAAC;QACxE,IAAI,QAAQ,KAAK,gBAAgB;YAC/B,MAAM,IAAI,aAAa,CACrB,4BAA4B,EAC5B,8BAA8B,EAC9B,EAAE,SAAS,EAAE,CAAC,GAAG,2BAA2B,CAAC,EAAE,SAAS,EAAE,QAAQ,EAAE,CACrE,CAAC;QACJ,IAAI,MAA0B,CAAC;QAC/B,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;YACvB,KAAK,iBAAiB;gBACpB,MAAM,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;gBAChD,MAAM;YACR,KAAK,YAAY;gBACf,MAAM,GAAG,SAAS,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;gBAC1C,MAAM;YACR,KAAK,YAAY;gBACf,MAAM,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC,MAAM,EAAE,EAAE,CACxD,iBAAiB,CACf,KAAK,CAAC,MAAM,EACZ;oBACE,EAAE,EAAE,OAAO,CAAC,EAAE;oBACd,eAAe,EAAE,gBAAgB;oBACjC,MAAM,EAAE,UAAU,CAChB,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAEnC,EACb,MAAM,CAAC,IAAI,CACT,4CAA4C,CACvB,CACxB;oBACD,IAAI,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;iBACzB,EACD,KAAK,CAAC,IAAI,EACV,SAAS,CACV,CACF,CAAC;gBACF,MAAM;YACR;gBACE,MAAM,IAAI,aAAa,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC5E,CAAC,CAAC;AACJ,CAAC"}
@@ -0,0 +1,9 @@
1
+ import { type DiscoverResult, type ListToolsResult } from "@toolgrain/protocol";
2
+ import type { ToolAdapter } from "../tools/adapter.js";
3
+ import type { ToolContext } from "../tools/context.js";
4
+ export declare function discover(params: unknown, instructions?: string): DiscoverResult;
5
+ export declare function listTools(params: unknown, tools: ToolAdapter): ListToolsResult;
6
+ export declare function callTool(params: unknown, tools: ToolAdapter, ctx: (params: {
7
+ _meta?: Record<string, unknown> | undefined;
8
+ }) => ToolContext): Promise<import("@toolgrain/protocol").CallToolResult | undefined>;
9
+ //# sourceMappingURL=handlers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/modern/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,eAAe,EAErB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAIvD,wBAAgB,QAAQ,CACtB,MAAM,EAAE,OAAO,EACf,YAAY,CAAC,EAAE,MAAM,GACpB,cAAc,CAWhB;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,WAAW,GACjB,eAAe,CAUjB;AAED,wBAAsB,QAAQ,CAC5B,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,WAAW,EAClB,GAAG,EAAE,CAAC,MAAM,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,CAAA;CAAE,KAAK,WAAW,qEAO9E"}
@@ -0,0 +1,36 @@
1
+ import { INVALID_PARAMS, SUPPORTED_PROTOCOL_VERSIONS, } from "@toolgrain/protocol";
2
+ import { ProtocolError } from "../protocol/responses.js";
3
+ import { callTool as executeToolCall } from "../tools/call.js";
4
+ import { callParams, commonParams, listParams } from "./messages.js";
5
+ import { toolResult } from "./results.js";
6
+ export function discover(params, instructions) {
7
+ if (!commonParams.safeParse(params).success)
8
+ throw new ProtocolError(INVALID_PARAMS, "Invalid discovery parameters");
9
+ return {
10
+ resultType: "complete",
11
+ ttlMs: 0,
12
+ cacheScope: "private",
13
+ supportedVersions: [...SUPPORTED_PROTOCOL_VERSIONS],
14
+ capabilities: { tools: {} },
15
+ ...(instructions === undefined ? {} : { instructions }),
16
+ };
17
+ }
18
+ export function listTools(params, tools) {
19
+ const parsed = listParams.safeParse(params);
20
+ if (!parsed.success || parsed.data.cursor)
21
+ throw new ProtocolError(INVALID_PARAMS, "Invalid tool list parameters");
22
+ return {
23
+ resultType: "complete",
24
+ ttlMs: 0,
25
+ cacheScope: "private",
26
+ tools: tools.list(),
27
+ };
28
+ }
29
+ export async function callTool(params, tools, ctx) {
30
+ const parsed = callParams.safeParse(params);
31
+ if (!parsed.success)
32
+ throw new ProtocolError(INVALID_PARAMS, "Invalid tool call parameters");
33
+ const result = await executeToolCall(parsed.data, tools, ctx(parsed.data));
34
+ return result ? toolResult(result) : undefined;
35
+ }
36
+ //# sourceMappingURL=handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handlers.js","sourceRoot":"","sources":["../../src/modern/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,cAAc,EAEd,2BAA2B,GAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,OAAO,EAAE,QAAQ,IAAI,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAE/D,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,UAAU,QAAQ,CACtB,MAAe,EACf,YAAqB;IAErB,IAAI,CAAC,YAAY,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO;QACzC,MAAM,IAAI,aAAa,CAAC,cAAc,EAAE,8BAA8B,CAAC,CAAC;IAC1E,OAAO;QACL,UAAU,EAAE,UAAU;QACtB,KAAK,EAAE,CAAC;QACR,UAAU,EAAE,SAAS;QACrB,iBAAiB,EAAE,CAAC,GAAG,2BAA2B,CAAC;QACnD,YAAY,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAC3B,GAAG,CAAC,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;KACxD,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,MAAe,EACf,KAAkB;IAElB,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM;QACvC,MAAM,IAAI,aAAa,CAAC,cAAc,EAAE,8BAA8B,CAAC,CAAC;IAC1E,OAAO;QACL,UAAU,EAAE,UAAU;QACtB,KAAK,EAAE,CAAC;QACR,UAAU,EAAE,SAAS;QACrB,KAAK,EAAE,KAAK,CAAC,IAAI,EAAE;KACpB,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,MAAe,EACf,KAAkB,EAClB,GAA6E;IAE7E,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC5C,IAAI,CAAC,MAAM,CAAC,OAAO;QACjB,MAAM,IAAI,aAAa,CAAC,cAAc,EAAE,8BAA8B,CAAC,CAAC;IAC1E,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,MAAM,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3E,OAAO,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACjD,CAAC"}
@@ -0,0 +1,142 @@
1
+ import { z } from "zod";
2
+ export declare const commonParams: z.ZodObject<{
3
+ _meta: z.ZodObject<{
4
+ "io.modelcontextprotocol/protocolVersion": z.ZodString;
5
+ "io.modelcontextprotocol/clientCapabilities": z.ZodObject<{
6
+ experimental: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
7
+ roots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
8
+ sampling: z.ZodOptional<z.ZodObject<{
9
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
10
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
11
+ }, z.core.$loose>>;
12
+ elicitation: z.ZodOptional<z.ZodObject<{
13
+ form: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
14
+ url: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
15
+ }, z.core.$loose>>;
16
+ extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
17
+ }, z.core.$loose>;
18
+ "io.modelcontextprotocol/clientInfo": z.ZodOptional<z.ZodObject<{
19
+ name: z.ZodString;
20
+ version: z.ZodString;
21
+ title: z.ZodOptional<z.ZodString>;
22
+ description: z.ZodOptional<z.ZodString>;
23
+ websiteUrl: z.ZodOptional<z.ZodString>;
24
+ icons: z.ZodOptional<z.ZodArray<z.ZodObject<{
25
+ src: z.ZodString;
26
+ mimeType: z.ZodOptional<z.ZodString>;
27
+ sizes: z.ZodOptional<z.ZodArray<z.ZodString>>;
28
+ theme: z.ZodOptional<z.ZodEnum<{
29
+ dark: "dark";
30
+ light: "light";
31
+ }>>;
32
+ }, z.core.$loose>>>;
33
+ }, z.core.$loose>>;
34
+ "io.modelcontextprotocol/logLevel": z.ZodOptional<z.ZodEnum<{
35
+ alert: "alert";
36
+ critical: "critical";
37
+ debug: "debug";
38
+ emergency: "emergency";
39
+ error: "error";
40
+ info: "info";
41
+ notice: "notice";
42
+ warning: "warning";
43
+ }>>;
44
+ progressToken: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
45
+ }, z.core.$loose>;
46
+ }, z.core.$loose>;
47
+ export declare const listParams: z.ZodObject<{
48
+ _meta: z.ZodObject<{
49
+ "io.modelcontextprotocol/protocolVersion": z.ZodString;
50
+ "io.modelcontextprotocol/clientCapabilities": z.ZodObject<{
51
+ experimental: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
52
+ roots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
53
+ sampling: z.ZodOptional<z.ZodObject<{
54
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
55
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
56
+ }, z.core.$loose>>;
57
+ elicitation: z.ZodOptional<z.ZodObject<{
58
+ form: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
59
+ url: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
60
+ }, z.core.$loose>>;
61
+ extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
62
+ }, z.core.$loose>;
63
+ "io.modelcontextprotocol/clientInfo": z.ZodOptional<z.ZodObject<{
64
+ name: z.ZodString;
65
+ version: z.ZodString;
66
+ title: z.ZodOptional<z.ZodString>;
67
+ description: z.ZodOptional<z.ZodString>;
68
+ websiteUrl: z.ZodOptional<z.ZodString>;
69
+ icons: z.ZodOptional<z.ZodArray<z.ZodObject<{
70
+ src: z.ZodString;
71
+ mimeType: z.ZodOptional<z.ZodString>;
72
+ sizes: z.ZodOptional<z.ZodArray<z.ZodString>>;
73
+ theme: z.ZodOptional<z.ZodEnum<{
74
+ dark: "dark";
75
+ light: "light";
76
+ }>>;
77
+ }, z.core.$loose>>>;
78
+ }, z.core.$loose>>;
79
+ "io.modelcontextprotocol/logLevel": z.ZodOptional<z.ZodEnum<{
80
+ alert: "alert";
81
+ critical: "critical";
82
+ debug: "debug";
83
+ emergency: "emergency";
84
+ error: "error";
85
+ info: "info";
86
+ notice: "notice";
87
+ warning: "warning";
88
+ }>>;
89
+ progressToken: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
90
+ }, z.core.$loose>;
91
+ cursor: z.ZodOptional<z.ZodString>;
92
+ }, z.core.$loose>;
93
+ export declare const callParams: z.ZodObject<{
94
+ _meta: z.ZodObject<{
95
+ "io.modelcontextprotocol/protocolVersion": z.ZodString;
96
+ "io.modelcontextprotocol/clientCapabilities": z.ZodObject<{
97
+ experimental: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
98
+ roots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
99
+ sampling: z.ZodOptional<z.ZodObject<{
100
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
101
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
102
+ }, z.core.$loose>>;
103
+ elicitation: z.ZodOptional<z.ZodObject<{
104
+ form: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
105
+ url: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
106
+ }, z.core.$loose>>;
107
+ extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
108
+ }, z.core.$loose>;
109
+ "io.modelcontextprotocol/clientInfo": z.ZodOptional<z.ZodObject<{
110
+ name: z.ZodString;
111
+ version: z.ZodString;
112
+ title: z.ZodOptional<z.ZodString>;
113
+ description: z.ZodOptional<z.ZodString>;
114
+ websiteUrl: z.ZodOptional<z.ZodString>;
115
+ icons: z.ZodOptional<z.ZodArray<z.ZodObject<{
116
+ src: z.ZodString;
117
+ mimeType: z.ZodOptional<z.ZodString>;
118
+ sizes: z.ZodOptional<z.ZodArray<z.ZodString>>;
119
+ theme: z.ZodOptional<z.ZodEnum<{
120
+ dark: "dark";
121
+ light: "light";
122
+ }>>;
123
+ }, z.core.$loose>>>;
124
+ }, z.core.$loose>>;
125
+ "io.modelcontextprotocol/logLevel": z.ZodOptional<z.ZodEnum<{
126
+ alert: "alert";
127
+ critical: "critical";
128
+ debug: "debug";
129
+ emergency: "emergency";
130
+ error: "error";
131
+ info: "info";
132
+ notice: "notice";
133
+ warning: "warning";
134
+ }>>;
135
+ progressToken: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
136
+ }, z.core.$loose>;
137
+ name: z.ZodString;
138
+ arguments: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
139
+ requestState: z.ZodOptional<z.ZodString>;
140
+ inputResponses: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
141
+ }, z.core.$loose>;
142
+ //# sourceMappingURL=messages.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.d.ts","sourceRoot":"","sources":["../../src/modern/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,eAAO,MAAM,YAAY;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAAqC,CAAC;AAC/D,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAErB,CAAC;AACH,eAAO,MAAM,UAAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAKrB,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { z } from "zod";
2
+ import { object } from "../protocol/messages.js";
3
+ import { metadata } from "./metadata.js";
4
+ export const commonParams = z.looseObject({ _meta: metadata });
5
+ export const listParams = commonParams.extend({
6
+ cursor: z.string().optional(),
7
+ });
8
+ export const callParams = commonParams.extend({
9
+ name: z.string(),
10
+ arguments: object.optional(),
11
+ requestState: z.string().optional(),
12
+ inputResponses: object.optional(),
13
+ });
14
+ //# sourceMappingURL=messages.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messages.js","sourceRoot":"","sources":["../../src/modern/messages.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEzC,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;AAC/D,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC;IAC5C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,UAAU,GAAG,YAAY,CAAC,MAAM,CAAC;IAC5C,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,SAAS,EAAE,MAAM,CAAC,QAAQ,EAAE;IAC5B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,cAAc,EAAE,MAAM,CAAC,QAAQ,EAAE;CAClC,CAAC,CAAC"}
@@ -0,0 +1,45 @@
1
+ import { z } from "zod";
2
+ export declare const metadata: z.ZodObject<{
3
+ "io.modelcontextprotocol/protocolVersion": z.ZodString;
4
+ "io.modelcontextprotocol/clientCapabilities": z.ZodObject<{
5
+ experimental: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
6
+ roots: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
7
+ sampling: z.ZodOptional<z.ZodObject<{
8
+ context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
9
+ tools: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
10
+ }, z.core.$loose>>;
11
+ elicitation: z.ZodOptional<z.ZodObject<{
12
+ form: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
13
+ url: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodJSONSchema>>;
14
+ }, z.core.$loose>>;
15
+ extensions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodRecord<z.ZodString, z.ZodJSONSchema>>>;
16
+ }, z.core.$loose>;
17
+ "io.modelcontextprotocol/clientInfo": z.ZodOptional<z.ZodObject<{
18
+ name: z.ZodString;
19
+ version: z.ZodString;
20
+ title: z.ZodOptional<z.ZodString>;
21
+ description: z.ZodOptional<z.ZodString>;
22
+ websiteUrl: z.ZodOptional<z.ZodString>;
23
+ icons: z.ZodOptional<z.ZodArray<z.ZodObject<{
24
+ src: z.ZodString;
25
+ mimeType: z.ZodOptional<z.ZodString>;
26
+ sizes: z.ZodOptional<z.ZodArray<z.ZodString>>;
27
+ theme: z.ZodOptional<z.ZodEnum<{
28
+ dark: "dark";
29
+ light: "light";
30
+ }>>;
31
+ }, z.core.$loose>>>;
32
+ }, z.core.$loose>>;
33
+ "io.modelcontextprotocol/logLevel": z.ZodOptional<z.ZodEnum<{
34
+ alert: "alert";
35
+ critical: "critical";
36
+ debug: "debug";
37
+ emergency: "emergency";
38
+ error: "error";
39
+ info: "info";
40
+ notice: "notice";
41
+ warning: "warning";
42
+ }>>;
43
+ progressToken: z.ZodOptional<z.ZodUnion<readonly [z.ZodString, z.ZodNumber]>>;
44
+ }, z.core.$loose>;
45
+ //# sourceMappingURL=metadata.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.d.ts","sourceRoot":"","sources":["../../src/modern/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA+BxB,eAAO,MAAM,QAAQ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAiBnB,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { z } from "zod";
2
+ import { icon } from "../protocol/icon.js";
3
+ import { object } from "../protocol/messages.js";
4
+ const capabilityObject = z.record(z.string(), z.json());
5
+ const requestId = z.union([z.string(), z.number().finite()]);
6
+ const capabilities = z.looseObject({
7
+ experimental: z.record(z.string(), capabilityObject).optional(),
8
+ roots: object.optional(),
9
+ sampling: z
10
+ .looseObject({
11
+ context: capabilityObject.optional(),
12
+ tools: capabilityObject.optional(),
13
+ })
14
+ .optional(),
15
+ elicitation: z
16
+ .looseObject({
17
+ form: capabilityObject.optional(),
18
+ url: capabilityObject.optional(),
19
+ })
20
+ .optional(),
21
+ extensions: z.record(z.string(), capabilityObject).optional(),
22
+ });
23
+ const implementation = z.looseObject({
24
+ name: z.string(),
25
+ version: z.string(),
26
+ title: z.string().optional(),
27
+ description: z.string().optional(),
28
+ websiteUrl: z.string().optional(),
29
+ icons: z.array(icon).optional(),
30
+ });
31
+ export const metadata = z.looseObject({
32
+ "io.modelcontextprotocol/protocolVersion": z.string(),
33
+ "io.modelcontextprotocol/clientCapabilities": capabilities,
34
+ "io.modelcontextprotocol/clientInfo": implementation.optional(),
35
+ "io.modelcontextprotocol/logLevel": z
36
+ .enum([
37
+ "debug",
38
+ "info",
39
+ "notice",
40
+ "warning",
41
+ "error",
42
+ "critical",
43
+ "alert",
44
+ "emergency",
45
+ ])
46
+ .optional(),
47
+ progressToken: requestId.optional(),
48
+ });
49
+ //# sourceMappingURL=metadata.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metadata.js","sourceRoot":"","sources":["../../src/modern/metadata.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,yBAAyB,CAAC;AAEjD,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;AACxD,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;AAC7D,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC;IACjC,YAAY,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,QAAQ,EAAE;IAC/D,KAAK,EAAE,MAAM,CAAC,QAAQ,EAAE;IACxB,QAAQ,EAAE,CAAC;SACR,WAAW,CAAC;QACX,OAAO,EAAE,gBAAgB,CAAC,QAAQ,EAAE;QACpC,KAAK,EAAE,gBAAgB,CAAC,QAAQ,EAAE;KACnC,CAAC;SACD,QAAQ,EAAE;IACb,WAAW,EAAE,CAAC;SACX,WAAW,CAAC;QACX,IAAI,EAAE,gBAAgB,CAAC,QAAQ,EAAE;QACjC,GAAG,EAAE,gBAAgB,CAAC,QAAQ,EAAE;KACjC,CAAC;SACD,QAAQ,EAAE;IACb,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,gBAAgB,CAAC,CAAC,QAAQ,EAAE;CAC9D,CAAC,CAAC;AACH,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,CAAC,WAAW,CAAC;IACpC,yCAAyC,EAAE,CAAC,CAAC,MAAM,EAAE;IACrD,4CAA4C,EAAE,YAAY;IAC1D,oCAAoC,EAAE,cAAc,CAAC,QAAQ,EAAE;IAC/D,kCAAkC,EAAE,CAAC;SAClC,IAAI,CAAC;QACJ,OAAO;QACP,MAAM;QACN,QAAQ;QACR,SAAS;QACT,OAAO;QACP,UAAU;QACV,OAAO;QACP,WAAW;KACZ,CAAC;SACD,QAAQ,EAAE;IACb,aAAa,EAAE,SAAS,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { Implementation, JSONRPCResultResponse, RequestId, Result } from "@toolgrain/protocol";
2
+ export declare function successResponse(id: RequestId, result: Result, identity: Implementation): JSONRPCResultResponse;
3
+ //# sourceMappingURL=responses.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses.d.ts","sourceRoot":"","sources":["../../src/modern/responses.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,qBAAqB,EACrB,SAAS,EACT,MAAM,EACP,MAAM,qBAAqB,CAAC;AAG7B,wBAAgB,eAAe,CAC7B,EAAE,EAAE,SAAS,EACb,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,cAAc,GACvB,qBAAqB,CAYvB"}
@@ -0,0 +1,15 @@
1
+ import { JSONRPC_VERSION } from "@toolgrain/protocol";
2
+ export function successResponse(id, result, identity) {
3
+ return {
4
+ jsonrpc: JSONRPC_VERSION,
5
+ id,
6
+ result: {
7
+ ...result,
8
+ _meta: {
9
+ ...result._meta,
10
+ "io.modelcontextprotocol/serverInfo": { ...identity },
11
+ },
12
+ },
13
+ };
14
+ }
15
+ //# sourceMappingURL=responses.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"responses.js","sourceRoot":"","sources":["../../src/modern/responses.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,UAAU,eAAe,CAC7B,EAAa,EACb,MAAc,EACd,QAAwB;IAExB,OAAO;QACL,OAAO,EAAE,eAAe;QACxB,EAAE;QACF,MAAM,EAAE;YACN,GAAG,MAAM;YACT,KAAK,EAAE;gBACL,GAAG,MAAM,CAAC,KAAK;gBACf,oCAAoC,EAAE,EAAE,GAAG,QAAQ,EAAE;aACtD;SACF;KACF,CAAC;AACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import type { CallToolResult } from "@toolgrain/protocol";
2
+ import type { ToolExecutionResult } from "../tools/results.js";
3
+ export declare function toolResult(result: ToolExecutionResult): CallToolResult;
4
+ //# sourceMappingURL=results.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"results.d.ts","sourceRoot":"","sources":["../../src/modern/results.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,wBAAgB,UAAU,CAAC,MAAM,EAAE,mBAAmB,GAAG,cAAc,CAEtE"}
@@ -0,0 +1,4 @@
1
+ export function toolResult(result) {
2
+ return { resultType: "complete", ...result };
3
+ }
4
+ //# sourceMappingURL=results.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"results.js","sourceRoot":"","sources":["../../src/modern/results.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,UAAU,CAAC,MAA2B;IACpD,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,GAAG,MAAM,EAAE,CAAC;AAC/C,CAAC"}
@@ -0,0 +1,12 @@
1
+ import type { RequestId } from "@toolgrain/protocol";
2
+ /** Owns duplicate detection and cancellation signals for in-flight requests. */
3
+ export declare function createPendingRequests(isOpen: () => boolean): {
4
+ begin(id: RequestId): {
5
+ signal: AbortSignal;
6
+ isActive: () => boolean;
7
+ finish: () => void;
8
+ } | undefined;
9
+ cancel(id: RequestId): void;
10
+ clear(): void;
11
+ };
12
+ //# sourceMappingURL=pending-requests.d.ts.map