@sonordev/site-kit 5.7.0 → 5.8.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (752) hide show
  1. package/README.md +3 -3
  2. package/agent-manifest.json +14 -2
  3. package/dist/AnalyticsProvider-ERNSZ4DH.mjs +12 -0
  4. package/dist/{AnalyticsProvider-EWF7JN2X.mjs.map → AnalyticsProvider-ERNSZ4DH.mjs.map} +1 -1
  5. package/dist/AnalyticsProvider-HE6V5UJD.js +33 -0
  6. package/dist/{AnalyticsProvider-GJFG7YXA.js.map → AnalyticsProvider-HE6V5UJD.js.map} +1 -1
  7. package/dist/{BlogViewTracker-CKYG6MYU.mjs → BlogViewTracker-2NQ5LBVR.mjs} +13 -10
  8. package/dist/BlogViewTracker-2NQ5LBVR.mjs.map +1 -0
  9. package/dist/{BlogViewTracker-2D3IJPJK.js → BlogViewTracker-4OGWSC2Q.js} +14 -11
  10. package/dist/BlogViewTracker-4OGWSC2Q.js.map +1 -0
  11. package/dist/ChatWidget-67CHHONZ.js +24 -0
  12. package/dist/{ChatWidget-AWP6GBVW.js.map → ChatWidget-67CHHONZ.js.map} +1 -1
  13. package/dist/ChatWidget-T4RICLLT.mjs +15 -0
  14. package/dist/{ChatWidget-Z5QXDZP3.mjs.map → ChatWidget-T4RICLLT.mjs.map} +1 -1
  15. package/dist/EngageWidget-TDW2ZI3Q.js +21 -0
  16. package/dist/{EngageWidget-VT4DYXVO.js.map → EngageWidget-TDW2ZI3Q.js.map} +1 -1
  17. package/dist/EngageWidget-WXEQTV4X.mjs +12 -0
  18. package/dist/{EngageWidget-BKEY5TPO.mjs.map → EngageWidget-WXEQTV4X.mjs.map} +1 -1
  19. package/dist/{FileField-62ZWZMQK.js → FileField-DEVOXJSO.js} +6 -6
  20. package/dist/{FileField-62ZWZMQK.js.map → FileField-DEVOXJSO.js.map} +1 -1
  21. package/dist/{FileField-JJN5QKDL.mjs → FileField-Y5YM365S.mjs} +5 -5
  22. package/dist/{FileField-JJN5QKDL.mjs.map → FileField-Y5YM365S.mjs.map} +1 -1
  23. package/dist/{FormSpotlight-URS4XRS7.js → FormSpotlight-4Q5FM3YS.js} +25 -21
  24. package/dist/FormSpotlight-4Q5FM3YS.js.map +1 -0
  25. package/dist/{FormSpotlight-OTFB6QM5.mjs → FormSpotlight-T3ASGUYB.mjs} +11 -7
  26. package/dist/FormSpotlight-T3ASGUYB.mjs.map +1 -0
  27. package/dist/{FormStage-FVKMIV73.js → FormStage-PSAIPZBS.js} +20 -15
  28. package/dist/FormStage-PSAIPZBS.js.map +1 -0
  29. package/dist/{FormStage-VPGOCMAV.mjs → FormStage-U5V4MI5Q.mjs} +9 -4
  30. package/dist/FormStage-U5V4MI5Q.mjs.map +1 -0
  31. package/dist/ManagedForm-EAZOMNSL.mjs +16 -0
  32. package/dist/{ManagedForm-CXVDJMHN.mjs.map → ManagedForm-EAZOMNSL.mjs.map} +1 -1
  33. package/dist/ManagedForm-R6DJXU34.js +25 -0
  34. package/dist/{ManagedForm-FGNTDGED.js.map → ManagedForm-R6DJXU34.js.map} +1 -1
  35. package/dist/{ManagedNewsletterForm-SQYB4BZU.mjs → ManagedNewsletterForm-5RY3TWPQ.mjs} +9 -7
  36. package/dist/ManagedNewsletterForm-5RY3TWPQ.mjs.map +1 -0
  37. package/dist/{ManagedNewsletterForm-3O5L44AZ.js → ManagedNewsletterForm-VX6GMZXJ.js} +10 -8
  38. package/dist/ManagedNewsletterForm-VX6GMZXJ.js.map +1 -0
  39. package/dist/{SignalCore-RFBOBNLQ.js → SignalCore-MWHF2WG4.js} +14 -20
  40. package/dist/SignalCore-MWHF2WG4.js.map +1 -0
  41. package/dist/{SignalCore-M2PKKIGH.mjs → SignalCore-ZT6EQGV3.mjs} +8 -14
  42. package/dist/SignalCore-ZT6EQGV3.mjs.map +1 -0
  43. package/dist/SitemapSync-OG4TQLDB.mjs +9 -0
  44. package/dist/{SitemapSync-4OVMIIGC.mjs.map → SitemapSync-OG4TQLDB.mjs.map} +1 -1
  45. package/dist/SitemapSync-Z62BGZMV.js +18 -0
  46. package/dist/{SitemapSync-RK3SQ4M2.js.map → SitemapSync-Z62BGZMV.js.map} +1 -1
  47. package/dist/analytics/AnalyticsProvider.d.ts.map +1 -1
  48. package/dist/analytics/index.js +10 -9
  49. package/dist/analytics/index.mjs +5 -4
  50. package/dist/api-D745LGGU.mjs +0 -1
  51. package/dist/api-XR5APCH3.js +0 -1
  52. package/dist/blog/BlogLayout.d.ts +3 -1
  53. package/dist/blog/BlogLayout.d.ts.map +1 -1
  54. package/dist/blog/BlogList.d.ts +7 -1
  55. package/dist/blog/BlogList.d.ts.map +1 -1
  56. package/dist/blog/BlogPost.d.ts +20 -1
  57. package/dist/blog/BlogPost.d.ts.map +1 -1
  58. package/dist/blog/BlogSidebar.d.ts +3 -1
  59. package/dist/blog/BlogSidebar.d.ts.map +1 -1
  60. package/dist/blog/BlogViewTracker.d.ts +8 -2
  61. package/dist/blog/BlogViewTracker.d.ts.map +1 -1
  62. package/dist/blog/ClusterLandingPage.d.ts +3 -1
  63. package/dist/blog/ClusterLandingPage.d.ts.map +1 -1
  64. package/dist/blog/ClusterNavigation.d.ts +5 -2
  65. package/dist/blog/ClusterNavigation.d.ts.map +1 -1
  66. package/dist/blog/RelatedPosts.d.ts +3 -1
  67. package/dist/blog/RelatedPosts.d.ts.map +1 -1
  68. package/dist/blog/index.d.ts +1 -1
  69. package/dist/blog/index.d.ts.map +1 -1
  70. package/dist/blog/index.js +40 -31
  71. package/dist/blog/index.js.map +1 -1
  72. package/dist/blog/index.mjs +11 -6
  73. package/dist/blog/index.mjs.map +1 -1
  74. package/dist/blog/processBlogHtml.d.ts +19 -2
  75. package/dist/blog/processBlogHtml.d.ts.map +1 -1
  76. package/dist/blog/public-reads.d.ts +27 -0
  77. package/dist/blog/public-reads.d.ts.map +1 -0
  78. package/dist/blog/server-core.d.ts +76 -10
  79. package/dist/blog/server-core.d.ts.map +1 -1
  80. package/dist/blog/server-ui.js +29 -23
  81. package/dist/blog/server-ui.js.map +1 -1
  82. package/dist/blog/server-ui.mjs +12 -6
  83. package/dist/blog/server-ui.mjs.map +1 -1
  84. package/dist/blog/server.d.ts +76 -10
  85. package/dist/blog/server.d.ts.map +1 -1
  86. package/dist/blog/server.js +54 -47
  87. package/dist/blog/server.mjs +5 -2
  88. package/dist/brand/extract-brand-profile.d.ts +36 -2
  89. package/dist/brand/extract-brand-profile.d.ts.map +1 -1
  90. package/dist/{chunk-MW2M6O7A.mjs → chunk-26EKSVXM.mjs} +4 -4
  91. package/dist/{chunk-MW2M6O7A.mjs.map → chunk-26EKSVXM.mjs.map} +1 -1
  92. package/dist/{chunk-D553G64G.js → chunk-2HPQTRUB.js} +13 -13
  93. package/dist/{chunk-D553G64G.js.map → chunk-2HPQTRUB.js.map} +1 -1
  94. package/dist/{chunk-BFJOZ3MU.mjs → chunk-3EY5E35M.mjs} +36 -71
  95. package/dist/chunk-3EY5E35M.mjs.map +1 -0
  96. package/dist/{chunk-BUJWXSYZ.mjs → chunk-3TQUARVN.mjs} +4 -4
  97. package/dist/{chunk-BUJWXSYZ.mjs.map → chunk-3TQUARVN.mjs.map} +1 -1
  98. package/dist/{chunk-OYOO2OO5.js → chunk-3VRWKKTD.js} +10 -10
  99. package/dist/{chunk-OYOO2OO5.js.map → chunk-3VRWKKTD.js.map} +1 -1
  100. package/dist/{chunk-BFM5PEFV.js → chunk-43I7U5AI.js} +56 -177
  101. package/dist/chunk-43I7U5AI.js.map +1 -0
  102. package/dist/{chunk-ILNCUSXW.mjs → chunk-4L7OHRWB.mjs} +12 -9
  103. package/dist/chunk-4L7OHRWB.mjs.map +1 -0
  104. package/dist/chunk-4LYW6PMU.mjs +72 -0
  105. package/dist/chunk-4LYW6PMU.mjs.map +1 -0
  106. package/dist/chunk-4TLFZ6NR.mjs +16 -0
  107. package/dist/chunk-4TLFZ6NR.mjs.map +1 -0
  108. package/dist/{chunk-JQ7M6CVL.mjs → chunk-4VSDMNQU.mjs} +3 -3
  109. package/dist/{chunk-JQ7M6CVL.mjs.map → chunk-4VSDMNQU.mjs.map} +1 -1
  110. package/dist/{chunk-4B4S56WJ.mjs → chunk-5B4J3IBX.mjs} +75 -21
  111. package/dist/chunk-5B4J3IBX.mjs.map +1 -0
  112. package/dist/{chunk-M5GY2AI3.mjs → chunk-5K6B4LWV.mjs} +4 -10
  113. package/dist/chunk-5K6B4LWV.mjs.map +1 -0
  114. package/dist/chunk-5SANRSX3.mjs +17 -0
  115. package/dist/chunk-5SANRSX3.mjs.map +1 -0
  116. package/dist/chunk-5XFFUP6D.js +100 -0
  117. package/dist/chunk-5XFFUP6D.js.map +1 -0
  118. package/dist/chunk-5YA6SI4Z.mjs +0 -1
  119. package/dist/{chunk-TDJKGN5Q.mjs → chunk-62Y4W4LR.mjs} +216 -103
  120. package/dist/chunk-62Y4W4LR.mjs.map +1 -0
  121. package/dist/{chunk-3CLP35TT.mjs → chunk-6S3JE66D.mjs} +62 -97
  122. package/dist/chunk-6S3JE66D.mjs.map +1 -0
  123. package/dist/{chunk-4A5V73SR.mjs → chunk-6WEZWYRU.mjs} +9 -9
  124. package/dist/{chunk-4A5V73SR.mjs.map → chunk-6WEZWYRU.mjs.map} +1 -1
  125. package/dist/{chunk-JTF4DFUF.mjs → chunk-7AEVA667.mjs} +4 -4
  126. package/dist/{chunk-JTF4DFUF.mjs.map → chunk-7AEVA667.mjs.map} +1 -1
  127. package/dist/{chunk-H65OX263.js → chunk-7DV7Y7BZ.js} +15 -15
  128. package/dist/{chunk-H65OX263.js.map → chunk-7DV7Y7BZ.js.map} +1 -1
  129. package/dist/{chunk-7ZX6TO6C.mjs → chunk-7H4HB4UZ.mjs} +50 -26
  130. package/dist/chunk-7H4HB4UZ.mjs.map +1 -0
  131. package/dist/{chunk-FO4KGPGF.js → chunk-7TC3GRXQ.js} +73 -38
  132. package/dist/chunk-7TC3GRXQ.js.map +1 -0
  133. package/dist/{chunk-UQ5YULFU.mjs → chunk-AUHUEIBB.mjs} +4 -4
  134. package/dist/{chunk-UQ5YULFU.mjs.map → chunk-AUHUEIBB.mjs.map} +1 -1
  135. package/dist/{chunk-BQGEVMIR.mjs → chunk-AWF73RU2.mjs} +5 -5
  136. package/dist/{chunk-BQGEVMIR.mjs.map → chunk-AWF73RU2.mjs.map} +1 -1
  137. package/dist/{chunk-ELQ4SRRR.js → chunk-BHBW2SZF.js} +15 -15
  138. package/dist/{chunk-ELQ4SRRR.js.map → chunk-BHBW2SZF.js.map} +1 -1
  139. package/dist/{chunk-RNAGCAIB.js → chunk-BIGXEYKT.js} +7 -7
  140. package/dist/{chunk-RNAGCAIB.js.map → chunk-BIGXEYKT.js.map} +1 -1
  141. package/dist/chunk-BQP6JIE2.mjs +28 -0
  142. package/dist/chunk-BQP6JIE2.mjs.map +1 -0
  143. package/dist/{chunk-VFGEY6FJ.js → chunk-BY35X57A.js} +223 -110
  144. package/dist/chunk-BY35X57A.js.map +1 -0
  145. package/dist/{chunk-3YQILJKJ.js → chunk-CGCUHIAR.js} +60 -35
  146. package/dist/chunk-CGCUHIAR.js.map +1 -0
  147. package/dist/chunk-CUNZAD46.js +53 -0
  148. package/dist/chunk-CUNZAD46.js.map +1 -0
  149. package/dist/{chunk-FEWWGEQF.js → chunk-CWUYI6LI.js} +4 -4
  150. package/dist/{chunk-FEWWGEQF.js.map → chunk-CWUYI6LI.js.map} +1 -1
  151. package/dist/chunk-CXAXZFFW.js +157 -0
  152. package/dist/chunk-CXAXZFFW.js.map +1 -0
  153. package/dist/{chunk-H4OBGC43.mjs → chunk-DA7IANFG.mjs} +14 -3
  154. package/dist/chunk-DA7IANFG.mjs.map +1 -0
  155. package/dist/{chunk-57AFHENV.mjs → chunk-EHAUNF4V.mjs} +3 -3
  156. package/dist/{chunk-57AFHENV.mjs.map → chunk-EHAUNF4V.mjs.map} +1 -1
  157. package/dist/{chunk-2N27LCZH.js → chunk-FEKPEI2G.js} +9 -9
  158. package/dist/{chunk-2N27LCZH.js.map → chunk-FEKPEI2G.js.map} +1 -1
  159. package/dist/{chunk-LC7AM4J5.js → chunk-FHPW7XVH.js} +77 -20
  160. package/dist/chunk-FHPW7XVH.js.map +1 -0
  161. package/dist/{chunk-JNRHTZL4.js → chunk-FVW6FT6L.js} +73 -29
  162. package/dist/chunk-FVW6FT6L.js.map +1 -0
  163. package/dist/{chunk-YKUEFRZI.js → chunk-FWW4K6QP.js} +14 -14
  164. package/dist/{chunk-YKUEFRZI.js.map → chunk-FWW4K6QP.js.map} +1 -1
  165. package/dist/{chunk-JNAXDFC4.mjs → chunk-GF4LV5LX.mjs} +38 -156
  166. package/dist/chunk-GF4LV5LX.mjs.map +1 -0
  167. package/dist/{chunk-C563AHZZ.mjs → chunk-GKFTJ5AF.mjs} +3 -3
  168. package/dist/{chunk-C563AHZZ.mjs.map → chunk-GKFTJ5AF.mjs.map} +1 -1
  169. package/dist/{chunk-OZ3FU4BT.js → chunk-H5NBFNND.js} +2 -2
  170. package/dist/chunk-H5NBFNND.js.map +1 -0
  171. package/dist/chunk-HCN3IKMW.mjs +106 -0
  172. package/dist/chunk-HCN3IKMW.mjs.map +1 -0
  173. package/dist/{chunk-6FC5Q4KU.mjs → chunk-HOJ4J4X2.mjs} +30 -12
  174. package/dist/chunk-HOJ4J4X2.mjs.map +1 -0
  175. package/dist/{chunk-H6YVT3BL.js → chunk-I3ND4XYW.js} +12 -9
  176. package/dist/chunk-I3ND4XYW.js.map +1 -0
  177. package/dist/chunk-I7AZC5ZQ.js +0 -1
  178. package/dist/{chunk-V5THCFPG.mjs → chunk-JFJ7NHS3.mjs} +4 -4
  179. package/dist/{chunk-V5THCFPG.mjs.map → chunk-JFJ7NHS3.mjs.map} +1 -1
  180. package/dist/{chunk-KXGD4E7G.js → chunk-JI4EUPHB.js} +7 -7
  181. package/dist/{chunk-KXGD4E7G.js.map → chunk-JI4EUPHB.js.map} +1 -1
  182. package/dist/{chunk-GZJE23Y5.mjs → chunk-JLVCWC6A.mjs} +2 -2
  183. package/dist/chunk-JLVCWC6A.mjs.map +1 -0
  184. package/dist/chunk-JOYMIGR2.mjs +0 -1
  185. package/dist/chunk-JS75ORH7.js +0 -1
  186. package/dist/{chunk-Q7347KP6.mjs → chunk-JX5SM2MX.mjs} +6 -12
  187. package/dist/chunk-JX5SM2MX.mjs.map +1 -0
  188. package/dist/chunk-K4TCEAUX.js +52 -0
  189. package/dist/chunk-K4TCEAUX.js.map +1 -0
  190. package/dist/chunk-KV7XXLJV.mjs +30 -0
  191. package/dist/chunk-KV7XXLJV.mjs.map +1 -0
  192. package/dist/{chunk-JTCQJKJE.js → chunk-LIAISQUE.js} +76 -111
  193. package/dist/chunk-LIAISQUE.js.map +1 -0
  194. package/dist/{chunk-CPY74A4F.js → chunk-LMEUYRRR.js} +72 -106
  195. package/dist/chunk-LMEUYRRR.js.map +1 -0
  196. package/dist/{chunk-4WBTM6YE.js → chunk-LOEP76MQ.js} +4 -4
  197. package/dist/{chunk-4WBTM6YE.js.map → chunk-LOEP76MQ.js.map} +1 -1
  198. package/dist/chunk-LVGSOW2F.js +32 -0
  199. package/dist/chunk-LVGSOW2F.js.map +1 -0
  200. package/dist/{chunk-DOB37PV4.js → chunk-M45AL7EA.js} +37 -19
  201. package/dist/chunk-M45AL7EA.js.map +1 -0
  202. package/dist/{chunk-RCSTDJUH.js → chunk-M4UVFUFR.js} +8 -13
  203. package/dist/chunk-M4UVFUFR.js.map +1 -0
  204. package/dist/{chunk-R2SXXFXZ.mjs → chunk-MI2SRBCR.mjs} +3 -3
  205. package/dist/{chunk-R2SXXFXZ.mjs.map → chunk-MI2SRBCR.mjs.map} +1 -1
  206. package/dist/chunk-MLVHVKFT.mjs +148 -0
  207. package/dist/chunk-MLVHVKFT.mjs.map +1 -0
  208. package/dist/{chunk-L7ACQ6PC.js → chunk-MOAYT3KN.js} +4 -4
  209. package/dist/{chunk-L7ACQ6PC.js.map → chunk-MOAYT3KN.js.map} +1 -1
  210. package/dist/chunk-NG2TTI7D.js +8 -0
  211. package/dist/{chunk-5TXXTYXL.js.map → chunk-NG2TTI7D.js.map} +1 -1
  212. package/dist/{chunk-C4PZ2R3B.js → chunk-NLDN6PYM.js} +10 -10
  213. package/dist/{chunk-C4PZ2R3B.js.map → chunk-NLDN6PYM.js.map} +1 -1
  214. package/dist/chunk-NN2YE5WT.js +0 -1
  215. package/dist/chunk-NNZDWY3L.mjs +0 -1
  216. package/dist/chunk-NRBITVDK.js +114 -0
  217. package/dist/chunk-NRBITVDK.js.map +1 -0
  218. package/dist/{chunk-TSZIACRC.js → chunk-OBKYF4TP.js} +6 -12
  219. package/dist/chunk-OBKYF4TP.js.map +1 -0
  220. package/dist/{chunk-TP7H6BSK.mjs → chunk-OE7CTIOU.mjs} +73 -30
  221. package/dist/chunk-OE7CTIOU.mjs.map +1 -0
  222. package/dist/chunk-OESGRWI4.mjs +6 -0
  223. package/dist/{chunk-QRBPT6Z6.mjs.map → chunk-OESGRWI4.mjs.map} +1 -1
  224. package/dist/{chunk-UJ6CHZAI.mjs → chunk-OEW2LFOV.js} +169 -25
  225. package/dist/chunk-OEW2LFOV.js.map +1 -0
  226. package/dist/chunk-P4Y75QSU.js +19 -0
  227. package/dist/chunk-P4Y75QSU.js.map +1 -0
  228. package/dist/{chunk-47XQWV4S.mjs → chunk-PQVQAX67.mjs} +3 -3
  229. package/dist/{chunk-47XQWV4S.mjs.map → chunk-PQVQAX67.mjs.map} +1 -1
  230. package/dist/chunk-QRHVMTHF.mjs +94 -0
  231. package/dist/chunk-QRHVMTHF.mjs.map +1 -0
  232. package/dist/{chunk-FBDHKYNF.mjs → chunk-R4B3DFF4.mjs} +3 -3
  233. package/dist/{chunk-FBDHKYNF.mjs.map → chunk-R4B3DFF4.mjs.map} +1 -1
  234. package/dist/chunk-R7GHP3FY.js +81 -0
  235. package/dist/chunk-R7GHP3FY.js.map +1 -0
  236. package/dist/{chunk-4UVM7E2W.js → chunk-S5VL7AWW.js} +3 -3
  237. package/dist/{chunk-4UVM7E2W.js.map → chunk-S5VL7AWW.js.map} +1 -1
  238. package/dist/{chunk-P4TB4ROG.js → chunk-SEP5D4MI.js} +8 -2
  239. package/dist/chunk-SEP5D4MI.js.map +1 -0
  240. package/dist/{chunk-L4V6TKMJ.mjs → chunk-U2V542EO.mjs} +7 -3
  241. package/dist/chunk-U2V542EO.mjs.map +1 -0
  242. package/dist/{chunk-HBN4A2N4.mjs → chunk-U6H5ZY3B.mjs} +3 -3
  243. package/dist/{chunk-HBN4A2N4.mjs.map → chunk-U6H5ZY3B.mjs.map} +1 -1
  244. package/dist/{chunk-H7274TKR.mjs → chunk-VJV7WUR2.mjs} +12 -4
  245. package/dist/chunk-VJV7WUR2.mjs.map +1 -0
  246. package/dist/{chunk-F3AKYZOH.js → chunk-WED6ZDVS.js} +6 -13
  247. package/dist/chunk-WED6ZDVS.js.map +1 -0
  248. package/dist/{chunk-5B4FABFK.js → chunk-WS7MH3GD.js} +14 -2
  249. package/dist/chunk-WS7MH3GD.js.map +1 -0
  250. package/dist/{chunk-XLPU3TEE.mjs → chunk-X22BGNVL.mjs} +4 -4
  251. package/dist/{chunk-XLPU3TEE.mjs.map → chunk-X22BGNVL.mjs.map} +1 -1
  252. package/dist/{chunk-IPV2TUAT.js → chunk-XA2GJFVM.js} +12 -4
  253. package/dist/chunk-XA2GJFVM.js.map +1 -0
  254. package/dist/chunk-XBX2K3GA.js +33 -0
  255. package/dist/chunk-XBX2K3GA.js.map +1 -0
  256. package/dist/{chunk-ABZGEHTC.mjs → chunk-XSAHJ2BB.mjs} +3 -3
  257. package/dist/{chunk-ABZGEHTC.mjs.map → chunk-XSAHJ2BB.mjs.map} +1 -1
  258. package/dist/{chunk-6CJP7BFM.js → chunk-XZO5I4RS.mjs} +147 -20
  259. package/dist/chunk-XZO5I4RS.mjs.map +1 -0
  260. package/dist/chunk-Y5QZPUL3.mjs +47 -0
  261. package/dist/chunk-Y5QZPUL3.mjs.map +1 -0
  262. package/dist/{chunk-NOU3JQJK.js → chunk-Y6Z2W45H.js} +8 -8
  263. package/dist/{chunk-NOU3JQJK.js.map → chunk-Y6Z2W45H.js.map} +1 -1
  264. package/dist/{chunk-YYDZ2TYR.js → chunk-YCFYQN2Q.js} +3 -3
  265. package/dist/{chunk-YYDZ2TYR.js.map → chunk-YCFYQN2Q.js.map} +1 -1
  266. package/dist/chunk-YN7QHLWF.js +19 -0
  267. package/dist/chunk-YN7QHLWF.js.map +1 -0
  268. package/dist/{chunk-O2VJZOR2.mjs → chunk-YRNDASQY.mjs} +6 -11
  269. package/dist/chunk-YRNDASQY.mjs.map +1 -0
  270. package/dist/chunk-YU7QZ3PP.mjs +45 -0
  271. package/dist/chunk-YU7QZ3PP.mjs.map +1 -0
  272. package/dist/{chunk-3S5JN6KL.js → chunk-ZV6HIQRQ.js} +6 -6
  273. package/dist/{chunk-3S5JN6KL.js.map → chunk-ZV6HIQRQ.js.map} +1 -1
  274. package/dist/{chunk-RVRN5U7W.mjs → chunk-ZVI7MBVF.mjs} +73 -38
  275. package/dist/chunk-ZVI7MBVF.mjs.map +1 -0
  276. package/dist/cli/agent/checks.d.ts +15 -1
  277. package/dist/cli/agent/checks.d.ts.map +1 -1
  278. package/dist/cli/commands/doctor.d.ts.map +1 -1
  279. package/dist/cli/commands/og.d.ts +26 -8
  280. package/dist/cli/commands/og.d.ts.map +1 -1
  281. package/dist/cli/index.js +683 -323
  282. package/dist/cli/index.mjs +604 -244
  283. package/dist/client/index.js +6 -6
  284. package/dist/client/index.mjs +5 -5
  285. package/dist/commerce/CheckoutForm.d.ts.map +1 -1
  286. package/dist/commerce/ProductDetail.d.ts.map +1 -1
  287. package/dist/commerce/api.d.ts +14 -0
  288. package/dist/commerce/api.d.ts.map +1 -1
  289. package/dist/commerce/index.d.ts +1 -1
  290. package/dist/commerce/index.d.ts.map +1 -1
  291. package/dist/commerce/index.js +61 -56
  292. package/dist/commerce/index.mjs +6 -5
  293. package/dist/config/index.js +3 -3
  294. package/dist/config/index.mjs +1 -1
  295. package/dist/discover-CYXYKHZ2.mjs +4 -0
  296. package/dist/{discover-FGTKWOL3.mjs.map → discover-CYXYKHZ2.mjs.map} +1 -1
  297. package/dist/discover-NGEPXZOD.js +21 -0
  298. package/dist/{discover-NJZPWTDL.js.map → discover-NGEPXZOD.js.map} +1 -1
  299. package/dist/engage/index.js +12 -10
  300. package/dist/engage/index.js.map +1 -1
  301. package/dist/engage/index.mjs +9 -7
  302. package/dist/engage/index.mjs.map +1 -1
  303. package/dist/fleet/index.js +8 -8
  304. package/dist/fleet/index.mjs +4 -4
  305. package/dist/forms/FormClient.d.ts.map +1 -1
  306. package/dist/forms/FormField.d.ts +7 -1
  307. package/dist/forms/FormField.d.ts.map +1 -1
  308. package/dist/forms/FormSpotlight.d.ts +1 -1
  309. package/dist/forms/FormSpotlight.d.ts.map +1 -1
  310. package/dist/forms/FormStage.d.ts +1 -1
  311. package/dist/forms/FormStage.d.ts.map +1 -1
  312. package/dist/forms/experience-plan.d.ts +0 -1
  313. package/dist/forms/experience-plan.d.ts.map +1 -1
  314. package/dist/forms/field-interactions.d.ts +63 -0
  315. package/dist/forms/field-interactions.d.ts.map +1 -0
  316. package/dist/forms/field-rules.d.ts +41 -0
  317. package/dist/forms/field-rules.d.ts.map +1 -0
  318. package/dist/forms/index.js +25 -23
  319. package/dist/forms/index.js.map +1 -1
  320. package/dist/forms/index.mjs +13 -11
  321. package/dist/forms/index.mjs.map +1 -1
  322. package/dist/forms/server.js +11 -11
  323. package/dist/forms/server.mjs +9 -9
  324. package/dist/forms/static.js +8 -8
  325. package/dist/forms/static.mjs +7 -7
  326. package/dist/forms/tracking-session.d.ts +48 -3
  327. package/dist/forms/tracking-session.d.ts.map +1 -1
  328. package/dist/forms/types.d.ts +11 -0
  329. package/dist/forms/types.d.ts.map +1 -1
  330. package/dist/forms/useForm.d.ts +8 -0
  331. package/dist/forms/useForm.d.ts.map +1 -1
  332. package/dist/forms/useFormTracking.d.ts +29 -4
  333. package/dist/forms/useFormTracking.d.ts.map +1 -1
  334. package/dist/images/index.js +11 -11
  335. package/dist/images/index.mjs +4 -4
  336. package/dist/index.js +72 -68
  337. package/dist/index.js.map +1 -1
  338. package/dist/index.mjs +14 -10
  339. package/dist/index.mjs.map +1 -1
  340. package/dist/layout/client.js +10 -10
  341. package/dist/layout/client.mjs +9 -9
  342. package/dist/layout/index.js +13 -12
  343. package/dist/layout/index.js.map +1 -1
  344. package/dist/layout/index.mjs +11 -10
  345. package/dist/layout/index.mjs.map +1 -1
  346. package/dist/lib-6HOOMENJ.js +0 -1
  347. package/dist/lib-BGAWCSUH.js +0 -1
  348. package/dist/lib-R7IQ4ZHE.mjs +0 -1
  349. package/dist/lib-RSDMEKDQ.mjs +0 -1
  350. package/dist/llms/aiRobots.d.ts +20 -4
  351. package/dist/llms/aiRobots.d.ts.map +1 -1
  352. package/dist/llms/api.d.ts +8 -3
  353. package/dist/llms/api.d.ts.map +1 -1
  354. package/dist/llms/discovery-headers.d.ts +24 -0
  355. package/dist/llms/discovery-headers.d.ts.map +1 -1
  356. package/dist/llms/generateLLMsTxt.d.ts.map +1 -1
  357. package/dist/llms/index.d.ts +2 -2
  358. package/dist/llms/index.d.ts.map +1 -1
  359. package/dist/llms/index.js +45 -96
  360. package/dist/llms/index.js.map +1 -1
  361. package/dist/llms/index.mjs +11 -81
  362. package/dist/llms/index.mjs.map +1 -1
  363. package/dist/llms/links.d.ts +26 -0
  364. package/dist/llms/links.d.ts.map +1 -0
  365. package/dist/llms/types.d.ts +15 -0
  366. package/dist/llms/types.d.ts.map +1 -1
  367. package/dist/llms/wiring.d.ts +22 -0
  368. package/dist/llms/wiring.d.ts.map +1 -1
  369. package/dist/llms/writeLLMsTxt.d.ts +9 -0
  370. package/dist/llms/writeLLMsTxt.d.ts.map +1 -1
  371. package/dist/maps/index.js +5 -5
  372. package/dist/maps/index.mjs +3 -3
  373. package/dist/motion/gsap.d.ts +54 -0
  374. package/dist/motion/gsap.d.ts.map +1 -1
  375. package/dist/motion/gsap.js +34 -4
  376. package/dist/motion/gsap.js.map +1 -1
  377. package/dist/motion/gsap.mjs +33 -5
  378. package/dist/motion/gsap.mjs.map +1 -1
  379. package/dist/og/config.d.ts +6 -0
  380. package/dist/og/config.d.ts.map +1 -1
  381. package/dist/og/contrast.d.ts +33 -0
  382. package/dist/og/contrast.d.ts.map +1 -0
  383. package/dist/og/index.d.ts +2 -0
  384. package/dist/og/index.d.ts.map +1 -1
  385. package/dist/og/index.js +26 -8
  386. package/dist/og/index.mjs +3 -1
  387. package/dist/og/pages.d.ts +101 -0
  388. package/dist/og/pages.d.ts.map +1 -1
  389. package/dist/og/route-copy.d.ts +34 -0
  390. package/dist/og/route-copy.d.ts.map +1 -0
  391. package/dist/og/route-fit.d.ts +77 -0
  392. package/dist/og/route-fit.d.ts.map +1 -0
  393. package/dist/og/route.d.ts +80 -20
  394. package/dist/og/route.d.ts.map +1 -1
  395. package/dist/og/route.js +195 -25
  396. package/dist/og/route.js.map +1 -1
  397. package/dist/og/route.mjs +193 -26
  398. package/dist/og/route.mjs.map +1 -1
  399. package/dist/og/template.d.ts.map +1 -1
  400. package/dist/og/wiring.d.ts +43 -3
  401. package/dist/og/wiring.d.ts.map +1 -1
  402. package/dist/proxy/index.d.ts.map +1 -1
  403. package/dist/proxy/index.js +15 -10
  404. package/dist/proxy/index.js.map +1 -1
  405. package/dist/proxy/index.mjs +12 -7
  406. package/dist/proxy/index.mjs.map +1 -1
  407. package/dist/redirects/index.d.ts +24 -0
  408. package/dist/redirects/index.d.ts.map +1 -1
  409. package/dist/redirects/index.js +11 -8
  410. package/dist/redirects/index.mjs +4 -1
  411. package/dist/redirects/not-found.js +8 -5
  412. package/dist/redirects/not-found.js.map +1 -1
  413. package/dist/redirects/not-found.mjs +4 -1
  414. package/dist/redirects/not-found.mjs.map +1 -1
  415. package/dist/robots/index.d.ts +2 -0
  416. package/dist/robots/index.d.ts.map +1 -1
  417. package/dist/robots/index.js +23 -3
  418. package/dist/robots/index.js.map +1 -1
  419. package/dist/robots/index.mjs +2 -2
  420. package/dist/robots/index.mjs.map +1 -1
  421. package/dist/search/index.js +4 -4
  422. package/dist/search/index.mjs +3 -3
  423. package/dist/seo/ManagedContent.d.ts +4 -2
  424. package/dist/seo/ManagedContent.d.ts.map +1 -1
  425. package/dist/seo/ManagedFAQ.d.ts.map +1 -1
  426. package/dist/seo/ManagedInternalLinks.d.ts.map +1 -1
  427. package/dist/seo/ManagedSchema.d.ts.map +1 -1
  428. package/dist/seo/client.js +6 -6
  429. package/dist/seo/client.mjs +5 -5
  430. package/dist/seo/getManagedMetadata.d.ts.map +1 -1
  431. package/dist/seo/index.js +59 -49
  432. package/dist/seo/index.js.map +1 -1
  433. package/dist/seo/index.mjs +29 -19
  434. package/dist/seo/index.mjs.map +1 -1
  435. package/dist/seo/register-sitemap-cli-impl.d.ts +32 -0
  436. package/dist/seo/register-sitemap-cli-impl.d.ts.map +1 -1
  437. package/dist/seo/register-sitemap-cli.d.ts +7 -0
  438. package/dist/seo/register-sitemap-cli.d.ts.map +1 -1
  439. package/dist/seo/register-sitemap-cli.js +273 -57
  440. package/dist/seo/register-sitemap-cli.mjs +269 -53
  441. package/dist/seo/register-sitemap-request.d.ts +36 -0
  442. package/dist/seo/register-sitemap-request.d.ts.map +1 -0
  443. package/dist/seo/routing.d.ts +2 -0
  444. package/dist/seo/routing.d.ts.map +1 -1
  445. package/dist/seo/schema-filter.d.ts +43 -0
  446. package/dist/seo/schema-filter.d.ts.map +1 -0
  447. package/dist/seo/server-api.d.ts +15 -2
  448. package/dist/seo/server-api.d.ts.map +1 -1
  449. package/dist/seo/server.js +23 -18
  450. package/dist/seo/server.mjs +7 -2
  451. package/dist/seo/types.d.ts +30 -0
  452. package/dist/seo/types.d.ts.map +1 -1
  453. package/dist/seo-meta/contract.d.ts +60 -0
  454. package/dist/seo-meta/contract.d.ts.map +1 -0
  455. package/dist/seo-meta/contract.js +41 -0
  456. package/dist/seo-meta/contract.js.map +1 -0
  457. package/dist/seo-meta/contract.mjs +4 -0
  458. package/dist/seo-meta/contract.mjs.map +1 -0
  459. package/dist/server/index.js +4 -3
  460. package/dist/server/index.mjs +3 -2
  461. package/dist/server/mint-site-token.d.ts +2 -32
  462. package/dist/server/mint-site-token.d.ts.map +1 -1
  463. package/dist/{server-api-RG3ZL3DV.mjs → server-api-A2EFCTZX.mjs} +7 -3
  464. package/dist/{server-api-RG3ZL3DV.mjs.map → server-api-A2EFCTZX.mjs.map} +1 -1
  465. package/dist/{server-api-RYJQAUGO.js → server-api-IWTZ7C3O.js} +25 -21
  466. package/dist/{server-api-RYJQAUGO.js.map → server-api-IWTZ7C3O.js.map} +1 -1
  467. package/dist/shared/build-entries.d.ts +2 -0
  468. package/dist/shared/build-entries.d.ts.map +1 -1
  469. package/dist/shared/fresh-fetch.d.ts +64 -0
  470. package/dist/shared/fresh-fetch.d.ts.map +1 -0
  471. package/dist/shared/next-files.d.ts +7 -0
  472. package/dist/shared/next-files.d.ts.map +1 -1
  473. package/dist/shared/page-leave.d.ts +27 -0
  474. package/dist/shared/page-leave.d.ts.map +1 -0
  475. package/dist/shared/source-graph.d.ts +63 -0
  476. package/dist/shared/source-graph.d.ts.map +1 -0
  477. package/dist/shared/version.d.ts +1 -1
  478. package/dist/signal/SignalCore.d.ts.map +1 -1
  479. package/dist/signal/index.js +11 -11
  480. package/dist/signal/index.mjs +2 -2
  481. package/dist/sitemap/index.d.ts +19 -4
  482. package/dist/sitemap/index.d.ts.map +1 -1
  483. package/dist/sitemap/index.js +53 -43
  484. package/dist/sitemap/index.js.map +1 -1
  485. package/dist/sitemap/index.mjs +37 -27
  486. package/dist/sitemap/index.mjs.map +1 -1
  487. package/dist/sitemap/shared.d.ts +65 -0
  488. package/dist/sitemap/shared.d.ts.map +1 -1
  489. package/dist/sites/resolve.d.ts.map +1 -1
  490. package/dist/sites/site-param.d.ts +16 -0
  491. package/dist/sites/site-param.d.ts.map +1 -0
  492. package/dist/sync/index.js +17 -17
  493. package/dist/sync/index.mjs +4 -4
  494. package/dist/writeLLMsTxt-CQ7A4AAL.js +19 -0
  495. package/dist/writeLLMsTxt-NX5MSPYX.mjs +10 -0
  496. package/package.json +9 -4
  497. package/dist/AnalyticsProvider-EWF7JN2X.mjs +0 -11
  498. package/dist/AnalyticsProvider-GJFG7YXA.js +0 -32
  499. package/dist/BlogViewTracker-2D3IJPJK.js.map +0 -1
  500. package/dist/BlogViewTracker-CKYG6MYU.mjs.map +0 -1
  501. package/dist/ChatWidget-AWP6GBVW.js +0 -22
  502. package/dist/ChatWidget-Z5QXDZP3.mjs +0 -13
  503. package/dist/EngageWidget-BKEY5TPO.mjs +0 -12
  504. package/dist/EngageWidget-VT4DYXVO.js +0 -21
  505. package/dist/FormSpotlight-OTFB6QM5.mjs.map +0 -1
  506. package/dist/FormSpotlight-URS4XRS7.js.map +0 -1
  507. package/dist/FormStage-FVKMIV73.js.map +0 -1
  508. package/dist/FormStage-VPGOCMAV.mjs.map +0 -1
  509. package/dist/ManagedForm-CXVDJMHN.mjs +0 -14
  510. package/dist/ManagedForm-FGNTDGED.js +0 -23
  511. package/dist/ManagedNewsletterForm-3O5L44AZ.js.map +0 -1
  512. package/dist/ManagedNewsletterForm-SQYB4BZU.mjs.map +0 -1
  513. package/dist/SignalCore-M2PKKIGH.mjs.map +0 -1
  514. package/dist/SignalCore-RFBOBNLQ.js.map +0 -1
  515. package/dist/SitemapSync-4OVMIIGC.mjs +0 -9
  516. package/dist/SitemapSync-RK3SQ4M2.js +0 -18
  517. package/dist/analytics/send-gate.test.d.ts +0 -20
  518. package/dist/analytics/send-gate.test.d.ts.map +0 -1
  519. package/dist/api-D745LGGU.mjs.map +0 -1
  520. package/dist/api-XR5APCH3.js.map +0 -1
  521. package/dist/blog/artwork-components.test.d.ts +0 -2
  522. package/dist/blog/artwork-components.test.d.ts.map +0 -1
  523. package/dist/blog/artwork.test.d.ts +0 -2
  524. package/dist/blog/artwork.test.d.ts.map +0 -1
  525. package/dist/blog/author-social.test.d.ts +0 -2
  526. package/dist/blog/author-social.test.d.ts.map +0 -1
  527. package/dist/blog/blog-tables.test.d.ts +0 -2
  528. package/dist/blog/blog-tables.test.d.ts.map +0 -1
  529. package/dist/blog/blog-view-tracker.test.d.ts +0 -2
  530. package/dist/blog/blog-view-tracker.test.d.ts.map +0 -1
  531. package/dist/blog/category-metadata.test.d.ts +0 -2
  532. package/dist/blog/category-metadata.test.d.ts.map +0 -1
  533. package/dist/blog/metadata-images.test.d.ts +0 -2
  534. package/dist/blog/metadata-images.test.d.ts.map +0 -1
  535. package/dist/blog/newsletter-widget.test.d.ts +0 -2
  536. package/dist/blog/newsletter-widget.test.d.ts.map +0 -1
  537. package/dist/blog/publication-render.test.d.ts +0 -2
  538. package/dist/blog/publication-render.test.d.ts.map +0 -1
  539. package/dist/blog/publication-routes.test.d.ts +0 -2
  540. package/dist/blog/publication-routes.test.d.ts.map +0 -1
  541. package/dist/blog/reading-time.test.d.ts +0 -2
  542. package/dist/blog/reading-time.test.d.ts.map +0 -1
  543. package/dist/blog/sanitize-excerpt.test.d.ts +0 -2
  544. package/dist/blog/sanitize-excerpt.test.d.ts.map +0 -1
  545. package/dist/blog/server-core-contract.test.d.ts +0 -2
  546. package/dist/blog/server-core-contract.test.d.ts.map +0 -1
  547. package/dist/blog/static-params.test.d.ts +0 -2
  548. package/dist/blog/static-params.test.d.ts.map +0 -1
  549. package/dist/blog/tag-links.test.d.ts +0 -2
  550. package/dist/blog/tag-links.test.d.ts.map +0 -1
  551. package/dist/blog/types-wire-shape.test.d.ts +0 -2
  552. package/dist/blog/types-wire-shape.test.d.ts.map +0 -1
  553. package/dist/brand/status-contrast.test.d.ts +0 -2
  554. package/dist/brand/status-contrast.test.d.ts.map +0 -1
  555. package/dist/chunk-3CLP35TT.mjs.map +0 -1
  556. package/dist/chunk-3UC6JETG.js +0 -32
  557. package/dist/chunk-3UC6JETG.js.map +0 -1
  558. package/dist/chunk-3YQILJKJ.js.map +0 -1
  559. package/dist/chunk-4B4S56WJ.mjs.map +0 -1
  560. package/dist/chunk-5B4FABFK.js.map +0 -1
  561. package/dist/chunk-5TXXTYXL.js +0 -8
  562. package/dist/chunk-5YA6SI4Z.mjs.map +0 -1
  563. package/dist/chunk-6CJP7BFM.js.map +0 -1
  564. package/dist/chunk-6FC5Q4KU.mjs.map +0 -1
  565. package/dist/chunk-7ZX6TO6C.mjs.map +0 -1
  566. package/dist/chunk-AWK57R5S.mjs +0 -29
  567. package/dist/chunk-AWK57R5S.mjs.map +0 -1
  568. package/dist/chunk-BFJOZ3MU.mjs.map +0 -1
  569. package/dist/chunk-BFM5PEFV.js.map +0 -1
  570. package/dist/chunk-CPY74A4F.js.map +0 -1
  571. package/dist/chunk-DOB37PV4.js.map +0 -1
  572. package/dist/chunk-F3AKYZOH.js.map +0 -1
  573. package/dist/chunk-FO4KGPGF.js.map +0 -1
  574. package/dist/chunk-GZJE23Y5.mjs.map +0 -1
  575. package/dist/chunk-H4OBGC43.mjs.map +0 -1
  576. package/dist/chunk-H6YVT3BL.js.map +0 -1
  577. package/dist/chunk-H7274TKR.mjs.map +0 -1
  578. package/dist/chunk-I7AZC5ZQ.js.map +0 -1
  579. package/dist/chunk-ILNCUSXW.mjs.map +0 -1
  580. package/dist/chunk-IPV2TUAT.js.map +0 -1
  581. package/dist/chunk-JEOKDUPQ.js +0 -45
  582. package/dist/chunk-JEOKDUPQ.js.map +0 -1
  583. package/dist/chunk-JNAXDFC4.mjs.map +0 -1
  584. package/dist/chunk-JNRHTZL4.js.map +0 -1
  585. package/dist/chunk-JOYMIGR2.mjs.map +0 -1
  586. package/dist/chunk-JS75ORH7.js.map +0 -1
  587. package/dist/chunk-JTCQJKJE.js.map +0 -1
  588. package/dist/chunk-L4V6TKMJ.mjs.map +0 -1
  589. package/dist/chunk-LC7AM4J5.js.map +0 -1
  590. package/dist/chunk-M5GY2AI3.mjs.map +0 -1
  591. package/dist/chunk-NN2YE5WT.js.map +0 -1
  592. package/dist/chunk-NNZDWY3L.mjs.map +0 -1
  593. package/dist/chunk-O2VJZOR2.mjs.map +0 -1
  594. package/dist/chunk-OZ3FU4BT.js.map +0 -1
  595. package/dist/chunk-P4TB4ROG.js.map +0 -1
  596. package/dist/chunk-Q7347KP6.mjs.map +0 -1
  597. package/dist/chunk-QJU6HBSK.mjs +0 -39
  598. package/dist/chunk-QJU6HBSK.mjs.map +0 -1
  599. package/dist/chunk-QRBPT6Z6.mjs +0 -6
  600. package/dist/chunk-RCSTDJUH.js.map +0 -1
  601. package/dist/chunk-RVRN5U7W.mjs.map +0 -1
  602. package/dist/chunk-TDJKGN5Q.mjs.map +0 -1
  603. package/dist/chunk-TP7H6BSK.mjs.map +0 -1
  604. package/dist/chunk-TSZIACRC.js.map +0 -1
  605. package/dist/chunk-UJ6CHZAI.mjs.map +0 -1
  606. package/dist/chunk-VFGEY6FJ.js.map +0 -1
  607. package/dist/cli/agent/envelope.test.d.ts +0 -2
  608. package/dist/cli/agent/envelope.test.d.ts.map +0 -1
  609. package/dist/cli/agent/ssr-bailout.test.d.ts +0 -2
  610. package/dist/cli/agent/ssr-bailout.test.d.ts.map +0 -1
  611. package/dist/cli/codemod/diff.test.d.ts +0 -2
  612. package/dist/cli/codemod/diff.test.d.ts.map +0 -1
  613. package/dist/cli/codemod/transforms.test.d.ts +0 -2
  614. package/dist/cli/codemod/transforms.test.d.ts.map +0 -1
  615. package/dist/cli/commands/config-regression.test.d.ts +0 -2
  616. package/dist/cli/commands/config-regression.test.d.ts.map +0 -1
  617. package/dist/cli/commands/geo.test.d.ts +0 -2
  618. package/dist/cli/commands/geo.test.d.ts.map +0 -1
  619. package/dist/cli/commands/og.test.d.ts +0 -2
  620. package/dist/cli/commands/og.test.d.ts.map +0 -1
  621. package/dist/cli/config.test.d.ts +0 -2
  622. package/dist/cli/config.test.d.ts.map +0 -1
  623. package/dist/cli/generators/index.test.d.ts +0 -2
  624. package/dist/cli/generators/index.test.d.ts.map +0 -1
  625. package/dist/cli/index.js.map +0 -1
  626. package/dist/cli/index.mjs.map +0 -1
  627. package/dist/cli/state.test.d.ts +0 -2
  628. package/dist/cli/state.test.d.ts.map +0 -1
  629. package/dist/commerce/events-extras.test.d.ts +0 -2
  630. package/dist/commerce/events-extras.test.d.ts.map +0 -1
  631. package/dist/commerce/server-result.test.d.ts +0 -2
  632. package/dist/commerce/server-result.test.d.ts.map +0 -1
  633. package/dist/discover-FGTKWOL3.mjs +0 -4
  634. package/dist/discover-NJZPWTDL.js +0 -21
  635. package/dist/engage/chat-launcher.test.d.ts +0 -2
  636. package/dist/engage/chat-launcher.test.d.ts.map +0 -1
  637. package/dist/engage/dependency-contract.test.d.ts +0 -2
  638. package/dist/engage/dependency-contract.test.d.ts.map +0 -1
  639. package/dist/engage/launcher-placement.test.d.ts +0 -2
  640. package/dist/engage/launcher-placement.test.d.ts.map +0 -1
  641. package/dist/fleet/contract.test.d.ts +0 -2
  642. package/dist/fleet/contract.test.d.ts.map +0 -1
  643. package/dist/fleet/heartbeat.test.d.ts +0 -2
  644. package/dist/fleet/heartbeat.test.d.ts.map +0 -1
  645. package/dist/forms/contract.test.d.ts +0 -2
  646. package/dist/forms/contract.test.d.ts.map +0 -1
  647. package/dist/forms/ga4-identity.test.d.ts +0 -2
  648. package/dist/forms/ga4-identity.test.d.ts.map +0 -1
  649. package/dist/forms/native-fallback.test.d.ts +0 -2
  650. package/dist/forms/native-fallback.test.d.ts.map +0 -1
  651. package/dist/forms/stage.test.d.ts +0 -2
  652. package/dist/forms/stage.test.d.ts.map +0 -1
  653. package/dist/forms/static-form.test.d.ts +0 -2
  654. package/dist/forms/static-form.test.d.ts.map +0 -1
  655. package/dist/forms/tracking-session.test.d.ts +0 -22
  656. package/dist/forms/tracking-session.test.d.ts.map +0 -1
  657. package/dist/landing/contract.test.d.ts +0 -2
  658. package/dist/landing/contract.test.d.ts.map +0 -1
  659. package/dist/landing/server-entry.test.d.ts +0 -2
  660. package/dist/landing/server-entry.test.d.ts.map +0 -1
  661. package/dist/lib-6HOOMENJ.js.map +0 -1
  662. package/dist/lib-BGAWCSUH.js.map +0 -1
  663. package/dist/lib-R7IQ4ZHE.mjs.map +0 -1
  664. package/dist/lib-RSDMEKDQ.mjs.map +0 -1
  665. package/dist/llms/aiRobots.test.d.ts +0 -2
  666. package/dist/llms/aiRobots.test.d.ts.map +0 -1
  667. package/dist/llms/contract.test.d.ts +0 -2
  668. package/dist/llms/contract.test.d.ts.map +0 -1
  669. package/dist/llms/discovery-headers.test.d.ts +0 -2
  670. package/dist/llms/discovery-headers.test.d.ts.map +0 -1
  671. package/dist/llms/generateLLMsTxt.test.d.ts +0 -2
  672. package/dist/llms/generateLLMsTxt.test.d.ts.map +0 -1
  673. package/dist/llms/handlers.test.d.ts +0 -2
  674. package/dist/llms/handlers.test.d.ts.map +0 -1
  675. package/dist/llms/humanize-industry.test.d.ts +0 -2
  676. package/dist/llms/humanize-industry.test.d.ts.map +0 -1
  677. package/dist/llms/sourcedFacts.test.d.ts +0 -2
  678. package/dist/llms/sourcedFacts.test.d.ts.map +0 -1
  679. package/dist/llms/wiring.test.d.ts +0 -2
  680. package/dist/llms/wiring.test.d.ts.map +0 -1
  681. package/dist/llms/writeLLMsTxt.test.d.ts +0 -2
  682. package/dist/llms/writeLLMsTxt.test.d.ts.map +0 -1
  683. package/dist/mcp/protocol.test.d.ts +0 -2
  684. package/dist/mcp/protocol.test.d.ts.map +0 -1
  685. package/dist/motion/motion.test.d.ts +0 -16
  686. package/dist/motion/motion.test.d.ts.map +0 -1
  687. package/dist/og/pages.test.d.ts +0 -2
  688. package/dist/og/pages.test.d.ts.map +0 -1
  689. package/dist/og/template.test.d.ts +0 -2
  690. package/dist/og/template.test.d.ts.map +0 -1
  691. package/dist/og/wiring.test.d.ts +0 -2
  692. package/dist/og/wiring.test.d.ts.map +0 -1
  693. package/dist/portfolio/contract.test.d.ts +0 -2
  694. package/dist/portfolio/contract.test.d.ts.map +0 -1
  695. package/dist/proxy/securityHeaders.test.d.ts +0 -2
  696. package/dist/proxy/securityHeaders.test.d.ts.map +0 -1
  697. package/dist/proxy/segment.test.d.ts +0 -2
  698. package/dist/proxy/segment.test.d.ts.map +0 -1
  699. package/dist/robots/index.test.d.ts +0 -2
  700. package/dist/robots/index.test.d.ts.map +0 -1
  701. package/dist/seo/register-sitemap-cli-impl.test.d.ts +0 -2
  702. package/dist/seo/register-sitemap-cli-impl.test.d.ts.map +0 -1
  703. package/dist/seo/register-sitemap-cli.js.map +0 -1
  704. package/dist/seo/register-sitemap-cli.mjs.map +0 -1
  705. package/dist/seo-pages/contract.test.d.ts +0 -2
  706. package/dist/seo-pages/contract.test.d.ts.map +0 -1
  707. package/dist/server/mint-site-token.test.d.ts +0 -2
  708. package/dist/server/mint-site-token.test.d.ts.map +0 -1
  709. package/dist/server/server-fetch.test.d.ts +0 -2
  710. package/dist/server/server-fetch.test.d.ts.map +0 -1
  711. package/dist/shared/client-entry-boundary.test.d.ts +0 -2
  712. package/dist/shared/client-entry-boundary.test.d.ts.map +0 -1
  713. package/dist/shared/next-files.test.d.ts +0 -2
  714. package/dist/shared/next-files.test.d.ts.map +0 -1
  715. package/dist/shared/no-cjs-require.test.d.ts +0 -2
  716. package/dist/shared/no-cjs-require.test.d.ts.map +0 -1
  717. package/dist/shared/publishCredential.test.d.ts +0 -2
  718. package/dist/shared/publishCredential.test.d.ts.map +0 -1
  719. package/dist/shared/raw-browser-api-guard.test.d.ts +0 -15
  720. package/dist/shared/raw-browser-api-guard.test.d.ts.map +0 -1
  721. package/dist/shared/siteToken.test.d.ts +0 -2
  722. package/dist/shared/siteToken.test.d.ts.map +0 -1
  723. package/dist/shared/sonorFetch.test.d.ts +0 -2
  724. package/dist/shared/sonorFetch.test.d.ts.map +0 -1
  725. package/dist/shared/uuid.test.d.ts +0 -2
  726. package/dist/shared/uuid.test.d.ts.map +0 -1
  727. package/dist/shared/version.test.d.ts +0 -2
  728. package/dist/shared/version.test.d.ts.map +0 -1
  729. package/dist/shared/visual-viewport-gap.test.d.ts +0 -2
  730. package/dist/shared/visual-viewport-gap.test.d.ts.map +0 -1
  731. package/dist/sitemap/discover.test.d.ts +0 -2
  732. package/dist/sitemap/discover.test.d.ts.map +0 -1
  733. package/dist/sitemap/shared.test.d.ts +0 -2
  734. package/dist/sitemap/shared.test.d.ts.map +0 -1
  735. package/dist/sitemap/site-scope.test.d.ts +0 -2
  736. package/dist/sitemap/site-scope.test.d.ts.map +0 -1
  737. package/dist/sites/contract.test.d.ts +0 -2
  738. package/dist/sites/contract.test.d.ts.map +0 -1
  739. package/dist/slots/ManagedSlot.test.d.ts +0 -2
  740. package/dist/slots/ManagedSlot.test.d.ts.map +0 -1
  741. package/dist/slots/contract.test.d.ts +0 -2
  742. package/dist/slots/contract.test.d.ts.map +0 -1
  743. package/dist/slots/revalidate.test.d.ts +0 -2
  744. package/dist/slots/revalidate.test.d.ts.map +0 -1
  745. package/dist/slots/server-api.test.d.ts +0 -2
  746. package/dist/slots/server-api.test.d.ts.map +0 -1
  747. package/dist/sync/add-to-calendar.test.d.ts +0 -2
  748. package/dist/sync/add-to-calendar.test.d.ts.map +0 -1
  749. package/dist/sync/api-errors.test.d.ts +0 -2
  750. package/dist/sync/api-errors.test.d.ts.map +0 -1
  751. package/dist/sync/booking-flow.test.d.ts +0 -2
  752. package/dist/sync/booking-flow.test.d.ts.map +0 -1
package/dist/cli/index.js CHANGED
@@ -3,15 +3,17 @@
3
3
 
4
4
  var chunkJS75ORH7_js = require('../chunk-JS75ORH7.js');
5
5
  var chunkI7AZC5ZQ_js = require('../chunk-I7AZC5ZQ.js');
6
- var chunk6CJP7BFM_js = require('../chunk-6CJP7BFM.js');
6
+ var chunkOEW2LFOV_js = require('../chunk-OEW2LFOV.js');
7
+ var chunkCUNZAD46_js = require('../chunk-CUNZAD46.js');
7
8
  var chunkNN2YE5WT_js = require('../chunk-NN2YE5WT.js');
8
- var chunkP4TB4ROG_js = require('../chunk-P4TB4ROG.js');
9
- var chunk5TXXTYXL_js = require('../chunk-5TXXTYXL.js');
9
+ var chunkSEP5D4MI_js = require('../chunk-SEP5D4MI.js');
10
+ var chunkR7GHP3FY_js = require('../chunk-R7GHP3FY.js');
11
+ var chunkNG2TTI7D_js = require('../chunk-NG2TTI7D.js');
10
12
  var chunkSNAQBZPT_js = require('../chunk-SNAQBZPT.js');
11
13
  var events = require('events');
12
14
  var childProcess = require('child_process');
13
15
  var path12 = require('path');
14
- var fs = require('fs');
16
+ var fs20 = require('fs');
15
17
  var process2 = require('process');
16
18
  var util = require('util');
17
19
  var os = require('os');
@@ -49,7 +51,7 @@ function _interopNamespace(e) {
49
51
 
50
52
  var childProcess__default = /*#__PURE__*/_interopDefault(childProcess);
51
53
  var path12__default = /*#__PURE__*/_interopDefault(path12);
52
- var fs__namespace = /*#__PURE__*/_interopNamespace(fs);
54
+ var fs20__namespace = /*#__PURE__*/_interopNamespace(fs20);
53
55
  var process2__default = /*#__PURE__*/_interopDefault(process2);
54
56
  var os__default = /*#__PURE__*/_interopDefault(os);
55
57
  var tty__default = /*#__PURE__*/_interopDefault(tty);
@@ -6234,10 +6236,10 @@ var require_lib2 = chunkSNAQBZPT_js.__commonJS({
6234
6236
  exports.analyse = analyse;
6235
6237
  var detectFile = (filepath, opts = {}) => new Promise((resolve, reject) => {
6236
6238
  let fd;
6237
- const fs30 = (0, node_1.default)();
6239
+ const fs31 = (0, node_1.default)();
6238
6240
  const handler = (err, buffer) => {
6239
6241
  if (fd) {
6240
- fs30.closeSync(fd);
6242
+ fs31.closeSync(fd);
6241
6243
  }
6242
6244
  if (err) {
6243
6245
  reject(err);
@@ -6249,9 +6251,9 @@ var require_lib2 = chunkSNAQBZPT_js.__commonJS({
6249
6251
  };
6250
6252
  const sampleSize = (opts === null || opts === void 0 ? void 0 : opts.sampleSize) || 0;
6251
6253
  if (sampleSize > 0) {
6252
- fd = fs30.openSync(filepath, "r");
6254
+ fd = fs31.openSync(filepath, "r");
6253
6255
  let sample = Buffer.allocUnsafe(sampleSize);
6254
- fs30.read(fd, sample, 0, sampleSize, opts.offset, (err, bytesRead) => {
6256
+ fs31.read(fd, sample, 0, sampleSize, opts.offset, (err, bytesRead) => {
6255
6257
  if (err) {
6256
6258
  handler(err, null);
6257
6259
  } else {
@@ -6263,22 +6265,22 @@ var require_lib2 = chunkSNAQBZPT_js.__commonJS({
6263
6265
  });
6264
6266
  return;
6265
6267
  }
6266
- fs30.readFile(filepath, handler);
6268
+ fs31.readFile(filepath, handler);
6267
6269
  });
6268
6270
  exports.detectFile = detectFile;
6269
6271
  var detectFileSync = (filepath, opts = {}) => {
6270
- const fs30 = (0, node_1.default)();
6272
+ const fs31 = (0, node_1.default)();
6271
6273
  if (opts && opts.sampleSize) {
6272
- const fd = fs30.openSync(filepath, "r");
6274
+ const fd = fs31.openSync(filepath, "r");
6273
6275
  let sample = Buffer.allocUnsafe(opts.sampleSize);
6274
- const bytesRead = fs30.readSync(fd, sample, 0, opts.sampleSize, opts.offset);
6276
+ const bytesRead = fs31.readSync(fd, sample, 0, opts.sampleSize, opts.offset);
6275
6277
  if (bytesRead < opts.sampleSize) {
6276
6278
  sample = sample.subarray(0, bytesRead);
6277
6279
  }
6278
- fs30.closeSync(fd);
6280
+ fs31.closeSync(fd);
6279
6281
  return (0, exports.detect)(sample);
6280
6282
  }
6281
- return (0, exports.detect)(fs30.readFileSync(filepath));
6283
+ return (0, exports.detect)(fs31.readFileSync(filepath));
6282
6284
  };
6283
6285
  exports.detectFileSync = detectFileSync;
6284
6286
  exports.default = {
@@ -12279,7 +12281,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
12279
12281
  * @param {string} subcommandName
12280
12282
  */
12281
12283
  _checkForMissingExecutable(executableFile, executableDir, subcommandName) {
12282
- if (fs__namespace.default.existsSync(executableFile)) return;
12284
+ if (fs20__namespace.default.existsSync(executableFile)) return;
12283
12285
  const executableDirMessage = executableDir ? `searched for local subcommand relative to directory '${executableDir}'` : "no directory for search for local subcommand, use .executableDir() to supply a custom directory";
12284
12286
  const executableMissing = `'${executableFile}' does not exist
12285
12287
  - if '${subcommandName}' is not meant to be an executable command, remove description parameter from '.command()' and use '.description()' instead
@@ -12297,10 +12299,10 @@ Expecting one of '${allowedValues.join("', '")}'`);
12297
12299
  const sourceExt = [".js", ".ts", ".tsx", ".mjs", ".cjs"];
12298
12300
  function findFile(baseDir, baseName) {
12299
12301
  const localBin = path12__default.default.resolve(baseDir, baseName);
12300
- if (fs__namespace.default.existsSync(localBin)) return localBin;
12302
+ if (fs20__namespace.default.existsSync(localBin)) return localBin;
12301
12303
  if (sourceExt.includes(path12__default.default.extname(baseName))) return void 0;
12302
12304
  const foundExt = sourceExt.find(
12303
- (ext2) => fs__namespace.default.existsSync(`${localBin}${ext2}`)
12305
+ (ext2) => fs20__namespace.default.existsSync(`${localBin}${ext2}`)
12304
12306
  );
12305
12307
  if (foundExt) return `${localBin}${foundExt}`;
12306
12308
  return void 0;
@@ -12312,7 +12314,7 @@ Expecting one of '${allowedValues.join("', '")}'`);
12312
12314
  if (this._scriptPath) {
12313
12315
  let resolvedScriptPath;
12314
12316
  try {
12315
- resolvedScriptPath = fs__namespace.default.realpathSync(this._scriptPath);
12317
+ resolvedScriptPath = fs20__namespace.default.realpathSync(this._scriptPath);
12316
12318
  } catch {
12317
12319
  resolvedScriptPath = this._scriptPath;
12318
12320
  }
@@ -13268,9 +13270,9 @@ Expecting one of '${allowedValues.join("', '")}'`);
13268
13270
  * @param {string} [path]
13269
13271
  * @return {(string|null|Command)}
13270
13272
  */
13271
- executableDir(path30) {
13272
- if (path30 === void 0) return this._executableDir;
13273
- this._executableDir = path30;
13273
+ executableDir(path31) {
13274
+ if (path31 === void 0) return this._executableDir;
13275
+ this._executableDir = path31;
13274
13276
  return this;
13275
13277
  }
13276
13278
  /**
@@ -13543,7 +13545,7 @@ function buildEnvelope(input, nowMs = Date.now()) {
13543
13545
  ok: exitCode === 0 /* OK */,
13544
13546
  command,
13545
13547
  schemaVersion: 1,
13546
- siteKitVersion: chunk5TXXTYXL_js.SITE_KIT_VERSION,
13548
+ siteKitVersion: chunkNG2TTI7D_js.SITE_KIT_VERSION,
13547
13549
  exitCode,
13548
13550
  status: statusForCode(exitCode),
13549
13551
  summary,
@@ -19159,7 +19161,7 @@ var ExternalEditor = class {
19159
19161
  if (!this.tempDir)
19160
19162
  return;
19161
19163
  try {
19162
- fs.rmSync(this.tempDir, { force: true, recursive: true });
19164
+ fs20.rmSync(this.tempDir, { force: true, recursive: true });
19163
19165
  this.tempFile = "";
19164
19166
  this.tempDir = "";
19165
19167
  } catch (removeFileError) {
@@ -19169,7 +19171,7 @@ var ExternalEditor = class {
19169
19171
  createTempFile() {
19170
19172
  try {
19171
19173
  const baseDir = path12__default.default.resolve(this.fileOptions.dir ?? os__default.default.tmpdir());
19172
- this.tempDir = fs.mkdtempSync(path12__default.default.join(baseDir, "inquirer-editor-"));
19174
+ this.tempDir = fs20.mkdtempSync(path12__default.default.join(baseDir, "inquirer-editor-"));
19173
19175
  const id = crypto.randomUUID();
19174
19176
  const prefix = sanitizeAffix(this.fileOptions.prefix);
19175
19177
  const postfix = sanitizeAffix(this.fileOptions.postfix);
@@ -19179,7 +19181,7 @@ var ExternalEditor = class {
19179
19181
  if (Object.prototype.hasOwnProperty.call(this.fileOptions, "mode")) {
19180
19182
  opt.mode = this.fileOptions.mode;
19181
19183
  }
19182
- fs.writeFileSync(this.tempFile, this.text, opt);
19184
+ fs20.writeFileSync(this.tempFile, this.text, opt);
19183
19185
  } catch (createFileError) {
19184
19186
  throw new CreateFileError(createFileError);
19185
19187
  }
@@ -19189,7 +19191,7 @@ var ExternalEditor = class {
19189
19191
  }
19190
19192
  readTemporaryFile() {
19191
19193
  try {
19192
- const tempFileBuffer = fs.readFileSync(this.tempFile);
19194
+ const tempFileBuffer = fs20.readFileSync(this.tempFile);
19193
19195
  if (tempFileBuffer.length === 0) {
19194
19196
  this.text = "";
19195
19197
  } else {
@@ -20377,9 +20379,9 @@ function observableToAsyncIterable(source) {
20377
20379
 
20378
20380
  // node_modules/.pnpm/inquirer@14.0.2_@types+node@26.2.0/node_modules/inquirer/dist/ui/prompt.js
20379
20381
  var _ = {
20380
- set: (obj, path30 = "", value) => {
20382
+ set: (obj, path31 = "", value) => {
20381
20383
  let pointer = obj;
20382
- path30.split(".").forEach((key, index, arr) => {
20384
+ path31.split(".").forEach((key, index, arr) => {
20383
20385
  if (key === "__proto__" || key === "constructor")
20384
20386
  return;
20385
20387
  if (index === arr.length - 1) {
@@ -20390,8 +20392,8 @@ var _ = {
20390
20392
  pointer = pointer[key];
20391
20393
  });
20392
20394
  },
20393
- get: (obj, path30 = "", defaultValue) => {
20394
- const travel = (regexp) => String.prototype.split.call(path30, regexp).filter(Boolean).reduce(
20395
+ get: (obj, path31 = "", defaultValue) => {
20396
+ const travel = (regexp) => String.prototype.split.call(path31, regexp).filter(Boolean).reduce(
20395
20397
  // @ts-expect-error implicit any on res[key]
20396
20398
  (res, key) => res == null ? res : res[key],
20397
20399
  obj
@@ -20748,18 +20750,18 @@ function scanForForms(ast, content, filePath) {
20748
20750
  const forms = [];
20749
20751
  content.split("\n");
20750
20752
  chunkJS75ORH7_js.traverse(ast, {
20751
- JSXElement(path30) {
20752
- const opening = path30.node.openingElement;
20753
+ JSXElement(path31) {
20754
+ const opening = path31.node.openingElement;
20753
20755
  if (chunkJS75ORH7_js.isJSXIdentifier(opening.name) && opening.name.name === "form") {
20754
- const fields = extractFieldsFromForm(path30);
20756
+ const fields = extractFieldsFromForm(path31);
20755
20757
  const hasOnSubmit = opening.attributes.some(
20756
20758
  (attr) => chunkJS75ORH7_js.isJSXAttribute(attr) && chunkJS75ORH7_js.isJSXIdentifier(attr.name) && attr.name.name === "onSubmit"
20757
20759
  );
20758
20760
  if (hasOnSubmit && fields.length > 0) {
20759
- const startLine = path30.node.loc?.start.line || 0;
20760
- const endLine = path30.node.loc?.end.line || 0;
20761
+ const startLine = path31.node.loc?.start.line || 0;
20762
+ const endLine = path31.node.loc?.end.line || 0;
20761
20763
  let componentName = "UnknownForm";
20762
- let current = path30.parentPath;
20764
+ let current = path31.parentPath;
20763
20765
  while (current) {
20764
20766
  if (chunkJS75ORH7_js.isFunctionDeclaration(current.node) && current.node.id) {
20765
20767
  componentName = current.node.id.name;
@@ -20792,7 +20794,7 @@ function scanForForms(ast, content, filePath) {
20792
20794
  }
20793
20795
  if (chunkJS75ORH7_js.isJSXIdentifier(opening.name) && opening.name.name === "Form") {
20794
20796
  if (content.includes("Formik") || content.includes("formik")) {
20795
- const fields = extractFieldsFromFormik(path30);
20797
+ const fields = extractFieldsFromFormik(path31);
20796
20798
  if (fields.length > 0) {
20797
20799
  forms.push({
20798
20800
  filePath,
@@ -20803,8 +20805,8 @@ function scanForForms(ast, content, filePath) {
20803
20805
  submitsTo: null,
20804
20806
  complexity: "moderate",
20805
20807
  suggestedAction: "assisted",
20806
- startLine: path30.node.loc?.start.line || 0,
20807
- endLine: path30.node.loc?.end.line || 0
20808
+ startLine: path31.node.loc?.start.line || 0,
20809
+ endLine: path31.node.loc?.end.line || 0
20808
20810
  });
20809
20811
  }
20810
20812
  }
@@ -20822,8 +20824,8 @@ function extractFieldsFromForm(formPath) {
20822
20824
  const radioGroups = /* @__PURE__ */ new Map();
20823
20825
  const checkboxGroups = /* @__PURE__ */ new Map();
20824
20826
  formPath.traverse({
20825
- JSXElement(path30) {
20826
- const opening = path30.node.openingElement;
20827
+ JSXElement(path31) {
20828
+ const opening = path31.node.openingElement;
20827
20829
  const tagName = chunkJS75ORH7_js.isJSXIdentifier(opening.name) ? opening.name.name : null;
20828
20830
  if (["input", "textarea", "select"].includes(tagName || "")) {
20829
20831
  const attrs = opening.attributes;
@@ -20870,7 +20872,7 @@ function extractFieldsFromForm(formPath) {
20870
20872
  }
20871
20873
  if (tagName === "select") {
20872
20874
  const selectOptions = [];
20873
- path30.traverse({
20875
+ path31.traverse({
20874
20876
  JSXElement(optionPath) {
20875
20877
  const optOpening = optionPath.node.openingElement;
20876
20878
  const optTagName = chunkJS75ORH7_js.isJSXIdentifier(optOpening.name) ? optOpening.name.name : null;
@@ -20945,8 +20947,8 @@ function extractFieldsFromForm(formPath) {
20945
20947
  function extractFieldsFromFormik(formPath, content) {
20946
20948
  const fields = [];
20947
20949
  formPath.traverse({
20948
- JSXElement(path30) {
20949
- const opening = path30.node.openingElement;
20950
+ JSXElement(path31) {
20951
+ const opening = path31.node.openingElement;
20950
20952
  const tagName = chunkJS75ORH7_js.isJSXIdentifier(opening.name) ? opening.name.name : null;
20951
20953
  if (tagName === "Field" || tagName === "FastField") {
20952
20954
  const attrs = opening.attributes;
@@ -21065,11 +21067,11 @@ function scanForMetadata(ast, content, filePath) {
21065
21067
  }
21066
21068
  let hasHeadComponent = false;
21067
21069
  chunkJS75ORH7_js.traverse(ast, {
21068
- JSXElement(path30) {
21069
- const opening = path30.node.openingElement;
21070
+ JSXElement(path31) {
21071
+ const opening = path31.node.openingElement;
21070
21072
  if (chunkJS75ORH7_js.isJSXIdentifier(opening.name) && opening.name.name === "Head") {
21071
21073
  hasHeadComponent = true;
21072
- path30.stop();
21074
+ path31.stop();
21073
21075
  }
21074
21076
  }
21075
21077
  });
@@ -21104,8 +21106,8 @@ function scanForWidgets(ast, content, filePath) {
21104
21106
  for (const { pattern, type } of widgetPatterns) {
21105
21107
  if (pattern.test(content)) {
21106
21108
  chunkJS75ORH7_js.traverse(ast, {
21107
- JSXElement(path30) {
21108
- const opening = path30.node.openingElement;
21109
+ JSXElement(path31) {
21110
+ const opening = path31.node.openingElement;
21109
21111
  if (chunkJS75ORH7_js.isJSXIdentifier(opening.name) && (opening.name.name === "script" || opening.name.name === "Script")) {
21110
21112
  const srcAttr = opening.attributes.find(
21111
21113
  (attr) => chunkJS75ORH7_js.isJSXAttribute(attr) && chunkJS75ORH7_js.isJSXIdentifier(attr.name) && attr.name.name === "src"
@@ -21120,8 +21122,8 @@ function scanForWidgets(ast, content, filePath) {
21120
21122
  filePath,
21121
21123
  widgetType: type,
21122
21124
  scriptTag: src,
21123
- startLine: path30.node.loc?.start.line || 0,
21124
- endLine: path30.node.loc?.end.line || 0
21125
+ startLine: path31.node.loc?.start.line || 0,
21126
+ endLine: path31.node.loc?.end.line || 0
21125
21127
  });
21126
21128
  }
21127
21129
  }
@@ -21260,8 +21262,8 @@ function scanForSchemas(ast, content, filePath) {
21260
21262
  return schemas;
21261
21263
  }
21262
21264
  chunkJS75ORH7_js.traverse(ast, {
21263
- JSXElement(path30) {
21264
- const opening = path30.node.openingElement;
21265
+ JSXElement(path31) {
21266
+ const opening = path31.node.openingElement;
21265
21267
  if (chunkJS75ORH7_js.isJSXIdentifier(opening.name) && (opening.name.name === "script" || opening.name.name === "Script")) {
21266
21268
  const typeAttr = opening.attributes.find(
21267
21269
  (attr) => chunkJS75ORH7_js.isJSXAttribute(attr) && chunkJS75ORH7_js.isJSXIdentifier(attr.name) && attr.name.name === "type"
@@ -21288,8 +21290,8 @@ function scanForSchemas(ast, content, filePath) {
21288
21290
  filePath,
21289
21291
  type: detectedType,
21290
21292
  schemaType,
21291
- startLine: path30.node.loc?.start.line || 0,
21292
- endLine: path30.node.loc?.end.line || 0
21293
+ startLine: path31.node.loc?.start.line || 0,
21294
+ endLine: path31.node.loc?.end.line || 0
21293
21295
  });
21294
21296
  }
21295
21297
  }
@@ -21322,8 +21324,8 @@ function scanForFAQs(ast, content, filePath) {
21322
21324
  /questions?\s*(?:and|&)?\s*answers?/i
21323
21325
  ];
21324
21326
  chunkJS75ORH7_js.traverse(ast, {
21325
- JSXElement(path30) {
21326
- const opening = path30.node.openingElement;
21327
+ JSXElement(path31) {
21328
+ const opening = path31.node.openingElement;
21327
21329
  let tagName = "";
21328
21330
  if (chunkJS75ORH7_js.isJSXIdentifier(opening.name)) {
21329
21331
  tagName = opening.name.name;
@@ -21336,8 +21338,8 @@ function scanForFAQs(ast, content, filePath) {
21336
21338
  faqs.push({
21337
21339
  filePath,
21338
21340
  type: "details-summary",
21339
- startLine: path30.node.loc?.start.line || 0,
21340
- endLine: path30.node.loc?.end.line || 0,
21341
+ startLine: path31.node.loc?.start.line || 0,
21342
+ endLine: path31.node.loc?.end.line || 0,
21341
21343
  hasSchema: content.includes("FAQPage") || content.includes("application/ld+json")
21342
21344
  });
21343
21345
  return;
@@ -21345,7 +21347,7 @@ function scanForFAQs(ast, content, filePath) {
21345
21347
  for (const pattern of faqPatterns) {
21346
21348
  if (pattern.test(tagName)) {
21347
21349
  let itemCount = 0;
21348
- path30.traverse({
21350
+ path31.traverse({
21349
21351
  JSXElement(itemPath) {
21350
21352
  const itemOpening = itemPath.node.openingElement;
21351
21353
  if (chunkJS75ORH7_js.isJSXIdentifier(itemOpening.name)) {
@@ -21361,8 +21363,8 @@ function scanForFAQs(ast, content, filePath) {
21361
21363
  type: "accordion",
21362
21364
  componentName: tagName,
21363
21365
  itemCount: itemCount || void 0,
21364
- startLine: path30.node.loc?.start.line || 0,
21365
- endLine: path30.node.loc?.end.line || 0,
21366
+ startLine: path31.node.loc?.start.line || 0,
21367
+ endLine: path31.node.loc?.end.line || 0,
21366
21368
  hasSchema: content.includes("FAQPage") || content.includes("application/ld+json")
21367
21369
  });
21368
21370
  return;
@@ -21485,8 +21487,8 @@ function scanForImages(ast, content, filePath) {
21485
21487
  return images;
21486
21488
  }
21487
21489
  chunkJS75ORH7_js.traverse(ast, {
21488
- JSXElement(path30) {
21489
- const opening = path30.node.openingElement;
21490
+ JSXElement(path31) {
21491
+ const opening = path31.node.openingElement;
21490
21492
  if (!chunkJS75ORH7_js.isJSXIdentifier(opening.name)) return;
21491
21493
  const tagName = opening.name.name;
21492
21494
  if (tagName === "img" || tagName === "Image") {
@@ -21514,8 +21516,8 @@ function scanForImages(ast, content, filePath) {
21514
21516
  src: src || void 0,
21515
21517
  alt: alt || void 0,
21516
21518
  isLocal,
21517
- startLine: path30.node.loc?.start.line || 0,
21518
- endLine: path30.node.loc?.end.line || 0
21519
+ startLine: path31.node.loc?.start.line || 0,
21520
+ endLine: path31.node.loc?.end.line || 0
21519
21521
  });
21520
21522
  }
21521
21523
  }
@@ -22406,18 +22408,18 @@ async function migrateFile(filePath, options) {
22406
22408
  let componentName = "Form";
22407
22409
  const traverse2 = (await import('../lib-BGAWCSUH.js')).default;
22408
22410
  traverse2(ast, {
22409
- ExportNamedDeclaration(path30) {
22410
- const decl = path30.node.declaration;
22411
+ ExportNamedDeclaration(path31) {
22412
+ const decl = path31.node.declaration;
22411
22413
  if (decl && decl.type === "FunctionDeclaration" && decl.id) {
22412
22414
  componentName = decl.id.name;
22413
- path30.stop();
22415
+ path31.stop();
22414
22416
  }
22415
22417
  },
22416
- ExportDefaultDeclaration(path30) {
22417
- const decl = path30.node.declaration;
22418
+ ExportDefaultDeclaration(path31) {
22419
+ const decl = path31.node.declaration;
22418
22420
  if (decl && decl.type === "FunctionDeclaration" && decl.id) {
22419
22421
  componentName = decl.id.name;
22420
- path30.stop();
22422
+ path31.stop();
22421
22423
  }
22422
22424
  }
22423
22425
  });
@@ -22567,12 +22569,12 @@ async function generateLayout() {
22567
22569
  await fs3__default.default.writeFile(layoutPath, newContent, "utf-8");
22568
22570
  }
22569
22571
  async function findLayoutFile() {
22570
- return chunkP4TB4ROG_js.findRootLayout(process.cwd());
22572
+ return chunkSEP5D4MI_js.findRootLayout(process.cwd());
22571
22573
  }
22572
22574
  var isDockerCached;
22573
22575
  function hasDockerEnv() {
22574
22576
  try {
22575
- fs__namespace.default.statSync("/.dockerenv");
22577
+ fs20__namespace.default.statSync("/.dockerenv");
22576
22578
  return true;
22577
22579
  } catch {
22578
22580
  return false;
@@ -22580,7 +22582,7 @@ function hasDockerEnv() {
22580
22582
  }
22581
22583
  function hasDockerCGroup() {
22582
22584
  try {
22583
- return fs__namespace.default.readFileSync("/proc/self/cgroup", "utf8").includes("docker");
22585
+ return fs20__namespace.default.readFileSync("/proc/self/cgroup", "utf8").includes("docker");
22584
22586
  } catch {
22585
22587
  return false;
22586
22588
  }
@@ -22596,7 +22598,7 @@ function isDocker() {
22596
22598
  var cachedResult;
22597
22599
  var hasContainerEnv = () => {
22598
22600
  try {
22599
- fs__namespace.default.statSync("/run/.containerenv");
22601
+ fs20__namespace.default.statSync("/run/.containerenv");
22600
22602
  return true;
22601
22603
  } catch {
22602
22604
  return false;
@@ -22621,12 +22623,12 @@ var isWsl = () => {
22621
22623
  return true;
22622
22624
  }
22623
22625
  try {
22624
- if (fs__namespace.default.readFileSync("/proc/version", "utf8").toLowerCase().includes("microsoft")) {
22626
+ if (fs20__namespace.default.readFileSync("/proc/version", "utf8").toLowerCase().includes("microsoft")) {
22625
22627
  return !isInsideContainer();
22626
22628
  }
22627
22629
  } catch {
22628
22630
  }
22629
- if (fs__namespace.default.existsSync("/proc/sys/fs/binfmt_misc/WSLInterop") || fs__namespace.default.existsSync("/run/WSL")) {
22631
+ if (fs20__namespace.default.existsSync("/proc/sys/fs/binfmt_misc/WSLInterop") || fs20__namespace.default.existsSync("/run/WSL")) {
22630
22632
  return !isInsideContainer();
22631
22633
  }
22632
22634
  return false;
@@ -22729,15 +22731,15 @@ var wslDefaultBrowser = async () => {
22729
22731
  const { stdout } = await executePowerShell(command, { powerShellPath: psPath });
22730
22732
  return stdout.trim();
22731
22733
  };
22732
- var convertWslPathToWindows = async (path30) => {
22733
- if (/^[a-z]+:\/\//i.test(path30)) {
22734
- return path30;
22734
+ var convertWslPathToWindows = async (path31) => {
22735
+ if (/^[a-z]+:\/\//i.test(path31)) {
22736
+ return path31;
22735
22737
  }
22736
22738
  try {
22737
- const { stdout } = await execFile2("wslpath", ["-aw", path30], { encoding: "utf8" });
22739
+ const { stdout } = await execFile2("wslpath", ["-aw", path31], { encoding: "utf8" });
22738
22740
  return stdout.trim();
22739
22741
  } catch {
22740
- return path30;
22742
+ return path31;
22741
22743
  }
22742
22744
  };
22743
22745
 
@@ -23147,7 +23149,7 @@ function resolveImageManifestReadPath(root) {
23147
23149
  return preferCurrent(path12__default.default.join(root, IMAGE_MANIFEST), path12__default.default.join(root, LEGACY_IMAGE_MANIFEST));
23148
23150
  }
23149
23151
  function preferCurrent(current, legacy) {
23150
- return fs.existsSync(current) || !fs.existsSync(legacy) ? current : legacy;
23152
+ return fs20.existsSync(current) || !fs20.existsSync(legacy) ? current : legacy;
23151
23153
  }
23152
23154
  async function listLocalTemplates(root = process.cwd()) {
23153
23155
  const names = /* @__PURE__ */ new Set();
@@ -24845,7 +24847,7 @@ function detectCriticalImage(filename, relPath, usages, fileSize) {
24845
24847
  return { isCritical: false };
24846
24848
  }
24847
24849
  async function uploadImageToPortal(localPath, image, config2) {
24848
- const fileBuffer = fs.readFileSync(localPath);
24850
+ const fileBuffer = fs20.readFileSync(localPath);
24849
24851
  const blob = new Blob([fileBuffer], { type: image.mimeType });
24850
24852
  const form = new FormData();
24851
24853
  form.append("file", blob, image.filename);
@@ -25213,11 +25215,11 @@ async function templateCommand(sourcePath, options) {
25213
25215
  const spinner = ora("Analyzing source page...").start();
25214
25216
  try {
25215
25217
  const resolvedPath = path12__default.default.resolve(sourcePath);
25216
- if (!fs.existsSync(resolvedPath)) {
25218
+ if (!fs20.existsSync(resolvedPath)) {
25217
25219
  spinner.fail(`File not found: ${sourcePath}`);
25218
25220
  return;
25219
25221
  }
25220
- const sourceCode = fs.readFileSync(resolvedPath, "utf-8");
25222
+ const sourceCode = fs20.readFileSync(resolvedPath, "utf-8");
25221
25223
  const ast = chunkI7AZC5ZQ_js.parse(sourceCode, {
25222
25224
  sourceType: "module",
25223
25225
  plugins: ["jsx", "typescript"]
@@ -25225,8 +25227,8 @@ async function templateCommand(sourcePath, options) {
25225
25227
  const slots = [];
25226
25228
  const componentNames = [];
25227
25229
  chunkJS75ORH7_js.traverse(ast, {
25228
- JSXElement(path30) {
25229
- const openingElement = path30.node.openingElement;
25230
+ JSXElement(path31) {
25231
+ const openingElement = path31.node.openingElement;
25230
25232
  if (chunkJS75ORH7_js.isJSXIdentifier(openingElement.name)) {
25231
25233
  const componentName = openingElement.name.name;
25232
25234
  if (componentName[0] === componentName[0].toUpperCase()) {
@@ -25376,12 +25378,12 @@ async function uploadCommand(templateName, config2) {
25376
25378
  const spinner = ora("Uploading template to Portal...").start();
25377
25379
  try {
25378
25380
  const templatePath = resolveStateReadPath(path12__default.default.join("templates", `${templateName}.json`));
25379
- if (!fs.existsSync(templatePath)) {
25381
+ if (!fs20.existsSync(templatePath)) {
25380
25382
  spinner.fail(`Template not found: ${templatePath}`);
25381
25383
  console.log(source_default.gray(` Run: npx sonor-setup locations template <page> --name ${templateName}`));
25382
25384
  return;
25383
25385
  }
25384
- const template = JSON.parse(fs.readFileSync(templatePath, "utf-8"));
25386
+ const template = JSON.parse(fs20.readFileSync(templatePath, "utf-8"));
25385
25387
  const response = await fetch(`${config2.apiUrl}/seo/location-templates`, {
25386
25388
  method: "POST",
25387
25389
  headers: {
@@ -25436,7 +25438,7 @@ async function generateCommand(options, config2) {
25436
25438
  let locationList = locations || [];
25437
25439
  if (locationsFile) {
25438
25440
  try {
25439
- const fileContent = fs.readFileSync(locationsFile, "utf-8");
25441
+ const fileContent = fs20.readFileSync(locationsFile, "utf-8");
25440
25442
  const parsed = JSON.parse(fileContent);
25441
25443
  locationList = Array.isArray(parsed) ? parsed : parsed.locations || [];
25442
25444
  } catch (e) {
@@ -25600,7 +25602,7 @@ async function extractCommand(options, config2) {
25600
25602
  const extensions = ["", ".js", ".ts", ".jsx", ".tsx", ".json"];
25601
25603
  for (const ext2 of extensions) {
25602
25604
  const tryPath = resolvedPath + ext2;
25603
- if (fs.existsSync(tryPath)) {
25605
+ if (fs20.existsSync(tryPath)) {
25604
25606
  try {
25605
25607
  importedFiles[importPath] = await fs3__default.default.readFile(tryPath, "utf-8");
25606
25608
  } catch {
@@ -26060,7 +26062,7 @@ async function scanForPageFiles(rootDir) {
26060
26062
  const srcPagesDir = path12__default.default.join(rootDir, "src", "pages");
26061
26063
  const dirs = [appDir, srcAppDir, pagesDir, srcPagesDir];
26062
26064
  for (const dir of dirs) {
26063
- if (fs.existsSync(dir)) {
26065
+ if (fs20.existsSync(dir)) {
26064
26066
  await scanDirectory(dir, dir, pages);
26065
26067
  }
26066
26068
  }
@@ -26109,7 +26111,7 @@ async function gatherImportedFiles(page, rootDir) {
26109
26111
  const extensions = ["", ".js", ".ts", ".jsx", ".tsx", ".json"];
26110
26112
  for (const ext2 of extensions) {
26111
26113
  const tryPath = resolvedPath + ext2;
26112
- if (fs.existsSync(tryPath)) {
26114
+ if (fs20.existsSync(tryPath)) {
26113
26115
  try {
26114
26116
  page.importedFiles[importPath] = await fs3__default.default.readFile(tryPath, "utf-8");
26115
26117
  } catch {
@@ -26178,7 +26180,7 @@ async function findDynamicRouteData(page, parentPath, rootDir) {
26178
26180
  const routeSegment = parentPath.replace(/^\//, "").split("/")[0];
26179
26181
  const routeSegmentNormalized = routeSegment.replace(/-/g, "");
26180
26182
  for (const dataFile of dataFilePaths) {
26181
- if (!fs.existsSync(dataFile)) continue;
26183
+ if (!fs20.existsSync(dataFile)) continue;
26182
26184
  try {
26183
26185
  const content = await fs3__default.default.readFile(dataFile, "utf-8");
26184
26186
  const exportPattern = new RegExp(
@@ -26350,10 +26352,230 @@ async function uploadSchemas(pages, globalSchema, config2) {
26350
26352
  }
26351
26353
  }
26352
26354
  }
26355
+ var SOURCE_EXTENSIONS = [".ts", ".tsx", ".mts", ".cts", ".js", ".jsx", ".mjs", ".cjs"];
26356
+ function stripComments(source) {
26357
+ return source.replace(
26358
+ /("(?:\\.|[^"\\\n])*"|'(?:\\.|[^'\\\n])*'|`(?:\\.|[^`\\])*`)|\/\*[\s\S]*?\*\/|\/\/[^\n]*/g,
26359
+ (match, literal) => literal ?? (match.startsWith("/*") ? match.replace(/[^\n]/g, "") : "")
26360
+ );
26361
+ }
26362
+ function readText(file) {
26363
+ try {
26364
+ return fs20__namespace.default.readFileSync(file, "utf-8");
26365
+ } catch {
26366
+ return null;
26367
+ }
26368
+ }
26369
+ function isFile(p) {
26370
+ try {
26371
+ return fs20__namespace.default.statSync(p).isFile();
26372
+ } catch {
26373
+ return false;
26374
+ }
26375
+ }
26376
+ function realpath(p) {
26377
+ try {
26378
+ return fs20__namespace.default.realpathSync(p);
26379
+ } catch {
26380
+ return null;
26381
+ }
26382
+ }
26383
+ function resolveFile(base) {
26384
+ if (isFile(base) && SOURCE_EXTENSIONS.includes(path12__default.default.extname(base))) return base;
26385
+ const stem = base.replace(/\.(m|c)?js$/, "");
26386
+ for (const ext2 of SOURCE_EXTENSIONS) {
26387
+ if (isFile(stem + ext2)) return stem + ext2;
26388
+ }
26389
+ for (const ext2 of SOURCE_EXTENSIONS) {
26390
+ const index = path12__default.default.join(base, `index${ext2}`);
26391
+ if (isFile(index)) return index;
26392
+ }
26393
+ return null;
26394
+ }
26395
+ function importSpecifiers(source) {
26396
+ const found = /* @__PURE__ */ new Set();
26397
+ const patterns = [
26398
+ /\b(?:import|export)\s+(?:type\s+)?[^'"`;]*?\bfrom\s*['"]([^'"]+)['"]/g,
26399
+ /\bimport\s*['"]([^'"]+)['"]/g,
26400
+ /\bimport\s*\(\s*['"]([^'"]+)['"]\s*\)/g,
26401
+ /\brequire\s*\(\s*['"]([^'"]+)['"]\s*\)/g
26402
+ ];
26403
+ for (const re2 of patterns) {
26404
+ for (const m of source.matchAll(re2)) found.add(m[1]);
26405
+ }
26406
+ return [...found];
26407
+ }
26408
+ function readLooseJson(file) {
26409
+ const text = readText(file);
26410
+ if (!text) return null;
26411
+ try {
26412
+ return JSON.parse(text);
26413
+ } catch {
26414
+ try {
26415
+ const stripped = text.replace(/("(?:\\.|[^"\\])*")|\/\*[\s\S]*?\*\/|\/\/[^\n]*/g, (_m4, str) => str ?? "").replace(/,(\s*[}\]])/g, "$1");
26416
+ return JSON.parse(stripped);
26417
+ } catch {
26418
+ return null;
26419
+ }
26420
+ }
26421
+ }
26422
+ function loadScope(root) {
26423
+ const tsconfig = readLooseJson(path12__default.default.join(root, "tsconfig.json")) ?? readLooseJson(path12__default.default.join(root, "jsconfig.json"));
26424
+ const options = tsconfig?.compilerOptions ?? {};
26425
+ const baseUrl = path12__default.default.resolve(root, options.baseUrl ?? ".");
26426
+ const aliases = [];
26427
+ for (const [key, value] of Object.entries(options.paths ?? {})) {
26428
+ const star = key.indexOf("*");
26429
+ aliases.push({
26430
+ prefix: star === -1 ? key : key.slice(0, star),
26431
+ suffix: star === -1 ? "" : key.slice(star + 1),
26432
+ exact: star === -1,
26433
+ targets: (Array.isArray(value) ? value : [value]).map((t) => path12__default.default.resolve(baseUrl, t))
26434
+ });
26435
+ }
26436
+ return { root, aliases };
26437
+ }
26438
+ function packageRoot(dir) {
26439
+ let current = dir;
26440
+ for (; ; ) {
26441
+ if (["package.json", "tsconfig.json", "jsconfig.json"].some((f) => isFile(path12__default.default.join(current, f)))) return current;
26442
+ const parent = path12__default.default.dirname(current);
26443
+ if (parent === current) return dir;
26444
+ current = parent;
26445
+ }
26446
+ }
26447
+ function pickExportTarget(value) {
26448
+ if (typeof value === "string") return value;
26449
+ if (Array.isArray(value)) {
26450
+ for (const v2 of value) {
26451
+ const t = pickExportTarget(v2);
26452
+ if (t) return t;
26453
+ }
26454
+ return null;
26455
+ }
26456
+ if (value && typeof value === "object") {
26457
+ const conditions = value;
26458
+ for (const key of ["source", "import", "default", "require", "node", "types"]) {
26459
+ if (key in conditions) {
26460
+ const t = pickExportTarget(conditions[key]);
26461
+ if (t) return t;
26462
+ }
26463
+ }
26464
+ }
26465
+ return null;
26466
+ }
26467
+ function resolvePackageSubpath(pkgRoot, subpath) {
26468
+ const pkg = readLooseJson(path12__default.default.join(pkgRoot, "package.json")) ?? {};
26469
+ const exportsField = pkg.exports;
26470
+ if (exportsField !== void 0) {
26471
+ const map = typeof exportsField === "string" || Array.isArray(exportsField) || !Object.keys(exportsField).some((k2) => k2.startsWith(".")) ? { ".": exportsField } : exportsField;
26472
+ if (subpath in map) {
26473
+ const target = pickExportTarget(map[subpath]);
26474
+ if (target) return resolveFile(path12__default.default.resolve(pkgRoot, target));
26475
+ }
26476
+ for (const [key, value] of Object.entries(map)) {
26477
+ const star = key.indexOf("*");
26478
+ if (star === -1) continue;
26479
+ const prefix = key.slice(0, star);
26480
+ const suffix = key.slice(star + 1);
26481
+ if (subpath.startsWith(prefix) && subpath.endsWith(suffix) && subpath.length >= prefix.length + suffix.length) {
26482
+ const matched = subpath.slice(prefix.length, subpath.length - suffix.length);
26483
+ const target = pickExportTarget(value);
26484
+ if (target) return resolveFile(path12__default.default.resolve(pkgRoot, target.replace("*", matched)));
26485
+ }
26486
+ }
26487
+ }
26488
+ if (subpath === ".") {
26489
+ const main = pkg.source ?? pkg.module ?? pkg.main;
26490
+ if (typeof main === "string") {
26491
+ const hit = resolveFile(path12__default.default.resolve(pkgRoot, main));
26492
+ if (hit) return hit;
26493
+ }
26494
+ return resolveFile(path12__default.default.join(pkgRoot, "index"));
26495
+ }
26496
+ return resolveFile(path12__default.default.resolve(pkgRoot, subpath));
26497
+ }
26498
+ function workspacePackage(fromDir, name) {
26499
+ let current = fromDir;
26500
+ for (; ; ) {
26501
+ const candidate = path12__default.default.join(current, "node_modules", name);
26502
+ if (fs20__namespace.default.existsSync(candidate)) {
26503
+ const real = realpath(candidate);
26504
+ if (!real || real.split(path12__default.default.sep).includes("node_modules")) return null;
26505
+ return real;
26506
+ }
26507
+ const parent = path12__default.default.dirname(current);
26508
+ if (parent === current) return null;
26509
+ current = parent;
26510
+ }
26511
+ }
26512
+ function splitBare(specifier) {
26513
+ const parts = specifier.split("/");
26514
+ const nameParts = specifier.startsWith("@") ? parts.slice(0, 2) : parts.slice(0, 1);
26515
+ const rest = parts.slice(nameParts.length);
26516
+ return { name: nameParts.join("/"), subpath: rest.length ? `./${rest.join("/")}` : "." };
26517
+ }
26518
+ function readSourceGraph(entries, options = {}) {
26519
+ const { maxDepth = 4, maxFiles = 300 } = options;
26520
+ const scopes = /* @__PURE__ */ new Map();
26521
+ const scopeFor = (file) => {
26522
+ const root = packageRoot(path12__default.default.dirname(file));
26523
+ let scope = scopes.get(root);
26524
+ if (!scope) {
26525
+ scope = loadScope(root);
26526
+ scopes.set(root, scope);
26527
+ }
26528
+ return scope;
26529
+ };
26530
+ const resolve = (specifier, fromFile) => {
26531
+ const fromDir = path12__default.default.dirname(fromFile);
26532
+ if (specifier.startsWith(".")) return resolveFile(path12__default.default.resolve(fromDir, specifier));
26533
+ if (specifier.startsWith("/") || /^[a-z]+:/i.test(specifier)) return null;
26534
+ const scope = scopeFor(fromFile);
26535
+ for (const alias of scope.aliases) {
26536
+ const hit = alias.exact ? specifier === alias.prefix : specifier.startsWith(alias.prefix) && specifier.endsWith(alias.suffix);
26537
+ if (!hit) continue;
26538
+ const matched = alias.exact ? "" : specifier.slice(alias.prefix.length, specifier.length - alias.suffix.length);
26539
+ for (const target of alias.targets) {
26540
+ const hit2 = resolveFile(target.replace("*", matched));
26541
+ if (hit2) return hit2;
26542
+ }
26543
+ }
26544
+ const { name, subpath } = splitBare(specifier);
26545
+ const pkg = workspacePackage(fromDir, name);
26546
+ return pkg ? resolvePackageSubpath(pkg, subpath) : null;
26547
+ };
26548
+ const seen = /* @__PURE__ */ new Set();
26549
+ const out = [];
26550
+ let frontier = entries.map((e) => path12__default.default.resolve(e));
26551
+ for (let depth = 0; depth <= maxDepth && frontier.length && out.length < maxFiles; depth++) {
26552
+ const next = [];
26553
+ for (const file of frontier) {
26554
+ if (seen.has(file) || out.length >= maxFiles) continue;
26555
+ seen.add(file);
26556
+ const raw = readText(file);
26557
+ if (raw === null) continue;
26558
+ const source = stripComments(raw);
26559
+ out.push({ file, source });
26560
+ if (depth === maxDepth) continue;
26561
+ for (const specifier of importSpecifiers(source)) {
26562
+ const hit = resolve(specifier, file);
26563
+ if (hit && !seen.has(hit)) next.push(hit);
26564
+ }
26565
+ }
26566
+ frontier = next;
26567
+ }
26568
+ return out;
26569
+ }
26570
+ function readWithImports(cwd, rel, options) {
26571
+ return readSourceGraph([path12__default.default.join(cwd, rel)], options).map((f) => f.source).join("\n");
26572
+ }
26573
+
26574
+ // src/og/wiring.ts
26353
26575
  var CARD_FILE = /^(opengraph-image|twitter-image)\b.*\.(png|jpe?g|gif|webp|tsx|ts|jsx|js)$/i;
26354
26576
  function safeExists(p) {
26355
26577
  try {
26356
- return fs__namespace.default.existsSync(p);
26578
+ return fs20__namespace.default.existsSync(p);
26357
26579
  } catch {
26358
26580
  return false;
26359
26581
  }
@@ -26363,7 +26585,7 @@ function findPageCards(cwd) {
26363
26585
  const walk = (dir) => {
26364
26586
  let entries;
26365
26587
  try {
26366
- entries = fs__namespace.default.readdirSync(dir, { withFileTypes: true });
26588
+ entries = fs20__namespace.default.readdirSync(dir, { withFileTypes: true });
26367
26589
  } catch {
26368
26590
  return;
26369
26591
  }
@@ -26374,28 +26596,86 @@ function findPageCards(cwd) {
26374
26596
  else if (CARD_FILE.test(entry.name)) found.push(full);
26375
26597
  }
26376
26598
  };
26377
- for (const rel of chunkP4TB4ROG_js.NEXT_APP_DIRS) walk(path12__default.default.join(cwd, rel));
26599
+ for (const rel of chunkSEP5D4MI_js.NEXT_APP_DIRS) walk(path12__default.default.join(cwd, rel));
26600
+ return found;
26601
+ }
26602
+ function findPageFiles(cwd) {
26603
+ const found = [];
26604
+ const pageFile = new RegExp(`^page\\.(${chunkSEP5D4MI_js.NEXT_SOURCE_EXTENSIONS.join("|")})$`);
26605
+ const walk = (dir) => {
26606
+ let entries;
26607
+ try {
26608
+ entries = fs20__namespace.default.readdirSync(dir, { withFileTypes: true });
26609
+ } catch {
26610
+ return;
26611
+ }
26612
+ for (const entry of entries) {
26613
+ if (entry.name.startsWith(".") || entry.name === "node_modules") continue;
26614
+ const full = path12__default.default.join(dir, entry.name);
26615
+ if (entry.isDirectory()) walk(full);
26616
+ else if (pageFile.test(entry.name)) found.push(full);
26617
+ }
26618
+ };
26619
+ for (const rel of chunkSEP5D4MI_js.NEXT_APP_DIRS) walk(path12__default.default.join(cwd, rel));
26378
26620
  return found;
26379
26621
  }
26380
- function readOgWiring(cwd) {
26622
+ function routeOf(cwd, dir) {
26623
+ const appRoot = chunkSEP5D4MI_js.NEXT_APP_DIRS.map((rel2) => path12__default.default.join(cwd, rel2)).find((root) => dir === root || dir.startsWith(root + path12__default.default.sep));
26624
+ const rel = appRoot ? path12__default.default.relative(appRoot, dir) : dir;
26625
+ const segments = rel.split(path12__default.default.sep).filter((s) => s && !(s.startsWith("(") && s.endsWith(")"))).map((s) => s.startsWith("[") && s.endsWith("]") ? "*" : s);
26626
+ return `/${segments.join("/")}`;
26627
+ }
26628
+ function readCodeCards(cwd, pageCards) {
26629
+ const code = pageCards.filter((f) => /^opengraph-image\.(tsx|ts|jsx|js)$/.test(path12__default.default.basename(f)));
26630
+ return code.map((file) => {
26631
+ const dir = path12__default.default.dirname(file);
26632
+ const page = chunkSEP5D4MI_js.findConventionFile(dir, "page");
26633
+ const source = page ? readSourceGraph([page], { maxDepth: 2, maxFiles: 40 }).map((f) => f.source).join("\n") : "";
26634
+ const pageOwn = page ? readSourceGraph([page], { maxDepth: 0 })[0]?.source ?? "" : "";
26635
+ return {
26636
+ file: path12__default.default.relative(cwd, file),
26637
+ route: routeOf(cwd, dir),
26638
+ declaresUrl: /\bcodeCardImage\s*\(/.test(source),
26639
+ // A page that deletes the key itself (the pre-`images: false` workaround)
26640
+ // is fine too.
26641
+ blogDeclaresImages: /\bgenerateBlogPostMetadata\s*\(/.test(pageOwn) && !/\bimages\s*:\s*false\b/.test(pageOwn) && !/\bdelete\s+[\w.]+\.images\b/.test(pageOwn)
26642
+ };
26643
+ });
26644
+ }
26645
+ function readTrailingSlash(cwd) {
26646
+ const rel = chunkSEP5D4MI_js.findNextConfig(cwd);
26647
+ if (!rel) return false;
26648
+ try {
26649
+ return /\btrailingSlash\s*:\s*true\b/.test(fs20__namespace.default.readFileSync(path12__default.default.join(cwd, rel), "utf-8"));
26650
+ } catch {
26651
+ return false;
26652
+ }
26653
+ }
26654
+ function readOgWiring(cwd, known = {}) {
26381
26655
  const siteCard = ["public/og.png", "public/og.jpg", "public/opengraph.png"].some(
26382
26656
  (rel) => safeExists(path12__default.default.join(cwd, rel))
26383
26657
  );
26384
- const layoutPath = chunkP4TB4ROG_js.findRootLayout(cwd);
26658
+ const layoutPath = chunkSEP5D4MI_js.findRootLayout(cwd);
26385
26659
  let layout = "";
26386
26660
  if (layoutPath) {
26387
26661
  try {
26388
- layout = fs__namespace.default.readFileSync(layoutPath, "utf-8");
26662
+ layout = fs20__namespace.default.readFileSync(layoutPath, "utf-8");
26389
26663
  } catch {
26390
26664
  }
26391
26665
  }
26666
+ const pageCards = findPageCards(cwd);
26667
+ const entries = [...layoutPath ? [layoutPath] : [], ...findPageFiles(cwd)];
26668
+ const largeCard = /summary_large_image/.test(layout) || pageCards.some((f) => /^twitter-image\b/.test(path12__default.default.basename(f))) || readSourceGraph(entries, { maxDepth: 3, maxFiles: 400 }).some((f) => /summary_large_image/.test(f.source));
26392
26669
  return {
26393
26670
  siteCard,
26394
- pageCards: findPageCards(cwd),
26671
+ pageCards,
26395
26672
  layoutDeclaresImages: /images:\s*\[/.test(layout),
26396
- largeCard: /summary_large_image/.test(layout),
26673
+ largeCard,
26397
26674
  referencesImage: /og\.png|opengraph-image|og:image|images:\s*\[/.test(layout),
26398
- layoutFound: !!layoutPath
26675
+ layoutFound: !!layoutPath,
26676
+ trailingSlash: readTrailingSlash(cwd),
26677
+ codeCards: readCodeCards(cwd, pageCards),
26678
+ ...known.managedOgImages && { managedOgImages: known.managedOgImages }
26399
26679
  };
26400
26680
  }
26401
26681
  function judgeOgWiring(facts) {
@@ -26423,10 +26703,13 @@ function judgeOgWiring(facts) {
26423
26703
  fix: "Remove the images arrays from the root layout metadata and let Next serve each route its own opengraph-image file."
26424
26704
  });
26425
26705
  }
26426
- problems.push({
26427
- message: "seo_pages.managed_og_image (if set in Sonor) overrides per-page cards the same way",
26428
- fix: "Clear managed_og_image for this project so each page serves its own card."
26429
- });
26706
+ const managed = facts.managedOgImages ?? [];
26707
+ if (managed.length) {
26708
+ problems.push({
26709
+ message: `seo_pages.managed_og_image is set for ${managed.length} page${managed.length === 1 ? "" : "s"} (${managed.slice(0, 5).join(", ")}${managed.length > 5 ? ", \u2026" : ""}), which overrides ${managed.length === 1 ? "its" : "their"} own card`,
26710
+ fix: "Clear managed_og_image on those pages in Sonor so each serves its own card."
26711
+ });
26712
+ }
26430
26713
  } else if (!facts.referencesImage) {
26431
26714
  problems.push({
26432
26715
  message: "card asset exists but layout metadata never references it",
@@ -26439,10 +26722,24 @@ function judgeOgWiring(facts) {
26439
26722
  fix: "Set twitter: { card: 'summary_large_image' } in the root layout metadata."
26440
26723
  });
26441
26724
  }
26725
+ for (const card of facts.codeCards ?? []) {
26726
+ if (card.blogDeclaresImages) {
26727
+ problems.push({
26728
+ message: `${card.route} has its own card (${card.file}), but its page's generateBlogPostMetadata declares the featured image, which beats the card`,
26729
+ fix: "Pass images: false to generateBlogPostMetadata in that page."
26730
+ });
26731
+ }
26732
+ if (facts.trailingSlash && !card.declaresUrl) {
26733
+ problems.push({
26734
+ message: `${card.route}'s card (${card.file}) is served at \u2026/opengraph-image with no extension, which trailingSlash: true 308-redirects`,
26735
+ fix: "Declare the slashed URL from the page's metadata: openGraph.images = [codeCardImage(path)] from @sonordev/site-kit/og. Or, for cards that can be rendered ahead of time, key them in og.config.ts `cards` by URL and use paramCardImage."
26736
+ });
26737
+ }
26738
+ }
26442
26739
  return problems;
26443
26740
  }
26444
- function checkOgWiring(cwd) {
26445
- return judgeOgWiring(readOgWiring(cwd));
26741
+ function checkOgWiring(cwd, known = {}) {
26742
+ return judgeOgWiring(readOgWiring(cwd, known));
26446
26743
  }
26447
26744
 
26448
26745
  // src/cli/agent/ssr-bailout.ts
@@ -26547,7 +26844,7 @@ async function checkPackageInstalled(cwd) {
26547
26844
  };
26548
26845
  }
26549
26846
  async function checkSiteKitLayout(cwd) {
26550
- const layoutPath = chunkP4TB4ROG_js.findRootLayout(cwd);
26847
+ const layoutPath = chunkSEP5D4MI_js.findRootLayout(cwd);
26551
26848
  if (!layoutPath) {
26552
26849
  return {
26553
26850
  id: "layout.sitekit",
@@ -26591,7 +26888,7 @@ async function checkSiteKitLayout(cwd) {
26591
26888
  };
26592
26889
  }
26593
26890
  async function checkSitemap(cwd) {
26594
- const sitemapRel = chunkP4TB4ROG_js.findSitemapRoute(cwd);
26891
+ const sitemapRel = chunkSEP5D4MI_js.findSitemapRoute(cwd);
26595
26892
  if (!sitemapRel) {
26596
26893
  return {
26597
26894
  id: "sitemap.managed",
@@ -26649,6 +26946,90 @@ async function checkPostbuildSitemap(cwd) {
26649
26946
  fix: 'Add "postbuild": "sonor-register-sitemap --auto-discover || true" to package.json scripts.'
26650
26947
  };
26651
26948
  }
26949
+ var TRAILING_SLASH_ON = /\btrailingSlash\s*:\s*true\b/;
26950
+ async function readBuiltSitemaps(cwd) {
26951
+ const appDir = path12__default.default.join(cwd, ".next", "server", "app");
26952
+ const single = await readFileOrNull(path12__default.default.join(appDir, "sitemap.xml.body"));
26953
+ if (single !== null) return [single];
26954
+ let shards;
26955
+ try {
26956
+ shards = (await fs3__default.default.readdir(path12__default.default.join(appDir, "sitemap"))).filter((f) => f.endsWith(".xml.body"));
26957
+ } catch {
26958
+ return null;
26959
+ }
26960
+ if (shards.length === 0) return null;
26961
+ const bodies = await Promise.all(shards.map((f) => readFileOrNull(path12__default.default.join(appDir, "sitemap", f))));
26962
+ return bodies.filter((b) => b !== null);
26963
+ }
26964
+ function locPath(loc) {
26965
+ try {
26966
+ return new URL(loc).pathname;
26967
+ } catch {
26968
+ return loc;
26969
+ }
26970
+ }
26971
+ async function checkSitemapTrailingSlash(cwd) {
26972
+ const id = "sitemap.trailing-slash";
26973
+ const title = "Sitemap trailing slash";
26974
+ const configRel = chunkSEP5D4MI_js.findNextConfig(cwd);
26975
+ const config2 = configRel ? await readFileOrNull(path12__default.default.join(cwd, configRel)) || "" : "";
26976
+ if (!TRAILING_SLASH_ON.test(config2)) {
26977
+ return { id, title, level: "ok", message: "next.config leaves trailingSlash off" };
26978
+ }
26979
+ const sitemapRel = chunkSEP5D4MI_js.findSitemapRoute(cwd);
26980
+ const source = sitemapRel ? await readFileOrNull(path12__default.default.join(cwd, sitemapRel)) || "" : "";
26981
+ const forcesOff = /\btrailingSlash\s*:\s*false\b/.test(source);
26982
+ const removeForcedOff = `Remove trailingSlash: false from ${sitemapRel}. createSitemap follows next.config.`;
26983
+ const built = await readBuiltSitemaps(cwd);
26984
+ if (built) {
26985
+ const locs = built.flatMap((xml) => [...xml.matchAll(/<loc>\s*([^<\s]+)\s*<\/loc>/g)].map((m) => m[1]));
26986
+ const unslashed = locs.filter((loc) => {
26987
+ const p = locPath(loc);
26988
+ return chunkR7GHP3FY_js.applyTrailingSlash(p, true) !== p;
26989
+ });
26990
+ if (unslashed.length === 0) {
26991
+ return { id, title, level: "ok", message: `All ${locs.length} URLs in the built sitemap match trailingSlash: true` };
26992
+ }
26993
+ const fix = forcesOff ? removeForcedOff : source.includes("createSitemap") ? "Upgrade @sonordev/site-kit: createSitemap now follows next.config trailingSlash. If it's already current, something loads the kit outside Next's bundler (serverExternalPackages), so pass createSitemap({ trailingSlash: true })." : `End every <loc> except / and files like /llms.txt in "/", or switch ${sitemapRel ?? "the sitemap route"} to createSitemap.`;
26994
+ return {
26995
+ id,
26996
+ title,
26997
+ level: "warn",
26998
+ message: `${unslashed.length} of ${locs.length} built sitemap URLs lack the trailing slash ${configRel} requires`,
26999
+ detail: `Each one 308-redirects. ${unslashed.slice(0, 5).join(", ")}`,
27000
+ fix: `${fix} Then rebuild.`
27001
+ };
27002
+ }
27003
+ if (!sitemapRel) {
27004
+ return { id, title, level: "skip", message: "No sitemap route to check" };
27005
+ }
27006
+ if (forcesOff) {
27007
+ return {
27008
+ id,
27009
+ title,
27010
+ level: "warn",
27011
+ message: `${sitemapRel} passes trailingSlash: false but ${configRel} sets trailingSlash: true`,
27012
+ detail: "Every sitemap URL except / will 308-redirect.",
27013
+ fix: removeForcedOff
27014
+ };
27015
+ }
27016
+ if (source.includes("createSitemap")) {
27017
+ return {
27018
+ id,
27019
+ title,
27020
+ level: "ok",
27021
+ message: "createSitemap follows next.config trailingSlash",
27022
+ detail: "No build to confirm against. Run `next build`, then doctor again to check the emitted URLs."
27023
+ };
27024
+ }
27025
+ return {
27026
+ id,
27027
+ title,
27028
+ level: "skip",
27029
+ message: "Custom sitemap and no build to check",
27030
+ fix: 'Run `next build`, then doctor again. Every <loc> except / and files like /llms.txt must end in "/".'
27031
+ };
27032
+ }
26652
27033
  async function checkApiReachable(timeoutMs = 5e3) {
26653
27034
  const key = process.env.SONOR_API_KEY;
26654
27035
  try {
@@ -26980,7 +27361,7 @@ async function checkSsrRenderFromBuild(cwd) {
26980
27361
  }
26981
27362
  async function checkNetlifyMiddleware(cwd) {
26982
27363
  const runtimeRe = /runtime\s*[:=]\s*['"](nodejs|edge)['"]/;
26983
- for (const rel of chunkP4TB4ROG_js.NEXT_PROXY_FILES) {
27364
+ for (const rel of chunkSEP5D4MI_js.NEXT_PROXY_FILES) {
26984
27365
  const content = await readFileOrNull(path12__default.default.join(cwd, rel));
26985
27366
  if (content === null) continue;
26986
27367
  if (runtimeRe.test(content)) {
@@ -26996,7 +27377,7 @@ async function checkNetlifyMiddleware(cwd) {
26996
27377
  }
26997
27378
  return { id: "middleware.netlify", title: "Proxy / middleware", level: "ok", message: `${rel} present` };
26998
27379
  }
26999
- for (const rel of chunkP4TB4ROG_js.NEXT_MIDDLEWARE_FILES) {
27380
+ for (const rel of chunkSEP5D4MI_js.NEXT_MIDDLEWARE_FILES) {
27000
27381
  const content = await readFileOrNull(path12__default.default.join(cwd, rel));
27001
27382
  if (content === null) continue;
27002
27383
  if (/runtime\s*[:=]\s*['"]nodejs['"]/.test(content)) {
@@ -27092,8 +27473,8 @@ async function checkImageDimsDrift(cwd) {
27092
27473
  }
27093
27474
  return { id: "images.dims-drift", title: "Image dims vs SVG", level: "ok", message: "Declared dims match SVG viewBoxes" };
27094
27475
  }
27095
- async function checkOgCard(cwd) {
27096
- const problems = judgeOgWiring(readOgWiring(cwd));
27476
+ async function checkOgCard(cwd, known = {}) {
27477
+ const problems = judgeOgWiring(readOgWiring(cwd, known));
27097
27478
  if (!problems.length) {
27098
27479
  return { id: "og.card", title: "Open Graph card", level: "ok", message: "Cards present and wired" };
27099
27480
  }
@@ -27114,12 +27495,59 @@ async function staticChecks(cwd) {
27114
27495
  await checkSiteKitLayout(cwd),
27115
27496
  await checkSitemap(cwd),
27116
27497
  await checkPostbuildSitemap(cwd),
27498
+ await checkSitemapTrailingSlash(cwd),
27117
27499
  await checkNetlifyMiddleware(cwd),
27118
27500
  await checkImageDimsDrift(cwd),
27119
27501
  await checkOgCard(cwd)
27120
27502
  ];
27121
27503
  }
27122
27504
 
27505
+ // src/og/route-copy.ts
27506
+ var RENDER_CONCURRENCY = 4;
27507
+ async function pooled(items, limit, fn) {
27508
+ const results = new Array(items.length);
27509
+ let cursor = 0;
27510
+ const workers = Array.from({ length: Math.min(limit, items.length) }, async () => {
27511
+ while (cursor < items.length) {
27512
+ const i = cursor++;
27513
+ results[i] = await fn(items[i], i);
27514
+ }
27515
+ });
27516
+ await Promise.all(workers);
27517
+ return results;
27518
+ }
27519
+ async function resolveRouteCopy(paths) {
27520
+ let getSEOPageData = null;
27521
+ try {
27522
+ if (process.env.SONOR_API_KEY) {
27523
+ ;
27524
+ ({ getSEOPageData } = await import('../api-XR5APCH3.js'));
27525
+ }
27526
+ } catch {
27527
+ getSEOPageData = null;
27528
+ }
27529
+ if (!getSEOPageData) return paths.map((p) => ({ path: p }));
27530
+ return pooled(paths, RENDER_CONCURRENCY, async (p) => {
27531
+ try {
27532
+ const page = await getSEOPageData("", p);
27533
+ const title = page?.managed_title ?? page?.managed_og_title;
27534
+ const description = page?.managed_meta_description ?? page?.managed_og_description;
27535
+ const managedOgImage = page?.managed_og_image || void 0;
27536
+ return { path: p, title: title || void 0, description: description || void 0, managedOgImage };
27537
+ } catch {
27538
+ return { path: p };
27539
+ }
27540
+ });
27541
+ }
27542
+ async function readManagedOgImages(cwd) {
27543
+ if (!process.env.SONOR_API_KEY) return void 0;
27544
+ const appDir = chunkSEP5D4MI_js.findAppDirForDiscovery(cwd);
27545
+ if (!appDir) return void 0;
27546
+ const routes = [...new Set(chunkSEP5D4MI_js.discoverNextJsRoutes(appDir).map((r) => r.path))];
27547
+ const copy = await resolveRouteCopy(routes);
27548
+ return copy.filter((r) => r.managedOgImage).map((r) => r.path);
27549
+ }
27550
+
27123
27551
  // src/cli/commands/doctor.ts
27124
27552
  function countLevels(checks) {
27125
27553
  return {
@@ -27132,6 +27560,11 @@ function countLevels(checks) {
27132
27560
  async function collectChecks(cwd, online) {
27133
27561
  const checks = await staticChecks(cwd);
27134
27562
  if (online) {
27563
+ const managedOgImages = await readManagedOgImages(cwd).catch(() => void 0);
27564
+ if (managedOgImages) {
27565
+ const i = checks.findIndex((c) => c.id === "og.card");
27566
+ if (i !== -1) checks[i] = await checkOgCard(cwd, { managedOgImages });
27567
+ }
27135
27568
  checks.push(await checkApiReachable(), await checkKeyValid(), await checkLlmsTxt());
27136
27569
  checks.push(...await checkClientAuth());
27137
27570
  }
@@ -27188,87 +27621,7 @@ async function statusCommand(options) {
27188
27621
  const online = options.offline ? false : true;
27189
27622
  await runCommand(ctx, (c) => run2(c, online), renderChecksHuman("Site-Kit Integration Status"));
27190
27623
  }
27191
-
27192
- // src/og/pages.ts
27193
- var DYNAMIC = "*";
27194
- function pathSegments(path30) {
27195
- return path30.split("/").filter(Boolean);
27196
- }
27197
- function stripBrandSuffix(title, brand) {
27198
- const cleaned = title.replace(/\s*[|–—-]\s*[^|–—-]+$/, "").trim();
27199
- if (!cleaned) return title.trim();
27200
- if (brand && cleaned.toLowerCase() === brand.toLowerCase()) return title.trim();
27201
- return cleaned;
27202
- }
27203
- function titleFromPath(path30) {
27204
- const last = pathSegments(path30).filter((s) => s !== DYNAMIC).pop();
27205
- if (!last) return "Home";
27206
- return last.replace(/[-_]+/g, " ").replace(/\b\w/g, (c) => c.toUpperCase()).trim();
27207
- }
27208
- function kickerFromPath(path30, fallback) {
27209
- const parts = pathSegments(path30);
27210
- const section = parts.includes(DYNAMIC) ? parts.filter((s) => s !== DYNAMIC) : parts.slice(0, -1);
27211
- if (!section.length) return fallback;
27212
- return section.join(" / ").replace(/[-_]+/g, " ");
27213
- }
27214
- function clampSubtitle(text, max = 100) {
27215
- if (!text) return void 0;
27216
- const flat = text.replace(/\s+/g, " ").trim();
27217
- if (!flat) return void 0;
27218
- if (flat.length <= max) return flat;
27219
- const sentence = flat.slice(0, max + 1).match(/^.*[.!?](?=\s|$)/)?.[0];
27220
- if (sentence && sentence.length >= 30) return sentence.trim();
27221
- return void 0;
27222
- }
27223
- function kickerIsRedundant(kicker, title) {
27224
- if (!kicker) return false;
27225
- const norm = (s) => s.toLowerCase().replace(/[^a-z0-9]+/g, " ").trim();
27226
- const k2 = norm(kicker);
27227
- const t = norm(title);
27228
- if (!k2) return true;
27229
- if (t.includes(k2) || k2.includes(t)) return true;
27230
- const titleWords = new Set(t.split(" "));
27231
- return k2.split(" ").every((w) => titleWords.has(w));
27232
- }
27233
- function slugForPath(path30) {
27234
- const segments = pathSegments(path30);
27235
- if (!segments.length) return "home";
27236
- return segments.map((s) => s === DYNAMIC ? "any" : s).join("-").replace(/[^a-zA-Z0-9]+/g, "-").replace(/^-+|-+$/g, "").toLowerCase();
27237
- }
27238
- function unmatchedCardKeys(cards, paths) {
27239
- if (!cards) return [];
27240
- const known = new Set(paths.flatMap((p) => [p, slugForPath(p)]));
27241
- return Object.keys(cards).filter((key) => !known.has(key));
27242
- }
27243
- function pageCardConfig(base, route, brand) {
27244
- const override = base.cards?.[route.path] ?? base.cards?.[slugForPath(route.path)];
27245
- const isHome = route.path === "/";
27246
- const derived = isHome ? { ...base, cards: void 0 } : (() => {
27247
- const title = route.title ? stripBrandSuffix(route.title, brand) : titleFromPath(route.path);
27248
- const kicker = kickerFromPath(route.path, base.content.kicker);
27249
- return {
27250
- ...base,
27251
- // `cards` is a build-time instruction, not part of a rendered card.
27252
- cards: void 0,
27253
- content: {
27254
- ...base.content,
27255
- kicker: kickerIsRedundant(kicker, title) ? void 0 : kicker,
27256
- title,
27257
- subtitle: clampSubtitle(route.description) ?? base.content.subtitle
27258
- }
27259
- };
27260
- })();
27261
- if (!override) return derived;
27262
- return {
27263
- ...derived,
27264
- ...override,
27265
- content: { ...derived.content, ...override.content }
27266
- };
27267
- }
27268
-
27269
- // src/cli/commands/og.ts
27270
27624
  var execFileAsync5 = util.promisify(childProcess.execFile);
27271
- var RENDER_CONCURRENCY = 4;
27272
27625
  var CARD_KEY_FIX = "Key `cards` by route path (`/services/garage`) or slug (`services-garage`). A dynamic route is one `*` per dynamic level \u2014 `/services/*` for `[slug]`, plus a star for each nested `[param]`.";
27273
27626
  var CHROME_CANDIDATES = [
27274
27627
  process.env.SONOR_CHROME_PATH,
@@ -27281,7 +27634,7 @@ var CHROME_CANDIDATES = [
27281
27634
  ].filter((p) => !!p);
27282
27635
  function findChrome() {
27283
27636
  for (const candidate of CHROME_CANDIDATES) {
27284
- if (fs.existsSync(candidate)) return candidate;
27637
+ if (fs20.existsSync(candidate)) return candidate;
27285
27638
  }
27286
27639
  return null;
27287
27640
  }
@@ -27289,7 +27642,7 @@ async function loadConfig2(cwd) {
27289
27642
  const candidates = ["og.config.ts", "og.config.mts", "og.config.mjs", "og.config.js"];
27290
27643
  for (const rel of candidates) {
27291
27644
  const full = path12__default.default.join(cwd, rel);
27292
- if (!fs.existsSync(full)) continue;
27645
+ if (!fs20.existsSync(full)) continue;
27293
27646
  try {
27294
27647
  const mod = await import(
27295
27648
  /* @vite-ignore */
@@ -27326,7 +27679,7 @@ async function seedConfig(cwd) {
27326
27679
  } catch {
27327
27680
  }
27328
27681
  for (const candidate of ["/logo-mark.svg", "/logo.svg", "/logohorizontal.svg"]) {
27329
- if (fs.existsSync(path12__default.default.join(cwd, "public", candidate))) {
27682
+ if (fs20.existsSync(path12__default.default.join(cwd, "public", candidate))) {
27330
27683
  logo = candidate;
27331
27684
  break;
27332
27685
  }
@@ -27341,14 +27694,14 @@ async function seedConfig(cwd) {
27341
27694
  function inlinePublicPaths(html, cwd) {
27342
27695
  return html.replace(/src="(\/[^"]+)"/g, (_3, p) => {
27343
27696
  const full = path12__default.default.join(cwd, "public", p);
27344
- return fs.existsSync(full) ? `src="file://${full}"` : `src="${p}"`;
27697
+ return fs20.existsSync(full) ? `src="file://${full}"` : `src="${p}"`;
27345
27698
  });
27346
27699
  }
27347
27700
  async function renderCard(config2, outPath, cwd, chrome, tmpSuffix) {
27348
27701
  const tmpHtml = path12__default.default.join(cwd, `.sonor-og-${tmpSuffix}.html`);
27349
27702
  try {
27350
27703
  await fs3__default.default.mkdir(path12__default.default.dirname(outPath), { recursive: true });
27351
- await fs3__default.default.writeFile(tmpHtml, inlinePublicPaths(chunk6CJP7BFM_js.buildOgHtml(config2), cwd));
27704
+ await fs3__default.default.writeFile(tmpHtml, inlinePublicPaths(chunkOEW2LFOV_js.buildOgHtml(config2), cwd));
27352
27705
  const { stdout } = await execFileAsync5(
27353
27706
  chrome,
27354
27707
  [
@@ -27369,15 +27722,15 @@ async function renderCard(config2, outPath, cwd, chrome, tmpSuffix) {
27369
27722
  }
27370
27723
  }
27371
27724
  function parseReport(dom) {
27372
- const raw = dom.match(new RegExp(`${chunk6CJP7BFM_js.OG_REPORT_ATTR}="([^"]*)"`))?.[1];
27725
+ const raw = dom.match(new RegExp(`${chunkCUNZAD46_js.OG_REPORT_ATTR}="([^"]*)"`))?.[1];
27373
27726
  if (!raw) {
27374
- return { fits: true, titlePx: chunk6CJP7BFM_js.TITLE_MAX_PX, issues: ["card rendered but could not be measured (fitter did not run)"] };
27727
+ return { fits: true, titlePx: chunkCUNZAD46_js.TITLE_MAX_PX, issues: ["card rendered but could not be measured (fitter did not run)"] };
27375
27728
  }
27376
27729
  try {
27377
27730
  const decoded = raw.replace(/&quot;/g, '"').replace(/&amp;/g, "&").replace(/&lt;/g, "<").replace(/&gt;/g, ">");
27378
27731
  return JSON.parse(decoded);
27379
27732
  } catch {
27380
- return { fits: true, titlePx: chunk6CJP7BFM_js.TITLE_MAX_PX, issues: ["card rendered but the fit report was unreadable"] };
27733
+ return { fits: true, titlePx: chunkCUNZAD46_js.TITLE_MAX_PX, issues: ["card rendered but the fit report was unreadable"] };
27381
27734
  }
27382
27735
  }
27383
27736
  async function compressCard(pngPath, cwd) {
@@ -27393,12 +27746,12 @@ async function compressCard(pngPath, cwd) {
27393
27746
  }
27394
27747
  }
27395
27748
  function codeOgImageFile(dir) {
27396
- return chunkP4TB4ROG_js.findConventionFile(dir, "opengraph-image");
27749
+ return chunkSEP5D4MI_js.findConventionFile(dir, "opengraph-image") ?? chunkSEP5D4MI_js.findConventionFile(path12__default.default.join(dir, "opengraph-image"), "route");
27397
27750
  }
27398
27751
  function discoverDynamicSegments(appDir) {
27399
27752
  const found = [];
27400
27753
  const walk = (dir, urlSegments, pattern) => {
27401
- for (const entry of fs.readdirSync(dir, { withFileTypes: true })) {
27754
+ for (const entry of fs20.readdirSync(dir, { withFileTypes: true })) {
27402
27755
  if (!entry.isDirectory()) continue;
27403
27756
  if (entry.name.startsWith("_") || entry.name.startsWith(".")) continue;
27404
27757
  if (entry.name === "api" || entry.name === "node_modules") continue;
@@ -27406,11 +27759,13 @@ function discoverDynamicSegments(appDir) {
27406
27759
  const isGroup = entry.name.startsWith("(") && entry.name.endsWith(")");
27407
27760
  const isDynamic = entry.name.startsWith("[") && entry.name.endsWith("]");
27408
27761
  const nextUrl = isGroup || isDynamic ? urlSegments : [...urlSegments, entry.name];
27409
- const nextPattern = isGroup ? pattern : [...pattern, isDynamic ? DYNAMIC : entry.name];
27762
+ const nextPattern = isGroup ? pattern : [...pattern, isDynamic ? chunkOEW2LFOV_js.DYNAMIC : entry.name];
27410
27763
  if (isDynamic) {
27411
- if (chunkP4TB4ROG_js.hasPageFile(full)) {
27764
+ if (chunkSEP5D4MI_js.hasPageFile(full)) {
27412
27765
  found.push({ dir: full, path: `/${nextPattern.join("/")}`, parent: `/${urlSegments.join("/")}` });
27413
27766
  }
27767
+ } else if (!isGroup && nextPattern.includes(chunkOEW2LFOV_js.DYNAMIC) && chunkSEP5D4MI_js.hasPageFile(full)) {
27768
+ found.push({ dir: full, path: `/${nextPattern.join("/")}`, parent: null });
27414
27769
  }
27415
27770
  walk(full, nextUrl, nextPattern);
27416
27771
  }
@@ -27418,43 +27773,9 @@ function discoverDynamicSegments(appDir) {
27418
27773
  walk(appDir, [], []);
27419
27774
  return found;
27420
27775
  }
27421
- async function pooled(items, limit, fn) {
27422
- const results = new Array(items.length);
27423
- let cursor = 0;
27424
- const workers = Array.from({ length: Math.min(limit, items.length) }, async () => {
27425
- while (cursor < items.length) {
27426
- const i = cursor++;
27427
- results[i] = await fn(items[i], i);
27428
- }
27429
- });
27430
- await Promise.all(workers);
27431
- return results;
27432
- }
27433
- async function resolveRouteCopy(paths) {
27434
- let getSEOPageData = null;
27435
- try {
27436
- if (process.env.SONOR_API_KEY) {
27437
- ;
27438
- ({ getSEOPageData } = await import('../api-XR5APCH3.js'));
27439
- }
27440
- } catch {
27441
- getSEOPageData = null;
27442
- }
27443
- if (!getSEOPageData) return paths.map((p) => ({ path: p }));
27444
- return pooled(paths, RENDER_CONCURRENCY, async (p) => {
27445
- try {
27446
- const page = await getSEOPageData("", p);
27447
- const title = page?.managed_title ?? page?.managed_og_title;
27448
- const description = page?.managed_meta_description ?? page?.managed_og_description;
27449
- return { path: p, title: title || void 0, description: description || void 0 };
27450
- } catch {
27451
- return { path: p };
27452
- }
27453
- });
27454
- }
27455
27776
  function reportCard(label, report) {
27456
27777
  if (report.fits && !report.issues.length) {
27457
- const shrunk = report.titlePx < chunk6CJP7BFM_js.TITLE_MAX_PX ? source_default.gray(` (title fitted to ${report.titlePx}px)`) : "";
27778
+ const shrunk = report.titlePx < chunkCUNZAD46_js.TITLE_MAX_PX ? source_default.gray(` (title fitted to ${report.titlePx}px)`) : "";
27458
27779
  console.log(` ${source_default.green("\u2713")} ${label}${shrunk}`);
27459
27780
  return true;
27460
27781
  }
@@ -27496,6 +27817,7 @@ async function runOg(options) {
27496
27817
  let cardKeyFix = null;
27497
27818
  let pageCardsWritten = 0;
27498
27819
  let totalCardBytes = 0;
27820
+ let managedOgImages;
27499
27821
  const spinner = ora("Rendering the site card...").start();
27500
27822
  try {
27501
27823
  const report = await renderCard(config2, outPath, cwd, chrome, "site");
@@ -27513,11 +27835,11 @@ async function runOg(options) {
27513
27835
  };
27514
27836
  }
27515
27837
  if (options.pages !== false) {
27516
- const appDir = chunkP4TB4ROG_js.findAppDirForDiscovery(cwd);
27838
+ const appDir = chunkSEP5D4MI_js.findAppDirForDiscovery(cwd);
27517
27839
  if (!appDir) {
27518
27840
  console.log(source_default.yellow(" ! No app/ directory found \u2014 skipped per-page cards."));
27519
27841
  } else {
27520
- const routes = [...new Set(chunkP4TB4ROG_js.discoverNextJsRoutes(appDir).map((r) => r.path))];
27842
+ const routes = [...new Set(chunkSEP5D4MI_js.discoverNextJsRoutes(appDir).map((r) => r.path))];
27521
27843
  if (!routes.length) {
27522
27844
  console.log(source_default.yellow(" ! No static routes discovered \u2014 skipped per-page cards."));
27523
27845
  } else {
@@ -27527,6 +27849,9 @@ async function runOg(options) {
27527
27849
  const withCopy = await resolveRouteCopy(routes);
27528
27850
  const named = withCopy.filter((r) => r.title).length;
27529
27851
  copySpinner.stop();
27852
+ if (process.env.SONOR_API_KEY) {
27853
+ managedOgImages = withCopy.filter((r) => r.managedOgImage).map((r) => r.path);
27854
+ }
27530
27855
  if (named) {
27531
27856
  console.log(source_default.gray(` ${named}/${routes.length} titled from Sonor, the rest from the route path`));
27532
27857
  } else {
@@ -27535,14 +27860,16 @@ async function runOg(options) {
27535
27860
  const brand = config2.content.title.replace(/\n/g, " ").trim();
27536
27861
  const copyByPath = new Map(withCopy.map((r) => [r.path, r]));
27537
27862
  const dynamic = discoverDynamicSegments(appDir).map((seg) => ({
27538
- ...copyByPath.get(seg.parent) ?? {},
27863
+ ...seg.parent !== null && copyByPath.get(seg.parent) || {},
27539
27864
  path: seg.path,
27540
27865
  dir: seg.dir
27541
27866
  }));
27542
27867
  const targets = [...withCopy, ...dynamic];
27543
- const strayKeys = unmatchedCardKeys(config2.cards, targets.map((t) => t.path));
27868
+ const paramKeys = chunkOEW2LFOV_js.paramCardKeys(config2.cards, targets.map((t) => t.path));
27869
+ const paramRoutes = paramKeys.length ? await resolveRouteCopy(paramKeys.map((k2) => k2.path)) : [];
27870
+ const strayKeys = chunkOEW2LFOV_js.unmatchedCardKeys(config2.cards, targets.map((t) => t.path));
27544
27871
  if (strayKeys.length) {
27545
- const patterns = targets.filter((t) => t.path.includes(DYNAMIC)).map((t) => t.path);
27872
+ const patterns = targets.filter((t) => t.path.includes(chunkOEW2LFOV_js.DYNAMIC)).map((t) => t.path);
27546
27873
  console.log(
27547
27874
  source_default.yellow(
27548
27875
  ` ! ${strayKeys.length} \`cards\` key${strayKeys.length === 1 ? "" : "s"} in og.config.ts matched no route: ${strayKeys.join(", ")}`
@@ -27572,7 +27899,7 @@ async function runOg(options) {
27572
27899
  checks.push({ id: "og.code-card", title: route.path, level: "ok", message: `Code-based card kept: ${file}` });
27573
27900
  }
27574
27901
  const reports = await pooled(toRender, RENDER_CONCURRENCY, async (route, i) => {
27575
- const pageConfig = pageCardConfig(config2, route, brand);
27902
+ const pageConfig = chunkOEW2LFOV_js.pageCardConfig(config2, route, brand);
27576
27903
  const dir = route.dir;
27577
27904
  for (const ext2 of ["png", "jpg", "jpeg"]) {
27578
27905
  await fs3__default.default.rm(path12__default.default.join(dir, `opengraph-image.${ext2}`), { force: true });
@@ -27586,10 +27913,36 @@ async function runOg(options) {
27586
27913
  clean = reportCard(`${route.path} ${source_default.gray(path12__default.default.relative(cwd, file))}`, report) && clean;
27587
27914
  checks.push(cardCheck(route.path, path12__default.default.relative(cwd, file), report));
27588
27915
  }
27589
- pageCardsWritten = reports.length;
27590
- const bytes = await totalBytes(reports.map((r) => r.file));
27916
+ const paramDir = path12__default.default.join(cwd, "public", chunkOEW2LFOV_js.PARAM_CARD_DIR);
27917
+ await fs3__default.default.rm(paramDir, { recursive: true, force: true });
27918
+ let paramReports = [];
27919
+ if (paramRoutes.length) {
27920
+ console.log("");
27921
+ console.log(source_default.bold(" Per-URL cards") + source_default.gray(` public/${chunkOEW2LFOV_js.PARAM_CARD_DIR}/, declare with paramCardImage()`));
27922
+ paramReports = await pooled(paramRoutes, RENDER_CONCURRENCY, async (route, i) => {
27923
+ const pageConfig = chunkOEW2LFOV_js.pageCardConfig(config2, route, brand);
27924
+ const jpg = path12__default.default.join(cwd, "public", chunkOEW2LFOV_js.paramCardUrl(route.path));
27925
+ const png = jpg.replace(/\.jpg$/, ".png");
27926
+ const report = await renderCard(pageConfig, png, cwd, chrome, `param-${i}`);
27927
+ const file = await compressCard(png, cwd);
27928
+ if (file !== jpg) {
27929
+ report.fits = false;
27930
+ report.issues = [...report.issues, "sharp is needed to write per-URL cards as .jpg. Add it: pnpm add -D sharp"];
27931
+ }
27932
+ return { route, file, report };
27933
+ });
27934
+ for (const { route, file, report } of paramReports) {
27935
+ clean = reportCard(`${route.path} ${source_default.gray(path12__default.default.relative(cwd, file))}`, report) && clean;
27936
+ checks.push(cardCheck(route.path, path12__default.default.relative(cwd, file), report));
27937
+ }
27938
+ }
27939
+ pageCardsWritten = reports.length + paramReports.length;
27940
+ const bytes = await totalBytes([...reports, ...paramReports].map((r) => r.file));
27591
27941
  totalCardBytes = bytes;
27592
- console.log(source_default.gray(` ${(bytes / 1024 / 1024).toFixed(1)} MB of cards. Next serves these automatically \u2014 no per-page metadata needed.`));
27942
+ console.log(source_default.gray(` ${(bytes / 1024 / 1024).toFixed(1)} MB of cards. Next serves the route cards automatically \u2014 no per-page metadata needed.`));
27943
+ if (paramReports.length) {
27944
+ console.log(source_default.gray(" Per-URL cards need the page to declare them: openGraph.images = [paramCardImage(path, { config })]."));
27945
+ }
27593
27946
  }
27594
27947
  }
27595
27948
  }
@@ -27606,7 +27959,7 @@ async function runOg(options) {
27606
27959
  console.log(source_default.gray(" (sharp not resolvable \u2014 skipped the 300px preview)"));
27607
27960
  }
27608
27961
  }
27609
- const problems = checkOgWiring(cwd);
27962
+ const problems = checkOgWiring(cwd, { managedOgImages });
27610
27963
  console.log("");
27611
27964
  if (problems.length) {
27612
27965
  console.log(source_default.yellow(" Metadata wiring:"));
@@ -27661,12 +28014,12 @@ function routeOutputDir(appDir, urlPath) {
27661
28014
  let dir = appDir;
27662
28015
  for (const segment of segments) {
27663
28016
  const direct = path12__default.default.join(dir, segment);
27664
- if (fs.existsSync(direct)) {
28017
+ if (fs20.existsSync(direct)) {
27665
28018
  dir = direct;
27666
28019
  continue;
27667
28020
  }
27668
- const group = fs.existsSync(dir) ? fs.readdirSync(dir, { withFileTypes: true }).find(
27669
- (e) => e.isDirectory() && e.name.startsWith("(") && e.name.endsWith(")") && fs.existsSync(path12__default.default.join(dir, e.name, segment))
28021
+ const group = fs20.existsSync(dir) ? fs20.readdirSync(dir, { withFileTypes: true }).find(
28022
+ (e) => e.isDirectory() && e.name.startsWith("(") && e.name.endsWith(")") && fs20.existsSync(path12__default.default.join(dir, e.name, segment))
27670
28023
  ) : void 0;
27671
28024
  dir = group ? path12__default.default.join(dir, group.name, segment) : direct;
27672
28025
  }
@@ -27684,7 +28037,7 @@ async function totalBytes(files) {
27684
28037
  }
27685
28038
  async function siteDomain(cwd) {
27686
28039
  const envFile = path12__default.default.join(cwd, ".env.local");
27687
- if (fs.existsSync(envFile)) {
28040
+ if (fs20.existsSync(envFile)) {
27688
28041
  const env3 = await fs3__default.default.readFile(envFile, "utf-8").catch(() => "");
27689
28042
  const url = env3.match(/^NEXT_PUBLIC_SITE_URL=(.+)$/m)?.[1]?.trim();
27690
28043
  if (url) return url.replace(/\/+$/, "");
@@ -27808,14 +28161,14 @@ var hs = new RegExp(pe, "g");
27808
28161
  var as = /\\\\/g;
27809
28162
  var ls = /\\{/g;
27810
28163
  var cs = /\\}/g;
27811
- var fs22 = /\\,/g;
28164
+ var fs23 = /\\,/g;
27812
28165
  var us = /\\./g;
27813
28166
  var ds = 1e5;
27814
28167
  function Ht(n5) {
27815
28168
  return isNaN(n5) ? n5.charCodeAt(0) : parseInt(n5, 10);
27816
28169
  }
27817
28170
  function ps(n5) {
27818
- return n5.replace(as, fe).replace(ls, ue).replace(cs, qt).replace(fs22, de).replace(us, pe);
28171
+ return n5.replace(as, fe).replace(ls, ue).replace(cs, qt).replace(fs23, de).replace(us, pe);
27819
28172
  }
27820
28173
  function ms(n5) {
27821
28174
  return n5.replace(is, "\\").replace(rs, "{").replace(ns, "}").replace(os5, ",").replace(hs, ".");
@@ -29435,9 +29788,9 @@ var V = class extends events.EventEmitter {
29435
29788
  return oi;
29436
29789
  }
29437
29790
  };
29438
- var vi = fs.realpathSync.native;
29439
- var wt = { lstatSync: fs.lstatSync, readdir: fs.readdir, readdirSync: fs.readdirSync, readlinkSync: fs.readlinkSync, realpathSync: vi, promises: { lstat: fs3.lstat, readdir: fs3.readdir, readlink: fs3.readlink, realpath: fs3.realpath } };
29440
- var Ue = (n5) => !n5 || n5 === wt || n5 === fs__namespace ? wt : { ...wt, ...n5, promises: { ...wt.promises, ...n5.promises || {} } };
29791
+ var vi = fs20.realpathSync.native;
29792
+ var wt = { lstatSync: fs20.lstatSync, readdir: fs20.readdir, readdirSync: fs20.readdirSync, readlinkSync: fs20.readlinkSync, realpathSync: vi, promises: { lstat: fs3.lstat, readdir: fs3.readdir, readlink: fs3.readlink, realpath: fs3.realpath } };
29793
+ var Ue = (n5) => !n5 || n5 === wt || n5 === fs20__namespace ? wt : { ...wt, ...n5, promises: { ...wt.promises, ...n5.promises || {} } };
29441
29794
  var $e = /^\\\\\?\\([a-z]:)\\?$/i;
29442
29795
  var Ri = (n5) => n5.replace(/\//g, "\\").replace($e, "$1\\");
29443
29796
  var Oi = /[\\\/]/;
@@ -31166,7 +31519,7 @@ function findManifestPath() {
31166
31519
  let dir = baseDir;
31167
31520
  for (let i = 0; i < 8; i++) {
31168
31521
  const candidate = path12__default.default.join(dir, "agent-manifest.json");
31169
- if (fs__namespace.default.existsSync(candidate)) return candidate;
31522
+ if (fs20__namespace.default.existsSync(candidate)) return candidate;
31170
31523
  const parent = path12__default.default.dirname(dir);
31171
31524
  if (parent === dir) break;
31172
31525
  dir = parent;
@@ -31182,7 +31535,7 @@ async function run5(ctx, options) {
31182
31535
  "Reinstall @sonordev/site-kit, or run `npm run build` if working from source."
31183
31536
  );
31184
31537
  }
31185
- const manifest = JSON.parse(fs__namespace.default.readFileSync(manifestPath, "utf-8"));
31538
+ const manifest = JSON.parse(fs20__namespace.default.readFileSync(manifestPath, "utf-8"));
31186
31539
  if (options.section) {
31187
31540
  const section = options.section;
31188
31541
  if (!(section in manifest)) {
@@ -31246,7 +31599,7 @@ async function syncCommand2(options) {
31246
31599
  }
31247
31600
  async function syncPagesToPortal(apiUrl, apiKey, dryRun) {
31248
31601
  const spinner = ora("Discovering pages...").start();
31249
- const appDir = chunkP4TB4ROG_js.findAppDirForDiscovery();
31602
+ const appDir = chunkSEP5D4MI_js.findAppDirForDiscovery();
31250
31603
  if (!appDir) {
31251
31604
  spinner.fail("Could not find app directory");
31252
31605
  return;
@@ -31309,10 +31662,10 @@ async function syncPagesToPortal(apiUrl, apiKey, dryRun) {
31309
31662
  }
31310
31663
  function discoverPages(appDir, currentPath = "", pages = []) {
31311
31664
  const fullPath = path12__default.default.join(appDir, currentPath);
31312
- if (!fs.existsSync(fullPath)) {
31665
+ if (!fs20.existsSync(fullPath)) {
31313
31666
  return pages;
31314
31667
  }
31315
- const entries = fs.readdirSync(fullPath);
31668
+ const entries = fs20.readdirSync(fullPath);
31316
31669
  const hasPage = entries.some((entry) => PAGE_FILES.includes(entry));
31317
31670
  if (hasPage) {
31318
31671
  let urlPath = "/" + currentPath;
@@ -31331,7 +31684,7 @@ function discoverPages(appDir, currentPath = "", pages = []) {
31331
31684
  }
31332
31685
  for (const entry of entries) {
31333
31686
  const entryPath = path12__default.default.join(fullPath, entry);
31334
- const stat = fs.statSync(entryPath);
31687
+ const stat = fs20.statSync(entryPath);
31335
31688
  if (stat.isDirectory()) {
31336
31689
  const folderName = entry.toLowerCase();
31337
31690
  if (IGNORED_FOLDERS.some((ignored) => folderName.includes(ignored))) {
@@ -31351,7 +31704,7 @@ function discoverPages(appDir, currentPath = "", pages = []) {
31351
31704
  function findNextBuildDir() {
31352
31705
  const cwd = process.cwd();
31353
31706
  const candidate = path12__default.default.join(cwd, ".next", "server", "app");
31354
- return fs.existsSync(candidate) ? candidate : null;
31707
+ return fs20.existsSync(candidate) ? candidate : null;
31355
31708
  }
31356
31709
  function extractPageContent(buildDir, pagePath) {
31357
31710
  const baseName = pagePath === "/" ? "index" : pagePath.replace(/^\//, "");
@@ -31361,9 +31714,9 @@ function extractPageContent(buildDir, pagePath) {
31361
31714
  ];
31362
31715
  let html = null;
31363
31716
  for (const candidate of htmlCandidates) {
31364
- if (fs.existsSync(candidate)) {
31717
+ if (fs20.existsSync(candidate)) {
31365
31718
  try {
31366
- html = fs.readFileSync(candidate, "utf-8");
31719
+ html = fs20.readFileSync(candidate, "utf-8");
31367
31720
  break;
31368
31721
  } catch {
31369
31722
  continue;
@@ -31376,9 +31729,9 @@ function extractPageContent(buildDir, pagePath) {
31376
31729
  ];
31377
31730
  let rsc = null;
31378
31731
  for (const candidate of rscCandidates) {
31379
- if (fs.existsSync(candidate)) {
31732
+ if (fs20.existsSync(candidate)) {
31380
31733
  try {
31381
- rsc = fs.readFileSync(candidate, "utf-8");
31734
+ rsc = fs20.readFileSync(candidate, "utf-8");
31382
31735
  break;
31383
31736
  } catch {
31384
31737
  continue;
@@ -31484,17 +31837,17 @@ function findBlogDir() {
31484
31837
  const cwd = process.cwd();
31485
31838
  for (const dir of BLOG_DIRS) {
31486
31839
  const full = path12__default.default.join(cwd, dir);
31487
- if (fs.existsSync(full)) return full;
31840
+ if (fs20.existsSync(full)) return full;
31488
31841
  }
31489
31842
  return null;
31490
31843
  }
31491
31844
  async function discoverBlogPosts(dir) {
31492
31845
  const posts = [];
31493
31846
  async function walk(currentDir) {
31494
- const entries = fs.readdirSync(currentDir);
31847
+ const entries = fs20.readdirSync(currentDir);
31495
31848
  for (const entry of entries) {
31496
31849
  const fullPath = path12__default.default.join(currentDir, entry);
31497
- const stat = fs.statSync(fullPath);
31850
+ const stat = fs20.statSync(fullPath);
31498
31851
  if (stat.isDirectory()) {
31499
31852
  await walk(fullPath);
31500
31853
  continue;
@@ -31558,10 +31911,10 @@ async function syncBlogToPortal(_apiUrl, _apiKey, _dryRun) {
31558
31911
  async function discoverSchemaUsage(appDir) {
31559
31912
  const usages = [];
31560
31913
  async function walk(currentDir, currentPath = "") {
31561
- const entries = fs.readdirSync(currentDir);
31914
+ const entries = fs20.readdirSync(currentDir);
31562
31915
  for (const entry of entries) {
31563
31916
  const fullPath = path12__default.default.join(currentDir, entry);
31564
- const stat = fs.statSync(fullPath);
31917
+ const stat = fs20.statSync(fullPath);
31565
31918
  if (stat.isDirectory()) {
31566
31919
  if (entry.startsWith(".") || entry === "node_modules") continue;
31567
31920
  await walk(fullPath, path12__default.default.join(currentPath, entry));
@@ -31606,7 +31959,7 @@ async function discoverSchemaUsage(appDir) {
31606
31959
  return usages;
31607
31960
  }
31608
31961
  async function syncSchemasToPortal(apiUrl, apiKey, dryRun) {
31609
- const appDir = chunkP4TB4ROG_js.findAppDirForDiscovery();
31962
+ const appDir = chunkSEP5D4MI_js.findAppDirForDiscovery();
31610
31963
  if (!appDir) {
31611
31964
  console.log(source_default.gray(" No app directory found"));
31612
31965
  return;
@@ -31649,7 +32002,7 @@ async function apiRoutesCommand(options) {
31649
32002
  console.log("");
31650
32003
  console.log(source_default.bold(" Site-Kit API Routes"));
31651
32004
  console.log("");
31652
- const appDir = chunkP4TB4ROG_js.findAppDirForDiscovery();
32005
+ const appDir = chunkSEP5D4MI_js.findAppDirForDiscovery();
31653
32006
  if (!appDir) {
31654
32007
  console.log(source_default.red(" \u2717 Could not find app directory"));
31655
32008
  console.log(source_default.gray(" Make sure you are in a Next.js project with an app directory"));
@@ -31658,7 +32011,7 @@ async function apiRoutesCommand(options) {
31658
32011
  }
31659
32012
  const routeDir = path12__default.default.join(appDir, "_uptrade", "api", "[...path]");
31660
32013
  const routeFile = path12__default.default.join(routeDir, "route.ts");
31661
- if (fs.existsSync(routeFile) && !options.force) {
32014
+ if (fs20.existsSync(routeFile) && !options.force) {
31662
32015
  console.log(source_default.yellow(" \u26A0 API routes already exist"));
31663
32016
  console.log(source_default.gray(` ${routeFile}`));
31664
32017
  console.log("");
@@ -31796,12 +32149,12 @@ async function handleRequest(
31796
32149
  `;
31797
32150
  }
31798
32151
  function detectPackageManager(cwd) {
31799
- if (fs.existsSync(path12__default.default.join(cwd, "pnpm-lock.yaml"))) return "pnpm";
31800
- if (fs.existsSync(path12__default.default.join(cwd, "yarn.lock"))) return "yarn";
32152
+ if (fs20.existsSync(path12__default.default.join(cwd, "pnpm-lock.yaml"))) return "pnpm";
32153
+ if (fs20.existsSync(path12__default.default.join(cwd, "yarn.lock"))) return "yarn";
31801
32154
  return "npm";
31802
32155
  }
31803
32156
  async function run6(ctx, options) {
31804
- if (!fs.existsSync(path12__default.default.join(ctx.cwd, "package.json"))) {
32157
+ if (!fs20.existsSync(path12__default.default.join(ctx.cwd, "package.json"))) {
31805
32158
  throw new UsageError(
31806
32159
  "NO_PACKAGE_JSON",
31807
32160
  "No package.json found",
@@ -31846,18 +32199,18 @@ async function installCommand(options) {
31846
32199
  await runCommand(ctx, (c) => run6(c, options), renderHuman4);
31847
32200
  }
31848
32201
  function detectPackageManager2(cwd) {
31849
- if (fs.existsSync(path12__default.default.join(cwd, "pnpm-lock.yaml"))) return "pnpm";
31850
- if (fs.existsSync(path12__default.default.join(cwd, "yarn.lock"))) return "yarn";
32202
+ if (fs20.existsSync(path12__default.default.join(cwd, "pnpm-lock.yaml"))) return "pnpm";
32203
+ if (fs20.existsSync(path12__default.default.join(cwd, "yarn.lock"))) return "yarn";
31851
32204
  return "npm";
31852
32205
  }
31853
32206
  async function run7(ctx, options) {
31854
32207
  const pkgPath = path12__default.default.join(ctx.cwd, "package.json");
31855
- if (!fs.existsSync(pkgPath)) {
32208
+ if (!fs20.existsSync(pkgPath)) {
31856
32209
  throw new UsageError("NO_PACKAGE_JSON", "No package.json found", "Run this from your project root.");
31857
32210
  }
31858
32211
  let fromVersion = "unknown";
31859
32212
  try {
31860
- const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf-8"));
32213
+ const pkg = JSON.parse(fs20.readFileSync(pkgPath, "utf-8"));
31861
32214
  const deps = { ...pkg.dependencies, ...pkg.devDependencies };
31862
32215
  if (deps["@sonordev/site-kit"]) fromVersion = String(deps["@sonordev/site-kit"]).replace(/[\^~]/, "");
31863
32216
  } catch {
@@ -31906,7 +32259,7 @@ async function scaffoldCommand(options) {
31906
32259
  );
31907
32260
  console.log("");
31908
32261
  const cwd = process.cwd();
31909
- const appDir = chunkP4TB4ROG_js.findAppDirForDiscovery(cwd);
32262
+ const appDir = chunkSEP5D4MI_js.findAppDirForDiscovery(cwd);
31910
32263
  if (!appDir) {
31911
32264
  console.log(source_default.red(" \u2717 No app directory found (app/ or src/app/)"));
31912
32265
  process.exit(1);
@@ -32108,7 +32461,7 @@ SONOR_API_KEY=sonor_your-project-uuid_your-secret-key
32108
32461
  console.log(source_default.yellow(" [DRY RUN] Would create:"));
32109
32462
  for (const f of files) {
32110
32463
  const rel = path12__default.default.relative(cwd, f.path);
32111
- const exists2 = fs.existsSync(f.path);
32464
+ const exists2 = fs20.existsSync(f.path);
32112
32465
  console.log(
32113
32466
  source_default.gray(` ${rel}`) + (exists2 ? source_default.yellow(" (exists, would skip)") : "")
32114
32467
  );
@@ -32121,7 +32474,7 @@ SONOR_API_KEY=sonor_your-project-uuid_your-secret-key
32121
32474
  let skipped = 0;
32122
32475
  for (const f of files) {
32123
32476
  try {
32124
- if (fs.existsSync(f.path) && !options.force) {
32477
+ if (fs20.existsSync(f.path) && !options.force) {
32125
32478
  spinner.warn(`Skipped (exists): ${path12__default.default.relative(cwd, f.path)}`);
32126
32479
  skipped++;
32127
32480
  continue;
@@ -32178,17 +32531,16 @@ var LLMS_FILES = [
32178
32531
  { path: "/llms.txt", handler: "createLLMsTxtHandler" },
32179
32532
  { path: "/llms-full.txt", handler: "createLLMsFullTxtHandler" }
32180
32533
  ];
32181
- var NEXT_CONFIGS = ["next.config.ts", "next.config.mts", "next.config.mjs", "next.config.js", "next.config.cjs"];
32182
32534
  function read(cwd, rel) {
32183
32535
  try {
32184
- return fs__namespace.default.readFileSync(path12__default.default.join(cwd, rel), "utf-8");
32536
+ return fs20__namespace.default.readFileSync(path12__default.default.join(cwd, rel), "utf-8");
32185
32537
  } catch {
32186
32538
  return "";
32187
32539
  }
32188
32540
  }
32189
32541
  function exists(cwd, rel) {
32190
32542
  try {
32191
- return fs__namespace.default.existsSync(path12__default.default.join(cwd, rel));
32543
+ return fs20__namespace.default.existsSync(path12__default.default.join(cwd, rel));
32192
32544
  } catch {
32193
32545
  return false;
32194
32546
  }
@@ -32245,46 +32597,47 @@ function findHostNoindex(cwd, urlPath) {
32245
32597
  if (vercel && vercelJsonNoindex(vercel, urlPath)) return "vercel.json";
32246
32598
  return null;
32247
32599
  }
32600
+ function readGraph(cwd, rel) {
32601
+ return exists(cwd, rel) ? readWithImports(cwd, rel, { maxDepth: 3, maxFiles: 60 }) : "";
32602
+ }
32248
32603
  var LINK_DISCOVERY_LINE = /^.*\bLink\b.*(llms[^\n]*describedby|describedby[^\n]*llms).*$/im;
32249
32604
  function findDiscoverySource(cwd) {
32250
- for (const rel of chunkP4TB4ROG_js.findProxyFiles(cwd)) {
32251
- const src = read(cwd, rel);
32605
+ for (const rel of chunkSEP5D4MI_js.findProxyFiles(cwd)) {
32606
+ const src = readGraph(cwd, rel);
32252
32607
  const viaFactory = /\bcreate(Proxy|Middleware)\s*\(/.test(src) && /\bllmsDiscovery\b(?!\s*:\s*false\b)/.test(src);
32253
32608
  if (viaFactory) return `${rel} (createProxy llmsDiscovery)`;
32254
32609
  if (src.includes("buildAiDiscoveryHeaders")) return `${rel} (buildAiDiscoveryHeaders)`;
32255
32610
  }
32256
- for (const rel of NEXT_CONFIGS) {
32257
- const src = read(cwd, rel);
32258
- if (!src) continue;
32259
- if (/\bllmsTxtDiscoveryLink\s*:(?!\s*false\b)/.test(src)) return `${rel} (llmsTxtDiscoveryLink)`;
32260
- if (src.includes("buildAiDiscoveryHeaders")) return `${rel} (buildAiDiscoveryHeaders)`;
32261
- break;
32262
- }
32263
- const layout = chunkP4TB4ROG_js.findRootLayout(cwd);
32264
- if (layout) {
32265
- const src = read(cwd, path12__default.default.relative(cwd, layout));
32266
- if (src.includes("buildAiDiscoveryHeaders") || src.includes("llmsTxtDiscoveryLink")) {
32267
- return path12__default.default.relative(cwd, layout);
32268
- }
32611
+ const nextConfig = chunkSEP5D4MI_js.findNextConfig(cwd);
32612
+ if (nextConfig) {
32613
+ const src = read(cwd, nextConfig);
32614
+ if (/\bllmsTxtDiscoveryLink\s*:(?!\s*false\b)/.test(src)) return `${nextConfig} (llmsTxtDiscoveryLink)`;
32615
+ if (src.includes("buildAiDiscoveryHeaders")) return `${nextConfig} (buildAiDiscoveryHeaders)`;
32269
32616
  }
32270
32617
  for (const rel of ["netlify.toml", "public/_headers"]) {
32271
32618
  if (LINK_DISCOVERY_LINE.test(read(cwd, rel))) return rel;
32272
32619
  }
32273
32620
  return null;
32274
32621
  }
32622
+ function findLayoutHeadersAttempt(cwd) {
32623
+ const layout = chunkSEP5D4MI_js.findRootLayout(cwd);
32624
+ if (!layout) return null;
32625
+ const src = read(cwd, path12__default.default.relative(cwd, layout));
32626
+ return src.includes("buildAiDiscoveryHeaders") || /\bexport\s+(async\s+)?function\s+headers\b/.test(src) ? path12__default.default.relative(cwd, layout) : null;
32627
+ }
32275
32628
  function readGeoWiring(cwd) {
32276
- const appDir = chunkP4TB4ROG_js.NEXT_APP_DIRS.find((rel) => exists(cwd, rel)) ?? null;
32277
- const sitemap = chunkP4TB4ROG_js.findSitemapRoute(cwd);
32278
- const sitemapSrc = sitemap ? read(cwd, sitemap) : "";
32629
+ const appDir = chunkSEP5D4MI_js.NEXT_APP_DIRS.find((rel) => exists(cwd, rel)) ?? null;
32630
+ const sitemap = chunkSEP5D4MI_js.findSitemapRoute(cwd);
32631
+ const sitemapSrc = sitemap ? readGraph(cwd, sitemap) : "";
32279
32632
  const sitemapListsLlms = /\bincludeLlms(Full)?TxtInSitemap\s*:\s*true\b/.test(sitemapSrc) || /['"`/]llms(-full)?\.txt['"`]/.test(sitemapSrc);
32280
32633
  const sitemapWritesStatic = /\bcreateSitemap\s*\(/.test(sitemapSrc);
32281
32634
  const writesLlms = sitemapWritesStatic && !/\boptimizedLLMsTxt\s*:\s*false\b/.test(sitemapSrc);
32282
32635
  const writesLlmsFull = writesLlms && /\boptimizedLLMsFullTxt\s*:\s*true\b/.test(sitemapSrc);
32283
32636
  const llms = LLMS_FILES.map(({ path: urlPath, handler }) => {
32284
32637
  const file = urlPath.slice(1);
32285
- const routeAbs = appDir ? chunkP4TB4ROG_js.findConventionFile(path12__default.default.join(cwd, appDir, file), "route") : null;
32638
+ const routeAbs = appDir ? chunkSEP5D4MI_js.findConventionFile(path12__default.default.join(cwd, appDir, file), "route") : null;
32286
32639
  const route = routeAbs ? path12__default.default.relative(cwd, routeAbs) : null;
32287
- const routeSrc = route ? read(cwd, route) : "";
32640
+ const routeSrc = route ? readGraph(cwd, route) : "";
32288
32641
  const publicFile = exists(cwd, path12__default.default.join("public", file));
32289
32642
  const built = urlPath === "/llms.txt" ? writesLlms : writesLlmsFull;
32290
32643
  return {
@@ -32298,7 +32651,15 @@ function readGeoWiring(cwd) {
32298
32651
  hostNoindex: findHostNoindex(cwd, urlPath)
32299
32652
  };
32300
32653
  });
32301
- return { appDir, llms, sitemap, sitemapListsLlms, discovery: findDiscoverySource(cwd) };
32654
+ const discovery = findDiscoverySource(cwd);
32655
+ return {
32656
+ appDir,
32657
+ llms,
32658
+ sitemap,
32659
+ sitemapListsLlms,
32660
+ discovery,
32661
+ layoutHeadersAttempt: discovery ? null : findLayoutHeadersAttempt(cwd)
32662
+ };
32302
32663
  }
32303
32664
  var DISCOVERY_FIX = "Add llmsDiscovery to the proxy: createProxy({ llmsDiscovery: { siteUrl } }) in proxy.ts. Or withSiteKitConfig({ llmsTxtDiscoveryLink: true }) in next.config.";
32304
32665
  var SITEMAP_FIX = "Drop includeLlmsTxtInSitemap / includeLlmsFullTxtInSitemap (and any hand-added /llms*.txt entry) from the sitemap. A sitemap lists indexable HTML pages; AI crawlers find llms.txt at /llms.txt.";
@@ -32339,7 +32700,7 @@ function judgeGeoWiring(facts) {
32339
32700
  id: "geo.discovery",
32340
32701
  label: 'discovery header (Link rel="describedby")',
32341
32702
  level: "fail",
32342
- detail: "not wired in proxy, next.config, root layout, or host config",
32703
+ detail: facts.layoutHeadersAttempt ? `${facts.layoutHeadersAttempt} exports headers(), which is a next.config API: from a layout it's never called and sends nothing` : "not wired in proxy, next.config, or host config",
32343
32704
  fix: DISCOVERY_FIX
32344
32705
  }
32345
32706
  );
@@ -32398,7 +32759,7 @@ async function ensureLlmsRouteFiles(appDir, dryRun) {
32398
32759
  ["llms.txt", LLMS_ROUTE],
32399
32760
  ["llms-full.txt", LLMS_FULL_ROUTE]
32400
32761
  ]) {
32401
- if (chunkP4TB4ROG_js.findConventionFile(path12__default.default.join(appDir, dir), "route")) continue;
32762
+ if (chunkSEP5D4MI_js.findConventionFile(path12__default.default.join(appDir, dir), "route")) continue;
32402
32763
  const file = path12__default.default.join(appDir, dir, "route.ts");
32403
32764
  await fs3__default.default.mkdir(path12__default.default.dirname(file), { recursive: true });
32404
32765
  await fs3__default.default.writeFile(file, source, "utf-8");
@@ -32408,7 +32769,7 @@ async function ensureLlmsRouteFiles(appDir, dryRun) {
32408
32769
  }
32409
32770
  async function geoCommand(options) {
32410
32771
  if (options.forInstall) {
32411
- const appDir2 = chunkP4TB4ROG_js.findAppDirForDiscovery();
32772
+ const appDir2 = chunkSEP5D4MI_js.findAppDirForDiscovery();
32412
32773
  if (!appDir2) return;
32413
32774
  const created = await ensureLlmsRouteFiles(appDir2, options.dryRun);
32414
32775
  if (created > 0) {
@@ -32429,7 +32790,7 @@ async function geoCommand(options) {
32429
32790
  )
32430
32791
  );
32431
32792
  console.log("");
32432
- const appDir = chunkP4TB4ROG_js.findAppDirForDiscovery();
32793
+ const appDir = chunkSEP5D4MI_js.findAppDirForDiscovery();
32433
32794
  if (!appDir) {
32434
32795
  console.log(source_default.red(" \u2717 No app directory (app/ or src/app/)"));
32435
32796
  process.exit(1);
@@ -32490,7 +32851,7 @@ async function geoCommand(options) {
32490
32851
  (0, import_dotenv2.config)({ path: ".env.local", quiet: true });
32491
32852
  (0, import_dotenv2.config)({ path: ".env", quiet: true });
32492
32853
  var program2 = new Command();
32493
- program2.name("sonor-setup").description("Setup + verification toolchain for @sonordev/site-kit").version(chunk5TXXTYXL_js.SITE_KIT_VERSION);
32854
+ program2.name("sonor-setup").description("Setup + verification toolchain for @sonordev/site-kit").version(chunkNG2TTI7D_js.SITE_KIT_VERSION);
32494
32855
  withAgentFlags(
32495
32856
  program2.command("verify").description("Verify the integration actually works (health + key + SSR) \u2014 exit 0 = done").option("--url <url>", "Verify a running/deployed URL server-renders (recommended for agents)").option("--offline", "Skip the network key-validity ping").option("--strict", "Treat warnings as failures")
32496
32857
  ).action(verifyCommand);
@@ -32541,4 +32902,3 @@ program2.command("geo").description("Check llms.txt / GEO wiring (routes, sitema
32541
32902
  }
32542
32903
  program2.parse();
32543
32904
  //# sourceMappingURL=index.js.map
32544
- //# sourceMappingURL=index.js.map