@farm.js/core 0.1.34 → 0.1.36

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 (282) hide show
  1. package/dist/agent-mcp-BVExL8rZ.d.mts +109 -0
  2. package/dist/agent-mcp-handler-LPJ2CADR.mjs +19 -0
  3. package/dist/agent-mcp-handler-SJAHFSPI.cjs +19 -0
  4. package/dist/agent-mcp-luzfXK-P.d.ts +109 -0
  5. package/dist/agent-runtime.cjs +5 -3
  6. package/dist/agent-runtime.d.mts +4 -5
  7. package/dist/agent-runtime.d.ts +4 -5
  8. package/dist/agent-runtime.mjs +4 -2
  9. package/dist/api/route-manager.cjs +7 -7
  10. package/dist/api/route-manager.d.mts +15 -10
  11. package/dist/api/route-manager.d.ts +15 -10
  12. package/dist/api/route-manager.mjs +6 -6
  13. package/dist/api/runtime.cjs +7 -5
  14. package/dist/api/runtime.d.mts +7 -66
  15. package/dist/api/runtime.d.ts +7 -66
  16. package/dist/api/runtime.mjs +7 -5
  17. package/dist/api.cjs +9 -9
  18. package/dist/api.d.mts +8 -9
  19. package/dist/api.d.ts +8 -9
  20. package/dist/api.mjs +8 -8
  21. package/dist/{app-q4rmZlXK.d.mts → app-BukwkFIu.d.mts} +52 -12
  22. package/dist/{app-DgotYGbq.d.ts → app-Yfa2dsFy.d.ts} +52 -12
  23. package/dist/app-markdown.cjs +6 -6
  24. package/dist/app-markdown.d.mts +5 -6
  25. package/dist/app-markdown.d.ts +5 -6
  26. package/dist/app-markdown.mjs +5 -5
  27. package/dist/{chunk-XV5DJTBX.mjs → chunk-276VJSM6.mjs} +627 -260
  28. package/dist/{chunk-36MK5YCW.cjs → chunk-2YTDKNH3.cjs} +547 -240
  29. package/dist/{chunk-VHANUNEG.mjs → chunk-35GKZR22.mjs} +2 -2
  30. package/dist/{chunk-LR5QSC2P.mjs → chunk-35WV46VL.mjs} +399 -92
  31. package/dist/{chunk-UX5S4JEO.cjs → chunk-42NHY7HW.cjs} +57 -7
  32. package/dist/{chunk-U4PTAHW3.mjs → chunk-4E5AEDKY.mjs} +7 -11
  33. package/dist/{chunk-NGVORZVZ.mjs → chunk-4E5WBPEG.mjs} +73 -351
  34. package/dist/{chunk-AQZFOP7S.mjs → chunk-4GLOOWKE.mjs} +5 -5
  35. package/dist/{chunk-7BT4H4P7.cjs → chunk-4NU4GGTC.cjs} +2 -2
  36. package/dist/{chunk-AGC75XAE.mjs → chunk-4WCZJQUO.mjs} +55 -5
  37. package/dist/chunk-4WQ6PGSJ.cjs +367 -0
  38. package/dist/{chunk-QCFFHV5H.mjs → chunk-4WVJLURN.mjs} +1 -1
  39. package/dist/chunk-6SJ2KJTA.mjs +314 -0
  40. package/dist/chunk-75RZHGLS.cjs +135 -0
  41. package/dist/{chunk-P64MIF5B.cjs → chunk-ADEA7PN3.cjs} +483 -60
  42. package/dist/{chunk-YQVSHTMR.mjs → chunk-AJQTP4OO.mjs} +1 -1
  43. package/dist/{chunk-TA5G2HWD.cjs → chunk-AO6RYU5N.cjs} +31 -28
  44. package/dist/{chunk-MOKLYNHV.cjs → chunk-BO36SELV.cjs} +6 -6
  45. package/dist/{chunk-7Y6ZNFPX.mjs → chunk-BPOF5U4N.mjs} +17 -7
  46. package/dist/{chunk-JHWOVJ3M.mjs → chunk-BUGNQIHC.mjs} +5 -0
  47. package/dist/{chunk-TDFPACVX.cjs → chunk-CBJJH36A.cjs} +50 -25
  48. package/dist/{chunk-VKNHTSAP.cjs → chunk-CGBDNNSM.cjs} +2 -2
  49. package/dist/chunk-CI6E3UOH.cjs +314 -0
  50. package/dist/{chunk-QZCT2CQ4.mjs → chunk-CXEN47J3.mjs} +64 -2
  51. package/dist/{chunk-ATK2R4CH.cjs → chunk-D227TIEN.cjs} +14 -4
  52. package/dist/{chunk-QGYRXFU2.cjs → chunk-D2BB47NB.cjs} +8 -8
  53. package/dist/chunk-DTSROJ5J.mjs +367 -0
  54. package/dist/{chunk-ODBZYBAB.cjs → chunk-DZ5ZVB2K.cjs} +1 -1
  55. package/dist/{chunk-ROUTX2E5.cjs → chunk-ECKF2BAM.cjs} +18 -5
  56. package/dist/{chunk-3LUF2PE2.cjs → chunk-EK4QAEFZ.cjs} +67 -5
  57. package/dist/{chunk-VVBO3QH7.mjs → chunk-ENLZ4R3Y.mjs} +10 -1
  58. package/dist/{chunk-XXJU7FCC.cjs → chunk-EUV4YR3V.cjs} +2 -2
  59. package/dist/{chunk-HR5KPHC2.mjs → chunk-EWET4D2Y.mjs} +1 -1
  60. package/dist/{chunk-PXKIEXZD.mjs → chunk-F5QO4FNE.mjs} +1 -1
  61. package/dist/{chunk-MIDIZJZC.cjs → chunk-FO427P6I.cjs} +22 -12
  62. package/dist/{chunk-AWC4VUZL.cjs → chunk-GQ3Z3IZI.cjs} +14 -14
  63. package/dist/{chunk-JDPAKVS4.mjs → chunk-GQRWBCWK.mjs} +8 -5
  64. package/dist/{chunk-75WGQVQA.cjs → chunk-HITLGIAO.cjs} +10 -1
  65. package/dist/{chunk-WNNYOOIB.mjs → chunk-HOXTWRGB.mjs} +1 -1
  66. package/dist/{chunk-KROWKCUH.cjs → chunk-JGLC4TO3.cjs} +8 -1
  67. package/dist/{chunk-QJ3J6MZT.cjs → chunk-JNUWCDTF.cjs} +8 -8
  68. package/dist/{chunk-BTAG7LI7.cjs → chunk-JZVADIOD.cjs} +2 -2
  69. package/dist/{chunk-EM6SBQKM.cjs → chunk-KIIMAWOJ.cjs} +37 -2
  70. package/dist/{chunk-43FMW62B.mjs → chunk-KMTGADN3.mjs} +28 -0
  71. package/dist/{chunk-GOABMOX3.mjs → chunk-LSZAVSGY.mjs} +468 -45
  72. package/dist/{chunk-2NQQ5H5G.cjs → chunk-M7MKQXAF.cjs} +2 -1
  73. package/dist/{chunk-GNSDTTWZ.mjs → chunk-MKYBIIAQ.mjs} +30 -5
  74. package/dist/{chunk-ZHPHJPQP.cjs → chunk-MRMI32SN.cjs} +88 -366
  75. package/dist/{chunk-7M52YUMY.cjs → chunk-N2NAS2AM.cjs} +2 -2
  76. package/dist/{chunk-SJVKK4JE.cjs → chunk-NMHWYWDR.cjs} +1144 -777
  77. package/dist/chunk-NRDBW4MP.mjs +45 -0
  78. package/dist/{chunk-657WJNRY.mjs → chunk-O6I6VWKK.mjs} +20 -5
  79. package/dist/{chunk-O27L4YAA.mjs → chunk-O6WAEAX3.mjs} +2 -2
  80. package/dist/chunk-OFZUJMCU.mjs +601 -0
  81. package/dist/{chunk-ZKP7C2B6.mjs → chunk-OHLSEQ57.mjs} +22 -13
  82. package/dist/{chunk-X242HVD5.mjs → chunk-OO7GXVSR.mjs} +1 -1
  83. package/dist/chunk-PTZ2TVNE.cjs +178 -0
  84. package/dist/{chunk-3ATMYLLJ.mjs → chunk-Q2KB32T4.mjs} +1 -1
  85. package/dist/{chunk-LHODW25H.mjs → chunk-QORUJDIV.mjs} +2 -2
  86. package/dist/{chunk-UBO4SGH4.mjs → chunk-RHAZ22ZN.mjs} +2 -1
  87. package/dist/{chunk-G26MUMKL.cjs → chunk-S6VYG6XU.cjs} +23 -8
  88. package/dist/{chunk-6VVL3MHY.mjs → chunk-SC2WYWPF.mjs} +1 -1
  89. package/dist/{chunk-MPEYMSCF.cjs → chunk-SDOTRX3V.cjs} +5 -5
  90. package/dist/{chunk-BMWDEBXO.cjs → chunk-SHLXACIO.cjs} +31 -3
  91. package/dist/{chunk-LMJ7VRHZ.mjs → chunk-T4OGRVNS.mjs} +13 -3
  92. package/dist/{chunk-T5CERMEH.cjs → chunk-T5OJPTVN.cjs} +2 -2
  93. package/dist/{chunk-Z2YLTERK.cjs → chunk-TE2G5ION.cjs} +6 -6
  94. package/dist/chunk-UH6QN5NL.mjs +178 -0
  95. package/dist/{chunk-PQDFUSXD.cjs → chunk-UVW64BCB.cjs} +44 -35
  96. package/dist/{chunk-VCCUOMQN.mjs → chunk-VILIPRS6.mjs} +1 -1
  97. package/dist/{chunk-A5FGU2WU.cjs → chunk-VQLJWDVW.cjs} +19 -23
  98. package/dist/{chunk-VPTDD5XF.cjs → chunk-WBKEZXWE.cjs} +5 -0
  99. package/dist/{chunk-K3F2E6GS.cjs → chunk-WC5UV2HQ.cjs} +2 -2
  100. package/dist/chunk-WWFTAUFG.cjs +45 -0
  101. package/dist/{chunk-ZUSJDQ2Q.mjs → chunk-WWIKMBRN.mjs} +1 -1
  102. package/dist/{chunk-3VSKDFAT.mjs → chunk-WZ77PUAM.mjs} +1 -1
  103. package/dist/{chunk-CLJYVZAD.mjs → chunk-XCMCS4DA.mjs} +11 -1
  104. package/dist/{chunk-F6OHXPWR.mjs → chunk-YFILVET3.mjs} +8 -1
  105. package/dist/{chunk-DZ4DTRJ5.cjs → chunk-YKX5BK66.cjs} +7 -7
  106. package/dist/chunk-YSLWRWWP.cjs +601 -0
  107. package/dist/{chunk-LI2LMOLR.mjs → chunk-YWMZUGIS.mjs} +18 -5
  108. package/dist/chunk-ZLAT2CWY.mjs +135 -0
  109. package/dist/{chunk-XF7Q24PF.mjs → chunk-ZMMBIVQM.mjs} +35 -0
  110. package/dist/{chunk-U74I55WB.cjs → chunk-ZWM5KGAA.cjs} +19 -9
  111. package/dist/{client-plugins-CLObcuCq.d.mts → client-plugins-C3mK9Pol.d.mts} +300 -7
  112. package/dist/{client-plugins-DZjHC4Mi.d.ts → client-plugins-r1mOtSC1.d.ts} +300 -7
  113. package/dist/client-plugins.d.mts +4 -5
  114. package/dist/client-plugins.d.ts +4 -5
  115. package/dist/client.cjs +5 -5
  116. package/dist/client.d.mts +8 -9
  117. package/dist/client.d.ts +8 -9
  118. package/dist/client.mjs +4 -4
  119. package/dist/config.d.mts +4 -5
  120. package/dist/config.d.ts +4 -5
  121. package/dist/{devtools-RNXCTS4R.mjs → devtools-ERIKFEXX.mjs} +11 -10
  122. package/dist/{devtools-HU6Y2MNV.cjs → devtools-JZJJY5CK.cjs} +12 -11
  123. package/dist/docs.cjs +15 -14
  124. package/dist/docs.d.mts +41 -4
  125. package/dist/docs.d.ts +41 -4
  126. package/dist/docs.mjs +14 -13
  127. package/dist/i18n/client.d.mts +2 -2
  128. package/dist/i18n/client.d.ts +2 -2
  129. package/dist/i18n/index.d.mts +3 -3
  130. package/dist/i18n/index.d.ts +3 -3
  131. package/dist/i18n/server.d.mts +5 -5
  132. package/dist/i18n/server.d.ts +5 -5
  133. package/dist/image/server.cjs +3 -3
  134. package/dist/image/server.mjs +2 -2
  135. package/dist/image/sharp.cjs +10 -10
  136. package/dist/image/sharp.mjs +2 -2
  137. package/dist/{index-a-8Z5kZU.d.mts → index-BJJfLxJo.d.mts} +2 -2
  138. package/dist/{index-BWVfxIsO.d.ts → index-CwoOP-MW.d.ts} +2 -2
  139. package/dist/index.cjs +51 -44
  140. package/dist/index.d.mts +20 -21
  141. package/dist/index.d.ts +20 -21
  142. package/dist/index.mjs +50 -43
  143. package/dist/integrations.cjs +7 -3
  144. package/dist/integrations.d.mts +4 -5
  145. package/dist/integrations.d.ts +4 -5
  146. package/dist/integrations.mjs +6 -2
  147. package/dist/internal/app-markdown-runtime.cjs +5 -5
  148. package/dist/internal/app-markdown-runtime.d.mts +5 -6
  149. package/dist/internal/app-markdown-runtime.d.ts +5 -6
  150. package/dist/internal/app-markdown-runtime.mjs +4 -4
  151. package/dist/internal/build-runtime.cjs +32 -30
  152. package/dist/internal/build-runtime.d.mts +6 -7
  153. package/dist/internal/build-runtime.d.ts +6 -7
  154. package/dist/internal/build-runtime.mjs +31 -29
  155. package/dist/internal/cli-runtime.cjs +17 -16
  156. package/dist/internal/cli-runtime.mjs +16 -15
  157. package/dist/internal/client-error-overlay.cjs +6 -6
  158. package/dist/internal/client-error-overlay.mjs +2 -2
  159. package/dist/internal/client-runtime.cjs +2 -2
  160. package/dist/internal/client-runtime.mjs +1 -1
  161. package/dist/internal/compression-runtime.d.mts +4 -5
  162. package/dist/internal/compression-runtime.d.ts +4 -5
  163. package/dist/internal/config-runtime.cjs +12 -11
  164. package/dist/internal/config-runtime.d.mts +5 -6
  165. package/dist/internal/config-runtime.d.ts +5 -6
  166. package/dist/internal/config-runtime.mjs +11 -10
  167. package/dist/internal/isolated-boundary.cjs +3 -2
  168. package/dist/internal/isolated-boundary.d.mts +1 -1
  169. package/dist/internal/isolated-boundary.d.ts +1 -1
  170. package/dist/internal/isolated-boundary.mjs +2 -1
  171. package/dist/internal/metadata-image-runtime.cjs +3 -3
  172. package/dist/internal/metadata-image-runtime.mjs +2 -2
  173. package/dist/internal/product-telemetry-runtime.cjs +2 -2
  174. package/dist/internal/product-telemetry-runtime.mjs +1 -1
  175. package/dist/internal/production-runtime.cjs +63 -25
  176. package/dist/internal/production-runtime.d.mts +117 -37
  177. package/dist/internal/production-runtime.d.ts +117 -37
  178. package/dist/internal/production-runtime.mjs +65 -27
  179. package/dist/internal/server-tree.cjs +12 -0
  180. package/dist/internal/server-tree.d.mts +27 -0
  181. package/dist/internal/server-tree.d.ts +27 -0
  182. package/dist/internal/server-tree.mjs +12 -0
  183. package/dist/{layers-BRQF5ETU.mjs → layers-UTB43B7A.mjs} +1 -1
  184. package/dist/layers-VUWIOFEO.cjs +18 -0
  185. package/dist/markdown.cjs +4 -4
  186. package/dist/markdown.d.mts +4 -5
  187. package/dist/markdown.d.ts +4 -5
  188. package/dist/markdown.mjs +3 -3
  189. package/dist/middleware.cjs +7 -7
  190. package/dist/middleware.d.mts +6 -7
  191. package/dist/middleware.d.ts +6 -7
  192. package/dist/middleware.mjs +6 -6
  193. package/dist/navigation.cjs +5 -5
  194. package/dist/navigation.d.mts +7 -8
  195. package/dist/navigation.d.ts +7 -8
  196. package/dist/navigation.mjs +4 -4
  197. package/dist/{nitro-HSAQFXSS.cjs → nitro-7F65EZZS.cjs} +3 -3
  198. package/dist/{nitro-4XGPNIK4.mjs → nitro-MPZJGPXK.mjs} +2 -2
  199. package/dist/{observability-BupkiN0m.d.mts → observability-CoXunYhS.d.mts} +4 -3
  200. package/dist/{observability-BupkiN0m.d.ts → observability-CoXunYhS.d.ts} +4 -3
  201. package/dist/observability.d.mts +1 -1
  202. package/dist/observability.d.ts +1 -1
  203. package/dist/plugin.cjs +28 -26
  204. package/dist/plugin.d.mts +4 -5
  205. package/dist/plugin.d.ts +4 -5
  206. package/dist/plugin.mjs +27 -25
  207. package/dist/{production-runtime-CysZl3EV.d.mts → production-runtime-CCeVZXst.d.mts} +4 -4
  208. package/dist/{production-runtime-BU5ETAK9.d.ts → production-runtime-DPnsggY3.d.ts} +4 -4
  209. package/dist/query/client.cjs +6 -6
  210. package/dist/query/client.mjs +2 -2
  211. package/dist/{render-plan-CKr4ltOd.d.mts → render-plan-BuGaPFe6.d.mts} +1 -1
  212. package/dist/{render-plan-D72O1qm4.d.ts → render-plan-Cw4f5E_R.d.ts} +1 -1
  213. package/dist/renderer/react/server.cjs +10 -4
  214. package/dist/renderer/react/server.d.mts +2 -1
  215. package/dist/renderer/react/server.d.ts +2 -1
  216. package/dist/renderer/react/server.mjs +7 -1
  217. package/dist/renderer-client.cjs +5 -5
  218. package/dist/renderer-client.d.mts +6 -7
  219. package/dist/renderer-client.d.ts +6 -7
  220. package/dist/renderer-client.mjs +2 -2
  221. package/dist/renderer.d.mts +2 -0
  222. package/dist/renderer.d.ts +2 -0
  223. package/dist/{request-DbyOYI2j.d.ts → request-Bkg-hERy.d.ts} +1 -1
  224. package/dist/{request-Be83WafN.d.mts → request-CsGARcAw.d.mts} +1 -1
  225. package/dist/request.d.mts +5 -6
  226. package/dist/request.d.ts +5 -6
  227. package/dist/{resolver-PPEeiJ6M.d.ts → resolver-DadfRL6F.d.ts} +1 -1
  228. package/dist/{resolver-DhW0CqZN.d.mts → resolver-khasx3fU.d.mts} +1 -1
  229. package/dist/{route-rendering-CtVMpV-k.d.ts → route-rendering-BUZMH_64.d.ts} +1 -1
  230. package/dist/{route-rendering-BG56SzvJ.d.mts → route-rendering-f11yh5dp.d.mts} +1 -1
  231. package/dist/{router-D94-SDlW.d.ts → router-B8CR9GbD.d.ts} +1 -1
  232. package/dist/{router-ALUvm8gC.d.mts → router-Cp6yRE8A.d.mts} +1 -1
  233. package/dist/routes.d.mts +4 -5
  234. package/dist/routes.d.ts +4 -5
  235. package/dist/{runtime-BirxPwbZ.d.ts → runtime-BgDQzBiu.d.ts} +2 -2
  236. package/dist/runtime-CAEv36S_.d.mts +69 -0
  237. package/dist/runtime-CQVsT330.d.ts +69 -0
  238. package/dist/{runtime-AOJge4vQ.d.mts → runtime-CV2UCV-5.d.mts} +2 -2
  239. package/dist/server-action-security.cjs +3 -3
  240. package/dist/server-action-security.mjs +2 -2
  241. package/dist/server-fn.cjs +4 -4
  242. package/dist/server-fn.mjs +3 -3
  243. package/dist/server-plugins.d.mts +5 -6
  244. package/dist/server-plugins.d.ts +5 -6
  245. package/dist/server-query.cjs +5 -5
  246. package/dist/server-query.mjs +4 -4
  247. package/dist/server.cjs +47 -45
  248. package/dist/server.d.mts +13 -14
  249. package/dist/server.d.ts +13 -14
  250. package/dist/server.mjs +30 -28
  251. package/dist/{spa-router-CxK3USIz.d.ts → spa-router-BuciWGCZ.d.ts} +3 -3
  252. package/dist/{spa-router-DbxNRKOB.d.mts → spa-router-DwbqGkGj.d.mts} +3 -3
  253. package/dist/testing.cjs +9 -9
  254. package/dist/testing.d.mts +4 -5
  255. package/dist/testing.d.ts +4 -5
  256. package/dist/testing.mjs +7 -7
  257. package/dist/{types-Z0aotQ8w.d.mts → types-CnH8DOqo.d.mts} +1 -1
  258. package/dist/{types-Z0aotQ8w.d.ts → types-CnH8DOqo.d.ts} +1 -1
  259. package/dist/{utils-4wVRcpOw.d.mts → utils-B9V0S_yL.d.mts} +1 -1
  260. package/dist/{utils-311Y8eoK.d.ts → utils-CaoWKtYM.d.ts} +1 -1
  261. package/dist/version.cjs +2 -2
  262. package/dist/version.mjs +1 -1
  263. package/dist/vite.cjs +28 -26
  264. package/dist/vite.d.mts +4 -5
  265. package/dist/vite.d.ts +4 -5
  266. package/dist/vite.mjs +27 -25
  267. package/dist/{workflows-CR9ex-gz.d.ts → workflows-jZ4BcdoZ.d.mts} +1 -1
  268. package/dist/{workflows-CR9ex-gz.d.mts → workflows-jZ4BcdoZ.d.ts} +1 -1
  269. package/dist/workflows.cjs +3 -3
  270. package/dist/workflows.d.mts +1 -1
  271. package/dist/workflows.d.ts +1 -1
  272. package/dist/workflows.mjs +2 -2
  273. package/package.json +9 -1
  274. package/dist/chunk-M64YUMA4.cjs +0 -58
  275. package/dist/chunk-QLQ32WC4.mjs +0 -58
  276. package/dist/layers-4PNE2HOY.cjs +0 -18
  277. package/dist/metadata-2HSU2i_w.d.mts +0 -52
  278. package/dist/metadata-Cjs8JMRM.d.ts +0 -52
  279. package/dist/types-DFbjpjXX.d.mts +0 -105
  280. package/dist/types-DFbjpjXX.d.ts +0 -105
  281. package/dist/{chunk-2F2ER724.cjs → chunk-BPMATOP2.cjs} +2 -2
  282. package/dist/{chunk-IHNMMXHV.mjs → chunk-OTC5BDGO.mjs} +3 -3
@@ -0,0 +1,135 @@
1
+ import {
2
+ resolveFarmAPICanonicalPathname,
3
+ resolveFarmAPIServerRoutePath
4
+ } from "./chunk-BTHHUD7Q.mjs";
5
+ import {
6
+ matchAPIRoute
7
+ } from "./chunk-O7BH5O46.mjs";
8
+ import {
9
+ __name
10
+ } from "./chunk-LPEX4YW6.mjs";
11
+
12
+ // src/mcp-catalog.ts
13
+ var CATALOGS = /* @__PURE__ */ Symbol.for("farm.mcp.catalogs");
14
+ function catalogs() {
15
+ const state = globalThis;
16
+ return state[CATALOGS] ?? (state[CATALOGS] = /* @__PURE__ */ new Map());
17
+ }
18
+ __name(catalogs, "catalogs");
19
+ function _listFarmMCPCatalogs() {
20
+ return [...catalogs().values()];
21
+ }
22
+ __name(_listFarmMCPCatalogs, "_listFarmMCPCatalogs");
23
+ function _publishFarmMCPCatalog(server, tools, details) {
24
+ const entry = { server, tools, ...details ? { details } : {} };
25
+ catalogs().set(server.path, entry);
26
+ return () => {
27
+ if (catalogs().get(server.path) === entry) catalogs().delete(server.path);
28
+ };
29
+ }
30
+ __name(_publishFarmMCPCatalog, "_publishFarmMCPCatalog");
31
+ var SERVERS = /* @__PURE__ */ Symbol.for("farm.mcp.servers");
32
+ function registeredServers() {
33
+ const state = globalThis;
34
+ return state[SERVERS] ?? (state[SERVERS] = /* @__PURE__ */ new Map());
35
+ }
36
+ __name(registeredServers, "registeredServers");
37
+ function _listFarmRegisteredMCPServers() {
38
+ return [...registeredServers().values()];
39
+ }
40
+ __name(_listFarmRegisteredMCPServers, "_listFarmRegisteredMCPServers");
41
+ function registerFarmMCPServer(server) {
42
+ const entry = validateFarmMCPServerRegistration(server);
43
+ const key = entry.path ?? entry.url;
44
+ registeredServers().set(key, entry);
45
+ return () => {
46
+ if (registeredServers().get(key) === entry) registeredServers().delete(key);
47
+ };
48
+ }
49
+ __name(registerFarmMCPServer, "registerFarmMCPServer");
50
+ function validateFarmMCPServerRegistration(server) {
51
+ if (!server || typeof server !== "object") {
52
+ throw new TypeError("registerFarmMCPServer expects a server object.");
53
+ }
54
+ const text = /* @__PURE__ */ __name((key, required) => {
55
+ const value = server[key];
56
+ if (value === void 0 && !required) return void 0;
57
+ if (typeof value !== "string" || !value.trim()) {
58
+ throw new TypeError(`registerFarmMCPServer ${key} must be a non-empty string.`);
59
+ }
60
+ return value.trim();
61
+ }, "text");
62
+ const name = text("name", true);
63
+ const version = text("version", true);
64
+ const title = text("title", false);
65
+ const description = text("description", false);
66
+ const { path, url } = server;
67
+ if (path === void 0 === (url === void 0)) {
68
+ throw new TypeError("registerFarmMCPServer takes exactly one of path and url.");
69
+ }
70
+ let endpoint;
71
+ if (path !== void 0) {
72
+ if (typeof path !== "string" || !/^\/(?!\/)[^?#\\\s]*$/.test(path) || path.split("/").some((segment) => segment === "." || segment === "..")) {
73
+ throw new TypeError(
74
+ "registerFarmMCPServer path must be an absolute app path without a query, hash, or dot segments."
75
+ );
76
+ }
77
+ endpoint = { path: path.length > 1 ? path.replace(/\/+$/, "") : path };
78
+ } else {
79
+ let parsed;
80
+ try {
81
+ parsed = typeof url === "string" ? new URL(url) : void 0;
82
+ } catch {
83
+ parsed = void 0;
84
+ }
85
+ if (!parsed || parsed.protocol !== "https:" && parsed.protocol !== "http:" || parsed.username || parsed.password || parsed.search || parsed.hash) {
86
+ throw new TypeError(
87
+ "registerFarmMCPServer url must be an absolute http(s) URL without credentials, a query, or a hash."
88
+ );
89
+ }
90
+ endpoint = { url: `${parsed.origin}${parsed.pathname.replace(/\/+$/, "")}` };
91
+ }
92
+ const { protocolVersions } = server;
93
+ if (protocolVersions !== void 0 && (!Array.isArray(protocolVersions) || protocolVersions.some((version2) => typeof version2 !== "string" || !version2.trim()))) {
94
+ throw new TypeError("registerFarmMCPServer protocolVersions must be non-empty strings.");
95
+ }
96
+ return Object.freeze({
97
+ name,
98
+ version,
99
+ ...title ? { title } : {},
100
+ ...description ? { description } : {},
101
+ ...protocolVersions?.length ? { protocolVersions: Object.freeze([...protocolVersions]) } : {},
102
+ ...endpoint
103
+ });
104
+ }
105
+ __name(validateFarmMCPServerRegistration, "validateFarmMCPServerRegistration");
106
+ function _findFarmMCPEndpointTool(method, pathname, serverBasePath) {
107
+ const upperMethod = method.toUpperCase();
108
+ for (const { server, tools } of catalogs().values()) {
109
+ const routes = /* @__PURE__ */ new Map();
110
+ for (const tool of tools) {
111
+ if (tool.kind === "endpoint" && tool.method === upperMethod) {
112
+ routes.set(tool.path, { path: tool.path, name: tool.name });
113
+ }
114
+ }
115
+ if (routes.size === 0) continue;
116
+ const canonical = serverBasePath ? resolveFarmAPICanonicalPathname(pathname, serverBasePath) : pathname;
117
+ const match = matchAPIRoute(routes, canonical);
118
+ if (match) {
119
+ return {
120
+ name: match.route.name,
121
+ endpoint: resolveFarmAPIServerRoutePath(server.path, serverBasePath)
122
+ };
123
+ }
124
+ }
125
+ return void 0;
126
+ }
127
+ __name(_findFarmMCPEndpointTool, "_findFarmMCPEndpointTool");
128
+
129
+ export {
130
+ _listFarmMCPCatalogs,
131
+ _publishFarmMCPCatalog,
132
+ _listFarmRegisteredMCPServers,
133
+ registerFarmMCPServer,
134
+ _findFarmMCPEndpointTool
135
+ };
@@ -118,6 +118,15 @@ var DEFAULT_FARM_SERVER_REQUEST_TIMEOUT = 3e5;
118
118
  var DEFAULT_FARM_SERVER_KEEP_ALIVE_TIMEOUT = 5e3;
119
119
  var DEFAULT_FARM_SERVER_GRACEFUL_SHUTDOWN_TIMEOUT = 3e4;
120
120
  var MAX_FARM_SERVER_TIMEOUT = 2147483647;
121
+ function createFarmWeakETag(body) {
122
+ let hash = 2166136261;
123
+ for (let index = 0; index < body.length; index++) {
124
+ hash ^= body.charCodeAt(index);
125
+ hash = Math.imul(hash, 16777619);
126
+ }
127
+ return `W/"${(hash >>> 0).toString(16).padStart(8, "0")}"`;
128
+ }
129
+ __name(createFarmWeakETag, "createFarmWeakETag");
121
130
  function matchesFarmIfNoneMatch(value, etag) {
122
131
  const expected = parseEntityTag(trimOptionalWhitespace(etag));
123
132
  if (!expected) return false;
@@ -419,6 +428,30 @@ async function readNodeRequestBody(request, limit) {
419
428
  });
420
429
  }
421
430
  __name(readNodeRequestBody, "readNodeRequestBody");
431
+ function createFarmNodeRequestBodyStream(request) {
432
+ let iterator;
433
+ return new ReadableStream(
434
+ {
435
+ async pull(controller) {
436
+ iterator ?? (iterator = request[Symbol.asyncIterator]());
437
+ const { value, done } = await iterator.next();
438
+ if (done) {
439
+ controller.close();
440
+ return;
441
+ }
442
+ controller.enqueue(
443
+ value instanceof Uint8Array ? value : new TextEncoder().encode(String(value))
444
+ );
445
+ },
446
+ async cancel(reason) {
447
+ await iterator?.return?.(reason);
448
+ }
449
+ },
450
+ // No eager pull: the request stays untouched until the handler reads it.
451
+ { highWaterMark: 0 }
452
+ );
453
+ }
454
+ __name(createFarmNodeRequestBodyStream, "createFarmNodeRequestBodyStream");
422
455
  function createFarmRequestBodyErrorResponse(error) {
423
456
  if (!(error instanceof FarmRequestBodyError)) return null;
424
457
  return new Response(error.status === 413 ? "Payload Too Large" : "Bad Request", {
@@ -459,6 +492,7 @@ export {
459
492
  copyRequestContext,
460
493
  createFarmNodeRequestAbortSignal,
461
494
  DEFAULT_FARM_SERVER_BODY_SIZE_LIMIT,
495
+ createFarmWeakETag,
462
496
  matchesFarmIfNoneMatch,
463
497
  resolveFarmServerConfig,
464
498
  parseBodySizeLimit,
@@ -466,5 +500,6 @@ export {
466
500
  bufferFarmRequestBody,
467
501
  readFarmRequestBody,
468
502
  readNodeRequestBody,
503
+ createFarmNodeRequestBodyStream,
469
504
  createFarmRequestBodyErrorResponse
470
505
  };
@@ -1,6 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } else { var newObj = {}; if (obj != null) { for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { newObj[key] = obj[key]; } } } newObj.default = obj; return newObj; } } function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }
2
2
 
3
- var _chunk2NQQ5H5Gcjs = require('./chunk-2NQQ5H5G.cjs');
3
+
4
+ var _chunkM7MKQXAFcjs = require('./chunk-M7MKQXAF.cjs');
4
5
 
5
6
 
6
7
 
@@ -19,21 +20,21 @@ var _chunkM2L4MYDQcjs = require('./chunk-M2L4MYDQ.cjs');
19
20
 
20
21
 
21
22
 
22
- var _chunkBMWDEBXOcjs = require('./chunk-BMWDEBXO.cjs');
23
+ var _chunkSHLXACIOcjs = require('./chunk-SHLXACIO.cjs');
23
24
 
24
25
 
25
26
  var _chunk5QIKR7RRcjs = require('./chunk-5QIKR7RR.cjs');
26
27
 
27
28
 
28
- var _chunkKNBBQHO2cjs = require('./chunk-KNBBQHO2.cjs');
29
-
30
-
31
29
  var _chunkE3UK5IIBcjs = require('./chunk-E3UK5IIB.cjs');
32
30
 
33
31
 
34
32
  var _chunkUQZ4AYTHcjs = require('./chunk-UQZ4AYTH.cjs');
35
33
 
36
34
 
35
+ var _chunkKNBBQHO2cjs = require('./chunk-KNBBQHO2.cjs');
36
+
37
+
37
38
 
38
39
 
39
40
  var _chunkOX6O6WVAcjs = require('./chunk-OX6O6WVA.cjs');
@@ -193,7 +194,16 @@ var _path = require('path'); var path = _interopRequireWildcard(_path);
193
194
 
194
195
  // src/middleware/path.ts
195
196
  function appendMiddlewareRoutePath(routePath, directoryName) {
196
- if (directoryName.startsWith("(") && directoryName.endsWith(")") || _chunk2NQQ5H5Gcjs.isRouteSlotSegment.call(void 0, directoryName)) {
197
+ const marker = _chunkM7MKQXAFcjs.parseInterceptionMarker.call(void 0, directoryName);
198
+ if (marker) {
199
+ const owner = routePath.split("/").filter(Boolean);
200
+ const parts = [
201
+ ...marker.root ? [] : owner.slice(0, Math.max(0, owner.length - marker.up)),
202
+ ...marker.remainder ? [marker.remainder] : []
203
+ ];
204
+ return `/${parts.join("/")}`;
205
+ }
206
+ if (directoryName.startsWith("(") && directoryName.endsWith(")") || _chunkM7MKQXAFcjs.isRouteSlotSegment.call(void 0, directoryName)) {
197
207
  return routePath;
198
208
  }
199
209
  return routePath === "/" ? `/${directoryName}` : `${routePath}/${directoryName}`;
@@ -287,7 +297,7 @@ var _MiddlewareManager = class _MiddlewareManager {
287
297
  }
288
298
  const entries = fs.readdirSync(dir, { withFileTypes: true });
289
299
  for (const entry of entries) {
290
- if (entry.isDirectory() && !entry.name.startsWith(".") && !entry.name.startsWith("_")) {
300
+ if (entry.isDirectory() && !entry.name.startsWith(".")) {
291
301
  await this.discoverInDirectory(
292
302
  path.join(dir, entry.name),
293
303
  appendMiddlewareRoutePath(routePath, entry.name),
@@ -317,11 +327,11 @@ var _MiddlewareManager = class _MiddlewareManager {
317
327
  try {
318
328
  let module;
319
329
  if (this.viteServer) {
320
- module = await _chunkBMWDEBXOcjs.loadFarmDevModule.call(void 0, this.viteServer, filePath);
330
+ module = await _chunkSHLXACIOcjs.loadFarmDevModule.call(void 0, this.viteServer, filePath);
321
331
  } else {
322
332
  module = await import(
323
333
  /* @vite-ignore */
324
- _chunkBMWDEBXOcjs.toFileModuleUrl.call(void 0, filePath)
334
+ _chunkSHLXACIOcjs.toFileModuleUrl.call(void 0, filePath)
325
335
  );
326
336
  }
327
337
  const normalized = _chunk3BU22U3Mcjs.normalizeMiddlewareModule.call(void 0, module, routePath);