@cyanheads/mcp-ts-core 0.12.7 → 0.12.8

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 (215) hide show
  1. package/AGENTS.md +8 -3
  2. package/CLAUDE.md +8 -3
  3. package/README.md +11 -4
  4. package/changelog/0.12.x/0.12.8.md +55 -0
  5. package/dist/config/index.d.ts +3 -34
  6. package/dist/config/index.d.ts.map +1 -1
  7. package/dist/config/index.js +4 -26
  8. package/dist/config/index.js.map +1 -1
  9. package/dist/core/app.d.ts +0 -8
  10. package/dist/core/app.d.ts.map +1 -1
  11. package/dist/core/app.js +0 -7
  12. package/dist/core/app.js.map +1 -1
  13. package/dist/core/serverManifest.d.ts +0 -7
  14. package/dist/core/serverManifest.d.ts.map +1 -1
  15. package/dist/core/serverManifest.js +1 -13
  16. package/dist/core/serverManifest.js.map +1 -1
  17. package/dist/linter/rules/enrichment-rules.js +2 -2
  18. package/dist/linter/rules/enrichment-rules.js.map +1 -1
  19. package/dist/linter/rules/format-parity-rules.d.ts.map +1 -1
  20. package/dist/linter/rules/format-parity-rules.js +14 -36
  21. package/dist/linter/rules/format-parity-rules.js.map +1 -1
  22. package/dist/linter/rules/prompt-rules.d.ts +1 -1
  23. package/dist/linter/rules/prompt-rules.d.ts.map +1 -1
  24. package/dist/linter/rules/prompt-rules.js +2 -19
  25. package/dist/linter/rules/prompt-rules.js.map +1 -1
  26. package/dist/linter/rules/resource-rules.d.ts +1 -1
  27. package/dist/linter/rules/resource-rules.d.ts.map +1 -1
  28. package/dist/linter/rules/resource-rules.js +9 -39
  29. package/dist/linter/rules/resource-rules.js.map +1 -1
  30. package/dist/linter/rules/schema-rules.d.ts +22 -2
  31. package/dist/linter/rules/schema-rules.d.ts.map +1 -1
  32. package/dist/linter/rules/schema-rules.js +28 -5
  33. package/dist/linter/rules/schema-rules.js.map +1 -1
  34. package/dist/linter/rules/tool-rules.d.ts +1 -1
  35. package/dist/linter/rules/tool-rules.d.ts.map +1 -1
  36. package/dist/linter/rules/tool-rules.js +13 -41
  37. package/dist/linter/rules/tool-rules.js.map +1 -1
  38. package/dist/linter/validate.d.ts.map +1 -1
  39. package/dist/linter/validate.js +22 -42
  40. package/dist/linter/validate.js.map +1 -1
  41. package/dist/mcp-server/apps/appBuilders.d.ts.map +1 -1
  42. package/dist/mcp-server/apps/appBuilders.js +2 -16
  43. package/dist/mcp-server/apps/appBuilders.js.map +1 -1
  44. package/dist/mcp-server/handlerContext.d.ts +66 -0
  45. package/dist/mcp-server/handlerContext.d.ts.map +1 -0
  46. package/dist/mcp-server/handlerContext.js +71 -0
  47. package/dist/mcp-server/handlerContext.js.map +1 -0
  48. package/dist/mcp-server/inputRequired.d.ts +7 -1
  49. package/dist/mcp-server/inputRequired.d.ts.map +1 -1
  50. package/dist/mcp-server/inputRequired.js +10 -3
  51. package/dist/mcp-server/inputRequired.js.map +1 -1
  52. package/dist/mcp-server/resources/resource-registration.d.ts +2 -2
  53. package/dist/mcp-server/resources/resource-registration.d.ts.map +1 -1
  54. package/dist/mcp-server/resources/resource-registration.js.map +1 -1
  55. package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts +14 -43
  56. package/dist/mcp-server/resources/utils/resourceHandlerFactory.d.ts.map +1 -1
  57. package/dist/mcp-server/resources/utils/resourceHandlerFactory.js +11 -50
  58. package/dist/mcp-server/resources/utils/resourceHandlerFactory.js.map +1 -1
  59. package/dist/mcp-server/tools/tool-registration.d.ts +5 -9
  60. package/dist/mcp-server/tools/tool-registration.d.ts.map +1 -1
  61. package/dist/mcp-server/tools/tool-registration.js +9 -11
  62. package/dist/mcp-server/tools/tool-registration.js.map +1 -1
  63. package/dist/mcp-server/tools/utils/schemaShape.d.ts +21 -0
  64. package/dist/mcp-server/tools/utils/schemaShape.d.ts.map +1 -1
  65. package/dist/mcp-server/tools/utils/schemaShape.js +8 -6
  66. package/dist/mcp-server/tools/utils/schemaShape.js.map +1 -1
  67. package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts +15 -43
  68. package/dist/mcp-server/tools/utils/toolHandlerFactory.d.ts.map +1 -1
  69. package/dist/mcp-server/tools/utils/toolHandlerFactory.js +31 -72
  70. package/dist/mcp-server/tools/utils/toolHandlerFactory.js.map +1 -1
  71. package/dist/mcp-server/transports/http/httpErrorHandler.d.ts.map +1 -1
  72. package/dist/mcp-server/transports/http/httpErrorHandler.js +2 -1
  73. package/dist/mcp-server/transports/http/httpErrorHandler.js.map +1 -1
  74. package/dist/mcp-server/transports/http/landing-page/handler.d.ts.map +1 -1
  75. package/dist/mcp-server/transports/http/landing-page/handler.js +2 -1
  76. package/dist/mcp-server/transports/http/landing-page/handler.js.map +1 -1
  77. package/dist/mcp-server/transports/http/protectedResourceMetadata.d.ts.map +1 -1
  78. package/dist/mcp-server/transports/http/protectedResourceMetadata.js +2 -1
  79. package/dist/mcp-server/transports/http/protectedResourceMetadata.js.map +1 -1
  80. package/dist/mcp-server/transports/http/publicOrigin.d.ts +11 -0
  81. package/dist/mcp-server/transports/http/publicOrigin.d.ts.map +1 -0
  82. package/dist/mcp-server/transports/http/publicOrigin.js +13 -0
  83. package/dist/mcp-server/transports/http/publicOrigin.js.map +1 -0
  84. package/dist/mcp-server/transports/http/serverCard.d.ts.map +1 -1
  85. package/dist/mcp-server/transports/http/serverCard.js +2 -1
  86. package/dist/mcp-server/transports/http/serverCard.js.map +1 -1
  87. package/dist/mcp-server/transports/http/sessionIdUtils.d.ts +4 -0
  88. package/dist/mcp-server/transports/http/sessionIdUtils.d.ts.map +1 -1
  89. package/dist/mcp-server/transports/http/sessionIdUtils.js +3 -13
  90. package/dist/mcp-server/transports/http/sessionIdUtils.js.map +1 -1
  91. package/dist/mcp-server/transports/manager.d.ts +0 -3
  92. package/dist/mcp-server/transports/manager.d.ts.map +1 -1
  93. package/dist/mcp-server/transports/manager.js +0 -7
  94. package/dist/mcp-server/transports/manager.js.map +1 -1
  95. package/dist/services/canvas/core/CanvasRegistry.d.ts +14 -0
  96. package/dist/services/canvas/core/CanvasRegistry.d.ts.map +1 -1
  97. package/dist/services/canvas/core/CanvasRegistry.js +3 -2
  98. package/dist/services/canvas/core/CanvasRegistry.js.map +1 -1
  99. package/dist/services/canvas/providers/duckdb/DuckdbProvider.d.ts +16 -0
  100. package/dist/services/canvas/providers/duckdb/DuckdbProvider.d.ts.map +1 -1
  101. package/dist/services/canvas/providers/duckdb/DuckdbProvider.js +78 -103
  102. package/dist/services/canvas/providers/duckdb/DuckdbProvider.js.map +1 -1
  103. package/dist/services/graph/core/GraphService.d.ts +3 -3
  104. package/dist/services/graph/core/GraphService.js +3 -3
  105. package/dist/services/graph/types.d.ts +2 -79
  106. package/dist/services/graph/types.d.ts.map +1 -1
  107. package/dist/services/graph/types.js +2 -2
  108. package/dist/services/index.d.ts +1 -2
  109. package/dist/services/index.d.ts.map +1 -1
  110. package/dist/services/index.js +0 -1
  111. package/dist/services/index.js.map +1 -1
  112. package/dist/services/mirror/sqlite/handle.d.ts.map +1 -1
  113. package/dist/services/mirror/sqlite/handle.js +22 -36
  114. package/dist/services/mirror/sqlite/handle.js.map +1 -1
  115. package/dist/services/speech/core/ISpeechProvider.d.ts +0 -24
  116. package/dist/services/speech/core/ISpeechProvider.d.ts.map +1 -1
  117. package/dist/services/speech/core/ISpeechProvider.js +1 -28
  118. package/dist/services/speech/core/ISpeechProvider.js.map +1 -1
  119. package/dist/services/speech/core/SpeechService.d.ts.map +1 -1
  120. package/dist/services/speech/core/SpeechService.js +5 -8
  121. package/dist/services/speech/core/SpeechService.js.map +1 -1
  122. package/dist/services/speech/providers/elevenlabs.provider.d.ts.map +1 -1
  123. package/dist/services/speech/providers/elevenlabs.provider.js +1 -0
  124. package/dist/services/speech/providers/elevenlabs.provider.js.map +1 -1
  125. package/dist/services/speech/types.d.ts +2 -19
  126. package/dist/services/speech/types.d.ts.map +1 -1
  127. package/dist/storage/core/providerHelpers.d.ts +52 -0
  128. package/dist/storage/core/providerHelpers.d.ts.map +1 -0
  129. package/dist/storage/core/providerHelpers.js +96 -0
  130. package/dist/storage/core/providerHelpers.js.map +1 -0
  131. package/dist/storage/providers/cloudflare/d1Provider.d.ts.map +1 -1
  132. package/dist/storage/providers/cloudflare/d1Provider.js +1 -4
  133. package/dist/storage/providers/cloudflare/d1Provider.js.map +1 -1
  134. package/dist/storage/providers/cloudflare/kvProvider.d.ts.map +1 -1
  135. package/dist/storage/providers/cloudflare/kvProvider.js +4 -31
  136. package/dist/storage/providers/cloudflare/kvProvider.js.map +1 -1
  137. package/dist/storage/providers/cloudflare/r2Provider.d.ts +1 -1
  138. package/dist/storage/providers/cloudflare/r2Provider.d.ts.map +1 -1
  139. package/dist/storage/providers/cloudflare/r2Provider.js +8 -48
  140. package/dist/storage/providers/cloudflare/r2Provider.js.map +1 -1
  141. package/dist/storage/providers/fileSystem/fileSystemProvider.d.ts +1 -1
  142. package/dist/storage/providers/fileSystem/fileSystemProvider.d.ts.map +1 -1
  143. package/dist/storage/providers/fileSystem/fileSystemProvider.js +17 -86
  144. package/dist/storage/providers/fileSystem/fileSystemProvider.js.map +1 -1
  145. package/dist/storage/providers/inMemory/inMemoryProvider.d.ts.map +1 -1
  146. package/dist/storage/providers/inMemory/inMemoryProvider.js +5 -38
  147. package/dist/storage/providers/inMemory/inMemoryProvider.js.map +1 -1
  148. package/dist/storage/providers/supabase/supabaseProvider.d.ts.map +1 -1
  149. package/dist/storage/providers/supabase/supabaseProvider.js +1 -4
  150. package/dist/storage/providers/supabase/supabaseProvider.js.map +1 -1
  151. package/dist/testing/fuzz.d.ts.map +1 -1
  152. package/dist/testing/fuzz.js +17 -31
  153. package/dist/testing/fuzz.js.map +1 -1
  154. package/dist/testing/index.d.ts.map +1 -1
  155. package/dist/testing/index.js +4 -26
  156. package/dist/testing/index.js.map +1 -1
  157. package/dist/utils/internal/error-handler/types.d.ts +0 -4
  158. package/dist/utils/internal/error-handler/types.d.ts.map +1 -1
  159. package/dist/utils/internal/logger.d.ts.map +1 -1
  160. package/dist/utils/internal/logger.js +2 -16
  161. package/dist/utils/internal/logger.js.map +1 -1
  162. package/dist/utils/internal/performance.d.ts +8 -31
  163. package/dist/utils/internal/performance.d.ts.map +1 -1
  164. package/dist/utils/internal/performance.js +173 -295
  165. package/dist/utils/internal/performance.js.map +1 -1
  166. package/dist/utils/security/idGenerator.d.ts.map +1 -1
  167. package/dist/utils/security/idGenerator.js +24 -43
  168. package/dist/utils/security/idGenerator.js.map +1 -1
  169. package/dist/utils/security/sanitization.d.ts +0 -7
  170. package/dist/utils/security/sanitization.d.ts.map +1 -1
  171. package/dist/utils/security/sanitization.js +4 -31
  172. package/dist/utils/security/sanitization.js.map +1 -1
  173. package/dist/utils/security/sensitiveFields.d.ts +14 -0
  174. package/dist/utils/security/sensitiveFields.d.ts.map +1 -0
  175. package/dist/utils/security/sensitiveFields.js +31 -0
  176. package/dist/utils/security/sensitiveFields.js.map +1 -0
  177. package/dist/utils/telemetry/trace.d.ts +8 -10
  178. package/dist/utils/telemetry/trace.d.ts.map +1 -1
  179. package/dist/utils/telemetry/trace.js +19 -18
  180. package/dist/utils/telemetry/trace.js.map +1 -1
  181. package/dist/utils/types/guards.d.ts +0 -102
  182. package/dist/utils/types/guards.d.ts.map +1 -1
  183. package/dist/utils/types/guards.js +0 -114
  184. package/dist/utils/types/guards.js.map +1 -1
  185. package/package.json +6 -6
  186. package/skills/add-provider/SKILL.md +18 -4
  187. package/skills/api-config/SKILL.md +4 -18
  188. package/skills/api-services/SKILL.md +1 -1
  189. package/skills/api-services/references/speech.md +1 -2
  190. package/skills/api-telemetry/SKILL.md +2 -2
  191. package/skills/api-utils/SKILL.md +2 -2
  192. package/skills/code-simplifier/SKILL.md +47 -20
  193. package/skills/field-test/SKILL.md +93 -14
  194. package/skills/git-wrapup/SKILL.md +64 -27
  195. package/skills/orchestrations/SKILL.md +17 -6
  196. package/skills/orchestrations/workflows/field-test-fix.md +6 -4
  197. package/skills/orchestrations/workflows/fix-wrapup-release.md +6 -4
  198. package/skills/orchestrations/workflows/greenfield-build.md +2 -2
  199. package/skills/orchestrations/workflows/maintenance-release.md +4 -2
  200. package/skills/release-and-publish/SKILL.md +101 -23
  201. package/skills/release-pr-review/SKILL.md +147 -0
  202. package/templates/AGENTS.md +4 -2
  203. package/templates/CLAUDE.md +4 -2
  204. package/dist/mcp-server/transports/ITransport.d.ts +0 -15
  205. package/dist/mcp-server/transports/ITransport.d.ts.map +0 -1
  206. package/dist/mcp-server/transports/ITransport.js +0 -2
  207. package/dist/mcp-server/transports/ITransport.js.map +0 -1
  208. package/dist/services/llm/types.d.ts +0 -16
  209. package/dist/services/llm/types.d.ts.map +0 -1
  210. package/dist/services/llm/types.js +0 -9
  211. package/dist/services/llm/types.js.map +0 -1
  212. package/dist/utils/internal/health.d.ts +0 -60
  213. package/dist/utils/internal/health.d.ts.map +0 -1
  214. package/dist/utils/internal/health.js +0 -46
  215. package/dist/utils/internal/health.js.map +0 -1
@@ -61,15 +61,22 @@ export function createRequestInput() {
61
61
  * schema to `accepted()` wherever the content matters.
62
62
  */
63
63
  export function createContextInputs(mcpReq) {
64
- const responses = mcpReq?.inputResponses;
64
+ return contextInputsFrom(mcpReq?.inputResponses, mcpReq?.droppedInputResponseKeys ?? [], () => mcpReq?.requestState());
65
+ }
66
+ /**
67
+ * The `ctx.inputs` reader over an explicit set of responses — what
68
+ * {@link createContextInputs} builds from the SDK request, and what the test
69
+ * kit builds from seeded `inputResponses` / `requestState`.
70
+ */
71
+ export function contextInputsFrom(responses, dropped, state) {
65
72
  const accepted = ((key, schema) => schema === undefined
66
73
  ? acceptedContent(responses, key)
67
74
  : acceptedContent(responses, key, schema));
68
75
  return {
69
76
  accepted,
70
- dropped: mcpReq?.droppedInputResponseKeys ?? [],
77
+ dropped,
71
78
  responses,
72
- state: () => mcpReq?.requestState(),
79
+ state,
73
80
  view: (key) => inputResponse(responses, key),
74
81
  };
75
82
  }
@@ -1 +1 @@
1
- {"version":3,"file":"inputRequired.js","sourceRoot":"","sources":["../../src/mcp-server/inputRequired.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EACL,eAAe,EAIf,aAAa,EACb,aAAa,GAGd,MAAM,8BAA8B,CAAC;AAItC;;;;;;;GAOG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAIvB,MAAM;IAH3B,wEAAwE;IAC/D,qBAAqB,GAAG,IAAa,CAAC;IAE/C,YAAqB,MAA2B;QAC9C,KAAK,CAAC,2DAA2D,CAAC,CAAC;sBADhD,MAAM;QAEzB,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,iFAAiF;AACjF,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,CACL,KAAK,YAAY,mBAAmB;QACpC,CAAC,OAAO,KAAK,KAAK,QAAQ;YACxB,KAAK,KAAK,IAAI;YACb,KAA6C,CAAC,qBAAqB,KAAK,IAAI,CAAC,CACjF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,CAAC,IAAuB,EAAS,EAAE;QACxC,MAAM,IAAI,mBAAmB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAA2C;IAC7E,MAAM,SAAS,GAAG,MAAM,EAAE,cAAc,CAAC;IACzC,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAW,EAAE,MAAyB,EAAE,EAAE,CAC3D,MAAM,KAAK,SAAS;QAClB,CAAC,CAAC,eAAe,CAAC,SAAS,EAAE,GAAG,CAAC;QACjC,CAAC,CAAC,eAAe,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,CAA8B,CAAC;IAE5E,OAAO;QACL,QAAQ;QACR,OAAO,EAAE,MAAM,EAAE,wBAAwB,IAAI,EAAE;QAC/C,SAAS;QACT,KAAK,EAAE,GAA8B,EAAE,CAAC,MAAM,EAAE,YAAY,EAAK;QACjE,IAAI,EAAE,CAAC,GAAW,EAAqB,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC;KACxE,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"inputRequired.js","sourceRoot":"","sources":["../../src/mcp-server/inputRequired.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;GAmBG;AAEH,OAAO,EACL,eAAe,EAIf,aAAa,EACb,aAAa,GAGd,MAAM,8BAA8B,CAAC;AAItC;;;;;;;GAOG;AACH,MAAM,OAAO,mBAAoB,SAAQ,KAAK;IAIvB,MAAM;IAH3B,wEAAwE;IAC/D,qBAAqB,GAAG,IAAa,CAAC;IAE/C,YAAqB,MAA2B;QAC9C,KAAK,CAAC,2DAA2D,CAAC,CAAC;sBADhD,MAAM;QAEzB,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,iFAAiF;AACjF,MAAM,UAAU,qBAAqB,CAAC,KAAc;IAClD,OAAO,CACL,KAAK,YAAY,mBAAmB;QACpC,CAAC,OAAO,KAAK,KAAK,QAAQ;YACxB,KAAK,KAAK,IAAI;YACb,KAA6C,CAAC,qBAAqB,KAAK,IAAI,CAAC,CACjF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,CAAC,IAAuB,EAAS,EAAE;QACxC,MAAM,IAAI,mBAAmB,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC;IACrD,CAAC,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,mBAAmB,CAAC,MAA2C;IAC7E,OAAO,iBAAiB,CACtB,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,wBAAwB,IAAI,EAAE,EACtC,GAA8B,EAAE,CAAC,MAAM,EAAE,YAAY,EAAK,CAC3D,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,iBAAiB,CAC/B,SAAgD,EAChD,OAAiB,EACjB,KAA6B;IAE7B,MAAM,QAAQ,GAAG,CAAC,CAAC,GAAW,EAAE,MAAyB,EAAE,EAAE,CAC3D,MAAM,KAAK,SAAS;QAClB,CAAC,CAAC,eAAe,CAAC,SAAS,EAAE,GAAG,CAAC;QACjC,CAAC,CAAC,eAAe,CAAC,SAAS,EAAE,GAAG,EAAE,MAAM,CAAC,CAA8B,CAAC;IAE5E,OAAO;QACL,QAAQ;QACR,OAAO;QACP,SAAS;QACT,KAAK;QACL,IAAI,EAAE,CAAC,GAAW,EAAqB,EAAE,CAAC,aAAa,CAAC,SAAS,EAAE,GAAG,CAAC;KACxE,CAAC;AACJ,CAAC"}
@@ -5,13 +5,13 @@
5
5
  import { type McpServer, type ServerNotifier } from '@modelcontextprotocol/server';
6
6
  import type { ResourceSubscriptions } from '../notifications.js';
7
7
  import type { AnyResourceDefinition } from './utils/resourceDefinition.js';
8
- import { type ResourceHandlerFactoryServices } from './utils/resourceHandlerFactory.js';
8
+ import { type HandlerServices } from './utils/resourceHandlerFactory.js';
9
9
  export declare class ResourceRegistry {
10
10
  private resourceDefs;
11
11
  private services;
12
12
  /** Tracks registered resource names to detect duplicates at startup. */
13
13
  private readonly registeredNames;
14
- constructor(resourceDefs: AnyResourceDefinition[], services: ResourceHandlerFactoryServices);
14
+ constructor(resourceDefs: AnyResourceDefinition[], services: HandlerServices);
15
15
  /**
16
16
  * Registers all resolved resource definitions with the provided McpServer instance.
17
17
  */
@@ -1 +1 @@
1
- {"version":3,"file":"resource-registration.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/resources/resource-registration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,KAAK,SAAS,EAEd,KAAK,cAAc,EACpB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC;AAChG,OAAO,EAEL,KAAK,8BAA8B,EAEpC,MAAM,wDAAwD,CAAC;AAUhE,qBAAa,gBAAgB;IAKzB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,QAAQ;IALlB,wEAAwE;IACxE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IAErD,YACU,YAAY,EAAE,qBAAqB,EAAE,EACrC,QAAQ,EAAE,8BAA8B,EAC9C;IAEJ;;OAEG;IACU,WAAW,CACtB,MAAM,EAAE,SAAS,EACjB,aAAa,CAAC,EAAE,qBAAqB,EACrC,GAAG,CAAC,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC,CA4Bf;IAED,iFAAiF;IACjF,OAAO,CAAC,gBAAgB;YAUV,gBAAgB;CAwD/B"}
1
+ {"version":3,"file":"resource-registration.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/resources/resource-registration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EACL,KAAK,SAAS,EAEd,KAAK,cAAc,EACpB,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAC3E,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC;AAChG,OAAO,EAEL,KAAK,eAAe,EAErB,MAAM,wDAAwD,CAAC;AAUhE,qBAAa,gBAAgB;IAKzB,OAAO,CAAC,YAAY;IACpB,OAAO,CAAC,QAAQ;IALlB,wEAAwE;IACxE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IAErD,YACU,YAAY,EAAE,qBAAqB,EAAE,EACrC,QAAQ,EAAE,eAAe,EAC/B;IAEJ;;OAEG;IACU,WAAW,CACtB,MAAM,EAAE,SAAS,EACjB,aAAa,CAAC,EAAE,qBAAqB,EACrC,GAAG,CAAC,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC,CA4Bf;IAED,iFAAiF;IACjF,OAAO,CAAC,gBAAgB;YAUV,gBAAgB;CAwD/B"}
@@ -1 +1 @@
1
- {"version":3,"file":"resource-registration.js","sourceRoot":"","sources":["../../../src/mcp-server/resources/resource-registration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAEL,gBAAgB,GAEjB,MAAM,8BAA8B,CAAC;AAItC,OAAO,EACL,qBAAqB,GAGtB,MAAM,wDAAwD,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gDAAgD,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,SAAS,uBAAuB,CAAC,WAAmB;IAClD,OAAO,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,OAAO,gBAAgB;IAKjB,YAAY;IACZ,QAAQ;IALlB,wEAAwE;IACvD,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAErD,YACU,YAAqC,EACrC,QAAwC;4BADxC,YAAY;wBACZ,QAAQ;IACf,CAAC;IAEJ;;OAEG;IACI,KAAK,CAAC,WAAW,CACtB,MAAiB,EACjB,aAAqC,EACrC,GAAoB;QAEpB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAE7B,4EAA4E;QAC5E,0EAA0E;QAC1E,0EAA0E;QAC1E,0EAA0E;QAC1E,kDAAkD;QAClD,MAAM,SAAS,GAA6B;YAC1C,uBAAuB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,qBAAqB,EAAE;YAC7D,yBAAyB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,uBAAuB,EAAE;YACjE,qBAAqB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,EAAE;YACzD,GAAG,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,CAAC;YACvC,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC;SACpB,CAAC;QAEF,MAAM,OAAO,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;YACzD,SAAS,EAAE,8BAA8B;SAC1C,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,YAAY,CAAC,MAAM,iBAAiB,EAAE,OAAO,CAAC,CAAC;QAEhF,0EAA0E;QAC1E,uEAAuE;QACvE,qEAAqE;QACrE,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5C,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,iFAAiF;IACzE,gBAAgB,CAAC,IAAY;QACnC,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,4BAA4B,IAAI,sDAAsD;gBACpF,wCAAwC,CAC3C,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC5B,MAAiB,EACjB,GAA0B,EAC1B,SAAmC;QAEnC,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,WAAW,CAAC;QACjD,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;YACrE,SAAS,EAAE,mCAAmC;YAC9C,iBAAiB,EAAE,EAAE,YAAY,EAAE;SACpC,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,0BAA0B,YAAY,GAAG,EAAE,mBAAmB,CAAC,CAAC;QAE7E,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAEpC,MAAM,YAAY,CAAC,QAAQ,CACzB,GAAG,EAAE;YACH,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACrE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,YAAY,CAAC;YACxC,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,kBAAkB,CAAC;YACpD,MAAM,QAAQ,GAAG;gBACf,KAAK;gBACL,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,QAAQ;gBACR,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC3C,+DAA+D;gBAC/D,mEAAmE;gBACnE,GAAG,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;gBAClD,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAC/C,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC;gBACxD,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;aACvC,CAAC;YAEF,IAAI,uBAAuB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC7C,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE;oBACrD,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;iBAChD,CAAC,CAAC;gBAEH,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrE,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAC5E,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CACtB,CAAC;YACJ,CAAC;YAED,MAAM,CAAC,KAAK,CAAC,aAAa,YAAY,4BAA4B,EAAE,mBAAmB,CAAC,CAAC;QAC3F,CAAC,EACD;YACE,SAAS,EAAE,uBAAuB,YAAY,EAAE;YAChD,OAAO,EAAE,mBAAmB;YAC5B,SAAS,EAAE,gBAAgB,CAAC,oBAAoB;YAChD,QAAQ,EAAE,IAAI;SACf,CACF,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"resource-registration.js","sourceRoot":"","sources":["../../../src/mcp-server/resources/resource-registration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAEL,gBAAgB,GAEjB,MAAM,8BAA8B,CAAC;AAItC,OAAO,EACL,qBAAqB,GAGtB,MAAM,wDAAwD,CAAC;AAChE,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gDAAgD,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAE3E,SAAS,uBAAuB,CAAC,WAAmB;IAClD,OAAO,WAAW,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,OAAO,gBAAgB;IAKjB,YAAY;IACZ,QAAQ;IALlB,wEAAwE;IACvD,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAErD,YACU,YAAqC,EACrC,QAAyB;4BADzB,YAAY;wBACZ,QAAQ;IACf,CAAC;IAEJ;;OAEG;IACI,KAAK,CAAC,WAAW,CACtB,MAAiB,EACjB,aAAqC,EACrC,GAAoB;QAEpB,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAE7B,4EAA4E;QAC5E,0EAA0E;QAC1E,0EAA0E;QAC1E,0EAA0E;QAC1E,kDAAkD;QAClD,MAAM,SAAS,GAAoB;YACjC,uBAAuB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,qBAAqB,EAAE;YAC7D,yBAAyB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,uBAAuB,EAAE;YACjE,qBAAqB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,EAAE;YACzD,GAAG,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,CAAC;YACvC,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC;SACpB,CAAC;QAEF,MAAM,OAAO,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;YACzD,SAAS,EAAE,8BAA8B;SAC1C,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,eAAe,IAAI,CAAC,YAAY,CAAC,MAAM,iBAAiB,EAAE,OAAO,CAAC,CAAC;QAEhF,0EAA0E;QAC1E,uEAAuE;QACvE,qEAAqE;QACrE,KAAK,MAAM,WAAW,IAAI,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5C,MAAM,IAAI,CAAC,gBAAgB,CAAC,MAAM,EAAE,WAAW,EAAE,SAAS,CAAC,CAAC;QAC9D,CAAC;IACH,CAAC;IAED,iFAAiF;IACzE,gBAAgB,CAAC,IAAY;QACnC,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,4BAA4B,IAAI,sDAAsD;gBACpF,wCAAwC,CAC3C,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAC5B,MAAiB,EACjB,GAA0B,EAC1B,SAA0B;QAE1B,MAAM,YAAY,GAAG,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,WAAW,CAAC;QACjD,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;YACrE,SAAS,EAAE,mCAAmC;YAC9C,iBAAiB,EAAE,EAAE,YAAY,EAAE;SACpC,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,0BAA0B,YAAY,GAAG,EAAE,mBAAmB,CAAC,CAAC;QAE7E,IAAI,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;QAEpC,MAAM,YAAY,CAAC,QAAQ,CACzB,GAAG,EAAE;YACH,MAAM,OAAO,GAAG,qBAAqB,CAAC,GAAG,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YACrE,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,IAAI,YAAY,CAAC;YACxC,MAAM,QAAQ,GAAG,GAAG,CAAC,QAAQ,IAAI,kBAAkB,CAAC;YACpD,MAAM,QAAQ,GAAG;gBACf,KAAK;gBACL,WAAW,EAAE,GAAG,CAAC,WAAW;gBAC5B,QAAQ;gBACR,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,CAAC;gBAC3C,+DAA+D;gBAC/D,mEAAmE;gBACnE,GAAG,CAAC,GAAG,CAAC,SAAS,IAAI,EAAE,SAAS,EAAE,GAAG,CAAC,SAAS,EAAE,CAAC;gBAClD,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;gBAC/C,GAAG,CAAC,GAAG,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,GAAG,CAAC,WAAW,EAAE,CAAC;gBACxD,GAAG,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,CAAC;aACvC,CAAC;YAEF,IAAI,uBAAuB,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC7C,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,GAAG,CAAC,WAAW,EAAE;oBACrD,IAAI,EAAE,GAAG,CAAC,IAAI;oBACd,GAAG,CAAC,GAAG,CAAC,QAAQ,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,CAAC;iBAChD,CAAC,CAAC;gBAEH,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,QAAQ,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrE,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,gBAAgB,CAAC,YAAY,EAAE,GAAG,CAAC,WAAW,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAC5E,OAAO,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,CAAC,CACtB,CAAC;YACJ,CAAC;YAED,MAAM,CAAC,KAAK,CAAC,aAAa,YAAY,4BAA4B,EAAE,mBAAmB,CAAC,CAAC;QAC3F,CAAC,EACD;YACE,SAAS,EAAE,uBAAuB,YAAY,EAAE;YAChD,OAAO,EAAE,mBAAmB;YAC5B,SAAS,EAAE,gBAAgB,CAAC,oBAAoB;YAChD,QAAQ,EAAE,IAAI;SACf,CACF,CAAC;IACJ,CAAC;CACF"}
@@ -3,51 +3,22 @@
3
3
  * Constructs Context (with `uri`), checks inline auth, validates params, formats response.
4
4
  * @module src/mcp-server/resources/utils/resourceHandlerFactory
5
5
  */
6
- import type { InputRequiredResult, ReadResourceResult, ServerContext, ServerNotifier, Variables } from '@modelcontextprotocol/server';
7
- import { type ResourceSubscriptions } from '../../notifications.js';
6
+ import type { InputRequiredResult, ReadResourceResult, ServerContext, Variables } from '@modelcontextprotocol/server';
7
+ import { type HandlerServices } from '../../handlerContext.js';
8
+ import type { NotifierSources } from '../../notifications.js';
8
9
  import type { AnyResourceDefinition } from './resourceDefinition.js';
9
- import type { StorageService } from '../../../storage/core/StorageService.js';
10
- import type { Logger } from '../../../utils/internal/logger.js';
11
- /** Services required by the handler factory to construct Context. */
12
- export interface ResourceHandlerFactoryServices {
13
- /**
14
- * When true, surface `ctx.sessionId` even in stateless HTTP mode (per-request
15
- * generated token). Wired from `createApp({ context: { exposeStatelessSessionId } })`.
16
- * Default false — `ctx.sessionId` is only set when the session has
17
- * request-spanning lifetime (HTTP `stateful` / `auto` mode).
18
- */
19
- exposeStatelessSessionId?: boolean;
20
- logger: Logger;
21
- storage: StorageService;
22
- }
10
+ /** The factory's own contract, shared with the tool factory. */
11
+ export type { HandlerServices } from '../../handlerContext.js';
12
+ export type { NotifierSources } from '../../notifications.js';
23
13
  /**
24
- * Per-server notifier closures bound at registration time, targeting
25
- * `server.send*ListChanged()`.
26
- *
27
- * Split from {@link ResourceHandlerFactoryServices} so each per-request
28
- * McpServer gets its own notifier closures — preventing a concurrent
29
- * registerAll() from overwriting an in-flight handler's notifier target.
30
- *
31
- * The resource handler factory picks a delivery path per era via
32
- * {@link selectNotifiers}, and uses these closures only as a fallback for
33
- * scopes with neither a bus nor a request sender (stdio, test harnesses).
14
+ * Default `resources/read` contents when a definition declares no `format`:
15
+ * a string result is passed through for text MIME types, anything else is
16
+ * pretty-printed JSON. Also the fallback `appResource()` mirrors UI meta into.
34
17
  */
35
- export interface ResourceHandlerNotifiers {
36
- /**
37
- * Publish facade for the modern era's `subscriptions/listen` bus, supplied
38
- * only for `modern` instances. Takes precedence over the request-scoped path:
39
- * on 2026-07-28 the client opts into notification types through its listen
40
- * stream, and only what reaches the bus is filtered against that opt-in
41
- * (#193).
42
- */
43
- bus?: ServerNotifier;
44
- notifyPromptListChanged?: () => void;
45
- notifyResourceListChanged?: () => void;
46
- notifyResourceUpdated?: (uri: string) => void;
47
- notifyToolListChanged?: () => void;
48
- /** Per-connection `resources/subscribe` registry (#354). Legacy era only. */
49
- subscriptions?: ResourceSubscriptions;
50
- }
18
+ export declare function defaultResponseFormatter(result: unknown, meta: {
19
+ uri: URL;
20
+ mimeType: string;
21
+ }): ReadResourceResult['contents'];
51
22
  /**
52
23
  * Creates an MCP resource read handler from a resource definition.
53
24
  * The returned function is compatible with the MCP SDK's resource callback type.
@@ -60,5 +31,5 @@ export interface ResourceHandlerNotifiers {
60
31
  * - Formats response via `format` or JSON default
61
32
  * - Catches errors and re-throws for the SDK
62
33
  */
63
- export declare function createResourceHandler(def: AnyResourceDefinition, services: ResourceHandlerFactoryServices, notifiers: ResourceHandlerNotifiers): (uri: URL, variables: Variables, ctx: ServerContext) => Promise<ReadResourceResult | InputRequiredResult>;
34
+ export declare function createResourceHandler(def: AnyResourceDefinition, services: HandlerServices, notifiers: NotifierSources): (uri: URL, variables: Variables, ctx: ServerContext) => Promise<ReadResourceResult | InputRequiredResult>;
64
35
  //# sourceMappingURL=resourceHandlerFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resourceHandlerFactory.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/utils/resourceHandlerFactory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,SAAS,EACV,MAAM,8BAA8B,CAAC;AAStC,OAAO,EAAE,KAAK,qBAAqB,EAAmB,MAAM,+BAA+B,CAAC;AAC5F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC;AAGhG,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AAGvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAQzD,qEAAqE;AACrE,MAAM,WAAW,8BAA8B;IAC7C;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,cAAc,CAAC;CACzB;AAED;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,wBAAwB;IACvC;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,uBAAuB,CAAC,EAAE,MAAM,IAAI,CAAC;IACrC,yBAAyB,CAAC,EAAE,MAAM,IAAI,CAAC;IACvC,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;IACnC,6EAA6E;IAC7E,aAAa,CAAC,EAAE,qBAAqB,CAAC;CACvC;AA+CD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,qBAAqB,EAC1B,QAAQ,EAAE,8BAA8B,EACxC,SAAS,EAAE,wBAAwB,GAClC,CACD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,aAAa,KACf,OAAO,CAAC,kBAAkB,GAAG,mBAAmB,CAAC,CAuHrD"}
1
+ {"version":3,"file":"resourceHandlerFactory.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/resources/utils/resourceHandlerFactory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,mBAAmB,EACnB,kBAAkB,EAClB,aAAa,EACb,SAAS,EACV,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAEL,KAAK,eAAe,EAGrB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AACrE,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oDAAoD,CAAC;AAWhG,gEAAgE;AAChE,YAAY,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,YAAY,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAiBrE;;;;GAIG;AACH,wBAAgB,wBAAwB,CACtC,MAAM,EAAE,OAAO,EACf,IAAI,EAAE;IAAE,GAAG,EAAE,GAAG,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACnC,kBAAkB,CAAC,UAAU,CAAC,CAShC;AAkBD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,qBAAqB,EAC1B,QAAQ,EAAE,eAAe,EACzB,SAAS,EAAE,eAAe,GACzB,CACD,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,SAAS,EACpB,GAAG,EAAE,aAAa,KACf,OAAO,CAAC,kBAAkB,GAAG,mBAAmB,CAAC,CAsErD"}
@@ -3,12 +3,9 @@
3
3
  * Constructs Context (with `uri`), checks inline auth, validates params, formats response.
4
4
  * @module src/mcp-server/resources/utils/resourceHandlerFactory
5
5
  */
6
- import { config } from '../../../config/index.js';
7
- import { attachTypedFail, createContext } from '../../../core/context.js';
8
- import { createContextInputs, createRequestInput, isInputRequiredSignal, } from '../../inputRequired.js';
9
- import { selectNotifiers } from '../../notifications.js';
6
+ import { buildHandlerContext, handlerParentContext, resolveHandlerRequest, } from '../../handlerContext.js';
7
+ import { isInputRequiredSignal } from '../../inputRequired.js';
10
8
  import { withRequiredScopes } from '../../transports/auth/lib/authUtils.js';
11
- import { resolveSessionMode } from '../../types.js';
12
9
  import { McpError } from '../../../types-global/errors.js';
13
10
  import { ErrorHandler } from '../../../utils/internal/error-handler/errorHandler.js';
14
11
  import { measureResourceExecution } from '../../../utils/internal/performance.js';
@@ -25,7 +22,12 @@ function formatResourceText(result, mimeType) {
25
22
  ? result
26
23
  : JSON.stringify(result, null, 2);
27
24
  }
28
- function defaultResponseFormatter(result, meta) {
25
+ /**
26
+ * Default `resources/read` contents when a definition declares no `format`:
27
+ * a string result is passed through for text MIME types, anything else is
28
+ * pretty-printed JSON. Also the fallback `appResource()` mirrors UI meta into.
29
+ */
30
+ export function defaultResponseFormatter(result, meta) {
29
31
  const text = formatResourceText(result, meta.mimeType);
30
32
  return [
31
33
  {
@@ -66,33 +68,12 @@ export function createResourceHandler(def, services, notifiers) {
66
68
  const formatter = def.format ?? defaultResponseFormatter;
67
69
  const resourceName = def.name ?? def.uriTemplate;
68
70
  return async (uri, variables, serverContext) => {
69
- const mcpReq = serverContext?.mcpReq;
70
- const signal = mcpReq?.signal ?? new AbortController().signal;
71
- const effectiveNotifiers = selectNotifiers(notifiers, mcpReq);
72
- const sdkSessionId = typeof serverContext?.sessionId === 'string' ? serverContext.sessionId : undefined;
73
- // Surface sessionId on `Context` only when it has request-spanning
74
- // lifetime — stateful HTTP (or `auto`, which resolves to stateful for
75
- // HTTP). In stateless mode the SDK still hands us a per-request token;
76
- // pass it through only when the consumer opted in via
77
- // `createApp({ context: { exposeStatelessSessionId: true } })`. Stdio
78
- // gives no sessionId at the SDK layer, so the gate is moot there.
79
- const isStatefulMode = resolveSessionMode(config.mcpSessionMode) === 'stateful';
80
- const handlerSessionId = sdkSessionId && (isStatefulMode || services.exposeStatelessSessionId === true)
81
- ? sdkSessionId
82
- : undefined;
71
+ const request = resolveHandlerRequest(serverContext, services, notifiers);
83
72
  const resourceUri = observableResourceUri(uri);
84
- // Raw `inputParams` is intentionally excluded from the context — it flows
85
- // into the completion log via context spread and can contain caller data.
86
73
  // The URI template already captures the named segments; anything else is
87
74
  // query-string / caller-supplied and belongs in metrics, not logs.
88
- // Log correlation always uses the raw SDK sessionId — useful even in
89
- // stateless mode for tracing the SDK's per-request token through events.
90
- const requestId = mcpReq?.id;
91
75
  const appContext = requestContextService.createRequestContext({
92
- parentContext: {
93
- ...(typeof requestId === 'string' ? { requestId } : {}),
94
- ...(sdkSessionId ? { sessionId: sdkSessionId } : {}),
95
- },
76
+ parentContext: handlerParentContext(request),
96
77
  operation: 'HandleResourceRead',
97
78
  additionalContext: {
98
79
  resourceName,
@@ -111,28 +92,8 @@ export function createResourceHandler(def, services, notifiers) {
111
92
  // output-schema validation and `format()` decide the client-visible
112
93
  // outcome, so a failure in either is a failed read. Closing the span when
113
94
  // the handler returned recorded those as successes (#346).
114
- //
115
- // The context is built from inside the execution span so `ctx.traceId` /
116
- // `ctx.spanId` — and the child logger built from them — name the
117
- // `resource_read:*` span the handler runs in rather than the enclosing
118
- // request span (#296). `attachTypedFail` adds `ctx.fail` when the
119
- // definition declares an error contract; otherwise no-op.
120
95
  return await measureResourceExecution(async (spanContext, recordOutput) => {
121
- const ctx = attachTypedFail(createContext({
122
- appContext: spanContext,
123
- logger: services.logger,
124
- storage: services.storage,
125
- signal,
126
- sessionId: handlerSessionId,
127
- inputs: createContextInputs(mcpReq),
128
- requestInput: createRequestInput(),
129
- ...(mcpReq?.log && { wireLog: mcpReq.log }),
130
- notifyPromptListChanged: effectiveNotifiers.notifyPromptListChanged,
131
- notifyResourceListChanged: effectiveNotifiers.notifyResourceListChanged,
132
- notifyResourceUpdated: effectiveNotifiers.notifyResourceUpdated,
133
- notifyToolListChanged: effectiveNotifiers.notifyToolListChanged,
134
- uri,
135
- }), def.errors);
96
+ const ctx = buildHandlerContext(request, services, spanContext, def.errors, uri);
136
97
  // Handler may return sync or async.
137
98
  const handlerResult = await def.handler(validatedParams, ctx);
138
99
  // The domain value is what `mcp.resource.output_bytes` measures — not
@@ -1 +1 @@
1
- {"version":3,"file":"resourceHandlerFactory.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/utils/resourceHandlerFactory.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resourceHandlerFactory.js","sourceRoot":"","sources":["../../../../src/mcp-server/resources/utils/resourceHandlerFactory.ts"],"names":[],"mappings":"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"}
@@ -5,7 +5,7 @@
5
5
  import type { McpServer, ServerNotifier } from '@modelcontextprotocol/server';
6
6
  import type { ResourceSubscriptions } from '../notifications.js';
7
7
  import type { AnyToolDefinition } from './utils/toolDefinition.js';
8
- import { type HandlerFactoryServices } from './utils/toolHandlerFactory.js';
8
+ import { type HandlerServices } from './utils/toolHandlerFactory.js';
9
9
  /**
10
10
  * Union of all accepted tool definition shapes.
11
11
  *
@@ -14,20 +14,16 @@ import { type HandlerFactoryServices } from './utils/toolHandlerFactory.js';
14
14
  */
15
15
  export type AnyToolDef = AnyToolDefinition;
16
16
  export declare class ToolRegistry {
17
- private toolDefs;
18
- private services?;
17
+ private readonly toolDefs;
18
+ private readonly services;
19
19
  /** Tracks registered tool names to detect duplicates at startup. */
20
20
  private readonly registeredNames;
21
- constructor(toolDefs: AnyToolDef[], services?: HandlerFactoryServices | undefined);
21
+ constructor(toolDefs: AnyToolDef[], services: HandlerServices);
22
22
  /** Registers all tool definitions with the provided McpServer instance. */
23
23
  registerAll(server: McpServer, subscriptions?: ResourceSubscriptions, bus?: ServerNotifier): Promise<void>;
24
24
  /** Throws at startup if a tool with the same name was already registered. */
25
25
  private assertUniqueName;
26
- private deriveTitleFromName;
27
- /**
28
- * Registers a standard tool definition.
29
- * Requires `services` to have been passed to the constructor for Context creation.
30
- */
26
+ /** Registers a standard tool definition. */
31
27
  private registerTool;
32
28
  }
33
29
  //# sourceMappingURL=tool-registration.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-registration.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/tools/tool-registration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAgB,MAAM,8BAA8B,CAAC;AAE5F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAG3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAGL,KAAK,sBAAsB,EAE5B,MAAM,gDAAgD,CAAC;AAMxD;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAE3C,qBAAa,YAAY;IAKrB,OAAO,CAAC,QAAQ;IAChB,OAAO,CAAC,QAAQ,CAAC;IALnB,oEAAoE;IACpE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IAErD,YACU,QAAQ,EAAE,UAAU,EAAE,EACtB,QAAQ,CAAC,EAAE,sBAAsB,YAAA,EACvC;IAEJ,2EAA2E;IAC9D,WAAW,CACtB,MAAM,EAAE,SAAS,EACjB,aAAa,CAAC,EAAE,qBAAqB,EACrC,GAAG,CAAC,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC,CA8Cf;IAED,6EAA6E;IAC7E,OAAO,CAAC,gBAAgB;IAUxB,OAAO,CAAC,mBAAmB;IAI3B;;;OAGG;YACW,YAAY;CAuD3B"}
1
+ {"version":3,"file":"tool-registration.d.ts","sourceRoot":"","sources":["../../../src/mcp-server/tools/tool-registration.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,cAAc,EAAgB,MAAM,8BAA8B,CAAC;AAE5F,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,+BAA+B,CAAC;AAG3E,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AACpF,OAAO,EAGL,KAAK,eAAe,EAErB,MAAM,gDAAgD,CAAC;AAMxD;;;;;GAKG;AACH,MAAM,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAU3C,qBAAa,YAAY;IAKrB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IACzB,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAL3B,oEAAoE;IACpE,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqB;IAErD,YACmB,QAAQ,EAAE,UAAU,EAAE,EACtB,QAAQ,EAAE,eAAe,EACxC;IAEJ,2EAA2E;IAC9D,WAAW,CACtB,MAAM,EAAE,SAAS,EACjB,aAAa,CAAC,EAAE,qBAAqB,EACrC,GAAG,CAAC,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC,CA8Cf;IAED,6EAA6E;IAC7E,OAAO,CAAC,gBAAgB;IAUxB,4CAA4C;YAC9B,YAAY;CAiD3B"}
@@ -5,6 +5,13 @@ import { JsonRpcErrorCode } from '../../types-global/errors.js';
5
5
  import { ErrorHandler } from '../../utils/internal/error-handler/errorHandler.js';
6
6
  import { logger } from '../../utils/internal/logger.js';
7
7
  import { requestContextService } from '../../utils/internal/requestContext.js';
8
+ /** The advertised `title` when a definition declares none: snake_case or kebab-case → Title Case. */
9
+ function deriveTitleFromName(name) {
10
+ return name
11
+ .replace(/[_-]/g, ' ')
12
+ .replace(/\b\w/g, (ch) => ch.toUpperCase())
13
+ .trim();
14
+ }
8
15
  export class ToolRegistry {
9
16
  toolDefs;
10
17
  services;
@@ -61,13 +68,7 @@ export class ToolRegistry {
61
68
  }
62
69
  this.registeredNames.add(name);
63
70
  }
64
- deriveTitleFromName(name) {
65
- return name.replace(/_/g, ' ').replace(/\b\w/g, (char) => char.toUpperCase());
66
- }
67
- /**
68
- * Registers a standard tool definition.
69
- * Requires `services` to have been passed to the constructor for Context creation.
70
- */
71
+ /** Registers a standard tool definition. */
71
72
  async registerTool(server, tool, notifiers) {
72
73
  const registrationContext = requestContextService.createRequestContext({
73
74
  operation: 'ToolRegistry.registerTool',
@@ -76,11 +77,8 @@ export class ToolRegistry {
76
77
  logger.debug(`Registering tool: '${tool.name}'`, registrationContext);
77
78
  this.assertUniqueName(tool.name);
78
79
  await ErrorHandler.tryCatch(() => {
79
- if (!this.services) {
80
- throw new Error(`Cannot register tool '${tool.name}': HandlerFactoryServices not provided to ToolRegistry`);
81
- }
82
80
  const handler = createToolHandler(tool, this.services, notifiers);
83
- const title = tool.title ?? tool.annotations?.title ?? this.deriveTitleFromName(tool.name);
81
+ const title = tool.title ?? tool.annotations?.title ?? deriveTitleFromName(tool.name);
84
82
  // Advertised verbatim; the same schema rejects the same arguments one
85
83
  // layer down, where a rejection can carry the framework's structured
86
84
  // error envelope (#377). The SDK reads it through `~standard` like any
@@ -1 +1 @@
1
- {"version":3,"file":"tool-registration.js","sourceRoot":"","sources":["../../../src/mcp-server/tools/tool-registration.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iDAAiD,CAAC;AACvF,OAAO,EAAE,mBAAmB,EAAE,MAAM,2CAA2C,CAAC;AAEhF,OAAO,EACL,sBAAsB,EACtB,iBAAiB,GAGlB,MAAM,gDAAgD,CAAC;AACxD,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,gDAAgD,CAAC;AAC9E,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AACpD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAU3E,MAAM,OAAO,YAAY;IAKb,QAAQ;IACR,QAAQ;IALlB,oEAAoE;IACnD,eAAe,GAAG,IAAI,GAAG,EAAU,CAAC;IAErD,YACU,QAAsB,EACtB,QAAiC;wBADjC,QAAQ;wBACR,QAAQ;IACf,CAAC;IAEJ,2EAA2E;IACpE,KAAK,CAAC,WAAW,CACtB,MAAiB,EACjB,aAAqC,EACrC,GAAoB;QAEpB,sEAAsE;QACtE,sDAAsD;QACtD,IAAI,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;QAE7B,4EAA4E;QAC5E,0EAA0E;QAC1E,yEAAyE;QACzE,mEAAmE;QACnE,MAAM,SAAS,GAAqB;YAClC,uBAAuB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,qBAAqB,EAAE;YAC7D,yBAAyB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,uBAAuB,EAAE;YACjE,qBAAqB,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,mBAAmB,EAAE;YACzD,GAAG,CAAC,aAAa,IAAI,EAAE,aAAa,EAAE,CAAC;YACvC,GAAG,CAAC,GAAG,IAAI,EAAE,GAAG,EAAE,CAAC;SACpB,CAAC;QAEF,MAAM,OAAO,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;YACzD,SAAS,EAAE,0BAA0B;SACtC,CAAC,CAAC;QAEH,MAAM,KAAK,GAAwB,EAAE,CAAC;QACtC,IAAI,aAAa,GAAG,CAAC,CAAC;QAEtB,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAChC,MAAM,QAAQ,GAAG,mBAAmB,CAAC,GAAG,CAAC,CAAC;YAC1C,IAAI,QAAQ,EAAE,CAAC;gBACb,aAAa,EAAE,CAAC;gBAChB,MAAM,CAAC,KAAK,CACV,gDAAgD,GAAG,CAAC,IAAI,MAAM,QAAQ,CAAC,MAAM,EAAE,EAC/E,OAAO,CACR,CAAC;gBACF,SAAS;YACX,CAAC;YACD,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;QAED,MAAM,YAAY,GAAG,aAAa,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,aAAa,qBAAqB,CAAC,CAAC,CAAC,EAAE,CAAC;QACtF,MAAM,CAAC,KAAK,CAAC,eAAe,KAAK,CAAC,MAAM,WAAW,YAAY,KAAK,EAAE,OAAO,CAAC,CAAC;QAE/E,2EAA2E;QAC3E,yEAAyE;QACzE,yDAAyD;QACzD,KAAK,MAAM,OAAO,IAAI,KAAK,EAAE,CAAC;YAC5B,MAAM,IAAI,CAAC,YAAY,CAAC,MAAM,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,6EAA6E;IACrE,gBAAgB,CAAC,IAAY;QACnC,IAAI,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YACnC,MAAM,IAAI,KAAK,CACb,wBAAwB,IAAI,kDAAkD;gBAC5E,oCAAoC,CACvC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC;IAEO,mBAAmB,CAAC,IAAY;QACtC,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IAChF,CAAC;IAED;;;OAGG;IACK,KAAK,CAAC,YAAY,CACxB,MAAiB,EACjB,IAAuB,EACvB,SAA2B;QAE3B,MAAM,mBAAmB,GAAG,qBAAqB,CAAC,oBAAoB,CAAC;YACrE,SAAS,EAAE,2BAA2B;YACtC,iBAAiB,EAAE,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,EAAE;SAC3C,CAAC,CAAC;QAEH,MAAM,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,IAAI,GAAG,EAAE,mBAAmB,CAAC,CAAC;QAEtE,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEjC,MAAM,YAAY,CAAC,QAAQ,CACzB,GAAG,EAAE;YACH,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;gBACnB,MAAM,IAAI,KAAK,CACb,yBAAyB,IAAI,CAAC,IAAI,wDAAwD,CAC3F,CAAC;YACJ,CAAC;YAED,MAAM,OAAO,GAAG,iBAAiB,CAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;YAClE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,WAAW,EAAE,KAAK,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAE3F,sEAAsE;YACtE,qEAAqE;YACrE,uEAAuE;YACvE,yDAAyD;YACzD,MAAM,WAAW,GAAG,oBAAoB,CAAC,IAAI,CAAC,KAAK,CAAiC,CAAC;YAErF,sFAAsF;YACtF,MAAM,CAAC,YAAY,CACjB,IAAI,CAAC,IAAI,EACT;gBACE,KAAK;gBACL,WAAW,EAAE,IAAI,CAAC,WAAW;gBAC7B,WAAW;gBACX,YAAY,EAAE,sBAAsB,CAAC,IAAI,CAAC;gBAC1C,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,CAAC;gBAC1D,GAAG,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC;aACzC,EACD,OAA0C,CAC3C,CAAC;YAEF,MAAM,CAAC,KAAK,CAAC,SAAS,IAAI,CAAC,IAAI,4BAA4B,EAAE,mBAAmB,CAAC,CAAC;QACpF,CAAC,EACD;YACE,SAAS,EAAE,mBAAmB,IAAI,CAAC,IAAI,EAAE;YACzC,OAAO,EAAE,mBAAmB;YAC5B,SAAS,EAAE,gBAAgB,CAAC,oBAAoB;YAChD,QAAQ,EAAE,IAAI;SACf,CACF,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"tool-registration.js","sourceRoot":"","sources":["../../../src/mcp-server/tools/tool-registration.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,27 @@
7
7
  * @module src/mcp-server/tools/utils/schemaShape
8
8
  */
9
9
  import type { ZodDiscriminatedUnion, ZodObject, ZodRawShape } from 'zod';
10
+ /**
11
+ * The Zod 4 definition fields the framework reads off a schema without going
12
+ * through the class API: the `type` tag every schema carries, plus the
13
+ * per-type payload (`shape`, `options`, `element`, …). Everything is optional
14
+ * because the linter also sees partial and hostile objects.
15
+ */
16
+ export interface ZodDef {
17
+ checks?: unknown[];
18
+ discriminator?: unknown;
19
+ element?: unknown;
20
+ entries?: Record<string, unknown>;
21
+ innerType?: unknown;
22
+ items?: unknown[];
23
+ options?: unknown[];
24
+ shape?: Record<string, unknown>;
25
+ type?: string;
26
+ values?: unknown[];
27
+ valueType?: unknown;
28
+ }
29
+ /** Reads `_zod.def` from any value; `undefined` when it is not a Zod 4 schema. */
30
+ export declare function zodDef(value: unknown): ZodDef | undefined;
10
31
  /** True when `value` is a `z.object()`. */
11
32
  export declare function isZodObjectSchema(value: unknown): value is ZodObject<ZodRawShape>;
12
33
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"schemaShape.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/schemaShape.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAOzE,2CAA2C;AAC3C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAAC,WAAW,CAAC,CAGjF;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,qBAAqB,CAAC,SAAS,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAInE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,SAAS,CAAC,WAAW,CAAC,EAAE,CAQhF"}
1
+ {"version":3,"file":"schemaShape.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/schemaShape.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,qBAAqB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,KAAK,CAAC;AAEzE;;;;;GAKG;AACH,MAAM,WAAW,MAAM;IACrB,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,EAAE,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,OAAO,EAAE,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,kFAAkF;AAClF,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAGzD;AAED,2CAA2C;AAC3C,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,SAAS,CAAC,WAAW,CAAC,CAEjF;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,OAAO,GACb,KAAK,IAAI,qBAAqB,CAAC,SAAS,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAGnE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,OAAO,GAAG,SAAS,SAAS,CAAC,WAAW,CAAC,EAAE,CAQhF"}
@@ -6,11 +6,15 @@
6
6
  * server manifest, and the linter agree on what a union root is.
7
7
  * @module src/mcp-server/tools/utils/schemaShape
8
8
  */
9
+ /** Reads `_zod.def` from any value; `undefined` when it is not a Zod 4 schema. */
10
+ export function zodDef(value) {
11
+ if (!value || typeof value !== 'object')
12
+ return undefined;
13
+ return value._zod?.def;
14
+ }
9
15
  /** True when `value` is a `z.object()`. */
10
16
  export function isZodObjectSchema(value) {
11
- if (!value || typeof value !== 'object')
12
- return false;
13
- return value._zod?.def?.type === 'object';
17
+ return zodDef(value)?.type === 'object';
14
18
  }
15
19
  /**
16
20
  * True when `value` is a `z.discriminatedUnion()`.
@@ -21,9 +25,7 @@ export function isZodObjectSchema(value) {
21
25
  * choose a branch by, and every variant's `required` list would apply at once.
22
26
  */
23
27
  export function isDiscriminatedUnionSchema(value) {
24
- if (!value || typeof value !== 'object')
25
- return false;
26
- const def = value._zod?.def;
28
+ const def = zodDef(value);
27
29
  return def?.type === 'union' && typeof def.discriminator === 'string';
28
30
  }
29
31
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"schemaShape.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/schemaShape.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AASH,2CAA2C;AAC3C,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,OAAQ,KAAsB,CAAC,IAAI,EAAE,GAAG,EAAE,IAAI,KAAK,QAAQ,CAAC;AAC9D,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAc;IAEd,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAC;IACtD,MAAM,GAAG,GAAI,KAAsB,CAAC,IAAI,EAAE,GAAG,CAAC;IAC9C,OAAO,GAAG,EAAE,IAAI,KAAK,OAAO,IAAI,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ,CAAC;AACxE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,MAAe;IAC3C,IAAI,0BAA0B,CAAC,MAAM,CAAC,EAAE,CAAC;QACvC,MAAM,OAAO,GAAI,MAAgC,CAAC,OAAO,CAAC;QAC1D,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YAC3B,CAAC,CAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAA8B;YACjE,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IACD,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"schemaShape.js","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/schemaShape.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAwBH,kFAAkF;AAClF,MAAM,UAAU,MAAM,CAAC,KAAc;IACnC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IAC1D,OAAQ,KAAqC,CAAC,IAAI,EAAE,GAAG,CAAC;AAC1D,CAAC;AAED,2CAA2C;AAC3C,MAAM,UAAU,iBAAiB,CAAC,KAAc;IAC9C,OAAO,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,KAAK,QAAQ,CAAC;AAC1C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAAc;IAEd,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;IAC1B,OAAO,GAAG,EAAE,IAAI,KAAK,OAAO,IAAI,OAAO,GAAG,CAAC,aAAa,KAAK,QAAQ,CAAC;AACxE,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,MAAe;IAC3C,IAAI,0BAA0B,CAAC,MAAM,CAAC,EAAE,CAAC;QACvC,MAAM,OAAO,GAAI,MAAgC,CAAC,OAAO,CAAC;QAC1D,OAAO,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;YAC3B,CAAC,CAAE,OAAO,CAAC,MAAM,CAAC,iBAAiB,CAA8B;YACjE,CAAC,CAAC,EAAE,CAAC;IACT,CAAC;IACD,OAAO,iBAAiB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;AACnD,CAAC"}
@@ -3,55 +3,27 @@
3
3
  * Constructs Context, checks inline auth, measures execution, formats response.
4
4
  * @module src/mcp-server/tools/utils/toolHandlerFactory
5
5
  */
6
- import type { CallToolResult, ContentBlock, InputRequiredResult, ServerContext, ServerNotifier } from '@modelcontextprotocol/server';
6
+ import type { CallToolResult, ContentBlock, InputRequiredResult, ServerContext } from '@modelcontextprotocol/server';
7
7
  import { ZodError, type ZodObject, type ZodRawShape } from 'zod';
8
8
  import type { Context } from '../../../core/context.js';
9
- import { type ResourceSubscriptions } from '../../notifications.js';
10
- import type { StorageService } from '../../../storage/core/StorageService.js';
9
+ import { type HandlerServices } from '../../handlerContext.js';
10
+ import type { NotifierSources } from '../../notifications.js';
11
11
  import { JsonRpcErrorCode } from '../../../types-global/errors.js';
12
- import type { Logger } from '../../../utils/internal/logger.js';
13
12
  import type { AnyToolDefinition } from './toolDefinition.js';
14
- /** Services required by the handler factory to construct Context. */
15
- export interface HandlerFactoryServices {
16
- /**
17
- * When true, surface `ctx.sessionId` even in stateless HTTP mode (per-request
18
- * generated token). Wired from `createApp({ context: { exposeStatelessSessionId } })`.
19
- * Default false — `ctx.sessionId` is only set when the session has
20
- * request-spanning lifetime (HTTP `stateful` / `auto` mode).
21
- */
22
- exposeStatelessSessionId?: boolean;
23
- logger: Logger;
24
- storage: StorageService;
25
- }
13
+ /** The factory's own contract, shared with the resource factory. */
14
+ export type { HandlerServices } from '../../handlerContext.js';
15
+ export type { NotifierSources } from '../../notifications.js';
26
16
  /**
27
- * Per-server notifier closures bound at registration time, targeting
28
- * `server.send*ListChanged()`.
17
+ * Renders `content[]` for a validated tool result: `format()` (or the JSON
18
+ * default) over the domain payload, with any blocks collected via
19
+ * `ctx.content` (image/audio bytes) prepended. Collected blocks ride
20
+ * `content[]` only — never `structuredContent` — so a handler can surface
21
+ * media for the model without the base64 duplicating into the typed output.
29
22
  *
30
- * Split from {@link HandlerFactoryServices} so each per-request McpServer gets
31
- * its own notifier closures — preventing a concurrent registerAll() from
32
- * overwriting an in-flight handler's notifier target (and potentially
33
- * notifying the wrong server).
34
- *
35
- * The handler factory picks a delivery path per era via
36
- * {@link selectNotifiers}, and uses these closures only as a fallback for
37
- * scopes with neither a bus nor a request sender (stdio, test harnesses).
23
+ * A formatter failure is isolated from handler failures so it classifies as
24
+ * an internal error, carrying the formatter's own error as `cause`.
38
25
  */
39
- export interface HandlerNotifiers {
40
- /**
41
- * Publish facade for the modern era's `subscriptions/listen` bus, supplied
42
- * only for `modern` instances. Takes precedence over the request-scoped path:
43
- * on 2026-07-28 the client opts into notification types through its listen
44
- * stream, and only what reaches the bus is filtered against that opt-in
45
- * (#193).
46
- */
47
- bus?: ServerNotifier;
48
- notifyPromptListChanged?: () => void;
49
- notifyResourceListChanged?: () => void;
50
- notifyResourceUpdated?: (uri: string) => void;
51
- notifyToolListChanged?: () => void;
52
- /** Per-connection `resources/subscribe` registry (#354). Legacy era only. */
53
- subscriptions?: ResourceSubscriptions;
54
- }
26
+ export declare function renderToolContent(def: AnyToolDefinition, validatedOutput: Record<string, unknown>, ctx: Context): ContentBlock[];
55
27
  /**
56
28
  * Shapes a `CallToolResult` for a tool error response with parity across both
57
29
  * surfaces clients forward to the agent:
@@ -153,5 +125,5 @@ export declare function buildToolSuccessResult(def: AnyToolDefinition, ctx: Cont
153
125
  * - Formats response via `format` or JSON default
154
126
  * - Catches errors and returns `isError: true`
155
127
  */
156
- export declare function createToolHandler(def: AnyToolDefinition, services: HandlerFactoryServices, notifiers: HandlerNotifiers): (input: Record<string, unknown>, ctx: ServerContext) => Promise<CallToolResult | InputRequiredResult>;
128
+ export declare function createToolHandler(def: AnyToolDefinition, services: HandlerServices, notifiers: NotifierSources): (input: Record<string, unknown>, ctx: ServerContext) => Promise<CallToolResult | InputRequiredResult>;
157
129
  //# sourceMappingURL=toolHandlerFactory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"toolHandlerFactory.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/toolHandlerFactory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,cAAc,EACf,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,QAAQ,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAmB,MAAM,KAAK,CAAC;AAGlF,OAAO,KAAK,EAAE,OAAO,EAAmB,MAAM,mBAAmB,CAAC;AAYlE,OAAO,EAAE,KAAK,qBAAqB,EAAmB,MAAM,+BAA+B,CAAC;AAG5F,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAY,MAAM,0BAA0B,CAAC;AAEtE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAIzD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAM7D,qEAAqE;AACrE,MAAM,WAAW,sBAAsB;IACrC;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,cAAc,CAAC;CACzB;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,gBAAgB;IAC/B;;;;;;OAMG;IACH,GAAG,CAAC,EAAE,cAAc,CAAC;IACrB,uBAAuB,CAAC,EAAE,MAAM,IAAI,CAAC;IACrC,yBAAyB,CAAC,EAAE,MAAM,IAAI,CAAC;IACvC,qBAAqB,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAC;IAC9C,qBAAqB,CAAC,EAAE,MAAM,IAAI,CAAC;IACnC,6EAA6E;IAC7E,aAAa,CAAC,EAAE,qBAAqB,CAAC;CACvC;AAyBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACxC,cAAc,CAchB;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,MAAM,CAStF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAO9E;AAMD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,iBAAiB,GAAG,SAAS,CAAC,WAAW,CAAC,CAGpF;AAmDD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,iBAAiB,GAAG,SAAS,CAAC,WAAW,CAAC,CAkCrF;AA0GD;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,iBAAiB,EACtB,GAAG,EAAE,OAAO,EACZ,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACxC,aAAa,EAAE,YAAY,EAAE,GAC5B,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,mBAAmB,CAAC,CAkBvD;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,iBAAiB,EACtB,QAAQ,EAAE,sBAAsB,EAChC,SAAS,EAAE,gBAAgB,GAC1B,CACD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,GAAG,EAAE,aAAa,KACf,OAAO,CAAC,cAAc,GAAG,mBAAmB,CAAC,CA+JjD"}
1
+ {"version":3,"file":"toolHandlerFactory.d.ts","sourceRoot":"","sources":["../../../../src/mcp-server/tools/utils/toolHandlerFactory.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,cAAc,EACd,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACd,MAAM,8BAA8B,CAAC;AAEtC,OAAO,EAAE,QAAQ,EAAE,KAAK,SAAS,EAAE,KAAK,WAAW,EAAmB,MAAM,KAAK,CAAC;AAElF,OAAO,KAAK,EAAE,OAAO,EAAmB,MAAM,mBAAmB,CAAC;AAElE,OAAO,EAEL,KAAK,eAAe,EAGrB,MAAM,gCAAgC,CAAC;AAExC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAErE,OAAO,EAAiB,gBAAgB,EAAY,MAAM,0BAA0B,CAAC;AAKrF,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAM7D,oEAAoE;AACpE,YAAY,EAAE,eAAe,EAAE,MAAM,gCAAgC,CAAC;AACtE,YAAY,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAUrE;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,iBAAiB,EACtB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACxC,GAAG,EAAE,OAAO,GACX,YAAY,EAAE,CAahB;AAiBD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,gBAAgB,EACtB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,GACxC,cAAc,CAchB;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,MAAM,CAStF;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,OAAO,GAAG,cAAc,CAO9E;AAMD;;;;;;;;GAQG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,iBAAiB,GAAG,SAAS,CAAC,WAAW,CAAC,CAGpF;AAmDD;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,iBAAiB,GAAG,SAAS,CAAC,WAAW,CAAC,CAkCrF;AA0GD;;;;;;;;;;;;GAYG;AACH,wBAAgB,sBAAsB,CACpC,GAAG,EAAE,iBAAiB,EACtB,GAAG,EAAE,OAAO,EACZ,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACxC,aAAa,EAAE,YAAY,EAAE,GAC5B,IAAI,CAAC,cAAc,EAAE,SAAS,GAAG,mBAAmB,CAAC,CAkBvD;AAMD;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,GAAG,EAAE,iBAAiB,EACtB,QAAQ,EAAE,eAAe,EACzB,SAAS,EAAE,eAAe,GACzB,CACD,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC9B,GAAG,EAAE,aAAa,KACf,OAAO,CAAC,cAAc,GAAG,mBAAmB,CAAC,CAoFjD"}