@sonordev/site-kit 7.1.1 → 7.1.2

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 (224) hide show
  1. package/AGENTS.md +2 -2
  2. package/CHANGELOG.md +17 -3426
  3. package/agent-manifest.json +1 -1
  4. package/dist/{AnalyticsProvider-3MI5RCTL.js → AnalyticsProvider-ZB33W6MC.js} +4 -4
  5. package/dist/{ArticleViewTracker-CMBSJR3N.js → ArticleViewTracker-GMHYLLLZ.js} +3 -3
  6. package/dist/{BlocksPopup-X3OAAK2L.js → BlocksPopup-EA6LYL25.js} +4 -4
  7. package/dist/{ChatWidget-JMFBXJ75.js → ChatWidget-UCDWMWCW.js} +5 -5
  8. package/dist/{EngageWidget-A3QKZ3SU.js → EngageWidget-7ZYSK4GE.js} +4 -4
  9. package/dist/{FileField-QRSEGO6D.js → FileField-QKA3JB2Q.js} +3 -3
  10. package/dist/{FormSpotlight-XKV7VTN4.js → FormSpotlight-AQTIA5TP.js} +2 -2
  11. package/dist/{FormStage-C3YGYAUZ.js → FormStage-FDTLTP3B.js} +2 -2
  12. package/dist/ManagedForm-H7BVAH2W.js +14 -0
  13. package/dist/{ManagedNewsletterForm-LPIKGJF4.js → ManagedNewsletterForm-J6QSAGGP.js} +4 -4
  14. package/dist/{SignalCore-ICXXZBYI.js → SignalCore-JZNXOLNT.js} +3 -3
  15. package/dist/{SiteDesignReporter-A7MS2CIP.js → SiteDesignReporter-W4EJUSTE.js} +5 -5
  16. package/dist/SitemapSync-XBANGKHZ.js +8 -0
  17. package/dist/SitemapSync.d.ts +1 -1
  18. package/dist/_client/booking-widget.js +5 -5
  19. package/dist/_client/testimonial-section.d.ts +1 -1
  20. package/dist/affiliates/api.d.ts +1 -1
  21. package/dist/affiliates/index.js +3 -3
  22. package/dist/analytics/AnalyticsProvider.d.ts +1 -1
  23. package/dist/analytics/index.js +4 -4
  24. package/dist/analytics/send-gate.d.ts +12 -25
  25. package/dist/articles/Article.d.ts +1 -1
  26. package/dist/articles/ArticleList.d.ts +1 -1
  27. package/dist/articles/ClusterLandingPage.d.ts +2 -2
  28. package/dist/articles/PublicationLayout.d.ts +1 -1
  29. package/dist/articles/PublicationSidebar.d.ts +1 -1
  30. package/dist/articles/RelatedPosts.d.ts +1 -1
  31. package/dist/articles/author-schema.d.ts +1 -1
  32. package/dist/articles/excerpt.d.ts +3 -4
  33. package/dist/articles/index.d.ts +2 -2
  34. package/dist/articles/index.js +1 -1
  35. package/dist/articles/news-sitemap.d.ts +1 -1
  36. package/dist/articles/processArticleHtml.d.ts +1 -1
  37. package/dist/articles/server-core.d.ts +4 -4
  38. package/dist/articles/server-ui.js +1 -1
  39. package/dist/articles/server.d.ts +4 -4
  40. package/dist/articles/types.d.ts +1 -1
  41. package/dist/chat/index.js +5 -5
  42. package/dist/{chunk-PXZ7LAOY.js → chunk-3SDOQUUF.js} +2 -2
  43. package/dist/{chunk-R3VKF43H.js → chunk-6WIQCXOO.js} +1 -1
  44. package/dist/{chunk-6OL23QYD.js → chunk-AH5Q262S.js} +1 -1
  45. package/dist/{chunk-OPRBF7VE.js → chunk-CIG5UL2S.js} +1 -1
  46. package/dist/{chunk-EQBZ24VH.js → chunk-CSTQDNGK.js} +4 -4
  47. package/dist/{chunk-JC7KXNNM.js → chunk-D5EC5KVO.js} +1 -1
  48. package/dist/{chunk-DUQMSNF2.js → chunk-ERXXITG4.js} +1 -1
  49. package/dist/{chunk-ILAW3XKD.js → chunk-HF57LG73.js} +7 -7
  50. package/dist/{chunk-542MIHNP.js → chunk-ILU5I6RW.js} +1 -1
  51. package/dist/{chunk-HAG4YIZY.js → chunk-JBE46QJZ.js} +6 -6
  52. package/dist/{chunk-ZAWANWUS.js → chunk-JTU2GOM4.js} +1 -1
  53. package/dist/{chunk-QPEEKFCA.js → chunk-LUXVWITO.js} +2 -2
  54. package/dist/{chunk-EFPS56JA.js → chunk-M3YEPKP7.js} +1 -1
  55. package/dist/{chunk-H42PZKVC.js → chunk-NK4CSJNP.js} +2 -2
  56. package/dist/{chunk-ODADQM6Z.js → chunk-PGMVL4AB.js} +2 -2
  57. package/dist/{chunk-Q3S26EQA.js → chunk-PHYMNUJU.js} +1 -1
  58. package/dist/{chunk-ICFRH2ED.js → chunk-Q4W23JYM.js} +1 -1
  59. package/dist/{chunk-J4D6ZXRW.js → chunk-QEDHRBAT.js} +1 -1
  60. package/dist/{chunk-V4HUSHZO.js → chunk-RHNWA34F.js} +2 -2
  61. package/dist/{chunk-KOPVJQ2P.js → chunk-UXOGCKL6.js} +1 -1
  62. package/dist/{chunk-RK7GF7PQ.js → chunk-V3PUVBME.js} +2 -2
  63. package/dist/{chunk-NEKEH4CK.js → chunk-V6FDQLR7.js} +1 -1
  64. package/dist/{chunk-OUNRFXDC.js → chunk-VDF5DFWT.js} +1 -1
  65. package/dist/{chunk-JIL5VY2R.js → chunk-VGH4MDTU.js} +1 -1
  66. package/dist/{chunk-RTMMHTEQ.js → chunk-VLARKWZU.js} +1 -1
  67. package/dist/{chunk-ZETJTCMV.js → chunk-WWSHFRDL.js} +1 -1
  68. package/dist/{chunk-B73QPZPH.js → chunk-YCJT4JJG.js} +3 -3
  69. package/dist/{chunk-7FWA3I6A.js → chunk-YEMPUQVU.js} +2 -2
  70. package/dist/client/index.js +3 -3
  71. package/dist/cms/CmsPreview.d.ts +2 -2
  72. package/dist/cms/index.d.ts +3 -3
  73. package/dist/cms/server-api.d.ts +1 -1
  74. package/dist/cms/types.d.ts +1 -1
  75. package/dist/commerce/EventCheckout.d.ts +1 -1
  76. package/dist/commerce/EventsAgenda.d.ts +3 -3
  77. package/dist/commerce/api.d.ts +1 -1
  78. package/dist/commerce/index.js +4 -4
  79. package/dist/commerce/server.d.ts +3 -4
  80. package/dist/contracts/entries.d.ts +1 -1
  81. package/dist/contracts/fleet.d.ts +9 -9
  82. package/dist/contracts/forms.d.ts +4 -10
  83. package/dist/contracts/llms.d.ts +1 -1
  84. package/dist/contracts/portfolio.d.ts +11 -15
  85. package/dist/contracts/seo-meta.d.ts +11 -12
  86. package/dist/contracts/seo-pages.d.ts +12 -18
  87. package/dist/contracts/site-cache.d.ts +4 -4
  88. package/dist/contracts/sites-normalize.d.ts +2 -4
  89. package/dist/contracts/sites.d.ts +3 -5
  90. package/dist/contracts/slot-content.d.ts +2 -2
  91. package/dist/contracts/slots.d.ts +6 -6
  92. package/dist/contracts/voice.d.ts +56 -0
  93. package/dist/contracts/website.d.ts +2 -2
  94. package/dist/engage/ChatWidget.d.ts +2 -2
  95. package/dist/engage/EchoUiActions.d.ts +3 -3
  96. package/dist/engage/EngageWidget.d.ts +1 -1
  97. package/dist/engage/brand-color.d.ts +1 -1
  98. package/dist/engage/element-rules.d.ts +2 -2
  99. package/dist/engage/index.js +6 -6
  100. package/dist/engage/types.d.ts +3 -3
  101. package/dist/fleet/FleetHeartbeat.d.ts +2 -2
  102. package/dist/fleet/index.js +4 -4
  103. package/dist/forms/FormSpotlight.d.ts +2 -2
  104. package/dist/forms/ManagedForm.d.ts +1 -1
  105. package/dist/forms/StaticForm.d.ts +1 -1
  106. package/dist/forms/field-interactions.d.ts +2 -2
  107. package/dist/forms/form-loaded-at.d.ts +2 -2
  108. package/dist/forms/formsApi.d.ts +2 -2
  109. package/dist/forms/index.d.ts +1 -1
  110. package/dist/forms/index.js +8 -8
  111. package/dist/forms/server.d.ts +1 -1
  112. package/dist/forms/server.js +4 -4
  113. package/dist/forms/static.js +2 -2
  114. package/dist/forms/submitForm.d.ts +1 -1
  115. package/dist/forms/types.d.ts +3 -3
  116. package/dist/images/ManagedFavicon.d.ts +1 -1
  117. package/dist/images/ManagedImage.d.ts +4 -4
  118. package/dist/images/api.d.ts +1 -1
  119. package/dist/images/index.d.ts +2 -2
  120. package/dist/images/index.js +4 -4
  121. package/dist/index.js +1 -1
  122. package/dist/landing/contract.d.ts +3 -4
  123. package/dist/layout/SiteKitClientProviders.d.ts +1 -1
  124. package/dist/layout/SiteKitLayout.d.ts +7 -7
  125. package/dist/layout/client.d.ts +1 -1
  126. package/dist/layout/client.js +7 -7
  127. package/dist/layout/index.js +8 -8
  128. package/dist/layout/types.d.ts +2 -2
  129. package/dist/llms/SpeakableSchema.d.ts +2 -2
  130. package/dist/llms/agent-access.d.ts +2 -2
  131. package/dist/llms/aiRobots.d.ts +4 -4
  132. package/dist/llms/api.d.ts +2 -2
  133. package/dist/llms/generateLLMsTxt.d.ts +1 -1
  134. package/dist/llms/index.js +4 -4
  135. package/dist/llms/links.d.ts +1 -1
  136. package/dist/llms/revalidate.d.ts +1 -1
  137. package/dist/llms/seo-revalidate.d.ts +2 -3
  138. package/dist/llms/types.d.ts +6 -6
  139. package/dist/llms/writeLLMsTxt.d.ts +10 -10
  140. package/dist/manifest/index.d.ts +8 -8
  141. package/dist/maps/index.js +3 -3
  142. package/dist/mcp/WebMcpTools.d.ts +1 -1
  143. package/dist/mcp/report.d.ts +2 -2
  144. package/dist/mcp/serverCard.d.ts +1 -1
  145. package/dist/mcp/sonor.d.ts +5 -6
  146. package/dist/mcp/sonor.js +8 -8
  147. package/dist/mcp/transport.d.ts +1 -2
  148. package/dist/mcp/types.d.ts +4 -5
  149. package/dist/motion/engine.d.ts +2 -3
  150. package/dist/motion/failsafe.d.ts +1 -2
  151. package/dist/motion/gsap.d.ts +2 -2
  152. package/dist/motion/three.d.ts +1 -1
  153. package/dist/og/config.d.ts +4 -4
  154. package/dist/og/contrast.d.ts +2 -2
  155. package/dist/og/pages.d.ts +5 -5
  156. package/dist/og/route-fit.d.ts +2 -2
  157. package/dist/og/route.d.ts +1 -2
  158. package/dist/og/template.d.ts +1 -1
  159. package/dist/proxy/index.d.ts +2 -2
  160. package/dist/proxy/securityHeaders.d.ts +10 -12
  161. package/dist/redirects/index.d.ts +7 -7
  162. package/dist/reputation/TestimonialSection.d.ts +1 -1
  163. package/dist/reputation/api.d.ts +1 -1
  164. package/dist/revalidate/index.js +2 -2
  165. package/dist/robots/index.d.ts +5 -5
  166. package/dist/robots/indexnow.d.ts +2 -3
  167. package/dist/seo/ManagedScripts.d.ts +2 -2
  168. package/dist/seo/client.js +4 -4
  169. package/dist/seo/getManagedMetadata.d.ts +1 -1
  170. package/dist/seo/groundingSchema.d.ts +2 -2
  171. package/dist/seo/index.js +4 -4
  172. package/dist/seo/llms.js +4 -4
  173. package/dist/seo/register-sitemap-cli-impl.d.ts +1 -1
  174. package/dist/seo/register-sitemap-cli.d.ts +1 -1
  175. package/dist/seo/register-sitemap-cli.js +2 -2
  176. package/dist/seo/schema-filter.d.ts +5 -6
  177. package/dist/seo/server-api.d.ts +1 -1
  178. package/dist/seo/sitemap.js +2 -2
  179. package/dist/seo/types.d.ts +4 -4
  180. package/dist/seo/withManagedMetadata.d.ts +4 -4
  181. package/dist/server/index.js +2 -2
  182. package/dist/server/mint-site-token.d.ts +1 -2
  183. package/dist/server/server-fetch.d.ts +5 -5
  184. package/dist/shared/build-entries.d.ts +4 -4
  185. package/dist/shared/frame.d.ts +8 -9
  186. package/dist/shared/fresh-fetch.d.ts +1 -2
  187. package/dist/shared/next-files.d.ts +1 -1
  188. package/dist/shared/publishCredential.d.ts +1 -1
  189. package/dist/shared/uuid.d.ts +1 -2
  190. package/dist/shared/version.d.ts +1 -1
  191. package/dist/shared/visual-viewport-gap.d.ts +2 -2
  192. package/dist/signal/index.js +2 -2
  193. package/dist/site-config/index.d.ts +2 -2
  194. package/dist/sitemap/index.d.ts +13 -13
  195. package/dist/sitemap/index.js +2 -2
  196. package/dist/sitemap/shared.d.ts +3 -3
  197. package/dist/sites/site-param.d.ts +2 -2
  198. package/dist/slots/ManagedRichText.d.ts +1 -1
  199. package/dist/slots/ManagedSlot.d.ts +1 -1
  200. package/dist/slots/index.d.ts +1 -3
  201. package/dist/sync/index.js +5 -5
  202. package/dist/types.d.ts +1 -1
  203. package/dist/{web-vitals.attribution-N2PCCF4Q.js → web-vitals.attribution-GD6LGLVF.js} +1 -1
  204. package/dist/website/PopupBlocks.d.ts +3 -4
  205. package/dist/website/images.js +4 -4
  206. package/dist/website/index.js +5 -5
  207. package/dist/website/popups.js +4 -4
  208. package/dist/{writeLLMsTxt-QR23OQUE.js → writeLLMsTxt-G3JBNBC5.js} +1 -1
  209. package/docs/MIGRATING-TO-7.md +9 -13
  210. package/package.json +1 -1
  211. package/src/admin-auth/README.md +3 -3
  212. package/src/analytics/README.md +7 -9
  213. package/src/articles/README.md +6 -6
  214. package/src/cta-bar/README.md +11 -11
  215. package/src/forms/README.md +10 -8
  216. package/src/llms/README.md +3 -3
  217. package/src/mcp/README.md +7 -7
  218. package/src/motion/README.md +1 -1
  219. package/src/og/README.md +26 -27
  220. package/src/proxy/README.md +14 -14
  221. package/src/seo/README.md +1 -1
  222. package/src/slots/README.md +1 -1
  223. package/dist/ManagedForm-2GSSDJPP.js +0 -14
  224. package/dist/SitemapSync-4U654SEA.js +0 -8
@@ -1,5 +1,5 @@
1
1
  import { HoneypotField } from './chunk-DXO6SBMD.js';
2
- import { FormField } from './chunk-QPEEKFCA.js';
2
+ import { FormField } from './chunk-LUXVWITO.js';
3
3
  import { normalizeFormConfig } from './chunk-5SQK3D53.js';
4
4
  import { DEFAULT_HONEYPOT_FIELD } from './chunk-NJCTQH2P.js';
5
5
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- import { countStageViews, countStageQuestions, useFieldControls } from './chunk-JC7KXNNM.js';
2
+ import { countStageViews, countStageQuestions, useFieldControls } from './chunk-D5EC5KVO.js';
3
3
  import { HoneypotField } from './chunk-DXO6SBMD.js';
4
- import { DelightStyles, FormMomentum, FormField } from './chunk-QPEEKFCA.js';
5
- import { useFormLoadedAt, useFormTracking, submitForm, useRecaptchaWarmup, useForm } from './chunk-NEKEH4CK.js';
4
+ import { DelightStyles, FormMomentum, FormField } from './chunk-LUXVWITO.js';
5
+ import { useFormLoadedAt, useFormTracking, submitForm, useRecaptchaWarmup, useForm } from './chunk-V6FDQLR7.js';
6
6
  import { isFieldVisible, validateField, isFieldComplete, isDisplayOnly } from './chunk-AQSNPZY4.js';
7
7
  import { DEFAULT_FORM_SUCCESS_MESSAGE } from './chunk-5SQK3D53.js';
8
8
  import { DEFAULT_HONEYPOT_FIELD } from './chunk-NJCTQH2P.js';
@@ -62,7 +62,7 @@ function FormClient({
62
62
  return;
63
63
  }
64
64
  let cancelled = false;
65
- const load = resolvedExperience === "stage" ? import('./FormStage-C3YGYAUZ.js').then((m) => m.FormStage) : import('./FormSpotlight-XKV7VTN4.js').then((m) => m.FormSpotlight);
65
+ const load = resolvedExperience === "stage" ? import('./FormStage-FDTLTP3B.js').then((m) => m.FormStage) : import('./FormSpotlight-AQTIA5TP.js').then((m) => m.FormSpotlight);
66
66
  load.then((Component) => {
67
67
  if (!cancelled) setExperience(() => Component);
68
68
  }).catch((err) => {
@@ -26,7 +26,7 @@ function useFieldControls(fields) {
26
26
  }
27
27
  if (needsFile && !requested.current.file) {
28
28
  requested.current.file = true;
29
- import('./FileField-QRSEGO6D.js').then((m) => {
29
+ import('./FileField-QKA3JB2Q.js').then((m) => {
30
30
  if (!cancelled) setControls((prev) => ({ ...prev, File: m.FileField }));
31
31
  }).catch(() => {
32
32
  requested.current.file = false;
@@ -1,5 +1,5 @@
1
1
  import { resolveSiteHost } from './chunk-FESKKJAS.js';
2
- import { configureSiteCredential, currentCredential } from './chunk-OUNRFXDC.js';
2
+ import { configureSiteCredential, currentCredential } from './chunk-VDF5DFWT.js';
3
3
 
4
4
  // src/shared/publishCredential.ts
5
5
  function publishSiteCredential({
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
  import { SITE_EDIT_PARAM } from './chunk-6G43IRWR.js';
3
- import { publishSiteCredential } from './chunk-DUQMSNF2.js';
4
- import { FleetHeartbeat } from './chunk-H42PZKVC.js';
5
- import { SignalBridge } from './chunk-Q3S26EQA.js';
3
+ import { publishSiteCredential } from './chunk-ERXXITG4.js';
4
+ import { FleetHeartbeat } from './chunk-NK4CSJNP.js';
5
+ import { SignalBridge } from './chunk-PHYMNUJU.js';
6
6
  import { useDeferredActivation } from './chunk-YC7ELZS3.js';
7
7
  import { resolveSiteHost } from './chunk-FESKKJAS.js';
8
8
  import { getOrCreateVisitorId, getOrCreateSessionId } from './chunk-24QZEO3Q.js';
@@ -33,19 +33,19 @@ function startEditBridge() {
33
33
  };
34
34
  }
35
35
  var LazyAnalyticsProvider = dynamic(
36
- () => import('./AnalyticsProvider-3MI5RCTL.js').then((m) => ({ default: m.AnalyticsProvider })),
36
+ () => import('./AnalyticsProvider-ZB33W6MC.js').then((m) => ({ default: m.AnalyticsProvider })),
37
37
  { ssr: false }
38
38
  );
39
39
  var LazyEngageWidget = dynamic(
40
- () => import('./EngageWidget-A3QKZ3SU.js').then((m) => ({ default: m.EngageWidget })),
40
+ () => import('./EngageWidget-7ZYSK4GE.js').then((m) => ({ default: m.EngageWidget })),
41
41
  { ssr: false }
42
42
  );
43
43
  var LazySiteDesignReporter = dynamic(
44
- () => import('./SiteDesignReporter-A7MS2CIP.js').then((m) => ({ default: m.SiteDesignReporter })),
44
+ () => import('./SiteDesignReporter-W4EJUSTE.js').then((m) => ({ default: m.SiteDesignReporter })),
45
45
  { ssr: false }
46
46
  );
47
47
  var LazySitemapSync = dynamic(
48
- () => import('./SitemapSync-4U654SEA.js').then((m) => ({ default: m.SitemapSync })),
48
+ () => import('./SitemapSync-XBANGKHZ.js').then((m) => ({ default: m.SitemapSync })),
49
49
  { ssr: false }
50
50
  );
51
51
  function SiteKitClientProviders({
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { sonorFetch } from './chunk-PXZ7LAOY.js';
2
+ import { sonorFetch } from './chunk-3SDOQUUF.js';
3
3
  import { useState, useCallback, useEffect } from 'react';
4
4
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
5
5
 
@@ -1,5 +1,5 @@
1
1
  import { getSiteConfig } from './chunk-Z22QVHT4.js';
2
- import { writeLLMsTxtToPublic } from './chunk-J4D6ZXRW.js';
2
+ import { writeLLMsTxtToPublic } from './chunk-QEDHRBAT.js';
3
3
  import { buildFetch } from './chunk-VX5CMNMM.js';
4
4
  import { findAppDirForDiscovery } from './chunk-ZEGVKVD5.js';
5
5
  import { stripEmbeddedDomain, locToPath, inferPageType, isMalformedSitemapPath, resolveTrailingSlash, stripTrailingSlash, llmsWriteTimeoutMs, applyTrailingSlash } from './chunk-YVKRYQRG.js';
@@ -361,10 +361,10 @@ function createSitemap(config) {
361
361
  const pagesData = await pagesResponse.json();
362
362
  const pagesList = pagesData?.pagesList || [];
363
363
  pages = pagesList.map((p) => p.path).filter(Boolean);
364
- console.log(`[site-kit] Recovered ${pages.length} pages from Portal API (ISR fallback)`);
364
+ console.log(`[site-kit] Recovered ${pages.length} pages from Sonor API (ISR fallback)`);
365
365
  }
366
366
  } catch (fetchErr) {
367
- console.warn("[site-kit] Portal API fallback failed:", fetchErr.message);
367
+ console.warn("[site-kit] Sonor API fallback failed:", fetchErr.message);
368
368
  }
369
369
  }
370
370
  if (pages.length === 0) {
@@ -469,7 +469,7 @@ function createSitemap(config) {
469
469
  }
470
470
  const result = await syncSitemapToPortal(entries, apiUrl, apiKey, syncOptions);
471
471
  if (result.success) {
472
- console.log(`[site-kit] Synced to Portal API: ${result.created} created, ${result.updated} updated`);
472
+ console.log(`[site-kit] Synced to Sonor API: ${result.created} created, ${result.updated} updated`);
473
473
  if (config.awaitMetaOptimization === true) {
474
474
  try {
475
475
  const domain = normalizedBaseUrl.replace(/^https?:\/\/(www\.)?/, "");
@@ -530,10 +530,10 @@ function createSitemap(config) {
530
530
  }
531
531
  }
532
532
  } catch (err) {
533
- console.warn("[site-kit] Failed to sync sitemap to Portal API:", err.message);
533
+ console.warn("[site-kit] Failed to sync sitemap to Sonor API:", err.message);
534
534
  }
535
535
  } else {
536
- console.log("[site-kit] No API key found, skipping Portal API sync");
536
+ console.log("[site-kit] No API key found, skipping Sonor API sync");
537
537
  }
538
538
  }
539
539
  return entries;
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { detectTimezone, releaseSlotHold, fetchBookingTypeDetails, fetchBookingTypes, fetchAvailability, createSlotHold, createBooking, formatDuration, formatDate, formatTime, prepareMeeting } from './chunk-EFPS56JA.js';
2
+ import { detectTimezone, releaseSlotHold, fetchBookingTypeDetails, fetchBookingTypes, fetchAvailability, createSlotHold, createBooking, formatDuration, formatDate, formatTime, prepareMeeting } from './chunk-M3YEPKP7.js';
3
3
  import { useState, useRef, useMemo, useCallback, useEffect, useId } from 'react';
4
4
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
5
5
 
@@ -243,8 +243,8 @@ function FormField({ field, value, error, onChange, onFocus, onBlur, classPrefix
243
243
  // cascade from the section produced cream-on-white on brand-colored panels
244
244
  // (found live). Default pairs with the white bg; theme both via vars.
245
245
  //
246
- // The fallback chain matters, and it is the reason this was broken on
247
- // upforgelabs.com: a dark site that set --sk-input-bg and --sk-text-primary
246
+ // The fallback chain matters, and it is why this once broke on a dark
247
+ // site: one that set --sk-input-bg and --sk-text-primary
248
248
  // but never heard of --sk-input-text landed on #111827 over its own dark
249
249
  // field, 1.03:1, an input you cannot read your own typing in. Falling
250
250
  // through --sk-text-primary first means theming the page's text is enough.
@@ -1,4 +1,4 @@
1
- import { sonorFetch } from './chunk-PXZ7LAOY.js';
1
+ import { sonorFetch } from './chunk-3SDOQUUF.js';
2
2
 
3
3
  // src/sync/api.ts
4
4
  var DEFAULT_API_URL = "https://api.sonor.io";
@@ -2,8 +2,8 @@
2
2
  import { sanitizeFleetVersion, buildFleetHeartbeatPayload } from './chunk-ZTZQPYP6.js';
3
3
  import { useDeferredActivation } from './chunk-YC7ELZS3.js';
4
4
  import { resolveAnalyticsTarget } from './chunk-43OCZ3JA.js';
5
- import { sonorFetch } from './chunk-PXZ7LAOY.js';
6
- import { SITE_KIT_VERSION } from './chunk-6OL23QYD.js';
5
+ import { sonorFetch } from './chunk-3SDOQUUF.js';
6
+ import { SITE_KIT_VERSION } from './chunk-AH5Q262S.js';
7
7
  import { useRef, useEffect } from 'react';
8
8
 
9
9
  // src/fleet/heartbeat.ts
@@ -1,8 +1,8 @@
1
1
  import { toHexColor, normalizeDesignTokens, designTokensHash } from './chunk-IHG36STL.js';
2
2
  import { contrastRatio, parseColor, relativeLuminance } from './chunk-S22FSH7C.js';
3
3
  import { resolveAnalyticsTarget } from './chunk-43OCZ3JA.js';
4
- import { sonorFetch } from './chunk-PXZ7LAOY.js';
5
- import { SITE_KIT_VERSION } from './chunk-6OL23QYD.js';
4
+ import { sonorFetch } from './chunk-3SDOQUUF.js';
5
+ import { SITE_KIT_VERSION } from './chunk-AH5Q262S.js';
6
6
 
7
7
  // src/website/design.ts
8
8
  var SITE_DESIGN_PATH = "/api/public/site/design";
@@ -54,7 +54,7 @@ function useSignal() {
54
54
  return useSyncExternalStore(subscribe, getSnapshot, getServerSnapshot);
55
55
  }
56
56
  var LazySignalCore = dynamic(
57
- () => import('./SignalCore-ICXXZBYI.js').then((m) => ({ default: m.SignalCore })),
57
+ () => import('./SignalCore-JZNXOLNT.js').then((m) => ({ default: m.SignalCore })),
58
58
  { ssr: false }
59
59
  );
60
60
  function SignalBridge({
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { getSiteDesignTokens, tokensForReport, shouldReportDesign, sendSiteDesign } from './chunk-ODADQM6Z.js';
2
+ import { getSiteDesignTokens, tokensForReport, shouldReportDesign, sendSiteDesign } from './chunk-PGMVL4AB.js';
3
3
  import { designTokensHash } from './chunk-IHG36STL.js';
4
4
  import { useDeferredActivation } from './chunk-YC7ELZS3.js';
5
5
  import { resolveAnalyticsTarget } from './chunk-43OCZ3JA.js';
@@ -673,7 +673,7 @@ async function writeLLMsTxtToPublic(options = {}) {
673
673
  }
674
674
  if (!markdown) {
675
675
  console.warn(
676
- `[site-kit] llms.txt unavailable (Portal fetch failed, no local data) \u2014 skipped write, keeping any existing file at ${llmsPath}`
676
+ `[site-kit] llms.txt unavailable (Sonor fetch failed, no local data) \u2014 skipped write, keeping any existing file at ${llmsPath}`
677
677
  );
678
678
  return { success: false, path: llmsPath, optimized: false };
679
679
  }
@@ -1,9 +1,9 @@
1
1
  'use client';
2
2
  import { GlassStyles } from './chunk-JE4A5S4F.js';
3
3
  import { chatLauncherStyles } from './chunk-NDF4A5JM.js';
4
- import { useForm } from './chunk-NEKEH4CK.js';
4
+ import { useForm } from './chunk-V6FDQLR7.js';
5
5
  import { parseColor, relativeLuminance, DARK_LUMINANCE, contrastRatio } from './chunk-S22FSH7C.js';
6
- import { sonorFetch } from './chunk-PXZ7LAOY.js';
6
+ import { sonorFetch } from './chunk-3SDOQUUF.js';
7
7
  import { useState, useEffect, useRef, useLayoutEffect, useCallback, Fragment as Fragment$1 } from 'react';
8
8
  import { lexer } from 'marked';
9
9
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -1,7 +1,7 @@
1
1
  'use client';
2
2
  import { locToPath, isMalformedSitemapPath, inferPageType } from './chunk-YVKRYQRG.js';
3
3
  import { resolveAnalyticsTarget } from './chunk-43OCZ3JA.js';
4
- import { sonorFetch } from './chunk-PXZ7LAOY.js';
4
+ import { sonorFetch } from './chunk-3SDOQUUF.js';
5
5
  import { useRef, useEffect } from 'react';
6
6
 
7
7
  var SYNC_STAMP_KEY = "_sk_sitemap_synced_at";
@@ -1,5 +1,5 @@
1
- import { FormEnhancer } from './chunk-RTMMHTEQ.js';
2
- import { StaticForm } from './chunk-OPRBF7VE.js';
1
+ import { FormEnhancer } from './chunk-VLARKWZU.js';
2
+ import { StaticForm } from './chunk-CIG5UL2S.js';
3
3
  import { serverApiFetch } from './chunk-X6F6SO4S.js';
4
4
  import { jsx } from 'react/jsx-runtime';
5
5
 
@@ -4,7 +4,7 @@ import { normalizeFormConfig } from './chunk-5SQK3D53.js';
4
4
  import { DEFAULT_HONEYPOT_FIELD } from './chunk-NJCTQH2P.js';
5
5
  import { onPageLeave } from './chunk-L2V5PUFN.js';
6
6
  import { uuid } from './chunk-GJWI74ZZ.js';
7
- import { sonorFetch, sonorBeacon } from './chunk-PXZ7LAOY.js';
7
+ import { sonorFetch, sonorBeacon } from './chunk-3SDOQUUF.js';
8
8
  import { useRef, useCallback, useEffect, useState, useMemo } from 'react';
9
9
 
10
10
  // src/forms/field-interactions.ts
@@ -1,4 +1,4 @@
1
- import { SITE_KIT_VERSION } from './chunk-6OL23QYD.js';
1
+ import { SITE_KIT_VERSION } from './chunk-AH5Q262S.js';
2
2
 
3
3
  // src/shared/siteToken.ts
4
4
  var SITE_TOKEN_PREFIX = "st1.";
@@ -1,5 +1,5 @@
1
1
  import { secretsMatch, readCappedBody } from './chunk-XTRZGXB2.js';
2
- import { SITE_KIT_VERSION } from './chunk-6OL23QYD.js';
2
+ import { SITE_KIT_VERSION } from './chunk-AH5Q262S.js';
3
3
 
4
4
  // src/llms/revalidate.ts
5
5
  function createLlmsRevalidateHandler(secret, options) {
@@ -4,7 +4,7 @@ import React, { lazy, useRef, useEffect, useState, Suspense } from 'react';
4
4
  import { jsx, jsxs } from 'react/jsx-runtime';
5
5
 
6
6
  var InteractiveForm = lazy(
7
- () => import('./ManagedForm-2GSSDJPP.js').then((m) => ({ default: m.ManagedForm }))
7
+ () => import('./ManagedForm-H7BVAH2W.js').then((m) => ({ default: m.ManagedForm }))
8
8
  );
9
9
  function FormEnhancer({
10
10
  formId,
@@ -1,4 +1,4 @@
1
- import { generateLLMsTxt, generateLLMsFullTxt } from './chunk-J4D6ZXRW.js';
1
+ import { generateLLMsTxt, generateLLMsFullTxt } from './chunk-QEDHRBAT.js';
2
2
  import { createHash } from 'crypto';
3
3
  import { existsSync, readFileSync } from 'fs';
4
4
  import { join } from 'path';
@@ -2,7 +2,7 @@
2
2
  import { DEFAULT_ENGAGE_Z_INDEX } from './chunk-NDF4A5JM.js';
3
3
  import { getOrCreateVisitorId } from './chunk-24QZEO3Q.js';
4
4
  import { resolveAnalyticsTarget } from './chunk-43OCZ3JA.js';
5
- import { sonorFetch } from './chunk-PXZ7LAOY.js';
5
+ import { sonorFetch } from './chunk-3SDOQUUF.js';
6
6
  import React, { useState, useEffect, useCallback, useRef, createElement } from 'react';
7
7
  import ReactDOM from 'react-dom';
8
8
  import dynamic from 'next/dynamic';
@@ -339,11 +339,11 @@ function DesignRenderer({
339
339
  )) });
340
340
  }
341
341
  var LazyBlocksPopup = dynamic(
342
- () => import('./BlocksPopup-X3OAAK2L.js').then((m) => ({ default: m.BlocksPopup })),
342
+ () => import('./BlocksPopup-EA6LYL25.js').then((m) => ({ default: m.BlocksPopup })),
343
343
  { ssr: false }
344
344
  );
345
345
  var LazyChatWidget = dynamic(
346
- () => import('./ChatWidget-JMFBXJ75.js').then((m) => ({ default: m.ChatWidget })),
346
+ () => import('./ChatWidget-UCDWMWCW.js').then((m) => ({ default: m.ChatWidget })),
347
347
  { ssr: false }
348
348
  );
349
349
  function EngageWidget(props) {
@@ -3,7 +3,7 @@ import { registerAnalyticsDispatcher } from './chunk-LCDVPAMR.js';
3
3
  import { getOrCreateVisitorId, getOrCreateSessionId } from './chunk-24QZEO3Q.js';
4
4
  import { onPageLeave } from './chunk-L2V5PUFN.js';
5
5
  import { resolveAnalyticsTarget } from './chunk-43OCZ3JA.js';
6
- import { sonorFetch, sonorBeacon } from './chunk-PXZ7LAOY.js';
6
+ import { sonorFetch, sonorBeacon } from './chunk-3SDOQUUF.js';
7
7
  import { createContext, useRef, useEffect, useState, useMemo, useCallback, useContext } from 'react';
8
8
  import { usePathname } from 'next/navigation';
9
9
  import { jsxs, jsx } from 'react/jsx-runtime';
@@ -157,7 +157,7 @@ function WebVitals({
157
157
  useEffect(() => {
158
158
  let cancelled = false;
159
159
  let teardown;
160
- import('./web-vitals.attribution-N2PCCF4Q.js').then(({ onCLS, onLCP, onTTFB, onINP, onFCP }) => {
160
+ import('./web-vitals.attribution-GD6LGLVF.js').then(({ onCLS, onLCP, onTTFB, onINP, onFCP }) => {
161
161
  if (cancelled) return;
162
162
  const { propApiUrl: propApiUrl2, propApiKey: propApiKey2, propSite: propSite2, allowInFrame: allowInFrame2, allowLocalhost: allowLocalhost2, debug: debug2, visitorId: visitorId2, sessionId: sessionId2, sessionTimeout: sessionTimeout2 } = propsRef.current;
163
163
  const sent = /* @__PURE__ */ new Map();
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { publishSiteCredential } from '../chunk-DUQMSNF2.js';
2
+ import { publishSiteCredential } from '../chunk-ERXXITG4.js';
3
3
  export { useDeferredActivation } from '../chunk-YC7ELZS3.js';
4
4
  import '../chunk-FESKKJAS.js';
5
5
  import '../chunk-A4CC4ZG3.js';
@@ -7,8 +7,8 @@ export { trackConversion, trackEvent } from '../chunk-LCDVPAMR.js';
7
7
  export { VISUAL_VIEWPORT_GAP_PROPERTY, VisualViewportGap, useVisualViewportGap } from '../chunk-6T6CQVNL.js';
8
8
  export { getOrCreateSessionId, getOrCreateVisitorId, useSiteKitIdentity } from '../chunk-24QZEO3Q.js';
9
9
  import '../chunk-GJWI74ZZ.js';
10
- import '../chunk-OUNRFXDC.js';
11
- import '../chunk-6OL23QYD.js';
10
+ import '../chunk-VDF5DFWT.js';
11
+ import '../chunk-AH5Q262S.js';
12
12
  import '../chunk-PKBMQBKP.js';
13
13
 
14
14
  // src/client/SiteKitCredential.tsx
@@ -1,7 +1,7 @@
1
1
  import React from 'react';
2
2
  import type { SectionType, SectionRendererProps } from './types';
3
3
  interface CmsPreviewProps {
4
- /** Portal API base URL */
4
+ /** Sonor API base URL */
5
5
  apiUrl?: string;
6
6
  /** API key for fetching draft content */
7
7
  apiKey: string;
@@ -18,7 +18,7 @@ interface CmsPreviewProps {
18
18
  }
19
19
  /**
20
20
  * Client component for previewing draft CMS content.
21
- * Fetches draft content from Portal API and re-renders on changes.
21
+ * Fetches draft content from Sonor API and re-renders on changes.
22
22
  *
23
23
  * @example
24
24
  * ```tsx
@@ -5,7 +5,7 @@
5
5
  * project has CMS pages and the API no longer serves them, so these components
6
6
  * render nothing. Site copy is managed copy now (`@sonordev/site-kit/website/slots`:
7
7
  * `ManagedSlot`, `ManagedRichText`, `ManagedLink`, `ManagedList`), edited in
8
- * Sonor under Website → Content. See docs/WEBSITE-CMS.md.
8
+ * Sonor under Website → Content.
9
9
  *
10
10
  * REQUIRES TWO OPTIONAL PEER DEPENDENCIES. Importing this entry without them
11
11
  * fails the consuming site's build with "Module not found":
@@ -24,8 +24,8 @@
24
24
  *
25
25
  * Do NOT apply this pattern to a dependency reachable from a widely-imported
26
26
  * entry: bundlers resolve even a dynamic import at build time, so there is no
27
- * runtime fallback to hide behind. See CHANGELOG 4.0.3 for the react-markdown
28
- * case (7.0 dropped react-markdown), where exactly that made it impossible.
27
+ * runtime fallback to hide behind. react-markdown (4.0.3; 7.0 dropped it) is
28
+ * the case where exactly that made it impossible.
29
29
  */
30
30
  export { CmsPage } from './CmsPage';
31
31
  export { CmsSection } from './CmsSection';
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @sonordev/site-kit/cms - Server-Only API Functions
3
3
  *
4
- * Fetches CMS page/section data from Portal API.
4
+ * Fetches CMS page/section data from Sonor API.
5
5
  * Uses the same secure API pattern as seo/server-api.ts — both delegate config
6
6
  * resolution + fetch/retry to the shared server-fetch primitive (single source
7
7
  * of truth — see ../server/server-fetch).
@@ -1,5 +1,5 @@
1
1
  /**
2
- * CMS Types for site-kit — mirrors Portal API response shapes.
2
+ * CMS Types for site-kit — mirrors Sonor API response shapes.
3
3
  * Portable Text is the canonical content format.
4
4
  */
5
5
  export interface PortableTextBlock {
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Multi-variant inline event checkout. Renders a tier selector (one row per variant
5
5
  * with qty controls), customer info, and a Square card element. Submits a single
6
- * lineItems[] payload to the Portal multi-line checkout endpoint — one charge for
6
+ * lineItems[] payload to Sonor multi-line checkout endpoint — one charge for
7
7
  * the aggregate total, no redirect.
8
8
  *
9
9
  * v1: Square inline only. For single-tier events without variants, the component
@@ -1,9 +1,9 @@
1
1
  /**
2
- * EventsAgenda — month-grouped event list (the Ludlow calendar generalized).
2
+ * EventsAgenda — month-grouped event list.
3
3
  *
4
4
  * For sparse community/event calendars an agenda reads far better than a
5
- * month grid, especially on phones — this is the layout Ludlow PTO shipped
6
- * after forking the grid. Headless-first: every element carries
5
+ * month grid, especially on phones, which is why community sites kept
6
+ * forking the grid into one. Headless-first: every element carries
7
7
  * data-sk-part, rows carry data-category / data-offering-type (same contract
8
8
  * as CalendarView chips), so two-scheme coloring is site CSS:
9
9
  *
@@ -2,7 +2,7 @@
2
2
  * @sonordev/site-kit/commerce - Commerce API
3
3
  *
4
4
  * API functions for fetching offerings, submitting orders, and registrations.
5
- * All data goes through Portal API with API key auth - never Supabase directly.
5
+ * All data goes through Sonor API with API key auth - never Supabase directly.
6
6
  */
7
7
  import type { CommerceOffering, FetchOfferingsOptions, FetchEventsOptions, CheckoutCustomer, CheckoutResult } from './types';
8
8
  export declare function fetchOfferings(options?: FetchOfferingsOptions): Promise<CommerceOffering[]>;
@@ -1,15 +1,15 @@
1
1
  'use client';
2
2
  import '../chunk-P5GB6NEO.js';
3
- import { useAnalyticsOptional } from '../chunk-7FWA3I6A.js';
3
+ import { useAnalyticsOptional } from '../chunk-YEMPUQVU.js';
4
4
  import '../chunk-LCDVPAMR.js';
5
5
  import '../chunk-24QZEO3Q.js';
6
6
  import '../chunk-L2V5PUFN.js';
7
7
  import '../chunk-GJWI74ZZ.js';
8
8
  import '../chunk-43OCZ3JA.js';
9
9
  import '../chunk-EKBEOXTH.js';
10
- import { sonorFetch } from '../chunk-PXZ7LAOY.js';
11
- import '../chunk-OUNRFXDC.js';
12
- import '../chunk-6OL23QYD.js';
10
+ import { sonorFetch } from '../chunk-3SDOQUUF.js';
11
+ import '../chunk-VDF5DFWT.js';
12
+ import '../chunk-AH5Q262S.js';
13
13
  import '../chunk-PKBMQBKP.js';
14
14
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
15
15
  import React5, { useState, useEffect, useMemo, useRef, useCallback } from 'react';
@@ -4,7 +4,7 @@
4
4
  * Helpers for server-side rendering and dynamic routes.
5
5
  * Use in Next.js getStaticPaths, getStaticProps, or App Router.
6
6
  *
7
- * All data fetching goes through the Portal API.
7
+ * All data fetching goes through the Sonor API.
8
8
  */
9
9
  import type { CommerceOffering, OfferingType } from './types';
10
10
  interface ServerConfig {
@@ -102,8 +102,7 @@ export declare function getOfferingsResult(config: ServerConfig, options?: {
102
102
  * Uses POST /api/public/commerce/events — the same endpoint the client fetcher
103
103
  * uses — because the GET offerings list does NOT embed commerce_schedules,
104
104
  * which made this helper return events with empty `schedules[]` and forced
105
- * sites to hand-roll their own fetcher for any calendar UI (the Ludlow PTO
106
- * lesson). Falls back to the legacy offerings query if the events endpoint
105
+ * sites to hand-roll their own fetcher for any calendar UI. Falls back to the legacy offerings query if the events endpoint
107
106
  * is unavailable (older self-hosted API).
108
107
  */
109
108
  export declare function getUpcomingEvents(config: ServerConfig, options?: {
@@ -154,7 +153,7 @@ export declare function generateOfferingMetadata(offering: CommerceOffering | nu
154
153
  /**
155
154
  * Create a server config for API calls
156
155
  *
157
- * @param apiUrl - Portal API URL (e.g., 'https://api.sonor.io')
156
+ * @param apiUrl - Sonor API URL (e.g., 'https://api.sonor.io')
158
157
  * @param apiKey - Project API key
159
158
  * @param projectId - Project ID
160
159
  */
@@ -4,5 +4,5 @@
4
4
  * tsup config, its package.json check and the boundary test, so a new
5
5
  * contract is added in one place.
6
6
  */
7
- export declare const CONTRACT_ENTRIES: readonly ['forms', 'llms', 'slots', 'slot-content', 'site-cache', 'site-edit', 'website', 'color', 'fleet', 'sites', 'seo-pages', 'seo-meta', 'portfolio'];
7
+ export declare const CONTRACT_ENTRIES: readonly ['forms', 'llms', 'slots', 'slot-content', 'site-cache', 'site-edit', 'website', 'color', 'fleet', 'sites', 'seo-pages', 'seo-meta', 'portfolio', 'voice'];
8
8
  export type ContractEntry = (typeof CONTRACT_ENTRIES)[number];
@@ -2,13 +2,13 @@
2
2
  * @sonordev/contracts/fleet — Fleet heartbeat wire contract (v1)
3
3
  *
4
4
  * Single source of truth for the heartbeat payload shape, shared by site-kit
5
- * (send side, `@sonordev/site-kit/fleet/contract`) and sonor-api (ingest
5
+ * (send side, `@sonordev/site-kit/fleet/contract`) and the Sonor API (ingest
6
6
  * side: its DTO is type-checked against FleetHeartbeatPayload).
7
7
  *
8
- * Why it exists: ~24+ client sites run site-kit at wildly drifted versions and
9
- * the platform could not answer "which version / modules / key state is each
10
- * site running" without shelling into every local repo. The heartbeat answers
11
- * that from live traffic. It is fire-and-forget, deferred to idle (never in the
8
+ * Why it exists: sites run whatever site-kit version they last deployed, and
9
+ * Sonor should be able to answer "which version / modules / key state is each
10
+ * site running" without anyone opening each repo. The heartbeat answers that
11
+ * from live traffic. It is fire-and-forget, deferred to idle (never in the
12
12
  * hydration path), and carries NO visitor data — only the site's own build
13
13
  * fingerprint. Project identity is resolved server-side from the x-api-key
14
14
  * header, exactly like every other /api/public/* endpoint; sites never send
@@ -56,7 +56,7 @@ export interface FleetHeartbeatPayload {
56
56
  next_version?: string | null;
57
57
  /** Client-observable active modules — deduped, validated, canonical order. */
58
58
  modules: FleetModule[];
59
- /** Normalized lowercase host (multi-site sub-dimension; see CLAUDE.md). */
59
+ /** Normalized lowercase host (multi-site sub-dimension). */
60
60
  site?: string | null;
61
61
  /** 'client' (runtime boot) or 'build' (CI/build step). Default 'client'. */
62
62
  source?: FleetHeartbeatSource;
@@ -77,9 +77,9 @@ export declare function normalizeFleetModules(input: unknown): FleetModule[];
77
77
  export declare function sanitizeFleetVersion(raw: unknown): string | null;
78
78
  /**
79
79
  * Light client-side site normalization to the canonical host shape (lowercase,
80
- * no protocol/path/port). sonor-api's IngestService.normalizeSite is the
81
- * AUTHORITATIVE normalizer and re-runs on ingest — this just avoids sending
82
- * obvious noise. Keep the two shapes aligned (see CLAUDE.md "site" convention).
80
+ * no protocol/path/port). The Sonor API's normalizer is AUTHORITATIVE and
81
+ * re-runs on ingest; this just avoids sending obvious noise. Keep the two
82
+ * shapes aligned.
83
83
  */
84
84
  export declare function normalizeFleetSite(raw: unknown): string | null;
85
85
  /**
@@ -1,17 +1,11 @@
1
1
  /**
2
2
  * @sonordev/contracts/forms — managed-form honeypot policy (v1)
3
3
  *
4
- * Single source of truth for the honeypot trap-field naming + server-side
5
- * detection policy, shared by the client (site-kit emits the trap field) and
6
- * the server (sonor-api names the trap in the form config it returns AND
7
- * detects hits on intake). Both import this: site-kit as
8
- * `@sonordev/site-kit/forms/contract`, sonor-api through
9
- * `src/modules/forms/honeypot-contract.ts`.
4
+ * Single source of truth for the honeypot field's naming, shared by site-kit
5
+ * (which renders the field, as `@sonordev/site-kit/forms/contract`) and Sonor.
10
6
  *
11
- * The default field name (`_sk_hp_url`) is deliberately obscure: a common name
12
- * like "website" collides with real form fields and flags genuine submissions
13
- * as spam, so generic names are only trusted when they DON'T match a real
14
- * field of the form (see `resolveHoneypotFieldNames`).
7
+ * The default field name is deliberately unlike a real field's, so it never
8
+ * collides with a form's own fields (see `resolveHoneypotFieldNames`).
15
9
  */
16
10
  /** Bump on breaking changes to the honeypot policy. */
17
11
  export declare const FORMS_HONEYPOT_CONTRACT_VERSION: 1;
@@ -14,7 +14,7 @@ export declare const LLMS_PUBLIC_SUMMARY_MAX_LENGTH = 400;
14
14
  /** Max length for optional llms.txt blockquote disclaimer line. */
15
15
  export declare const LLMS_DISCLAIMER_MAX_LENGTH = 280;
16
16
  /**
17
- * Optional keys we allow inside managed_llm_schema JSON from Portal.
17
+ * Optional keys we allow inside managed_llm_schema JSON from Sonor.
18
18
  * Values outside this set should not be relied on by consumers; strip unknown keys when emitting JSON-LD.
19
19
  */
20
20
  export declare const MANAGED_LLM_SCHEMA_KNOWN_KEYS: Set<string>;