@farm.js/core 0.1.0-beta.95 → 0.1.0-beta.97

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 (317) hide show
  1. package/dist/after.cjs +1 -1
  2. package/dist/after.mjs +1 -1
  3. package/dist/agent-runtime.d.mts +3 -2
  4. package/dist/agent-runtime.d.ts +3 -2
  5. package/dist/api/route-manager.cjs +43 -4
  6. package/dist/api/route-manager.d.mts +4 -3
  7. package/dist/api/route-manager.d.ts +4 -3
  8. package/dist/api/route-manager.mjs +7 -7
  9. package/dist/api/runtime.cjs +43 -4
  10. package/dist/api/runtime.d.mts +1 -1
  11. package/dist/api/runtime.d.ts +1 -1
  12. package/dist/api/runtime.mjs +5 -5
  13. package/dist/api.cjs +352 -109
  14. package/dist/api.d.mts +7 -6
  15. package/dist/api.d.ts +7 -6
  16. package/dist/api.mjs +19 -12
  17. package/dist/{app-CIIEvA4r.d.ts → app-CIOx3LvY.d.ts} +4 -4
  18. package/dist/{app-O4AEC1OH.d.mts → app-DBd6437H.d.mts} +4 -4
  19. package/dist/app-markdown.d.mts +4 -3
  20. package/dist/app-markdown.d.ts +4 -3
  21. package/dist/cache.cjs +42 -4
  22. package/dist/cache.d.mts +68 -1
  23. package/dist/cache.d.ts +68 -1
  24. package/dist/cache.mjs +3 -3
  25. package/dist/{chunk-AXVJCMVF.mjs → chunk-2HDOV47R.mjs} +3 -3
  26. package/dist/chunk-2HDOV47R.mjs.map +1 -0
  27. package/dist/{chunk-RBRLLZL5.mjs → chunk-34IAPZBG.mjs} +16 -3
  28. package/dist/chunk-34IAPZBG.mjs.map +1 -0
  29. package/dist/{chunk-VV24CC42.mjs → chunk-35NPLKQJ.mjs} +2 -2
  30. package/dist/{chunk-D7QH7MDU.mjs → chunk-3TWQERDE.mjs} +5 -4
  31. package/dist/chunk-3TWQERDE.mjs.map +1 -0
  32. package/dist/{chunk-RWYRFCLG.mjs → chunk-4X57GXQA.mjs} +2 -2
  33. package/dist/{chunk-KOTSX5JH.mjs → chunk-52BR7LTX.mjs} +30 -21
  34. package/dist/chunk-52BR7LTX.mjs.map +1 -0
  35. package/dist/{chunk-SALMKQXH.mjs → chunk-6EJHNHH4.mjs} +80 -27
  36. package/dist/chunk-6EJHNHH4.mjs.map +1 -0
  37. package/dist/{chunk-ZFNK77WN.mjs → chunk-6JNGOC37.mjs} +2 -2
  38. package/dist/{after.cjs.map → chunk-6JNGOC37.mjs.map} +1 -1
  39. package/dist/{chunk-MOW47IF5.mjs → chunk-6UYVU46O.mjs} +2 -2
  40. package/dist/{chunk-7MABZJIM.mjs → chunk-7PYVLJ4J.mjs} +1 -1
  41. package/dist/chunk-7PYVLJ4J.mjs.map +1 -0
  42. package/dist/{chunk-FLHLPB57.mjs → chunk-D7F7YZ7L.mjs} +93 -67
  43. package/dist/chunk-D7F7YZ7L.mjs.map +1 -0
  44. package/dist/chunk-DU3PKDVQ.mjs +35 -0
  45. package/dist/chunk-DU3PKDVQ.mjs.map +1 -0
  46. package/dist/{chunk-SCFX4UTD.mjs → chunk-EHTUKVSW.mjs} +1 -1
  47. package/dist/chunk-EHTUKVSW.mjs.map +1 -0
  48. package/dist/{chunk-KWCNQUH5.mjs → chunk-EPDIF432.mjs} +526 -50
  49. package/dist/chunk-EPDIF432.mjs.map +1 -0
  50. package/dist/{chunk-A3636IHN.mjs → chunk-FP5Q67FO.mjs} +167 -96
  51. package/dist/chunk-FP5Q67FO.mjs.map +1 -0
  52. package/dist/{chunk-HHZAOTQD.mjs → chunk-GJ7W6LNK.mjs} +7 -6
  53. package/dist/chunk-GJ7W6LNK.mjs.map +1 -0
  54. package/dist/{chunk-RLGUZ3HS.mjs → chunk-I3OOUWO5.mjs} +3 -3
  55. package/dist/{chunk-75CGAL6E.mjs → chunk-IZBX2TEU.mjs} +217 -105
  56. package/dist/chunk-IZBX2TEU.mjs.map +1 -0
  57. package/dist/{chunk-22VG4DFJ.mjs → chunk-J3MPQ4MQ.mjs} +2 -2
  58. package/dist/{chunk-22VG4DFJ.mjs.map → chunk-J3MPQ4MQ.mjs.map} +1 -1
  59. package/dist/{chunk-2LS3KKE7.mjs → chunk-JV7JUD7Q.mjs} +4 -4
  60. package/dist/{chunk-Q3OX763A.mjs → chunk-LXDASSTE.mjs} +2 -2
  61. package/dist/{chunk-ZRBCBOEX.mjs → chunk-N2FY2QZ7.mjs} +28 -3
  62. package/dist/chunk-N2FY2QZ7.mjs.map +1 -0
  63. package/dist/{chunk-MRVJCLYQ.mjs → chunk-PSQ7N4XP.mjs} +4 -2
  64. package/dist/chunk-PSQ7N4XP.mjs.map +1 -0
  65. package/dist/{chunk-HVG3HLQZ.mjs → chunk-Q7WGOOAI.mjs} +3 -3
  66. package/dist/{chunk-WTYAPO5I.mjs → chunk-RCNWMEBT.mjs} +3 -2
  67. package/dist/{chunk-WTYAPO5I.mjs.map → chunk-RCNWMEBT.mjs.map} +1 -1
  68. package/dist/{chunk-3INDBMUU.mjs → chunk-TGDIACZT.mjs} +2 -2
  69. package/dist/{chunk-WB75GIX2.mjs → chunk-TQTB33JS.mjs} +14 -3
  70. package/dist/chunk-TQTB33JS.mjs.map +1 -0
  71. package/dist/{chunk-MH27UH72.mjs → chunk-TT3E2JOF.mjs} +3 -3
  72. package/dist/{chunk-UWRGX3J3.mjs → chunk-UMUWR5XA.mjs} +2 -2
  73. package/dist/{chunk-XTLLHCWU.mjs → chunk-V4VRLVLW.mjs} +52 -31
  74. package/dist/chunk-V4VRLVLW.mjs.map +1 -0
  75. package/dist/{chunk-EXCGBERG.mjs → chunk-WD2EBM3I.mjs} +79 -17
  76. package/dist/chunk-WD2EBM3I.mjs.map +1 -0
  77. package/dist/{chunk-DLBUAJTK.mjs → chunk-WMJGA32P.mjs} +74 -5
  78. package/dist/chunk-WMJGA32P.mjs.map +1 -0
  79. package/dist/{chunk-TKQCJMY7.mjs → chunk-X4SFHKFH.mjs} +7 -4
  80. package/dist/{chunk-TKQCJMY7.mjs.map → chunk-X4SFHKFH.mjs.map} +1 -1
  81. package/dist/{chunk-Q7GPJZCO.mjs → chunk-YIBV77KZ.mjs} +26 -7
  82. package/dist/chunk-YIBV77KZ.mjs.map +1 -0
  83. package/dist/client/lifecycle.mjs +2 -2
  84. package/dist/{client-mcMC334J.d.mts → client-DWoLZ3QU.d.mts} +52 -5
  85. package/dist/{client-d5ONQ-Pd.d.ts → client-DuQuQC1h.d.ts} +52 -5
  86. package/dist/client-cache-BMxuFqwH.d.ts +18 -0
  87. package/dist/client-cache-CCK-fCe0.d.mts +18 -0
  88. package/dist/{client-plugins-BvClItiL.d.mts → client-plugins-B6-07YmP.d.mts} +52 -99
  89. package/dist/{client-plugins-B9Sq-iMg.d.ts → client-plugins-By6MVUX-.d.ts} +52 -99
  90. package/dist/client-plugins.cjs +1 -1
  91. package/dist/client-plugins.d.mts +3 -2
  92. package/dist/client-plugins.d.ts +3 -2
  93. package/dist/client-plugins.mjs +2 -2
  94. package/dist/client.cjs +1046 -211
  95. package/dist/client.d.mts +136 -18
  96. package/dist/client.d.ts +136 -18
  97. package/dist/client.mjs +32 -15
  98. package/dist/config.d.mts +3 -2
  99. package/dist/config.d.ts +3 -2
  100. package/dist/{devtools-S52RRRMN.mjs → devtools-XWZX6CCL.mjs} +5 -5
  101. package/dist/{devtools-client-3XRTBND5.mjs → devtools-client-Z7QQA3Q2.mjs} +56 -17
  102. package/dist/devtools-client-Z7QQA3Q2.mjs.map +1 -0
  103. package/dist/{devtools-ui-NJKFORTG.mjs → devtools-ui-2HG5M4EL.mjs} +3 -1
  104. package/dist/devtools-ui-2HG5M4EL.mjs.map +1 -0
  105. package/dist/docs.cjs +24 -5
  106. package/dist/docs.mjs +5 -5
  107. package/dist/i18n/server.cjs +13 -2
  108. package/dist/i18n/server.d.mts +2 -2
  109. package/dist/i18n/server.d.ts +2 -2
  110. package/dist/i18n/server.mjs +1 -1
  111. package/dist/index.cjs +1928 -894
  112. package/dist/index.d.mts +139 -21
  113. package/dist/index.d.ts +139 -21
  114. package/dist/index.mjs +57 -34
  115. package/dist/index.mjs.map +1 -1
  116. package/dist/integration-api-BT024nuJ.d.mts +97 -0
  117. package/dist/integration-api-BT024nuJ.d.ts +97 -0
  118. package/dist/integrations.d.mts +3 -2
  119. package/dist/integrations.d.ts +3 -2
  120. package/dist/internal/build-runtime.cjs +764 -547
  121. package/dist/internal/build-runtime.d.mts +5 -4
  122. package/dist/internal/build-runtime.d.ts +5 -4
  123. package/dist/internal/build-runtime.mjs +16 -16
  124. package/dist/internal/client-runtime.cjs +1 -1
  125. package/dist/internal/client-runtime.mjs +2 -2
  126. package/dist/internal/config-runtime.cjs +4 -1
  127. package/dist/internal/config-runtime.d.mts +4 -3
  128. package/dist/internal/config-runtime.d.ts +4 -3
  129. package/dist/internal/config-runtime.mjs +4 -4
  130. package/dist/internal/product-telemetry-runtime.cjs +1 -1
  131. package/dist/internal/product-telemetry-runtime.mjs +1 -1
  132. package/dist/internal/production-runtime.cjs +29 -3
  133. package/dist/internal/production-runtime.d.mts +8 -7
  134. package/dist/internal/production-runtime.d.ts +8 -7
  135. package/dist/internal/production-runtime.mjs +5 -5
  136. package/dist/{metadata-route-yV4U6X8h.d.ts → metadata-route-8_V3UonT.d.ts} +1 -1
  137. package/dist/{metadata-route-p4K1l92V.d.mts → metadata-route-CWP_HjGU.d.mts} +1 -1
  138. package/dist/middleware.cjs +28 -2
  139. package/dist/middleware.d.mts +5 -4
  140. package/dist/middleware.d.ts +5 -4
  141. package/dist/middleware.mjs +4 -4
  142. package/dist/navigation.cjs +3 -1
  143. package/dist/navigation.mjs +3 -3
  144. package/dist/observability.cjs +27 -2
  145. package/dist/observability.mjs +1 -1
  146. package/dist/plugin.cjs +528 -349
  147. package/dist/plugin.d.mts +3 -2
  148. package/dist/plugin.d.ts +3 -2
  149. package/dist/plugin.mjs +13 -13
  150. package/dist/{production-runtime-IkB0Qj4i.d.mts → production-runtime-BGRH1dKG.d.mts} +1 -1
  151. package/dist/{production-runtime-0JTch4_d.d.ts → production-runtime-CdmzsDax.d.ts} +1 -1
  152. package/dist/query/client.cjs +68 -29
  153. package/dist/query/client.mjs +69 -30
  154. package/dist/query/client.mjs.map +1 -1
  155. package/dist/{render-plan-Dc8CjNI7.d.ts → render-plan-0GeHiGVZ.d.ts} +1 -1
  156. package/dist/{render-plan-CU31j-Jk.d.mts → render-plan-DLxJYAA5.d.mts} +1 -1
  157. package/dist/renderer-client.cjs +169 -26
  158. package/dist/renderer-client.d.mts +7 -6
  159. package/dist/renderer-client.d.ts +7 -6
  160. package/dist/renderer-client.mjs +16 -19
  161. package/dist/renderer-client.mjs.map +1 -1
  162. package/dist/{request-BXa1KY8i.d.mts → request-BCNXSXLh.d.mts} +1 -1
  163. package/dist/{request-CUUBujZt.d.ts → request-BstWbZ6O.d.ts} +1 -1
  164. package/dist/request.d.mts +4 -3
  165. package/dist/request.d.ts +4 -3
  166. package/dist/{route-Y8lfz1wF.d.ts → route-4pd-EVtw.d.ts} +45 -50
  167. package/dist/{route-Cq3aObmj.d.mts → route-CvEr4Uc9.d.mts} +45 -50
  168. package/dist/routes.cjs +27 -2
  169. package/dist/routes.d.mts +3 -2
  170. package/dist/routes.d.ts +3 -2
  171. package/dist/routes.mjs +4 -4
  172. package/dist/{runtime-j1S3sDTh.d.ts → runtime-BgDQzBiu.d.ts} +1 -0
  173. package/dist/{runtime-DDwvDtS4.d.mts → runtime-CV2UCV-5.d.mts} +1 -0
  174. package/dist/server-action-security.mjs +2 -2
  175. package/dist/server-fn-client.cjs +102 -26
  176. package/dist/server-fn-client.d.mts +6 -0
  177. package/dist/server-fn-client.d.ts +6 -0
  178. package/dist/server-fn-client.mjs +2 -1
  179. package/dist/server-fn.cjs +42 -4
  180. package/dist/server-fn.mjs +5 -5
  181. package/dist/server-plugins.d.mts +4 -3
  182. package/dist/server-plugins.d.ts +4 -3
  183. package/dist/server-query-client.cjs +195 -34
  184. package/dist/server-query-client.d.mts +3 -3
  185. package/dist/server-query-client.d.ts +3 -3
  186. package/dist/server-query-client.mjs +7 -7
  187. package/dist/{server-query-runtime-3zAj77yv.d.ts → server-query-runtime-DXRNhX_3.d.ts} +2 -0
  188. package/dist/{server-query-runtime-B50KAcj5.d.mts → server-query-runtime-aP52iuL5.d.mts} +2 -0
  189. package/dist/server-query.cjs +44 -5
  190. package/dist/server-query.d.mts +4 -0
  191. package/dist/server-query.d.ts +4 -0
  192. package/dist/server-query.mjs +7 -7
  193. package/dist/server.cjs +553 -370
  194. package/dist/server.d.mts +11 -10
  195. package/dist/server.d.ts +11 -10
  196. package/dist/server.mjs +17 -17
  197. package/dist/{spa-router-CyLkwst6.d.mts → spa-router-BeyAVSc6.d.mts} +1 -1
  198. package/dist/{spa-router-BkqGXaV_.d.ts → spa-router-COgu4txb.d.ts} +1 -1
  199. package/dist/testing.cjs +27 -2
  200. package/dist/testing.d.mts +3 -2
  201. package/dist/testing.d.ts +3 -2
  202. package/dist/testing.mjs +9 -9
  203. package/dist/{utils-NKR6SoNv.d.mts → utils-DL2VwDQl.d.mts} +1 -1
  204. package/dist/{utils-B2OHrb9F.d.ts → utils-DkU2c_1B.d.ts} +1 -1
  205. package/dist/version.cjs +1 -1
  206. package/dist/version.mjs +1 -1
  207. package/dist/vite.cjs +536 -353
  208. package/dist/vite.d.mts +3 -2
  209. package/dist/vite.d.ts +3 -2
  210. package/dist/vite.mjs +17 -13
  211. package/package.json +17 -17
  212. package/types/client.d.ts +115 -10
  213. package/dist/agent-runtime.cjs.map +0 -1
  214. package/dist/api/route-manager.cjs.map +0 -1
  215. package/dist/api/runtime.cjs.map +0 -1
  216. package/dist/api.cjs.map +0 -1
  217. package/dist/app-markdown.cjs.map +0 -1
  218. package/dist/cache.cjs.map +0 -1
  219. package/dist/chunk-75CGAL6E.mjs.map +0 -1
  220. package/dist/chunk-7MABZJIM.mjs.map +0 -1
  221. package/dist/chunk-A3636IHN.mjs.map +0 -1
  222. package/dist/chunk-AXVJCMVF.mjs.map +0 -1
  223. package/dist/chunk-D7QH7MDU.mjs.map +0 -1
  224. package/dist/chunk-DLBUAJTK.mjs.map +0 -1
  225. package/dist/chunk-EXCGBERG.mjs.map +0 -1
  226. package/dist/chunk-FLHLPB57.mjs.map +0 -1
  227. package/dist/chunk-HHZAOTQD.mjs.map +0 -1
  228. package/dist/chunk-KOTSX5JH.mjs.map +0 -1
  229. package/dist/chunk-KWCNQUH5.mjs.map +0 -1
  230. package/dist/chunk-MRVJCLYQ.mjs.map +0 -1
  231. package/dist/chunk-Q7GPJZCO.mjs.map +0 -1
  232. package/dist/chunk-RBRLLZL5.mjs.map +0 -1
  233. package/dist/chunk-SALMKQXH.mjs.map +0 -1
  234. package/dist/chunk-SCFX4UTD.mjs.map +0 -1
  235. package/dist/chunk-WB75GIX2.mjs.map +0 -1
  236. package/dist/chunk-XTLLHCWU.mjs.map +0 -1
  237. package/dist/chunk-ZFNK77WN.mjs.map +0 -1
  238. package/dist/chunk-ZRBCBOEX.mjs.map +0 -1
  239. package/dist/client/lifecycle.cjs.map +0 -1
  240. package/dist/client-cache-CopR_MaI.d.mts +0 -6
  241. package/dist/client-cache-Djy_TlE8.d.ts +0 -6
  242. package/dist/client-plugins.cjs.map +0 -1
  243. package/dist/client.cjs.map +0 -1
  244. package/dist/config.cjs.map +0 -1
  245. package/dist/cron.cjs.map +0 -1
  246. package/dist/deferred.cjs.map +0 -1
  247. package/dist/deployment.cjs.map +0 -1
  248. package/dist/devtools-client-3XRTBND5.mjs.map +0 -1
  249. package/dist/devtools-ui-NJKFORTG.mjs.map +0 -1
  250. package/dist/docs.cjs.map +0 -1
  251. package/dist/env-types.cjs.map +0 -1
  252. package/dist/env.cjs.map +0 -1
  253. package/dist/environment/vite.cjs.map +0 -1
  254. package/dist/environment.cjs.map +0 -1
  255. package/dist/font.cjs.map +0 -1
  256. package/dist/headers.cjs.map +0 -1
  257. package/dist/i18n/client.cjs.map +0 -1
  258. package/dist/i18n/index.cjs.map +0 -1
  259. package/dist/i18n/server.cjs.map +0 -1
  260. package/dist/image/server.cjs.map +0 -1
  261. package/dist/image/sharp.cjs.map +0 -1
  262. package/dist/image.cjs.map +0 -1
  263. package/dist/index.cjs.map +0 -1
  264. package/dist/instrumentation.cjs.map +0 -1
  265. package/dist/integrations.cjs.map +0 -1
  266. package/dist/internal/build-runtime.cjs.map +0 -1
  267. package/dist/internal/client-runtime.cjs.map +0 -1
  268. package/dist/internal/config-runtime.cjs.map +0 -1
  269. package/dist/internal/isolated-boundary.cjs.map +0 -1
  270. package/dist/internal/metadata-image-runtime.cjs.map +0 -1
  271. package/dist/internal/product-telemetry-runtime.cjs.map +0 -1
  272. package/dist/internal/production-node-env.cjs.map +0 -1
  273. package/dist/internal/production-runtime.cjs.map +0 -1
  274. package/dist/markdown.cjs.map +0 -1
  275. package/dist/middleware.cjs.map +0 -1
  276. package/dist/navigation.cjs.map +0 -1
  277. package/dist/observability.cjs.map +0 -1
  278. package/dist/plugin.cjs.map +0 -1
  279. package/dist/query/client.cjs.map +0 -1
  280. package/dist/query/index.cjs.map +0 -1
  281. package/dist/query/parsers.cjs.map +0 -1
  282. package/dist/query/server.cjs.map +0 -1
  283. package/dist/renderer/react/client.cjs.map +0 -1
  284. package/dist/renderer/react/server.cjs.map +0 -1
  285. package/dist/renderer/react/vite.cjs.map +0 -1
  286. package/dist/renderer-client.cjs.map +0 -1
  287. package/dist/renderer.cjs.map +0 -1
  288. package/dist/request.cjs.map +0 -1
  289. package/dist/router.cjs.map +0 -1
  290. package/dist/routes.cjs.map +0 -1
  291. package/dist/server-action-security.cjs.map +0 -1
  292. package/dist/server-fn-client.cjs.map +0 -1
  293. package/dist/server-fn.cjs.map +0 -1
  294. package/dist/server-plugins.cjs.map +0 -1
  295. package/dist/server-query-client.cjs.map +0 -1
  296. package/dist/server-query.cjs.map +0 -1
  297. package/dist/server.cjs.map +0 -1
  298. package/dist/storage.cjs.map +0 -1
  299. package/dist/testing.cjs.map +0 -1
  300. package/dist/theme/client.cjs.map +0 -1
  301. package/dist/theme/index.cjs.map +0 -1
  302. package/dist/theme/runtime.cjs.map +0 -1
  303. package/dist/theme/server.cjs.map +0 -1
  304. package/dist/version.cjs.map +0 -1
  305. package/dist/vite.cjs.map +0 -1
  306. package/dist/workflows.cjs.map +0 -1
  307. /package/dist/{chunk-VV24CC42.mjs.map → chunk-35NPLKQJ.mjs.map} +0 -0
  308. /package/dist/{chunk-RWYRFCLG.mjs.map → chunk-4X57GXQA.mjs.map} +0 -0
  309. /package/dist/{chunk-MOW47IF5.mjs.map → chunk-6UYVU46O.mjs.map} +0 -0
  310. /package/dist/{chunk-RLGUZ3HS.mjs.map → chunk-I3OOUWO5.mjs.map} +0 -0
  311. /package/dist/{chunk-2LS3KKE7.mjs.map → chunk-JV7JUD7Q.mjs.map} +0 -0
  312. /package/dist/{chunk-Q3OX763A.mjs.map → chunk-LXDASSTE.mjs.map} +0 -0
  313. /package/dist/{chunk-HVG3HLQZ.mjs.map → chunk-Q7WGOOAI.mjs.map} +0 -0
  314. /package/dist/{chunk-3INDBMUU.mjs.map → chunk-TGDIACZT.mjs.map} +0 -0
  315. /package/dist/{chunk-MH27UH72.mjs.map → chunk-TT3E2JOF.mjs.map} +0 -0
  316. /package/dist/{chunk-UWRGX3J3.mjs.map → chunk-UMUWR5XA.mjs.map} +0 -0
  317. /package/dist/{devtools-S52RRRMN.mjs.map → devtools-XWZX6CCL.mjs.map} +0 -0
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/docs/handler.ts","../src/docs/last-modified.ts","../src/docs/social-image.ts","../src/docs/adapter.ts","../src/docs/api.ts"],"sourcesContent":["import { existsSync, readdirSync, readFileSync, realpathSync, statSync } from \"node:fs\";\nimport path from \"node:path\";\nimport {\n buildDocsAgentDiscoverySpec,\n buildDocsSitemapManifest,\n isDocsAgentDiscoveryRequest,\n isDocsAgentsRequest,\n isDocsSkillRequest,\n renderDocsAgentsDocument,\n renderDocsLlmsTxt,\n renderDocsMarkdownDocument,\n renderDocsRobotsTxt,\n renderDocsSitemapMarkdown,\n renderDocsSitemapXml,\n renderDocsSkillDocument,\n resolveDocsLlmsTxtFormat,\n resolveDocsRobotsRequest,\n resolveDocsSitemapRequest,\n type DocsLlmsTxtPageInput,\n type DocsMarkdownPage,\n type DocsSitemapPageInput,\n} from \"@farming-labs/docs\";\nimport { marked, Renderer } from \"marked\";\nimport { highlight } from \"sugar-high\";\nimport { FARM_NAVIGATION_HEAD_SELECTOR } from \"../client/document-head\";\nimport type { FarmLayoutFonts } from \"../font\";\nimport { matchesFarmIfNoneMatch } from \"../server-http\";\nimport {\n resolveFarmDocsFontAssets,\n toFarmDocsPublicFontAssets,\n type FarmDocsPublicFontAsset,\n} from \"./fonts\";\nimport { resolveFarmDocsPageLastModified } from \"./last-modified\";\nimport { generateFarmDocsSearchBootstrapRuntime, isFarmDocsSearchEnabled } from \"./search-client\";\nimport {\n createFarmDocsSocialImageDescriptor,\n getFarmDocsCustomSocialImage,\n getFarmDocsSocialImageSlug,\n isFarmDocsSocialImageEnabled,\n renderFarmDocsSocialImageSvg,\n renderFarmDocsSocialMetadata,\n} from \"./social-image\";\nimport type { FarmDocsResolvedConfig } from \"./types\";\n\nexport interface FarmDocsHandlerOptions {\n root: string;\n srcDir?: string;\n clientEntry?: string;\n fontAssets?: readonly FarmDocsPublicFontAsset[];\n /** Resolve semantic fonts from the layouts that apply to the requested docs route. */\n resolveLayoutFonts?: (\n pathname: string,\n ) => FarmLayoutFonts | undefined | Promise<FarmLayoutFonts | undefined>;\n /** Stylesheet containing the `@font-face` rules generated by Farm's font compiler. */\n fontStylesheetHref?: string;\n /** Application-owned global stylesheet, including the selected docs theme CSS import. */\n globalStylesheetHref?: string;\n}\n\nexport interface FarmDocsPage {\n slug: string;\n title: string;\n description?: string;\n section?: string;\n href: string;\n sourcePath: string;\n lastModified?: string;\n}\n\nexport interface LoadedFarmDocsPage extends FarmDocsPage {\n body: string;\n frontmatter: Record<string, string>;\n}\n\nconst DOCS_FILE_NAMES = [\"page.mdx\", \"page.md\", \"index.mdx\", \"index.md\"];\nconst DOCS_FILE_EXTENSIONS = [\".mdx\", \".md\"];\nconst FARM_DOCS_FALLBACK_FAVICON =\n \"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 32 32'%3E%3Crect width='32' height='32' fill='black'/%3E%3Cpath d='M7 8h18v3H10v5h12v3H10v5H7z' fill='white'/%3E%3C/svg%3E\";\nconst FARM_DOCS_FAVICON_FILES = [\"favicon.svg\", \"favicon.ico\", \"favicon.png\"];\n\nfunction trimSlashes(value: string): string {\n return value.replace(/^\\/+|\\/+$/g, \"\");\n}\n\nfunction normalizeEntry(entry: string | undefined): string {\n if (!entry || entry === \"/\") return \"/\";\n return `/${trimSlashes(entry)}`;\n}\n\nfunction decodeDocsPath(value: string): string {\n try {\n return decodeURIComponent(value);\n } catch {\n // Malformed percent-encoding in a request path must resolve to a\n // non-matching slug (a 404), not throw out of the handler.\n return value;\n }\n}\n\nfunction normalizeSlug(value: string): string {\n return trimSlashes(decodeDocsPath(value)).replace(/\\.(mdx?|markdown)$/i, \"\");\n}\n\nfunction resolveFarmDocsFavicon(\n docs: FarmDocsResolvedConfig | undefined,\n options: FarmDocsHandlerOptions,\n): string {\n const configuredFavicon = docs?.config.favicon;\n if (typeof configuredFavicon === \"string\" && configuredFavicon.trim()) {\n return configuredFavicon.trim();\n }\n\n const publicDir = path.join(path.resolve(options.root), \"public\");\n\n for (const fileName of FARM_DOCS_FAVICON_FILES) {\n const faviconPath = path.join(publicDir, fileName);\n if (existsSync(faviconPath) && statSync(faviconPath).isFile()) {\n return `/${fileName}`;\n }\n }\n\n return FARM_DOCS_FALLBACK_FAVICON;\n}\n\nfunction renderFarmDocsFaviconLink(faviconHref: string): string {\n const normalizedHref = faviconHref.split(/[?#]/, 1)[0]?.toLowerCase() || \"\";\n const type =\n normalizedHref.endsWith(\".svg\") || faviconHref.startsWith(\"data:image/svg+xml\")\n ? \"image/svg+xml\"\n : normalizedHref.endsWith(\".png\")\n ? \"image/png\"\n : normalizedHref.endsWith(\".ico\")\n ? \"image/x-icon\"\n : undefined;\n const metadata =\n type === \"image/svg+xml\" ? ' sizes=\"any\" type=\"image/svg+xml\"' : type ? ` type=\"${type}\"` : \"\";\n\n return `<link rel=\"icon\" href=\"${escapeAttribute(faviconHref)}\"${metadata}>`;\n}\n\nfunction renderFarmDocsBrandMark(): string {\n return `<svg class=\"sidebar-brand-logo\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\">\n <rect x=\"2\" y=\"2\" width=\"5\" height=\"5\" rx=\"0.75\" fill=\"currentColor\"></rect>\n <path d=\"M9.75 2h11.5c.41 0 .75.34.75.75v3.5c0 .41-.34.75-.75.75H9.75A.75.75 0 0 1 9 6.25v-3.5c0-.41.34-.75.75-.75Zm9.75 1.62a.38.38 0 0 0-.38.38v1c0 .21.17.38.38.38h.75c.21 0 .38-.17.38-.38V4a.38.38 0 0 0-.38-.38h-.75Z\" fill=\"currentColor\"></path>\n <rect x=\"2\" y=\"9.5\" width=\"5\" height=\"5\" rx=\"0.75\" fill=\"currentColor\" opacity=\"0.64\"></rect>\n <rect x=\"9\" y=\"9.5\" width=\"13\" height=\"5\" rx=\"0.75\" fill=\"currentColor\" opacity=\"0.64\"></rect>\n <rect x=\"2\" y=\"17\" width=\"5\" height=\"5\" rx=\"0.75\" fill=\"currentColor\" opacity=\"0.34\"></rect>\n <rect x=\"9\" y=\"17\" width=\"7.5\" height=\"5\" rx=\"0.75\" fill=\"currentColor\" opacity=\"0.34\"></rect>\n </svg>`;\n}\n\nfunction renderFarmDocsBrandTitle(navTitle: string): string {\n const suffix = navTitle.match(/\\.js$/i)?.[0];\n\n if (!suffix) {\n return `<span class=\"sidebar-brand-title\">${escapeHtml(navTitle)}</span>`;\n }\n\n const productName = navTitle.slice(0, -suffix.length);\n return `<span class=\"sidebar-brand-title\">${escapeHtml(productName)}<span class=\"sidebar-brand-suffix\">${escapeHtml(suffix)}</span></span>`;\n}\n\nfunction isSafeSegment(segment: string): boolean {\n return segment !== \"..\" && !segment.includes(\"/\") && !segment.includes(\"\\\\\");\n}\n\nfunction resolveInside(root: string, target: string): string | null {\n const resolvedRoot = path.resolve(root);\n const resolvedTarget = path.resolve(target);\n const relative = path.relative(resolvedRoot, resolvedTarget);\n if (relative === \"\" || (!relative.startsWith(\"..\") && !path.isAbsolute(relative))) {\n return resolvedTarget;\n }\n return null;\n}\n\nfunction resolveExistingFileInside(root: string, target: string): string | null {\n const safePath = resolveInside(root, target);\n if (!safePath) return null;\n\n try {\n const realRoot = realpathSync(root);\n const realTarget = realpathSync(safePath);\n const containedTarget = resolveInside(realRoot, realTarget);\n return containedTarget && statSync(containedTarget).isFile() ? containedTarget : null;\n } catch {\n return null;\n }\n}\n\nexport function isFarmDocsRequest(docs: FarmDocsResolvedConfig | undefined, request: Request) {\n if (!docs?.enabled) return false;\n if (request.method !== \"GET\" && request.method !== \"HEAD\") return false;\n\n const pathname = new URL(request.url).pathname;\n const entry = normalizeEntry(docs.entry);\n if (entry === \"/\") return true;\n\n return pathname === entry || pathname === `${entry}.md` || pathname.startsWith(`${entry}/`);\n}\n\nexport function resolveFarmDocsContentDir(\n docs: FarmDocsResolvedConfig,\n options: FarmDocsHandlerOptions,\n): string {\n const root = path.resolve(options.root);\n const srcDir = options.srcDir || \"src\";\n const configuredContentDir = docs.contentDir || docs.config.contentDir;\n\n if (configuredContentDir) {\n return path.isAbsolute(configuredContentDir)\n ? configuredContentDir\n : path.join(root, configuredContentDir);\n }\n\n const entryDir = docs.config.entry || trimSlashes(docs.entry) || \"docs\";\n const appDocsDir = path.join(root, srcDir, \"app\", entryDir);\n if (existsSync(appDocsDir)) return appDocsDir;\n\n return path.join(root, entryDir);\n}\n\nexport function getFarmDocsRouteTypeEntries(docs: FarmDocsResolvedConfig | undefined): string[] {\n if (!docs?.enabled) return [];\n const entry = normalizeEntry(docs.entry);\n if (entry === \"/\") return [\"/\", \"/[...docs]\"];\n return [entry, `${entry}/[...docs]`];\n}\n\nexport function getFarmDocsDocumentNavigationMatchers(\n docs: FarmDocsResolvedConfig | undefined,\n): string[] {\n if (!docs?.enabled) return [];\n const entry = normalizeEntry(docs.entry);\n return [entry === \"/\" ? \"/(.*)\" : `${entry}(.*)`];\n}\n\nfunction getRequestSlug(docs: FarmDocsResolvedConfig, request: Request): string {\n const pathname = new URL(request.url).pathname;\n const entry = normalizeEntry(docs.entry);\n\n if (entry === \"/\") return normalizeSlug(pathname);\n if (pathname === entry || pathname === `${entry}.md`) return \"\";\n\n return normalizeSlug(pathname.slice(entry.length));\n}\n\nfunction findDocsPageFile(contentDir: string, slug: string): string | null {\n const segments = slug ? slug.split(\"/\").filter(Boolean) : [];\n if (!segments.every(isSafeSegment)) return null;\n\n const slugDir = path.join(contentDir, ...segments);\n const candidates =\n segments.length === 0\n ? DOCS_FILE_NAMES.map((filename) => path.join(contentDir, filename))\n : [\n ...DOCS_FILE_NAMES.map((filename) => path.join(slugDir, filename)),\n ...DOCS_FILE_EXTENSIONS.map((extension) => path.join(contentDir, `${slug}${extension}`)),\n ];\n\n for (const candidate of candidates) {\n const safePath = resolveExistingFileInside(contentDir, candidate);\n if (safePath) {\n return safePath;\n }\n }\n\n return null;\n}\n\nfunction parseFrontmatter(source: string): {\n frontmatter: Record<string, string>;\n body: string;\n} {\n if (!source.startsWith(\"---\")) {\n return { frontmatter: {}, body: source };\n }\n\n const endIndex = source.indexOf(\"\\n---\", 3);\n if (endIndex === -1) return { frontmatter: {}, body: source };\n\n const frontmatterSource = source.slice(3, endIndex).trim();\n const body = source.slice(source.indexOf(\"\\n\", endIndex + 1) + 1);\n const frontmatter: Record<string, string> = {};\n\n for (const line of frontmatterSource.split(/\\r?\\n/)) {\n const separator = line.indexOf(\":\");\n if (separator === -1) continue;\n const key = line.slice(0, separator).trim();\n const value = line\n .slice(separator + 1)\n .trim()\n .replace(/^[\"']|[\"']$/g, \"\");\n if (key && value) frontmatter[key] = value;\n }\n\n return { frontmatter, body };\n}\n\nfunction titleFromSlug(slug: string): string {\n const lastSegment = slug.split(\"/\").filter(Boolean).pop() || \"Docs\";\n return lastSegment\n .split(/[-_]/)\n .filter(Boolean)\n .map((part) => part.charAt(0).toUpperCase() + part.slice(1))\n .join(\" \");\n}\n\nfunction titleFromMarkdown(body: string, fallback: string): string {\n const heading = body.match(/^#\\s+(.+)$/m)?.[1]?.trim();\n return heading || fallback;\n}\n\nexport function loadFarmDocsPage(\n contentDir: string,\n docs: FarmDocsResolvedConfig,\n slug: string,\n): LoadedFarmDocsPage | null {\n const sourcePath = findDocsPageFile(contentDir, slug);\n if (!sourcePath) return null;\n\n const source = readFileSync(sourcePath, \"utf8\");\n const { frontmatter, body } = parseFrontmatter(source);\n const title = frontmatter.title || titleFromMarkdown(body, titleFromSlug(slug));\n const href = createDocsHref(docs.entry, slug);\n\n return {\n slug,\n title,\n description: frontmatter.description,\n section: frontmatter.section,\n href,\n sourcePath,\n lastModified: resolveFarmDocsPageLastModified(contentDir, sourcePath, frontmatter),\n frontmatter,\n body,\n };\n}\n\nfunction createDocsHref(entry: string, slug: string): string {\n const normalizedEntry = normalizeEntry(entry);\n const normalizedSlug = trimSlashes(slug);\n if (normalizedEntry === \"/\") return normalizedSlug ? `/${normalizedSlug}` : \"/\";\n return normalizedSlug ? `${normalizedEntry}/${normalizedSlug}` : normalizedEntry;\n}\n\nfunction pathToSlug(contentDir: string, filePath: string): string | null {\n const relative = path.relative(contentDir, filePath).replace(/\\\\/g, \"/\");\n if (relative.startsWith(\"..\")) return null;\n\n const extension = path.extname(relative);\n if (!DOCS_FILE_EXTENSIONS.includes(extension)) return null;\n\n const withoutExtension = relative.slice(0, -extension.length);\n if (withoutExtension === \"page\" || withoutExtension === \"index\") return \"\";\n if (withoutExtension.endsWith(\"/page\") || withoutExtension.endsWith(\"/index\")) {\n return withoutExtension.replace(/\\/(page|index)$/, \"\");\n }\n return withoutExtension;\n}\n\nfunction loadPage(\n contentDir: string,\n docs: FarmDocsResolvedConfig,\n request: Request,\n): LoadedFarmDocsPage | null {\n return loadFarmDocsPage(contentDir, docs, getRequestSlug(docs, request));\n}\n\nexport function discoverFarmDocsPages(\n contentDir: string,\n docs: FarmDocsResolvedConfig,\n): FarmDocsPage[] {\n if (!existsSync(contentDir)) return [];\n\n const pages: FarmDocsPage[] = [];\n const visit = (dir: string) => {\n for (const entry of readdirSync(dir, { withFileTypes: true })) {\n if (entry.name.startsWith(\".\") || entry.name === \"node_modules\") continue;\n const absolutePath = path.join(dir, entry.name);\n if (entry.isDirectory()) {\n visit(absolutePath);\n continue;\n }\n if (!entry.isFile()) continue;\n\n const slug = pathToSlug(contentDir, absolutePath);\n if (slug === null) continue;\n\n const source = readFileSync(absolutePath, \"utf8\");\n const { frontmatter, body } = parseFrontmatter(source);\n pages.push({\n slug,\n title: frontmatter.title || titleFromMarkdown(body, titleFromSlug(slug)),\n description: frontmatter.description,\n section: frontmatter.section,\n href: createDocsHref(docs.entry, slug),\n sourcePath: absolutePath,\n lastModified: resolveFarmDocsPageLastModified(contentDir, absolutePath, frontmatter),\n });\n }\n };\n\n visit(contentDir);\n return pages.sort((a, b) => a.href.localeCompare(b.href));\n}\n\nexport function toFarmDocsMarkdownPage(page: LoadedFarmDocsPage): DocsMarkdownPage {\n const lastModified =\n page.lastModified || page.frontmatter.lastModified || page.frontmatter.lastmod;\n\n return {\n slug: page.slug,\n url: page.href,\n title: page.title,\n description: page.description,\n lastModified,\n lastmod: lastModified,\n content: page.body,\n rawContent: page.body,\n };\n}\n\nfunction getDocsTitle(docs: FarmDocsResolvedConfig): string {\n return typeof docs.config.nav === \"object\" && docs.config.nav && \"title\" in docs.config.nav\n ? String((docs.config.nav as { title?: unknown }).title || \"Documentation\")\n : \"Documentation\";\n}\n\nfunction getDocsDescription(docs: FarmDocsResolvedConfig): string | undefined {\n return docs.config.metadata?.description;\n}\n\nfunction getLoadedDocsPages(\n contentDir: string,\n docs: FarmDocsResolvedConfig,\n): LoadedFarmDocsPage[] {\n return discoverFarmDocsPages(contentDir, docs)\n .map((page) => loadFarmDocsPage(contentDir, docs, page.slug))\n .filter((page): page is LoadedFarmDocsPage => Boolean(page));\n}\n\nfunction toDocsLlmsPage(page: LoadedFarmDocsPage): DocsLlmsTxtPageInput {\n return toFarmDocsMarkdownPage(page);\n}\n\nfunction toDocsSitemapPage(page: LoadedFarmDocsPage): DocsSitemapPageInput {\n return {\n ...toFarmDocsMarkdownPage(page),\n sourcePath: page.sourcePath,\n };\n}\n\ntype CopyMarkdownActionConfig = {\n format: \"markdown\" | \"text\";\n includeTitle: boolean;\n label: string;\n copiedLabel: string;\n};\n\ntype LastUpdatedDisplayConfig = {\n enabled: boolean;\n label: string;\n position: \"footer\" | \"below-title\";\n};\n\ntype ReadingTimeDisplayConfig = {\n wordsPerMinute: number;\n format: \"long\" | \"short\";\n includeCode: boolean;\n};\n\nfunction resolvePageActionsConfig(docs: FarmDocsResolvedConfig): Record<string, unknown> {\n return isObjectRecord(docs.config.pageActions) ? docs.config.pageActions : {};\n}\n\nfunction resolvePageActionsAlignment(docs: FarmDocsResolvedConfig): \"left\" | \"right\" {\n return resolvePageActionsConfig(docs).alignment === \"right\" ? \"right\" : \"left\";\n}\n\nfunction resolveCopyMarkdownActionConfig(\n docs: FarmDocsResolvedConfig,\n): CopyMarkdownActionConfig | null {\n const raw = resolvePageActionsConfig(docs).copyMarkdown;\n if (raw === undefined || raw === false) return null;\n\n const options = isObjectRecord(raw) ? raw : {};\n if (isObjectRecord(raw) && raw.enabled === false) return null;\n\n return {\n format: options.format === \"text\" ? \"text\" : \"markdown\",\n includeTitle: options.includeTitle === true,\n label: readString(options.label) ?? \"Copy page\",\n copiedLabel: readString(options.copiedLabel) ?? \"Copied!\",\n };\n}\n\nfunction resolveLastUpdatedDisplayConfig(docs: FarmDocsResolvedConfig): LastUpdatedDisplayConfig {\n const raw = docs.config.lastUpdated;\n const options = isObjectRecord(raw) ? raw : {};\n\n return {\n enabled: raw !== false && (!isObjectRecord(raw) || raw.enabled !== false),\n label: typeof options.label === \"string\" ? options.label : \"Last updated\",\n position: options.position === \"below-title\" ? \"below-title\" : \"footer\",\n };\n}\n\nfunction formatLastModifiedDate(value: string | undefined): string | undefined {\n if (!value) return undefined;\n\n const date = new Date(value);\n if (Number.isNaN(date.getTime())) return value;\n\n return new Intl.DateTimeFormat(\"en\", {\n day: \"numeric\",\n month: \"long\",\n year: \"numeric\",\n }).format(date);\n}\n\nfunction renderLastUpdatedText(\n page: LoadedFarmDocsPage,\n docs: FarmDocsResolvedConfig,\n position: \"footer\" | \"below-title\",\n): string {\n const config = resolveLastUpdatedDisplayConfig(docs);\n const formatted = formatLastModifiedDate(page.lastModified);\n if (!config.enabled || config.position !== position || !formatted) return \"\";\n\n const time = `<time datetime=\"${escapeAttribute(page.lastModified || \"\")}\">${escapeHtml(formatted)}</time>`;\n const label = config.label.trim();\n return label ? `${escapeHtml(label)} ${time}` : time;\n}\n\nfunction resolveReadingTimeDisplayConfig(\n docs: FarmDocsResolvedConfig,\n): ReadingTimeDisplayConfig | null {\n const raw = docs.config.readingTime;\n if (raw === undefined || raw === false) return null;\n\n const options = isObjectRecord(raw) ? raw : {};\n if (isObjectRecord(raw) && options.enabled === false) return null;\n\n const wordsPerMinute =\n typeof options.wordsPerMinute === \"number\" && options.wordsPerMinute > 0\n ? options.wordsPerMinute\n : 220;\n\n return {\n wordsPerMinute,\n format: options.format === \"short\" ? \"short\" : \"long\",\n includeCode: options.includeCode === true,\n };\n}\n\nfunction countMarkdownWords(body: string, includeCode: boolean): number {\n const readable = (\n includeCode ? body : body.replace(/```[\\s\\S]*?```/g, \" \").replace(/`[^`]*`/g, \" \")\n )\n .replace(/!\\[[^\\]]*]\\([^)]*\\)/g, \" \")\n .replace(/\\[([^\\]]+)]\\([^)]*\\)/g, \"$1\")\n .replace(/<[^>]+>/g, \" \")\n .replace(/[#>*_~`|:-]/g, \" \");\n\n return readable.match(/[A-Za-z0-9]+(?:[-'][A-Za-z0-9]+)*/g)?.length ?? 0;\n}\n\nfunction renderReadingTimeMeta(page: LoadedFarmDocsPage, docs: FarmDocsResolvedConfig): string {\n const config = resolveReadingTimeDisplayConfig(docs);\n if (!config) return \"\";\n\n const words = countMarkdownWords(page.body, config.includeCode);\n const minutes = Math.max(1, Math.ceil(words / config.wordsPerMinute));\n const label = config.format === \"short\" ? `${minutes} min` : `${minutes} min read`;\n\n return `<div class=\"fd-page-meta not-prose\" data-page-reading-time>\n <span class=\"fd-page-meta-dot\" aria-hidden=\"true\">·</span>\n <span class=\"fd-page-meta-item\">${escapeHtml(label)}</span>\n</div>`;\n}\n\nfunction renderPixelPageActions(page: LoadedFarmDocsPage, docs: FarmDocsResolvedConfig): string {\n const copyMarkdown = resolveCopyMarkdownActionConfig(docs);\n if (!copyMarkdown) return \"\";\n\n const markdownUrl = `${page.href}.md`;\n const includeTitle = copyMarkdown.includeTitle ? \"true\" : \"false\";\n\n return `<div class=\"fd-page-actions\" data-page-actions data-actions-alignment=\"${resolvePageActionsAlignment(docs)}\">\n <button\n type=\"button\"\n class=\"fd-page-action-btn\"\n data-page-action=\"copy-markdown\"\n data-copied=\"false\"\n data-markdown-url=\"${escapeAttribute(markdownUrl)}\"\n data-copy-markdown-format=\"${copyMarkdown.format}\"\n data-copy-markdown-include-title=\"${includeTitle}\"\n data-copy-label=\"${escapeAttribute(copyMarkdown.label)}\"\n data-copied-label=\"${escapeAttribute(copyMarkdown.copiedLabel)}\"\n aria-label=\"${escapeAttribute(copyMarkdown.label)}\"\n title=\"${escapeAttribute(copyMarkdown.label)}\"\n >\n <svg class=\"fd-page-action-copy-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"></rect><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path></svg>\n <svg class=\"fd-page-action-check-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20 6 9 17l-5-5\"></path></svg>\n <span data-page-action-label>${escapeHtml(copyMarkdown.label)}</span>\n </button>\n</div>`;\n}\n\nfunction renderBelowTitleMeta(page: LoadedFarmDocsPage, docs: FarmDocsResolvedConfig): string {\n const lastUpdated = renderLastUpdatedText(page, docs, \"below-title\");\n const actions = renderPixelPageActions(page, docs);\n const readingTime = renderReadingTimeMeta(page, docs);\n if (!lastUpdated && !actions && !readingTime) return \"\";\n\n return `<div class=\"fd-below-title-block not-prose\">\n ${lastUpdated ? `<p class=\"fd-last-updated-inline\">${lastUpdated}</p>` : \"\"}\n ${actions}\n ${readingTime}\n</div>`;\n}\n\nfunction renderMarkdownHtmlWithTitleMeta(\n page: LoadedFarmDocsPage,\n docs: FarmDocsResolvedConfig,\n): string {\n const html = renderMarkdownHtml(page.body);\n const meta = renderBelowTitleMeta(page, docs);\n if (!meta) return html;\n\n const withTitleMeta = html.replace(/(<h1\\b[\\s\\S]*?<\\/h1>)/, `$1\\n${meta}`);\n return withTitleMeta === html ? `${meta}\\n${html}` : withTitleMeta;\n}\n\nfunction renderPixelPageFooter(page: LoadedFarmDocsPage, docs: FarmDocsResolvedConfig): string {\n const lastUpdated = renderLastUpdatedText(page, docs, \"footer\");\n if (!lastUpdated) return \"\";\n\n return `<div class=\"not-prose fd-page-footer\">\n <span class=\"fd-last-updated-footer\">${lastUpdated}</span>\n</div>`;\n}\n\nfunction getDocsLlmsOptions(docs: FarmDocsResolvedConfig, request: Request) {\n const configured =\n typeof docs.config.llmsTxt === \"object\" && docs.config.llmsTxt !== null\n ? docs.config.llmsTxt\n : {};\n return {\n enabled: true,\n baseUrl: new URL(request.url).origin,\n siteTitle: getDocsTitle(docs),\n siteDescription: getDocsDescription(docs),\n ...configured,\n };\n}\n\nfunction getDocsDiscoveryOptions(docs: FarmDocsResolvedConfig, request: Request) {\n return {\n origin: new URL(request.url).origin,\n entry: docs.entry,\n i18n: null,\n search: docs.config.search ?? true,\n mcp: {\n enabled: false,\n route: \"/api/docs/mcp\",\n name: `${getDocsTitle(docs)} MCP`,\n version: \"1\",\n tools: {\n listDocs: false,\n listPages: false,\n readPage: false,\n searchDocs: false,\n getNavigation: false,\n getCodeExamples: false,\n getConfigSchema: false,\n },\n },\n feedback: undefined,\n llms: getDocsLlmsOptions(docs, request),\n sitemap: docs.config.sitemap ?? true,\n robots: docs.config.robots ?? true,\n openapi: undefined,\n markdown: {\n acceptHeader: true,\n signatureAgentHeader: true,\n },\n };\n}\n\nfunction createFarmDocsPublicResponse(\n contentDir: string,\n docs: FarmDocsResolvedConfig,\n request: Request,\n): Response | null {\n const url = new URL(request.url);\n let loadedPages: LoadedFarmDocsPage[] | undefined;\n const getPages = () => (loadedPages ??= getLoadedDocsPages(contentDir, docs));\n const sitemapManifest = () =>\n buildDocsSitemapManifest({\n pages: getPages().map(toDocsSitemapPage),\n entry: docs.entry,\n siteTitle: getDocsTitle(docs),\n baseUrl: url.origin,\n });\n const textHeaders = (contentType: string) => ({\n \"Content-Type\": contentType,\n \"Cache-Control\": \"public, max-age=60\",\n });\n\n const llmsFormat = resolveDocsLlmsTxtFormat(url);\n if (llmsFormat) {\n const generated = renderDocsLlmsTxt(\n getPages().map(toDocsLlmsPage),\n getDocsLlmsOptions(docs, request),\n );\n return new Response(llmsFormat === \"llms-full\" ? generated.llmsFullTxt : generated.llmsTxt, {\n status: 200,\n headers: textHeaders(\"text/plain; charset=utf-8\"),\n });\n }\n\n const sitemapFormat = resolveDocsSitemapRequest(url, docs.config.sitemap ?? true);\n if (sitemapFormat === \"xml\") {\n return new Response(\n renderDocsSitemapXml(sitemapManifest(), {\n baseUrl: url.origin,\n includeLastmod: true,\n }),\n {\n status: 200,\n headers: textHeaders(\"application/xml; charset=utf-8\"),\n },\n );\n }\n if (sitemapFormat === \"markdown\") {\n return new Response(\n renderDocsSitemapMarkdown(sitemapManifest(), {\n includeDescriptions: true,\n }),\n {\n status: 200,\n headers: textHeaders(\"text/markdown; charset=utf-8\"),\n },\n );\n }\n\n if (resolveDocsRobotsRequest(url, docs.config.robots ?? true)) {\n return new Response(\n renderDocsRobotsTxt({\n entry: docs.entry,\n sitemap: docs.config.sitemap ?? true,\n robots: docs.config.robots ?? true,\n baseUrl: url.origin,\n }),\n {\n status: 200,\n headers: textHeaders(\"text/plain; charset=utf-8\"),\n },\n );\n }\n\n if (isDocsAgentDiscoveryRequest(url)) {\n const spec = buildDocsAgentDiscoverySpec(getDocsDiscoveryOptions(docs, request));\n const title = getDocsTitle(docs);\n return new Response(\n JSON.stringify({\n ...spec,\n name: title,\n site: {\n ...spec.site,\n title,\n description: getDocsDescription(docs),\n entry: docs.entry,\n },\n }),\n {\n status: 200,\n headers: textHeaders(\"application/json; charset=utf-8\"),\n },\n );\n }\n\n if (isDocsAgentsRequest(url)) {\n return new Response(\n `${renderDocsAgentsDocument(getDocsDiscoveryOptions(docs, request)).trim()}\\n`,\n {\n status: 200,\n headers: textHeaders(\"text/markdown; charset=utf-8\"),\n },\n );\n }\n\n if (isDocsSkillRequest(url)) {\n return new Response(\n `${renderDocsSkillDocument(getDocsDiscoveryOptions(docs, request)).trim()}\\n`,\n {\n status: 200,\n headers: textHeaders(\"text/markdown; charset=utf-8\"),\n },\n );\n }\n\n return null;\n}\n\nfunction omitFarmDocsHeadBody(request: Request, response: Response): Response {\n if (request.method !== \"HEAD\") return response;\n return new Response(null, {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n });\n}\n\nfunction escapeHtml(value: string): string {\n return value\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\");\n}\n\nfunction shouldReturnMarkdown(request: Request): boolean {\n const url = new URL(request.url);\n return (\n url.pathname.endsWith(\".md\") ||\n request.headers.get(\"accept\")?.includes(\"text/markdown\") === true ||\n request.headers.get(\"accept\")?.includes(\"text/plain\") === true\n );\n}\n\nfunction escapeAttribute(value: string): string {\n return escapeHtml(value).replace(/'/g, \"&#39;\");\n}\n\nfunction slugify(value: string): string {\n return value\n .toLowerCase()\n .replace(/<[^>]+>/g, \"\")\n .replace(/`([^`]+)`/g, \"$1\")\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-|-$/g, \"\");\n}\n\nfunction createSlugger() {\n const seen = new Map<string, number>();\n\n return (value: string) => {\n const base = slugify(value) || \"section\";\n const count = seen.get(base) || 0;\n seen.set(base, count + 1);\n return count === 0 ? base : `${base}-${count + 1}`;\n };\n}\n\nfunction stripHtml(value: string): string {\n return value.replace(/<[^>]+>/g, \"\");\n}\n\nfunction getCodeFence(line: string): { marker: \"`\" | \"~\"; length: number } | null {\n const match = /^(?: {0,3})(`{3,}|~{3,})/.exec(line);\n const value = match?.[1];\n if (!value) return null;\n return { marker: value[0] as \"`\" | \"~\", length: value.length };\n}\n\nfunction isClosingCodeFence(line: string, fence: { marker: \"`\" | \"~\"; length: number }): boolean {\n const trimmed = line.trim();\n return (\n trimmed.length >= fence.length && Array.from(trimmed).every((char) => char === fence.marker)\n );\n}\n\nfunction stripMdxRuntimeSyntax(body: string): string {\n const output: string[] = [];\n let fence: { marker: \"`\" | \"~\"; length: number } | null = null;\n\n for (const line of body.split(\"\\n\")) {\n const nextFence = getCodeFence(line);\n if (fence) {\n output.push(line);\n if (nextFence && nextFence.marker === fence.marker && isClosingCodeFence(line, fence)) {\n fence = null;\n }\n continue;\n }\n\n if (nextFence) {\n fence = nextFence;\n output.push(line);\n continue;\n }\n\n if (/^\\s*import\\s.+$/.test(line) || /^\\s*export\\s+(const|default)\\s.+$/.test(line)) {\n continue;\n }\n\n output.push(line);\n }\n\n return output.join(\"\\n\");\n}\n\nfunction unescapeHtml(value: string): string {\n return value\n .replace(/&quot;/g, '\"')\n .replace(/&#39;/g, \"'\")\n .replace(/&lt;/g, \"<\")\n .replace(/&gt;/g, \">\")\n .replace(/&amp;/g, \"&\");\n}\n\nconst CODE_LANGUAGE_LABELS = new Set([\n \"bash\",\n \"cjs\",\n \"cmd\",\n \"console\",\n \"css\",\n \"html\",\n \"javascript\",\n \"js\",\n \"json\",\n \"jsx\",\n \"md\",\n \"mdx\",\n \"shell\",\n \"sh\",\n \"terminal\",\n \"text\",\n \"ts\",\n \"tsx\",\n \"txt\",\n \"typescript\",\n \"yaml\",\n \"yml\",\n \"zsh\",\n]);\n\nconst EXTENSIONLESS_CODE_FILENAMES = new Set([\n \"dockerfile\",\n \"makefile\",\n \"procfile\",\n \"readme\",\n \"license\",\n]);\n\nfunction isCodePathLabel(label: string): boolean {\n const trimmed = label.trim();\n if (!trimmed || /\\s/.test(trimmed)) return false;\n\n const lower = trimmed.toLowerCase();\n if (CODE_LANGUAGE_LABELS.has(lower)) return false;\n\n const fileName = trimmed.split(/[\\\\/]/).filter(Boolean).pop() || trimmed;\n const lowerFileName = fileName.toLowerCase();\n if (EXTENSIONLESS_CODE_FILENAMES.has(lowerFileName)) return true;\n if (fileName.startsWith(\".\") && fileName.length > 1) return true;\n\n return /\\.[a-z0-9][a-z0-9-]*$/i.test(fileName);\n}\n\nfunction parseCodeInfo(info: string | undefined): {\n language: string;\n label: string;\n hasExplicitLabel: boolean;\n} {\n const source = (info || \"\").trim();\n const language = source.match(/^\\S+/)?.[0] || \"text\";\n const explicitLabel = source\n .match(/\\b(?:title|filename|file|label|name)=[\"']([^\"']+)[\"']/)?.[1]\n ?.trim();\n return { language, label: explicitLabel || language, hasExplicitLabel: Boolean(explicitLabel) };\n}\n\nfunction getStandaloneCodeLabel(line: string): string | null {\n const trimmed = line.trim();\n const match = /^(?:\\*\\*([^*]+)\\*\\*|__([^_]+)__|`([^`]+)`)$/u.exec(trimmed);\n const label = match?.[1] || match?.[2] || match?.[3];\n return label?.trim() || null;\n}\n\nfunction hasCodeFenceTitle(info: string): boolean {\n return /\\b(?:title|filename|file|label|name)=[\"'][^\"']+[\"']/.test(info);\n}\n\nfunction escapeCodeFenceTitle(value: string): string {\n return value.replace(/\"/g, \"&quot;\");\n}\n\nfunction addTitleToCodeFence(line: string, title: string): string {\n const match = /^(\\s{0,3})(`{3,}|~{3,})(.*)$/u.exec(line);\n if (!match) return line;\n const [, indent, marker, infoSource] = match;\n const info = infoSource.trim();\n if (hasCodeFenceTitle(info)) return line;\n const suffix = `title=\"${escapeCodeFenceTitle(title)}\"`;\n return `${indent}${marker}${info ? `${info} ${suffix}` : `text ${suffix}`}`;\n}\n\nfunction attachCodeBlockLabels(body: string): string {\n const lines = body.split(\"\\n\");\n const output: string[] = [];\n let fence: { marker: \"`\" | \"~\"; length: number } | null = null;\n\n for (let index = 0; index < lines.length; index += 1) {\n const line = lines[index] || \"\";\n const nextFence = getCodeFence(line);\n\n if (fence) {\n output.push(line);\n if (nextFence && nextFence.marker === fence.marker && isClosingCodeFence(line, fence)) {\n fence = null;\n }\n continue;\n }\n\n if (nextFence) {\n fence = nextFence;\n output.push(line);\n continue;\n }\n\n const label = getStandaloneCodeLabel(line);\n if (!label) {\n output.push(line);\n continue;\n }\n\n let fenceIndex = index + 1;\n while (fenceIndex < lines.length && (lines[fenceIndex] || \"\").trim() === \"\") {\n fenceIndex += 1;\n }\n\n const labeledFence = getCodeFence(lines[fenceIndex] || \"\");\n if (!labeledFence) {\n output.push(line);\n continue;\n }\n\n output.push(addTitleToCodeFence(lines[fenceIndex] || \"\", label));\n fence = labeledFence;\n index = fenceIndex;\n }\n\n return output.join(\"\\n\");\n}\n\nfunction highlightCodeBlock(code: string): string {\n return highlight(code.replace(/\\n$/, \"\")).replace(/<\\/span>\\n<span/g, \"</span><span\");\n}\n\nfunction renderCodeCopyButton(className = \"code-copy\"): string {\n return `<button class=\"${className}\" type=\"button\" data-copied=\"false\" aria-label=\"Copy code\" title=\"Copy code\" onclick=\"navigator.clipboard?.writeText(this.closest('figure').querySelector('code').innerText); this.dataset.copied='true'; this.setAttribute('aria-label','Copied'); this.title='Copied'; clearTimeout(this._copyTimer); this._copyTimer=setTimeout(() => { this.dataset.copied='false'; this.setAttribute('aria-label','Copy code'); this.title='Copy code'; }, 4500);\"><svg class=\"code-copy-icon\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><rect x=\"9\" y=\"9\" width=\"13\" height=\"13\" rx=\"2\" ry=\"2\"></rect><path d=\"M5 15H4a2 2 0 0 1-2-2V4a2 2 0 0 1 2-2h9a2 2 0 0 1 2 2v1\"></path></svg><svg class=\"code-copy-check\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><path d=\"M20 6 9 17l-5-5\"></path></svg></button>`;\n}\n\nfunction renderMarkdownHtml(body: string): string {\n const slug = createSlugger();\n const renderer = new Renderer();\n\n renderer.heading = (text, level, raw) => {\n const id = slug(raw || stripHtml(text));\n return `<h${level} id=\"${escapeAttribute(id)}\"><a class=\"heading-anchor\" href=\"#${escapeAttribute(id)}\">${text}</a></h${level}>\\n`;\n };\n\n renderer.code = (code, infostring, escaped) => {\n const { language, label, hasExplicitLabel } = parseCodeInfo(infostring);\n const rawCode = escaped ? unescapeHtml(code) : code;\n const highlighted = highlightCodeBlock(rawCode);\n const shouldRenderHeader = hasExplicitLabel && isCodePathLabel(label);\n const header = shouldRenderHeader\n ? `<div class=\"code-block-header\">\n <span class=\"code-block-title\">${escapeHtml(label)}</span>\n ${renderCodeCopyButton()}\n </div>`\n : renderCodeCopyButton(\"code-copy code-copy-floating\");\n\n return `<figure class=\"shiki code-block ${shouldRenderHeader ? \"code-block-framed\" : \"code-block-plain\"}\" data-language=\"${escapeAttribute(language)}\">\n ${header}\n <pre><code class=\"sh-code language-${escapeAttribute(language)}\">${highlighted}</code></pre>\n</figure>\\n`;\n };\n\n renderer.table = (header, body) =>\n `<div class=\"fd-table-wrapper table-wrap relative overflow-auto prose-no-margin my-6\"><table><thead>${header}</thead><tbody>${body}</tbody></table></div>\\n`;\n\n renderer.blockquote = (quote) => `<blockquote>${quote}</blockquote>\\n`;\n renderer.codespan = (code) => `<code>${escapeHtml(code)}</code>`;\n\n renderer.link = (href, title, text) => {\n const safeHref = href || \"\";\n const titleAttribute = title ? ` title=\"${escapeAttribute(title)}\"` : \"\";\n return `<a href=\"${escapeAttribute(safeHref)}\"${titleAttribute}>${text}</a>`;\n };\n\n renderer.image = (href, title, text) => {\n const titleAttribute = title ? ` title=\"${escapeAttribute(title)}\"` : \"\";\n return `<img src=\"${escapeAttribute(href)}\" alt=\"${escapeAttribute(text)}\"${titleAttribute}>`;\n };\n\n const html = marked(attachCodeBlockLabels(stripMdxRuntimeSyntax(body)), {\n async: false,\n breaks: false,\n gfm: true,\n renderer,\n }) as string;\n\n return html.trim();\n}\n\ninterface TocItem {\n id: string;\n title: string;\n level: number;\n}\n\nfunction extractTocItems(body: string, depth: number): TocItem[] {\n const slug = createSlugger();\n const maxLevel = Math.max(2, Math.min(depth, 6));\n const items: TocItem[] = [];\n // Track fenced code blocks so a `##` line inside a fence is not treated as a\n // heading. marked skips those when rendering, so counting them here would\n // produce phantom TOC links with no matching anchor. Mirrors the fence\n // tracking in stripMdxRuntimeSyntax / attachCodeBlockLabels.\n let fence: { marker: \"`\" | \"~\"; length: number } | null = null;\n\n for (const line of body.split(/\\r?\\n/)) {\n const nextFence = getCodeFence(line);\n if (fence) {\n if (nextFence && nextFence.marker === fence.marker && isClosingCodeFence(line, fence)) {\n fence = null;\n }\n continue;\n }\n if (nextFence) {\n fence = nextFence;\n continue;\n }\n\n const match = line.match(/^(#{2,6})\\s+(.+)$/);\n if (!match) continue;\n\n const title = match[2].trim();\n const id = slug(title);\n const level = match[1].length;\n if (level <= maxLevel) {\n items.push({ id, title, level });\n }\n }\n\n return items;\n}\n\nfunction getThemeUI(docs: FarmDocsResolvedConfig): Record<string, any> {\n const theme = docs.config.theme;\n return theme && typeof theme === \"object\" && \"ui\" in theme && typeof theme.ui === \"object\"\n ? (theme.ui as Record<string, any>)\n : {};\n}\n\nfunction getThemeName(docs: FarmDocsResolvedConfig): string {\n const theme = docs.config.theme;\n return theme && typeof theme === \"object\" && \"name\" in theme\n ? String((theme as { name?: unknown }).name || \"farm-docs\")\n : \"farm-docs\";\n}\n\nfunction getThemeTocDepth(docs: FarmDocsResolvedConfig): number {\n const toc = getThemeUI(docs).layout?.toc;\n return toc && typeof toc === \"object\" && typeof toc.depth === \"number\" ? toc.depth : 3;\n}\n\nconst SIDEBAR_SECTION_ORDER = [\n \"Start\",\n \"Core\",\n \"Data and APIs\",\n \"Integrations\",\n \"Runtime\",\n \"Content\",\n \"Extending\",\n \"Reference\",\n];\n\nconst SIDEBAR_PAGE_ORDER = new Map(\n [\n \"\",\n \"getting-started\",\n \"project-structure\",\n \"configuration\",\n \"routing\",\n \"layouts\",\n \"server-rendering\",\n \"middleware\",\n \"query\",\n \"api-routes\",\n \"api-client\",\n \"storage\",\n \"integrations\",\n \"integrations/stripe\",\n \"integrations/autumn\",\n \"integrations/polar\",\n \"integrations/auth\",\n \"integrations/email\",\n \"integrations/jobs\",\n \"integrations/unkey\",\n \"integrations/ui-registry\",\n \"integrations/orm-storage\",\n \"cache-ppr\",\n \"observability\",\n \"deployment\",\n \"docs-engine\",\n \"markdown\",\n \"openapi\",\n \"plugins\",\n \"plugins/create-plugin\",\n \"cli\",\n \"examples\",\n \"reference\",\n ].map((slug, index) => [slug, index]),\n);\n\ntype SidebarNavigationItem = {\n label?: string;\n icon?: string;\n slug?: string;\n href?: string;\n children: SidebarNavigationItem[];\n};\n\nfunction isSidebarNavigationItem(\n value: SidebarNavigationItem | null,\n): value is SidebarNavigationItem {\n return value !== null;\n}\n\nfunction compareSidebarPages(a: FarmDocsPage, b: FarmDocsPage): number {\n const aOrder = SIDEBAR_PAGE_ORDER.get(a.slug) ?? 1000;\n const bOrder = SIDEBAR_PAGE_ORDER.get(b.slug) ?? 1000;\n return aOrder - bOrder || a.title.localeCompare(b.title);\n}\n\nfunction getSidebarSection(page: FarmDocsPage): string {\n if (page.section) return page.section;\n if (page.slug.startsWith(\"integrations/\")) return \"Integrations\";\n if (page.slug.startsWith(\"plugins/\")) return \"Extending\";\n return \"Reference\";\n}\n\nfunction sidebarIdFor(section: string): string {\n return `sidebar-${slugify(section)}`;\n}\n\nfunction isObjectRecord(value: unknown): value is Record<string, unknown> {\n return !!value && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction readString(value: unknown): string | undefined {\n return typeof value === \"string\" && value.trim() ? value.trim() : undefined;\n}\n\nfunction readOptionalString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value.trim() : undefined;\n}\n\nfunction normalizeSidebarSlug(value: string): string {\n if (value === \"/\" || value === \".\") return \"\";\n return trimSlashes(value);\n}\n\nfunction getSidebarNavigation(docs: FarmDocsResolvedConfig): SidebarNavigationItem[] {\n const navigation = docs.config.navigation;\n if (!isObjectRecord(navigation) || !Array.isArray(navigation.sidebar)) return [];\n return navigation.sidebar.map(normalizeSidebarNavigationItem).filter(isSidebarNavigationItem);\n}\n\nfunction normalizeSidebarNavigationItem(value: unknown): SidebarNavigationItem | null {\n if (!isObjectRecord(value)) return null;\n\n const label = readString(value.label) ?? readString(value.title);\n const icon = readString(value.icon);\n const slug = readOptionalString(value.slug) ?? readOptionalString(value.path);\n const href = readString(value.href) ?? readString(value.url);\n const rawChildren = Array.isArray(value.children)\n ? value.children\n : Array.isArray(value.items)\n ? value.items\n : [];\n const children = rawChildren.map(normalizeSidebarNavigationItem).filter(isSidebarNavigationItem);\n\n if (!label && !slug && !href && children.length === 0) return null;\n return {\n ...(label ? { label } : {}),\n ...(icon ? { icon } : {}),\n ...(slug !== undefined ? { slug: normalizeSidebarSlug(slug) } : {}),\n ...(href ? { href } : {}),\n children,\n };\n}\n\nfunction createSidebarPageMaps(pages: FarmDocsPage[]) {\n return {\n bySlug: new Map(pages.map((page) => [page.slug, page])),\n byHref: new Map(pages.map((page) => [page.href, page])),\n };\n}\n\nfunction resolveConfiguredSidebarPage(\n item: SidebarNavigationItem,\n maps: ReturnType<typeof createSidebarPageMaps>,\n): FarmDocsPage | undefined {\n if (item.slug !== undefined) return maps.bySlug.get(item.slug);\n if (item.href) return maps.byHref.get(item.href);\n return undefined;\n}\n\nfunction getSidebarIconRegistry(docs: FarmDocsResolvedConfig): Record<string, unknown> {\n return isObjectRecord(docs.config.icons) ? docs.config.icons : {};\n}\n\nfunction renderConfiguredIconSvg(value: unknown): string {\n if (typeof value !== \"string\") return \"\";\n const icon = value.trim();\n if (!icon) return \"\";\n if (/^<svg[\\s>]/i.test(icon)) return icon;\n if (/^<(path|circle|rect|line|polyline|polygon|ellipse|g)\\b/i.test(icon)) {\n return `<svg viewBox=\"0 0 24 24\" focusable=\"false\">${icon}</svg>`;\n }\n return \"\";\n}\n\nfunction renderSidebarIcon(\n docs: FarmDocsResolvedConfig,\n icon: string | undefined,\n className = \"sidebar-icon fd-sidebar-icon\",\n): string {\n if (!icon) return \"\";\n const iconRegistry = getSidebarIconRegistry(docs);\n const configuredIcon = iconRegistry[icon] ?? icon;\n const svg = renderConfiguredIconSvg(configuredIcon);\n if (!svg) return \"\";\n return `<span class=\"${className}\" data-sidebar-icon=\"${escapeAttribute(icon)}\" aria-hidden=\"true\">${svg}</span>`;\n}\n\nfunction renderSidebarLabel(\n docs: FarmDocsResolvedConfig,\n icon: string | undefined,\n label: string,\n className: string,\n): string {\n return `<span class=\"${className}\">${renderSidebarIcon(docs, icon)}<span class=\"sidebar-label-text\">${escapeHtml(label)}</span></span>`;\n}\n\nfunction getSidebarPageLabel(item: FarmDocsPage, configured?: SidebarNavigationItem): string {\n if (configured?.label) return configured.label;\n if (item.slug === \"\") return \"Why?\";\n if (item.slug === \"integrations\") return \"Overview\";\n if (item.slug === \"integrations/ui-registry\") return \"UI Registry\";\n if (item.slug === \"integrations/orm-storage\") return \"ORM Storage\";\n if (item.slug.startsWith(\"integrations/\")) {\n return item.title.replace(/\\s+Integrations?$/i, \"\");\n }\n return item.title;\n}\n\nfunction renderSidebarLink(\n item: FarmDocsPage,\n activeHref: string,\n docs: FarmDocsResolvedConfig,\n configured?: SidebarNavigationItem,\n): string {\n const active = item.href === activeHref;\n return `<a class=\"fd-sidebar-link${active ? \" fd-sidebar-link-active\" : \"\"}\" data-active=\"${active ? \"true\" : \"false\"}\" href=\"${escapeAttribute(item.href)}\">${renderSidebarLabel(docs, configured?.icon, getSidebarPageLabel(item, configured), \"sidebar-link-label fd-sidebar-link-label\")}</a>`;\n}\n\nfunction collectConfiguredSidebarPages(\n items: SidebarNavigationItem[],\n maps: ReturnType<typeof createSidebarPageMaps>,\n seen = new Set<string>(),\n): FarmDocsPage[] {\n const ordered: FarmDocsPage[] = [];\n for (const item of items) {\n const page = resolveConfiguredSidebarPage(item, maps);\n if (page && !seen.has(page.slug)) {\n seen.add(page.slug);\n ordered.push(page);\n }\n ordered.push(...collectConfiguredSidebarPages(item.children, maps, seen));\n }\n return ordered;\n}\n\nfunction getOrderedSidebarPages(\n pages: FarmDocsPage[],\n docs?: FarmDocsResolvedConfig,\n): FarmDocsPage[] {\n if (!docs) return [...pages].sort(compareSidebarPages);\n\n const maps = createSidebarPageMaps(pages);\n const configuredPages = collectConfiguredSidebarPages(getSidebarNavigation(docs), maps);\n if (configuredPages.length === 0) return [...pages].sort(compareSidebarPages);\n\n const configuredSlugs = new Set(configuredPages.map((page) => page.slug));\n const remainingPages = pages\n .filter((page) => !configuredSlugs.has(page.slug))\n .sort(compareSidebarPages);\n return [...configuredPages, ...remainingPages];\n}\n\nfunction renderExternalSidebarLink(\n item: SidebarNavigationItem,\n activeHref: string,\n docs: FarmDocsResolvedConfig,\n): string {\n if (!item.href || !item.label) return \"\";\n const active = item.href === activeHref;\n return `<a class=\"fd-sidebar-link${active ? \" fd-sidebar-link-active\" : \"\"}\" data-active=\"${active ? \"true\" : \"false\"}\" href=\"${escapeAttribute(item.href)}\">${renderSidebarLabel(docs, item.icon, item.label, \"sidebar-link-label fd-sidebar-link-label\")}</a>`;\n}\n\nfunction renderConfiguredSidebarSubgroup(\n item: SidebarNavigationItem,\n childHtml: string,\n docs: FarmDocsResolvedConfig,\n): string {\n const label = item.label;\n if (!label) return childHtml;\n return `<div class=\"sidebar-subgroup fd-sidebar-folder\" data-sidebar-subgroup=\"${escapeAttribute(slugify(label))}\">\n <div class=\"sidebar-subgroup-title fd-sidebar-folder-trigger\">${renderSidebarLabel(docs, item.icon, label, \"sidebar-subgroup-label\")}</div>\n <div class=\"sidebar-subgroup-content fd-sidebar-folder-content\">\n${childHtml}\n </div>\n</div>`;\n}\n\nfunction renderConfiguredSidebarItems(\n items: SidebarNavigationItem[],\n maps: ReturnType<typeof createSidebarPageMaps>,\n activeHref: string,\n docs: FarmDocsResolvedConfig,\n): string {\n const renderedItems: string[] = [];\n for (const item of items) {\n const page = resolveConfiguredSidebarPage(item, maps);\n const childHtml = renderConfiguredSidebarItems(item.children, maps, activeHref, docs);\n\n if (item.children.length > 0) {\n renderedItems.push(renderConfiguredSidebarSubgroup(item, childHtml, docs));\n continue;\n }\n\n const linkHtml = page\n ? renderSidebarLink(page, activeHref, docs, item)\n : renderExternalSidebarLink(item, activeHref, docs);\n if (linkHtml) renderedItems.push(linkHtml);\n }\n return renderedItems.join(\"\\n\");\n}\n\nfunction renderConfiguredSidebarSection(\n section: SidebarNavigationItem,\n maps: ReturnType<typeof createSidebarPageMaps>,\n activeHref: string,\n docs: FarmDocsResolvedConfig,\n): string {\n const label = section.label || \"Docs\";\n const id = sidebarIdFor(label);\n const links = renderConfiguredSidebarItems(section.children, maps, activeHref, docs);\n return `<div class=\"sidebar-folder fd-sidebar-folder\" data-state=\"open\">\n <button class=\"text-fd-muted-foreground sidebar-folder-trigger fd-sidebar-folder-trigger\" type=\"button\" aria-controls=\"${escapeAttribute(id)}\" aria-expanded=\"true\">${renderSidebarLabel(docs, section.icon, label, \"sidebar-folder-label\")}</button>\n <div id=\"${escapeAttribute(id)}\" class=\"overflow-hidden sidebar-folder-content fd-sidebar-folder-content\" data-state=\"open\">\n${links}\n </div>\n</div>`;\n}\n\nfunction renderAutoSidebarSectionItems(\n items: FarmDocsPage[],\n activeHref: string,\n docs: FarmDocsResolvedConfig,\n): string {\n return [...items]\n .sort(compareSidebarPages)\n .map((item) => renderSidebarLink(item, activeHref, docs))\n .join(\"\\n\");\n}\n\nfunction renderPixelNavItems(\n pages: FarmDocsPage[],\n activeHref: string,\n docs: FarmDocsResolvedConfig,\n): string {\n const configuredSidebar = getSidebarNavigation(docs);\n if (configuredSidebar.length > 0) {\n const maps = createSidebarPageMaps(pages);\n const renderedSections = configuredSidebar\n .map((section) => {\n if (section.children.length > 0) {\n return renderConfiguredSidebarSection(section, maps, activeHref, docs);\n }\n const page = resolveConfiguredSidebarPage(section, maps);\n return page\n ? renderSidebarLink(page, activeHref, docs, section)\n : renderExternalSidebarLink(section, activeHref, docs);\n })\n .filter(Boolean)\n .join(\"\\n\");\n\n return `<div class=\"sidebar-scroll overscroll-contain fd-sidebar-nav\">\n <div class=\"sidebar-tree\">\n${renderedSections}\n </div>\n</div>`;\n }\n\n const groups = new Map<string, FarmDocsPage[]>();\n for (const item of pages) {\n const group = item.slug === \"\" ? \"Start\" : getSidebarSection(item);\n const entries = groups.get(group) ?? [];\n entries.push(item);\n groups.set(group, entries);\n }\n\n const renderedSections = Array.from(groups.entries())\n .sort(([a], [b]) => {\n const aOrder = SIDEBAR_SECTION_ORDER.indexOf(a);\n const bOrder = SIDEBAR_SECTION_ORDER.indexOf(b);\n return (aOrder === -1 ? 100 : aOrder) - (bOrder === -1 ? 100 : bOrder) || a.localeCompare(b);\n })\n .map(([section, items]) => {\n const id = sidebarIdFor(section);\n const links = renderAutoSidebarSectionItems(items, activeHref, docs);\n return `<div class=\"sidebar-folder fd-sidebar-folder\" data-state=\"open\">\n <button class=\"text-fd-muted-foreground sidebar-folder-trigger fd-sidebar-folder-trigger\" type=\"button\" aria-controls=\"${escapeAttribute(id)}\" aria-expanded=\"true\">${renderSidebarLabel(docs, undefined, section, \"sidebar-folder-label\")}</button>\n <div id=\"${escapeAttribute(id)}\" class=\"overflow-hidden sidebar-folder-content fd-sidebar-folder-content\" data-state=\"open\">\n${links}\n </div>\n</div>`;\n })\n .join(\"\\n\");\n\n return `<div class=\"sidebar-scroll overscroll-contain fd-sidebar-nav\">\n <div class=\"sidebar-tree\">\n${renderedSections}\n </div>\n</div>`;\n}\n\nfunction renderPixelPageNav(\n pages: FarmDocsPage[],\n activeHref: string,\n docs: FarmDocsResolvedConfig,\n): string {\n const orderedPages = getOrderedSidebarPages(pages, docs);\n const activeIndex = orderedPages.findIndex((item) => item.href === activeHref);\n if (activeIndex === -1) return \"\";\n\n const previous = orderedPages[activeIndex - 1];\n const next = orderedPages[activeIndex + 1];\n if (!previous && !next) return \"\";\n\n const renderChevron = (direction: \"prev\" | \"next\") =>\n `<svg width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><polyline points=\"${direction === \"prev\" ? \"15 18 9 12 15 6\" : \"9 18 15 12 9 6\"}\" /></svg>`;\n const renderCard = (item: FarmDocsPage, direction: \"prev\" | \"next\") =>\n `<a class=\"fd-page-nav-card fd-page-nav-${direction}\" href=\"${escapeAttribute(item.href)}\">\n <span class=\"fd-page-nav-title fd-page-nav-title-${direction}\">${direction === \"prev\" ? `${renderChevron(direction)}${escapeHtml(item.title)}` : `${escapeHtml(item.title)}${renderChevron(direction)}`}</span>\n <span class=\"fd-page-nav-description\">${direction === \"prev\" ? \"Previous Page\" : \"Next Page\"}</span>\n</a>`;\n\n return `<nav class=\"not-prose fd-page-nav\" aria-label=\"Page navigation\">\n ${previous ? renderCard(previous, \"prev\") : \"\"}\n ${next ? renderCard(next, \"next\") : \"\"}\n</nav>`;\n}\n\nfunction titleizePathSegment(value: string): string {\n return value.replace(/[-_]+/g, \" \").replace(/\\b\\w/g, (character) => character.toUpperCase());\n}\n\nfunction isBreadcrumbEnabled(docs: FarmDocsResolvedConfig): boolean {\n const breadcrumb = docs.config.breadcrumb;\n if (breadcrumb === false) return false;\n if (breadcrumb && typeof breadcrumb === \"object\" && \"enabled\" in breadcrumb) {\n return (breadcrumb as { enabled?: unknown }).enabled !== false;\n }\n return true;\n}\n\nfunction renderPixelBreadcrumb(page: LoadedFarmDocsPage, docs: FarmDocsResolvedConfig): string {\n if (!isBreadcrumbEnabled(docs)) return \"\";\n\n const segments = trimSlashes(page.slug).split(\"/\").filter(Boolean);\n if (segments.length < 2) return \"\";\n\n const parentSegments = segments.slice(0, -1);\n const parentSegment = parentSegments[parentSegments.length - 1];\n const currentSegment = segments[segments.length - 1];\n const entry = normalizeEntry(docs.entry);\n const parentPath = parentSegments.join(\"/\");\n const parentHref = entry === \"/\" ? `/${parentPath}` : `${entry}/${parentPath}`;\n\n return `<nav class=\"fd-breadcrumb\" aria-label=\"Breadcrumb\">\n <span class=\"fd-breadcrumb-item\">\n <a class=\"fd-breadcrumb-parent fd-breadcrumb-link\" href=\"${escapeAttribute(parentHref)}\">${escapeHtml(titleizePathSegment(parentSegment))}</a>\n </span>\n <span class=\"fd-breadcrumb-item\">\n <span class=\"fd-breadcrumb-sep\">/</span>\n <span class=\"fd-breadcrumb-current\">${escapeHtml(titleizePathSegment(currentSegment))}</span>\n </span>\n</nav>`;\n}\n\nfunction renderDocsSearchTrigger(showIcon = true, className = \"\"): string {\n return `<button class=\"fd-docs-search-trigger ${className}\" type=\"button\" data-search-full=\"\" aria-label=\"Search documentation\" aria-haspopup=\"dialog\" aria-keyshortcuts=\"Meta+K Control+K\">\n ${showIcon ? '<svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><circle cx=\"11\" cy=\"11\" r=\"7\"></circle><path d=\"m20 20-4-4\"></path></svg>' : \"\"}\n <kbd><span>⌘</span><span>K</span></kbd>\n</button>`;\n}\n\nfunction renderDocsSearchMount(clientEntry: string): string {\n return `<div id=\"farm-docs-search-root\" data-farm-docs-search-root data-api=\"/api/docs\"></div>\n <script type=\"module\" src=\"${escapeAttribute(clientEntry)}\"></script>`;\n}\n\nfunction renderDocsSearchBootstrapScript(): string {\n return `<script>${generateFarmDocsSearchBootstrapRuntime()}</script>`;\n}\n\nfunction renderPixelToc(items: TocItem[]): string {\n if (items.length === 0) return '<p class=\"toc-empty\">No sections</p>';\n return `<div class=\"toc-track fd-toc-list\">\n <div class=\"toc-thumb\" data-toc-thumb style=\"clip-path: polygon(0 0px, 100% 0px, 100% 32px, 0 32px);\"></div>\n <div class=\"toc-links\">\n${items\n .map(\n (item) =>\n `<a class=\"toc-link fd-toc-link${items[0] === item ? \" fd-toc-link-active\" : \"\"}\" data-active=\"${items[0] === item ? \"true\" : \"false\"}\" data-toc-item data-depth=\"${item.level}\" href=\"#${escapeAttribute(item.id)}\">${escapeHtml(item.title)}</a>`,\n )\n .join(\"\\n\")}\n </div>\n</div>`;\n}\n\nfunction renderDocsRuntimeScript(docs: FarmDocsResolvedConfig): string {\n const docsEntry = JSON.stringify(normalizeEntry(docs.entry));\n const reconcileHeadRuntime = `const farmNavigationHeadSelector=${JSON.stringify(FARM_NAVIGATION_HEAD_SELECTOR)};const reconcileDocsHead=(nextDoc)=>{const nextTitle=nextDoc.querySelector(\"title\");document.title=nextTitle?.textContent||\"\";document.head.querySelectorAll(farmNavigationHeadSelector).forEach((node)=>node.remove());nextDoc.head.querySelectorAll(farmNavigationHeadSelector).forEach((node)=>document.head.appendChild(document.importNode(node,true)))}`;\n return `<script>(()=>{if(window.__farmDocsRuntime)return;window.__farmDocsRuntime=true;document.documentElement.dataset.farmDocsRuntime=\"true\";document.documentElement.dataset.farmDocsRuntimeId=Math.random().toString(36).slice(2);${reconcileHeadRuntime};const docsEntry=${docsEntry};let cleanupToc=()=>{};let closeMobileSidebar=()=>{};const normalizePath=(path)=>path.length>1?path.replace(/\\\\/+$/,\"\"):path;const isDocsPath=(path)=>{const next=normalizePath(path);const entry=normalizePath(docsEntry);if(next.endsWith(\".md\"))return false;if(entry===\"/\")return true;return next===entry||next.startsWith(entry+\"/\")};const initToc=()=>{cleanupToc();const toc=document.getElementById(\"nd-toc\");if(!toc){cleanupToc=()=>{};return}const links=Array.from(toc.querySelectorAll(\"[data-toc-item]\"));const thumb=toc.querySelector(\"[data-toc-thumb]\");const pairs=links.map((link)=>{let id=link.hash.slice(1);try{id=decodeURIComponent(id)}catch{}return{link,heading:document.getElementById(id)}}).filter((item)=>item.heading);const setActive=(active)=>{for(const {link} of pairs){const selected=link===active.link;link.dataset.active=selected?\"true\":\"false\";link.classList.toggle(\"fd-toc-link-active\",selected)}if(!thumb)return;const styles=getComputedStyle(active.link);const top=active.link.offsetTop+parseFloat(styles.paddingTop||\"0\");const bottom=active.link.offsetTop+active.link.clientHeight-parseFloat(styles.paddingBottom||\"0\");thumb.style.clipPath=\"polygon(0 \"+top+\"px,100% \"+top+\"px,100% \"+bottom+\"px,0 \"+bottom+\"px)\"};const update=()=>{if(pairs.length===0)return;const offset=Math.min(window.innerHeight*0.3,160);let active=pairs[0];for(const pair of pairs){if(pair.heading.getBoundingClientRect().top<=offset)active=pair;else break}setActive(active)};let frame=0;const schedule=()=>{if(frame)return;frame=requestAnimationFrame(()=>{frame=0;update()})};const onHashChange=()=>setTimeout(schedule,0);window.addEventListener(\"scroll\",schedule,{passive:true});window.addEventListener(\"resize\",schedule);window.addEventListener(\"hashchange\",onHashChange);cleanupToc=()=>{window.removeEventListener(\"scroll\",schedule);window.removeEventListener(\"resize\",schedule);window.removeEventListener(\"hashchange\",onHashChange);if(frame)cancelAnimationFrame(frame);frame=0};update()};const getSidebar=()=>document.getElementById(\"nd-sidebar\");const ensureActiveVisible=()=>{const sidebar=getSidebar();if(!sidebar)return;const active=sidebar.querySelector('a[data-active=\"true\"]');if(!(active instanceof HTMLElement))return;const activeRect=active.getBoundingClientRect();const sidebarRect=sidebar.getBoundingClientRect();if(activeRect.top<sidebarRect.top||activeRect.bottom>sidebarRect.bottom)sidebar.scrollTop+=activeRect.top-sidebarRect.top-(sidebar.clientHeight-activeRect.height)/2};const setSidebarActive=(path)=>{const sidebar=getSidebar();if(!sidebar)return;const current=normalizePath(path);for(const link of Array.from(sidebar.querySelectorAll(\"a[href]\"))){try{link.dataset.active=normalizePath(new URL(link.href,location.href).pathname)===current?\"true\":\"false\"}catch{}}ensureActiveVisible()};const initMobileSidebar=()=>{const layout=document.getElementById(\"nd-docs-layout\");const sidebar=getSidebar();const toggle=document.querySelector(\"[data-sidebar-toggle]\");const backdrop=document.querySelector(\"[data-sidebar-backdrop]\");if(!layout||!sidebar||!(toggle instanceof HTMLButtonElement))return;const setOpen=(open)=>{layout.dataset.sidebarOpen=open?\"true\":\"false\";sidebar.classList.toggle(\"fd-sidebar-open\",open);document.documentElement.dataset.farmDocsSidebar=open?\"open\":\"closed\";toggle.setAttribute(\"aria-expanded\",open?\"true\":\"false\");toggle.setAttribute(\"aria-label\",open?\"Close menu\":\"Open menu\")};const toggleOpen=()=>setOpen(layout.dataset.sidebarOpen!==\"true\");closeMobileSidebar=()=>setOpen(false);toggle.addEventListener(\"click\",(event)=>{event.preventDefault();toggleOpen()});backdrop?.addEventListener(\"click\",()=>closeMobileSidebar());document.addEventListener(\"keydown\",(event)=>{if(event.key===\"Escape\")closeMobileSidebar()});sidebar.addEventListener(\"click\",(event)=>{const target=event.target instanceof Element?event.target.closest(\"a[href]\"):null;if(target)closeMobileSidebar()});closeMobileSidebar()};const initSidebarScroll=()=>{const sidebar=getSidebar();if(!sidebar)return;const key=\"farmdocs:sidebar-scroll:\"+location.origin;const getStorage=()=>{try{return window.sessionStorage}catch{return null}};const readSaved=()=>{try{const raw=getStorage()?.getItem(key);if(!raw)return null;const parsed=JSON.parse(raw);return parsed&&typeof parsed===\"object\"?parsed:null}catch{return null}};const save=(path=location.pathname)=>{try{getStorage()?.setItem(key,JSON.stringify({path,scrollTop:sidebar.scrollTop}))}catch{}};const saved=readSaved();if(saved?.path===location.pathname&&Number.isFinite(Number(saved.scrollTop)))sidebar.scrollTop=Number(saved.scrollTop);ensureActiveVisible();save();sidebar.addEventListener(\"scroll\",()=>save(),{passive:true});sidebar.addEventListener(\"click\",(event)=>{const target=event.target instanceof Element?event.target.closest(\"a[href]\"):null;if(!target)return;try{save(new URL(target.href,location.href).pathname)}catch{save()}});window.addEventListener(\"beforeunload\",()=>save())};let navigateController=null;const getPageKey=(root)=>{const article=root.getElementById(\"nd-page\");if(!article)return\"\";return article.querySelector(\"h1\")?.textContent?.trim()||article.textContent?.replace(/\\\\s+/g,\" \").trim().slice(0,160)||\"\"};const swapDocsPage=(html,url)=>{const nextDoc=new DOMParser().parseFromString(html,\"text/html\");const nextArticle=nextDoc.getElementById(\"nd-page\");const currentArticle=document.getElementById(\"nd-page\");if(!nextArticle||!currentArticle)return false;const nextKey=getPageKey(nextDoc);const importedArticle=document.importNode(nextArticle,true);currentArticle.replaceWith(importedArticle);const renderedArticle=document.getElementById(\"nd-page\");if(!renderedArticle||renderedArticle===currentArticle||(nextKey&&getPageKey(document)!==nextKey))return false;const nextToc=nextDoc.getElementById(\"nd-toc\");const currentToc=document.getElementById(\"nd-toc\");if(nextToc&&currentToc)currentToc.replaceWith(document.importNode(nextToc,true));reconcileDocsHead(nextDoc);setSidebarActive(url.pathname);initToc();closeMobileSidebar();return true};const navigateDocs=async(url,{replace=false,scroll=true}={})=>{if(!isDocsPath(url.pathname))return false;if(navigateController)navigateController.abort();const controller=new AbortController();navigateController=controller;document.documentElement.dataset.farmDocsNavigating=\"true\";try{const response=await fetch(url.href,{cache:\"no-store\",headers:{accept:\"text/html\",\"x-farm-docs-navigate\":\"1\"},signal:controller.signal});if(!response.ok||!((response.headers.get(\"content-type\")||\"\").includes(\"text/html\")))return false;const html=await response.text();if(!swapDocsPage(html,url))return false;if(replace)history.replaceState({farmDocs:true},\"\",url.href);else history.pushState({farmDocs:true},\"\",url.href);if(scroll){if(url.hash){let id=url.hash.slice(1);try{id=decodeURIComponent(id)}catch{}document.getElementById(id)?.scrollIntoView({block:\"start\"})}else window.scrollTo({top:0,left:0})}return true}catch(error){if(error?.name===\"AbortError\")return true;return false}finally{if(navigateController===controller){delete document.documentElement.dataset.farmDocsNavigating;navigateController=null}}};const initClientNavigation=()=>{document.addEventListener(\"click\",(event)=>{if(event.defaultPrevented||event.button!==0||event.metaKey||event.ctrlKey||event.shiftKey||event.altKey)return;const target=event.target instanceof Element?event.target.closest(\"a[href]\"):null;if(!target||target.target||target.hasAttribute(\"download\"))return;let url;try{url=new URL(target.href,location.href)}catch{return}if(url.origin!==location.origin||!isDocsPath(url.pathname))return;if(normalizePath(url.pathname)===normalizePath(location.pathname)&&url.hash)return;event.preventDefault();navigateDocs(url).then((handled)=>{if(!handled)location.href=url.href})});window.addEventListener(\"popstate\",()=>{navigateDocs(new URL(location.href),{replace:true,scroll:false}).then((handled)=>{if(!handled)location.reload()})})};const init=()=>{initToc();initMobileSidebar();initSidebarScroll();initClientNavigation()};if(document.readyState===\"loading\")document.addEventListener(\"DOMContentLoaded\",init,{once:true});else init()})();</script>`;\n}\n\nfunction renderDocsPageActionsRuntimeScript(): string {\n return `<script>(()=>{if(window.__farmDocsPageActionsRuntime)return;window.__farmDocsPageActionsRuntime=true;const readArticleText=()=>{const article=document.getElementById(\"nd-page\");if(!article)return\"\";const clone=article.cloneNode(true);if(!(clone instanceof HTMLElement))return article.innerText||\"\";clone.querySelectorAll(\"[data-page-actions],.fd-page-footer,.fd-page-nav\").forEach((node)=>node.remove());return clone.innerText||\"\"};const withTitle=(content,format,includeTitle)=>{if(!includeTitle)return content;const title=document.querySelector(\"#nd-page h1\")?.textContent?.trim()||document.title.trim();if(!title)return content;const trimmed=content.trimStart();if(trimmed.startsWith(title)||trimmed.startsWith(\"# \"+title))return content;return format===\"markdown\"?\"# \"+title+\"\\\\n\\\\n\"+content:title+\"\\\\n\\\\n\"+content};const writeClipboard=async(text)=>{if(navigator.clipboard?.writeText){try{await navigator.clipboard.writeText(text);return}catch{}}const textarea=document.createElement(\"textarea\");textarea.value=text;textarea.setAttribute(\"readonly\",\"\");textarea.style.position=\"fixed\";textarea.style.opacity=\"0\";textarea.style.pointerEvents=\"none\";document.body.appendChild(textarea);textarea.select();document.execCommand(\"copy\");textarea.remove()};const markCopied=(button)=>{const label=button.querySelector(\"[data-page-action-label]\");button.dataset.copied=\"true\";button.setAttribute(\"aria-label\",button.dataset.copiedLabel||\"Copied!\");button.title=button.dataset.copiedLabel||\"Copied!\";if(label)label.textContent=button.dataset.copiedLabel||\"Copied!\";const previous=Number(button.dataset.copyTimeout||0);if(previous)clearTimeout(previous);button.dataset.copyTimeout=String(setTimeout(()=>{button.dataset.copied=\"false\";button.setAttribute(\"aria-label\",button.dataset.copyLabel||\"Copy page\");button.title=button.dataset.copyLabel||\"Copy page\";if(label)label.textContent=button.dataset.copyLabel||\"Copy page\";button.dataset.copyTimeout=\"0\"},4500))};document.addEventListener(\"click\",async(event)=>{const target=event.target instanceof Element?event.target.closest('[data-page-action=\"copy-markdown\"]'):null;if(!(target instanceof HTMLButtonElement))return;event.preventDefault();const format=target.dataset.copyMarkdownFormat===\"text\"?\"text\":\"markdown\";const includeTitle=target.dataset.copyMarkdownIncludeTitle===\"true\";let content=\"\";target.disabled=true;try{if(format===\"markdown\"&&target.dataset.markdownUrl){try{const response=await fetch(target.dataset.markdownUrl,{headers:{Accept:\"text/markdown\"}});if(response.ok)content=await response.text()}catch{}}if(!content)content=readArticleText();content=withTitle(content,format,includeTitle);if(content.trim()){await writeClipboard(content);markCopied(target)}}finally{target.disabled=false}})})();</script>`;\n}\n\nfunction renderDocsHashRuntimeScript(): string {\n return `<script>(()=>{if(window.__farmDocsHashRuntime)return;window.__farmDocsHashRuntime=true;const scrollToHash=()=>{if(!location.hash)return;let id=location.hash.slice(1);try{id=decodeURIComponent(id)}catch{}document.getElementById(id)?.scrollIntoView({block:\"start\"})};const schedule=()=>requestAnimationFrame(()=>requestAnimationFrame(scrollToHash));if(document.readyState===\"loading\")document.addEventListener(\"DOMContentLoaded\",schedule,{once:true});else schedule();window.addEventListener(\"load\",schedule,{once:true});window.addEventListener(\"hashchange\",schedule)})();</script>`;\n}\n\nfunction renderDocsRuntimeScripts(docs: FarmDocsResolvedConfig): string {\n return `${renderDocsRuntimeScript(docs)}\n${renderDocsHashRuntimeScript()}\n${renderDocsPageActionsRuntimeScript()}`;\n}\n\nfunction renderFarmDocsFontPreloads(fontAssets: readonly FarmDocsPublicFontAsset[]): string {\n return fontAssets\n .map(\n ({ url }) =>\n `<link rel=\"preload\" href=\"${escapeAttribute(url)}\" as=\"font\" type=\"font/woff2\" crossorigin>`,\n )\n .join(\"\\n \");\n}\n\nfunction renderFarmDocsFontPreloadHeader(fontAssets: readonly FarmDocsPublicFontAsset[]): string {\n return fontAssets\n .map(({ url }) => `<${url}>; rel=preload; as=font; type=font/woff2; crossorigin`)\n .join(\", \");\n}\n\nfunction getFarmLayoutFontPreloads(layoutFonts?: FarmLayoutFonts) {\n const seen = new Set<string>();\n return [layoutFonts?.body, layoutFonts?.code].flatMap((font) =>\n (font?.preloads || []).filter(({ href }) => {\n if (seen.has(href)) return false;\n seen.add(href);\n return true;\n }),\n );\n}\n\nfunction renderFarmLayoutFontPreloadHeader(layoutFonts?: FarmLayoutFonts): string {\n return getFarmLayoutFontPreloads(layoutFonts)\n .map(({ href, type }) => `<${href}>; rel=preload; as=font; type=${type}; crossorigin`)\n .join(\", \");\n}\n\nfunction renderPixelDocsHtml(\n page: LoadedFarmDocsPage,\n pages: FarmDocsPage[],\n docs: FarmDocsResolvedConfig,\n clientEntry: string,\n faviconHref: string,\n requestUrl: URL,\n fontAssets: readonly FarmDocsPublicFontAsset[],\n fontStylesheetHref?: string,\n globalStylesheetHref?: string,\n): string {\n const navTitle =\n typeof docs.config.nav === \"object\" && docs.config.nav && \"title\" in docs.config.nav\n ? String((docs.config.nav as { title?: unknown }).title || \"Docs\")\n : \"Docs\";\n const description = page.description || docs.config.metadata?.description || \"\";\n const tocItems = extractTocItems(page.body, getThemeTocDepth(docs));\n const themeName = getThemeName(docs);\n const searchEnabled = isFarmDocsSearchEnabled(docs);\n const socialMetadata = isFarmDocsSocialImageEnabled(page, docs)\n ? renderFarmDocsSocialMetadata(\n createFarmDocsSocialImageDescriptor(page, docs, requestUrl),\n getFarmDocsCustomSocialImage(page),\n )\n : \"\";\n\n return `<!DOCTYPE html>\n<html class=\"dark\" lang=\"en\" data-docs-theme=\"${escapeAttribute(themeName)}\">\n<head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\">\n <meta name=\"generator\" content=\"@farming-labs/docs via Farm.js\">\n <title>${escapeHtml(page.title)}</title>\n ${renderFarmDocsFaviconLink(faviconHref)}\n ${renderFarmDocsFontPreloads(fontAssets)}\n ${fontStylesheetHref ? `<link rel=\"stylesheet\" href=\"${escapeAttribute(fontStylesheetHref)}\">` : \"\"}\n ${globalStylesheetHref ? `<link rel=\"stylesheet\" href=\"${escapeAttribute(globalStylesheetHref)}\">` : \"\"}\n ${description ? `<meta name=\"description\" content=\"${escapeHtml(description)}\">` : \"\"}\n ${socialMetadata}\n ${searchEnabled ? renderDocsSearchBootstrapScript() : \"\"}\n</head>\n<body>\n <div id=\"nd-docs-layout\" class=\"fd-layout\" data-fd-framework=\"farmjs\">\n <header class=\"mobile-topbar fd-header\" aria-label=\"Mobile docs navigation\">\n <button class=\"fd-mobile-nav-btn fd-menu-btn\" type=\"button\" data-sidebar-toggle aria-controls=\"nd-sidebar\" aria-expanded=\"false\" aria-label=\"Open menu\">\n <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\"><line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\"></line><line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"></line><line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\"></line></svg>\n </button>\n <a class=\"fd-header-title\" href=\"/\">${escapeHtml(navTitle)}</a>\n <div class=\"mobile-topbar-actions\">\n ${searchEnabled ? renderDocsSearchTrigger(true, \"fd-search-trigger-mobile\") : \"\"}\n <a class=\"mobile-topbar-link\" href=\"/llms.txt\">llms.txt</a>\n </div>\n </header>\n <aside id=\"nd-sidebar\" class=\"fd-sidebar\">\n <div class=\"sidebar-brand fd-sidebar-header\">\n <a class=\"fd-sidebar-title\" href=\"/\">${renderFarmDocsBrandMark()}${renderFarmDocsBrandTitle(navTitle)}</a>\n <span>/ docs</span>\n </div>\n ${searchEnabled ? `<div class=\"fd-sidebar-search\">${renderDocsSearchTrigger(true, \"fd-sidebar-search-btn\")}</div>` : \"\"}\n ${renderPixelNavItems(pages, page.href, docs)}\n </aside>\n <div class=\"sidebar-backdrop fd-sidebar-overlay\" data-sidebar-backdrop></div>\n <main class=\"fd-main\">\n <div class=\"fd-page\">\n <article id=\"nd-page\" class=\"prose fd-page-article fd-page-body fd-docs-content\">\n ${renderPixelBreadcrumb(page, docs)}\n${renderMarkdownHtmlWithTitleMeta(page, docs)}\n ${renderPixelPageFooter(page, docs)}\n ${renderPixelPageNav(pages, page.href, docs)}\n </article>\n <nav id=\"nd-toc\" class=\"fd-toc sticky top-(--fd-docs-row-1) h-[calc(var(--fd-docs-height)-var(--fd-docs-row-1))] flex flex-col [grid-area:toc] w-(--fd-toc-width) pt-12 pe-4 pb-2 max-xl:hidden\" data-toc aria-labelledby=\"toc-title\">\n <div class=\"fd-toc-inner\">\n <h3 id=\"toc-title\" class=\"fd-toc-title inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground\"><svg class=\"size-4\" viewBox=\"0 0 24 24\" aria-hidden=\"true\" focusable=\"false\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 7h16\"></path><path d=\"M4 12h16\"></path><path d=\"M4 17h16\"></path></svg>On this page</h3>\n <div class=\"toc-scroll\">\n ${renderPixelToc(tocItems)}\n </div>\n </div>\n </nav>\n </div>\n </main>\n </div>\n ${searchEnabled ? renderDocsSearchMount(clientEntry) : \"\"}\n ${renderDocsRuntimeScripts(docs)}\n</body>\n</html>`;\n}\n\nexport function createFarmDocsHandler(\n docs: FarmDocsResolvedConfig | undefined,\n options: FarmDocsHandlerOptions,\n) {\n const faviconHref = resolveFarmDocsFavicon(docs, options);\n const fontAssets =\n options.fontAssets ?? toFarmDocsPublicFontAssets(resolveFarmDocsFontAssets(options.root));\n const fallbackFontPreloadHeader = renderFarmDocsFontPreloadHeader(fontAssets);\n\n return async function handleFarmDocsRequest(request: Request): Promise<Response | null> {\n if (!docs?.enabled || (request.method !== \"GET\" && request.method !== \"HEAD\")) return null;\n\n const contentDir = resolveFarmDocsContentDir(docs, options);\n const requestUrl = new URL(request.url);\n const socialImageSlug = getFarmDocsSocialImageSlug(docs, requestUrl);\n if (socialImageSlug !== null) {\n const socialImagePage = loadFarmDocsPage(contentDir, docs, socialImageSlug);\n if (\n !socialImagePage ||\n !isFarmDocsSocialImageEnabled(socialImagePage, docs) ||\n getFarmDocsCustomSocialImage(socialImagePage)\n ) {\n return null;\n }\n\n const descriptor = createFarmDocsSocialImageDescriptor(socialImagePage, docs, requestUrl);\n if (requestUrl.pathname !== descriptor.imagePath) return null;\n\n const etag = `\"${descriptor.hash}\"`;\n const immutable = requestUrl.searchParams.get(\"v\") === descriptor.hash;\n const headers = new Headers({\n \"Content-Type\": \"image/svg+xml; charset=utf-8\",\n \"Cache-Control\": immutable\n ? \"public, max-age=31536000, immutable\"\n : \"public, max-age=0, must-revalidate\",\n ETag: etag,\n \"X-Content-Type-Options\": \"nosniff\",\n });\n if (matchesFarmIfNoneMatch(request.headers.get(\"if-none-match\"), etag)) {\n return new Response(null, { status: 304, headers });\n }\n if (request.method === \"HEAD\") return new Response(null, { status: 200, headers });\n\n return new Response(renderFarmDocsSocialImageSvg(descriptor), { status: 200, headers });\n }\n\n const publicResponse = createFarmDocsPublicResponse(contentDir, docs, request);\n if (publicResponse) return omitFarmDocsHeadBody(request, publicResponse);\n\n if (!isFarmDocsRequest(docs, request)) return null;\n\n const page = loadPage(contentDir, docs, request);\n if (!page) return null;\n\n if (shouldReturnMarkdown(request)) {\n const origin = new URL(request.url).origin;\n return omitFarmDocsHeadBody(\n request,\n new Response(\n renderDocsMarkdownDocument(toFarmDocsMarkdownPage(page), {\n origin,\n llms: docs.config.llmsTxt ?? true,\n sitemap: docs.config.sitemap,\n }),\n {\n status: 200,\n headers: {\n \"Content-Type\": \"text/markdown; charset=utf-8\",\n \"Cache-Control\": \"public, max-age=60\",\n },\n },\n ),\n );\n }\n\n const pathname = new URL(request.url).pathname;\n const layoutFonts = await options.resolveLayoutFonts?.(pathname);\n const usesLayoutFonts = Boolean(layoutFonts?.body || layoutFonts?.code);\n const activeFontAssets = usesLayoutFonts ? [] : fontAssets;\n const fontPreloadHeader = usesLayoutFonts\n ? renderFarmLayoutFontPreloadHeader(layoutFonts)\n : fallbackFontPreloadHeader;\n\n return omitFarmDocsHeadBody(\n request,\n new Response(\n renderPixelDocsHtml(\n page,\n discoverFarmDocsPages(contentDir, docs),\n docs,\n options.clientEntry || \"/farm-client.js\",\n faviconHref,\n requestUrl,\n activeFontAssets,\n usesLayoutFonts ? options.fontStylesheetHref : undefined,\n options.globalStylesheetHref,\n ),\n {\n status: 200,\n headers: {\n \"Content-Type\": \"text/html; charset=utf-8\",\n \"Cache-Control\": \"public, s-maxage=60, stale-while-revalidate=300\",\n ...(fontPreloadHeader ? { Link: fontPreloadHeader } : {}),\n },\n },\n ),\n );\n };\n}\n","import { execFileSync } from \"node:child_process\";\nimport { existsSync, readFileSync, readdirSync, realpathSync, statSync } from \"node:fs\";\nimport path from \"node:path\";\n\nexport const FARM_DOCS_LAST_MODIFIED_MANIFEST = \".farm-docs-last-modified.json\";\n\nexport interface FarmDocsLastModifiedManifest {\n version: 1;\n pages: Record<string, string>;\n}\n\nexport interface CreateFarmDocsLastModifiedManifestOptions {\n fallback?: \"mtime\" | \"now\";\n now?: Date;\n}\n\nconst COMMIT_MARKER = \"__FARM_DOCS_COMMIT__\";\nconst DOCS_FILE_EXTENSIONS = new Set([\".md\", \".mdx\"]);\nconst manifestCache = new Map<\n string,\n {\n signature: string;\n manifest: FarmDocsLastModifiedManifest;\n }\n>();\n\nfunction normalizeRelativePath(value: string): string {\n return value.replace(/\\\\/g, \"/\").replace(/^\\.\\/+/, \"\");\n}\n\nfunction resolveExistingPath(filePath: string): string {\n try {\n return realpathSync(filePath);\n } catch {\n return path.resolve(filePath);\n }\n}\n\nfunction isDocsSourceFile(filePath: string): boolean {\n return DOCS_FILE_EXTENSIONS.has(path.extname(filePath).toLowerCase());\n}\n\nfunction discoverDocsSourceFiles(contentDir: string): string[] {\n const files: string[] = [];\n\n const visit = (dir: string) => {\n for (const entry of readdirSync(dir, { withFileTypes: true }).sort((a, b) =>\n a.name.localeCompare(b.name),\n )) {\n if (entry.name.startsWith(\".\") || entry.name === \"node_modules\") continue;\n\n const absolutePath = path.join(dir, entry.name);\n if (entry.isDirectory()) {\n visit(absolutePath);\n } else if (entry.isFile() && isDocsSourceFile(absolutePath)) {\n files.push(absolutePath);\n }\n }\n };\n\n if (existsSync(contentDir)) visit(contentDir);\n return files;\n}\n\nfunction getGitLastModifiedDates(contentDir: string): Record<string, string> {\n try {\n const gitRoot = execFileSync(\"git\", [\"-C\", contentDir, \"rev-parse\", \"--show-toplevel\"], {\n encoding: \"utf8\",\n stdio: [\"ignore\", \"pipe\", \"ignore\"],\n }).trim();\n if (!gitRoot) return {};\n\n const contentPathspec = normalizeRelativePath(path.relative(gitRoot, contentDir)) || \".\";\n const contentPrefix = contentPathspec === \".\" ? \"\" : `${contentPathspec}/`;\n const history = execFileSync(\n \"git\",\n [\n \"-C\",\n gitRoot,\n \"-c\",\n \"core.quotePath=false\",\n \"log\",\n `--format=${COMMIT_MARKER}%cI`,\n \"--name-only\",\n \"--\",\n contentPathspec,\n ],\n {\n encoding: \"utf8\",\n stdio: [\"ignore\", \"pipe\", \"ignore\"],\n maxBuffer: 32 * 1024 * 1024,\n },\n );\n\n const pages: Record<string, string> = {};\n let commitDate: string | undefined;\n\n for (const rawLine of history.split(/\\r?\\n/)) {\n const line = normalizeRelativePath(rawLine.trim());\n if (!line) continue;\n\n if (line.startsWith(COMMIT_MARKER)) {\n commitDate = line.slice(COMMIT_MARKER.length);\n continue;\n }\n if (!commitDate || (contentPrefix && !line.startsWith(contentPrefix))) continue;\n\n const relativePath = contentPrefix ? line.slice(contentPrefix.length) : line;\n if (isDocsSourceFile(relativePath) && !pages[relativePath]) {\n pages[relativePath] = commitDate;\n }\n }\n\n return pages;\n } catch {\n return {};\n }\n}\n\nfunction readManifest(contentDir: string): FarmDocsLastModifiedManifest | null {\n const manifestPath = path.join(contentDir, FARM_DOCS_LAST_MODIFIED_MANIFEST);\n if (!existsSync(manifestPath)) return null;\n\n try {\n const parsed = JSON.parse(\n readFileSync(manifestPath, \"utf8\"),\n ) as Partial<FarmDocsLastModifiedManifest>;\n if (parsed.version !== 1 || !parsed.pages || typeof parsed.pages !== \"object\") return null;\n\n const pages = Object.fromEntries(\n Object.entries(parsed.pages).filter(\n (entry): entry is [string, string] => typeof entry[1] === \"string\" && entry[1].length > 0,\n ),\n );\n return { version: 1, pages };\n } catch {\n return null;\n }\n}\n\nexport function createFarmDocsLastModifiedManifest(\n contentDir: string,\n options: CreateFarmDocsLastModifiedManifestOptions = {},\n): FarmDocsLastModifiedManifest {\n const resolvedContentDir = resolveExistingPath(contentDir);\n const gitDates = getGitLastModifiedDates(resolvedContentDir);\n const fallbackDate = (options.now ?? new Date()).toISOString();\n const pages: Record<string, string> = {};\n\n for (const sourcePath of discoverDocsSourceFiles(resolvedContentDir)) {\n const relativePath = normalizeRelativePath(path.relative(resolvedContentDir, sourcePath));\n pages[relativePath] =\n gitDates[relativePath] ||\n (options.fallback === \"now\" ? fallbackDate : statSync(sourcePath).mtime.toISOString());\n }\n\n return { version: 1, pages };\n}\n\nfunction getLastModifiedManifest(contentDir: string): FarmDocsLastModifiedManifest {\n const resolvedContentDir = resolveExistingPath(contentDir);\n const manifestPath = path.join(resolvedContentDir, FARM_DOCS_LAST_MODIFIED_MANIFEST);\n const manifestStat = existsSync(manifestPath) ? statSync(manifestPath) : null;\n const signature = manifestStat\n ? `file:${manifestStat.mtimeMs}:${manifestStat.size}`\n : \"generated\";\n const cached = manifestCache.get(resolvedContentDir);\n if (cached?.signature === signature) return cached.manifest;\n\n const manifest =\n readManifest(resolvedContentDir) ?? createFarmDocsLastModifiedManifest(resolvedContentDir);\n manifestCache.set(resolvedContentDir, { signature, manifest });\n return manifest;\n}\n\nexport function resolveFarmDocsPageLastModified(\n contentDir: string,\n sourcePath: string,\n frontmatter: Record<string, string>,\n): string {\n const configured =\n frontmatter.lastModified ||\n frontmatter.lastmod ||\n frontmatter.lastUpdated ||\n frontmatter.updatedAt;\n if (configured) return configured;\n\n const resolvedContentDir = resolveExistingPath(contentDir);\n const resolvedSourcePath = resolveExistingPath(sourcePath);\n const relativePath = normalizeRelativePath(path.relative(resolvedContentDir, resolvedSourcePath));\n const isInsideContentDir =\n relativePath !== \"..\" && !relativePath.startsWith(\"../\") && !path.isAbsolute(relativePath);\n\n if (isInsideContentDir) {\n const generated = getLastModifiedManifest(resolvedContentDir).pages[relativePath];\n if (generated) return generated;\n }\n\n return statSync(resolvedSourcePath).mtime.toISOString();\n}\n","import { createHash } from \"node:crypto\";\nimport type { LoadedFarmDocsPage } from \"./handler\";\nimport type {\n FarmDocsResolvedConfig,\n FarmDocsSocialImageConfig,\n FarmDocsSocialImageFonts,\n} from \"./types\";\n\nexport const FARM_DOCS_SOCIAL_IMAGE_WIDTH = 1200;\nexport const FARM_DOCS_SOCIAL_IMAGE_HEIGHT = 630;\n\nexport interface FarmDocsSocialImageDescriptor {\n title: string;\n description: string;\n section: string;\n siteName: string;\n brand: string;\n pageHref: string;\n pageUrl: string;\n imagePath: string;\n imageUrl: string;\n imageAlt: string;\n illustration: FarmDocsSocialImageIllustration;\n fonts?: FarmDocsSocialImageFonts;\n hash: string;\n}\n\nexport type FarmDocsSocialImageIllustration =\n | \"auth\"\n | \"cache\"\n | \"cli\"\n | \"integrations\"\n | \"project\"\n | \"routing\"\n | \"runtime\";\n\nconst FARM_DOCS_SOCIAL_IMAGE_VERSION = 3;\n\nfunction normalizeEntry(entry: string): string {\n if (!entry || entry === \"/\") return \"\";\n return `/${entry.replace(/^\\/+|\\/+$/g, \"\")}`;\n}\n\nfunction encodeSlugPath(slug: string): string {\n return slug\n .split(\"/\")\n .filter(Boolean)\n .map((segment) => encodeURIComponent(segment))\n .join(\"/\");\n}\n\nfunction getSocialImageConfig(docs: FarmDocsResolvedConfig): FarmDocsSocialImageConfig | undefined {\n return typeof docs.config.socialImage === \"object\" && docs.config.socialImage\n ? docs.config.socialImage\n : undefined;\n}\n\nfunction getNavTitle(docs: FarmDocsResolvedConfig): string {\n if (typeof docs.config.nav !== \"object\" || !docs.config.nav || !(\"title\" in docs.config.nav)) {\n return \"Farm.js\";\n }\n return String((docs.config.nav as { title?: unknown }).title || \"Farm.js\");\n}\n\nfunction isFalse(value: string | undefined): boolean {\n return value ? /^(false|no|none|off|disabled)$/i.test(value.trim()) : false;\n}\n\nfunction isExternalOrRootPath(value: string): boolean {\n return /^(https?:)?\\/\\//i.test(value) || value.startsWith(\"/\");\n}\n\nexport function isFarmDocsSocialImageEnabled(\n page: LoadedFarmDocsPage,\n docs: FarmDocsResolvedConfig,\n): boolean {\n if (docs.config.socialImage === false || getSocialImageConfig(docs)?.enabled === false) {\n return false;\n }\n return !isFalse(page.frontmatter.socialImage);\n}\n\nexport function getFarmDocsCustomSocialImage(page: LoadedFarmDocsPage): string | undefined {\n const value =\n page.frontmatter.socialImage || page.frontmatter.openGraphImage || page.frontmatter.ogImage;\n return value && !isFalse(value) && isExternalOrRootPath(value) ? value : undefined;\n}\n\nfunction resolveIllustration(page: LoadedFarmDocsPage): FarmDocsSocialImageIllustration {\n const explicit = page.frontmatter.socialIllustration?.toLowerCase();\n if (\n explicit === \"auth\" ||\n explicit === \"cache\" ||\n explicit === \"cli\" ||\n explicit === \"integrations\" ||\n explicit === \"project\" ||\n explicit === \"routing\" ||\n explicit === \"runtime\"\n ) {\n return explicit;\n }\n\n const source = `${page.slug} ${page.title} ${page.section || \"\"}`.toLowerCase();\n if (/auth|session|security|csrf/.test(source)) return \"auth\";\n if (/cache|ppr|render|static|revalid|stream/.test(source)) return \"cache\";\n if (/integration|stripe|prisma|better.auth|email|job|workflow/.test(source)) {\n return \"integrations\";\n }\n if (/cli|test|deploy|preview|upgrade|migration|install/.test(source)) return \"cli\";\n if (/project|structure|config|environment|markdown|docs.engine/.test(source)) {\n return \"project\";\n }\n if (/rout|endpoint|middleware|navigation|server.function|server.action|api/.test(source)) {\n return \"routing\";\n }\n return \"runtime\";\n}\n\nfunction createHashValue(value: unknown): string {\n return createHash(\"sha256\").update(JSON.stringify(value)).digest(\"hex\").slice(0, 16);\n}\n\nfunction resolveBaseUrl(requestUrl: URL, config: FarmDocsSocialImageConfig | undefined): URL {\n return config?.baseUrl ? new URL(config.baseUrl) : new URL(requestUrl.origin);\n}\n\nexport function createFarmDocsSocialImageDescriptor(\n page: LoadedFarmDocsPage,\n docs: FarmDocsResolvedConfig,\n requestUrl: URL,\n): FarmDocsSocialImageDescriptor {\n const config = getSocialImageConfig(docs);\n const siteName = config?.siteName || getNavTitle(docs);\n const brand = config?.brand || siteName;\n const title = page.frontmatter.socialTitle || page.title;\n const description =\n page.frontmatter.socialDescription ||\n page.description ||\n docs.config.metadata?.description ||\n `Documentation for ${siteName}`;\n const section = page.frontmatter.section || page.section || \"Documentation\";\n const illustration = resolveIllustration(page);\n const entry = normalizeEntry(docs.entry);\n const slugPath = encodeSlugPath(page.slug) || \"index\";\n const imagePath = `${entry}/_social/${slugPath}/opengraph-image.svg`;\n const baseUrl = resolveBaseUrl(requestUrl, config);\n const pageUrl = new URL(page.href, baseUrl).href;\n const imageAlt = `${title} — ${siteName} documentation`;\n const hash = createHashValue({\n version: FARM_DOCS_SOCIAL_IMAGE_VERSION,\n title,\n description,\n section,\n siteName,\n brand,\n pageHref: page.href,\n illustration,\n fonts: config?.fonts,\n });\n\n return {\n title,\n description,\n section,\n siteName,\n brand,\n pageHref: page.href,\n pageUrl,\n imagePath,\n imageUrl: new URL(`${imagePath}?v=${hash}`, baseUrl).href,\n imageAlt,\n illustration,\n fonts: config?.fonts,\n hash,\n };\n}\n\nexport function getFarmDocsSocialImageSlug(\n docs: FarmDocsResolvedConfig,\n requestUrl: URL,\n): string | null {\n const entry = normalizeEntry(docs.entry);\n const prefix = `${entry}/_social/`;\n const suffix = \"/opengraph-image.svg\";\n if (!requestUrl.pathname.startsWith(prefix) || !requestUrl.pathname.endsWith(suffix)) {\n return null;\n }\n\n const rawSlug = requestUrl.pathname.slice(prefix.length, -suffix.length);\n if (!rawSlug) return null;\n try {\n const slug = rawSlug\n .split(\"/\")\n .map((segment) => decodeURIComponent(segment))\n .join(\"/\");\n if (slug.split(\"/\").some((segment) => !segment || segment === \"..\" || segment === \".\")) {\n return null;\n }\n return slug === \"index\" ? \"\" : slug;\n } catch {\n return null;\n }\n}\n\nfunction escapeXml(value: string): string {\n return value\n .replace(/&/g, \"&amp;\")\n .replace(/</g, \"&lt;\")\n .replace(/>/g, \"&gt;\")\n .replace(/\"/g, \"&quot;\")\n .replace(/'/g, \"&apos;\");\n}\n\nfunction truncate(value: string, length: number): string {\n if (value.length <= length) return value;\n return `${value.slice(0, Math.max(0, length - 1)).trimEnd()}…`;\n}\n\nfunction wrapText(value: string, maxCharacters: number, maxLines: number): string[] {\n const words = value.trim().split(/\\s+/).filter(Boolean);\n const lines: string[] = [];\n let current = \"\";\n let consumedWords = 0;\n\n for (const word of words) {\n const candidate = current ? `${current} ${word}` : word;\n if (candidate.length <= maxCharacters || !current) {\n current = candidate;\n consumedWords += 1;\n continue;\n }\n lines.push(current);\n if (lines.length === maxLines) break;\n current = word;\n consumedWords += 1;\n }\n\n if (current && lines.length < maxLines) lines.push(current);\n if (consumedWords < words.length && lines.length) {\n lines[lines.length - 1] = truncate(`${lines[lines.length - 1]}…`, maxCharacters);\n }\n return lines;\n}\n\nfunction renderTextLines(\n lines: string[],\n x: number,\n y: number,\n lineHeight: number,\n attributes: string,\n): string {\n return lines\n .map(\n (line, index) =>\n `<text x=\"${x}\" y=\"${y + index * lineHeight}\" ${attributes}>${escapeXml(line)}</text>`,\n )\n .join(\"\");\n}\n\nfunction renderEmbeddedFont(name: string, source: string | undefined, weight: string): string {\n if (!source) return \"\";\n return `@font-face{font-family:\"${name}\";src:url(\"${escapeXml(source)}\") format(\"woff2\");font-style:normal;font-weight:${weight};font-display:block;}`;\n}\n\nfunction renderArrow(x1: number, y: number, x2: number, color = \"#8b8b8b\"): string {\n return `<path d=\"M${x1} ${y}H${x2 - 9}\" fill=\"none\" stroke=\"${color}\"/><path d=\"m${x2 - 9} ${y - 5} 9 5-9 5\" fill=\"none\" stroke=\"${color}\"/>`;\n}\n\nfunction renderPanelHeader(label: string, status: string): string {\n return `<text x=\"819\" y=\"171\" class=\"label\">${escapeXml(label)}</text><text x=\"1134\" y=\"171\" class=\"label bright\" text-anchor=\"end\">${escapeXml(status)}</text>`;\n}\n\nfunction renderRoutingIllustration(): string {\n return `${renderPanelHeader(\"ROUTE BLUEPRINT\", \"TYPED\")}\n <rect x=\"819\" y=\"296\" width=\"92\" height=\"54\" fill=\"#a3a3a3\"/>\n <text x=\"832\" y=\"327\" class=\"diagram-title ink\">src/app</text>\n <path d=\"M911 323h41M952 232v181M952 232h44M952 323h44M952 413h44\" fill=\"none\" stroke=\"#696969\"/>\n <rect x=\"996\" y=\"205\" width=\"138\" height=\"54\" fill=\"#0a0a0a\" stroke=\"#414141\"/>\n <text x=\"1010\" y=\"228\" class=\"diagram-title\">/</text><text x=\"1010\" y=\"246\" class=\"micro\">STATIC</text>\n <rect x=\"996\" y=\"296\" width=\"138\" height=\"54\" fill=\"#0a0a0a\" stroke=\"#414141\"/>\n <text x=\"1010\" y=\"319\" class=\"diagram-title\">/blog/:slug</text><text x=\"1010\" y=\"337\" class=\"micro\">DYNAMIC</text>\n <rect x=\"996\" y=\"386\" width=\"138\" height=\"55\" fill=\"#f0f0f0\"/>\n <text x=\"1010\" y=\"410\" class=\"diagram-title ink\">/docs/:path*</text><text x=\"1010\" y=\"428\" class=\"micro ink-muted\">CATCH-ALL</text>\n <line x1=\"819\" y1=\"450\" x2=\"1134\" y2=\"450\" stroke=\"#343434\"/>\n <text x=\"819\" y=\"475\" class=\"label bright\">FILE ROUTES</text><text x=\"1134\" y=\"475\" class=\"label\" text-anchor=\"end\">TYPES INCLUDED</text>`;\n}\n\nfunction renderAuthIllustration(): string {\n return `${renderPanelHeader(\"REQUEST GUARD\", \"SERVER VERIFIED\")}\n <rect x=\"819\" y=\"269\" width=\"86\" height=\"54\" fill=\"#0a0a0a\" stroke=\"#454545\"/>\n <text x=\"837\" y=\"292\" class=\"micro bright\">REQUEST</text><text x=\"837\" y=\"310\" class=\"diagram-title\">GET /app</text>\n ${renderArrow(905, 296, 943)}\n <rect x=\"943\" y=\"224\" width=\"104\" height=\"118\" fill=\"#f0f0f0\"/>\n <path d=\"M974 271v-12a21 21 0 0 1 42 0v12M968 271h54v45h-54z\" fill=\"#050505\"/>\n <circle cx=\"995\" cy=\"292\" r=\"4\" fill=\"#f0f0f0\"/><path d=\"M995 296v8\" stroke=\"#f0f0f0\" stroke-width=\"3\"/>\n <text x=\"995\" y=\"332\" class=\"micro ink\" text-anchor=\"middle\">auth()</text>\n ${renderArrow(1047, 296, 1071)}\n <rect x=\"1071\" y=\"269\" width=\"63\" height=\"54\" fill=\"#0a0a0a\" stroke=\"#454545\"/>\n <text x=\"1082\" y=\"292\" class=\"micro bright\">ALLOW</text><text x=\"1082\" y=\"310\" class=\"micro\">/app</text>\n <rect x=\"819\" y=\"372\" width=\"315\" height=\"38\" fill=\"#090909\" stroke=\"#3d3d3d\"/>\n <rect x=\"832\" y=\"385\" width=\"11\" height=\"11\" fill=\"#a3a3a3\"/>\n <text x=\"856\" y=\"395\" class=\"code\">session.user / verified</text>\n <line x1=\"819\" y1=\"450\" x2=\"1134\" y2=\"450\" stroke=\"#343434\"/>\n <text x=\"819\" y=\"475\" class=\"label bright\">SESSION TYPED</text><text x=\"1134\" y=\"475\" class=\"label\" text-anchor=\"end\">CSRF PROTECTED</text>`;\n}\n\nfunction renderCacheIllustration(): string {\n return `${renderPanelHeader(\"PAGE / PRODUCT\", \"CACHE + PPR\")}\n <rect x=\"819\" y=\"204\" width=\"315\" height=\"54\" fill=\"#f0f0f0\"/>\n <text x=\"836\" y=\"235\" class=\"diagram-title ink\">STATIC SHELL</text><text x=\"1116\" y=\"235\" class=\"micro ink-muted\" text-anchor=\"end\">BUILD</text>\n <rect x=\"819\" y=\"271\" width=\"198\" height=\"76\" fill=\"#a3a3a3\"/>\n <text x=\"836\" y=\"301\" class=\"diagram-title ink\">CACHED DATA</text><text x=\"836\" y=\"326\" class=\"micro ink-muted\">tag: products</text>\n <rect x=\"1029\" y=\"271\" width=\"105\" height=\"76\" fill=\"#0a0a0a\" stroke=\"#555\"/>\n <text x=\"1045\" y=\"301\" class=\"diagram-title\">LIVE</text><text x=\"1045\" y=\"326\" class=\"micro\">stream</text>\n <path d=\"M1081 347v43m-8-9 8 9 8-9\" fill=\"none\" stroke=\"#d4d4d4\"/>\n <line x1=\"819\" y1=\"450\" x2=\"1134\" y2=\"450\" stroke=\"#343434\"/>\n <text x=\"819\" y=\"475\" class=\"label bright\">STATIC FIRST</text><text x=\"1134\" y=\"475\" class=\"label\" text-anchor=\"end\">DYNAMIC WHERE NEEDED</text>`;\n}\n\nfunction renderIntegrationsIllustration(): string {\n return `${renderPanelHeader(\"INTEGRATION GRAPH\", \"ONE PRODUCT\")}\n <path d=\"M976 309H879V247M976 309H879v87M1030 309h93V247M1030 309h93v87\" fill=\"none\" stroke=\"#4a4a4a\"/>\n <rect x=\"819\" y=\"214\" width=\"120\" height=\"57\" fill=\"#0a0a0a\" stroke=\"#4b4b4b\"/><text x=\"839\" y=\"247\" class=\"diagram-title\">BETTER AUTH</text>\n <rect x=\"819\" y=\"368\" width=\"120\" height=\"57\" fill=\"#0a0a0a\" stroke=\"#4b4b4b\"/><text x=\"851\" y=\"401\" class=\"diagram-title\">PRISMA</text>\n <rect x=\"1061\" y=\"214\" width=\"73\" height=\"57\" fill=\"#0a0a0a\" stroke=\"#4b4b4b\"/><text x=\"1077\" y=\"247\" class=\"diagram-title\">STRIPE</text>\n <rect x=\"1061\" y=\"368\" width=\"73\" height=\"57\" fill=\"#a3a3a3\"/><text x=\"1075\" y=\"401\" class=\"diagram-title ink\">VERCEL</text>\n <rect x=\"976\" y=\"277\" width=\"94\" height=\"64\" fill=\"#f0f0f0\"/>\n <text x=\"994\" y=\"304\" class=\"diagram-title ink\">FARM.JS</text><text x=\"994\" y=\"324\" class=\"micro ink-muted\">CORE</text>\n <line x1=\"819\" y1=\"450\" x2=\"1134\" y2=\"450\" stroke=\"#343434\"/>\n <text x=\"819\" y=\"475\" class=\"label bright\">BRING YOUR STACK</text><text x=\"1134\" y=\"475\" class=\"label\" text-anchor=\"end\">CONNECTED ONCE</text>`;\n}\n\nfunction renderCliIllustration(): string {\n return `${renderPanelHeader(\"TERMINAL\", \"PRODUCTION OUTPUT\")}\n <rect x=\"819\" y=\"203\" width=\"315\" height=\"213\" fill=\"#050505\" stroke=\"#555\"/>\n <line x1=\"819\" y1=\"236\" x2=\"1134\" y2=\"236\" stroke=\"#555\"/>\n <circle cx=\"837\" cy=\"220\" r=\"4\" fill=\"#5d5d5d\"/><circle cx=\"850\" cy=\"220\" r=\"4\" fill=\"#7a7a7a\"/><circle cx=\"863\" cy=\"220\" r=\"4\" fill=\"#a3a3a3\"/>\n <text x=\"837\" y=\"273\" class=\"code bright\"><tspan fill=\"#7a7a7a\">$</tspan> farm build</text>\n <rect x=\"837\" y=\"293\" width=\"11\" height=\"11\" fill=\"#a3a3a3\"/><path d=\"m839 298 3 3 6-7\" fill=\"none\" stroke=\"#050505\" stroke-width=\"1.5\"/>\n <text x=\"861\" y=\"303\" class=\"code\">64 routes discovered</text>\n <rect x=\"837\" y=\"320\" width=\"11\" height=\"11\" fill=\"#a3a3a3\"/><path d=\"m839 325 3 3 6-7\" fill=\"none\" stroke=\"#050505\" stroke-width=\"1.5\"/>\n <text x=\"861\" y=\"330\" class=\"code\">client + server bundles</text>\n <rect x=\"837\" y=\"355\" width=\"126\" height=\"30\" fill=\"#f0f0f0\"/><text x=\"853\" y=\"374\" class=\"micro ink\">BUILD COMPLETE</text>\n <text x=\"1115\" y=\"374\" class=\"micro\" text-anchor=\"end\">/dist</text>\n <line x1=\"819\" y1=\"450\" x2=\"1134\" y2=\"450\" stroke=\"#343434\"/>\n <text x=\"819\" y=\"475\" class=\"label bright\">REAL COMMANDS</text><text x=\"1134\" y=\"475\" class=\"label\" text-anchor=\"end\">842MS</text>`;\n}\n\nfunction renderProjectIllustration(): string {\n return `${renderPanelHeader(\"PROJECT MAP\", \"CONVENTION TYPED\")}\n <rect x=\"819\" y=\"202\" width=\"315\" height=\"216\" fill=\"#050505\" stroke=\"#555\"/>\n <text x=\"837\" y=\"227\" class=\"diagram-title bright\">my-app/</text>\n <path d=\"M847 243v143M847 259h23M847 293h23M847 327h23M847 361h23\" fill=\"none\" stroke=\"#666\"/>\n <rect x=\"870\" y=\"243\" width=\"246\" height=\"33\" fill=\"#0a0a0a\" stroke=\"#444\"/><text x=\"886\" y=\"264\" class=\"code\">src/app</text><text x=\"1098\" y=\"264\" class=\"micro\" text-anchor=\"end\">ROUTES</text>\n <rect x=\"870\" y=\"277\" width=\"246\" height=\"33\" fill=\"#f0f0f0\"/><text x=\"886\" y=\"298\" class=\"code ink\">src/app/page.tsx</text>\n <rect x=\"870\" y=\"311\" width=\"246\" height=\"33\" fill=\"#0a0a0a\" stroke=\"#444\"/><text x=\"886\" y=\"332\" class=\"code\">src/app/api/users/route.ts</text><text x=\"1098\" y=\"332\" class=\"micro\" text-anchor=\"end\">API</text>\n <rect x=\"870\" y=\"345\" width=\"246\" height=\"33\" fill=\"#0a0a0a\" stroke=\"#444\"/><text x=\"886\" y=\"366\" class=\"code\">farm.config.ts</text><text x=\"1098\" y=\"366\" class=\"micro\" text-anchor=\"end\">CONFIG</text>\n <line x1=\"819\" y1=\"450\" x2=\"1134\" y2=\"450\" stroke=\"#343434\"/>\n <text x=\"819\" y=\"475\" class=\"label bright\">FILES BECOME FEATURES</text><text x=\"1134\" y=\"475\" class=\"label\" text-anchor=\"end\">ONE CONFIG</text>`;\n}\n\nfunction renderRuntimeIllustration(): string {\n return `${renderPanelHeader(\"PRODUCT ARCHITECTURE\", \"FULL STACK\")}\n <rect x=\"819\" y=\"211\" width=\"315\" height=\"55\" fill=\"#f0f0f0\"/>\n <text x=\"836\" y=\"244\" class=\"diagram-title ink\">PRODUCT SURFACE</text><text x=\"1116\" y=\"244\" class=\"micro ink-muted\" text-anchor=\"end\">UI + ROUTES</text>\n <path d=\"M976 266v20m0 61v20\" stroke=\"#727272\"/>\n <rect x=\"855\" y=\"286\" width=\"242\" height=\"61\" fill=\"#a3a3a3\"/>\n <text x=\"874\" y=\"314\" class=\"diagram-title ink\">APPLICATION CORE</text><text x=\"874\" y=\"334\" class=\"micro ink-muted\">APIS · MIDDLEWARE</text>\n <rect x=\"819\" y=\"367\" width=\"315\" height=\"55\" fill=\"#4c4c4c\"/>\n <text x=\"836\" y=\"400\" class=\"diagram-title bright\">CONNECTED STACK</text><text x=\"1116\" y=\"400\" class=\"micro\" text-anchor=\"end\">DATA · AUTH · DEPLOY</text>\n <line x1=\"819\" y1=\"450\" x2=\"1134\" y2=\"450\" stroke=\"#343434\"/>\n <text x=\"819\" y=\"475\" class=\"label bright\">ONE FRAMEWORK</text><text x=\"1134\" y=\"475\" class=\"label\" text-anchor=\"end\">ONE DEPLOYMENT MODEL</text>`;\n}\n\nfunction renderIllustration(type: FarmDocsSocialImageIllustration): string {\n switch (type) {\n case \"auth\":\n return renderAuthIllustration();\n case \"cache\":\n return renderCacheIllustration();\n case \"cli\":\n return renderCliIllustration();\n case \"integrations\":\n return renderIntegrationsIllustration();\n case \"project\":\n return renderProjectIllustration();\n case \"routing\":\n return renderRoutingIllustration();\n default:\n return renderRuntimeIllustration();\n }\n}\n\nexport function renderFarmDocsSocialImageSvg(descriptor: FarmDocsSocialImageDescriptor): string {\n const titleLines = wrapText(descriptor.title, 22, 2);\n const longestTitleLine = Math.max(...titleLines.map((line) => line.length));\n const titleSize = titleLines.length === 1 ? (longestTitleLine > 17 ? 62 : 74) : 56;\n const titleLineHeight = Math.round(titleSize * 0.98);\n const titleY = titleLines.length === 1 ? 294 : 266;\n const descriptionY = titleY + (titleLines.length - 1) * titleLineHeight + 59;\n const descriptionLines = wrapText(descriptor.description, 68, 2);\n const routeY = Math.max(418, descriptionY + descriptionLines.length * 29 + 24);\n const section = truncate(descriptor.section.toUpperCase(), 27);\n const route = truncate(descriptor.pageHref, 42);\n const footerUrl = truncate(descriptor.pageUrl.replace(/^https?:\\/\\//, \"\"), 70);\n const brand = truncate(descriptor.brand.toUpperCase(), 25);\n const titleId = `farm-docs-og-${descriptor.hash}`;\n\n return `<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\" width=\"${FARM_DOCS_SOCIAL_IMAGE_WIDTH}\" height=\"${FARM_DOCS_SOCIAL_IMAGE_HEIGHT}\" viewBox=\"0 0 ${FARM_DOCS_SOCIAL_IMAGE_WIDTH} ${FARM_DOCS_SOCIAL_IMAGE_HEIGHT}\" role=\"img\" aria-labelledby=\"${titleId}-title ${titleId}-description\">\n <title id=\"${titleId}-title\">${escapeXml(descriptor.imageAlt)}</title>\n <desc id=\"${titleId}-description\">${escapeXml(descriptor.description)}</desc>\n <metadata>${escapeXml(JSON.stringify({ generator: \"Farm.js docs\", page: descriptor.pageUrl, illustration: descriptor.illustration }))}</metadata>\n <style type=\"text/css\">\n ${renderEmbeddedFont(\"Farm Sans\", descriptor.fonts?.sans, \"100 900\")}\n ${renderEmbeddedFont(\"Farm Mono\", descriptor.fonts?.mono, \"100 900\")}\n ${renderEmbeddedFont(\"Farm Pixel\", descriptor.fonts?.display, \"400 700\")}\n .sans{font-family:\"Farm Sans\",\"Arial\",sans-serif}.mono,.label,.code,.diagram-title,.micro{font-family:\"Farm Mono\",\"Menlo\",\"DejaVu Sans Mono\",monospace}.pixel{font-family:\"Farm Pixel\",\"Farm Mono\",monospace}.label{fill:#8b8b8b;font-size:10px;font-weight:600;letter-spacing:1.2px}.code{fill:#8b8b8b;font-size:11px}.diagram-title{fill:#e7e7e7;font-size:11px;font-weight:650}.micro{fill:#777;font-size:8px;letter-spacing:.45px}.bright{fill:#f5f5f4}.ink{fill:#050505}.ink-muted{fill:#4c4c4c}\n </style>\n <defs>\n <pattern id=\"canvas-grid\" width=\"40\" height=\"40\" patternUnits=\"userSpaceOnUse\"><path d=\"M40 0H0V40\" fill=\"none\" stroke=\"#151515\"/></pattern>\n <pattern id=\"diagonal\" width=\"12\" height=\"12\" patternUnits=\"userSpaceOnUse\" patternTransform=\"rotate(45)\"><line x1=\"0\" y1=\"0\" x2=\"0\" y2=\"12\" stroke=\"#171717\" stroke-width=\"2\"/></pattern>\n <clipPath id=\"frame-clip\"><rect x=\"28\" y=\"28\" width=\"1144\" height=\"574\"/></clipPath>\n </defs>\n <rect width=\"1200\" height=\"630\" fill=\"#050505\"/>\n <rect width=\"1200\" height=\"630\" fill=\"url(#canvas-grid)\"/>\n <g clip-path=\"url(#frame-clip)\">\n <rect x=\"28\" y=\"28\" width=\"1144\" height=\"574\" fill=\"#020202\"/>\n <rect x=\"782\" y=\"114\" width=\"390\" height=\"411\" fill=\"url(#diagonal)\"/>\n </g>\n <rect x=\"28.5\" y=\"28.5\" width=\"1143\" height=\"573\" fill=\"none\" stroke=\"#323232\"/>\n <path d=\"M28 114.5h1144M28 525.5h1144M781.5 114v411\" fill=\"none\" stroke=\"#303030\"/>\n\n <g transform=\"translate(71 51)\">\n <rect width=\"11\" height=\"11\" rx=\"1\" fill=\"#f5f5f4\"/><rect x=\"15\" width=\"28\" height=\"11\" rx=\"1\" fill=\"#f5f5f4\"/>\n <rect y=\"15\" width=\"11\" height=\"11\" rx=\"1\" fill=\"#9b9b9b\"/><rect x=\"15\" y=\"15\" width=\"28\" height=\"11\" rx=\"1\" fill=\"#9b9b9b\"/>\n <rect y=\"30\" width=\"11\" height=\"11\" rx=\"1\" fill=\"#5f5f5f\"/><rect x=\"15\" y=\"30\" width=\"20\" height=\"11\" rx=\"1\" fill=\"#5f5f5f\"/>\n <text x=\"61\" y=\"24\" class=\"mono bright\" font-size=\"24\" font-weight=\"550\">FARM<tspan fill=\"#777\">.JS</tspan></text>\n <text x=\"61\" y=\"43\" class=\"label\">BY FARMING LABS</text>\n </g>\n <text x=\"1134\" y=\"72\" class=\"label\" text-anchor=\"end\">${escapeXml(brand)} · DOCUMENTATION</text>\n\n <text x=\"71\" y=\"198\" class=\"mono bright\" font-size=\"13\" font-weight=\"650\">DOCS</text>\n <line x1=\"117\" y1=\"193\" x2=\"155\" y2=\"193\" stroke=\"#696969\"/>\n <text x=\"166\" y=\"198\" class=\"mono\" fill=\"#9b9b9b\" font-size=\"13\">${escapeXml(section)}</text>\n ${renderTextLines(titleLines, 71, titleY, titleLineHeight, `class=\"pixel bright\" font-size=\"${titleSize}\" font-weight=\"500\" letter-spacing=\"-2.4\"`)}\n ${renderTextLines(descriptionLines, 71, descriptionY, 29, 'class=\"sans\" fill=\"#a3a3a3\" font-size=\"20\" font-weight=\"430\" letter-spacing=\"-.3\"')}\n <rect x=\"71\" y=\"${routeY}\" width=\"${Math.min(390, 56 + route.length * 8)}\" height=\"36\" fill=\"#050505\" stroke=\"#3c3c3c\"/>\n <text x=\"85\" y=\"${routeY + 23}\" class=\"mono bright\" font-size=\"11\" font-weight=\"600\">GET</text>\n <text x=\"119\" y=\"${routeY + 23}\" class=\"mono\" fill=\"#898989\" font-size=\"11\">${escapeXml(route)}</text>\n\n ${renderIllustration(descriptor.illustration)}\n\n <text x=\"71\" y=\"570\" class=\"mono bright\" font-size=\"13\" font-weight=\"550\">${escapeXml(footerUrl)}</text>\n <text x=\"1134\" y=\"570\" class=\"mono\" fill=\"#9b9b9b\" font-size=\"12\" text-anchor=\"end\">FARM.JS DOCUMENTATION</text>\n <path d=\"M20 20h10M20 20v10M1180 20h-10M1180 20v10M20 610h10M20 610v-10M1180 610h-10M1180 610v-10\" fill=\"none\" stroke=\"#9b9b9b\"/>\n</svg>`;\n}\n\nexport function renderFarmDocsSocialMetadata(\n descriptor: FarmDocsSocialImageDescriptor,\n customImage?: string,\n): string {\n const imageUrl = customImage\n ? new URL(customImage, descriptor.pageUrl).href\n : descriptor.imageUrl;\n const customExtension = customImage?.toLowerCase().split(/[?#]/, 1)[0];\n const imageType = customExtension?.endsWith(\".webp\")\n ? \"image/webp\"\n : customExtension?.endsWith(\".png\")\n ? \"image/png\"\n : customExtension?.match(/\\.jpe?g$/)\n ? \"image/jpeg\"\n : \"image/svg+xml\";\n const tag = (property: string, content: string, name = false) =>\n `<meta ${name ? \"name\" : \"property\"}=\"${property}\" content=\"${escapeXml(content)}\">`;\n\n return [\n tag(\"og:type\", \"article\"),\n tag(\"og:site_name\", descriptor.siteName),\n tag(\"og:title\", descriptor.title),\n tag(\"og:description\", descriptor.description),\n tag(\"og:url\", descriptor.pageUrl),\n tag(\"og:image\", imageUrl),\n tag(\"og:image:type\", imageType),\n ...(customImage\n ? []\n : [\n tag(\"og:image:width\", String(FARM_DOCS_SOCIAL_IMAGE_WIDTH)),\n tag(\"og:image:height\", String(FARM_DOCS_SOCIAL_IMAGE_HEIGHT)),\n ]),\n tag(\"og:image:alt\", descriptor.imageAlt),\n tag(\"twitter:card\", \"summary_large_image\", true),\n tag(\"twitter:title\", descriptor.title, true),\n tag(\"twitter:description\", descriptor.description, true),\n tag(\"twitter:image\", imageUrl, true),\n tag(\"twitter:image:alt\", descriptor.imageAlt, true),\n ].join(\"\\n \");\n}\n","import type { FarmLayoutFonts } from \"../font\";\nimport { resolveFarmDocsContentDir } from \"./handler\";\nimport type { FarmDocsResolvedConfig } from \"./types\";\n\ninterface FarmDocsAdapterServerModule {\n createFarmDocsRuntimeHandler?: (\n config: Record<string, unknown>,\n options: {\n rootDir: string;\n clientEntry: string;\n stylesheets: string[];\n resolveLayoutFonts?: (\n pathname: string,\n ) => FarmLayoutFonts | undefined | Promise<FarmLayoutFonts | undefined>;\n loadReactModule?: () => Promise<any>;\n },\n ) => (request: Request) => Promise<Response | null>;\n}\n\nexport interface FarmDocsAdapterHandlerOptions {\n root: string;\n srcDir?: string;\n clientEntry: string;\n fontStylesheetHref?: string;\n globalStylesheetHref?: string;\n resolveLayoutFonts?: (\n pathname: string,\n ) => FarmLayoutFonts | undefined | Promise<FarmLayoutFonts | undefined>;\n loadModule: (specifier: string) => Promise<any>;\n}\n\nexport function hasFarmDocsRuntimeAdapter(\n docs: FarmDocsResolvedConfig | undefined,\n): docs is FarmDocsResolvedConfig & { adapter: NonNullable<FarmDocsResolvedConfig[\"adapter\"]> } {\n return Boolean(docs?.enabled && docs.adapter?.server && docs.adapter.react);\n}\n\n/**\n * Load a documentation runtime through the versioned adapter descriptor.\n *\n * Core deliberately knows nothing about the adapter's DOM or theme. It only\n * supplies host assets and Vite's module loader; the adapter returns the final\n * Web Request handler.\n */\nexport async function createFarmDocsAdapterHandler(\n docs: FarmDocsResolvedConfig,\n options: FarmDocsAdapterHandlerOptions,\n): Promise<(request: Request) => Promise<Response | null>> {\n if (!hasFarmDocsRuntimeAdapter(docs)) {\n throw new Error(\"Farm docs adapter requires server and react runtime entrypoints.\");\n }\n\n const serverModule = (await options.loadModule(\n docs.adapter.server,\n )) as FarmDocsAdapterServerModule;\n if (typeof serverModule.createFarmDocsRuntimeHandler !== \"function\") {\n const adapterId = JSON.stringify(docs.adapter.id);\n const serverEntry = JSON.stringify(docs.adapter.server);\n throw new Error(\n `Farm docs adapter ${adapterId} does not export createFarmDocsRuntimeHandler from ${serverEntry}. ` +\n \"Upgrade the adapter to a runtime-enabled release.\",\n );\n }\n\n const runtimeConfig = {\n ...docs.config,\n entry: docs.config.entry || docs.entry.replace(/^\\/+|\\/+$/g, \"\") || \"docs\",\n docsPath: docs.entry,\n contentDir: resolveFarmDocsContentDir(docs, {\n root: options.root,\n srcDir: options.srcDir,\n }),\n };\n\n return serverModule.createFarmDocsRuntimeHandler(runtimeConfig as Record<string, unknown>, {\n rootDir: options.root,\n clientEntry: options.clientEntry,\n stylesheets: [options.fontStylesheetHref, options.globalStylesheetHref].filter(\n (value): value is string => typeof value === \"string\" && value.length > 0,\n ),\n resolveLayoutFonts: options.resolveLayoutFonts,\n loadReactModule: () => options.loadModule(docs.adapter.react!),\n });\n}\n","import {\n buildDocsAgentDiscoverySpec,\n buildDocsConfigMap,\n buildDocsDiagnostics as buildFarmingDocsDiagnostics,\n buildDocsSitemapManifest,\n performDocsSearch,\n renderDocsAgentsDocument,\n renderDocsLlmsTxt,\n renderDocsMarkdownDocument,\n renderDocsRobotsTxt,\n renderDocsSitemapMarkdown,\n renderDocsSitemapXml,\n renderDocsSkillDocument,\n type DocsConfig,\n type DocsLlmsTxtPageInput,\n type DocsSearchSourcePage,\n type DocsSitemapPageInput,\n} from \"@farming-labs/docs\";\nimport { resolveDocsConfig } from \"../config\";\nimport type { FarmDocsResolvedConfig, FarmDocsUserConfig } from \"./types\";\nimport {\n discoverFarmDocsPages,\n type LoadedFarmDocsPage,\n loadFarmDocsPage,\n resolveFarmDocsContentDir,\n toFarmDocsMarkdownPage,\n} from \"./handler\";\n\nexport interface FarmDocsAPIOptions {\n rootDir?: string;\n root?: string;\n srcDir?: string;\n docs?: FarmDocsUserConfig | FarmDocsResolvedConfig;\n config?: Partial<DocsConfig>;\n configPath?: string;\n entry?: string;\n docsPath?: string;\n contentDir?: string;\n}\n\nexport interface FarmDocsCloudRouteOptions {\n locale?: string;\n publicBaseUrl?: string;\n}\n\nexport interface FarmDocsCloudServer {\n handleRequest(request: Request, options?: FarmDocsCloudRouteOptions): Promise<Response>;\n}\n\nexport type FarmDocsCloudIntegration =\n | FarmDocsCloudServer\n | (FarmDocsCloudRouteOptions & { docsCloud?: FarmDocsCloudServer });\n\nexport interface FarmDocsAPIRouteHandlers {\n GET(request: Request): Promise<Response>;\n POST(request: Request): Promise<Response>;\n}\n\nexport type FarmDocsAPIHandler = (request: Request) => Promise<Response | null>;\n\ninterface FarmDocsAPIContext {\n root: string;\n srcDir: string;\n docs: FarmDocsResolvedConfig;\n contentDir: string;\n}\n\ntype JsonRecord = Record<string, unknown>;\ntype DocsAPIPathTarget = {\n format?: string;\n slug?: string;\n};\ntype FarmDocsRuntimeConfig = {\n root?: string;\n srcDir?: string;\n docs?: FarmDocsResolvedConfig;\n};\n\ndeclare global {\n // Injected by Farm's generated server entry so route wrappers can stay zero-config.\n // eslint-disable-next-line no-var\n var __FARM_DOCS_RUNTIME_CONFIG__: FarmDocsRuntimeConfig | undefined;\n}\n\nfunction isRecord(value: unknown): value is JsonRecord {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isResolvedDocsConfig(value: unknown): value is FarmDocsResolvedConfig {\n return (\n isRecord(value) &&\n typeof value.enabled === \"boolean\" &&\n typeof value.entry === \"string\" &&\n isRecord(value.config)\n );\n}\n\nexport function isFarmDocsAPIRequest(requestOrPathname: Request | string): boolean {\n const pathname =\n typeof requestOrPathname === \"string\"\n ? requestOrPathname\n : new URL(requestOrPathname.url).pathname;\n\n return pathname === \"/api/docs\" || pathname.startsWith(\"/api/docs/\");\n}\n\nfunction json(data: unknown, init: ResponseInit = {}): Response {\n const headers = new Headers(init.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json\");\n }\n return new Response(JSON.stringify(data), { ...init, headers });\n}\n\nfunction text(content: string, contentType: string, init: ResponseInit = {}): Response {\n const headers = new Headers(init.headers);\n headers.set(\"Content-Type\", contentType);\n return new Response(content, { ...init, headers });\n}\n\nfunction omitHeadBody(response: Response): Response {\n return new Response(null, {\n status: response.status,\n statusText: response.statusText,\n headers: response.headers,\n });\n}\n\nfunction normalizeAction(value: string | null | undefined): string | undefined {\n return value?.trim().toLowerCase().replace(/_/g, \"-\") || undefined;\n}\n\nfunction getDocsTitle(docs: FarmDocsResolvedConfig): string {\n return typeof docs.config.nav === \"object\" && docs.config.nav && \"title\" in docs.config.nav\n ? String((docs.config.nav as { title?: unknown }).title || \"Documentation\")\n : \"Documentation\";\n}\n\nfunction isDocsCloudServer(value: unknown): value is FarmDocsCloudServer {\n return isRecord(value) && typeof value.handleRequest === \"function\";\n}\n\nfunction resolveDocsCloudIntegration(\n integration?: FarmDocsCloudIntegration,\n): { docsCloud: FarmDocsCloudServer; routeOptions: FarmDocsCloudRouteOptions } | undefined {\n if (!integration) return undefined;\n\n if (isDocsCloudServer(integration)) {\n return { docsCloud: integration, routeOptions: {} };\n }\n\n if (!integration.docsCloud) return undefined;\n\n return {\n docsCloud: integration.docsCloud,\n routeOptions: {\n locale: integration.locale,\n publicBaseUrl: integration.publicBaseUrl,\n },\n };\n}\n\nfunction isDocsCloudGetRequest(request: Request): boolean {\n const url = new URL(request.url);\n const cloud = normalizeAction(url.searchParams.get(\"cloud\"));\n const action = normalizeAction(url.searchParams.get(\"action\"));\n const format = normalizeAction(url.searchParams.get(\"format\"));\n\n return (\n cloud === \"config\" ||\n cloud === \"public-config\" ||\n action === \"cloud-config\" ||\n action === \"docs-cloud-config\" ||\n format === \"cloud-config\" ||\n format === \"docs-cloud-config\"\n );\n}\n\nfunction isDocsCloudAction(action: string | undefined): boolean {\n return Boolean(\n action &&\n [\"analytics\", \"track\", \"track-event\", \"event\", \"ask-ai\", \"ai\", \"chat\", \"docs-cloud\"].includes(\n action,\n ),\n );\n}\n\nasync function readJson(request: Request): Promise<unknown> {\n try {\n return await request.clone().json();\n } catch {\n return undefined;\n }\n}\n\nasync function isDocsCloudPostRequest(request: Request): Promise<boolean> {\n const url = new URL(request.url);\n const cloud = normalizeAction(url.searchParams.get(\"cloud\"));\n const action = normalizeAction(url.searchParams.get(\"action\"));\n\n if (isDocsCloudAction(cloud) || isDocsCloudAction(action)) return true;\n\n const body = await readJson(request);\n if (!isRecord(body)) return false;\n\n const bodyAction = normalizeAction(typeof body.action === \"string\" ? body.action : undefined);\n if (isDocsCloudAction(bodyAction)) return true;\n\n if (typeof body.type === \"string\") return true;\n if (isRecord(body.event) && typeof body.event.type === \"string\") return true;\n if (isRecord(body.payload) && typeof body.payload.type === \"string\") return true;\n\n return false;\n}\n\nfunction normalizeDocsApiSlug(\n value: string | null | undefined,\n docs: FarmDocsResolvedConfig,\n): string {\n const entry = docs.entry.replace(/^\\/+|\\/+$/g, \"\");\n let slug = (value || \"\").trim().replace(/^\\/+|\\/+$/g, \"\");\n\n if (entry && slug === entry) return \"\";\n if (entry && slug.startsWith(`${entry}/`)) {\n slug = slug.slice(entry.length + 1);\n }\n\n let decoded = slug;\n try {\n decoded = decodeURIComponent(slug);\n } catch {\n // Malformed percent-encoding resolves to a non-matching slug (404),\n // not an exception out of the handler.\n }\n return decoded.replace(/\\.(mdx?|markdown)$/i, \"\");\n}\n\nfunction getDocsAPIPathTarget(request: Request): DocsAPIPathTarget {\n const pathname = new URL(request.url).pathname.replace(/\\/+$/, \"\") || \"/\";\n const prefix = \"/api/docs\";\n\n if (pathname !== prefix && !pathname.startsWith(`${prefix}/`)) return {};\n\n const rawValue = pathname === prefix ? \"\" : pathname.slice(prefix.length + 1);\n const value = rawValue.replace(/^\\/+|\\/+$/g, \"\");\n const normalizedValue = normalizeAction(value);\n\n if (!value) return {};\n if (\n normalizedValue === \"agent\" ||\n normalizedValue === \"agent.json\" ||\n normalizedValue === \"agent/spec\"\n ) {\n return { format: \"agent-spec\" };\n }\n if (\n normalizedValue === \"agents\" ||\n normalizedValue === \"agents.md\" ||\n normalizedValue === \"agent.md\"\n ) {\n return { format: \"agents\" };\n }\n if (normalizedValue === \"skill\" || normalizedValue === \"skill.md\") return { format: \"skill\" };\n if (normalizedValue === \"llms.txt\") return { format: \"llms\" };\n if (normalizedValue === \"llms-full.txt\") return { format: \"llms-full\" };\n if (normalizedValue === \"sitemap.md\") return { format: \"sitemap-md\" };\n if (normalizedValue === \"sitemap.xml\") return { format: \"sitemap-xml\" };\n if (normalizedValue === \"robots.txt\") return { format: \"robots\" };\n if (/\\.(mdx?|markdown)$/i.test(value)) return { format: \"markdown\", slug: value };\n\n return { slug: value };\n}\n\nfunction getDocsAPIFormat(request: Request): string | undefined {\n const url = new URL(request.url);\n return (\n normalizeAction(url.searchParams.get(\"format\") || url.searchParams.get(\"type\")) ||\n getDocsAPIPathTarget(request).format\n );\n}\n\nfunction getDocsDescription(docs: FarmDocsResolvedConfig): string | undefined {\n return docs.config.metadata?.description;\n}\n\nfunction getLoadedDocsPages(context: FarmDocsAPIContext): LoadedFarmDocsPage[] {\n return discoverFarmDocsPages(context.contentDir, context.docs)\n .map((page) => loadFarmDocsPage(context.contentDir, context.docs, page.slug))\n .filter((page): page is LoadedFarmDocsPage => Boolean(page));\n}\n\nfunction toDocsSourcePage(page: LoadedFarmDocsPage): DocsSearchSourcePage {\n return {\n ...toFarmDocsMarkdownPage(page),\n sourcePath: page.sourcePath,\n };\n}\n\nfunction toDocsSitemapPage(page: LoadedFarmDocsPage): DocsSitemapPageInput {\n return {\n ...toFarmDocsMarkdownPage(page),\n sourcePath: page.sourcePath,\n };\n}\n\nfunction toDocsLlmsPage(page: LoadedFarmDocsPage): DocsLlmsTxtPageInput {\n return toFarmDocsMarkdownPage(page);\n}\n\nfunction getDocsLlmsOptions(context: FarmDocsAPIContext, request: Request) {\n const configured = isRecord(context.docs.config.llmsTxt) ? context.docs.config.llmsTxt : {};\n return {\n enabled: true,\n baseUrl: new URL(request.url).origin,\n siteTitle: getDocsTitle(context.docs),\n siteDescription: getDocsDescription(context.docs),\n ...configured,\n };\n}\n\nfunction getDocsDiscoveryOptions(context: FarmDocsAPIContext, request: Request) {\n const origin = new URL(request.url).origin;\n\n return {\n origin,\n entry: context.docs.entry,\n i18n: null,\n search: context.docs.config.search ?? true,\n mcp: {\n enabled: false,\n route: \"/api/docs/mcp\",\n name: `${getDocsTitle(context.docs)} MCP`,\n version: \"1\",\n tools: {\n listDocs: false,\n listPages: false,\n readPage: false,\n searchDocs: false,\n getNavigation: false,\n getCodeExamples: false,\n getConfigSchema: false,\n },\n },\n feedback: undefined,\n llms: getDocsLlmsOptions(context, request),\n sitemap: context.docs.config.sitemap ?? true,\n robots: context.docs.config.robots ?? true,\n openapi: context.docs.config.apiReference,\n markdown: {\n acceptHeader: true,\n signatureAgentHeader: true,\n },\n };\n}\n\nfunction buildSitemapManifest(context: FarmDocsAPIContext, request: Request) {\n const origin = new URL(request.url).origin;\n return buildDocsSitemapManifest({\n pages: getLoadedDocsPages(context).map(toDocsSitemapPage),\n entry: context.docs.entry,\n siteTitle: getDocsTitle(context.docs),\n baseUrl: origin,\n });\n}\n\nfunction renderLlmsTxt(context: FarmDocsAPIContext, request: Request, full: boolean): string {\n const generated = renderDocsLlmsTxt(\n getLoadedDocsPages(context).map(toDocsLlmsPage),\n getDocsLlmsOptions(context, request),\n );\n\n return full ? generated.llmsFullTxt : generated.llmsTxt;\n}\n\nfunction renderSkillDocument(context: FarmDocsAPIContext, request: Request): string {\n const farmAliases = [\n \"## Farm API Route Aliases\",\n \"\",\n \"- Search JSON: /api/docs?query=<term>\",\n \"- Config JSON: /api/docs?format=config\",\n \"- Markdown by query: /api/docs?format=markdown&path=<slug>\",\n \"- Markdown by path: /api/docs/<slug>.md\",\n \"- LLM summary: /api/docs?format=llms\",\n \"- Full LLM document: /api/docs?format=llms-full\",\n \"- Sitemap XML: /api/docs?format=sitemap-xml\",\n \"- Agent spec JSON: /api/docs/agent/spec\",\n ].join(\"\\n\");\n\n return `${renderDocsSkillDocument(getDocsDiscoveryOptions(context, request)).trim()}\\n\\n${farmAliases}\\n`;\n}\n\nfunction renderAgentsDocument(context: FarmDocsAPIContext, request: Request): string {\n return `${renderDocsAgentsDocument(getDocsDiscoveryOptions(context, request)).trim()}\\n`;\n}\n\nfunction buildAgentSpec(context: FarmDocsAPIContext, request: Request) {\n const url = new URL(request.url);\n const origin = url.origin;\n const pages = discoverFarmDocsPages(context.contentDir, context.docs);\n const spec = buildDocsAgentDiscoverySpec(getDocsDiscoveryOptions(context, request));\n const title = getDocsTitle(context.docs);\n\n return {\n ...spec,\n name: title,\n site: {\n ...spec.site,\n title,\n description: getDocsDescription(context.docs),\n entry: context.docs.entry,\n },\n entry: context.docs.entry,\n routes: {\n docs: `${origin}${context.docs.entry}`,\n config: `${origin}/api/docs?format=config`,\n search: `${origin}/api/docs?query=<term>`,\n markdown: `${origin}/api/docs/<slug>.md`,\n markdownQuery: `${origin}/api/docs?format=markdown&path=<slug>`,\n llms: `${origin}/api/docs?format=llms`,\n llmsFull: `${origin}/api/docs?format=llms-full`,\n sitemapXml: `${origin}/api/docs?format=sitemap-xml`,\n sitemapMarkdown: `${origin}/api/docs?format=sitemap-md`,\n robots: `${origin}/api/docs?format=robots`,\n skill: `${origin}/api/docs?format=skill`,\n agents: `${origin}/api/docs?format=agents`,\n agentSpec: `${origin}/api/docs/agent/spec`,\n },\n capabilities: {\n ...spec.capabilities,\n search: spec.capabilities.search,\n markdown: spec.capabilities.markdownRoutes,\n llms: spec.capabilities.llms,\n sitemap: spec.capabilities.sitemap,\n robots: spec.capabilities.robots,\n post: false,\n },\n pages,\n };\n}\n\nfunction buildDiagnostics(context: FarmDocsAPIContext) {\n const pages = discoverFarmDocsPages(context.contentDir, context.docs);\n const diagnostics = buildFarmingDocsDiagnostics(context.docs.config, {\n entry: context.docs.entry,\n mcp: {\n enabled: false,\n route: \"/api/docs/mcp\",\n name: `${getDocsTitle(context.docs)} MCP`,\n version: \"1\",\n tools: {\n listDocs: false,\n listPages: false,\n readPage: false,\n searchDocs: false,\n getNavigation: false,\n getCodeExamples: false,\n getConfigSchema: false,\n },\n },\n });\n\n return {\n ...diagnostics,\n enabled: context.docs.enabled,\n entry: context.docs.entry,\n root: context.root,\n srcDir: context.srcDir,\n contentDir: context.contentDir,\n configPath: context.docs.configPath || null,\n pageCount: pages.length,\n pages,\n };\n}\n\nasync function searchDocs(context: FarmDocsAPIContext, request: Request, query: string) {\n const loadedPages = getLoadedDocsPages(context);\n const sourcePages = loadedPages.map(toDocsSourcePage);\n const sourcePageByUrl = new Map(sourcePages.map((page) => [page.url, page]));\n const resultLimit =\n isRecord(context.docs.config.search) &&\n typeof context.docs.config.search.maxResults === \"number\"\n ? context.docs.config.search.maxResults\n : undefined;\n\n const results = await performDocsSearch({\n pages: sourcePages,\n query,\n search: context.docs.config.search ?? true,\n pathname: new URL(request.url).pathname,\n siteTitle: getDocsTitle(context.docs),\n limit: resultLimit,\n });\n\n return results.map((result) => {\n const pageUrl = result.url.split(\"#\")[0];\n const page = sourcePageByUrl.get(pageUrl);\n return {\n ...result,\n title: page?.title || result.content,\n href: page?.url || pageUrl,\n description: result.description || page?.description,\n };\n });\n}\n\nasync function resolveAPIContext(options: FarmDocsAPIOptions): Promise<FarmDocsAPIContext> {\n const runtimeConfig = globalThis.__FARM_DOCS_RUNTIME_CONFIG__;\n const root = options.rootDir || options.root || runtimeConfig?.root || process.cwd();\n const srcDir = options.srcDir || runtimeConfig?.srcDir || \"src\";\n const canUseRuntimeDocs =\n options.docs === undefined &&\n options.config === undefined &&\n options.configPath === undefined &&\n options.entry === undefined &&\n options.docsPath === undefined &&\n options.contentDir === undefined &&\n options.root === undefined &&\n options.rootDir === undefined &&\n options.srcDir === undefined;\n const docsInput =\n options.docs ??\n (canUseRuntimeDocs ? runtimeConfig?.docs : undefined) ??\n ({\n enabled: true,\n entry: options.entry,\n docsPath: options.docsPath,\n contentDir: options.contentDir,\n config: options.config,\n configPath: options.configPath,\n } satisfies Exclude<FarmDocsUserConfig, boolean>);\n const docs = isResolvedDocsConfig(docsInput)\n ? docsInput\n : await resolveDocsConfig(docsInput, { root, srcDir });\n\n return {\n root,\n srcDir,\n docs,\n contentDir: resolveFarmDocsContentDir(docs, { root, srcDir }),\n };\n}\n\nasync function handleDocsAPIGet(request: Request, context: FarmDocsAPIContext): Promise<Response> {\n if (!context.docs.enabled) {\n return json({ error: \"Docs are disabled\" }, { status: 404 });\n }\n\n const url = new URL(request.url);\n const format = getDocsAPIFormat(request);\n const pathTarget = getDocsAPIPathTarget(request);\n\n if (format === \"config\" || format === \"docs-config\") {\n return json({\n entry: context.docs.entry,\n contentDir: context.docs.contentDir || context.docs.config.contentDir || null,\n config: context.docs.config,\n map: buildDocsConfigMap(context.docs.config, {\n file: context.docs.configPath || \"farm.config.ts\",\n }),\n });\n }\n\n if (format === \"skill\")\n return text(renderSkillDocument(context, request), \"text/markdown; charset=utf-8\");\n if (format === \"agents\")\n return text(renderAgentsDocument(context, request), \"text/markdown; charset=utf-8\");\n if (format === \"agent\" || format === \"agent-spec\") return json(buildAgentSpec(context, request));\n if (format === \"diagnostics\") return json(buildDiagnostics(context));\n if (format === \"llms\")\n return text(renderLlmsTxt(context, request, false), \"text/plain; charset=utf-8\");\n if (format === \"llms-full\")\n return text(renderLlmsTxt(context, request, true), \"text/plain; charset=utf-8\");\n if (format === \"sitemap-md\") {\n return text(\n renderDocsSitemapMarkdown(buildSitemapManifest(context, request), {\n includeDescriptions: true,\n }),\n \"text/markdown; charset=utf-8\",\n );\n }\n if (format === \"sitemap-xml\" || format === \"sitemap\") {\n const origin = new URL(request.url).origin;\n return text(\n renderDocsSitemapXml(buildSitemapManifest(context, request), {\n baseUrl: origin,\n includeLastmod: true,\n }),\n \"application/xml; charset=utf-8\",\n );\n }\n if (format === \"robots\") {\n return text(\n renderDocsRobotsTxt({\n entry: context.docs.entry,\n sitemap: context.docs.config.sitemap ?? true,\n robots: context.docs.config.robots ?? true,\n baseUrl: new URL(request.url).origin,\n }),\n \"text/plain; charset=utf-8\",\n );\n }\n\n if (format === \"markdown\" || url.pathname.endsWith(\".md\")) {\n const pathParam = url.searchParams.get(\"path\") || url.searchParams.get(\"slug\");\n const slug = normalizeDocsApiSlug(pathParam ?? pathTarget.slug ?? \"\", context.docs);\n const page = loadFarmDocsPage(context.contentDir, context.docs, slug);\n if (!page) return text(\"Docs page not found\\n\", \"text/plain; charset=utf-8\", { status: 404 });\n return text(\n renderDocsMarkdownDocument(toFarmDocsMarkdownPage(page), {\n origin: new URL(request.url).origin,\n llms: getDocsLlmsOptions(context, request),\n sitemap: context.docs.config.sitemap,\n }),\n \"text/markdown; charset=utf-8\",\n );\n }\n\n const query = url.searchParams.get(\"query\") || url.searchParams.get(\"q\") || \"\";\n if (!query.trim()) return json([]);\n return json(await searchDocs(context, request, query));\n}\n\nexport function createDocsAPI(\n options: FarmDocsAPIOptions = {},\n cloudIntegration?: FarmDocsCloudIntegration,\n): FarmDocsAPIRouteHandlers {\n let contextPromise: Promise<FarmDocsAPIContext> | undefined;\n const getContext = () => {\n contextPromise ??= resolveAPIContext(options);\n return contextPromise;\n };\n const integration = resolveDocsCloudIntegration(cloudIntegration);\n\n return {\n async GET(request: Request) {\n if (integration && isDocsCloudGetRequest(request)) {\n return integration.docsCloud.handleRequest(request, integration.routeOptions);\n }\n\n return handleDocsAPIGet(request, await getContext());\n },\n async POST(request: Request) {\n if (integration && (await isDocsCloudPostRequest(request))) {\n return integration.docsCloud.handleRequest(request, integration.routeOptions);\n }\n\n return json(\n {\n error: \"AI is not enabled for this Farm docs API route yet.\",\n },\n { status: 501 },\n );\n },\n };\n}\n\nexport function createFarmDocsAPIHandler(\n options: FarmDocsAPIOptions = {},\n cloudIntegration?: FarmDocsCloudIntegration,\n): FarmDocsAPIHandler {\n const handlers = createDocsAPI(options, cloudIntegration);\n\n return async function handleFarmDocsAPIRequest(request: Request): Promise<Response | null> {\n if (!isFarmDocsAPIRequest(request)) return null;\n\n const method = request.method.toUpperCase();\n if (method === \"GET\" || method === \"HEAD\") {\n const response = await handlers.GET(request);\n return method === \"HEAD\" ? omitHeadBody(response) : response;\n }\n if (method === \"POST\") {\n return handlers.POST(request);\n }\n\n return json(\n {\n error: \"Method Not Allowed\",\n },\n {\n status: 405,\n headers: {\n Allow: \"GET, HEAD, POST\",\n },\n },\n );\n };\n}\n"],"mappings":"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","names":["existsSync","readdirSync","readFileSync","realpathSync","statSync","path","DOCS_FILE_EXTENSIONS","normalizeEntry","path","existsSync","statSync","realpathSync","readFileSync","readdirSync","text","body","renderedSections","buildDocsAgentDiscoverySpec","buildDocsSitemapManifest","renderDocsAgentsDocument","renderDocsLlmsTxt","renderDocsMarkdownDocument","renderDocsRobotsTxt","renderDocsSitemapMarkdown","renderDocsSitemapXml","renderDocsSkillDocument","getDocsTitle","getDocsDescription","getLoadedDocsPages","toDocsSitemapPage","toDocsLlmsPage","getDocsLlmsOptions","getDocsDiscoveryOptions","buildDocsSitemapManifest","renderDocsLlmsTxt","renderDocsSkillDocument","renderDocsAgentsDocument","buildDocsAgentDiscoverySpec","renderDocsSitemapMarkdown","renderDocsSitemapXml","renderDocsRobotsTxt","renderDocsMarkdownDocument"]}
@@ -1,9 +1,9 @@
1
1
  "use client";
2
2
  import {
3
3
  defineClient
4
- } from "../chunk-UWRGX3J3.mjs";
4
+ } from "../chunk-UMUWR5XA.mjs";
5
5
  import "../chunk-FXG2PS27.mjs";
6
- import "../chunk-22VG4DFJ.mjs";
6
+ import "../chunk-J3MPQ4MQ.mjs";
7
7
  import "../chunk-CGILA3WO.mjs";
8
8
  export {
9
9
  defineClient