@toolgrain/mcp 0.3.0-alpha.0 → 0.3.0-alpha.2

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 (91) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/README.md +17 -3
  3. package/dist/apps.d.ts +9 -0
  4. package/dist/apps.d.ts.map +1 -0
  5. package/dist/apps.js +21 -0
  6. package/dist/apps.js.map +1 -0
  7. package/dist/connection.d.ts.map +1 -1
  8. package/dist/connection.js +9 -1
  9. package/dist/connection.js.map +1 -1
  10. package/dist/dispatcher.d.ts +2 -1
  11. package/dist/dispatcher.d.ts.map +1 -1
  12. package/dist/dispatcher.js +3 -3
  13. package/dist/dispatcher.js.map +1 -1
  14. package/dist/index.d.ts +4 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +2 -0
  17. package/dist/index.js.map +1 -1
  18. package/dist/legacy/dispatcher.d.ts +2 -1
  19. package/dist/legacy/dispatcher.d.ts.map +1 -1
  20. package/dist/legacy/dispatcher.js +23 -8
  21. package/dist/legacy/dispatcher.js.map +1 -1
  22. package/dist/legacy/handlers.d.ts +1 -1
  23. package/dist/legacy/handlers.d.ts.map +1 -1
  24. package/dist/legacy/handlers.js +2 -2
  25. package/dist/legacy/handlers.js.map +1 -1
  26. package/dist/modern/dispatcher.d.ts +2 -1
  27. package/dist/modern/dispatcher.d.ts.map +1 -1
  28. package/dist/modern/dispatcher.js +22 -8
  29. package/dist/modern/dispatcher.js.map +1 -1
  30. package/dist/modern/handlers.d.ts +1 -1
  31. package/dist/modern/handlers.d.ts.map +1 -1
  32. package/dist/modern/handlers.js +2 -2
  33. package/dist/modern/handlers.js.map +1 -1
  34. package/dist/modern/results.d.ts +6 -0
  35. package/dist/modern/results.d.ts.map +1 -1
  36. package/dist/modern/results.js +9 -0
  37. package/dist/modern/results.js.map +1 -1
  38. package/dist/pending-requests.d.ts +2 -1
  39. package/dist/pending-requests.d.ts.map +1 -1
  40. package/dist/pending-requests.js +17 -0
  41. package/dist/pending-requests.js.map +1 -1
  42. package/dist/resources/definition.d.ts +45 -0
  43. package/dist/resources/definition.d.ts.map +1 -0
  44. package/dist/resources/definition.js +46 -0
  45. package/dist/resources/definition.js.map +1 -0
  46. package/dist/resources/registry.d.ts +13 -0
  47. package/dist/resources/registry.d.ts.map +1 -0
  48. package/dist/resources/registry.js +48 -0
  49. package/dist/resources/registry.js.map +1 -0
  50. package/dist/resources/requests.d.ts +13 -0
  51. package/dist/resources/requests.d.ts.map +1 -0
  52. package/dist/resources/requests.js +43 -0
  53. package/dist/resources/requests.js.map +1 -0
  54. package/dist/resources/validation.d.ts +33 -0
  55. package/dist/resources/validation.d.ts.map +1 -0
  56. package/dist/resources/validation.js +61 -0
  57. package/dist/resources/validation.js.map +1 -0
  58. package/dist/server.d.ts +7 -4
  59. package/dist/server.d.ts.map +1 -1
  60. package/dist/server.js +6 -3
  61. package/dist/server.js.map +1 -1
  62. package/dist/tools/context.d.ts +5 -4
  63. package/dist/tools/context.d.ts.map +1 -1
  64. package/dist/tools/context.js +1 -1
  65. package/dist/tools/context.js.map +1 -1
  66. package/dist/tools/progress.d.ts +4 -2
  67. package/dist/tools/progress.d.ts.map +1 -1
  68. package/dist/tools/progress.js +40 -6
  69. package/dist/tools/progress.js.map +1 -1
  70. package/dist/tools/rich-result.d.ts +19 -19
  71. package/dist/tools/rich-result.d.ts.map +1 -1
  72. package/dist/tools/rich-result.js.map +1 -1
  73. package/package.json +2 -2
  74. package/src/apps.ts +23 -0
  75. package/src/connection.ts +15 -0
  76. package/src/dispatcher.ts +4 -0
  77. package/src/index.ts +9 -0
  78. package/src/legacy/dispatcher.ts +55 -13
  79. package/src/legacy/handlers.ts +2 -1
  80. package/src/modern/dispatcher.ts +57 -21
  81. package/src/modern/handlers.ts +2 -1
  82. package/src/modern/results.ts +10 -0
  83. package/src/pending-requests.ts +17 -1
  84. package/src/resources/definition.ts +92 -0
  85. package/src/resources/registry.ts +72 -0
  86. package/src/resources/requests.ts +59 -0
  87. package/src/resources/validation.ts +82 -0
  88. package/src/server.ts +11 -4
  89. package/src/tools/context.ts +5 -4
  90. package/src/tools/progress.ts +46 -8
  91. package/src/tools/rich-result.ts +53 -27
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # @toolgrain/mcp
2
2
 
3
+ ## 0.3.0-alpha.2
4
+
5
+ ### Minor Changes
6
+
7
+ - Add reusable fixed-URI resources with text and binary reads, request context, and endpoint authorization across both MCP revisions.
8
+ - Add native MCP Apps protocol contracts and typed React widgets with shared-entry routing.
9
+
10
+ ### Patch Changes
11
+
12
+ - Updated dependencies
13
+ - @toolgrain/protocol@0.3.0-alpha.2
14
+
15
+ ## 0.3.0-alpha.1
16
+
17
+ ### Patch Changes
18
+
19
+ - Pace request-scoped progress notifications at 100 ms intervals while preserving ordered delivery, backpressure, and prompt cancellation. Reject duplicate active progress tokens on shared message connections, release tokens on completion or cancellation, and preserve isolation between independent HTTP response streams.
20
+ - @toolgrain/protocol@0.3.0-alpha.1
21
+
3
22
  ## 0.3.0-alpha.0
4
23
 
5
24
  ### Minor Changes
package/README.md CHANGED
@@ -70,13 +70,27 @@ Handlers can accept `execute(input, ctx)` to use request information and
70
70
  `ctx.signal` for cooperative cancellation. Report client-requested progress with
71
71
  `await ctx.reportProgress({ progress: 1, total: 10, message: "Processing" })`.
72
72
  The bound method is safe to pass to helpers and becomes a no-op without a
73
- progress token or delivery channel. Use `toolContext()` for direct handler
74
- calls, which bypass server validation and result conversion. Unexpected server
75
- execution failures return generic errors and reach the optional `onError`
73
+ progress token or delivery channel. The first update sends immediately; later
74
+ updates are spaced at least 100 ms apart per invocation, preserving order and
75
+ backpressure. Await each report. Duplicate active progress tokens are rejected
76
+ on shared message connections; independent HTTP response streams remain isolated.
77
+ Use `toolContext()` for direct handler calls, which bypass server validation and
78
+ result conversion. Unexpected server execution failures return generic errors
79
+ and reach the optional `onError`
76
80
  callback. Request-cached dependencies use `createContext()` and inferred
77
81
  accessors; see the
78
82
  [context guide](https://toolgrain.mintlify.site/guides/context).
79
83
 
84
+ ## Fixed resources
85
+
86
+ Declare reusable resources with `resource({ uri, name, read })` and register a
87
+ readonly array through `createServer({ name, version, tools, resources })`.
88
+ Readers receive `(uri, ctx)` and return `{ contents: [{ uri, text }] }` or base64
89
+ `blob` entries, with optional metadata. The same context supports authorization,
90
+ lazy providers, and cancellation. Resource lists are static; templates,
91
+ subscriptions, and MCP Apps remain separate work. See the
92
+ [resource guide](https://toolgrain.mintlify.site/guides/resources).
93
+
80
94
  ## Transports and compatibility
81
95
 
82
96
  Use `stdio()` or `http()` from
package/dist/apps.d.ts ADDED
@@ -0,0 +1,9 @@
1
+ import type { ToolContext } from "./tools/context.js";
2
+ /** Advisory client claim; never an authorization decision. */
3
+ export type AppSupport = "supported" | "not-advertised" | "unknown";
4
+ /**
5
+ * Read the current request's MCP Apps claim. Legacy independent HTTP has no
6
+ * retained client capabilities and returns unknown. A claim is not verified.
7
+ */
8
+ export declare function getAppSupport(ctx: ToolContext): AppSupport;
9
+ //# sourceMappingURL=apps.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apps.d.ts","sourceRoot":"","sources":["../src/apps.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,8DAA8D;AAC9D,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,gBAAgB,GAAG,SAAS,CAAC;AAEpE;;;GAGG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,WAAW,GAAG,UAAU,CAY1D"}
package/dist/apps.js ADDED
@@ -0,0 +1,21 @@
1
+ import { APPS_EXTENSION_ID, APPS_MIME_TYPE } from "@toolgrain/protocol/apps";
2
+ /**
3
+ * Read the current request's MCP Apps claim. Legacy independent HTTP has no
4
+ * retained client capabilities and returns unknown. A claim is not verified.
5
+ */
6
+ export function getAppSupport(ctx) {
7
+ const capabilities = ctx.request.client?.capabilities;
8
+ if (!capabilities)
9
+ return "unknown";
10
+ const extensions = capabilities.extensions;
11
+ if (typeof extensions !== "object" || extensions === null)
12
+ return "not-advertised";
13
+ const ui = extensions[APPS_EXTENSION_ID];
14
+ if (typeof ui !== "object" || ui === null)
15
+ return "not-advertised";
16
+ const mimeTypes = ui.mimeTypes;
17
+ return Array.isArray(mimeTypes) && mimeTypes.includes(APPS_MIME_TYPE)
18
+ ? "supported"
19
+ : "not-advertised";
20
+ }
21
+ //# sourceMappingURL=apps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apps.js","sourceRoot":"","sources":["../src/apps.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAM7E;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,GAAgB;IAC5C,MAAM,YAAY,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,YAAY,CAAC;IACtD,IAAI,CAAC,YAAY;QAAE,OAAO,SAAS,CAAC;IACpC,MAAM,UAAU,GAAI,YAAyC,CAAC,UAAU,CAAC;IACzE,IAAI,OAAO,UAAU,KAAK,QAAQ,IAAI,UAAU,KAAK,IAAI;QACvD,OAAO,gBAAgB,CAAC;IAC1B,MAAM,EAAE,GAAI,UAAsC,CAAC,iBAAiB,CAAC,CAAC;IACtE,IAAI,OAAO,EAAE,KAAK,QAAQ,IAAI,EAAE,KAAK,IAAI;QAAE,OAAO,gBAAgB,CAAC;IACnE,MAAM,SAAS,GAAI,EAA8B,CAAC,SAAS,CAAC;IAC5D,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,IAAI,SAAS,CAAC,QAAQ,CAAC,cAAc,CAAC;QACnE,CAAC,CAAC,WAAW;QACb,CAAC,CAAC,gBAAgB,CAAC;AACvB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,KAAK,YAAY,EAAe,MAAM,kBAAkB,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAOlD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,KAAK,EACV,gBAAgB,EAChB,SAAS,EAEV,MAAM,gBAAgB,CAAC;AAGxB,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,UAAU,EACpB,OAAO,CAAC,EAAE,YAAY,EACtB,OAAO,CAAC,EAAE,MAAM,IAAI,GACnB,mBAAmB,CAErB;AAED,UAAU,mBAAmB;IAC3B,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,cAAc,CAAC,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB"}
1
+ {"version":3,"file":"connection.d.ts","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,KAAK,YAAY,EAAe,MAAM,kBAAkB,CAAC;AAClE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAOlD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,KAAK,EACV,gBAAgB,EAChB,SAAS,EAEV,MAAM,gBAAgB,CAAC;AAGxB,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,UAAU,EACpB,OAAO,CAAC,EAAE,YAAY,EACtB,OAAO,CAAC,EAAE,MAAM,IAAI,GACnB,mBAAmB,CAErB;AAED,UAAU,mBAAmB;IAC3B,MAAM,CAAC,SAAS,EAAE,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,cAAc,CAAC,SAAS,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3E,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB"}
@@ -1,10 +1,11 @@
1
- import { INVALID_REQUEST, PARSE_ERROR, } from "@toolgrain/protocol";
1
+ import { INVALID_PARAMS, INVALID_REQUEST, PARSE_ERROR, } from "@toolgrain/protocol";
2
2
  import { reportError } from "./diagnostics.js";
3
3
  import { executeRequest } from "./execute-request.js";
4
4
  import { createLegacyConnection } from "./legacy/connection.js";
5
5
  import { createPendingRequests } from "./pending-requests.js";
6
6
  import { decode } from "./protocol/decode.js";
7
7
  import { protocolError } from "./protocol/responses.js";
8
+ import { isProgressToken } from "./tools/progress.js";
8
9
  import { claimTransport } from "./transport-ownership.js";
9
10
  export function createConnection(dispatch, onError, onClose) {
10
11
  return new Connection(dispatch, onError, onClose);
@@ -135,6 +136,13 @@ class Connection {
135
136
  await this.send(protocolError(INVALID_REQUEST, "Request ID is already in use", request.id));
136
137
  return;
137
138
  }
139
+ const token = request.params?._meta
140
+ ?.progressToken;
141
+ if (isProgressToken(token) && !pending.claimProgress(token)) {
142
+ pending.finish();
143
+ await this.send(protocolError(INVALID_PARAMS, "Progress token is already in use", request.id));
144
+ return;
145
+ }
138
146
  const initialization = this.legacy.begin(request, prepared.protocolVersion);
139
147
  try {
140
148
  const response = await executeRequest(this.dispatch, request, {
@@ -1 +1 @@
1
- {"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connection.js","sourceRoot":"","sources":["../src/connection.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,eAAe,EACf,WAAW,GAGZ,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAqB,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAElE,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAC9D,OAAO,EAAE,MAAM,EAAE,MAAM,sBAAsB,CAAC;AAE9C,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAExD,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAMtD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE1D,MAAM,UAAU,gBAAgB,CAC9B,QAAoB,EACpB,OAAsB,EACtB,OAAoB;IAEpB,OAAO,IAAI,UAAU,CAAC,QAAQ,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;AACpD,CAAC;AAQD,6EAA6E;AAC7E,MAAM,UAAU;IASK,QAAQ;IACR,OAAO;IACP,OAAO;IAVlB,KAAK,GAAiD,MAAM,CAAC;IAC7D,SAAS,CAA2C;IACpD,YAAY,CAA4B;IACxC,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;IAClB,QAAQ,GAAG,qBAAqB,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;IACtD,MAAM,GAAG,sBAAsB,EAAE,CAAC;IAEnD,YACmB,QAAoB,EACpB,OAAsB,EACtB,OAAoB;wBAFpB,QAAQ;uBACR,OAAO;uBACP,OAAO;IACvB,CAAC;IAEJ,wEAAwE;IAC/D,MAAM,GAAG,CAAC,SAAoB,EAAiB,EAAE,CACxD,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,kBAAkB,CAAC,CAAC,CAAC;IAEhE,cAAc,GAAG,CACxB,SAA2B,EAC3B,MAAc,EACC,EAAE,CACjB,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,GAAG,EAAE,CAC1B,SAAS,CAAC,KAAK,CAAC,MAAM,EAAE;QACtB,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO;QACxC,OAAO,EAAE,IAAI,CAAC,kBAAkB,CAAC,OAAO;KACzC,CAAC,CACH,CAAC;IAEa,MAAM,GAAG,KAAK,EAC7B,SAAuC,EACvC,KAA0B,EACX,EAAE;QACjB,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM;YACvB,MAAM,IAAI,KAAK,CACb,uEAAuE,CACxE,CAAC;QACJ,cAAc,CAAC,SAAS,CAAC,CAAC;QAC1B,IAAI,CAAC,KAAK,GAAG,UAAU,CAAC;QACxB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC;YACH,MAAM,KAAK,EAAE,CAAC;YACd,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;gBAAE,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;YACvE,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;YAC5B,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC,CAAC;IAEO,KAAK,GAAG,GAAkB,EAAE;QACnC,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC,YAAY,CAAC;QAChD,IAAI,CAAC,KAAK,GAAG,QAAQ,CAAC;QACtB,IAAI,CAAC,YAAY,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YACpD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC;YACjC,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;YAC3B,MAAM,SAAS,EAAE,KAAK,EAAE,CAAC;QAC3B,CAAC,CAAC,CAAC;QACH,qFAAqF;QACrF,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACjB,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC,CAAC;IAEe,kBAAkB,GAAuB;QACxD,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE;YACrB,KAAK,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QACrE,CAAC;QACD,YAAY,EAAE,GAAG,EAAE;YACjB,IAAI,IAAI,CAAC,MAAM,EAAE;gBACf,KAAK,IAAI,CAAC,IAAI,CACZ,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,aAAa,CAAC,WAAW,EAAE,aAAa,CAAC,CAAC,CACrE,CAAC;QACN,CAAC;QACD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YACjB,KAAK,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QAC7B,CAAC;QACD,OAAO,EAAE,GAAG,EAAE;YACZ,KAAK,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QACzD,CAAC;KACF,CAAC;IAEM,MAAM;QACZ,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU,IAAI,IAAI,CAAC,KAAK,KAAK,WAAW,CAAC;IACjE,CAAC;IAEO,MAAM,CAAC,KAAc;QAC3B,WAAW,CAAC,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IACnC,CAAC;IAEO,KAAK,CAAC,SAAS,CAAC,KAAc;QACpC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QACnB,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QACrB,CAAC;QAAC,OAAO,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAEO,IAAI,CACV,OAAgD,EAChD,QAAQ,GAAkB,GAAG,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE;QAE7C,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YACxC,IACE,IAAI,CAAC,MAAM,EAAE;gBACb,QAAQ,EAAE;gBACV,IAAI,CAAC,SAAS;gBACd,MAAM,IAAI,IAAI,CAAC,SAAS;gBAExB,MAAM,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAEO,KAAK,CAAC,OAAO,CAAC,OAAgB;QACpC,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE,OAAO;QAC3B,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;QACjC,QAAQ,QAAQ,CAAC,IAAI,EAAE,CAAC;YACtB,KAAK,QAAQ;gBACX,OAAO;YACT,KAAK,QAAQ;gBACX,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACpC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;gBACpC,OAAO;YACT,KAAK,cAAc;gBACjB,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;gBAChD,OAAO;YACT,KAAK,OAAO;gBACV,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAAC;gBAC9D,OAAO;YACT,KAAK,SAAS;gBACZ,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,aAAa,CAAC,OAAgB;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;YACnB,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YAChC,OAAO;QACT,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAI,CAAC,IAAI,CACb,aAAa,CACX,eAAe,EACf,8BAA8B,EAC9B,OAAO,CAAC,EAAE,CACX,CACF,CAAC;YACF,OAAO;QACT,CAAC;QACD,MAAM,KAAK,GAAI,OAAO,CAAC,MAAM,EAAE,KAA6C;YAC1E,EAAE,aAAa,CAAC;QAClB,IAAI,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;YAC5D,OAAO,CAAC,MAAM,EAAE,CAAC;YACjB,MAAM,IAAI,CAAC,IAAI,CACb,aAAa,CACX,cAAc,EACd,kCAAkC,EAClC,OAAO,CAAC,EAAE,CACX,CACF,CAAC;YACF,OAAO;QACT,CAAC;QACD,MAAM,cAAc,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,CAAC,eAAe,CAAC,CAAC;QAC5E,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,cAAc,CACnC,IAAI,CAAC,QAAQ,EACb,OAAO,EACP;gBACE,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE;gBAC5B,MAAM,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC;aAC1D,EACD,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAC7B,QAAQ,CAAC,eAAe,CACzB,CAAC;YACF,cAAc,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;YAClC,IAAI,QAAQ;gBAAE,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC5D,CAAC;gBAAS,CAAC;YACT,cAAc,EAAE,MAAM,EAAE,CAAC;YACzB,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;CACF"}
@@ -2,6 +2,7 @@ import { type Implementation, type JSONRPCErrorResponse, type ProgressNotificati
2
2
  import type { AuthIdentity } from "./auth/types.js";
3
3
  import type { ContextRegistry } from "./context/registry.js";
4
4
  import type { Request } from "./protocol/messages.js";
5
+ import type { ResourceRegistry } from "./resources/registry.js";
5
6
  import type { ToolAdapter } from "./tools/adapter.js";
6
7
  import type { ToolClient, ToolContext } from "./tools/context.js";
7
8
  /** Per-request execution state supplied by the connection or independent caller. */
@@ -15,7 +16,7 @@ export interface RequestScope {
15
16
  }
16
17
  export type Dispatcher = (request: Request, scope: RequestScope, protocolVersion?: SupportedProtocolVersion) => Promise<ProtocolResponse | undefined>;
17
18
  /** Compose the two protocol adapters around one execution registry. */
18
- export declare function createDispatcher(tools: ToolAdapter, identity: Implementation, instructions?: string, providers?: ContextRegistry): Dispatcher;
19
+ export declare function createDispatcher(tools: ToolAdapter, identity: Implementation, instructions?: string, providers?: ContextRegistry, resources?: ResourceRegistry): Dispatcher;
19
20
  /** Envelope errors have no negotiated connection when processing independent calls. */
20
21
  export declare function formatErrorResponse(response: JSONRPCErrorResponse, protocolVersion?: SupportedProtocolVersion): ProtocolResponse;
21
22
  //# sourceMappingURL=dispatcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../src/dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAEzB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAO7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAElE,oFAAoF;AACpF,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,wFAAwF;IACxF,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAChC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,cAAc,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;CAChD;AAED,MAAM,MAAM,UAAU,GAAG,CACvB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,YAAY,EACnB,eAAe,CAAC,EAAE,wBAAwB,KACvC,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;AAE3C,uEAAuE;AACvE,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,cAAc,EACxB,YAAY,CAAC,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,eAAe,GAC1B,UAAU,CAmBZ;AAED,uFAAuF;AACvF,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,oBAAoB,EAC9B,eAAe,CAAC,EAAE,wBAAwB,GACzC,gBAAgB,CAIlB"}
1
+ {"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../src/dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EACnB,KAAK,oBAAoB,EAEzB,KAAK,oBAAoB,EACzB,KAAK,gBAAgB,EACrB,KAAK,wBAAwB,EAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAO7D,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,wBAAwB,CAAC;AAEtD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAElE,oFAAoF;AACpF,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,WAAW,CAAC;IACpB,wFAAwF;IACxF,MAAM,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAChC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,MAAM,CAAC,EAAE,CAAC,OAAO,EAAE,oBAAoB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjE,cAAc,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,CAAC;CAChD;AAED,MAAM,MAAM,UAAU,GAAG,CACvB,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,YAAY,EACnB,eAAe,CAAC,EAAE,wBAAwB,KACvC,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC,CAAC;AAE3C,uEAAuE;AACvE,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,cAAc,EACxB,YAAY,CAAC,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,eAAe,EAC3B,SAAS,CAAC,EAAE,gBAAgB,GAC3B,UAAU,CAqBZ;AAED,uFAAuF;AACvF,wBAAgB,mBAAmB,CACjC,QAAQ,EAAE,oBAAoB,EAC9B,eAAe,CAAC,EAAE,wBAAwB,GACzC,gBAAgB,CAIlB"}
@@ -4,9 +4,9 @@ import { errorResponse as legacyErrorResponse } from "./legacy/responses.js";
4
4
  import { createModernDispatcher } from "./modern/dispatcher.js";
5
5
  import { validateVersionContext } from "./protocol/version-metadata.js";
6
6
  /** Compose the two protocol adapters around one execution registry. */
7
- export function createDispatcher(tools, identity, instructions, providers) {
8
- const legacy = createLegacyDispatcher(tools, identity, instructions, providers);
9
- const modern = createModernDispatcher(tools, identity, instructions, providers);
7
+ export function createDispatcher(tools, identity, instructions, providers, resources) {
8
+ const legacy = createLegacyDispatcher(tools, identity, instructions, providers, resources);
9
+ const modern = createModernDispatcher(tools, identity, instructions, providers, resources);
10
10
  return (request, scope, protocolVersion) => {
11
11
  validateVersionContext(request, protocolVersion);
12
12
  return usesLegacyProtocol(request, protocolVersion)
@@ -1 +1 @@
1
- {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../src/dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,uBAAuB,GAIxB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAoBxE,uEAAuE;AACvE,MAAM,UAAU,gBAAgB,CAC9B,KAAkB,EAClB,QAAwB,EACxB,YAAqB,EACrB,SAA2B;IAE3B,MAAM,MAAM,GAAG,sBAAsB,CACnC,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,SAAS,CACV,CAAC;IACF,MAAM,MAAM,GAAG,sBAAsB,CACnC,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,SAAS,CACV,CAAC;IACF,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE;QACzC,sBAAsB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QACjD,OAAO,kBAAkB,CAAC,OAAO,EAAE,eAAe,CAAC;YACjD,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC;YACxB,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC;AACJ,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,mBAAmB,CACjC,QAA8B,EAC9B,eAA0C;IAE1C,OAAO,eAAe,KAAK,uBAAuB;QAChD,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC;QAC/B,CAAC,CAAC,QAAQ,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../src/dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,uBAAuB,GAIxB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EACL,sBAAsB,EACtB,kBAAkB,GACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,aAAa,IAAI,mBAAmB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAEhE,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AAqBxE,uEAAuE;AACvE,MAAM,UAAU,gBAAgB,CAC9B,KAAkB,EAClB,QAAwB,EACxB,YAAqB,EACrB,SAA2B,EAC3B,SAA4B;IAE5B,MAAM,MAAM,GAAG,sBAAsB,CACnC,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,SAAS,CACV,CAAC;IACF,MAAM,MAAM,GAAG,sBAAsB,CACnC,KAAK,EACL,QAAQ,EACR,YAAY,EACZ,SAAS,EACT,SAAS,CACV,CAAC;IACF,OAAO,CAAC,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE;QACzC,sBAAsB,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QACjD,OAAO,kBAAkB,CAAC,OAAO,EAAE,eAAe,CAAC;YACjD,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC;YACxB,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAC7B,CAAC,CAAC;AACJ,CAAC;AAED,uFAAuF;AACvF,MAAM,UAAU,mBAAmB,CACjC,QAA8B,EAC9B,eAA0C;IAE1C,OAAO,eAAe,KAAK,uBAAuB;QAChD,CAAC,CAAC,mBAAmB,CAAC,QAAQ,CAAC;QAC/B,CAAC,CAAC,QAAQ,CAAC;AACf,CAAC"}
package/dist/index.d.ts CHANGED
@@ -1,3 +1,5 @@
1
+ export type { AppSupport } from "./apps.js";
2
+ export { getAppSupport } from "./apps.js";
1
3
  export { validateTokenAudience } from "./auth/audience.js";
2
4
  export { createAuthAccessor } from "./auth/context.js";
3
5
  export type { AuthErrorCode } from "./auth/errors.js";
@@ -8,6 +10,8 @@ export { authUrl as validateAuthUrl } from "./auth/url.js";
8
10
  export type { ContextProvider } from "./context/definition.js";
9
11
  export { createContext } from "./context/definition.js";
10
12
  export type { ToolErrorDetails } from "./diagnostics.js";
13
+ export type { Resource, ResourceDefinition, ResourceMetadata, ResourceReadResult, } from "./resources/definition.js";
14
+ export { resource } from "./resources/definition.js";
11
15
  export type { HandleOptions, Server, ServerOptions } from "./server.js";
12
16
  export { createServer } from "./server.js";
13
17
  export type { ToolClient, ToolContext, ToolContextOptions, ToolRequest, } from "./tools/context.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,eAAe,CAAC;AAC3D,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,YAAY,EACV,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EACV,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EACV,gBAAgB,EAChB,SAAS,EACT,kBAAkB,GACnB,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,UAAU,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,YAAY,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACtD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtD,YAAY,EACV,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,SAAS,EACT,iBAAiB,GAClB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,eAAe,CAAC;AAC3D,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC/D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,YAAY,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,YAAY,EACV,QAAQ,EACR,kBAAkB,EAClB,gBAAgB,EAChB,kBAAkB,GACnB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AACrD,YAAY,EAAE,aAAa,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAC3C,YAAY,EACV,UAAU,EACV,WAAW,EACX,kBAAkB,EAClB,WAAW,GACZ,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACjD,YAAY,EAAE,IAAI,EAAE,cAAc,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AAChF,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,YAAY,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACxD,YAAY,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AACnD,YAAY,EACV,cAAc,EACd,SAAS,EACT,gBAAgB,EAChB,mBAAmB,GACpB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACpD,YAAY,EACV,gBAAgB,EAChB,SAAS,EACT,kBAAkB,GACnB,MAAM,gBAAgB,CAAC"}
package/dist/index.js CHANGED
@@ -1,9 +1,11 @@
1
+ export { getAppSupport } from "./apps.js";
1
2
  export { validateTokenAudience } from "./auth/audience.js";
2
3
  export { createAuthAccessor } from "./auth/context.js";
3
4
  export { AuthError, isAuthError } from "./auth/errors.js";
4
5
  export { validateAuthScopes } from "./auth/scopes.js";
5
6
  export { authUrl as validateAuthUrl } from "./auth/url.js";
6
7
  export { createContext } from "./context/definition.js";
8
+ export { resource } from "./resources/definition.js";
7
9
  export { createServer } from "./server.js";
8
10
  export { toolContext } from "./tools/context.js";
9
11
  export { tool } from "./tools/definition.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAQtD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAGxD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAO3C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAShD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAQtD,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,eAAe,CAAC;AAE3D,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAQxD,OAAO,EAAE,QAAQ,EAAE,MAAM,2BAA2B,CAAC;AAErD,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAO3C,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD,OAAO,EAAE,IAAI,EAAE,MAAM,uBAAuB,CAAC;AAC7C,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAShD,OAAO,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC"}
@@ -3,8 +3,9 @@ import type { JSONRPCResponse } from "@toolgrain/protocol/2025-06-18";
3
3
  import type { ContextRegistry } from "../context/registry.js";
4
4
  import type { RequestScope } from "../dispatcher.js";
5
5
  import type { Request } from "../protocol/messages.js";
6
+ import type { ResourceRegistry } from "../resources/registry.js";
6
7
  import type { ToolAdapter } from "../tools/adapter.js";
7
8
  /** Initialization selects this adapter only without an explicit modern context. */
8
9
  export declare function usesLegacyProtocol(request: Request, protocolVersion?: SupportedProtocolVersion): boolean;
9
- export declare function createLegacyDispatcher(tools: ToolAdapter, identity: Implementation, instructions?: string, providers?: ContextRegistry): (request: Request, scope: RequestScope) => Promise<JSONRPCResponse | undefined>;
10
+ export declare function createLegacyDispatcher(tools: ToolAdapter, identity: Implementation, instructions?: string, providers?: ContextRegistry, resources?: ResourceRegistry): (request: Request, scope: RequestScope) => Promise<JSONRPCResponse | undefined>;
10
11
  //# sourceMappingURL=dispatcher.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/legacy/dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,wBAAwB,EAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,eAAe,EAAU,MAAM,gCAAgC,CAAC;AAC9E,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;AAGvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAKvD,mFAAmF;AACnF,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,eAAe,CAAC,EAAE,wBAAwB,GACzC,OAAO,CAOT;AAED,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,eAAe,GAAG,SAAS,CAAC,CAiCxC"}
1
+ {"version":3,"file":"dispatcher.d.ts","sourceRoot":"","sources":["../../src/legacy/dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGnB,KAAK,wBAAwB,EAC9B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,eAAe,EAAU,MAAM,gCAAgC,CAAC;AAC9E,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;AAGvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAOjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAMvD,mFAAmF;AACnF,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,OAAO,EAChB,eAAe,CAAC,EAAE,wBAAwB,GACzC,OAAO,CAOT;AAED,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,cAAc,EACxB,YAAY,CAAC,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,eAAe,EAC3B,SAAS,CAAC,EAAE,gBAAgB,aAGjB,OAAO,SACT,YAAY,KAClB,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC,CAkExC"}
@@ -1,6 +1,7 @@
1
1
  import { LEGACY_PROTOCOL_VERSION, METHOD_NOT_FOUND, } from "@toolgrain/protocol";
2
2
  import { ProtocolError } from "../protocol/responses.js";
3
3
  import { hasProtocolVersionMetadata } from "../protocol/version-metadata.js";
4
+ import { listResources, listResourceTemplates, readResource, requireResources, } from "../resources/requests.js";
4
5
  import { createToolContext } from "../tools/context.js";
5
6
  import { callTool, initialize, listTools, ping } from "./handlers.js";
6
7
  import { successResponse } from "./responses.js";
@@ -11,12 +12,18 @@ export function usesLegacyProtocol(request, protocolVersion) {
11
12
  !hasProtocolVersionMetadata(request) &&
12
13
  request.method === "initialize"));
13
14
  }
14
- export function createLegacyDispatcher(tools, identity, instructions, providers) {
15
+ export function createLegacyDispatcher(tools, identity, instructions, providers, resources) {
15
16
  return async (request, scope) => {
17
+ const context = (params) => createToolContext(scope.signal, {
18
+ id: request.id,
19
+ protocolVersion: LEGACY_PROTOCOL_VERSION,
20
+ ...(scope.client === undefined ? {} : { client: scope.client }),
21
+ meta: params._meta ?? {},
22
+ }, scope.auth, providers, scope.reportProgress);
16
23
  let result;
17
24
  switch (request.method) {
18
25
  case "initialize":
19
- result = initialize(request.params, identity, instructions);
26
+ result = initialize(request.params, identity, instructions, resources !== undefined);
20
27
  break;
21
28
  case "ping":
22
29
  result = ping(request.params);
@@ -25,12 +32,20 @@ export function createLegacyDispatcher(tools, identity, instructions, providers)
25
32
  result = listTools(request.params, tools);
26
33
  break;
27
34
  case "tools/call":
28
- result = await callTool(request.params, tools, (params) => createToolContext(scope.signal, {
29
- id: request.id,
30
- protocolVersion: LEGACY_PROTOCOL_VERSION,
31
- ...(scope.client === undefined ? {} : { client: scope.client }),
32
- meta: params._meta ?? {},
33
- }, scope.auth, providers, scope.reportProgress));
35
+ result = await callTool(request.params, tools, context);
36
+ break;
37
+ case "resources/list": {
38
+ const listed = listResources(request.params, requireResources(resources));
39
+ result = {
40
+ resources: listed.resources.map(({ icons: _icons, ...entry }) => entry),
41
+ };
42
+ break;
43
+ }
44
+ case "resources/templates/list":
45
+ result = listResourceTemplates(request.params, requireResources(resources));
46
+ break;
47
+ case "resources/read":
48
+ result = await readResource(request.params, requireResources(resources), context, -32002);
34
49
  break;
35
50
  default:
36
51
  throw new ProtocolError(METHOD_NOT_FOUND, "Method not found");
@@ -1 +1 @@
1
- {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/legacy/dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,uBAAuB,EACvB,gBAAgB,GAEjB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,mFAAmF;AACnF,MAAM,UAAU,kBAAkB,CAChC,OAAgB,EAChB,eAA0C;IAE1C,OAAO,CACL,eAAe,KAAK,uBAAuB;QAC3C,CAAC,eAAe,KAAK,SAAS;YAC5B,CAAC,0BAA0B,CAAC,OAAO,CAAC;YACpC,OAAO,CAAC,MAAM,KAAK,YAAY,CAAC,CACnC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAAkB,EAClB,QAAwB,EACxB,YAAqB,EACrB,SAA2B;IAE3B,OAAO,KAAK,EACV,OAAgB,EAChB,KAAmB,EACmB,EAAE;QACxC,IAAI,MAA0B,CAAC;QAC/B,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;YACvB,KAAK,YAAY;gBACf,MAAM,GAAG,UAAU,CAAC,OAAO,CAAC,MAAM,EAAE,QAAQ,EAAE,YAAY,CAAC,CAAC;gBAC5D,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC9B,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,uBAAuB;oBACxC,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;oBAC/D,IAAI,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;iBACzB,EACD,KAAK,CAAC,IAAI,EACV,SAAS,EACT,KAAK,CAAC,cAAc,CACrB,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,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"dispatcher.js","sourceRoot":"","sources":["../../src/legacy/dispatcher.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,uBAAuB,EACvB,gBAAgB,GAEjB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAE7E,OAAO,EACL,aAAa,EACb,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAGlC,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,eAAe,CAAC;AACtE,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAEjD,mFAAmF;AACnF,MAAM,UAAU,kBAAkB,CAChC,OAAgB,EAChB,eAA0C;IAE1C,OAAO,CACL,eAAe,KAAK,uBAAuB;QAC3C,CAAC,eAAe,KAAK,SAAS;YAC5B,CAAC,0BAA0B,CAAC,OAAO,CAAC;YACpC,OAAO,CAAC,MAAM,KAAK,YAAY,CAAC,CACnC,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,sBAAsB,CACpC,KAAkB,EAClB,QAAwB,EACxB,YAAqB,EACrB,SAA2B,EAC3B,SAA4B;IAE5B,OAAO,KAAK,EACV,OAAgB,EAChB,KAAmB,EACmB,EAAE;QACxC,MAAM,OAAO,GAAG,CAAC,MAEhB,EAAe,EAAE,CAChB,iBAAiB,CACf,KAAK,CAAC,MAAM,EACZ;YACE,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,eAAe,EAAE,uBAAuB;YACxC,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC;YAC/D,IAAI,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;SACzB,EACD,KAAK,CAAC,IAAI,EACV,SAAS,EACT,KAAK,CAAC,cAAc,CACrB,CAAC;QACJ,IAAI,MAA0B,CAAC;QAC/B,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;YACvB,KAAK,YAAY;gBACf,MAAM,GAAG,UAAU,CACjB,OAAO,CAAC,MAAM,EACd,QAAQ,EACR,YAAY,EACZ,SAAS,KAAK,SAAS,CACxB,CAAC;gBACF,MAAM;YACR,KAAK,MAAM;gBACT,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAC9B,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,OAAO,CAAC,CAAC;gBACxD,MAAM;YACR,KAAK,gBAAgB,EAAE,CAAC;gBACtB,MAAM,MAAM,GAAG,aAAa,CAC1B,OAAO,CAAC,MAAM,EACd,gBAAgB,CAAC,SAAS,CAAC,CAC5B,CAAC;gBACF,MAAM,GAAG;oBACP,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,GAAG,CAC7B,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CACvC;iBACF,CAAC;gBACF,MAAM;YACR,CAAC;YACD,KAAK,0BAA0B;gBAC7B,MAAM,GAAG,qBAAqB,CAC5B,OAAO,CAAC,MAAM,EACd,gBAAgB,CAAC,SAAS,CAAC,CAC5B,CAAC;gBACF,MAAM;YACR,KAAK,gBAAgB;gBACnB,MAAM,GAAG,MAAM,YAAY,CACzB,OAAO,CAAC,MAAM,EACd,gBAAgB,CAAC,SAAS,CAAC,EAC3B,OAAO,EACP,CAAC,KAAK,CACP,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,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,CAAC,CAAC;AACJ,CAAC"}
@@ -3,7 +3,7 @@ import type { InitializeResult, ListToolsResult } from "@toolgrain/protocol/2025
3
3
  import type { ToolAdapter } from "../tools/adapter.js";
4
4
  import type { ToolContext } from "../tools/context.js";
5
5
  /** Initialization can only negotiate the initialization-based revision. */
6
- export declare function initialize(params: unknown, identity: Implementation, instructions?: string): InitializeResult;
6
+ export declare function initialize(params: unknown, identity: Implementation, instructions?: string, resources?: boolean): InitializeResult;
7
7
  export declare function ping(params: unknown): Record<string, never>;
8
8
  export declare function listTools(params: unknown, tools: ToolAdapter): ListToolsResult;
9
9
  export declare function callTool(params: unknown, tools: ToolAdapter, ctx: (params: {
@@ -1 +1 @@
1
- {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/legacy/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EAChB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AASvD,2EAA2E;AAC3E,wBAAgB,UAAU,CACxB,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,cAAc,EACxB,YAAY,CAAC,EAAE,MAAM,GACpB,gBAAgB,CAYlB;AAED,wBAAgB,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAI3D;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,WAAW,GACjB,eAAe,CAcjB;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,gFAO9E"}
1
+ {"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../src/legacy/handlers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAGpB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EACV,gBAAgB,EAChB,eAAe,EAChB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AASvD,2EAA2E;AAC3E,wBAAgB,UAAU,CACxB,MAAM,EAAE,OAAO,EACf,QAAQ,EAAE,cAAc,EACxB,YAAY,CAAC,EAAE,MAAM,EACrB,SAAS,UAAQ,GAChB,gBAAgB,CAYlB;AAED,wBAAgB,IAAI,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAI3D;AAED,wBAAgB,SAAS,CACvB,MAAM,EAAE,OAAO,EACf,KAAK,EAAE,WAAW,GACjB,eAAe,CAcjB;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,gFAO9E"}
@@ -4,12 +4,12 @@ import { callTool as executeToolCall } from "../tools/call.js";
4
4
  import { callParams, commonParams, initializeParams, listParams, } from "./messages.js";
5
5
  import { toolResult } from "./results.js";
6
6
  /** Initialization can only negotiate the initialization-based revision. */
7
- export function initialize(params, identity, instructions) {
7
+ export function initialize(params, identity, instructions, resources = false) {
8
8
  if (!initializeParams.safeParse(params).success)
9
9
  throw new ProtocolError(INVALID_PARAMS, "Invalid initialization parameters");
10
10
  return {
11
11
  protocolVersion: LEGACY_PROTOCOL_VERSION,
12
- capabilities: { tools: {} },
12
+ capabilities: { tools: {}, ...(resources ? { resources: {} } : {}) },
13
13
  serverInfo: { ...identity },
14
14
  ...(instructions === undefined ? {} : { instructions }),
15
15
  };
@@ -1 +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"}
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,EACrB,SAAS,GAAG,KAAK;IAEjB,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,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;QACpE,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"}
@@ -2,6 +2,7 @@ import { type Implementation, type JSONRPCResultResponse } from "@toolgrain/prot
2
2
  import type { ContextRegistry } from "../context/registry.js";
3
3
  import type { RequestScope } from "../dispatcher.js";
4
4
  import type { Request } from "../protocol/messages.js";
5
+ import type { ResourceRegistry } from "../resources/registry.js";
5
6
  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
+ export declare function createModernDispatcher(tools: ToolAdapter, identity: Implementation, instructions?: string, providers?: ContextRegistry, resources?: ResourceRegistry): (request: Request, scope: RequestScope) => Promise<JSONRPCResultResponse | undefined>;
7
8
  //# sourceMappingURL=dispatcher.d.ts.map
@@ -1 +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,CA+C9C"}
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,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAOjE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AAQvD,wBAAgB,sBAAsB,CACpC,KAAK,EAAE,WAAW,EAClB,QAAQ,EAAE,cAAc,EACxB,YAAY,CAAC,EAAE,MAAM,EACrB,SAAS,CAAC,EAAE,eAAe,EAC3B,SAAS,CAAC,EAAE,gBAAgB,aAGjB,OAAO,SACT,YAAY,KAClB,OAAO,CAAC,qBAAqB,GAAG,SAAS,CAAC,CAyE9C"}
@@ -1,10 +1,12 @@
1
1
  import { INVALID_PARAMS, METHOD_NOT_FOUND, PROTOCOL_VERSION, SUPPORTED_PROTOCOL_VERSIONS, UNSUPPORTED_PROTOCOL_VERSION, } from "@toolgrain/protocol";
2
2
  import { ProtocolError } from "../protocol/responses.js";
3
+ import { listResources, listResourceTemplates, readResource, requireResources, } from "../resources/requests.js";
3
4
  import { createToolContext, toolClient } from "../tools/context.js";
4
5
  import { callTool, discover, listTools } from "./handlers.js";
5
6
  import { metadata } from "./metadata.js";
6
7
  import { successResponse } from "./responses.js";
7
- export function createModernDispatcher(tools, identity, instructions, providers) {
8
+ import { resourceResult } from "./results.js";
9
+ export function createModernDispatcher(tools, identity, instructions, providers, resources) {
8
10
  return async (request, scope) => {
9
11
  const parsed = metadata.safeParse(request.params?._meta);
10
12
  if (!parsed.success)
@@ -12,22 +14,34 @@ export function createModernDispatcher(tools, identity, instructions, providers)
12
14
  const revision = parsed.data["io.modelcontextprotocol/protocolVersion"];
13
15
  if (revision !== PROTOCOL_VERSION)
14
16
  throw new ProtocolError(UNSUPPORTED_PROTOCOL_VERSION, "Unsupported protocol version", { supported: [...SUPPORTED_PROTOCOL_VERSIONS], requested: revision });
17
+ const context = (params) => createToolContext(scope.signal, {
18
+ id: request.id,
19
+ protocolVersion: PROTOCOL_VERSION,
20
+ client: toolClient(parsed.data["io.modelcontextprotocol/clientInfo"], parsed.data["io.modelcontextprotocol/clientCapabilities"]),
21
+ meta: params._meta ?? {},
22
+ }, scope.auth, providers, scope.reportProgress);
15
23
  let result;
16
24
  switch (request.method) {
17
25
  case "server/discover":
18
- result = discover(request.params, instructions);
26
+ result = discover(request.params, instructions, resources !== undefined);
19
27
  break;
20
28
  case "tools/list":
21
29
  result = listTools(request.params, tools);
22
30
  break;
23
31
  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, scope.reportProgress));
32
+ result = await callTool(request.params, tools, context);
30
33
  break;
34
+ case "resources/list":
35
+ result = resourceResult(listResources(request.params, requireResources(resources)));
36
+ break;
37
+ case "resources/templates/list":
38
+ result = resourceResult(listResourceTemplates(request.params, requireResources(resources)));
39
+ break;
40
+ case "resources/read": {
41
+ const value = await readResource(request.params, requireResources(resources), context, INVALID_PARAMS);
42
+ result = value === undefined ? undefined : resourceResult(value);
43
+ break;
44
+ }
31
45
  default:
32
46
  throw new ProtocolError(METHOD_NOT_FOUND, "Method not found");
33
47
  }
@@ -1 +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,EACT,KAAK,CAAC,cAAc,CACrB,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"}
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,EACL,aAAa,EACb,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,GACjB,MAAM,0BAA0B,CAAC;AAGlC,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;AACjD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,UAAU,sBAAsB,CACpC,KAAkB,EAClB,QAAwB,EACxB,YAAqB,EACrB,SAA2B,EAC3B,SAA4B;IAE5B,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,MAAM,OAAO,GAAG,CAAC,MAEhB,EAAe,EAAE,CAChB,iBAAiB,CACf,KAAK,CAAC,MAAM,EACZ;YACE,EAAE,EAAE,OAAO,CAAC,EAAE;YACd,eAAe,EAAE,gBAAgB;YACjC,MAAM,EAAE,UAAU,CAChB,MAAM,CAAC,IAAI,CAAC,oCAAoC,CAEnC,EACb,MAAM,CAAC,IAAI,CACT,4CAA4C,CACvB,CACxB;YACD,IAAI,EAAE,MAAM,CAAC,KAAK,IAAI,EAAE;SACzB,EACD,KAAK,CAAC,IAAI,EACV,SAAS,EACT,KAAK,CAAC,cAAc,CACrB,CAAC;QACJ,IAAI,MAA0B,CAAC;QAC/B,QAAQ,OAAO,CAAC,MAAM,EAAE,CAAC;YACvB,KAAK,iBAAiB;gBACpB,MAAM,GAAG,QAAQ,CACf,OAAO,CAAC,MAAM,EACd,YAAY,EACZ,SAAS,KAAK,SAAS,CACxB,CAAC;gBACF,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,OAAO,CAAC,CAAC;gBACxD,MAAM;YACR,KAAK,gBAAgB;gBACnB,MAAM,GAAG,cAAc,CACrB,aAAa,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC,CAC3D,CAAC;gBACF,MAAM;YACR,KAAK,0BAA0B;gBAC7B,MAAM,GAAG,cAAc,CACrB,qBAAqB,CAAC,OAAO,CAAC,MAAM,EAAE,gBAAgB,CAAC,SAAS,CAAC,CAAC,CACnE,CAAC;gBACF,MAAM;YACR,KAAK,gBAAgB,EAAE,CAAC;gBACtB,MAAM,KAAK,GAAG,MAAM,YAAY,CAC9B,OAAO,CAAC,MAAM,EACd,gBAAgB,CAAC,SAAS,CAAC,EAC3B,OAAO,EACP,cAAc,CACf,CAAC;gBACF,MAAM,GAAG,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;gBACjE,MAAM;YACR,CAAC;YACD;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"}
@@ -1,7 +1,7 @@
1
1
  import { type DiscoverResult, type ListToolsResult } from "@toolgrain/protocol";
2
2
  import type { ToolAdapter } from "../tools/adapter.js";
3
3
  import type { ToolContext } from "../tools/context.js";
4
- export declare function discover(params: unknown, instructions?: string): DiscoverResult;
4
+ export declare function discover(params: unknown, instructions?: string, resources?: boolean): DiscoverResult;
5
5
  export declare function listTools(params: unknown, tools: ToolAdapter): ListToolsResult;
6
6
  export declare function callTool(params: unknown, tools: ToolAdapter, ctx: (params: {
7
7
  _meta?: Record<string, unknown> | undefined;
@@ -1 +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"}
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,EACrB,SAAS,UAAQ,GAChB,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"}
@@ -3,7 +3,7 @@ import { ProtocolError } from "../protocol/responses.js";
3
3
  import { callTool as executeToolCall } from "../tools/call.js";
4
4
  import { callParams, commonParams, listParams } from "./messages.js";
5
5
  import { toolResult } from "./results.js";
6
- export function discover(params, instructions) {
6
+ export function discover(params, instructions, resources = false) {
7
7
  if (!commonParams.safeParse(params).success)
8
8
  throw new ProtocolError(INVALID_PARAMS, "Invalid discovery parameters");
9
9
  return {
@@ -11,7 +11,7 @@ export function discover(params, instructions) {
11
11
  ttlMs: 0,
12
12
  cacheScope: "private",
13
13
  supportedVersions: [...SUPPORTED_PROTOCOL_VERSIONS],
14
- capabilities: { tools: {} },
14
+ capabilities: { tools: {}, ...(resources ? { resources: {} } : {}) },
15
15
  ...(instructions === undefined ? {} : { instructions }),
16
16
  };
17
17
  }
@@ -1 +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"}
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,EACrB,SAAS,GAAG,KAAK;IAEjB,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,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;QACpE,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"}
@@ -1,4 +1,10 @@
1
1
  import type { CallToolResult } from "@toolgrain/protocol";
2
2
  import type { ToolExecutionResult } from "../tools/results.js";
3
3
  export declare function toolResult(result: ToolExecutionResult): CallToolResult;
4
+ /** Resource results do not enable caching until applications have a cache-policy API. */
5
+ export declare function resourceResult<Result extends object>(result: Result): Result & {
6
+ resultType: "complete";
7
+ ttlMs: number;
8
+ cacheScope: "private";
9
+ };
4
10
  //# sourceMappingURL=results.d.ts.map
@@ -1 +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"}
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;AAED,yFAAyF;AACzF,wBAAgB,cAAc,CAAC,MAAM,SAAS,MAAM,EAAE,MAAM,EAAE,MAAM;gBAGpD,UAAU;;gBAEV,SAAS;EAExB"}
@@ -1,4 +1,13 @@
1
1
  export function toolResult(result) {
2
2
  return { resultType: "complete", ...result };
3
3
  }
4
+ /** Resource results do not enable caching until applications have a cache-policy API. */
5
+ export function resourceResult(result) {
6
+ return {
7
+ ...result,
8
+ resultType: "complete",
9
+ ttlMs: 0,
10
+ cacheScope: "private",
11
+ };
12
+ }
4
13
  //# sourceMappingURL=results.js.map
@@ -1 +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"}
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;AAED,yFAAyF;AACzF,MAAM,UAAU,cAAc,CAAwB,MAAc;IAClE,OAAO;QACL,GAAG,MAAM;QACT,UAAU,EAAE,UAAmB;QAC/B,KAAK,EAAE,CAAC;QACR,UAAU,EAAE,SAAkB;KAC/B,CAAC;AACJ,CAAC"}
@@ -1,9 +1,10 @@
1
- import type { RequestId } from "@toolgrain/protocol";
1
+ import type { ProgressToken, RequestId } from "@toolgrain/protocol";
2
2
  /** Owns duplicate detection and cancellation signals for in-flight requests. */
3
3
  export declare function createPendingRequests(isOpen: () => boolean): {
4
4
  begin(id: RequestId): {
5
5
  signal: AbortSignal;
6
6
  isActive: () => boolean;
7
+ claimProgress(token: ProgressToken): boolean;
7
8
  finish: () => void;
8
9
  } | undefined;
9
10
  cancel(id: RequestId): void;
@@ -1 +1 @@
1
- {"version":3,"file":"pending-requests.d.ts","sourceRoot":"","sources":["../src/pending-requests.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAErD,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,OAAO;IAGvD,KAAK,KAAK,SAAS;;;;;IAYnB,MAAM,KAAK,SAAS;IAKpB,KAAK;EAMR"}
1
+ {"version":3,"file":"pending-requests.d.ts","sourceRoot":"","sources":["../src/pending-requests.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEpE,gFAAgF;AAChF,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,OAAO;IAIvD,KAAK,KAAK,SAAS;;;6BAQM,aAAa;;;IAmBtC,MAAM,KAAK,SAAS;IAKpB,KAAK;EAMR"}