@farm.js/core 0.1.31 → 0.1.35

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 (352) hide show
  1. package/README.md +1 -1
  2. package/dist/agent-runtime.cjs +70 -15
  3. package/dist/agent-runtime.d.mts +4 -5
  4. package/dist/agent-runtime.d.ts +4 -5
  5. package/dist/agent-runtime.mjs +59 -4
  6. package/dist/api/route-manager.cjs +17 -14
  7. package/dist/api/route-manager.d.mts +6 -7
  8. package/dist/api/route-manager.d.ts +6 -7
  9. package/dist/api/route-manager.mjs +16 -13
  10. package/dist/api/runtime.cjs +12 -8
  11. package/dist/api/runtime.d.mts +4 -5
  12. package/dist/api/runtime.d.ts +4 -5
  13. package/dist/api/runtime.mjs +12 -8
  14. package/dist/api.cjs +20 -17
  15. package/dist/api.d.mts +7 -8
  16. package/dist/api.d.ts +7 -8
  17. package/dist/api.mjs +19 -16
  18. package/dist/{app-sUJ3jnTZ.d.ts → app-BXB3JZYc.d.ts} +38 -12
  19. package/dist/{app-DAuUTIZf.d.mts → app-D_j9AAVL.d.mts} +38 -12
  20. package/dist/app-markdown.cjs +8 -6
  21. package/dist/app-markdown.d.mts +6 -7
  22. package/dist/app-markdown.d.ts +6 -7
  23. package/dist/app-markdown.mjs +7 -5
  24. package/dist/cache.cjs +2 -2
  25. package/dist/cache.d.mts +10 -1
  26. package/dist/cache.d.ts +10 -1
  27. package/dist/cache.mjs +1 -1
  28. package/dist/{chunk-BXFWA23T.mjs → chunk-22LTEMGQ.mjs} +3 -3
  29. package/dist/{chunk-YZTASLPQ.cjs → chunk-27ZWSI3W.cjs} +2 -2
  30. package/dist/{chunk-WBIH66JK.mjs → chunk-2ELDTQRN.mjs} +5 -2
  31. package/dist/{chunk-K7CELQLK.cjs → chunk-2F2ER724.cjs} +54 -29
  32. package/dist/{chunk-O3DTUAX2.mjs → chunk-2G2NNLE2.mjs} +6 -77
  33. package/dist/{chunk-NRVGEI5I.mjs → chunk-2NNMOPDN.mjs} +4 -210
  34. package/dist/{chunk-CTV2TTNP.cjs → chunk-3BHT4WMP.cjs} +16 -87
  35. package/dist/chunk-3BU22U3M.cjs +237 -0
  36. package/dist/{chunk-MM5D6VLP.mjs → chunk-3KZS4SUS.mjs} +33 -14
  37. package/dist/{chunk-VA62MHFV.mjs → chunk-3PXS2MHU.mjs} +1 -1
  38. package/dist/chunk-3SDFA7UF.cjs +701 -0
  39. package/dist/{chunk-4IEPYMHF.mjs → chunk-3UEVPCGW.mjs} +1 -1
  40. package/dist/{chunk-MXDTKXO6.cjs → chunk-3UH7MRCP.cjs} +73 -26
  41. package/dist/{chunk-7QOCTYBS.mjs → chunk-4JHOT46A.mjs} +37 -1
  42. package/dist/{chunk-6L6DQR5W.mjs → chunk-4KU5Q7C2.mjs} +917 -305
  43. package/dist/{chunk-3FCFQP5V.cjs → chunk-4MMGO7YW.cjs} +25 -25
  44. package/dist/{chunk-5HGR3W6O.mjs → chunk-5SJWVY6R.mjs} +8 -0
  45. package/dist/{chunk-KZLND3D2.cjs → chunk-62XKI4Z3.cjs} +7 -5
  46. package/dist/{chunk-FJZ3DQLK.mjs → chunk-6DU6UFUE.mjs} +13 -12
  47. package/dist/{chunk-TEN4FIZU.mjs → chunk-6ETPZTJI.mjs} +513 -3
  48. package/dist/{chunk-VUMAE7NC.mjs → chunk-6TJOML4E.mjs} +92 -31
  49. package/dist/{chunk-3ATMYLLJ.mjs → chunk-6WCPV6G2.mjs} +1 -1
  50. package/dist/{chunk-FYRBX5IY.cjs → chunk-73MC7ZL6.cjs} +2 -2
  51. package/dist/chunk-75RZHGLS.cjs +135 -0
  52. package/dist/{chunk-QZRVZSPN.cjs → chunk-77GNHH2Z.cjs} +3 -3
  53. package/dist/{chunk-FXUUWYAX.cjs → chunk-7GLPRTTF.cjs} +12 -2
  54. package/dist/{chunk-A777V5WU.cjs → chunk-7L5V3KQO.cjs} +2 -2
  55. package/dist/{chunk-4ZQQL4IU.mjs → chunk-AHGECQEW.mjs} +1 -1
  56. package/dist/{chunk-RG3ZOTG5.cjs → chunk-AI7QMY7O.cjs} +10 -3
  57. package/dist/{chunk-YMCXWPWK.mjs → chunk-BCMSYSN2.mjs} +4 -1
  58. package/dist/{chunk-I6XDAKWQ.mjs → chunk-BTHHUD7Q.mjs} +14 -0
  59. package/dist/{chunk-LI2LMOLR.mjs → chunk-C35ZBVRD.mjs} +12 -3
  60. package/dist/chunk-C4SPBWFM.cjs +26 -0
  61. package/dist/{chunk-YQVSHTMR.mjs → chunk-CP6X4AEU.mjs} +1 -1
  62. package/dist/{chunk-QZCT2CQ4.mjs → chunk-CXEN47J3.mjs} +64 -2
  63. package/dist/{chunk-WNLBF77X.cjs → chunk-D227TIEN.cjs} +28 -16
  64. package/dist/{chunk-ROUTX2E5.cjs → chunk-DBNKI4NF.cjs} +12 -3
  65. package/dist/{chunk-J3LOGE4T.cjs → chunk-DQQOKWYA.cjs} +5 -5
  66. package/dist/chunk-E5GNDG5F.mjs +701 -0
  67. package/dist/{chunk-X7KZBF63.cjs → chunk-EFCQPQMG.cjs} +40 -4
  68. package/dist/{chunk-K3F2E6GS.cjs → chunk-EJQT6KZN.cjs} +2 -2
  69. package/dist/{chunk-3LUF2PE2.cjs → chunk-EK4QAEFZ.cjs} +67 -5
  70. package/dist/{chunk-VVBO3QH7.mjs → chunk-ENLZ4R3Y.mjs} +10 -1
  71. package/dist/{chunk-KJ2TIHZZ.cjs → chunk-EUV4YR3V.cjs} +3 -2
  72. package/dist/{chunk-E76XC6ZG.mjs → chunk-EZDQRNQ7.mjs} +2 -2
  73. package/dist/{chunk-TOVMYGYW.mjs → chunk-F2SE2VDO.mjs} +1 -1
  74. package/dist/{chunk-MNUGPHLN.mjs → chunk-F6Z3Y5KL.mjs} +5 -3
  75. package/dist/{chunk-DFLLARUK.cjs → chunk-F7JZENPF.cjs} +35 -34
  76. package/dist/{chunk-BSPQVJ4A.mjs → chunk-FDR64H6B.mjs} +13 -0
  77. package/dist/{chunk-5OVTOKGH.cjs → chunk-FFFW3OQ7.cjs} +2 -2
  78. package/dist/{chunk-D4JE5NNV.cjs → chunk-FNO7A7CM.cjs} +5 -5
  79. package/dist/{chunk-Z5HIWVDP.cjs → chunk-FTFYRMQQ.cjs} +80 -91
  80. package/dist/chunk-FZ6YYU2W.mjs +65 -0
  81. package/dist/{chunk-X7WVQMIB.mjs → chunk-G5RT7EXW.mjs} +11 -5
  82. package/dist/{chunk-IXUY2F5U.mjs → chunk-GCXWJJKH.mjs} +4 -7
  83. package/dist/{chunk-ES4B2IXW.cjs → chunk-GFHLGIYC.cjs} +8 -8
  84. package/dist/{chunk-SORB3MAR.cjs → chunk-GQ3Z3IZI.cjs} +17 -17
  85. package/dist/{chunk-75WGQVQA.cjs → chunk-HITLGIAO.cjs} +10 -1
  86. package/dist/{chunk-HBTUGXHS.cjs → chunk-HLJ6MBUZ.cjs} +7 -4
  87. package/dist/{chunk-JLCQGPXE.mjs → chunk-HMIJDL7S.mjs} +51 -62
  88. package/dist/{chunk-F6XEGFHO.mjs → chunk-HUMR6LSU.mjs} +11 -1
  89. package/dist/{chunk-IMB4PIAR.cjs → chunk-ICUQICNC.cjs} +1441 -828
  90. package/dist/{chunk-ZCU4NZ3M.cjs → chunk-IE7XCHH3.cjs} +4 -4
  91. package/dist/{chunk-I26CZYPV.cjs → chunk-IHNIDL6H.cjs} +50 -7
  92. package/dist/{chunk-2FQHH5SC.mjs → chunk-IHNMMXHV.mjs} +49 -24
  93. package/dist/{chunk-YVGAEAA5.cjs → chunk-IPXLADVO.cjs} +522 -12
  94. package/dist/{chunk-VHJGDMCG.cjs → chunk-IWZKTWHZ.cjs} +2 -2
  95. package/dist/chunk-JG6DJF5A.mjs +238 -0
  96. package/dist/{chunk-KROWKCUH.cjs → chunk-JGLC4TO3.cjs} +8 -1
  97. package/dist/{chunk-5TISYEQF.mjs → chunk-JM5XPKWH.mjs} +10 -3
  98. package/dist/{chunk-BJJATPEC.mjs → chunk-KN7K4VQN.mjs} +1 -1
  99. package/dist/{chunk-WPYFSQKK.cjs → chunk-KNBBQHO2.cjs} +15 -1
  100. package/dist/{chunk-XWAWFQFS.cjs → chunk-KXWRO25S.cjs} +7 -4
  101. package/dist/chunk-LSKZMJMP.cjs +65 -0
  102. package/dist/{chunk-2N5PX3LS.mjs → chunk-LYV44OIR.mjs} +7 -1
  103. package/dist/chunk-M7MKQXAF.cjs +87 -0
  104. package/dist/{chunk-IV6CQY7O.mjs → chunk-MSSFIQGM.mjs} +63 -13
  105. package/dist/{chunk-KH7BN726.cjs → chunk-N4UOK6ZI.cjs} +8 -2
  106. package/dist/{chunk-JNGIWIY6.mjs → chunk-NPC7VWJE.mjs} +2 -2
  107. package/dist/chunk-NRDBW4MP.mjs +45 -0
  108. package/dist/{chunk-ILWLPEVO.mjs → chunk-NRSN7G7E.mjs} +2 -2
  109. package/dist/chunk-OFZUJMCU.mjs +601 -0
  110. package/dist/{chunk-L4DVIHOC.mjs → chunk-OKZUAXHF.mjs} +1 -1
  111. package/dist/{chunk-EM6SBQKM.cjs → chunk-OMVAU7NT.cjs} +27 -2
  112. package/dist/{chunk-AHAJGAYD.mjs → chunk-PDOCJ6RY.mjs} +2 -2
  113. package/dist/{chunk-IFI5FXEZ.cjs → chunk-PFQKNERH.cjs} +562 -251
  114. package/dist/{chunk-S5GDHOE4.mjs → chunk-PZNL3WEG.mjs} +48 -5
  115. package/dist/{chunk-GZYH4OER.mjs → chunk-Q3VLETLE.mjs} +2 -2
  116. package/dist/{chunk-WG2KHOMN.mjs → chunk-QAU5JD57.mjs} +571 -260
  117. package/dist/{chunk-FV45CKBC.mjs → chunk-QCFBDFRS.mjs} +1 -1
  118. package/dist/{chunk-75BRBIFP.cjs → chunk-QCVE2OCI.cjs} +5 -8
  119. package/dist/{chunk-6ZCMSZ5U.mjs → chunk-QE6VAKLT.mjs} +1 -1
  120. package/dist/{chunk-QG5HNS7P.mjs → chunk-QORUJDIV.mjs} +2 -2
  121. package/dist/chunk-RHAZ22ZN.mjs +87 -0
  122. package/dist/{chunk-CUMINO7Z.cjs → chunk-RU3M2FIK.cjs} +18 -14
  123. package/dist/{chunk-DGXN3L4D.mjs → chunk-SAZVVAJH.mjs} +5 -5
  124. package/dist/{chunk-MKMBQSNQ.mjs → chunk-SC2WYWPF.mjs} +3 -3
  125. package/dist/{chunk-QCFFHV5H.mjs → chunk-SMHH4VDG.mjs} +1 -1
  126. package/dist/{chunk-UAFSBWNT.mjs → chunk-SOMHP6GF.mjs} +63 -16
  127. package/dist/{chunk-ND224OE2.cjs → chunk-TKSCR644.cjs} +34 -15
  128. package/dist/{chunk-4V7GIE2U.mjs → chunk-UAORZ7QA.mjs} +3 -3
  129. package/dist/{chunk-IQXFRNY2.cjs → chunk-UFDAAQFX.cjs} +2 -2
  130. package/dist/{chunk-6VYZOPOT.mjs → chunk-UJD4PHYB.mjs} +15 -11
  131. package/dist/{chunk-ZHVYQL3H.cjs → chunk-ULAWS2PA.cjs} +97 -36
  132. package/dist/{chunk-5ZSWG4UX.cjs → chunk-UXFQ3UDA.cjs} +14 -1
  133. package/dist/{chunk-MPEYMSCF.cjs → chunk-VFQT3LAO.cjs} +5 -5
  134. package/dist/{chunk-2FXWWUE5.cjs → chunk-VZJR7UTG.cjs} +6 -6
  135. package/dist/{chunk-2AKFKCHA.mjs → chunk-W7LF2J2S.mjs} +1 -1
  136. package/dist/chunk-WWFTAUFG.cjs +45 -0
  137. package/dist/{chunk-JBC2FKRW.mjs → chunk-WWIKMBRN.mjs} +2 -1
  138. package/dist/{chunk-75DYEVXI.cjs → chunk-X6W5FFH6.cjs} +11 -11
  139. package/dist/{chunk-EXLKRR4U.cjs → chunk-XBML5KMG.cjs} +12 -12
  140. package/dist/{chunk-PZNCMPJF.cjs → chunk-XCACDAZZ.cjs} +18 -12
  141. package/dist/{chunk-JATSG2ZO.mjs → chunk-XCMCS4DA.mjs} +15 -3
  142. package/dist/{chunk-UJ2C4ICS.cjs → chunk-XJXBIP67.cjs} +4 -4
  143. package/dist/{chunk-XF7Q24PF.mjs → chunk-Y7RKTKYI.mjs} +25 -0
  144. package/dist/{chunk-VYZSOYR4.cjs → chunk-YC6V7PWE.cjs} +1 -1
  145. package/dist/{chunk-F6OHXPWR.mjs → chunk-YFILVET3.mjs} +8 -1
  146. package/dist/{chunk-JLRDISQL.cjs → chunk-YKX5BK66.cjs} +7 -7
  147. package/dist/{chunk-DYEJQTDN.cjs → chunk-YSCV4SJF.cjs} +4 -4
  148. package/dist/chunk-YSLWRWWP.cjs +601 -0
  149. package/dist/{chunk-5LJCOSKT.mjs → chunk-YULD7ICZ.mjs} +1 -1
  150. package/dist/{chunk-2SDO73HK.cjs → chunk-YWN746US.cjs} +64 -14
  151. package/dist/chunk-Z2HLU4IX.cjs +238 -0
  152. package/dist/chunk-ZLAT2CWY.mjs +135 -0
  153. package/dist/{chunk-T5CERMEH.cjs → chunk-ZXGAFZDO.cjs} +2 -2
  154. package/dist/{client-plugins-BX2ptm4H.d.mts → client-plugins-CvIslxWi.d.mts} +232 -8
  155. package/dist/{client-plugins-BmxM5KW_.d.ts → client-plugins-HIyulDym.d.ts} +232 -8
  156. package/dist/client-plugins.d.mts +4 -5
  157. package/dist/client-plugins.d.ts +4 -5
  158. package/dist/client.cjs +10 -10
  159. package/dist/client.d.mts +8 -9
  160. package/dist/client.d.ts +8 -9
  161. package/dist/client.mjs +9 -9
  162. package/dist/config.d.mts +4 -5
  163. package/dist/config.d.ts +4 -5
  164. package/dist/{devtools-EWRDHCD5.cjs → devtools-EAUY43BS.cjs} +14 -12
  165. package/dist/{devtools-BPBCYOU6.mjs → devtools-EE5RIBTH.mjs} +13 -11
  166. package/dist/docs.cjs +17 -15
  167. package/dist/docs.d.mts +46 -4
  168. package/dist/docs.d.ts +46 -4
  169. package/dist/docs.mjs +16 -14
  170. package/dist/environment/vite.cjs +2 -2
  171. package/dist/environment/vite.mjs +1 -1
  172. package/dist/headers.cjs +4 -4
  173. package/dist/headers.mjs +3 -3
  174. package/dist/i18n/client.cjs +14 -13
  175. package/dist/i18n/client.d.mts +2 -2
  176. package/dist/i18n/client.d.ts +2 -2
  177. package/dist/i18n/client.mjs +5 -4
  178. package/dist/i18n/index.cjs +3 -2
  179. package/dist/i18n/index.d.mts +3 -3
  180. package/dist/i18n/index.d.ts +3 -3
  181. package/dist/i18n/index.mjs +2 -1
  182. package/dist/i18n/server.cjs +6 -5
  183. package/dist/i18n/server.d.mts +5 -5
  184. package/dist/i18n/server.d.ts +5 -5
  185. package/dist/i18n/server.mjs +5 -4
  186. package/dist/image/server.cjs +3 -3
  187. package/dist/image/server.mjs +2 -2
  188. package/dist/image/sharp.cjs +10 -10
  189. package/dist/image/sharp.mjs +2 -2
  190. package/dist/{index-a-8Z5kZU.d.mts → index-BJJfLxJo.d.mts} +2 -2
  191. package/dist/{index-BWVfxIsO.d.ts → index-CwoOP-MW.d.ts} +2 -2
  192. package/dist/index.cjs +75 -60
  193. package/dist/index.d.mts +21 -22
  194. package/dist/index.d.ts +21 -22
  195. package/dist/index.mjs +79 -64
  196. package/dist/integrations.cjs +7 -4
  197. package/dist/integrations.d.mts +4 -5
  198. package/dist/integrations.d.ts +4 -5
  199. package/dist/integrations.mjs +8 -5
  200. package/dist/internal/app-markdown-runtime.cjs +7 -5
  201. package/dist/internal/app-markdown-runtime.d.mts +17 -7
  202. package/dist/internal/app-markdown-runtime.d.ts +17 -7
  203. package/dist/internal/app-markdown-runtime.mjs +6 -4
  204. package/dist/internal/build-runtime.cjs +44 -41
  205. package/dist/internal/build-runtime.d.mts +6 -7
  206. package/dist/internal/build-runtime.d.ts +6 -7
  207. package/dist/internal/build-runtime.mjs +43 -40
  208. package/dist/internal/cli-runtime.cjs +23 -20
  209. package/dist/internal/cli-runtime.mjs +22 -19
  210. package/dist/internal/client-error-overlay.cjs +6 -6
  211. package/dist/internal/client-error-overlay.mjs +2 -2
  212. package/dist/internal/client-runtime.cjs +5 -3
  213. package/dist/internal/client-runtime.d.mts +9 -1
  214. package/dist/internal/client-runtime.d.ts +9 -1
  215. package/dist/internal/client-runtime.mjs +4 -2
  216. package/dist/internal/compression-runtime.d.mts +4 -5
  217. package/dist/internal/compression-runtime.d.ts +4 -5
  218. package/dist/internal/config-runtime.cjs +14 -12
  219. package/dist/internal/config-runtime.d.mts +5 -6
  220. package/dist/internal/config-runtime.d.ts +5 -6
  221. package/dist/internal/config-runtime.mjs +13 -11
  222. package/dist/internal/infra-analytics-runtime.cjs +4 -4
  223. package/dist/internal/infra-analytics-runtime.mjs +2 -2
  224. package/dist/internal/isolated-boundary.cjs +3 -2
  225. package/dist/internal/isolated-boundary.d.mts +1 -0
  226. package/dist/internal/isolated-boundary.d.ts +1 -0
  227. package/dist/internal/isolated-boundary.mjs +2 -1
  228. package/dist/internal/metadata-image-runtime.cjs +3 -3
  229. package/dist/internal/metadata-image-runtime.mjs +2 -2
  230. package/dist/internal/product-telemetry-runtime.cjs +2 -2
  231. package/dist/internal/product-telemetry-runtime.mjs +1 -1
  232. package/dist/internal/production-runtime.cjs +61 -31
  233. package/dist/internal/production-runtime.d.mts +165 -18
  234. package/dist/internal/production-runtime.d.ts +165 -18
  235. package/dist/internal/production-runtime.mjs +57 -27
  236. package/dist/internal/request-cookies.cjs +4 -2
  237. package/dist/internal/request-cookies.d.mts +9 -1
  238. package/dist/internal/request-cookies.d.ts +9 -1
  239. package/dist/internal/request-cookies.mjs +3 -1
  240. package/dist/internal/server-tree.cjs +12 -0
  241. package/dist/internal/server-tree.d.mts +27 -0
  242. package/dist/internal/server-tree.d.ts +27 -0
  243. package/dist/internal/server-tree.mjs +12 -0
  244. package/dist/markdown.cjs +4 -4
  245. package/dist/markdown.d.mts +4 -5
  246. package/dist/markdown.d.ts +4 -5
  247. package/dist/markdown.mjs +3 -3
  248. package/dist/{metadata-DsEaK7mQ.d.mts → metadata-BnLDsUOS.d.ts} +16 -2
  249. package/dist/{metadata-fwZ3gfG6.d.ts → metadata-WGpBYcGn.d.mts} +16 -2
  250. package/dist/middleware.cjs +18 -8
  251. package/dist/middleware.d.mts +27 -9
  252. package/dist/middleware.d.ts +27 -9
  253. package/dist/middleware.mjs +18 -8
  254. package/dist/navigation.cjs +7 -7
  255. package/dist/navigation.d.mts +7 -8
  256. package/dist/navigation.d.ts +7 -8
  257. package/dist/navigation.mjs +6 -6
  258. package/dist/{nitro-NAKCRVHX.mjs → nitro-MXRDCXWZ.mjs} +5 -5
  259. package/dist/{nitro-VYDZGYFY.cjs → nitro-OVPLKPE2.cjs} +7 -7
  260. package/dist/{observability-BupkiN0m.d.mts → observability-CoXunYhS.d.mts} +4 -3
  261. package/dist/{observability-BupkiN0m.d.ts → observability-CoXunYhS.d.ts} +4 -3
  262. package/dist/observability.d.mts +1 -1
  263. package/dist/observability.d.ts +1 -1
  264. package/dist/plugin.cjs +39 -36
  265. package/dist/plugin.d.mts +4 -5
  266. package/dist/plugin.d.ts +4 -5
  267. package/dist/plugin.mjs +38 -35
  268. package/dist/{production-runtime-Baqgwtvc.d.mts → production-runtime-0sRnuYc-.d.mts} +11 -4
  269. package/dist/{production-runtime-DNkpFnmg.d.ts → production-runtime-Crq6CJ-2.d.ts} +11 -4
  270. package/dist/query/client.cjs +8 -8
  271. package/dist/query/client.mjs +4 -4
  272. package/dist/{render-plan-rkIK9wd9.d.ts → render-plan-8ozZh2Qv.d.ts} +1 -1
  273. package/dist/{render-plan-DhwQnmmX.d.mts → render-plan-gs9GGPzw.d.mts} +1 -1
  274. package/dist/renderer/react/server.cjs +10 -4
  275. package/dist/renderer/react/server.d.mts +2 -1
  276. package/dist/renderer/react/server.d.ts +2 -1
  277. package/dist/renderer/react/server.mjs +7 -1
  278. package/dist/renderer-client.cjs +40 -20
  279. package/dist/renderer-client.d.mts +6 -7
  280. package/dist/renderer-client.d.ts +6 -7
  281. package/dist/renderer-client.mjs +29 -9
  282. package/dist/renderer.d.mts +2 -0
  283. package/dist/renderer.d.ts +2 -0
  284. package/dist/{request-BcY4RYPC.d.ts → request-B5G8rLBH.d.ts} +7 -2
  285. package/dist/{request-CFy1BltJ.d.mts → request-fkhiynXe.d.mts} +7 -2
  286. package/dist/request.cjs +2 -2
  287. package/dist/request.d.mts +5 -6
  288. package/dist/request.d.ts +5 -6
  289. package/dist/request.mjs +1 -1
  290. package/dist/{resolver-PPEeiJ6M.d.ts → resolver-DadfRL6F.d.ts} +1 -1
  291. package/dist/{resolver-DhW0CqZN.d.mts → resolver-khasx3fU.d.mts} +1 -1
  292. package/dist/{route-rendering-BkS0TBlB.d.mts → route-rendering-CLnS7AZj.d.mts} +1 -1
  293. package/dist/{route-rendering-D4XpMjam.d.ts → route-rendering-lS5nUMua.d.ts} +1 -1
  294. package/dist/{router-Cq7BcZxg.d.ts → router-4iuiYnOW.d.ts} +1 -1
  295. package/dist/{router-C4zPlC3V.d.mts → router-ifU8Dui1.d.mts} +1 -1
  296. package/dist/routes.cjs +3 -3
  297. package/dist/routes.d.mts +4 -5
  298. package/dist/routes.d.ts +4 -5
  299. package/dist/routes.mjs +2 -2
  300. package/dist/{runtime-BirxPwbZ.d.ts → runtime-BgDQzBiu.d.ts} +2 -2
  301. package/dist/{runtime-AOJge4vQ.d.mts → runtime-CV2UCV-5.d.mts} +2 -2
  302. package/dist/server-action-security.cjs +3 -3
  303. package/dist/server-action-security.mjs +2 -2
  304. package/dist/server-fn.cjs +5 -5
  305. package/dist/server-fn.mjs +4 -4
  306. package/dist/server-plugins.cjs +4 -4
  307. package/dist/server-plugins.d.mts +5 -6
  308. package/dist/server-plugins.d.ts +5 -6
  309. package/dist/server-plugins.mjs +3 -3
  310. package/dist/server-query-client.cjs +3 -3
  311. package/dist/server-query-client.mjs +2 -2
  312. package/dist/server-query.cjs +6 -6
  313. package/dist/server-query.mjs +5 -5
  314. package/dist/server.cjs +66 -63
  315. package/dist/server.d.mts +13 -14
  316. package/dist/server.d.ts +13 -14
  317. package/dist/server.mjs +43 -40
  318. package/dist/{spa-router-DzPZH-AO.d.mts → spa-router-Bq7VCOwx.d.mts} +3 -3
  319. package/dist/{spa-router-B1HI3X9k.d.ts → spa-router-DaJk5Re4.d.ts} +3 -3
  320. package/dist/testing.cjs +22 -20
  321. package/dist/testing.d.mts +4 -5
  322. package/dist/testing.d.ts +4 -5
  323. package/dist/testing.mjs +18 -16
  324. package/dist/theme/server.cjs +4 -3
  325. package/dist/theme/server.mjs +3 -2
  326. package/dist/{types-Z0aotQ8w.d.mts → types-CnH8DOqo.d.mts} +1 -1
  327. package/dist/{types-Z0aotQ8w.d.ts → types-CnH8DOqo.d.ts} +1 -1
  328. package/dist/{utils-DMD1Hzta.d.ts → utils-BXLmFsVR.d.ts} +1 -1
  329. package/dist/{utils-CEBktlBG.d.mts → utils-XJn0c9bj.d.mts} +1 -1
  330. package/dist/version.cjs +2 -2
  331. package/dist/version.mjs +1 -1
  332. package/dist/vite.cjs +39 -36
  333. package/dist/vite.d.mts +4 -5
  334. package/dist/vite.d.ts +4 -5
  335. package/dist/vite.mjs +38 -35
  336. package/dist/{workflows-CR9ex-gz.d.ts → workflows-jZ4BcdoZ.d.mts} +1 -1
  337. package/dist/{workflows-CR9ex-gz.d.mts → workflows-jZ4BcdoZ.d.ts} +1 -1
  338. package/dist/workflows.cjs +3 -3
  339. package/dist/workflows.d.mts +1 -1
  340. package/dist/workflows.d.ts +1 -1
  341. package/dist/workflows.mjs +2 -2
  342. package/package.json +10 -2
  343. package/dist/chunk-22GUSVNJ.cjs +0 -351
  344. package/dist/chunk-5MKEDGLD.cjs +0 -53
  345. package/dist/chunk-O6XNAMBV.mjs +0 -53
  346. package/dist/chunk-SWN467MP.cjs +0 -18
  347. package/dist/chunk-XGC343EY.cjs +0 -443
  348. package/dist/chunk-ZSH2Y4LN.mjs +0 -351
  349. package/dist/types-DFbjpjXX.d.mts +0 -105
  350. package/dist/types-DFbjpjXX.d.ts +0 -105
  351. /package/dist/{chunk-SUIBNSNO.cjs → chunk-SJNMVDDF.cjs} +0 -0
  352. /package/dist/{chunk-LNZ7JZUS.mjs → chunk-UDNPLXW7.mjs} +0 -0
@@ -3,7 +3,7 @@
3
3
  var _chunkOWOUTKIJcjs = require('./chunk-OWOUTKIJ.cjs');
4
4
 
5
5
 
6
- var _chunkCUMINO7Zcjs = require('./chunk-CUMINO7Z.cjs');
6
+ var _chunkRU3M2FIKcjs = require('./chunk-RU3M2FIK.cjs');
7
7
 
8
8
 
9
9
  var _chunkJ63ZH5OQcjs = require('./chunk-J63ZH5OQ.cjs');
@@ -16,7 +16,17 @@ var _chunkTKJZFIMLcjs = require('./chunk-TKJZFIML.cjs');
16
16
 
17
17
 
18
18
 
19
- var _chunkWPYFSQKKcjs = require('./chunk-WPYFSQKK.cjs');
19
+ var _chunk75RZHGLScjs = require('./chunk-75RZHGLS.cjs');
20
+
21
+
22
+ var _chunkOMVAU7NTcjs = require('./chunk-OMVAU7NT.cjs');
23
+
24
+
25
+
26
+ var _chunkKNBBQHO2cjs = require('./chunk-KNBBQHO2.cjs');
27
+
28
+
29
+ var _chunkYC6V7PWEcjs = require('./chunk-YC6V7PWE.cjs');
20
30
 
21
31
 
22
32
  var _chunkBIDYX3SLcjs = require('./chunk-BIDYX3SL.cjs');
@@ -27,6 +37,184 @@ var _chunkI57LW5VZcjs = require('./chunk-I57LW5VZ.cjs');
27
37
 
28
38
  var _chunkS3JO3N4Hcjs = require('./chunk-S3JO3N4H.cjs');
29
39
 
40
+ // src/routing/route-groups.ts
41
+ function isRouteGroupSegment(part) {
42
+ return part.startsWith("(") && part.endsWith(")");
43
+ }
44
+ _chunkS3JO3N4Hcjs.__name.call(void 0, isRouteGroupSegment, "isRouteGroupSegment");
45
+ function formatRouteSegment(segment) {
46
+ if (!segment.isDynamic) return segment.segment;
47
+ if (segment.isCatchAll) {
48
+ return segment.isOptional ? `[[...${segment.segment}]]` : `[...${segment.segment}]`;
49
+ }
50
+ return `[${segment.segment}]`;
51
+ }
52
+ _chunkS3JO3N4Hcjs.__name.call(void 0, formatRouteSegment, "formatRouteSegment");
53
+ function createRouteDirectoryPattern(route) {
54
+ const parts = route.filePath.replace(/\\/g, "/").split("/").filter(Boolean);
55
+ parts.pop();
56
+ if (parts.length === 0) return "/";
57
+ let segmentIndex = 0;
58
+ const directory = parts.map((part) => {
59
+ if (isRouteGroupSegment(part)) return part;
60
+ const segment = route.segments[segmentIndex++];
61
+ return segment ? formatRouteSegment(segment) : part;
62
+ });
63
+ return `/${directory.join("/")}`;
64
+ }
65
+ _chunkS3JO3N4Hcjs.__name.call(void 0, createRouteDirectoryPattern, "createRouteDirectoryPattern");
66
+ function stripRouteGroups(pattern) {
67
+ if (!pattern.includes("(")) return pattern;
68
+ const parts = pattern.split("/").filter((part) => part && !isRouteGroupSegment(part));
69
+ return parts.length === 0 ? "/" : `/${parts.join("/")}`;
70
+ }
71
+ _chunkS3JO3N4Hcjs.__name.call(void 0, stripRouteGroups, "stripRouteGroups");
72
+ function getRouteGroupScope(pattern) {
73
+ if (!pattern.includes("(")) return null;
74
+ const parts = pattern.split("/");
75
+ for (let index = parts.length - 1; index > 0; index--) {
76
+ if (isRouteGroupSegment(parts[index])) return parts.slice(0, index + 1).join("/");
77
+ }
78
+ return null;
79
+ }
80
+ _chunkS3JO3N4Hcjs.__name.call(void 0, getRouteGroupScope, "getRouteGroupScope");
81
+ function isInRouteGroupScope(directory, scope) {
82
+ if (scope === null) return true;
83
+ if (typeof directory !== "string") return false;
84
+ return directory === scope || directory.startsWith(`${scope}/`);
85
+ }
86
+ _chunkS3JO3N4Hcjs.__name.call(void 0, isInRouteGroupScope, "isInRouteGroupScope");
87
+ function getRouteDirectoryDepth(pattern) {
88
+ return pattern.split("/").filter(Boolean).length;
89
+ }
90
+ _chunkS3JO3N4Hcjs.__name.call(void 0, getRouteDirectoryDepth, "getRouteDirectoryDepth");
91
+ function routeBoundaryCoversDirectory(boundaryPattern, directory) {
92
+ const boundaryUrl = stripRouteGroups(boundaryPattern);
93
+ const routeUrl = stripRouteGroups(directory);
94
+ return (boundaryUrl === "/" || routeUrl === boundaryUrl || routeUrl.startsWith(`${boundaryUrl.replace(/\/$/, "")}/`)) && isInRouteGroupScope(directory, getRouteGroupScope(boundaryPattern));
95
+ }
96
+ _chunkS3JO3N4Hcjs.__name.call(void 0, routeBoundaryCoversDirectory, "routeBoundaryCoversDirectory");
97
+
98
+ // src/server/full-document.ts
99
+ var CONTENTS_WRAPPER = /^<div\b[^>]*style="display\s*:\s*contents"[^>]*>/i;
100
+ var HOISTED_HEAD_ELEMENT = /^(?:<(?:meta|link|base)\b[^>]*>|<title\b[^>]*>[\s\S]*?<\/title>|<script\b[^>]*\basync\b[^>]*><\/script>|<style\b[^>]*\bdata-precedence\b[^>]*>[\s\S]*?<\/style>)/i;
101
+ function peelDocumentPrefix(markup) {
102
+ let inner = markup.replace(/^\s+/, "");
103
+ let hoisted = "";
104
+ let match;
105
+ while (match = _nullishCoalesce(CONTENTS_WRAPPER.exec(inner), () => ( HOISTED_HEAD_ELEMENT.exec(inner)))) {
106
+ if (!/^<div/i.test(match[0])) hoisted += match[0];
107
+ inner = inner.slice(match[0].length).replace(/^\s+/, "");
108
+ }
109
+ return { inner, hoisted };
110
+ }
111
+ _chunkS3JO3N4Hcjs.__name.call(void 0, peelDocumentPrefix, "peelDocumentPrefix");
112
+ function restoreHoistedHead(document, hoisted) {
113
+ if (!hoisted) return document;
114
+ if (/<head[\s>]/i.test(document)) {
115
+ return document.replace(/<head\b[^>]*>/i, (open) => open + hoisted);
116
+ }
117
+ return document.replace(/<html\b[^>]*>/i, (open) => `${open}<head>${hoisted}</head>`);
118
+ }
119
+ _chunkS3JO3N4Hcjs.__name.call(void 0, restoreHoistedHead, "restoreHoistedHead");
120
+ function extractFarmFullDocument(markup) {
121
+ const { inner, hoisted } = peelDocumentPrefix(markup);
122
+ if (!/^<!doctype/i.test(inner) && !/^<html[\s>]/i.test(inner)) return null;
123
+ const start = markup.search(/<!doctype|<html[\s>]/i);
124
+ const lower = markup.toLowerCase();
125
+ let closeIndex = lower.lastIndexOf("</html>");
126
+ if (lower.length !== markup.length) {
127
+ closeIndex = -1;
128
+ const closing = /<\/html>/gi;
129
+ let match;
130
+ while (match = closing.exec(markup)) closeIndex = match.index;
131
+ }
132
+ if (start < 0 || closeIndex < 0) return null;
133
+ const closeEnd = closeIndex + "</html>".length;
134
+ let document = markup.slice(start, closeEnd);
135
+ const streamedTail = markup.slice(closeEnd).replace(/^(?:\s*<\/div>)+/i, "").trim();
136
+ if (streamedTail) {
137
+ document = document.replace(/<\/body>/i, () => `${streamedTail}</body>`);
138
+ }
139
+ return restoreHoistedHead(document, hoisted);
140
+ }
141
+ _chunkS3JO3N4Hcjs.__name.call(void 0, extractFarmFullDocument, "extractFarmFullDocument");
142
+ function classifyFarmDocumentPrefix(markup) {
143
+ const { inner } = peelDocumentPrefix(markup);
144
+ if (/^<!doctype/i.test(inner) || /^<html[\s>]/i.test(inner)) return "document";
145
+ return inner === "" ? "pending" : "fragment";
146
+ }
147
+ _chunkS3JO3N4Hcjs.__name.call(void 0, classifyFarmDocumentPrefix, "classifyFarmDocumentPrefix");
148
+ function ensureFarmDocumentHead(markup) {
149
+ if (/<head[\s>]/i.test(markup)) return markup;
150
+ return markup.replace(/<html([^>]*)>/i, (_match, attributes) => {
151
+ return `<html${attributes}><head></head>`;
152
+ });
153
+ }
154
+ _chunkS3JO3N4Hcjs.__name.call(void 0, ensureFarmDocumentHead, "ensureFarmDocumentHead");
155
+ function ensureFarmDocumentRoot(markup) {
156
+ if (/\sid=["']root["']/i.test(markup)) return markup;
157
+ return markup.replace(
158
+ /<body\b([^>]*)>/i,
159
+ (_match, attributes) => `<body${attributes}><div id="root">`
160
+ ).replace(/<\/body>/i, () => "</div></body>");
161
+ }
162
+ _chunkS3JO3N4Hcjs.__name.call(void 0, ensureFarmDocumentRoot, "ensureFarmDocumentRoot");
163
+ function hasFarmDocumentIcon(markup) {
164
+ return /<link\b[^>]*\brel=["']?(?:shortcut )?icon\b/i.test(markup);
165
+ }
166
+ _chunkS3JO3N4Hcjs.__name.call(void 0, hasFarmDocumentIcon, "hasFarmDocumentIcon");
167
+ function removeFarmDocumentTitles(markup) {
168
+ return markup.replace(/<title\b[^>]*>[\s\S]*?<\/title>\s*/gi, "");
169
+ }
170
+ _chunkS3JO3N4Hcjs.__name.call(void 0, removeFarmDocumentTitles, "removeFarmDocumentTitles");
171
+ function ensureFarmDocumentMeta(markup, viewport = "") {
172
+ const head = _nullishCoalesce(_optionalChain([/<head\b[^>]*>([\s\S]*?)<\/head>/i, 'access', _ => _.exec, 'call', _2 => _2(markup), 'optionalAccess', _3 => _3[1]]), () => ( ""));
173
+ const hasNamedMeta = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (name) => new RegExp(`<meta\\b[^>]*\\bname=["']?${name}(?=["'\\s/>])`, "i").test(head), "hasNamedMeta");
174
+ const tags = [
175
+ /<meta\b[^>]*\bcharset\s*=/i.test(head) ? "" : '<meta charset="utf-8">',
176
+ ...(_nullishCoalesce(viewport.match(/<meta\b[^>]*>/gi), () => ( []))).filter((tag) => {
177
+ const name = _optionalChain([/\bname="([\w-]+)"/, 'access', _4 => _4.exec, 'call', _5 => _5(tag), 'optionalAccess', _6 => _6[1]]);
178
+ return !name || !hasNamedMeta(name);
179
+ })
180
+ ].filter(Boolean);
181
+ if (tags.length === 0) return markup;
182
+ return markup.replace(/<head\b[^>]*>/i, (open) => `${open}${tags.join("")}`);
183
+ }
184
+ _chunkS3JO3N4Hcjs.__name.call(void 0, ensureFarmDocumentMeta, "ensureFarmDocumentMeta");
185
+ function composeFarmFullDocument(documentHtml, assets) {
186
+ let html = ensureFarmDocumentMeta(ensureFarmDocumentHead(documentHtml), assets.viewport);
187
+ if (assets.htmlAttributes) {
188
+ html = html.replace(/<html\b([^>]*)>/i, (_match, attrs) => {
189
+ let nextAttributes = attrs;
190
+ for (const name of _nullishCoalesce(assets.replaceHtmlAttributes, () => ( []))) {
191
+ const escapedName = name.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
192
+ nextAttributes = nextAttributes.replace(
193
+ new RegExp("\\s+" + escapedName + `=(?:"[^"]*"|'[^']*'|[^\\s>]+)`, "gi"),
194
+ ""
195
+ );
196
+ }
197
+ return `<html${nextAttributes}${assets.htmlAttributes}>`;
198
+ });
199
+ }
200
+ html = ensureFarmDocumentRoot(html);
201
+ const headAssets = [
202
+ assets.fallbackIcon && !hasFarmDocumentIcon(html) ? '<link rel="icon" href="data:,">' : "",
203
+ assets.headAssets
204
+ ].filter(Boolean).join("\n ");
205
+ if (headAssets) {
206
+ html = html.replace(/<\/head>/i, () => ` ${headAssets}
207
+ </head>`);
208
+ }
209
+ if (assets.bodyFooter) {
210
+ html = html.replace(/<\/body>/i, () => ` ${assets.bodyFooter}
211
+ </body>`);
212
+ }
213
+ return /^\s*<!doctype/i.test(html) ? html : `<!DOCTYPE html>
214
+ ${html}`;
215
+ }
216
+ _chunkS3JO3N4Hcjs.__name.call(void 0, composeFarmFullDocument, "composeFarmFullDocument");
217
+
30
218
  // src/i18n/alternates.ts
31
219
  function renderFarmLocaleAlternateLinks(pathname, config, options = {}) {
32
220
  if (config.routing === "none") return "";
@@ -123,7 +311,7 @@ function serializeSitemap(value) {
123
311
  return candidate;
124
312
  });
125
313
  const hasLanguageAlternates = entries.some(
126
- (entry) => _optionalChain([entry, 'access', _ => _.alternates, 'optionalAccess', _2 => _2.languages]) && Object.keys(entry.alternates.languages).length > 0
314
+ (entry) => _optionalChain([entry, 'access', _7 => _7.alternates, 'optionalAccess', _8 => _8.languages]) && Object.keys(entry.alternates.languages).length > 0
127
315
  );
128
316
  const namespace = hasLanguageAlternates ? ' xmlns:xhtml="http://www.w3.org/1999/xhtml"' : "";
129
317
  const lines = [
@@ -142,7 +330,7 @@ function serializeSitemap(value) {
142
330
  if (entry.priority !== void 0) {
143
331
  lines.push(` <priority>${escapeXml(entry.priority)}</priority>`);
144
332
  }
145
- for (const [language, href] of Object.entries(_optionalChain([entry, 'access', _3 => _3.alternates, 'optionalAccess', _4 => _4.languages]) || {})) {
333
+ for (const [language, href] of Object.entries(_optionalChain([entry, 'access', _9 => _9.alternates, 'optionalAccess', _10 => _10.languages]) || {})) {
146
334
  lines.push(
147
335
  ` <xhtml:link rel="alternate" hreflang="${escapeXml(language)}" href="${escapeXml(href)}" />`
148
336
  );
@@ -210,7 +398,7 @@ function createFarmMetadataRouteResponse(kind, value, routeModule = {}, options
210
398
  if (isResponse(value)) {
211
399
  return method === "HEAD" ? _chunkTKJZFIMLcjs.omitFarmResponseBody.call(void 0, value) : value;
212
400
  }
213
- const body = kind === "sitemap" ? serializeSitemap(value) : kind === "robots" ? serializeRobots(value) : kind === "llms" || kind === "llms-full" ? _chunkCUMINO7Zcjs.serializeFarmLlmsTxt.call(void 0, value) : serializeManifest(value);
401
+ const body = kind === "sitemap" ? serializeSitemap(value) : kind === "robots" ? serializeRobots(value) : kind === "llms" || kind === "llms-full" ? _chunkRU3M2FIKcjs.serializeFarmLlmsTxt.call(void 0, value) : serializeManifest(value);
214
402
  const contentType = kind === "sitemap" ? "application/xml; charset=utf-8" : kind === "robots" || kind === "llms" || kind === "llms-full" ? "text/plain; charset=utf-8" : "application/manifest+json; charset=utf-8";
215
403
  return new Response(method === "HEAD" ? null : body, {
216
404
  headers: {
@@ -222,6 +410,171 @@ function createFarmMetadataRouteResponse(kind, value, routeModule = {}, options
222
410
  }
223
411
  _chunkS3JO3N4Hcjs.__name.call(void 0, createFarmMetadataRouteResponse, "createFarmMetadataRouteResponse");
224
412
 
413
+ // src/ai-catalog.ts
414
+ var FARM_AI_CATALOG_PATH = "/.well-known/ai-catalog.json";
415
+ var FARM_ARD_PATH = "/.well-known/ard.json";
416
+ var FARM_MCP_SERVER_CARD_SUFFIX = "/server-card";
417
+ var SERVER_CARD_SCHEMA = "https://static.modelcontextprotocol.io/schemas/v1/server-card.schema.json";
418
+ var SERVER_CARD_TYPE = "application/mcp-server-card+json";
419
+ var AI_CATALOG_TYPE = "application/ai-catalog+json";
420
+ var CARD_DESCRIPTION_MAX = 100;
421
+ var REVERSE_DNS_NAME = /^[a-zA-Z0-9.-]+\/[a-zA-Z0-9._-]+$/;
422
+ function listFarmMCPServerSources(input) {
423
+ const sources = /* @__PURE__ */ new Map();
424
+ for (const { server, details } of _chunk75RZHGLScjs._listFarmMCPCatalogs.call(void 0, )) {
425
+ const endpoint = _chunkKNBBQHO2cjs.resolveFarmAPIServerRoutePath.call(void 0, server.path, input.apiServerBasePath);
426
+ if (sources.has(endpoint)) continue;
427
+ sources.set(endpoint, {
428
+ ...server,
429
+ protocolVersions: _optionalChain([details, 'optionalAccess', _11 => _11.protocolVersions]),
430
+ endpoint,
431
+ local: true
432
+ });
433
+ }
434
+ for (const server of _chunk75RZHGLScjs._listFarmRegisteredMCPServers.call(void 0, )) {
435
+ const endpoint = server.path ? _chunkI57LW5VZcjs.applyFarmBasePath.call(void 0, server.path, input.basePath) : server.url;
436
+ if (sources.has(endpoint)) continue;
437
+ sources.set(endpoint, { ...server, endpoint, local: Boolean(server.path) });
438
+ }
439
+ return [...sources.values()];
440
+ }
441
+ _chunkS3JO3N4Hcjs.__name.call(void 0, listFarmMCPServerSources, "listFarmMCPServerSources");
442
+ function serverCardLocation(endpoint) {
443
+ return `${endpoint.replace(/\/$/, "")}${FARM_MCP_SERVER_CARD_SUFFIX}`;
444
+ }
445
+ _chunkS3JO3N4Hcjs.__name.call(void 0, serverCardLocation, "serverCardLocation");
446
+ function listFarmMCPServerCards(origin, input = {}) {
447
+ const host = new URL(origin).hostname;
448
+ return listFarmMCPServerSources(input).map((server) => {
449
+ const endpointUrl = server.local ? `${origin}${server.endpoint}` : server.endpoint;
450
+ const cardPath = server.local ? serverCardLocation(server.endpoint) : void 0;
451
+ const slug = cardSlug(server.name);
452
+ const description = truncate(_optionalChain([server, 'access', _12 => _12.description, 'optionalAccess', _13 => _13.trim, 'call', _14 => _14()]) || `MCP server for ${host}`);
453
+ const card = {
454
+ $schema: SERVER_CARD_SCHEMA,
455
+ // The card's name is reverse-DNS; a plain server name is namespaced by the host.
456
+ name: REVERSE_DNS_NAME.test(server.name) ? server.name : `${cardNamespace(host)}/${slug}`,
457
+ version: server.version,
458
+ description,
459
+ ...server.title ? { title: server.title } : {},
460
+ websiteUrl: `${origin}${_chunkI57LW5VZcjs.applyFarmBasePath.call(void 0, "/", input.basePath).replace(/(.)\/$/, "$1")}`,
461
+ remotes: [
462
+ {
463
+ type: "streamable-http",
464
+ url: endpointUrl,
465
+ ..._optionalChain([server, 'access', _15 => _15.protocolVersions, 'optionalAccess', _16 => _16.length]) ? { supportedProtocolVersions: [...server.protocolVersions] } : {}
466
+ }
467
+ ]
468
+ };
469
+ return {
470
+ ...cardPath ? { cardPath } : {},
471
+ card,
472
+ entry: {
473
+ identifier: `urn:air:${host}:mcp:${slug}`,
474
+ type: SERVER_CARD_TYPE,
475
+ url: cardPath ? `${origin}${cardPath}` : serverCardLocation(endpointUrl),
476
+ displayName: _nullishCoalesce(server.title, () => ( server.name)),
477
+ description,
478
+ version: server.version
479
+ }
480
+ };
481
+ });
482
+ }
483
+ _chunkS3JO3N4Hcjs.__name.call(void 0, listFarmMCPServerCards, "listFarmMCPServerCards");
484
+ function listFarmMCPLlmsTxtLinks(origin, input = {}) {
485
+ const servers = listFarmMCPServerCards(origin, input);
486
+ if (!servers.length) return [];
487
+ return [
488
+ ...servers.map(({ card, entry }) => ({
489
+ title: entry.displayName,
490
+ url: card.remotes[0].url,
491
+ description: `${card.description} (Streamable HTTP MCP endpoint; server card at ${entry.url})`
492
+ })),
493
+ {
494
+ title: "AI catalog",
495
+ url: `${origin}${_chunkI57LW5VZcjs.applyFarmBasePath.call(void 0, FARM_AI_CATALOG_PATH, input.basePath)}`,
496
+ description: "MCP server cards for this site"
497
+ }
498
+ ];
499
+ }
500
+ _chunkS3JO3N4Hcjs.__name.call(void 0, listFarmMCPLlmsTxtLinks, "listFarmMCPLlmsTxtLinks");
501
+ function createFarmAiCatalogResponse(request, input = {}, requestUrl) {
502
+ let url;
503
+ try {
504
+ url = _nullishCoalesce(requestUrl, () => ( new URL(request.url)));
505
+ } catch (e3) {
506
+ return null;
507
+ }
508
+ const { pathname } = url;
509
+ if (!pathname.endsWith(FARM_MCP_SERVER_CARD_SUFFIX) && !pathname.includes("/.well-known/")) {
510
+ return null;
511
+ }
512
+ const ard = pathname === _chunkI57LW5VZcjs.applyFarmBasePath.call(void 0, FARM_ARD_PATH, input.basePath);
513
+ const catalogPath = ard || pathname === _chunkI57LW5VZcjs.applyFarmBasePath.call(void 0, FARM_AI_CATALOG_PATH, input.basePath);
514
+ if (!catalogPath && !pathname.endsWith(FARM_MCP_SERVER_CARD_SUFFIX)) return null;
515
+ const servers = listFarmMCPServerCards(url.origin, input);
516
+ const card = catalogPath ? void 0 : servers.find((server) => server.cardPath === pathname);
517
+ if (!servers.length || !catalogPath && !card) return null;
518
+ const method = request.method.toUpperCase();
519
+ if (method === "OPTIONS") return new Response(null, { status: 204, headers: corsHeaders() });
520
+ if (method !== "GET" && method !== "HEAD") {
521
+ return new Response("Method Not Allowed", {
522
+ status: 405,
523
+ headers: { ...corsHeaders(), Allow: "GET, HEAD, OPTIONS", "Content-Type": "text/plain" }
524
+ });
525
+ }
526
+ const body = JSON.stringify(
527
+ card ? card.card : { specVersion: "1.0", entries: servers.map(({ entry }) => entry) }
528
+ );
529
+ const etag = `W/"${fnv1a(body)}"`;
530
+ const headers = {
531
+ ...corsHeaders(),
532
+ "Content-Type": card ? `${SERVER_CARD_TYPE}; charset=utf-8` : ard ? "application/json; charset=utf-8" : `${AI_CATALOG_TYPE}; charset=utf-8`,
533
+ // The body names the request's origin, so caches revalidate rather than reuse it.
534
+ "Cache-Control": "public, max-age=0, must-revalidate",
535
+ ETag: etag,
536
+ "X-Content-Type-Options": "nosniff"
537
+ };
538
+ if (_chunkOMVAU7NTcjs.matchesFarmIfNoneMatch.call(void 0, request.headers.get("if-none-match"), etag)) {
539
+ return new Response(null, { status: 304, headers });
540
+ }
541
+ _chunkJ63ZH5OQcjs.emitFarmAgentRead.call(void 0, request, card ? "mcp-server-card" : "ai-catalog", 200);
542
+ return new Response(method === "HEAD" ? null : body, { status: 200, headers });
543
+ }
544
+ _chunkS3JO3N4Hcjs.__name.call(void 0, createFarmAiCatalogResponse, "createFarmAiCatalogResponse");
545
+ function corsHeaders() {
546
+ return {
547
+ "Access-Control-Allow-Origin": "*",
548
+ "Access-Control-Allow-Methods": "GET, HEAD, OPTIONS",
549
+ "Access-Control-Allow-Headers": "Content-Type, If-None-Match",
550
+ "Access-Control-Expose-Headers": "ETag"
551
+ };
552
+ }
553
+ _chunkS3JO3N4Hcjs.__name.call(void 0, corsHeaders, "corsHeaders");
554
+ function cardNamespace(host) {
555
+ if (host.includes(":") || /^\d+(?:\.\d+){3}$/.test(host)) return "local";
556
+ return host.split(".").reverse().join(".");
557
+ }
558
+ _chunkS3JO3N4Hcjs.__name.call(void 0, cardNamespace, "cardNamespace");
559
+ function cardSlug(name) {
560
+ const last = name.includes("/") ? name.slice(name.lastIndexOf("/") + 1) : name;
561
+ return last.toLowerCase().replace(/[^a-z0-9._-]+/g, "-").replace(/^-+|-+$/g, "") || "mcp";
562
+ }
563
+ _chunkS3JO3N4Hcjs.__name.call(void 0, cardSlug, "cardSlug");
564
+ function truncate(text) {
565
+ return text.length <= CARD_DESCRIPTION_MAX ? text : `${text.slice(0, CARD_DESCRIPTION_MAX - 1).trimEnd()}\u2026`;
566
+ }
567
+ _chunkS3JO3N4Hcjs.__name.call(void 0, truncate, "truncate");
568
+ function fnv1a(value) {
569
+ let hash = 2166136261;
570
+ for (let index = 0; index < value.length; index++) {
571
+ hash ^= value.charCodeAt(index);
572
+ hash = Math.imul(hash, 16777619);
573
+ }
574
+ return (hash >>> 0).toString(16).padStart(8, "0");
575
+ }
576
+ _chunkS3JO3N4Hcjs.__name.call(void 0, fnv1a, "fnv1a");
577
+
225
578
  // src/components/error-page.ts
226
579
  var ERROR_STATUS_TEXT = {
227
580
  400: "Bad Request",
@@ -460,11 +813,11 @@ function resolveFarmApiCatalogInput(config) {
460
813
  const mcp = config.mcp && config.mcp.enabled !== false ? config.mcp : void 0;
461
814
  return {
462
815
  basePath: config.basePath,
463
- apiBaseURL: _nullishCoalesce(_optionalChain([config, 'access', _5 => _5.openapi, 'optionalAccess', _6 => _6.servers, 'optionalAccess', _7 => _7[0], 'optionalAccess', _8 => _8.url]), () => ( config.api.baseURL)),
464
- openapi: _optionalChain([config, 'access', _9 => _9.openapi, 'optionalAccess', _10 => _10.enabled]) ? { specRoute: config.openapi.specRoute, route: config.openapi.route } : void 0,
465
- mcpPath: mcp ? _chunkWPYFSQKKcjs.resolveFarmAPIServerRoutePath.call(void 0,
816
+ apiBaseURL: _nullishCoalesce(_optionalChain([config, 'access', _17 => _17.openapi, 'optionalAccess', _18 => _18.servers, 'optionalAccess', _19 => _19[0], 'optionalAccess', _20 => _20.url]), () => ( config.api.baseURL)),
817
+ openapi: _optionalChain([config, 'access', _21 => _21.openapi, 'optionalAccess', _22 => _22.enabled]) ? { specRoute: config.openapi.specRoute, route: config.openapi.route } : void 0,
818
+ mcpPath: mcp ? _chunkKNBBQHO2cjs.resolveFarmAPIServerRoutePath.call(void 0,
466
819
  _nullishCoalesce(mcp.path, () => ( "/api/mcp")),
467
- _chunkWPYFSQKKcjs.resolveFarmAPIServerBasePath.call(void 0, config.api)
820
+ _chunkKNBBQHO2cjs.resolveFarmAPIServerBasePath.call(void 0, config.api)
468
821
  ) : void 0
469
822
  };
470
823
  }
@@ -473,8 +826,8 @@ function createFarmApiCatalog(input) {
473
826
  const appPath = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (path) => _chunkI57LW5VZcjs.applyFarmBasePath.call(void 0, path, input.basePath), "appPath");
474
827
  const items = [];
475
828
  const contexts = [];
476
- const specRoute = _optionalChain([input, 'access', _11 => _11.openapi, 'optionalAccess', _12 => _12.specRoute]);
477
- const reference = _optionalChain([input, 'access', _13 => _13.openapi, 'optionalAccess', _14 => _14.route]);
829
+ const specRoute = _optionalChain([input, 'access', _23 => _23.openapi, 'optionalAccess', _24 => _24.specRoute]);
830
+ const reference = _optionalChain([input, 'access', _25 => _25.openapi, 'optionalAccess', _26 => _26.route]);
478
831
  if (specRoute || reference) {
479
832
  const api = { anchor: input.apiBaseURL };
480
833
  if (specRoute) {
@@ -514,6 +867,163 @@ function createFarmApiCatalogResponse(method, input, request) {
514
867
  }
515
868
  _chunkS3JO3N4Hcjs.__name.call(void 0, createFarmApiCatalogResponse, "createFarmApiCatalogResponse");
516
869
 
870
+ // src/app-manifest.ts
871
+ var FARM_APP_MANIFEST_PATH = "/.well-known/farmjs";
872
+ var FARM_INFRA_SIGNATURE_HEADER = "farmjs-infra-signature";
873
+ var SIGNED_PURPOSE = "farmjs-manifest-v1";
874
+ var SIGNATURE_WINDOW_SECONDS = 300;
875
+ function resolveFarmAppManifestInput(config, extra) {
876
+ const llms = _optionalChain([config, 'access', _27 => _27.agent, 'optionalAccess', _28 => _28.llmsTxt]);
877
+ const plugins = (_nullishCoalesce(config.plugins, () => ( []))).map(({ name }) => name);
878
+ const webmcp = plugins.includes("farm:webmcp");
879
+ return {
880
+ renderer: _nullishCoalesce(_optionalChain([config, 'access', _29 => _29.renderer, 'optionalAccess', _30 => _30.name]), () => ( "react")),
881
+ basePath: config.basePath || "/",
882
+ build: extra.build,
883
+ packages: extra.packages,
884
+ webmcp: { enabled: webmcp, tools: webmcp ? _nullishCoalesce(extra.webmcpTools, () => ( [])) : [] },
885
+ integrations: Object.entries(_nullishCoalesce(config.integrations, () => ( {}))).flatMap(([key, integration]) => {
886
+ const category = _nullishCoalesce(_optionalChain([integration, 'optionalAccess', _31 => _31.category]), () => ( _optionalChain([integration, 'optionalAccess', _32 => _32.slot])));
887
+ return integration && category && integration.type ? [{ key, category, type: integration.type }] : [];
888
+ }),
889
+ agent: {
890
+ apiCatalog: _optionalChain([config, 'access', _33 => _33.agent, 'optionalAccess', _34 => _34.apiCatalog]) ? "/.well-known/api-catalog" : null,
891
+ llmsTxt: llms === true || typeof llms === "object" && llms !== null && llms.enabled !== false,
892
+ openapi: _optionalChain([config, 'access', _35 => _35.openapi, 'optionalAccess', _36 => _36.enabled]) && config.openapi.specRoute ? config.openapi.specRoute : null
893
+ },
894
+ plugins,
895
+ analytics: config.analytics !== false
896
+ };
897
+ }
898
+ _chunkS3JO3N4Hcjs.__name.call(void 0, resolveFarmAppManifestInput, "resolveFarmAppManifestInput");
899
+ var SOURCES = {
900
+ endpoint: "endpoint",
901
+ standalone: "defineTool",
902
+ serverFunction: "serverFunction"
903
+ };
904
+ function createFarmAppManifest(input) {
905
+ return {
906
+ schemaVersion: 1,
907
+ app: {
908
+ farm: _chunkYC6V7PWEcjs.FARM_VERSION,
909
+ renderer: input.renderer,
910
+ basePath: input.basePath,
911
+ build: input.build
912
+ },
913
+ packages: input.packages,
914
+ mcp: {
915
+ servers: _chunk75RZHGLScjs._listFarmMCPCatalogs.call(void 0, ).map(({ server, tools, details }) => ({
916
+ name: server.name,
917
+ version: server.version,
918
+ path: server.path,
919
+ resources: [..._nullishCoalesce(_optionalChain([details, 'optionalAccess', _37 => _37.resources]), () => ( []))],
920
+ prompts: [..._nullishCoalesce(_optionalChain([details, 'optionalAccess', _38 => _38.prompts]), () => ( []))],
921
+ tools: tools.map((tool) => {
922
+ const schemas = _optionalChain([details, 'optionalAccess', _39 => _39.schemas, 'optionalAccess', _40 => _40[tool.name]]);
923
+ const hints = Object.fromEntries(
924
+ ["readOnlyHint", "destructiveHint", "idempotentHint", "openWorldHint"].filter((hint) => typeof tool[hint] === "boolean").map((hint) => [hint, tool[hint]])
925
+ );
926
+ return {
927
+ name: tool.name,
928
+ ...tool.title ? { title: tool.title } : {},
929
+ ...tool.description ? { description: tool.description } : {},
930
+ source: SOURCES[tool.kind],
931
+ ...tool.kind === "endpoint" ? { method: tool.method, path: tool.path } : {},
932
+ ...hints,
933
+ ...schemas ? { inputSchema: schemas.input } : {},
934
+ ..._optionalChain([schemas, 'optionalAccess', _41 => _41.output]) ? { outputSchema: schemas.output } : {}
935
+ };
936
+ })
937
+ }))
938
+ },
939
+ webmcp: input.webmcp,
940
+ integrations: input.integrations,
941
+ agent: input.agent,
942
+ plugins: input.plugins
943
+ };
944
+ }
945
+ _chunkS3JO3N4Hcjs.__name.call(void 0, createFarmAppManifest, "createFarmAppManifest");
946
+ var encoder = new TextEncoder();
947
+ var hex = /* @__PURE__ */ _chunkS3JO3N4Hcjs.__name.call(void 0, (bytes) => [...new Uint8Array(bytes)].map((byte) => byte.toString(16).padStart(2, "0")).join(""), "hex");
948
+ async function sha256Hex(value) {
949
+ return hex(await crypto.subtle.digest("SHA-256", encoder.encode(value)));
950
+ }
951
+ _chunkS3JO3N4Hcjs.__name.call(void 0, sha256Hex, "sha256Hex");
952
+ async function hmacHex(secret, message) {
953
+ const key = await crypto.subtle.importKey(
954
+ "raw",
955
+ encoder.encode(secret),
956
+ { name: "HMAC", hash: "SHA-256" },
957
+ false,
958
+ ["sign"]
959
+ );
960
+ return hex(await crypto.subtle.sign("HMAC", key, encoder.encode(message)));
961
+ }
962
+ _chunkS3JO3N4Hcjs.__name.call(void 0, hmacHex, "hmacHex");
963
+ function sameHex(a, b) {
964
+ if (a.length !== b.length) return false;
965
+ let difference = 0;
966
+ for (let index = 0; index < a.length; index++)
967
+ difference |= a.charCodeAt(index) ^ b.charCodeAt(index);
968
+ return difference === 0;
969
+ }
970
+ _chunkS3JO3N4Hcjs.__name.call(void 0, sameHex, "sameHex");
971
+ async function verifyFarmInfraManifestSignature(header, key, now = Date.now()) {
972
+ if (!header || header.length > 2048) return false;
973
+ const parts = header.split(",").map((part) => part.trim());
974
+ const timestamp = Number(
975
+ _optionalChain([/^t=(\d{1,12})$/, 'access', _42 => _42.exec, 'call', _43 => _43(_nullishCoalesce(parts.find((part) => part.startsWith("t=")), () => ( ""))), 'optionalAccess', _44 => _44[1]])
976
+ );
977
+ if (!Number.isSafeInteger(timestamp)) return false;
978
+ if (Math.abs(now / 1e3 - timestamp) > SIGNATURE_WINDOW_SECONDS) return false;
979
+ const signatures = parts.filter((part) => part.startsWith("v1=")).map((part) => part.slice(3)).filter((value) => /^[0-9a-f]{64}$/.test(value));
980
+ if (!signatures.length || signatures.length > 8) return false;
981
+ const expected = await hmacHex(await sha256Hex(key), `${SIGNED_PURPOSE}
982
+ ${timestamp}`);
983
+ return signatures.some((signature) => sameHex(signature, expected));
984
+ }
985
+ _chunkS3JO3N4Hcjs.__name.call(void 0, verifyFarmInfraManifestSignature, "verifyFarmInfraManifestSignature");
986
+ function processEnv() {
987
+ return _nullishCoalesce(_optionalChain([globalThis, 'access', _45 => _45.process, 'optionalAccess', _46 => _46.env]), () => ( {}));
988
+ }
989
+ _chunkS3JO3N4Hcjs.__name.call(void 0, processEnv, "processEnv");
990
+ async function createFarmAppManifestResponse(request, input, options) {
991
+ if (request.method !== "GET" && request.method !== "HEAD") return null;
992
+ if (!options.development) {
993
+ const key = _optionalChain([(_nullishCoalesce(options.env, () => ( processEnv()))), 'access', _47 => _47.FARMJS_API_KEY, 'optionalAccess', _48 => _48.trim, 'call', _49 => _49()]);
994
+ if (!input.analytics || !key) return null;
995
+ const signed = await verifyFarmInfraManifestSignature(
996
+ request.headers.get(FARM_INFRA_SIGNATURE_HEADER),
997
+ key
998
+ );
999
+ if (!signed)
1000
+ return new Response(null, { status: 404, headers: { "cache-control": "no-store" } });
1001
+ }
1002
+ const body = JSON.stringify(createFarmAppManifest(input));
1003
+ return new Response(request.method === "HEAD" ? null : body, {
1004
+ headers: { "content-type": "application/json", "cache-control": "private, no-store" }
1005
+ });
1006
+ }
1007
+ _chunkS3JO3N4Hcjs.__name.call(void 0, createFarmAppManifestResponse, "createFarmAppManifestResponse");
1008
+
1009
+
1010
+
1011
+
1012
+
1013
+
1014
+
1015
+
1016
+
1017
+
1018
+
1019
+
1020
+
1021
+
1022
+
1023
+
1024
+
1025
+
1026
+
517
1027
 
518
1028
 
519
1029
 
@@ -527,4 +1037,4 @@ _chunkS3JO3N4Hcjs.__name.call(void 0, createFarmApiCatalogResponse, "createFarmA
527
1037
 
528
1038
 
529
1039
 
530
- exports.renderFarmLocaleAlternateLinks = renderFarmLocaleAlternateLinks; exports.createLateRedirectRecovery = createLateRedirectRecovery; exports.createLateNotFoundRecovery = createLateNotFoundRecovery; exports.createFarmMetadataRouteResponse = createFarmMetadataRouteResponse; exports.resolveDefaultErrorStatus = resolveDefaultErrorStatus; exports.getDefaultErrorStatusText = getDefaultErrorStatusText; exports.createDefaultErrorMarkup = createDefaultErrorMarkup; exports.createFarmThemeDocumentParts = createFarmThemeDocumentParts; exports.applyFarmThemeDocument = applyFarmThemeDocument; exports.FARM_API_CATALOG_PATH = FARM_API_CATALOG_PATH; exports.resolveFarmApiCatalogInput = resolveFarmApiCatalogInput; exports.createFarmApiCatalogResponse = createFarmApiCatalogResponse;
1040
+ exports.formatRouteSegment = formatRouteSegment; exports.createRouteDirectoryPattern = createRouteDirectoryPattern; exports.stripRouteGroups = stripRouteGroups; exports.getRouteGroupScope = getRouteGroupScope; exports.isInRouteGroupScope = isInRouteGroupScope; exports.getRouteDirectoryDepth = getRouteDirectoryDepth; exports.routeBoundaryCoversDirectory = routeBoundaryCoversDirectory; exports.HOISTED_HEAD_ELEMENT = HOISTED_HEAD_ELEMENT; exports.extractFarmFullDocument = extractFarmFullDocument; exports.classifyFarmDocumentPrefix = classifyFarmDocumentPrefix; exports.removeFarmDocumentTitles = removeFarmDocumentTitles; exports.ensureFarmDocumentMeta = ensureFarmDocumentMeta; exports.composeFarmFullDocument = composeFarmFullDocument; exports.renderFarmLocaleAlternateLinks = renderFarmLocaleAlternateLinks; exports.createLateRedirectRecovery = createLateRedirectRecovery; exports.createLateNotFoundRecovery = createLateNotFoundRecovery; exports.createFarmMetadataRouteResponse = createFarmMetadataRouteResponse; exports.listFarmMCPLlmsTxtLinks = listFarmMCPLlmsTxtLinks; exports.createFarmAiCatalogResponse = createFarmAiCatalogResponse; exports.resolveDefaultErrorStatus = resolveDefaultErrorStatus; exports.getDefaultErrorStatusText = getDefaultErrorStatusText; exports.createDefaultErrorMarkup = createDefaultErrorMarkup; exports.createFarmThemeDocumentParts = createFarmThemeDocumentParts; exports.applyFarmThemeDocument = applyFarmThemeDocument; exports.FARM_API_CATALOG_PATH = FARM_API_CATALOG_PATH; exports.resolveFarmApiCatalogInput = resolveFarmApiCatalogInput; exports.createFarmApiCatalogResponse = createFarmApiCatalogResponse; exports.FARM_APP_MANIFEST_PATH = FARM_APP_MANIFEST_PATH; exports.resolveFarmAppManifestInput = resolveFarmAppManifestInput; exports.createFarmAppManifestResponse = createFarmAppManifestResponse;
@@ -1,6 +1,6 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } }
2
2
 
3
- var _chunk2SDO73HKcjs = require('./chunk-2SDO73HK.cjs');
3
+ var _chunkYWN746UScjs = require('./chunk-YWN746US.cjs');
4
4
 
5
5
 
6
6
  var _chunkARJWXNQLcjs = require('./chunk-ARJWXNQL.cjs');
@@ -220,7 +220,7 @@ async function applyEndpointInvalidations(declaration, context, result) {
220
220
  "Endpoint invalidates must resolve to an array of { key }, { path }, or { tag } targets"
221
221
  );
222
222
  }
223
- return _chunk2SDO73HKcjs.applyFarmCacheInvalidationTargets.call(void 0, targets);
223
+ return _chunkYWN746UScjs.applyFarmCacheInvalidationTargets.call(void 0, targets);
224
224
  }
225
225
  _chunkS3JO3N4Hcjs.__name.call(void 0, applyEndpointInvalidations, "applyEndpointInvalidations");
226
226
  function createInitialEndpointContext(value) {