@sonordev/site-kit 6.3.5 → 6.4.0

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 (267) hide show
  1. package/agent-manifest.json +8 -2
  2. package/dist/{AnalyticsProvider-2A75HPK6.mjs → AnalyticsProvider-4K5T7OQ7.mjs} +6 -6
  3. package/dist/{AnalyticsProvider-2A75HPK6.mjs.map → AnalyticsProvider-4K5T7OQ7.mjs.map} +1 -1
  4. package/dist/{AnalyticsProvider-2H3POGSJ.js → AnalyticsProvider-QXZN5O6D.js} +10 -10
  5. package/dist/{AnalyticsProvider-2H3POGSJ.js.map → AnalyticsProvider-QXZN5O6D.js.map} +1 -1
  6. package/dist/{ArticleViewTracker-75BLDTHR.mjs → ArticleViewTracker-BUG2TOHS.mjs} +5 -5
  7. package/dist/{ArticleViewTracker-75BLDTHR.mjs.map → ArticleViewTracker-BUG2TOHS.mjs.map} +1 -1
  8. package/dist/{ArticleViewTracker-R3LNZ4A4.js → ArticleViewTracker-FFMHR7AY.js} +6 -6
  9. package/dist/{ArticleViewTracker-R3LNZ4A4.js.map → ArticleViewTracker-FFMHR7AY.js.map} +1 -1
  10. package/dist/{ChatWidget-F6UWIR7I.mjs → ChatWidget-CRQPBDEF.mjs} +7 -7
  11. package/dist/{ChatWidget-F6UWIR7I.mjs.map → ChatWidget-CRQPBDEF.mjs.map} +1 -1
  12. package/dist/{ChatWidget-BLZSLYN2.js → ChatWidget-XFYLVXAX.js} +10 -10
  13. package/dist/{ChatWidget-BLZSLYN2.js.map → ChatWidget-XFYLVXAX.js.map} +1 -1
  14. package/dist/EngageWidget-S234YAT2.js +21 -0
  15. package/dist/{EngageWidget-YONW3W3Z.js.map → EngageWidget-S234YAT2.js.map} +1 -1
  16. package/dist/EngageWidget-SQU4T7CI.mjs +12 -0
  17. package/dist/{EngageWidget-4WB74GQR.mjs.map → EngageWidget-SQU4T7CI.mjs.map} +1 -1
  18. package/dist/{FileField-GXNFYVSY.mjs → FileField-HNEBEBLB.mjs} +5 -5
  19. package/dist/{FileField-GXNFYVSY.mjs.map → FileField-HNEBEBLB.mjs.map} +1 -1
  20. package/dist/{FileField-KYQVN4XB.js → FileField-XG4EYAZW.js} +6 -6
  21. package/dist/{FileField-KYQVN4XB.js.map → FileField-XG4EYAZW.js.map} +1 -1
  22. package/dist/{FormSpotlight-ZOSI7MXH.js → FormSpotlight-IODREOPN.js} +9 -9
  23. package/dist/{FormSpotlight-ZOSI7MXH.js.map → FormSpotlight-IODREOPN.js.map} +1 -1
  24. package/dist/{FormSpotlight-F4YZOWHA.mjs → FormSpotlight-VKD774PZ.mjs} +3 -3
  25. package/dist/{FormSpotlight-F4YZOWHA.mjs.map → FormSpotlight-VKD774PZ.mjs.map} +1 -1
  26. package/dist/{FormStage-DICKOW7R.js → FormStage-37KKZQH4.js} +9 -9
  27. package/dist/{FormStage-DICKOW7R.js.map → FormStage-37KKZQH4.js.map} +1 -1
  28. package/dist/{FormStage-TIQ43MF6.mjs → FormStage-PRZNRYNC.mjs} +3 -3
  29. package/dist/{FormStage-TIQ43MF6.mjs.map → FormStage-PRZNRYNC.mjs.map} +1 -1
  30. package/dist/ManagedForm-4PZOCKCV.mjs +16 -0
  31. package/dist/{ManagedForm-KKJOIEFW.mjs.map → ManagedForm-4PZOCKCV.mjs.map} +1 -1
  32. package/dist/ManagedForm-JCMEE626.js +25 -0
  33. package/dist/{ManagedForm-ZUPV4DPQ.js.map → ManagedForm-JCMEE626.js.map} +1 -1
  34. package/dist/{ManagedNewsletterForm-NFV2JGNA.js → ManagedNewsletterForm-CTC33B2U.js} +7 -7
  35. package/dist/{ManagedNewsletterForm-NFV2JGNA.js.map → ManagedNewsletterForm-CTC33B2U.js.map} +1 -1
  36. package/dist/{ManagedNewsletterForm-JOTIWXLQ.mjs → ManagedNewsletterForm-KMZG24OE.mjs} +6 -6
  37. package/dist/{ManagedNewsletterForm-JOTIWXLQ.mjs.map → ManagedNewsletterForm-KMZG24OE.mjs.map} +1 -1
  38. package/dist/{SignalCore-DLRQTFKK.js → SignalCore-YHT7WPXV.js} +11 -11
  39. package/dist/{SignalCore-DLRQTFKK.js.map → SignalCore-YHT7WPXV.js.map} +1 -1
  40. package/dist/{SignalCore-MUN44S6K.mjs → SignalCore-YIPKKIUG.mjs} +5 -5
  41. package/dist/{SignalCore-MUN44S6K.mjs.map → SignalCore-YIPKKIUG.mjs.map} +1 -1
  42. package/dist/SitemapSync-GN4OXIM2.js +18 -0
  43. package/dist/{SitemapSync-5TKLHXFL.js.map → SitemapSync-GN4OXIM2.js.map} +1 -1
  44. package/dist/SitemapSync-NG763CGN.mjs +9 -0
  45. package/dist/{SitemapSync-BIWCTMRJ.mjs.map → SitemapSync-NG763CGN.mjs.map} +1 -1
  46. package/dist/analytics/AnalyticsProvider.d.ts +0 -6
  47. package/dist/analytics/AnalyticsProvider.d.ts.map +1 -1
  48. package/dist/analytics/WebVitals.d.ts +4 -1
  49. package/dist/analytics/WebVitals.d.ts.map +1 -1
  50. package/dist/analytics/index.js +9 -9
  51. package/dist/analytics/index.mjs +4 -4
  52. package/dist/analytics/measurement-context.d.ts +13 -0
  53. package/dist/analytics/measurement-context.d.ts.map +1 -0
  54. package/dist/analytics/page-observation.d.ts +39 -0
  55. package/dist/analytics/page-observation.d.ts.map +1 -0
  56. package/dist/articles/AuthorPage.d.ts +1 -1
  57. package/dist/articles/AuthorPage.d.ts.map +1 -1
  58. package/dist/articles/author-schema.d.ts +59 -13
  59. package/dist/articles/author-schema.d.ts.map +1 -1
  60. package/dist/articles/index.js +24 -23
  61. package/dist/articles/index.js.map +1 -1
  62. package/dist/articles/index.mjs +12 -11
  63. package/dist/articles/index.mjs.map +1 -1
  64. package/dist/articles/routes.d.ts +9 -0
  65. package/dist/articles/routes.d.ts.map +1 -1
  66. package/dist/articles/server-core.d.ts +5 -2
  67. package/dist/articles/server-core.d.ts.map +1 -1
  68. package/dist/articles/server-ui.js +45 -45
  69. package/dist/articles/server-ui.mjs +8 -8
  70. package/dist/articles/server.d.ts +5 -2
  71. package/dist/articles/server.d.ts.map +1 -1
  72. package/dist/articles/server.js +72 -56
  73. package/dist/articles/server.mjs +3 -3
  74. package/dist/articles/types.d.ts +17 -0
  75. package/dist/articles/types.d.ts.map +1 -1
  76. package/dist/{chunk-H6F7T5Z6.mjs → chunk-24LFAQEG.mjs} +5 -5
  77. package/dist/{chunk-H6F7T5Z6.mjs.map → chunk-24LFAQEG.mjs.map} +1 -1
  78. package/dist/chunk-3AOKYAZ2.js +135 -0
  79. package/dist/chunk-3AOKYAZ2.js.map +1 -0
  80. package/dist/{chunk-QII2TNKS.mjs → chunk-4C3INRHE.mjs} +72 -15
  81. package/dist/chunk-4C3INRHE.mjs.map +1 -0
  82. package/dist/{chunk-ZR43XFUM.js → chunk-55J2KE7D.js} +3 -3
  83. package/dist/chunk-55J2KE7D.js.map +1 -0
  84. package/dist/{chunk-SIQX3GL3.mjs → chunk-5BARLEAI.mjs} +3 -3
  85. package/dist/{chunk-SIQX3GL3.mjs.map → chunk-5BARLEAI.mjs.map} +1 -1
  86. package/dist/{chunk-HTCMZAXW.mjs → chunk-5T3J24K4.mjs} +4 -4
  87. package/dist/{chunk-HTCMZAXW.mjs.map → chunk-5T3J24K4.mjs.map} +1 -1
  88. package/dist/{chunk-RWERWLRM.js → chunk-5W4S7XQD.js} +3 -3
  89. package/dist/{chunk-RWERWLRM.js.map → chunk-5W4S7XQD.js.map} +1 -1
  90. package/dist/{chunk-6DCAMW62.mjs → chunk-6C47333H.mjs} +3 -3
  91. package/dist/chunk-6C47333H.mjs.map +1 -0
  92. package/dist/{chunk-2OA274JZ.mjs → chunk-6QPKC6XP.mjs} +3 -3
  93. package/dist/{chunk-2OA274JZ.mjs.map → chunk-6QPKC6XP.mjs.map} +1 -1
  94. package/dist/{chunk-R7XCEUEI.mjs → chunk-BI7DH42Z.mjs} +4 -4
  95. package/dist/{chunk-R7XCEUEI.mjs.map → chunk-BI7DH42Z.mjs.map} +1 -1
  96. package/dist/{chunk-ID4RGBQT.js → chunk-C7J4XLBN.js} +15 -15
  97. package/dist/{chunk-ID4RGBQT.js.map → chunk-C7J4XLBN.js.map} +1 -1
  98. package/dist/{chunk-LWCAZDY2.js → chunk-CDRQYJUT.js} +4 -4
  99. package/dist/{chunk-LWCAZDY2.js.map → chunk-CDRQYJUT.js.map} +1 -1
  100. package/dist/chunk-CIB3RHNZ.js +8 -0
  101. package/dist/{chunk-LSB3CWSB.js.map → chunk-CIB3RHNZ.js.map} +1 -1
  102. package/dist/{chunk-NCLF7RUL.js → chunk-CUZ3I6CO.js} +5 -5
  103. package/dist/{chunk-NCLF7RUL.js.map → chunk-CUZ3I6CO.js.map} +1 -1
  104. package/dist/{chunk-UEYZXWIP.js → chunk-EWDWLY74.js} +11 -11
  105. package/dist/{chunk-UEYZXWIP.js.map → chunk-EWDWLY74.js.map} +1 -1
  106. package/dist/{chunk-4EMMMKDR.js → chunk-F2GECCK7.js} +12 -12
  107. package/dist/{chunk-4EMMMKDR.js.map → chunk-F2GECCK7.js.map} +1 -1
  108. package/dist/chunk-GFSQMK35.mjs +127 -0
  109. package/dist/chunk-GFSQMK35.mjs.map +1 -0
  110. package/dist/{chunk-XP63NBUV.js → chunk-GGGX54ZE.js} +14 -14
  111. package/dist/{chunk-XP63NBUV.js.map → chunk-GGGX54ZE.js.map} +1 -1
  112. package/dist/{chunk-ZPITTAT5.mjs → chunk-GSU6VTCZ.mjs} +3 -3
  113. package/dist/{chunk-ZPITTAT5.mjs.map → chunk-GSU6VTCZ.mjs.map} +1 -1
  114. package/dist/{chunk-XQPNCDGF.js → chunk-GXSSFQ5D.js} +15 -15
  115. package/dist/{chunk-XQPNCDGF.js.map → chunk-GXSSFQ5D.js.map} +1 -1
  116. package/dist/{chunk-BJ4T65OK.mjs → chunk-H4TSADY3.mjs} +3 -3
  117. package/dist/{chunk-BJ4T65OK.mjs.map → chunk-H4TSADY3.mjs.map} +1 -1
  118. package/dist/{chunk-3UT3XR6M.js → chunk-HSLPN3QK.js} +7 -7
  119. package/dist/{chunk-3UT3XR6M.js.map → chunk-HSLPN3QK.js.map} +1 -1
  120. package/dist/{chunk-QAYB7NCH.js → chunk-HTCNRTN6.js} +129 -69
  121. package/dist/chunk-HTCNRTN6.js.map +1 -0
  122. package/dist/{chunk-Y3SYVAP6.mjs → chunk-JXRGIE3V.mjs} +4 -4
  123. package/dist/{chunk-Y3SYVAP6.mjs.map → chunk-JXRGIE3V.mjs.map} +1 -1
  124. package/dist/chunk-K3PVUXKB.mjs +6 -0
  125. package/dist/{chunk-7JGD5TUI.mjs.map → chunk-K3PVUXKB.mjs.map} +1 -1
  126. package/dist/{chunk-L2KN3GYW.mjs → chunk-KOPFFKG2.mjs} +3 -3
  127. package/dist/{chunk-L2KN3GYW.mjs.map → chunk-KOPFFKG2.mjs.map} +1 -1
  128. package/dist/{chunk-LP6KJPAL.js → chunk-KZBDH5A3.js} +4 -4
  129. package/dist/{chunk-LP6KJPAL.js.map → chunk-KZBDH5A3.js.map} +1 -1
  130. package/dist/{chunk-DJAJB6AZ.mjs → chunk-LPDXS2B2.mjs} +3 -3
  131. package/dist/{chunk-DJAJB6AZ.mjs.map → chunk-LPDXS2B2.mjs.map} +1 -1
  132. package/dist/{chunk-I5X7BX6I.mjs → chunk-M3JCHPK3.mjs} +127 -67
  133. package/dist/chunk-M3JCHPK3.mjs.map +1 -0
  134. package/dist/{chunk-RSAQ7WGF.mjs → chunk-M62L2N5A.mjs} +3 -3
  135. package/dist/{chunk-RSAQ7WGF.mjs.map → chunk-M62L2N5A.mjs.map} +1 -1
  136. package/dist/{chunk-G3L26XQ7.js → chunk-OIPG3EGM.js} +5 -5
  137. package/dist/{chunk-G3L26XQ7.js.map → chunk-OIPG3EGM.js.map} +1 -1
  138. package/dist/{chunk-X3MY4PL7.mjs → chunk-QAQTDHHT.mjs} +10 -14
  139. package/dist/chunk-QAQTDHHT.mjs.map +1 -0
  140. package/dist/{chunk-VFXLB5JU.mjs → chunk-QOKMH2TD.mjs} +3 -3
  141. package/dist/{chunk-VFXLB5JU.mjs.map → chunk-QOKMH2TD.mjs.map} +1 -1
  142. package/dist/{chunk-HXHRS3PX.mjs → chunk-RCB6HEHM.mjs} +3 -3
  143. package/dist/{chunk-HXHRS3PX.mjs.map → chunk-RCB6HEHM.mjs.map} +1 -1
  144. package/dist/{chunk-NAA5J2JM.js → chunk-RQROZLH3.js} +47 -51
  145. package/dist/chunk-RQROZLH3.js.map +1 -0
  146. package/dist/{chunk-PHE5MIW4.js → chunk-S5QKNXLQ.js} +10 -10
  147. package/dist/{chunk-PHE5MIW4.js.map → chunk-S5QKNXLQ.js.map} +1 -1
  148. package/dist/{chunk-MERNU3MY.mjs → chunk-SBTA6B6Y.mjs} +4 -4
  149. package/dist/{chunk-MERNU3MY.mjs.map → chunk-SBTA6B6Y.mjs.map} +1 -1
  150. package/dist/{chunk-CPRCBO6Y.mjs → chunk-TPDDSEL3.mjs} +3 -3
  151. package/dist/{chunk-CPRCBO6Y.mjs.map → chunk-TPDDSEL3.mjs.map} +1 -1
  152. package/dist/{chunk-C4JCJ66V.js → chunk-U4CYO4NG.js} +5 -5
  153. package/dist/{chunk-C4JCJ66V.js.map → chunk-U4CYO4NG.js.map} +1 -1
  154. package/dist/{chunk-BVSTYFFI.js → chunk-U5NFIHLY.js} +4 -4
  155. package/dist/{chunk-BVSTYFFI.js.map → chunk-U5NFIHLY.js.map} +1 -1
  156. package/dist/{chunk-4KTPBCB3.mjs → chunk-USQPRLSG.mjs} +8 -8
  157. package/dist/{chunk-4KTPBCB3.mjs.map → chunk-USQPRLSG.mjs.map} +1 -1
  158. package/dist/{chunk-RR6U3Z76.js → chunk-VDEQVXNV.js} +3 -3
  159. package/dist/{chunk-RR6U3Z76.js.map → chunk-VDEQVXNV.js.map} +1 -1
  160. package/dist/{chunk-WYUYAMFL.js → chunk-VMNPLCZB.js} +14 -14
  161. package/dist/{chunk-WYUYAMFL.js.map → chunk-VMNPLCZB.js.map} +1 -1
  162. package/dist/{chunk-5EVGWCUB.js → chunk-W7IAG5YD.js} +3 -3
  163. package/dist/{chunk-5EVGWCUB.js.map → chunk-W7IAG5YD.js.map} +1 -1
  164. package/dist/{chunk-K5Q7UYZM.mjs → chunk-WIWHM47B.mjs} +3 -3
  165. package/dist/{chunk-K5Q7UYZM.mjs.map → chunk-WIWHM47B.mjs.map} +1 -1
  166. package/dist/{chunk-KRU755E3.js → chunk-XZHR4E2D.js} +8 -8
  167. package/dist/{chunk-KRU755E3.js.map → chunk-XZHR4E2D.js.map} +1 -1
  168. package/dist/{chunk-EW2GKDDC.js → chunk-YACU35MY.js} +9 -9
  169. package/dist/{chunk-EW2GKDDC.js.map → chunk-YACU35MY.js.map} +1 -1
  170. package/dist/chunk-YMZNEDFP.js +39 -0
  171. package/dist/chunk-YMZNEDFP.js.map +1 -0
  172. package/dist/{chunk-QMVBKSTZ.mjs → chunk-YRKWJCML.mjs} +3 -3
  173. package/dist/{chunk-QMVBKSTZ.mjs.map → chunk-YRKWJCML.mjs.map} +1 -1
  174. package/dist/chunk-Z2URIOKG.mjs +36 -0
  175. package/dist/chunk-Z2URIOKG.mjs.map +1 -0
  176. package/dist/{chunk-S2LJ26WQ.mjs → chunk-ZEBOOUBP.mjs} +3 -3
  177. package/dist/{chunk-S2LJ26WQ.mjs.map → chunk-ZEBOOUBP.mjs.map} +1 -1
  178. package/dist/{chunk-QXD7AWGV.js → chunk-ZOBUA65N.js} +74 -17
  179. package/dist/chunk-ZOBUA65N.js.map +1 -0
  180. package/dist/cli/index.js +3 -3
  181. package/dist/cli/index.mjs +1 -1
  182. package/dist/client/index.js +4 -4
  183. package/dist/client/index.mjs +3 -3
  184. package/dist/commerce/index.js +57 -57
  185. package/dist/commerce/index.mjs +5 -5
  186. package/dist/engage/DesignRenderer.d.ts.map +1 -1
  187. package/dist/engage/EngageWidget.d.ts.map +1 -1
  188. package/dist/engage/element-rules.d.ts +39 -0
  189. package/dist/engage/element-rules.d.ts.map +1 -0
  190. package/dist/engage/index.js +9 -9
  191. package/dist/engage/index.mjs +6 -6
  192. package/dist/fleet/index.js +8 -8
  193. package/dist/fleet/index.mjs +4 -4
  194. package/dist/forms/index.js +13 -13
  195. package/dist/forms/index.mjs +7 -7
  196. package/dist/forms/server.js +2 -2
  197. package/dist/forms/server.mjs +1 -1
  198. package/dist/images/index.js +11 -11
  199. package/dist/images/index.mjs +4 -4
  200. package/dist/index.js +63 -63
  201. package/dist/index.mjs +9 -9
  202. package/dist/layout/client.js +8 -8
  203. package/dist/layout/client.mjs +7 -7
  204. package/dist/layout/index.js +10 -10
  205. package/dist/layout/index.mjs +8 -8
  206. package/dist/llms/index.d.ts +2 -0
  207. package/dist/llms/index.d.ts.map +1 -1
  208. package/dist/llms/index.js +129 -14
  209. package/dist/llms/index.js.map +1 -1
  210. package/dist/llms/index.mjs +115 -5
  211. package/dist/llms/index.mjs.map +1 -1
  212. package/dist/llms/revalidate.d.ts +3 -0
  213. package/dist/llms/revalidate.d.ts.map +1 -1
  214. package/dist/llms/seo-revalidate.d.ts +105 -0
  215. package/dist/llms/seo-revalidate.d.ts.map +1 -0
  216. package/dist/maps/index.js +5 -5
  217. package/dist/maps/index.mjs +3 -3
  218. package/dist/mcp/transport.d.ts +166 -0
  219. package/dist/mcp/transport.d.ts.map +1 -0
  220. package/dist/mcp/transport.js +137 -0
  221. package/dist/mcp/transport.js.map +1 -0
  222. package/dist/mcp/transport.mjs +123 -0
  223. package/dist/mcp/transport.mjs.map +1 -0
  224. package/dist/search/index.js +4 -4
  225. package/dist/search/index.mjs +3 -3
  226. package/dist/seo/client.js +5 -5
  227. package/dist/seo/client.mjs +4 -4
  228. package/dist/seo/index.js +5 -5
  229. package/dist/seo/index.mjs +4 -4
  230. package/dist/seo/register-sitemap-cli.js +1 -1
  231. package/dist/seo/register-sitemap-cli.mjs +1 -1
  232. package/dist/server/index.js +3 -3
  233. package/dist/server/index.mjs +2 -2
  234. package/dist/shared/build-entries.d.ts +7 -0
  235. package/dist/shared/build-entries.d.ts.map +1 -1
  236. package/dist/shared/request-guards.d.ts +27 -0
  237. package/dist/shared/request-guards.d.ts.map +1 -0
  238. package/dist/shared/version.d.ts +1 -1
  239. package/dist/signal/index.js +11 -11
  240. package/dist/signal/index.mjs +2 -2
  241. package/dist/sitemap/index.js +3 -3
  242. package/dist/sitemap/index.mjs +2 -2
  243. package/dist/sync/index.js +17 -17
  244. package/dist/sync/index.mjs +4 -4
  245. package/dist/{writeLLMsTxt-LYYC3ZSN.mjs → writeLLMsTxt-IYJILIU3.mjs} +3 -3
  246. package/dist/{writeLLMsTxt-XHLHJ5XY.js → writeLLMsTxt-SQG4B63X.js} +4 -4
  247. package/package.json +6 -1
  248. package/dist/EngageWidget-4WB74GQR.mjs +0 -12
  249. package/dist/EngageWidget-YONW3W3Z.js +0 -21
  250. package/dist/ManagedForm-KKJOIEFW.mjs +0 -16
  251. package/dist/ManagedForm-ZUPV4DPQ.js +0 -25
  252. package/dist/SitemapSync-5TKLHXFL.js +0 -18
  253. package/dist/SitemapSync-BIWCTMRJ.mjs +0 -9
  254. package/dist/chunk-6DCAMW62.mjs.map +0 -1
  255. package/dist/chunk-7JGD5TUI.mjs +0 -6
  256. package/dist/chunk-I5X7BX6I.mjs.map +0 -1
  257. package/dist/chunk-LSB3CWSB.js +0 -8
  258. package/dist/chunk-NAA5J2JM.js.map +0 -1
  259. package/dist/chunk-QAYB7NCH.js.map +0 -1
  260. package/dist/chunk-QII2TNKS.mjs.map +0 -1
  261. package/dist/chunk-QXD7AWGV.js.map +0 -1
  262. package/dist/chunk-X3MY4PL7.mjs.map +0 -1
  263. package/dist/chunk-YRCR7WY3.js +0 -65
  264. package/dist/chunk-YRCR7WY3.js.map +0 -1
  265. package/dist/chunk-ZL35JCDA.mjs +0 -61
  266. package/dist/chunk-ZL35JCDA.mjs.map +0 -1
  267. package/dist/chunk-ZR43XFUM.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/mcp/transport.ts"],"names":[],"mappings":"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","file":"transport.mjs","sourcesContent":["/**\n * @sonordev/site-kit/mcp/transport — the rate-limited public MCP relay\n *\n * Netlify rate-limits a native function (declarative `config.rateLimit`), never\n * a Next.js route handler. So a public MCP endpoint on Netlify takes this path:\n *\n * agent ─► /api/mcp netlify/functions/mcp.mjs, rate-limited\n * │ createNetlifyMcpRelay: signs the request\n * │ (HMAC-SHA256 of MCP_TRANSPORT_SECRET over a label)\n * ▼\n * https://<deploy-id>--<site>.netlify.app/api/mcp-internal\n * │ createMcpInternalRoute: 403 unless signed,\n * ▼ then dispatches to the /api/mcp handlers\n * app/api/mcp/route.ts protectMcpHandlers(createMcpHandler(...))\n *\n * In production the function owns /api/mcp, and the Next route behind it\n * refuses unsigned calls too, so no request reaches a tool without passing\n * the rate limit. The relay targets the deploy permalink, so a request is\n * answered by the same immutable deploy that received it, and the base URL\n * comes from the platform (`context`), never from a client header.\n *\n * Single source of truth for the relay. It replaced per-site copies in\n * upforge-nextjs and wirsch-law-nextjs (`lib/mcp/transport-auth.ts`, the\n * `protect()` wrapper, the `/api/mcp-internal` relay and the function body);\n * don't fork it back into a site.\n *\n * Node only (`crypto`), and deliberately not re-exported from the\n * `@sonordev/site-kit/mcp` barrel so that barrel stays runtime-neutral.\n * Nothing here imports `server-only`: the Netlify function runs in plain Node,\n * where `server-only` throws on import.\n *\n * Setup: `MCP_TRANSPORT_SECRET` (`openssl rand -hex 32`) in every deploy\n * context, Functions scope. See the module README for the three files.\n */\n\nimport { createHmac, timingSafeEqual } from 'crypto'\nimport { readCappedBody } from '../shared/request-guards'\n\n// ============================================\n// Constants\n// ============================================\n\n/** Env var holding the relay's HMAC key. */\nexport const MCP_TRANSPORT_SECRET_ENV = 'MCP_TRANSPORT_SECRET'\n\n/** Default request header carrying the signature (and the response marker). */\nexport const DEFAULT_MCP_TRANSPORT_HEADER = 'x-site-mcp-transport'\n\n/** Default HMAC message. Changing it invalidates every signature at once. */\nexport const DEFAULT_MCP_TRANSPORT_LABEL = 'site-mcp-transport-v1'\n\n/** Path of the signed Next route the function relays to. */\nexport const MCP_INTERNAL_PATH = '/api/mcp-internal'\n\n/** Value of the marker header on every relayed response. Release checks assert it. */\nexport const MCP_RELAY_MARKER = 'netlify-rate-limited-v1'\n\n/** Largest POST body the relay forwards (tool arguments), in bytes. */\nexport const MCP_RELAY_MAX_BODY_BYTES = 64 * 1024\n\n/** Upstream timeout. Under Netlify's 60 s synchronous function limit, so the 502 is ours. */\nexport const MCP_RELAY_TIMEOUT_MS = 55_000\n\n/** Methods the MCP wire uses. Anything else gets a 405. */\nexport const MCP_RELAY_METHODS = ['GET', 'POST', 'OPTIONS', 'DELETE'] as const\n\n// ============================================\n// Types\n// ============================================\n\nexport interface McpTransportOptions {\n /**\n * Request header that carries the signature. The relay also stamps it on\n * responses with {@link MCP_RELAY_MARKER}. Must match between the function\n * and the Next routes. Default {@link DEFAULT_MCP_TRANSPORT_HEADER}.\n */\n header?: string\n /**\n * HMAC message. Must match between the function and the Next routes.\n * Default {@link DEFAULT_MCP_TRANSPORT_LABEL}.\n */\n label?: string\n /**\n * The HMAC key, or a getter for it. Default: `MCP_TRANSPORT_SECRET`, read on\n * every request (`Netlify.env` when present, else `process.env`).\n */\n secret?: string | (() => string | undefined)\n}\n\nexport type McpRouteHandler = (request: Request) => Response | Promise<Response>\n\n/** The four method handlers an MCP route exports (what `createMcpHandler` returns). */\nexport interface McpRouteHandlerSet {\n GET: McpRouteHandler\n POST: McpRouteHandler\n DELETE: McpRouteHandler\n OPTIONS: McpRouteHandler\n}\n\nexport interface ProtectMcpHandlersOptions extends McpTransportOptions {\n /**\n * Refuse unsigned requests. Default: `NODE_ENV === 'production'`, read per\n * request, so `next dev` still answers a local MCP client directly.\n */\n enforce?: boolean | (() => boolean)\n}\n\nexport interface NetlifyMcpRelayOptions extends McpTransportOptions {\n /** The signed Next route, on the same deploy. Default {@link MCP_INTERNAL_PATH}. */\n internalPath?: string\n /** Error text for the 502 when the upstream fails or times out. */\n timeoutMessage?: string\n}\n\n/** The parts of Netlify's function `context` the relay reads. */\nexport interface NetlifyRelayContext {\n deploy?: { id?: string }\n site?: { name?: string; url?: string }\n}\n\ninterface ResolvedTransport {\n header: string\n label: string\n secret: McpTransportOptions['secret']\n}\n\n// ============================================\n// Signing\n// ============================================\n\nfunction resolveTransport(options: McpTransportOptions = {}): ResolvedTransport {\n const header = (options.header ?? DEFAULT_MCP_TRANSPORT_HEADER).toLowerCase()\n const label = options.label ?? DEFAULT_MCP_TRANSPORT_LABEL\n if (!/^[a-z0-9-]+$/.test(header)) {\n throw new TypeError(`@sonordev/site-kit/mcp/transport: invalid header name ${JSON.stringify(options.header)}`)\n }\n if (!label) throw new TypeError('@sonordev/site-kit/mcp/transport: label must not be empty')\n return { header, label, secret: options.secret }\n}\n\nfunction readSecret(secret: McpTransportOptions['secret']): string | undefined {\n if (typeof secret === 'function') return secret()\n if (secret !== undefined) return secret\n const netlify = (globalThis as { Netlify?: { env?: { get(name: string): string | undefined } } }).Netlify\n return netlify?.env?.get(MCP_TRANSPORT_SECRET_ENV) || process.env[MCP_TRANSPORT_SECRET_ENV]\n}\n\n/** The signature a relayed request carries: hex HMAC-SHA256 of `label` under `secret`. */\nexport function signMcpTransport(secret: string, label: string = DEFAULT_MCP_TRANSPORT_LABEL): string {\n return createHmac('sha256', secret).update(label).digest('hex')\n}\n\nfunction verify(request: Request, transport: ResolvedTransport): boolean {\n const key = readSecret(transport.secret)\n const supplied = request.headers.get(transport.header) || ''\n if (!key || !/^[a-f0-9]{64}$/.test(supplied)) return false\n const expected = createHmac('sha256', key).update(transport.label).digest()\n return timingSafeEqual(expected, Buffer.from(supplied, 'hex'))\n}\n\n/**\n * True when the request came through the rate-limited relay: its transport\n * header holds the HMAC of `label` under `MCP_TRANSPORT_SECRET`, compared in\n * constant time. False when the secret is unset.\n */\nexport function hasMcpTransportAuthorization(request: Request, options: McpTransportOptions = {}): boolean {\n return verify(request, resolveTransport(options))\n}\n\n// ============================================\n// Next.js routes\n// ============================================\n\nfunction isEnforced(enforce: ProtectMcpHandlersOptions['enforce']): boolean {\n if (typeof enforce === 'function') return enforce()\n if (enforce !== undefined) return enforce\n return process.env.NODE_ENV === 'production'\n}\n\n/**\n * Wrap the `/api/mcp` handlers so, in production, they answer only relayed\n * (signed) requests. The public path is the function's; this closes the Next\n * handler behind it so nothing can skip the rate limit.\n *\n * @example\n * ```ts\n * // app/api/mcp/route.ts\n * export const { POST, GET, DELETE, OPTIONS } = protectMcpHandlers(\n * createMcpHandler({ server: mcpServer, baseUrl: SITE_URL, allowedOrigins: '*' }),\n * )\n * ```\n */\nexport function protectMcpHandlers(\n handlers: McpRouteHandlerSet,\n options: ProtectMcpHandlersOptions = {},\n): McpRouteHandlerSet {\n const transport = resolveTransport(options)\n const protect =\n (handler: McpRouteHandler): McpRouteHandler =>\n (request) => {\n if (isEnforced(options.enforce) && !verify(request, transport)) {\n return Response.json({ error: 'Use the public MCP endpoint' }, { status: 403 })\n }\n return handler(request)\n }\n return {\n GET: protect(handlers.GET),\n POST: protect(handlers.POST),\n DELETE: protect(handlers.DELETE),\n OPTIONS: protect(handlers.OPTIONS),\n }\n}\n\n/**\n * Handlers for `/api/mcp-internal`, the relay's target. 403 without a valid\n * signature in every environment, then dispatch by method to the `/api/mcp`\n * handlers.\n *\n * @example\n * ```ts\n * // app/api/mcp-internal/route.ts\n * import * as mcp from '../mcp/route'\n * export const { POST, GET, DELETE, OPTIONS } = createMcpInternalRoute(mcp)\n * ```\n */\nexport function createMcpInternalRoute(\n handlers: McpRouteHandlerSet,\n options: McpTransportOptions = {},\n): McpRouteHandlerSet {\n const transport = resolveTransport(options)\n const relay: McpRouteHandler = (request) => {\n if (!verify(request, transport)) return Response.json({ error: 'Forbidden' }, { status: 403 })\n switch (request.method) {\n case 'GET':\n return handlers.GET(request)\n case 'POST':\n return handlers.POST(request)\n case 'DELETE':\n return handlers.DELETE(request)\n case 'OPTIONS':\n return handlers.OPTIONS(request)\n default:\n return new Response(null, { status: 405 })\n }\n }\n return { GET: relay, POST: relay, DELETE: relay, OPTIONS: relay }\n}\n\n// ============================================\n// Netlify function\n// ============================================\n\n/**\n * The default export for `netlify/functions/mcp.mjs`. Signs the request and\n * relays it to {@link MCP_INTERNAL_PATH} on the same deploy.\n *\n * - 503 when `MCP_TRANSPORT_SECRET` is unset; 405 for methods MCP doesn't use.\n * - Strips `host` and `content-length`, overwrites any client-sent transport\n * header with the real signature.\n * - POST bodies over 64 KB get a 413 and are never forwarded.\n * - `redirect: 'error'` and a 55 s timeout; any upstream failure is a 502.\n * - Responses drop the encoding/length headers fetch already undid, and gain\n * `Cache-Control: no-store` plus the transport header set to\n * {@link MCP_RELAY_MARKER}.\n *\n * The function file must still declare its own literal `config`: Netlify\n * reads `path` and `rateLimit` statically from that file, so they can't come\n * from an import.\n *\n * @example\n * ```js\n * // netlify/functions/mcp.mjs\n * import { createNetlifyMcpRelay } from '@sonordev/site-kit/mcp/transport'\n *\n * export default createNetlifyMcpRelay()\n *\n * export const config = {\n * path: '/api/mcp',\n * rateLimit: { windowSize: 60, windowLimit: 60, aggregateBy: ['ip', 'domain'] },\n * }\n * ```\n */\nexport function createNetlifyMcpRelay(\n options: NetlifyMcpRelayOptions = {},\n): (request: Request, context: NetlifyRelayContext) => Promise<Response> {\n const transport = resolveTransport(options)\n const internalPath = options.internalPath ?? MCP_INTERNAL_PATH\n const timeoutMessage = options.timeoutMessage ?? 'MCP request timed out. Try again.'\n const unavailable = () => Response.json({ error: 'MCP is temporarily unavailable' }, { status: 503 })\n\n return async function relayMcp(request, context) {\n const key = readSecret(transport.secret)\n if (!key) return unavailable()\n if (!(MCP_RELAY_METHODS as readonly string[]).includes(request.method)) return new Response(null, { status: 405 })\n\n // context is platform-provided, never a client-controlled forwarding URL.\n // The deploy permalink keeps the relay on the deploy that took the call.\n const base =\n context?.deploy?.id && context.site?.name\n ? `https://${context.deploy.id}--${context.site.name}.netlify.app`\n : context?.site?.url\n if (!base) return unavailable()\n const target = new URL(internalPath, base)\n\n const headers = new Headers(request.headers)\n headers.delete('host')\n headers.delete('content-length')\n // set, not append: overwrite anything a client sent under this name.\n headers.set(transport.header, signMcpTransport(key, transport.label))\n\n let body: Uint8Array<ArrayBuffer> | undefined\n if (request.method === 'POST') {\n const bytes = await readCappedBody(request, MCP_RELAY_MAX_BODY_BYTES)\n if (!bytes) return Response.json({ error: 'Tool arguments are too large' }, { status: 413 })\n body = bytes\n }\n\n try {\n const response = await fetch(target, {\n method: request.method,\n headers,\n body,\n redirect: 'error',\n signal: AbortSignal.timeout(MCP_RELAY_TIMEOUT_MS),\n })\n const outgoing = new Headers(response.headers)\n // fetch decodes the upstream body; its compression/length headers no longer apply.\n for (const name of ['content-encoding', 'content-length', 'transfer-encoding']) outgoing.delete(name)\n outgoing.set('Cache-Control', 'no-store')\n outgoing.set(transport.header, MCP_RELAY_MARKER)\n return new Response(response.body, { status: response.status, headers: outgoing })\n } catch {\n return Response.json({ error: timeoutMessage }, { status: 502 })\n }\n }\n}\n"]}
@@ -2,9 +2,9 @@
2
2
  'use strict';
3
3
 
4
4
  var chunkCLO3K7PF_js = require('../chunk-CLO3K7PF.js');
5
- var chunkID4RGBQT_js = require('../chunk-ID4RGBQT.js');
6
- require('../chunk-BVSTYFFI.js');
7
- require('../chunk-LSB3CWSB.js');
5
+ var chunkC7J4XLBN_js = require('../chunk-C7J4XLBN.js');
6
+ require('../chunk-U5NFIHLY.js');
7
+ require('../chunk-CIB3RHNZ.js');
8
8
  require('../chunk-SNAQBZPT.js');
9
9
  var react = require('react');
10
10
  var jsxRuntime = require('react/jsx-runtime');
@@ -39,7 +39,7 @@ function useSiteSearch(options = {}) {
39
39
  const apiUrl = typeof window !== "undefined" ? window.__SITE_KIT_API_URL__ || "https://api.sonor.io" : "https://api.sonor.io";
40
40
  const apiKey = typeof window !== "undefined" ? window.__SITE_KIT_API_KEY__ : void 0;
41
41
  const resolvedSite = site ?? (typeof window !== "undefined" ? window.__SITE_KIT_SITE__ : void 0);
42
- const res = await chunkID4RGBQT_js.sonorFetch(
42
+ const res = await chunkC7J4XLBN_js.sonorFetch(
43
43
  `${apiUrl}${chunkCLO3K7PF_js.SEARCH_ENDPOINT}`,
44
44
  {
45
45
  method: "POST",
@@ -1,9 +1,9 @@
1
1
  'use client';
2
2
  import { SEARCH_ENDPOINT } from '../chunk-CFRJ2MK5.mjs';
3
3
  export { SEARCH_ENDPOINT } from '../chunk-CFRJ2MK5.mjs';
4
- import { sonorFetch } from '../chunk-HTCMZAXW.mjs';
5
- import '../chunk-QMVBKSTZ.mjs';
6
- import '../chunk-7JGD5TUI.mjs';
4
+ import { sonorFetch } from '../chunk-5T3J24K4.mjs';
5
+ import '../chunk-YRKWJCML.mjs';
6
+ import '../chunk-K3PVUXKB.mjs';
7
7
  import '../chunk-BEXTDHO4.mjs';
8
8
  import { useState, useRef, useCallback, useEffect } from 'react';
9
9
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -1,19 +1,19 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunkC4JCJ66V_js = require('../chunk-C4JCJ66V.js');
4
+ var chunkU4CYO4NG_js = require('../chunk-U4CYO4NG.js');
5
5
  require('../chunk-JONWE26J.js');
6
6
  require('../chunk-5RNAUYWE.js');
7
- require('../chunk-ID4RGBQT.js');
8
- require('../chunk-BVSTYFFI.js');
9
- require('../chunk-LSB3CWSB.js');
7
+ require('../chunk-C7J4XLBN.js');
8
+ require('../chunk-U5NFIHLY.js');
9
+ require('../chunk-CIB3RHNZ.js');
10
10
  require('../chunk-SNAQBZPT.js');
11
11
 
12
12
 
13
13
 
14
14
  Object.defineProperty(exports, "SitemapSync", {
15
15
  enumerable: true,
16
- get: function () { return chunkC4JCJ66V_js.SitemapSync; }
16
+ get: function () { return chunkU4CYO4NG_js.SitemapSync; }
17
17
  });
18
18
  //# sourceMappingURL=client.js.map
19
19
  //# sourceMappingURL=client.js.map
@@ -1,10 +1,10 @@
1
1
  'use client';
2
- export { SitemapSync } from '../chunk-RSAQ7WGF.mjs';
2
+ export { SitemapSync } from '../chunk-M62L2N5A.mjs';
3
3
  import '../chunk-C2CTLLIO.mjs';
4
4
  import '../chunk-A6UYV475.mjs';
5
- import '../chunk-HTCMZAXW.mjs';
6
- import '../chunk-QMVBKSTZ.mjs';
7
- import '../chunk-7JGD5TUI.mjs';
5
+ import '../chunk-5T3J24K4.mjs';
6
+ import '../chunk-YRKWJCML.mjs';
7
+ import '../chunk-K3PVUXKB.mjs';
8
8
  import '../chunk-BEXTDHO4.mjs';
9
9
  //# sourceMappingURL=client.mjs.map
10
10
  //# sourceMappingURL=client.mjs.map
package/dist/seo/index.js CHANGED
@@ -3,7 +3,7 @@
3
3
  var chunkDV2LJYFD_js = require('../chunk-DV2LJYFD.js');
4
4
  var chunkH6AU3WKF_js = require('../chunk-H6AU3WKF.js');
5
5
  var chunkJ7QI3GDX_js = require('../chunk-J7QI3GDX.js');
6
- var chunkC4JCJ66V_js = require('../chunk-C4JCJ66V.js');
6
+ var chunkU4CYO4NG_js = require('../chunk-U4CYO4NG.js');
7
7
  var chunkTST2IKYO_js = require('../chunk-TST2IKYO.js');
8
8
  var chunkOSU4QA5M_js = require('../chunk-OSU4QA5M.js');
9
9
  require('../chunk-CXAXZFFW.js');
@@ -14,9 +14,9 @@ require('../chunk-IBJOGXQI.js');
14
14
  require('../chunk-UZKXOZHR.js');
15
15
  require('../chunk-SWIKKSKL.js');
16
16
  require('../chunk-5RNAUYWE.js');
17
- require('../chunk-ID4RGBQT.js');
18
- require('../chunk-BVSTYFFI.js');
19
- require('../chunk-LSB3CWSB.js');
17
+ require('../chunk-C7J4XLBN.js');
18
+ require('../chunk-U5NFIHLY.js');
19
+ require('../chunk-CIB3RHNZ.js');
20
20
  require('../chunk-SNAQBZPT.js');
21
21
  var react = require('react');
22
22
  var jsxRuntime = require('react/jsx-runtime');
@@ -706,7 +706,7 @@ Object.defineProperty(exports, "ManagedScripts", {
706
706
  });
707
707
  Object.defineProperty(exports, "SitemapSync", {
708
708
  enumerable: true,
709
- get: function () { return chunkC4JCJ66V_js.SitemapSync; }
709
+ get: function () { return chunkU4CYO4NG_js.SitemapSync; }
710
710
  });
711
711
  Object.defineProperty(exports, "generateSitemap", {
712
712
  enumerable: true,
@@ -1,7 +1,7 @@
1
1
  export { ManagedNoScripts, ManagedScripts } from '../chunk-6PJTLBRR.mjs';
2
2
  import { pickManagedLlmSchemaForJsonLd } from '../chunk-PENNTSJE.mjs';
3
3
  import { safeJsonLd } from '../chunk-662YHKWW.mjs';
4
- export { SitemapSync } from '../chunk-RSAQ7WGF.mjs';
4
+ export { SitemapSync } from '../chunk-M62L2N5A.mjs';
5
5
  import { getManagedMetadata } from '../chunk-JSXLTZUP.mjs';
6
6
  export { generateSitemap, getABVariant, getManagedMetadata, getManagedMetadataWithAB, getRedirect, getRobotsDirective, isIndexable } from '../chunk-JSXLTZUP.mjs';
7
7
  import { getContentBlock, getSchemaMarkups, getSEOPageData, getEntityEnhancedSchema, getFAQData, getInternalLinks, getEntities, pruneSchemaTypes } from '../chunk-NE6QGHFT.mjs';
@@ -14,9 +14,9 @@ import '../chunk-YPGUV6BT.mjs';
14
14
  import '../chunk-KZVSB5WE.mjs';
15
15
  import '../chunk-ZN4HBK5C.mjs';
16
16
  import '../chunk-A6UYV475.mjs';
17
- import '../chunk-HTCMZAXW.mjs';
18
- import '../chunk-QMVBKSTZ.mjs';
19
- import '../chunk-7JGD5TUI.mjs';
17
+ import '../chunk-5T3J24K4.mjs';
18
+ import '../chunk-YRKWJCML.mjs';
19
+ import '../chunk-K3PVUXKB.mjs';
20
20
  import '../chunk-BEXTDHO4.mjs';
21
21
  import { cache, Suspense } from 'react';
22
22
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -447,7 +447,7 @@ async function registerLocalSitemap(options) {
447
447
  }
448
448
  if (options.writeLlms && result.success) {
449
449
  try {
450
- const { writeLLMsTxtToPublic } = await import('../writeLLMsTxt-XHLHJ5XY.js');
450
+ const { writeLLMsTxtToPublic } = await import('../writeLLMsTxt-SQG4B63X.js');
451
451
  const written = await writeLLMsTxtToPublic({
452
452
  // Resolved here too: the sync's own `site` is scoped to the branch that
453
453
  // posts, and this runs on the skip path as well.
@@ -440,7 +440,7 @@ async function registerLocalSitemap(options) {
440
440
  }
441
441
  if (options.writeLlms && result.success) {
442
442
  try {
443
- const { writeLLMsTxtToPublic } = await import('../writeLLMsTxt-LYYC3ZSN.mjs');
443
+ const { writeLLMsTxtToPublic } = await import('../writeLLMsTxt-IYJILIU3.mjs');
444
444
  const written = await writeLLMsTxtToPublic({
445
445
  // Resolved here too: the sync's own `site` is scoped to the branch that
446
446
  // posts, and this runs on the skip path as well.
@@ -1,16 +1,16 @@
1
1
  'use strict';
2
2
 
3
- var chunkLP6KJPAL_js = require('../chunk-LP6KJPAL.js');
3
+ var chunkKZBDH5A3_js = require('../chunk-KZBDH5A3.js');
4
4
  require('../chunk-LVGSOW2F.js');
5
5
  var chunkO5GHP7UO_js = require('../chunk-O5GHP7UO.js');
6
- require('../chunk-LSB3CWSB.js');
6
+ require('../chunk-CIB3RHNZ.js');
7
7
  require('../chunk-SNAQBZPT.js');
8
8
 
9
9
 
10
10
 
11
11
  Object.defineProperty(exports, "resolveClientCredential", {
12
12
  enumerable: true,
13
- get: function () { return chunkLP6KJPAL_js.resolveClientCredential; }
13
+ get: function () { return chunkKZBDH5A3_js.resolveClientCredential; }
14
14
  });
15
15
  Object.defineProperty(exports, "requireServerApiConfig", {
16
16
  enumerable: true,
@@ -1,7 +1,7 @@
1
- export { resolveClientCredential } from '../chunk-S2LJ26WQ.mjs';
1
+ export { resolveClientCredential } from '../chunk-ZEBOOUBP.mjs';
2
2
  import '../chunk-BQP6JIE2.mjs';
3
3
  export { requireServerApiConfig, resolveApiOrigin, resolveServerApiConfig, serverApiFetch } from '../chunk-6XNEGG5B.mjs';
4
- import '../chunk-7JGD5TUI.mjs';
4
+ import '../chunk-K3PVUXKB.mjs';
5
5
  import '../chunk-BEXTDHO4.mjs';
6
6
  //# sourceMappingURL=index.mjs.map
7
7
  //# sourceMappingURL=index.mjs.map
@@ -74,6 +74,13 @@ export declare const entry: {
74
74
  readonly 'mcp/index': 'src/mcp/index.ts';
75
75
  /** Client half — <WebMcpTools> in-page registration. Stamped 'use client'. */
76
76
  readonly 'mcp/client': 'src/mcp/client.ts';
77
+ /**
78
+ * Rate-limited public relay: the Netlify function body plus the signed Next
79
+ * routes behind it. Node only (`crypto`) and imported by a plain-Node
80
+ * Netlify function, so it stays out of the `mcp/index` barrel and never
81
+ * imports `server-only`.
82
+ */
83
+ readonly 'mcp/transport': 'src/mcp/transport.ts';
77
84
  readonly 'slots/index': 'src/slots/index.ts';
78
85
  /** Pure contract + HMAC signing — import from `@sonordev/site-kit/slots/contract` in sonor-api */
79
86
  readonly 'slots/contract': 'src/slots/contract.ts';
@@ -1 +1 @@
1
- {"version":3,"file":"build-entries.d.ts","sourceRoot":"","sources":["../../src/shared/build-entries.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"build-entries.d.ts","sourceRoot":"","sources":["../../src/shared/build-entries.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ /**
2
+ * @sonordev/site-kit shared - Request guards for secret-bearing route handlers
3
+ *
4
+ * Node only (`crypto`). Single source of truth for the two checks every
5
+ * webhook-style handler in the kit needs, so no module grows its own copy:
6
+ *
7
+ * - `secretsMatch`: constant-time secret comparison. Used by
8
+ * `createLlmsRevalidateHandler` and `createSeoRevalidationHandler`.
9
+ * - `readCappedBody`: read a request body without buffering past a cap. Used
10
+ * by `createSeoRevalidationHandler` (16 KB) and the MCP transport relay
11
+ * (64 KB).
12
+ */
13
+ /**
14
+ * Constant-time equality for a supplied secret against the expected one.
15
+ * An empty expected secret never matches, so a misconfigured site (no env
16
+ * var) refuses everything instead of accepting an empty token.
17
+ */
18
+ export declare function secretsMatch(supplied: string | null | undefined, expected: string | null | undefined): boolean;
19
+ /**
20
+ * Read a request body, giving up at the first chunk past `maxBytes`.
21
+ *
22
+ * Returns the bytes, or `null` when the body is larger than the cap (the
23
+ * stream is cancelled, so nothing past the cap is held in memory). A request
24
+ * with no body returns an empty array.
25
+ */
26
+ export declare function readCappedBody(request: Request, maxBytes: number): Promise<Uint8Array<ArrayBuffer> | null>;
27
+ //# sourceMappingURL=request-guards.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-guards.d.ts","sourceRoot":"","sources":["../../src/shared/request-guards.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAIH;;;;GAIG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,QAAQ,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,OAAO,CAK9G;AAED;;;;;;GAMG;AACH,wBAAsB,cAAc,CAAC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAsBhH"}
@@ -7,5 +7,5 @@
7
7
  * it matches package.json at publish time, and version.test.ts asserts it in
8
8
  * dev, so it can't silently drift.
9
9
  */
10
- export declare const SITE_KIT_VERSION = "6.3.5";
10
+ export declare const SITE_KIT_VERSION = "6.4.0";
11
11
  //# sourceMappingURL=version.d.ts.map
@@ -1,47 +1,47 @@
1
1
  'use client';
2
2
  'use strict';
3
3
 
4
- var chunkKRU755E3_js = require('../chunk-KRU755E3.js');
5
- var chunkRR6U3Z76_js = require('../chunk-RR6U3Z76.js');
4
+ var chunkXZHR4E2D_js = require('../chunk-XZHR4E2D.js');
5
+ var chunkVDEQVXNV_js = require('../chunk-VDEQVXNV.js');
6
6
  require('../chunk-SNAQBZPT.js');
7
7
 
8
8
 
9
9
 
10
10
  Object.defineProperty(exports, "ExperimentConversion", {
11
11
  enumerable: true,
12
- get: function () { return chunkKRU755E3_js.ExperimentConversion; }
12
+ get: function () { return chunkXZHR4E2D_js.ExperimentConversion; }
13
13
  });
14
14
  Object.defineProperty(exports, "SignalExperiment", {
15
15
  enumerable: true,
16
- get: function () { return chunkKRU755E3_js.SignalExperiment; }
16
+ get: function () { return chunkXZHR4E2D_js.SignalExperiment; }
17
17
  });
18
18
  Object.defineProperty(exports, "useExperimentVariant", {
19
19
  enumerable: true,
20
- get: function () { return chunkKRU755E3_js.useExperimentVariant; }
20
+ get: function () { return chunkXZHR4E2D_js.useExperimentVariant; }
21
21
  });
22
22
  Object.defineProperty(exports, "SignalBridge", {
23
23
  enumerable: true,
24
- get: function () { return chunkRR6U3Z76_js.SignalBridge; }
24
+ get: function () { return chunkVDEQVXNV_js.SignalBridge; }
25
25
  });
26
26
  Object.defineProperty(exports, "useSignal", {
27
27
  enumerable: true,
28
- get: function () { return chunkRR6U3Z76_js.useSignal; }
28
+ get: function () { return chunkVDEQVXNV_js.useSignal; }
29
29
  });
30
30
  Object.defineProperty(exports, "useSignalConfig", {
31
31
  enumerable: true,
32
- get: function () { return chunkRR6U3Z76_js.useSignalConfig; }
32
+ get: function () { return chunkVDEQVXNV_js.useSignalConfig; }
33
33
  });
34
34
  Object.defineProperty(exports, "useSignalEvent", {
35
35
  enumerable: true,
36
- get: function () { return chunkRR6U3Z76_js.useSignalEvent; }
36
+ get: function () { return chunkVDEQVXNV_js.useSignalEvent; }
37
37
  });
38
38
  Object.defineProperty(exports, "useSignalExperiment", {
39
39
  enumerable: true,
40
- get: function () { return chunkRR6U3Z76_js.useSignalExperiment; }
40
+ get: function () { return chunkVDEQVXNV_js.useSignalExperiment; }
41
41
  });
42
42
  Object.defineProperty(exports, "useSignalOutcome", {
43
43
  enumerable: true,
44
- get: function () { return chunkRR6U3Z76_js.useSignalOutcome; }
44
+ get: function () { return chunkVDEQVXNV_js.useSignalOutcome; }
45
45
  });
46
46
  //# sourceMappingURL=index.js.map
47
47
  //# sourceMappingURL=index.js.map
@@ -1,6 +1,6 @@
1
1
  'use client';
2
- export { ExperimentConversion, SignalExperiment, useExperimentVariant } from '../chunk-CPRCBO6Y.mjs';
3
- export { SignalBridge, useSignal, useSignalConfig, useSignalEvent, useSignalExperiment, useSignalOutcome } from '../chunk-ZPITTAT5.mjs';
2
+ export { ExperimentConversion, SignalExperiment, useExperimentVariant } from '../chunk-TPDDSEL3.mjs';
3
+ export { SignalBridge, useSignal, useSignalConfig, useSignalEvent, useSignalExperiment, useSignalOutcome } from '../chunk-GSU6VTCZ.mjs';
4
4
  import '../chunk-BEXTDHO4.mjs';
5
5
  //# sourceMappingURL=index.mjs.map
6
6
  //# sourceMappingURL=index.mjs.map
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkG3L26XQ7_js = require('../chunk-G3L26XQ7.js');
3
+ var chunkOIPG3EGM_js = require('../chunk-OIPG3EGM.js');
4
4
  require('../chunk-KR7ATPAN.js');
5
- require('../chunk-ZR43XFUM.js');
5
+ require('../chunk-55J2KE7D.js');
6
6
  var chunkJP5WGL75_js = require('../chunk-JP5WGL75.js');
7
7
  var chunkLVGSOW2F_js = require('../chunk-LVGSOW2F.js');
8
8
  require('../chunk-H6AU3WKF.js');
@@ -504,7 +504,7 @@ function createSitemap(config) {
504
504
  try {
505
505
  let llmsTimer;
506
506
  const writeResult = await Promise.race([
507
- chunkG3L26XQ7_js.writeLLMsTxtToPublic({
507
+ chunkOIPG3EGM_js.writeLLMsTxtToPublic({
508
508
  apiUrl,
509
509
  apiKey,
510
510
  site: siteHost || void 0,
@@ -1,6 +1,6 @@
1
- import { writeLLMsTxtToPublic } from '../chunk-BJ4T65OK.mjs';
1
+ import { writeLLMsTxtToPublic } from '../chunk-H4TSADY3.mjs';
2
2
  import '../chunk-5YVQWLSQ.mjs';
3
- import '../chunk-6DCAMW62.mjs';
3
+ import '../chunk-6C47333H.mjs';
4
4
  import { getSiteConfig } from '../chunk-B22WSN4L.mjs';
5
5
  import { buildFetch } from '../chunk-BQP6JIE2.mjs';
6
6
  import '../chunk-PENNTSJE.mjs';
@@ -1,64 +1,64 @@
1
1
  'use strict';
2
2
 
3
- var chunkPHE5MIW4_js = require('../chunk-PHE5MIW4.js');
4
- require('../chunk-ID4RGBQT.js');
5
- require('../chunk-BVSTYFFI.js');
6
- require('../chunk-LSB3CWSB.js');
3
+ var chunkS5QKNXLQ_js = require('../chunk-S5QKNXLQ.js');
4
+ require('../chunk-C7J4XLBN.js');
5
+ require('../chunk-U5NFIHLY.js');
6
+ require('../chunk-CIB3RHNZ.js');
7
7
  require('../chunk-SNAQBZPT.js');
8
8
 
9
9
 
10
10
 
11
11
  Object.defineProperty(exports, "BookingWidget", {
12
12
  enumerable: true,
13
- get: function () { return chunkPHE5MIW4_js.BookingWidget; }
13
+ get: function () { return chunkS5QKNXLQ_js.BookingWidget; }
14
14
  });
15
15
  Object.defineProperty(exports, "createBooking", {
16
16
  enumerable: true,
17
- get: function () { return chunkPHE5MIW4_js.createBooking; }
17
+ get: function () { return chunkS5QKNXLQ_js.createBooking; }
18
18
  });
19
19
  Object.defineProperty(exports, "createSlotHold", {
20
20
  enumerable: true,
21
- get: function () { return chunkPHE5MIW4_js.createSlotHold; }
21
+ get: function () { return chunkS5QKNXLQ_js.createSlotHold; }
22
22
  });
23
23
  Object.defineProperty(exports, "detectTimezone", {
24
24
  enumerable: true,
25
- get: function () { return chunkPHE5MIW4_js.detectTimezone; }
25
+ get: function () { return chunkS5QKNXLQ_js.detectTimezone; }
26
26
  });
27
27
  Object.defineProperty(exports, "fetchAvailability", {
28
28
  enumerable: true,
29
- get: function () { return chunkPHE5MIW4_js.fetchAvailability; }
29
+ get: function () { return chunkS5QKNXLQ_js.fetchAvailability; }
30
30
  });
31
31
  Object.defineProperty(exports, "fetchAvailableDates", {
32
32
  enumerable: true,
33
- get: function () { return chunkPHE5MIW4_js.fetchAvailableDates; }
33
+ get: function () { return chunkS5QKNXLQ_js.fetchAvailableDates; }
34
34
  });
35
35
  Object.defineProperty(exports, "fetchBookingTypeDetails", {
36
36
  enumerable: true,
37
- get: function () { return chunkPHE5MIW4_js.fetchBookingTypeDetails; }
37
+ get: function () { return chunkS5QKNXLQ_js.fetchBookingTypeDetails; }
38
38
  });
39
39
  Object.defineProperty(exports, "fetchBookingTypes", {
40
40
  enumerable: true,
41
- get: function () { return chunkPHE5MIW4_js.fetchBookingTypes; }
41
+ get: function () { return chunkS5QKNXLQ_js.fetchBookingTypes; }
42
42
  });
43
43
  Object.defineProperty(exports, "formatDate", {
44
44
  enumerable: true,
45
- get: function () { return chunkPHE5MIW4_js.formatDate; }
45
+ get: function () { return chunkS5QKNXLQ_js.formatDate; }
46
46
  });
47
47
  Object.defineProperty(exports, "formatDuration", {
48
48
  enumerable: true,
49
- get: function () { return chunkPHE5MIW4_js.formatDuration; }
49
+ get: function () { return chunkS5QKNXLQ_js.formatDuration; }
50
50
  });
51
51
  Object.defineProperty(exports, "formatTime", {
52
52
  enumerable: true,
53
- get: function () { return chunkPHE5MIW4_js.formatTime; }
53
+ get: function () { return chunkS5QKNXLQ_js.formatTime; }
54
54
  });
55
55
  Object.defineProperty(exports, "prepareMeeting", {
56
56
  enumerable: true,
57
- get: function () { return chunkPHE5MIW4_js.prepareMeeting; }
57
+ get: function () { return chunkS5QKNXLQ_js.prepareMeeting; }
58
58
  });
59
59
  Object.defineProperty(exports, "releaseSlotHold", {
60
60
  enumerable: true,
61
- get: function () { return chunkPHE5MIW4_js.releaseSlotHold; }
61
+ get: function () { return chunkS5QKNXLQ_js.releaseSlotHold; }
62
62
  });
63
63
  //# sourceMappingURL=index.js.map
64
64
  //# sourceMappingURL=index.js.map
@@ -1,7 +1,7 @@
1
- export { BookingWidget, createBooking, createSlotHold, detectTimezone, fetchAvailability, fetchAvailableDates, fetchBookingTypeDetails, fetchBookingTypes, formatDate, formatDuration, formatTime, prepareMeeting, releaseSlotHold } from '../chunk-2OA274JZ.mjs';
2
- import '../chunk-HTCMZAXW.mjs';
3
- import '../chunk-QMVBKSTZ.mjs';
4
- import '../chunk-7JGD5TUI.mjs';
1
+ export { BookingWidget, createBooking, createSlotHold, detectTimezone, fetchAvailability, fetchAvailableDates, fetchBookingTypeDetails, fetchBookingTypes, formatDate, formatDuration, formatTime, prepareMeeting, releaseSlotHold } from '../chunk-6QPKC6XP.mjs';
2
+ import '../chunk-5T3J24K4.mjs';
3
+ import '../chunk-YRKWJCML.mjs';
4
+ import '../chunk-K3PVUXKB.mjs';
5
5
  import '../chunk-BEXTDHO4.mjs';
6
6
  //# sourceMappingURL=index.mjs.map
7
7
  //# sourceMappingURL=index.mjs.map
@@ -1,6 +1,6 @@
1
- export { writeLLMsTxtToPublic } from './chunk-BJ4T65OK.mjs';
1
+ export { writeLLMsTxtToPublic } from './chunk-H4TSADY3.mjs';
2
2
  import './chunk-5YVQWLSQ.mjs';
3
- import './chunk-6DCAMW62.mjs';
3
+ import './chunk-6C47333H.mjs';
4
4
  import './chunk-BQP6JIE2.mjs';
5
5
  import './chunk-PENNTSJE.mjs';
6
6
  import './chunk-AS2HUIDW.mjs';
@@ -8,4 +8,4 @@ import './chunk-C2CTLLIO.mjs';
8
8
  import './chunk-KZVSB5WE.mjs';
9
9
  import './chunk-ZN4HBK5C.mjs';
10
10
  import './chunk-BEXTDHO4.mjs';
11
- //# sourceMappingURL=writeLLMsTxt-LYYC3ZSN.mjs.map
11
+ //# sourceMappingURL=writeLLMsTxt-IYJILIU3.mjs.map
@@ -1,8 +1,8 @@
1
1
  'use strict';
2
2
 
3
- var chunkG3L26XQ7_js = require('./chunk-G3L26XQ7.js');
3
+ var chunkOIPG3EGM_js = require('./chunk-OIPG3EGM.js');
4
4
  require('./chunk-KR7ATPAN.js');
5
- require('./chunk-ZR43XFUM.js');
5
+ require('./chunk-55J2KE7D.js');
6
6
  require('./chunk-LVGSOW2F.js');
7
7
  require('./chunk-H6AU3WKF.js');
8
8
  require('./chunk-BBBJHYPH.js');
@@ -15,6 +15,6 @@ require('./chunk-SNAQBZPT.js');
15
15
 
16
16
  Object.defineProperty(exports, "writeLLMsTxtToPublic", {
17
17
  enumerable: true,
18
- get: function () { return chunkG3L26XQ7_js.writeLLMsTxtToPublic; }
18
+ get: function () { return chunkOIPG3EGM_js.writeLLMsTxtToPublic; }
19
19
  });
20
- //# sourceMappingURL=writeLLMsTxt-XHLHJ5XY.js.map
20
+ //# sourceMappingURL=writeLLMsTxt-SQG4B63X.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sonordev/site-kit",
3
- "version": "6.3.5",
3
+ "version": "6.4.0",
4
4
  "packageManager": "pnpm@11.5.3",
5
5
  "description": "Complete client-side integration kit for Sonor - SEO, Analytics, Engage, Forms, Blog",
6
6
  "license": "MIT",
@@ -170,6 +170,11 @@
170
170
  "import": "./dist/mcp/client.mjs",
171
171
  "require": "./dist/mcp/client.js"
172
172
  },
173
+ "./mcp/transport": {
174
+ "types": "./dist/mcp/transport.d.ts",
175
+ "import": "./dist/mcp/transport.mjs",
176
+ "require": "./dist/mcp/transport.js"
177
+ },
173
178
  "./admin-auth": {
174
179
  "types": "./dist/admin-auth/index.d.ts",
175
180
  "import": "./dist/admin-auth/index.mjs",
@@ -1,12 +0,0 @@
1
- export { EngageWidget } from './chunk-I5X7BX6I.mjs';
2
- import './chunk-4U5NCKQY.mjs';
3
- import './chunk-NSWO43XW.mjs';
4
- import './chunk-ZZQAGCSI.mjs';
5
- import './chunk-6EDVCUAG.mjs';
6
- import './chunk-A6UYV475.mjs';
7
- import './chunk-HTCMZAXW.mjs';
8
- import './chunk-QMVBKSTZ.mjs';
9
- import './chunk-7JGD5TUI.mjs';
10
- import './chunk-BEXTDHO4.mjs';
11
- //# sourceMappingURL=EngageWidget-4WB74GQR.mjs.map
12
- //# sourceMappingURL=EngageWidget-4WB74GQR.mjs.map
@@ -1,21 +0,0 @@
1
- 'use strict';
2
-
3
- var chunkQAYB7NCH_js = require('./chunk-QAYB7NCH.js');
4
- require('./chunk-ESP5RMB7.js');
5
- require('./chunk-G6WF4G3E.js');
6
- require('./chunk-RC4WWQXR.js');
7
- require('./chunk-VJMPIRSD.js');
8
- require('./chunk-5RNAUYWE.js');
9
- require('./chunk-ID4RGBQT.js');
10
- require('./chunk-BVSTYFFI.js');
11
- require('./chunk-LSB3CWSB.js');
12
- require('./chunk-SNAQBZPT.js');
13
-
14
-
15
-
16
- Object.defineProperty(exports, "EngageWidget", {
17
- enumerable: true,
18
- get: function () { return chunkQAYB7NCH_js.EngageWidget; }
19
- });
20
- //# sourceMappingURL=EngageWidget-YONW3W3Z.js.map
21
- //# sourceMappingURL=EngageWidget-YONW3W3Z.js.map
@@ -1,16 +0,0 @@
1
- export { ManagedForm } from './chunk-H6F7T5Z6.mjs';
2
- import './chunk-L2KN3GYW.mjs';
3
- import './chunk-FCAHV5P3.mjs';
4
- import './chunk-WRRVYPMY.mjs';
5
- import './chunk-DJAJB6AZ.mjs';
6
- import './chunk-QRHVMTHF.mjs';
7
- import './chunk-AGIMH67E.mjs';
8
- import './chunk-TMVKRQGJ.mjs';
9
- import './chunk-5SANRSX3.mjs';
10
- import './chunk-6EDVCUAG.mjs';
11
- import './chunk-HTCMZAXW.mjs';
12
- import './chunk-QMVBKSTZ.mjs';
13
- import './chunk-7JGD5TUI.mjs';
14
- import './chunk-BEXTDHO4.mjs';
15
- //# sourceMappingURL=ManagedForm-KKJOIEFW.mjs.map
16
- //# sourceMappingURL=ManagedForm-KKJOIEFW.mjs.map