@noodleseed/one 0.95.2 → 0.96.1

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 (423) hide show
  1. package/dist/commands/author-loop.d.ts.map +1 -1
  2. package/dist/commands/author-loop.js +3 -2
  3. package/dist/commands/author-loop.js.map +1 -1
  4. package/dist/commands/connect-oauth.d.ts.map +1 -1
  5. package/dist/commands/connect-oauth.js +1 -0
  6. package/dist/commands/connect-oauth.js.map +1 -1
  7. package/dist/dev.d.ts +6 -1
  8. package/dist/dev.d.ts.map +1 -1
  9. package/dist/dev.js +120 -34
  10. package/dist/dev.js.map +1 -1
  11. package/dist/device-login.js +1 -0
  12. package/dist/device-login.js.map +1 -1
  13. package/dist/devtools-preview.d.ts.map +1 -1
  14. package/dist/devtools-preview.js +82 -8
  15. package/dist/devtools-preview.js.map +1 -1
  16. package/dist/plugin-mode/build-readiness-server.d.ts +1 -1
  17. package/dist/plugin-mode/build-readiness-server.d.ts.map +1 -1
  18. package/dist/plugin-mode/build-readiness-server.js +3 -4
  19. package/dist/plugin-mode/build-readiness-server.js.map +1 -1
  20. package/dist/plugin-mode/plugin-operation-contract.d.ts +1 -1
  21. package/dist/plugin-mode/plugin-operation-contract.d.ts.map +1 -1
  22. package/dist/plugin-mode/plugin-operation-tools.d.ts +1 -2
  23. package/dist/plugin-mode/plugin-operation-tools.d.ts.map +1 -1
  24. package/dist/plugin-mode/plugin-operation-tools.js.map +1 -1
  25. package/node_modules/@modelcontextprotocol/client/LICENSE +216 -0
  26. package/node_modules/@modelcontextprotocol/client/README.md +26 -0
  27. package/node_modules/@modelcontextprotocol/client/dist/ajvProvider-1b6pVpkg.cjs +7531 -0
  28. package/node_modules/@modelcontextprotocol/client/dist/ajvProvider-1b6pVpkg.cjs.map +1 -0
  29. package/node_modules/@modelcontextprotocol/client/dist/ajvProvider-97rDpkRx.mjs +7514 -0
  30. package/node_modules/@modelcontextprotocol/client/dist/ajvProvider-97rDpkRx.mjs.map +1 -0
  31. package/node_modules/@modelcontextprotocol/client/dist/ajvProvider-FOQRM7up.d.cts +1071 -0
  32. package/node_modules/@modelcontextprotocol/client/dist/ajvProvider-FOQRM7up.d.cts.map +1 -0
  33. package/node_modules/@modelcontextprotocol/client/dist/ajvProvider-INpkxUi1.d.mts +1071 -0
  34. package/node_modules/@modelcontextprotocol/client/dist/ajvProvider-INpkxUi1.d.mts.map +1 -0
  35. package/node_modules/@modelcontextprotocol/client/dist/cfWorkerProvider-B3ZJEoRM.d.mts +74 -0
  36. package/node_modules/@modelcontextprotocol/client/dist/cfWorkerProvider-B3ZJEoRM.d.mts.map +1 -0
  37. package/node_modules/@modelcontextprotocol/client/dist/cfWorkerProvider-B3dvjU3F.cjs +986 -0
  38. package/node_modules/@modelcontextprotocol/client/dist/cfWorkerProvider-B3dvjU3F.cjs.map +1 -0
  39. package/node_modules/@modelcontextprotocol/client/dist/cfWorkerProvider-BylNJ1R5.mjs +981 -0
  40. package/node_modules/@modelcontextprotocol/client/dist/cfWorkerProvider-BylNJ1R5.mjs.map +1 -0
  41. package/node_modules/@modelcontextprotocol/client/dist/cfWorkerProvider-doTkZbTr.d.cts +74 -0
  42. package/node_modules/@modelcontextprotocol/client/dist/cfWorkerProvider-doTkZbTr.d.cts.map +1 -0
  43. package/node_modules/@modelcontextprotocol/client/dist/chunk-Bnu9O96Y.cjs +60 -0
  44. package/node_modules/@modelcontextprotocol/client/dist/chunk-Br0eD_fh.mjs +42 -0
  45. package/node_modules/@modelcontextprotocol/client/dist/dialects-BGO_ZrYF.cjs +46 -0
  46. package/node_modules/@modelcontextprotocol/client/dist/dialects-BGO_ZrYF.cjs.map +1 -0
  47. package/node_modules/@modelcontextprotocol/client/dist/dialects-BOhdv1Fc.mjs +34 -0
  48. package/node_modules/@modelcontextprotocol/client/dist/dialects-BOhdv1Fc.mjs.map +1 -0
  49. package/node_modules/@modelcontextprotocol/client/dist/index-CHhhk6PQ.d.cts +2526 -0
  50. package/node_modules/@modelcontextprotocol/client/dist/index-CHhhk6PQ.d.cts.map +1 -0
  51. package/node_modules/@modelcontextprotocol/client/dist/index-D4xIIEF6.d.mts +2523 -0
  52. package/node_modules/@modelcontextprotocol/client/dist/index-D4xIIEF6.d.mts.map +1 -0
  53. package/node_modules/@modelcontextprotocol/client/dist/index.cjs +5690 -0
  54. package/node_modules/@modelcontextprotocol/client/dist/index.cjs.map +1 -0
  55. package/node_modules/@modelcontextprotocol/client/dist/index.d.cts +3252 -0
  56. package/node_modules/@modelcontextprotocol/client/dist/index.d.cts.map +1 -0
  57. package/node_modules/@modelcontextprotocol/client/dist/index.d.mts +3252 -0
  58. package/node_modules/@modelcontextprotocol/client/dist/index.d.mts.map +1 -0
  59. package/node_modules/@modelcontextprotocol/client/dist/index.mjs +5481 -0
  60. package/node_modules/@modelcontextprotocol/client/dist/index.mjs.map +1 -0
  61. package/node_modules/@modelcontextprotocol/client/dist/shimsBrowser.cjs +14 -0
  62. package/node_modules/@modelcontextprotocol/client/dist/shimsBrowser.cjs.map +1 -0
  63. package/node_modules/@modelcontextprotocol/client/dist/shimsBrowser.d.cts +13 -0
  64. package/node_modules/@modelcontextprotocol/client/dist/shimsBrowser.d.cts.map +1 -0
  65. package/node_modules/@modelcontextprotocol/client/dist/shimsBrowser.d.mts +13 -0
  66. package/node_modules/@modelcontextprotocol/client/dist/shimsBrowser.d.mts.map +1 -0
  67. package/node_modules/@modelcontextprotocol/client/dist/shimsBrowser.mjs +13 -0
  68. package/node_modules/@modelcontextprotocol/client/dist/shimsBrowser.mjs.map +1 -0
  69. package/node_modules/@modelcontextprotocol/client/dist/shimsNode.cjs +14 -0
  70. package/node_modules/@modelcontextprotocol/client/dist/shimsNode.cjs.map +1 -0
  71. package/node_modules/@modelcontextprotocol/client/dist/shimsNode.d.cts +13 -0
  72. package/node_modules/@modelcontextprotocol/client/dist/shimsNode.d.cts.map +1 -0
  73. package/node_modules/@modelcontextprotocol/client/dist/shimsNode.d.mts +13 -0
  74. package/node_modules/@modelcontextprotocol/client/dist/shimsNode.d.mts.map +1 -0
  75. package/node_modules/@modelcontextprotocol/client/dist/shimsNode.mjs +13 -0
  76. package/node_modules/@modelcontextprotocol/client/dist/shimsNode.mjs.map +1 -0
  77. package/node_modules/@modelcontextprotocol/client/dist/shimsWorkerd.cjs +21 -0
  78. package/node_modules/@modelcontextprotocol/client/dist/shimsWorkerd.cjs.map +1 -0
  79. package/node_modules/@modelcontextprotocol/client/dist/shimsWorkerd.d.cts +13 -0
  80. package/node_modules/@modelcontextprotocol/client/dist/shimsWorkerd.d.cts.map +1 -0
  81. package/node_modules/@modelcontextprotocol/client/dist/shimsWorkerd.d.mts +13 -0
  82. package/node_modules/@modelcontextprotocol/client/dist/shimsWorkerd.d.mts.map +1 -0
  83. package/node_modules/@modelcontextprotocol/client/dist/shimsWorkerd.mjs +20 -0
  84. package/node_modules/@modelcontextprotocol/client/dist/shimsWorkerd.mjs.map +1 -0
  85. package/node_modules/@modelcontextprotocol/client/dist/src-D_zzAWoS.mjs +7063 -0
  86. package/node_modules/@modelcontextprotocol/client/dist/src-D_zzAWoS.mjs.map +1 -0
  87. package/node_modules/@modelcontextprotocol/client/dist/src-NAgB4Mp8.cjs +7431 -0
  88. package/node_modules/@modelcontextprotocol/client/dist/src-NAgB4Mp8.cjs.map +1 -0
  89. package/node_modules/@modelcontextprotocol/client/dist/stdio.cjs +217 -0
  90. package/node_modules/@modelcontextprotocol/client/dist/stdio.cjs.map +1 -0
  91. package/node_modules/@modelcontextprotocol/client/dist/stdio.d.cts +96 -0
  92. package/node_modules/@modelcontextprotocol/client/dist/stdio.d.cts.map +1 -0
  93. package/node_modules/@modelcontextprotocol/client/dist/stdio.d.mts +96 -0
  94. package/node_modules/@modelcontextprotocol/client/dist/stdio.d.mts.map +1 -0
  95. package/node_modules/@modelcontextprotocol/client/dist/stdio.mjs +212 -0
  96. package/node_modules/@modelcontextprotocol/client/dist/stdio.mjs.map +1 -0
  97. package/node_modules/@modelcontextprotocol/client/dist/types-DsbMXNFL.d.cts +1099 -0
  98. package/node_modules/@modelcontextprotocol/client/dist/types-DsbMXNFL.d.cts.map +1 -0
  99. package/node_modules/@modelcontextprotocol/client/dist/types-mS0yxCL0.d.mts +1099 -0
  100. package/node_modules/@modelcontextprotocol/client/dist/types-mS0yxCL0.d.mts.map +1 -0
  101. package/node_modules/@modelcontextprotocol/client/dist/validators/ajv.cjs +5 -0
  102. package/node_modules/@modelcontextprotocol/client/dist/validators/ajv.d.cts +2 -0
  103. package/node_modules/@modelcontextprotocol/client/dist/validators/ajv.d.mts +2 -0
  104. package/node_modules/@modelcontextprotocol/client/dist/validators/ajv.mjs +3 -0
  105. package/node_modules/@modelcontextprotocol/client/dist/validators/cfWorker.cjs +3 -0
  106. package/node_modules/@modelcontextprotocol/client/dist/validators/cfWorker.d.cts +2 -0
  107. package/node_modules/@modelcontextprotocol/client/dist/validators/cfWorker.d.mts +2 -0
  108. package/node_modules/@modelcontextprotocol/client/dist/validators/cfWorker.mjs +3 -0
  109. package/node_modules/@modelcontextprotocol/client/package.json +166 -0
  110. package/node_modules/@modelcontextprotocol/core/LICENSE +216 -0
  111. package/node_modules/@modelcontextprotocol/core/README.md +40 -0
  112. package/node_modules/@modelcontextprotocol/core/dist/auth-BWdKR39I.d.mts +8501 -0
  113. package/node_modules/@modelcontextprotocol/core/dist/auth-BWdKR39I.d.mts.map +1 -0
  114. package/node_modules/@modelcontextprotocol/core/dist/auth-CUe6YdwF.mjs +1678 -0
  115. package/node_modules/@modelcontextprotocol/core/dist/auth-CUe6YdwF.mjs.map +1 -0
  116. package/node_modules/@modelcontextprotocol/core/dist/auth-CfDMXiII.cjs +2899 -0
  117. package/node_modules/@modelcontextprotocol/core/dist/auth-CfDMXiII.cjs.map +1 -0
  118. package/node_modules/@modelcontextprotocol/core/dist/auth-hYtaIUZm.d.cts +8501 -0
  119. package/node_modules/@modelcontextprotocol/core/dist/auth-hYtaIUZm.d.cts.map +1 -0
  120. package/node_modules/@modelcontextprotocol/core/dist/index.cjs +175 -0
  121. package/node_modules/@modelcontextprotocol/core/dist/index.d.cts +2 -0
  122. package/node_modules/@modelcontextprotocol/core/dist/index.d.mts +2 -0
  123. package/node_modules/@modelcontextprotocol/core/dist/index.mjs +3 -0
  124. package/node_modules/@modelcontextprotocol/core/dist/internal.cjs +201 -0
  125. package/node_modules/@modelcontextprotocol/core/dist/internal.d.cts +99 -0
  126. package/node_modules/@modelcontextprotocol/core/dist/internal.d.cts.map +1 -0
  127. package/node_modules/@modelcontextprotocol/core/dist/internal.d.mts +99 -0
  128. package/node_modules/@modelcontextprotocol/core/dist/internal.d.mts.map +1 -0
  129. package/node_modules/@modelcontextprotocol/core/dist/internal.mjs +3 -0
  130. package/node_modules/@modelcontextprotocol/core/package.json +85 -0
  131. package/node_modules/@modelcontextprotocol/server/LICENSE +216 -0
  132. package/node_modules/@modelcontextprotocol/server/README.md +30 -0
  133. package/node_modules/@modelcontextprotocol/server/dist/ajvProvider-CEoC__sr.mjs +7514 -0
  134. package/node_modules/@modelcontextprotocol/server/dist/ajvProvider-CEoC__sr.mjs.map +1 -0
  135. package/node_modules/@modelcontextprotocol/server/dist/ajvProvider-CgI-5L6O.d.mts +1071 -0
  136. package/node_modules/@modelcontextprotocol/server/dist/ajvProvider-CgI-5L6O.d.mts.map +1 -0
  137. package/node_modules/@modelcontextprotocol/server/dist/ajvProvider-FOQRM7up.d.cts +1071 -0
  138. package/node_modules/@modelcontextprotocol/server/dist/ajvProvider-FOQRM7up.d.cts.map +1 -0
  139. package/node_modules/@modelcontextprotocol/server/dist/ajvProvider-ZaoO9afR.cjs +7531 -0
  140. package/node_modules/@modelcontextprotocol/server/dist/ajvProvider-ZaoO9afR.cjs.map +1 -0
  141. package/node_modules/@modelcontextprotocol/server/dist/cfWorkerProvider-BwbPzsdI.cjs +986 -0
  142. package/node_modules/@modelcontextprotocol/server/dist/cfWorkerProvider-BwbPzsdI.cjs.map +1 -0
  143. package/node_modules/@modelcontextprotocol/server/dist/cfWorkerProvider-C03CSigr.d.mts +74 -0
  144. package/node_modules/@modelcontextprotocol/server/dist/cfWorkerProvider-C03CSigr.d.mts.map +1 -0
  145. package/node_modules/@modelcontextprotocol/server/dist/cfWorkerProvider-doTkZbTr.d.cts +74 -0
  146. package/node_modules/@modelcontextprotocol/server/dist/cfWorkerProvider-doTkZbTr.d.cts.map +1 -0
  147. package/node_modules/@modelcontextprotocol/server/dist/cfWorkerProvider-p3WaZPqB.mjs +981 -0
  148. package/node_modules/@modelcontextprotocol/server/dist/cfWorkerProvider-p3WaZPqB.mjs.map +1 -0
  149. package/node_modules/@modelcontextprotocol/server/dist/chunk-Bnu9O96Y.cjs +60 -0
  150. package/node_modules/@modelcontextprotocol/server/dist/chunk-Br0eD_fh.mjs +42 -0
  151. package/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-CLhGwQTn.d.mts +4043 -0
  152. package/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-CLhGwQTn.d.mts.map +1 -0
  153. package/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-dBHMsxwf.d.cts +4045 -0
  154. package/node_modules/@modelcontextprotocol/server/dist/createMcpHandler-dBHMsxwf.d.cts.map +1 -0
  155. package/node_modules/@modelcontextprotocol/server/dist/dialects-D8eXzoGv.cjs +46 -0
  156. package/node_modules/@modelcontextprotocol/server/dist/dialects-D8eXzoGv.cjs.map +1 -0
  157. package/node_modules/@modelcontextprotocol/server/dist/dialects-DoSzNhcb.mjs +34 -0
  158. package/node_modules/@modelcontextprotocol/server/dist/dialects-DoSzNhcb.mjs.map +1 -0
  159. package/node_modules/@modelcontextprotocol/server/dist/index.cjs +2055 -0
  160. package/node_modules/@modelcontextprotocol/server/dist/index.cjs.map +1 -0
  161. package/node_modules/@modelcontextprotocol/server/dist/index.d.cts +739 -0
  162. package/node_modules/@modelcontextprotocol/server/dist/index.d.cts.map +1 -0
  163. package/node_modules/@modelcontextprotocol/server/dist/index.d.mts +739 -0
  164. package/node_modules/@modelcontextprotocol/server/dist/index.d.mts.map +1 -0
  165. package/node_modules/@modelcontextprotocol/server/dist/index.mjs +1870 -0
  166. package/node_modules/@modelcontextprotocol/server/dist/index.mjs.map +1 -0
  167. package/node_modules/@modelcontextprotocol/server/dist/mcp-D7GmuPnv.cjs +2022 -0
  168. package/node_modules/@modelcontextprotocol/server/dist/mcp-D7GmuPnv.cjs.map +1 -0
  169. package/node_modules/@modelcontextprotocol/server/dist/mcp-DXXb3Vv3.mjs +1931 -0
  170. package/node_modules/@modelcontextprotocol/server/dist/mcp-DXXb3Vv3.mjs.map +1 -0
  171. package/node_modules/@modelcontextprotocol/server/dist/shimsBrowser.cjs +23 -0
  172. package/node_modules/@modelcontextprotocol/server/dist/shimsBrowser.cjs.map +1 -0
  173. package/node_modules/@modelcontextprotocol/server/dist/shimsBrowser.d.cts +11 -0
  174. package/node_modules/@modelcontextprotocol/server/dist/shimsBrowser.d.cts.map +1 -0
  175. package/node_modules/@modelcontextprotocol/server/dist/shimsBrowser.d.mts +11 -0
  176. package/node_modules/@modelcontextprotocol/server/dist/shimsBrowser.d.mts.map +1 -0
  177. package/node_modules/@modelcontextprotocol/server/dist/shimsBrowser.mjs +22 -0
  178. package/node_modules/@modelcontextprotocol/server/dist/shimsBrowser.mjs.map +1 -0
  179. package/node_modules/@modelcontextprotocol/server/dist/shimsNode.cjs +12 -0
  180. package/node_modules/@modelcontextprotocol/server/dist/shimsNode.d.cts +3 -0
  181. package/node_modules/@modelcontextprotocol/server/dist/shimsNode.d.mts +3 -0
  182. package/node_modules/@modelcontextprotocol/server/dist/shimsNode.mjs +4 -0
  183. package/node_modules/@modelcontextprotocol/server/dist/shimsWorkerd.cjs +30 -0
  184. package/node_modules/@modelcontextprotocol/server/dist/shimsWorkerd.cjs.map +1 -0
  185. package/node_modules/@modelcontextprotocol/server/dist/shimsWorkerd.d.cts +10 -0
  186. package/node_modules/@modelcontextprotocol/server/dist/shimsWorkerd.d.cts.map +1 -0
  187. package/node_modules/@modelcontextprotocol/server/dist/shimsWorkerd.d.mts +10 -0
  188. package/node_modules/@modelcontextprotocol/server/dist/shimsWorkerd.d.mts.map +1 -0
  189. package/node_modules/@modelcontextprotocol/server/dist/shimsWorkerd.mjs +29 -0
  190. package/node_modules/@modelcontextprotocol/server/dist/shimsWorkerd.mjs.map +1 -0
  191. package/node_modules/@modelcontextprotocol/server/dist/src-CX2iR2pK.mjs +7606 -0
  192. package/node_modules/@modelcontextprotocol/server/dist/src-CX2iR2pK.mjs.map +1 -0
  193. package/node_modules/@modelcontextprotocol/server/dist/src-STyD_Vvf.cjs +8104 -0
  194. package/node_modules/@modelcontextprotocol/server/dist/src-STyD_Vvf.cjs.map +1 -0
  195. package/node_modules/@modelcontextprotocol/server/dist/stdio.cjs +564 -0
  196. package/node_modules/@modelcontextprotocol/server/dist/stdio.cjs.map +1 -0
  197. package/node_modules/@modelcontextprotocol/server/dist/stdio.d.cts +107 -0
  198. package/node_modules/@modelcontextprotocol/server/dist/stdio.d.cts.map +1 -0
  199. package/node_modules/@modelcontextprotocol/server/dist/stdio.d.mts +107 -0
  200. package/node_modules/@modelcontextprotocol/server/dist/stdio.d.mts.map +1 -0
  201. package/node_modules/@modelcontextprotocol/server/dist/stdio.mjs +562 -0
  202. package/node_modules/@modelcontextprotocol/server/dist/stdio.mjs.map +1 -0
  203. package/node_modules/@modelcontextprotocol/server/dist/types-DUs7mGBv.d.mts +1099 -0
  204. package/node_modules/@modelcontextprotocol/server/dist/types-DUs7mGBv.d.mts.map +1 -0
  205. package/node_modules/@modelcontextprotocol/server/dist/types-DsbMXNFL.d.cts +1099 -0
  206. package/node_modules/@modelcontextprotocol/server/dist/types-DsbMXNFL.d.cts.map +1 -0
  207. package/node_modules/@modelcontextprotocol/server/dist/validators/ajv.cjs +5 -0
  208. package/node_modules/@modelcontextprotocol/server/dist/validators/ajv.d.cts +2 -0
  209. package/node_modules/@modelcontextprotocol/server/dist/validators/ajv.d.mts +2 -0
  210. package/node_modules/@modelcontextprotocol/server/dist/validators/ajv.mjs +3 -0
  211. package/node_modules/@modelcontextprotocol/server/dist/validators/cfWorker.cjs +3 -0
  212. package/node_modules/@modelcontextprotocol/server/dist/validators/cfWorker.d.cts +2 -0
  213. package/node_modules/@modelcontextprotocol/server/dist/validators/cfWorker.d.mts +2 -0
  214. package/node_modules/@modelcontextprotocol/server/dist/validators/cfWorker.mjs +3 -0
  215. package/node_modules/@modelcontextprotocol/server/package.json +160 -0
  216. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js +1 -1
  217. package/node_modules/@noodle-borg/agent-kit/dist/generated/example-files.js.map +1 -1
  218. package/node_modules/@noodle-borg/agent-kit/dist/skill-server-playbook-ref.d.ts.map +1 -1
  219. package/node_modules/@noodle-borg/agent-kit/dist/skill-server-playbook-ref.js +1 -0
  220. package/node_modules/@noodle-borg/agent-kit/dist/skill-server-playbook-ref.js.map +1 -1
  221. package/node_modules/@noodle-borg/agent-kit/package.json +1 -1
  222. package/node_modules/@noodle-borg/capabilities/dist/index.d.ts.map +1 -1
  223. package/node_modules/@noodle-borg/capabilities/dist/index.js +10 -3
  224. package/node_modules/@noodle-borg/capabilities/dist/index.js.map +1 -1
  225. package/node_modules/@noodle-borg/developer-mcp/dist/prompts.d.ts +1 -1
  226. package/node_modules/@noodle-borg/developer-mcp/dist/prompts.d.ts.map +1 -1
  227. package/node_modules/@noodle-borg/developer-mcp/dist/resources.d.ts +1 -1
  228. package/node_modules/@noodle-borg/developer-mcp/dist/resources.d.ts.map +1 -1
  229. package/node_modules/@noodle-borg/developer-mcp/dist/server.d.ts +1 -1
  230. package/node_modules/@noodle-borg/developer-mcp/dist/server.d.ts.map +1 -1
  231. package/node_modules/@noodle-borg/developer-mcp/dist/server.js +3 -1
  232. package/node_modules/@noodle-borg/developer-mcp/dist/server.js.map +1 -1
  233. package/node_modules/@noodle-borg/developer-mcp/package.json +2 -1
  234. package/node_modules/@noodle-borg/module/dist/contract.d.ts +2 -0
  235. package/node_modules/@noodle-borg/module/dist/contract.d.ts.map +1 -1
  236. package/node_modules/@noodle-borg/module/dist/contract.js.map +1 -1
  237. package/node_modules/@noodle-borg/protocol/dist/error-codes.d.ts +11 -0
  238. package/node_modules/@noodle-borg/protocol/dist/error-codes.d.ts.map +1 -0
  239. package/node_modules/@noodle-borg/protocol/dist/error-codes.js +11 -0
  240. package/node_modules/@noodle-borg/protocol/dist/error-codes.js.map +1 -0
  241. package/node_modules/@noodle-borg/protocol/dist/handlers/prompts.d.ts +6 -0
  242. package/node_modules/@noodle-borg/protocol/dist/handlers/prompts.d.ts.map +1 -0
  243. package/node_modules/@noodle-borg/protocol/dist/handlers/prompts.js +31 -0
  244. package/node_modules/@noodle-borg/protocol/dist/handlers/prompts.js.map +1 -0
  245. package/node_modules/@noodle-borg/protocol/dist/handlers/resources.d.ts +6 -0
  246. package/node_modules/@noodle-borg/protocol/dist/handlers/resources.d.ts.map +1 -0
  247. package/node_modules/@noodle-borg/protocol/dist/handlers/resources.js +50 -0
  248. package/node_modules/@noodle-borg/protocol/dist/handlers/resources.js.map +1 -0
  249. package/node_modules/@noodle-borg/protocol/dist/handlers/tools.d.ts +6 -0
  250. package/node_modules/@noodle-borg/protocol/dist/handlers/tools.d.ts.map +1 -0
  251. package/node_modules/@noodle-borg/protocol/dist/handlers/tools.js +126 -0
  252. package/node_modules/@noodle-borg/protocol/dist/handlers/tools.js.map +1 -0
  253. package/node_modules/@noodle-borg/protocol/dist/index.d.ts +6 -2
  254. package/node_modules/@noodle-borg/protocol/dist/index.d.ts.map +1 -1
  255. package/node_modules/@noodle-borg/protocol/dist/index.js +4 -1
  256. package/node_modules/@noodle-borg/protocol/dist/index.js.map +1 -1
  257. package/node_modules/@noodle-borg/protocol/dist/interaction-envelope.d.ts +10 -0
  258. package/node_modules/@noodle-borg/protocol/dist/interaction-envelope.d.ts.map +1 -0
  259. package/node_modules/@noodle-borg/protocol/dist/interaction-envelope.js +66 -0
  260. package/node_modules/@noodle-borg/protocol/dist/interaction-envelope.js.map +1 -0
  261. package/node_modules/@noodle-borg/protocol/dist/jsonrpc.d.ts +1 -0
  262. package/node_modules/@noodle-borg/protocol/dist/jsonrpc.d.ts.map +1 -1
  263. package/node_modules/@noodle-borg/protocol/dist/jsonrpc.js +1 -0
  264. package/node_modules/@noodle-borg/protocol/dist/jsonrpc.js.map +1 -1
  265. package/node_modules/@noodle-borg/protocol/dist/observation.d.ts +27 -0
  266. package/node_modules/@noodle-borg/protocol/dist/observation.d.ts.map +1 -0
  267. package/node_modules/@noodle-borg/protocol/dist/observation.js +20 -0
  268. package/node_modules/@noodle-borg/protocol/dist/observation.js.map +1 -0
  269. package/node_modules/@noodle-borg/protocol/dist/request-deps.d.ts +6 -0
  270. package/node_modules/@noodle-borg/protocol/dist/request-deps.d.ts.map +1 -0
  271. package/node_modules/@noodle-borg/protocol/dist/request-deps.js +16 -0
  272. package/node_modules/@noodle-borg/protocol/dist/request-deps.js.map +1 -0
  273. package/node_modules/@noodle-borg/protocol/dist/request-state.d.ts +50 -0
  274. package/node_modules/@noodle-borg/protocol/dist/request-state.d.ts.map +1 -0
  275. package/node_modules/@noodle-borg/protocol/dist/request-state.js +195 -0
  276. package/node_modules/@noodle-borg/protocol/dist/request-state.js.map +1 -0
  277. package/node_modules/@noodle-borg/protocol/dist/sdk-server.d.ts +16 -23
  278. package/node_modules/@noodle-borg/protocol/dist/sdk-server.d.ts.map +1 -1
  279. package/node_modules/@noodle-borg/protocol/dist/sdk-server.js +7 -341
  280. package/node_modules/@noodle-borg/protocol/dist/sdk-server.js.map +1 -1
  281. package/node_modules/@noodle-borg/protocol/dist/tool-authorization.d.ts +1 -1
  282. package/node_modules/@noodle-borg/protocol/dist/tool-authorization.d.ts.map +1 -1
  283. package/node_modules/@noodle-borg/protocol/dist/tool-authorization.js +1 -1
  284. package/node_modules/@noodle-borg/protocol/dist/tool-authorization.js.map +1 -1
  285. package/node_modules/@noodle-borg/protocol/dist/tool-interaction.d.ts +7 -2
  286. package/node_modules/@noodle-borg/protocol/dist/tool-interaction.d.ts.map +1 -1
  287. package/node_modules/@noodle-borg/protocol/dist/tool-interaction.js +8 -1
  288. package/node_modules/@noodle-borg/protocol/dist/tool-interaction.js.map +1 -1
  289. package/node_modules/@noodle-borg/protocol/dist/tool-results.d.ts +7 -0
  290. package/node_modules/@noodle-borg/protocol/dist/tool-results.d.ts.map +1 -0
  291. package/node_modules/@noodle-borg/protocol/dist/tool-results.js +49 -0
  292. package/node_modules/@noodle-borg/protocol/dist/tool-results.js.map +1 -0
  293. package/node_modules/@noodle-borg/protocol/dist/v2/cache-hints.d.ts +11 -0
  294. package/node_modules/@noodle-borg/protocol/dist/v2/cache-hints.d.ts.map +1 -0
  295. package/node_modules/@noodle-borg/protocol/dist/v2/cache-hints.js +14 -0
  296. package/node_modules/@noodle-borg/protocol/dist/v2/cache-hints.js.map +1 -0
  297. package/node_modules/@noodle-borg/protocol/dist/v2/confirmation.d.ts +16 -0
  298. package/node_modules/@noodle-borg/protocol/dist/v2/confirmation.d.ts.map +1 -0
  299. package/node_modules/@noodle-borg/protocol/dist/v2/confirmation.js +57 -0
  300. package/node_modules/@noodle-borg/protocol/dist/v2/confirmation.js.map +1 -0
  301. package/node_modules/@noodle-borg/protocol/dist/v2/handler.d.ts +11 -0
  302. package/node_modules/@noodle-borg/protocol/dist/v2/handler.d.ts.map +1 -0
  303. package/node_modules/@noodle-borg/protocol/dist/v2/handler.js +154 -0
  304. package/node_modules/@noodle-borg/protocol/dist/v2/handler.js.map +1 -0
  305. package/node_modules/@noodle-borg/protocol/dist/v2/input-required.d.ts +12 -0
  306. package/node_modules/@noodle-borg/protocol/dist/v2/input-required.d.ts.map +1 -0
  307. package/node_modules/@noodle-borg/protocol/dist/v2/input-required.js +78 -0
  308. package/node_modules/@noodle-borg/protocol/dist/v2/input-required.js.map +1 -0
  309. package/node_modules/@noodle-borg/protocol/dist/v2/server.d.ts +5 -0
  310. package/node_modules/@noodle-borg/protocol/dist/v2/server.d.ts.map +1 -0
  311. package/node_modules/@noodle-borg/protocol/dist/v2/server.js +314 -0
  312. package/node_modules/@noodle-borg/protocol/dist/v2/server.js.map +1 -0
  313. package/node_modules/@noodle-borg/protocol/dist/v2/tool-list.d.ts +4 -0
  314. package/node_modules/@noodle-borg/protocol/dist/v2/tool-list.d.ts.map +1 -0
  315. package/node_modules/@noodle-borg/protocol/dist/v2/tool-list.js +25 -0
  316. package/node_modules/@noodle-borg/protocol/dist/v2/tool-list.js.map +1 -0
  317. package/node_modules/@noodle-borg/protocol/dist/v2/versions.d.ts +6 -0
  318. package/node_modules/@noodle-borg/protocol/dist/v2/versions.d.ts.map +1 -0
  319. package/node_modules/@noodle-borg/protocol/dist/v2/versions.js +11 -0
  320. package/node_modules/@noodle-borg/protocol/dist/v2/versions.js.map +1 -0
  321. package/node_modules/@noodle-borg/protocol/package.json +3 -0
  322. package/node_modules/@noodle-borg/service/dist/billing/usage-identity.d.ts +2 -0
  323. package/node_modules/@noodle-borg/service/dist/billing/usage-identity.d.ts.map +1 -1
  324. package/node_modules/@noodle-borg/service/dist/billing/usage-identity.js +15 -7
  325. package/node_modules/@noodle-borg/service/dist/billing/usage-identity.js.map +1 -1
  326. package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.d.ts +2 -1
  327. package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.d.ts.map +1 -1
  328. package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.js +16 -14
  329. package/node_modules/@noodle-borg/service/dist/developer-mcp/mount.js.map +1 -1
  330. package/node_modules/@noodle-borg/service/dist/developer-mcp/service-options.d.ts.map +1 -1
  331. package/node_modules/@noodle-borg/service/dist/developer-mcp/service-options.js +1 -0
  332. package/node_modules/@noodle-borg/service/dist/developer-mcp/service-options.js.map +1 -1
  333. package/node_modules/@noodle-borg/service/dist/index.d.ts +2 -0
  334. package/node_modules/@noodle-borg/service/dist/index.d.ts.map +1 -1
  335. package/node_modules/@noodle-borg/service/dist/index.js +2 -0
  336. package/node_modules/@noodle-borg/service/dist/index.js.map +1 -1
  337. package/node_modules/@noodle-borg/service/dist/main.js +3 -0
  338. package/node_modules/@noodle-borg/service/dist/main.js.map +1 -1
  339. package/node_modules/@noodle-borg/service/dist/mcp-confirmation-nonce-postgres.d.ts +14 -0
  340. package/node_modules/@noodle-borg/service/dist/mcp-confirmation-nonce-postgres.d.ts.map +1 -0
  341. package/node_modules/@noodle-borg/service/dist/mcp-confirmation-nonce-postgres.js +35 -0
  342. package/node_modules/@noodle-borg/service/dist/mcp-confirmation-nonce-postgres.js.map +1 -0
  343. package/node_modules/@noodle-borg/service/dist/mcp-protocol-runtime.d.ts +16 -0
  344. package/node_modules/@noodle-borg/service/dist/mcp-protocol-runtime.d.ts.map +1 -0
  345. package/node_modules/@noodle-borg/service/dist/mcp-protocol-runtime.js +21 -0
  346. package/node_modules/@noodle-borg/service/dist/mcp-protocol-runtime.js.map +1 -0
  347. package/node_modules/@noodle-borg/service/dist/oauth/app.d.ts.map +1 -1
  348. package/node_modules/@noodle-borg/service/dist/oauth/app.js +47 -0
  349. package/node_modules/@noodle-borg/service/dist/oauth/app.js.map +1 -1
  350. package/node_modules/@noodle-borg/service/dist/oauth/authorization-response.d.ts +4 -0
  351. package/node_modules/@noodle-borg/service/dist/oauth/authorization-response.d.ts.map +1 -0
  352. package/node_modules/@noodle-borg/service/dist/oauth/authorization-response.js +6 -0
  353. package/node_modules/@noodle-borg/service/dist/oauth/authorization-response.js.map +1 -0
  354. package/node_modules/@noodle-borg/service/dist/oauth/consent-decision.d.ts.map +1 -1
  355. package/node_modules/@noodle-borg/service/dist/oauth/consent-decision.js +2 -1
  356. package/node_modules/@noodle-borg/service/dist/oauth/consent-decision.js.map +1 -1
  357. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-flow.js +2 -1
  358. package/node_modules/@noodle-borg/service/dist/oauth/developer-grant-flow.js.map +1 -1
  359. package/node_modules/@noodle-borg/service/dist/oauth/first-party-client.d.ts.map +1 -1
  360. package/node_modules/@noodle-borg/service/dist/oauth/first-party-client.js +1 -0
  361. package/node_modules/@noodle-borg/service/dist/oauth/first-party-client.js.map +1 -1
  362. package/node_modules/@noodle-borg/service/dist/oauth/metadata.d.ts.map +1 -1
  363. package/node_modules/@noodle-borg/service/dist/oauth/metadata.js +1 -0
  364. package/node_modules/@noodle-borg/service/dist/oauth/metadata.js.map +1 -1
  365. package/node_modules/@noodle-borg/service/dist/oauth/provider.d.ts.map +1 -1
  366. package/node_modules/@noodle-borg/service/dist/oauth/provider.js +1 -0
  367. package/node_modules/@noodle-borg/service/dist/oauth/provider.js.map +1 -1
  368. package/node_modules/@noodle-borg/service/dist/oauth/token-issuer.d.ts.map +1 -1
  369. package/node_modules/@noodle-borg/service/dist/oauth/token-issuer.js +2 -1
  370. package/node_modules/@noodle-borg/service/dist/oauth/token-issuer.js.map +1 -1
  371. package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-handler.d.ts.map +1 -1
  372. package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-handler.js +1 -0
  373. package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-handler.js.map +1 -1
  374. package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-support.d.ts +1 -0
  375. package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-support.d.ts.map +1 -1
  376. package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-support.js +2 -1
  377. package/node_modules/@noodle-borg/service/dist/oauth/upstream-callback-support.js.map +1 -1
  378. package/node_modules/@noodle-borg/service/dist/options.d.ts +8 -1
  379. package/node_modules/@noodle-borg/service/dist/options.d.ts.map +1 -1
  380. package/node_modules/@noodle-borg/service/dist/serve.d.ts.map +1 -1
  381. package/node_modules/@noodle-borg/service/dist/serve.js +15 -0
  382. package/node_modules/@noodle-borg/service/dist/serve.js.map +1 -1
  383. package/node_modules/@noodle-borg/service/dist/service.d.ts.map +1 -1
  384. package/node_modules/@noodle-borg/service/dist/service.js +5 -0
  385. package/node_modules/@noodle-borg/service/dist/service.js.map +1 -1
  386. package/node_modules/@noodle-borg/service/dist/store/request-events-postgres.d.ts.map +1 -1
  387. package/node_modules/@noodle-borg/service/dist/store/request-events-postgres.js +9 -2
  388. package/node_modules/@noodle-borg/service/dist/store/request-events-postgres.js.map +1 -1
  389. package/node_modules/@noodle-borg/service/dist/store/request-events.d.ts.map +1 -1
  390. package/node_modules/@noodle-borg/service/dist/store/request-events.js +1 -0
  391. package/node_modules/@noodle-borg/service/dist/store/request-events.js.map +1 -1
  392. package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts +19 -67
  393. package/node_modules/@noodle-borg/transport-http/dist/handler.d.ts.map +1 -1
  394. package/node_modules/@noodle-borg/transport-http/dist/handler.js +12 -281
  395. package/node_modules/@noodle-borg/transport-http/dist/handler.js.map +1 -1
  396. package/node_modules/@noodle-borg/transport-http/dist/index.d.ts +2 -1
  397. package/node_modules/@noodle-borg/transport-http/dist/index.d.ts.map +1 -1
  398. package/node_modules/@noodle-borg/transport-http/dist/index.js +1 -0
  399. package/node_modules/@noodle-borg/transport-http/dist/index.js.map +1 -1
  400. package/node_modules/@noodle-borg/transport-http/dist/request-capture.d.ts.map +1 -1
  401. package/node_modules/@noodle-borg/transport-http/dist/request-capture.js +38 -4
  402. package/node_modules/@noodle-borg/transport-http/dist/request-capture.js.map +1 -1
  403. package/node_modules/@noodle-borg/transport-http/dist/responses.d.ts +28 -0
  404. package/node_modules/@noodle-borg/transport-http/dist/responses.d.ts.map +1 -0
  405. package/node_modules/@noodle-borg/transport-http/dist/responses.js +50 -0
  406. package/node_modules/@noodle-borg/transport-http/dist/responses.js.map +1 -0
  407. package/node_modules/@noodle-borg/transport-http/dist/routing.d.ts +28 -0
  408. package/node_modules/@noodle-borg/transport-http/dist/routing.d.ts.map +1 -0
  409. package/node_modules/@noodle-borg/transport-http/dist/routing.js +52 -0
  410. package/node_modules/@noodle-borg/transport-http/dist/routing.js.map +1 -0
  411. package/node_modules/@noodle-borg/transport-http/dist/serve-request.d.ts +35 -0
  412. package/node_modules/@noodle-borg/transport-http/dist/serve-request.d.ts.map +1 -0
  413. package/node_modules/@noodle-borg/transport-http/dist/serve-request.js +190 -0
  414. package/node_modules/@noodle-borg/transport-http/dist/serve-request.js.map +1 -0
  415. package/node_modules/@noodle-borg/transport-http/dist/tool-dispatch.d.ts +1 -1
  416. package/node_modules/@noodle-borg/transport-http/dist/tool-dispatch.d.ts.map +1 -1
  417. package/node_modules/@noodle-borg/transport-http/dist/tool-dispatch.js +17 -5
  418. package/node_modules/@noodle-borg/transport-http/dist/tool-dispatch.js.map +1 -1
  419. package/node_modules/@noodle-borg/transport-http/dist/web-bridge.d.ts +9 -0
  420. package/node_modules/@noodle-borg/transport-http/dist/web-bridge.d.ts.map +1 -0
  421. package/node_modules/@noodle-borg/transport-http/dist/web-bridge.js +61 -0
  422. package/node_modules/@noodle-borg/transport-http/dist/web-bridge.js.map +1 -0
  423. package/package.json +6 -2
@@ -0,0 +1,314 @@
1
+ import { ProtocolError, ResourceNotFoundError, Server, } from '@modelcontextprotocol/server';
2
+ import { parseUriTemplate } from '@noodle-borg/compiler';
3
+ import { executePrompt, executeResource, } from '@noodle-borg/runtime';
4
+ import { artifactDeclaresContext, assertNoContextToolCollision, CONTEXT_TOOL_DESCRIPTOR, CONTEXT_TOOL_NAME, } from '../context-tool.js';
5
+ import { LEGACY_MCP_ERROR } from '../error-codes.js';
6
+ import { coerceToolArguments } from '../input-validation.js';
7
+ import { extractElicitationResponses, toolUsesPortableInteractionArgument, } from '../interaction-envelope.js';
8
+ import { mapExecutionError, mapPromptMessages, mapPromptsList, mapResourceContents, mapResourcesList, mapResourceTemplatesList, mapToolOutput, mapToolsList, redactWidgetLinkedOutput, } from '../mapping.js';
9
+ import { estimateTokens, notify, } from '../observation.js';
10
+ import { buildProtocolRequestDeps } from '../request-deps.js';
11
+ import { assertRequestStateBinding, RequestStateError, } from '../request-state.js';
12
+ import { evaluateToolAuthorization } from '../tool-authorization.js';
13
+ import { runMcpToolInteraction } from '../tool-interaction.js';
14
+ import { interactionUnavailableToolResult, stoppedToolResult } from '../tool-results.js';
15
+ import { NOODLE_MCP_CACHE_HINTS } from './cache-hints.js';
16
+ import { runModernConfirmedTool, toolRequiresModernConfirmation } from './confirmation.js';
17
+ import { inputRequiredForTool, mergeInputResponses, toolRequestStateBinding, } from './input-required.js';
18
+ import { shapeModernToolsList } from './tool-list.js';
19
+ import { SERVED_MCP_PROTOCOL_VERSIONS } from './versions.js';
20
+ export function buildDualEraMcpServer({ artifact, deps }, era, context = {}) {
21
+ assertNoContextToolCollision(artifact);
22
+ const hasResources = (artifact.resources?.length ?? 0) > 0;
23
+ const hasPrompts = (artifact.prompts?.length ?? 0) > 0;
24
+ const capabilities = {
25
+ tools: {},
26
+ ...(hasResources ? { resources: {} } : {}),
27
+ ...(hasPrompts ? { prompts: {} } : {}),
28
+ ...(era === 'modern' && artifactHasMcpApp(artifact)
29
+ ? {
30
+ extensions: {
31
+ 'io.modelcontextprotocol/ui': {
32
+ mimeTypes: ['text/html;profile=mcp-app'],
33
+ },
34
+ },
35
+ }
36
+ : {}),
37
+ };
38
+ const server = new Server({
39
+ name: artifact.server.name,
40
+ title: artifact.server.title,
41
+ version: artifact.server.version,
42
+ }, {
43
+ supportedProtocolVersions: [...SERVED_MCP_PROTOCOL_VERSIONS],
44
+ capabilities,
45
+ cacheHints: NOODLE_MCP_CACHE_HINTS,
46
+ inputRequired: { maxRounds: 8, legacyShim: false },
47
+ ...(context.requestState === undefined
48
+ ? {}
49
+ : {
50
+ requestState: {
51
+ verify: async (state) => {
52
+ const payload = await context.requestState?.open(state);
53
+ if (payload === undefined)
54
+ throw new RequestStateError();
55
+ return payload;
56
+ },
57
+ },
58
+ }),
59
+ ...(artifact.server.instructions === undefined
60
+ ? {}
61
+ : { instructions: artifact.server.instructions }),
62
+ });
63
+ const requestDeps = buildProtocolRequestDeps(artifact, deps, context);
64
+ registerV2Tools(server, artifact, requestDeps, context, era);
65
+ if (hasResources)
66
+ registerV2Resources(server, artifact, requestDeps, context, era);
67
+ if (hasPrompts)
68
+ registerV2Prompts(server, artifact, requestDeps, context);
69
+ return server;
70
+ }
71
+ function registerV2Tools(server, artifact, deps, context, era) {
72
+ server.setRequestHandler('tools/list', () => {
73
+ const mapped = mapToolsList(artifact, context.caller);
74
+ return (era === 'modern' ? shapeModernToolsList(mapped) : mapped);
75
+ });
76
+ server.setRequestHandler('tools/call', async (request, ctx) => {
77
+ const toolName = request.params.name;
78
+ const observe = (outcome, extra = {}) => notify(context, { method: 'tools/call', toolName, outcome, ...extra });
79
+ if (toolName === CONTEXT_TOOL_NAME && artifactDeclaresContext(artifact)) {
80
+ const coerced = coerceToolArguments(CONTEXT_TOOL_DESCRIPTOR.inputSchema, request.params.arguments ?? {});
81
+ if (coerced.issues.length > 0) {
82
+ observe('mcp_error', { errorKind: 'invalid_params' });
83
+ throw new ProtocolError(-32602, `invalid arguments for tool "${toolName}"`, {
84
+ reason: 'invalid_tool_arguments',
85
+ validation: coerced.issues,
86
+ });
87
+ }
88
+ if (deps.context === undefined) {
89
+ observe('mcp_error', { errorKind: 'invocation_context_unavailable' });
90
+ throw new ProtocolError(-32603, 'invocation context was declared but not resolved for this request');
91
+ }
92
+ const mapped = mapToolOutput(deps.context);
93
+ observe('ok', { outputTokensEst: estimateTokens(deps.context) });
94
+ return server.projectCallToolResult(mapped, CONTEXT_TOOL_DESCRIPTOR.outputSchema);
95
+ }
96
+ const tool = artifact.tools.find((item) => item.name === toolName);
97
+ if (tool !== undefined) {
98
+ const authorization = evaluateToolAuthorization(tool.authorization, context.caller);
99
+ if (!authorization.allow) {
100
+ observe('mcp_error', { errorKind: authorization.reason });
101
+ throw new ProtocolError(LEGACY_MCP_ERROR.TOOL_AUTHORIZATION_DENIED, authorization.reason === 'insufficient_scope' ? 'insufficient scope' : 'forbidden', {
102
+ reason: authorization.reason,
103
+ ...(authorization.reason === 'insufficient_scope'
104
+ ? { requiredScopes: authorization.requiredScopes }
105
+ : {}),
106
+ });
107
+ }
108
+ }
109
+ const interaction = era === 'legacy'
110
+ ? extractElicitationResponses(request.params.arguments ?? {}, ctx.mcpReq._meta, toolUsesPortableInteractionArgument(tool))
111
+ : { arguments: request.params.arguments ?? {}, responses: {} };
112
+ let toolArguments = interaction.arguments;
113
+ const requestState = era === 'modern' ? ctx.mcpReq.requestState() : undefined;
114
+ const modernBinding = () => toolRequestStateBinding(artifact, context, toolName, interaction.arguments);
115
+ if (requestState !== undefined) {
116
+ try {
117
+ assertRequestStateBinding(requestState, modernBinding());
118
+ }
119
+ catch {
120
+ throw invalidRequestStateError();
121
+ }
122
+ }
123
+ if (era === 'modern' && requestState === undefined && ctx.mcpReq.inputResponses !== undefined) {
124
+ throw invalidRequestStateError();
125
+ }
126
+ let modernResponses;
127
+ try {
128
+ modernResponses =
129
+ era === 'modern'
130
+ ? mergeInputResponses(requestState, ctx.mcpReq.inputResponses)
131
+ : interaction.responses;
132
+ }
133
+ catch {
134
+ throw invalidRequestStateError();
135
+ }
136
+ if (era === 'modern' && requestState?.confirmation === true) {
137
+ try {
138
+ if (context.confirmationNonceLedger === undefined ||
139
+ !(await context.confirmationNonceLedger.consume(requestState.nonce, requestState.expiresAt))) {
140
+ throw new RequestStateError();
141
+ }
142
+ }
143
+ catch {
144
+ throw invalidRequestStateError();
145
+ }
146
+ }
147
+ if (tool !== undefined) {
148
+ const coerced = coerceToolArguments(tool.inputSchema, toolArguments);
149
+ if (coerced.issues.length > 0) {
150
+ observe('mcp_error', { errorKind: 'invalid_params' });
151
+ throw new ProtocolError(-32602, `invalid arguments for tool "${toolName}"`, {
152
+ reason: 'invalid_tool_arguments',
153
+ validation: coerced.issues,
154
+ });
155
+ }
156
+ toolArguments = coerced.value;
157
+ }
158
+ const toolDeps = {
159
+ ...deps,
160
+ signal: ctx.mcpReq.signal,
161
+ ...(context.beforeToolDispatch === undefined
162
+ ? {}
163
+ : {
164
+ beforeDispatch: onceToolDispatch(() => context.beforeToolDispatch?.({
165
+ toolName,
166
+ toolArguments,
167
+ requestId: ctx.mcpReq.id,
168
+ signal: ctx.mcpReq.signal,
169
+ ...(ctx.sessionId === undefined ? {} : { sessionId: ctx.sessionId }),
170
+ ...(requestState === undefined
171
+ ? {}
172
+ : {
173
+ invocationId: requestState.nonce,
174
+ invocationRound: requestState.round,
175
+ }),
176
+ ...(ctx.mcpReq._meta === undefined ? {} : { requestMeta: ctx.mcpReq._meta }),
177
+ }) ?? Promise.resolve({ allow: true })),
178
+ }),
179
+ };
180
+ const result = era === 'modern' && toolRequiresModernConfirmation(tool) && tool !== undefined
181
+ ? await runModernConfirmedTool({
182
+ artifact,
183
+ tool,
184
+ toolName,
185
+ toolArguments,
186
+ deps: toolDeps,
187
+ responses: modernResponses,
188
+ })
189
+ : await runMcpToolInteraction({
190
+ server,
191
+ artifact,
192
+ tool,
193
+ toolName,
194
+ toolArguments,
195
+ deps: toolDeps,
196
+ formElicitationTransport: 'unavailable',
197
+ providedElicitationResponses: modernResponses,
198
+ onProtocolError: (errorKind) => observe('mcp_error', { errorKind }),
199
+ });
200
+ if (result.status === 'interaction_unavailable') {
201
+ if (era === 'modern' && context.requestState !== undefined) {
202
+ return inputRequiredForTool(context.requestState, modernBinding(), result, modernResponses, requestState);
203
+ }
204
+ observe('tool_error', { errorKind: 'interaction_unavailable' });
205
+ return interactionUnavailableToolResult(toolName, result);
206
+ }
207
+ if (result.status === 'stopped') {
208
+ observe('tool_error', { errorKind: `${result.source}_${result.action}` });
209
+ return stoppedToolResult(result.action, result.source === 'confirmation' ? 'action' : 'requested input');
210
+ }
211
+ if (result.status === 'completed') {
212
+ const output = tool?._meta?.ui?.resourceUri === undefined
213
+ ? result.output
214
+ : redactWidgetLinkedOutput(result.output);
215
+ const mapped = mapToolOutput(output);
216
+ observe('ok', { outputTokensEst: estimateTokens(output) });
217
+ return server.projectCallToolResult(mapped, tool?.outputSchema);
218
+ }
219
+ const outcome = mapExecutionError(result.error);
220
+ if ('result' in outcome) {
221
+ observe('tool_error', { errorKind: result.error.code });
222
+ return outcome.result;
223
+ }
224
+ observe('mcp_error', { errorKind: result.error.code });
225
+ throw new ProtocolError(outcome.error.code, outcome.error.message);
226
+ });
227
+ }
228
+ function registerV2Resources(server, artifact, deps, context, era) {
229
+ server.setRequestHandler('resources/list', () => mapResourcesList(artifact));
230
+ server.setRequestHandler('resources/templates/list', () => mapResourceTemplatesList(artifact));
231
+ server.setRequestHandler('resources/read', async (request) => {
232
+ const { uri } = request.params;
233
+ for (const resource of artifact.resources ?? []) {
234
+ const variables = matchResourceUri(resource.uri, resource.isTemplate, uri);
235
+ if (variables === null)
236
+ continue;
237
+ const result = await executeResource(artifact, resource.name, variables, deps);
238
+ if (!result.ok) {
239
+ notify(context, {
240
+ method: 'resources/read',
241
+ resourceName: resource.name,
242
+ outcome: 'mcp_error',
243
+ errorKind: result.error.code,
244
+ });
245
+ throw new ProtocolError(-32603, result.error.message);
246
+ }
247
+ const mapped = mapResourceContents(uri, resource.mimeType, result.output, resource._meta);
248
+ notify(context, {
249
+ method: 'resources/read',
250
+ resourceName: resource.name,
251
+ outcome: 'ok',
252
+ outputTokensEst: estimateTokens(result.output),
253
+ });
254
+ return mapped;
255
+ }
256
+ notify(context, {
257
+ method: 'resources/read',
258
+ outcome: 'mcp_error',
259
+ errorKind: 'resource_not_found',
260
+ });
261
+ if (era === 'modern')
262
+ throw new ResourceNotFoundError(uri, `resource not found: ${uri}`);
263
+ throw new ProtocolError(LEGACY_MCP_ERROR.RESOURCE_NOT_FOUND, `resource not found: ${uri}`);
264
+ });
265
+ }
266
+ function registerV2Prompts(server, artifact, deps, context) {
267
+ server.setRequestHandler('prompts/list', () => mapPromptsList(artifact));
268
+ server.setRequestHandler('prompts/get', async (request) => {
269
+ const { name, arguments: args } = request.params;
270
+ const observe = (outcome, extra = {}) => notify(context, { method: 'prompts/get', promptName: name, outcome, ...extra });
271
+ const prompt = (artifact.prompts ?? []).find((item) => item.name === name);
272
+ if (prompt === undefined) {
273
+ observe('mcp_error', { errorKind: 'unknown_prompt' });
274
+ throw new ProtocolError(-32602, `unknown prompt "${name}"`);
275
+ }
276
+ for (const argument of prompt.arguments ?? []) {
277
+ if (argument.required && args?.[argument.name] === undefined) {
278
+ observe('mcp_error', { errorKind: 'invalid_params' });
279
+ throw new ProtocolError(-32602, `missing required argument "${argument.name}"`);
280
+ }
281
+ }
282
+ const result = await executePrompt(artifact, name, args ?? {}, deps);
283
+ if (!result.ok) {
284
+ observe('mcp_error', { errorKind: result.error.code });
285
+ throw new ProtocolError(-32603, result.error.message);
286
+ }
287
+ const mapped = mapPromptMessages(result.output, prompt.description);
288
+ observe('ok', { outputTokensEst: estimateTokens(result.output) });
289
+ return mapped;
290
+ });
291
+ }
292
+ function matchResourceUri(pattern, isTemplate, uri) {
293
+ if (!isTemplate)
294
+ return pattern === uri ? {} : null;
295
+ const parsed = parseUriTemplate(pattern);
296
+ return parsed.ok && parsed.value.kind === 'template' ? parsed.value.match(uri) : null;
297
+ }
298
+ function onceToolDispatch(hook) {
299
+ let pending;
300
+ return (dispatchContext) => {
301
+ pending ??= Promise.resolve().then(() => hook(dispatchContext));
302
+ return pending;
303
+ };
304
+ }
305
+ function artifactHasMcpApp(artifact) {
306
+ return (artifact.resources ?? []).some((resource) => resource.uri.startsWith('ui://') ||
307
+ resource.mimeType?.toLowerCase() === 'text/html;profile=mcp-app');
308
+ }
309
+ function invalidRequestStateError() {
310
+ return new ProtocolError(-32602, 'Invalid or expired requestState', {
311
+ reason: 'invalid_request_state',
312
+ });
313
+ }
314
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/v2/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { ToolsListResult } from '../mapping.js';
2
+ /** Modern descriptors omit the legacy-only portable retry argument and use stable name ordering. */
3
+ export declare function shapeModernToolsList(result: ToolsListResult): ToolsListResult;
4
+ //# sourceMappingURL=tool-list.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-list.d.ts","sourceRoot":"","sources":["../../src/v2/tool-list.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAIrD,oGAAoG;AACpG,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,eAAe,GAAG,eAAe,CA0B7E"}
@@ -0,0 +1,25 @@
1
+ const LEGACY_INTERACTION_ARGUMENT = '__noodleInteraction';
2
+ /** Modern descriptors omit the legacy-only portable retry argument and use stable name ordering. */
3
+ export function shapeModernToolsList(result) {
4
+ return {
5
+ ...result,
6
+ tools: result.tools.map((tool) => {
7
+ const properties = tool.inputSchema.properties;
8
+ if (properties === null ||
9
+ typeof properties !== 'object' ||
10
+ Array.isArray(properties) ||
11
+ !Object.hasOwn(properties, LEGACY_INTERACTION_ARGUMENT)) {
12
+ return tool;
13
+ }
14
+ const { [LEGACY_INTERACTION_ARGUMENT]: _legacy, ...modernProperties } = properties;
15
+ return {
16
+ ...tool,
17
+ inputSchema: {
18
+ ...tool.inputSchema,
19
+ properties: modernProperties,
20
+ },
21
+ };
22
+ }),
23
+ };
24
+ }
25
+ //# sourceMappingURL=tool-list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-list.js","sourceRoot":"","sources":["../../src/v2/tool-list.ts"],"names":[],"mappings":"AAEA,MAAM,2BAA2B,GAAG,qBAAqB,CAAC;AAE1D,oGAAoG;AACpG,MAAM,UAAU,oBAAoB,CAAC,MAAuB;IAC1D,OAAO;QACL,GAAG,MAAM;QACT,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;YAC/B,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC;YAC/C,IACE,UAAU,KAAK,IAAI;gBACnB,OAAO,UAAU,KAAK,QAAQ;gBAC9B,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC;gBACzB,CAAC,MAAM,CAAC,MAAM,CAAC,UAAU,EAAE,2BAA2B,CAAC,EACvD,CAAC;gBACD,OAAO,IAAI,CAAC;YACd,CAAC;YACD,MAAM,EAAE,CAAC,2BAA2B,CAAC,EAAE,OAAO,EAAE,GAAG,gBAAgB,EAAE,GAAG,UAGvE,CAAC;YACF,OAAO;gBACL,GAAG,IAAI;gBACP,WAAW,EAAE;oBACX,GAAG,IAAI,CAAC,WAAW;oBACnB,UAAU,EAAE,gBAAgB;iBAC7B;aACF,CAAC;QACJ,CAAC,CAAC;KACH,CAAC;AACJ,CAAC"}
@@ -0,0 +1,6 @@
1
+ /** Every MCP revision served by one Noodle HTTP origin, newest first. */
2
+ export declare const SERVED_MCP_PROTOCOL_VERSIONS: readonly ["2026-07-28", "2025-11-25", "2025-06-18", "2025-03-26", "2024-11-05", "2024-10-07"];
3
+ export type ServedMcpProtocolVersion = (typeof SERVED_MCP_PROTOCOL_VERSIONS)[number];
4
+ export type McpProtocolEra = 'legacy' | 'modern';
5
+ export declare const MODERN_MCP_PROTOCOL_VERSION: "2026-07-28";
6
+ //# sourceMappingURL=versions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versions.d.ts","sourceRoot":"","sources":["../../src/v2/versions.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,eAAO,MAAM,4BAA4B,+FAO/B,CAAC;AAEX,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,4BAA4B,CAAC,CAAC,MAAM,CAAC,CAAC;AACrF,MAAM,MAAM,cAAc,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEjD,eAAO,MAAM,2BAA2B,cAAkC,CAAC"}
@@ -0,0 +1,11 @@
1
+ /** Every MCP revision served by one Noodle HTTP origin, newest first. */
2
+ export const SERVED_MCP_PROTOCOL_VERSIONS = [
3
+ '2026-07-28',
4
+ '2025-11-25',
5
+ '2025-06-18',
6
+ '2025-03-26',
7
+ '2024-11-05',
8
+ '2024-10-07',
9
+ ];
10
+ export const MODERN_MCP_PROTOCOL_VERSION = SERVED_MCP_PROTOCOL_VERSIONS[0];
11
+ //# sourceMappingURL=versions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"versions.js","sourceRoot":"","sources":["../../src/v2/versions.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,MAAM,CAAC,MAAM,4BAA4B,GAAG;IAC1C,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;IACZ,YAAY;CACJ,CAAC;AAKX,MAAM,CAAC,MAAM,2BAA2B,GAAG,4BAA4B,CAAC,CAAC,CAAC,CAAC"}
@@ -23,11 +23,14 @@
23
23
  "typecheck": "tsc -p tsconfig.json --noEmit"
24
24
  },
25
25
  "dependencies": {
26
+ "@modelcontextprotocol/core": "2.0.0",
26
27
  "@modelcontextprotocol/sdk": "^1.29.0",
28
+ "@modelcontextprotocol/server": "2.0.0",
27
29
  "@noodle-borg/compiler": "0.0.0",
28
30
  "@noodle-borg/runtime": "0.0.0"
29
31
  },
30
32
  "devDependencies": {
33
+ "@modelcontextprotocol/client": "2.0.0",
31
34
  "@types/node": "^24.13.1"
32
35
  }
33
36
  }
@@ -3,6 +3,8 @@ export interface BillingUsageDispatchIdentity {
3
3
  readonly highConfidenceKeyHash?: string;
4
4
  readonly fallbackFingerprint: string;
5
5
  readonly semanticFingerprint: string;
6
+ /** Verified MRTR round for observation only; deliberately excluded from every identity digest. */
7
+ readonly invocationRound?: number;
6
8
  }
7
9
  /**
8
10
  * Parse the dedicated billing key once, then derive the stable version-1 dispatch identity for each call.
@@ -1 +1 @@
1
- {"version":3,"file":"usage-identity.d.ts","sourceRoot":"","sources":["../../src/billing/usage-identity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAE7E,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;CACtC;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,MAAM,GACd,CAAC,OAAO,EAAE,yBAAyB,KAAK,4BAA4B,CAGtE;AAED,wBAAgB,kCAAkC,CAChD,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,yBAAyB,GACjC,4BAA4B,CAkC9B;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO9D"}
1
+ {"version":3,"file":"usage-identity.d.ts","sourceRoot":"","sources":["../../src/billing/usage-identity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,6BAA6B,CAAC;AAE7E,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,qBAAqB,CAAC,EAAE,MAAM,CAAC;IACxC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,QAAQ,CAAC,mBAAmB,EAAE,MAAM,CAAC;IACrC,kGAAkG;IAClG,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,MAAM,GACd,CAAC,OAAO,EAAE,yBAAyB,KAAK,4BAA4B,CAGtE;AAED,wBAAgB,kCAAkC,CAChD,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,yBAAyB,GACjC,4BAA4B,CA0C9B;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAO9D"}
@@ -26,19 +26,27 @@ export function deriveBillingUsageDispatchIdentity(key, context) {
26
26
  requestMeta: context.requestMeta ?? null,
27
27
  semanticFingerprint,
28
28
  });
29
- const highConfidenceKeyHash = context.sessionId === undefined
30
- ? undefined
31
- : digest(key, {
29
+ const highConfidenceKeyHash = context.invocationId !== undefined
30
+ ? digest(key, {
32
31
  version: 1,
33
- kind: 'mcp_session_request',
32
+ kind: 'mcp_request_state_invocation',
34
33
  tenant,
35
- sessionId: context.sessionId,
36
- requestId: context.requestId,
37
- });
34
+ invocationId: context.invocationId,
35
+ })
36
+ : context.sessionId === undefined
37
+ ? undefined
38
+ : digest(key, {
39
+ version: 1,
40
+ kind: 'mcp_session_request',
41
+ tenant,
42
+ sessionId: context.sessionId,
43
+ requestId: context.requestId,
44
+ });
38
45
  return {
39
46
  ...(highConfidenceKeyHash !== undefined ? { highConfidenceKeyHash } : {}),
40
47
  fallbackFingerprint,
41
48
  semanticFingerprint,
49
+ ...(context.invocationRound === undefined ? {} : { invocationRound: context.invocationRound }),
42
50
  };
43
51
  }
44
52
  export function parseBillingUsageHmacKey(value) {
@@ -1 +1 @@
1
- {"version":3,"file":"usage-identity.js","sourceRoot":"","sources":["../../src/billing/usage-identity.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usage-identity.js","sourceRoot":"","sources":["../../src/billing/usage-identity.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { IncomingMessage, ServerResponse } from 'node:http';
2
2
  import { DEVELOPER_MCP_PATH } from '@noodle-borg/developer-mcp';
3
3
  import type { RequestEventStore } from '@noodle-borg/module';
4
- import { type Logger, type OwnerTokenVerifier, type TlsPosture } from '@noodle-borg/transport-http';
4
+ import { type Logger, type McpProtocolMode, type OwnerTokenVerifier, type TlsPosture } from '@noodle-borg/transport-http';
5
5
  import type { DeveloperGrantStore } from '../oauth/developer-grant.js';
6
6
  import type { ServerRegistry } from '../registry.js';
7
7
  import type { AuditSink } from '../store/audit.js';
@@ -19,6 +19,7 @@ export interface DeveloperMcpMountOptions {
19
19
  readonly logger: Logger;
20
20
  readonly tls: TlsPosture;
21
21
  readonly maxBody: number;
22
+ readonly protocolMode: McpProtocolMode;
22
23
  readonly publicBaseUrl?: string;
23
24
  readonly publicBaseDomain?: string;
24
25
  readonly now?: () => Date;
@@ -1 +1 @@
1
- {"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../../src/developer-mcp/mount.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AAGjE,OAAO,EAEL,kBAAkB,EAGnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,EAGL,KAAK,MAAM,EACX,KAAK,kBAAkB,EACvB,KAAK,UAAU,EAChB,MAAM,6BAA6B,CAAC;AAIrC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGrD,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAI9B,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC;IACtC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,kBAAkB,CAAC;IAC/C,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE,wBAAwB,GAChC,MAAM,CAGR;AAED,wBAAgB,kBAAkB,IAAI,SAAS,MAAM,EAAE,CAEtD;AAED,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CAqHf"}
1
+ {"version":3,"file":"mount.d.ts","sourceRoot":"","sources":["../../src/developer-mcp/mount.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,WAAW,CAAC;AACjE,OAAO,EAEL,kBAAkB,EAGnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,OAAO,EAGL,KAAK,MAAM,EACX,KAAK,eAAe,EACpB,KAAK,kBAAkB,EACvB,KAAK,UAAU,EAGhB,MAAM,6BAA6B,CAAC;AAIrC,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AACvE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,2BAA2B,CAAC;AACjE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGrD,OAAO,EAAE,kBAAkB,EAAE,CAAC;AAI9B,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,QAAQ,EAAE,cAAc,CAAC;IAClC,QAAQ,CAAC,YAAY,EAAE,iBAAiB,CAAC;IACzC,QAAQ,CAAC,MAAM,CAAC,EAAE,mBAAmB,CAAC;IACtC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,kBAAkB,CAAC;IAC/C,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,aAAa,CAAC,EAAE,iBAAiB,CAAC;IAC3C,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,GAAG,EAAE,UAAU,CAAC;IACzB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,eAAe,CAAC;IACvC,QAAQ,CAAC,aAAa,CAAC,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;IACnC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,IAAI,CAAC;CAC3B;AAED,wBAAgB,oBAAoB,CAClC,GAAG,EAAE,eAAe,EACpB,OAAO,EAAE,wBAAwB,GAChC,MAAM,CAGR;AAED,wBAAgB,kBAAkB,IAAI,SAAS,MAAM,EAAE,CAEtD;AAED,wBAAsB,yBAAyB,CAC7C,GAAG,EAAE,eAAe,EACpB,GAAG,EAAE,cAAc,EACnB,OAAO,EAAE,wBAAwB,GAChC,OAAO,CAAC,IAAI,CAAC,CA2Hf"}
@@ -1,7 +1,7 @@
1
1
  import { createHash, randomUUID } from 'node:crypto';
2
- import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js';
3
2
  import { createDeveloperMcpServer, DEVELOPER_MCP_PATH, developerMcpContextSchema, } from '@noodle-borg/developer-mcp';
4
- import { applySecurityHeaders, enforceHttps, } from '@noodle-borg/transport-http';
3
+ import { createPlatformDualEraMcpHandler } from '@noodle-borg/protocol';
4
+ import { applySecurityHeaders, enforceHttps, toWebRequest, writeWebResponse, } from '@noodle-borg/transport-http';
5
5
  import { bearerToken } from '../auth/deploy-gate.js';
6
6
  import { activeDeveloperGrantForIdentity } from '../auth/developer-grant-guard.js';
7
7
  import { baseFromRequest, normalizeServiceBase, readJsonBody, sendJson } from '../http-util.js';
@@ -38,6 +38,8 @@ export async function handleDeveloperMcpRequest(req, res, options) {
38
38
  sendJson(res, 503, { error: 'developer MCP is unavailable' });
39
39
  return;
40
40
  }
41
+ const logs = options.logs;
42
+ const requestEvents = options.requestEvents;
41
43
  const verified = await verifyToken(options.verifyOwnerToken, token, resource);
42
44
  if (verified === null) {
43
45
  sendChallenge(res, resource);
@@ -80,13 +82,12 @@ export async function handleDeveloperMcpRequest(req, res, options) {
80
82
  const parsedBody = body.value;
81
83
  const context = grantContext(identity, grant);
82
84
  let toolOutcome;
83
- const transport = new StreamableHTTPServerTransport({ enableJsonResponse: true });
84
- const server = createDeveloperMcpServer({
85
+ const handler = createPlatformDualEraMcpHandler(() => createDeveloperMcpServer({
85
86
  context,
86
87
  controlPlane: new ServiceDeveloperControlPlane({
87
88
  registry: options.registry,
88
- logs: options.logs,
89
- requestEvents: options.requestEvents,
89
+ logs,
90
+ requestEvents,
90
91
  controlPlane: options.controlPlane,
91
92
  audit: options.audit,
92
93
  publicBaseUrl: normalizeServiceBase(options.publicBaseUrl ?? baseFromRequest(req, options.tls)),
@@ -95,27 +96,28 @@ export async function handleDeveloperMcpRequest(req, res, options) {
95
96
  : { publicBaseDomain: options.publicBaseDomain }),
96
97
  ...(options.now === undefined ? {} : { now: options.now }),
97
98
  }),
98
- ...(options.now === undefined ? {} : { observedAt: () => options.now?.().toISOString() ?? '' }),
99
+ ...(options.now === undefined
100
+ ? {}
101
+ : { observedAt: () => options.now?.().toISOString() ?? '' }),
99
102
  onToolResult: (outcome) => {
100
103
  toolOutcome = {
101
104
  decision: outcome.decision,
102
105
  ...(outcome.errorCode === undefined ? {} : { errorCode: outcome.errorCode }),
103
106
  };
104
107
  },
105
- });
108
+ }), { protocolMode: options.protocolMode });
106
109
  try {
107
- // SDK 1.29's concrete optional callbacks are `T | undefined`, while its Transport interface uses
108
- // exact optional properties. The Node transport is the SDK's Transport implementation at runtime.
109
- await server.connect(transport);
110
- await transport.handleRequest(req, res, parsedBody);
110
+ const response = await handler.fetch(toWebRequest(req, JSON.stringify(parsedBody)), {
111
+ parsedBody,
112
+ });
113
+ await writeWebResponse(res, response);
111
114
  }
112
115
  catch {
113
116
  if (!res.headersSent)
114
117
  sendJson(res, 500, { error: 'internal error' });
115
118
  }
116
119
  finally {
117
- await transport.close().catch(() => undefined);
118
- await server.close().catch(() => undefined);
120
+ await handler.close().catch(() => undefined);
119
121
  await observeRequest(options, requestId, context, res.statusCode, startedAt, requestDetails(parsedBody, req), toolOutcome);
120
122
  }
121
123
  }