@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,21 +1,21 @@
1
1
  'use client';
2
2
  export { FormCelebration } from '../chunk-YGGDU6C3.js';
3
- export { FormClient, ManagedForm } from '../chunk-EQBZ24VH.js';
4
- import '../chunk-JC7KXNNM.js';
3
+ export { FormClient, ManagedForm } from '../chunk-CSTQDNGK.js';
4
+ import '../chunk-D5EC5KVO.js';
5
5
  export { DatePicker } from '../chunk-SOD2F6C2.js';
6
- export { FormEnhancer } from '../chunk-RTMMHTEQ.js';
6
+ export { FormEnhancer } from '../chunk-VLARKWZU.js';
7
7
  import '../chunk-YC7ELZS3.js';
8
8
  import '../chunk-DXO6SBMD.js';
9
- export { FormField as FormFieldComponent } from '../chunk-QPEEKFCA.js';
10
- export { useForm, useFormTracking } from '../chunk-NEKEH4CK.js';
9
+ export { FormField as FormFieldComponent } from '../chunk-LUXVWITO.js';
10
+ export { useForm, useFormTracking } from '../chunk-V6FDQLR7.js';
11
11
  import '../chunk-AQSNPZY4.js';
12
12
  export { DEFAULT_FORM_SUCCESS_MESSAGE } from '../chunk-5SQK3D53.js';
13
13
  import '../chunk-NJCTQH2P.js';
14
14
  import '../chunk-L2V5PUFN.js';
15
15
  import '../chunk-GJWI74ZZ.js';
16
- import { sonorFetch } from '../chunk-PXZ7LAOY.js';
17
- import '../chunk-OUNRFXDC.js';
18
- import '../chunk-6OL23QYD.js';
16
+ import { sonorFetch } from '../chunk-3SDOQUUF.js';
17
+ import '../chunk-VDF5DFWT.js';
18
+ import '../chunk-AH5Q262S.js';
19
19
  import '../chunk-PKBMQBKP.js';
20
20
 
21
21
  // src/forms/formsApi.ts
@@ -24,7 +24,7 @@
24
24
  export interface GetFormConfigOptions {
25
25
  /** Project API key. Default: SONOR_API_KEY from the environment. */
26
26
  apiKey?: string;
27
- /** Portal API base URL. Default: SONOR_API_URL or https://api.sonor.io */
27
+ /** Sonor API base URL. Default: SONOR_API_URL or https://api.sonor.io */
28
28
  apiUrl?: string;
29
29
  /** ISR window for the config fetch, seconds. Default 60. */
30
30
  revalidate?: number;
@@ -1,9 +1,9 @@
1
- export { ServerForm, getFormConfig } from '../chunk-RK7GF7PQ.js';
2
- import '../chunk-RTMMHTEQ.js';
1
+ export { ServerForm, getFormConfig } from '../chunk-V3PUVBME.js';
2
+ import '../chunk-VLARKWZU.js';
3
3
  import '../chunk-YC7ELZS3.js';
4
- export { StaticForm } from '../chunk-OPRBF7VE.js';
4
+ export { StaticForm } from '../chunk-CIG5UL2S.js';
5
5
  import '../chunk-DXO6SBMD.js';
6
- import '../chunk-QPEEKFCA.js';
6
+ import '../chunk-LUXVWITO.js';
7
7
  import '../chunk-X6F6SO4S.js';
8
8
  import '../chunk-MH2DSGC6.js';
9
9
  import '../chunk-5SQK3D53.js';
@@ -1,6 +1,6 @@
1
- export { StaticForm } from '../chunk-OPRBF7VE.js';
1
+ export { StaticForm } from '../chunk-CIG5UL2S.js';
2
2
  import '../chunk-DXO6SBMD.js';
3
- import '../chunk-QPEEKFCA.js';
3
+ import '../chunk-LUXVWITO.js';
4
4
  import '../chunk-5SQK3D53.js';
5
5
  import '../chunk-NJCTQH2P.js';
6
6
  import '../chunk-PKBMQBKP.js';
@@ -34,7 +34,7 @@ export declare function submitForm({ config, values, honeypotValue, formLoadedAt
34
34
  /**
35
35
  * The receipt Sonor returns plus the values that were sent. `onSuccess`
36
36
  * callers need the values (free-audit reads the website and email back), and
37
- * the receipt alone never carried them: upforge.io's free-audit handler read
37
+ * the receipt alone never carried them: a site's free-audit handler read
38
38
  * `submission.data`, always got undefined, and sent its audit request with no
39
39
  * email or URL.
40
40
  */
@@ -88,7 +88,7 @@ export interface FormField {
88
88
  destination_field?: string;
89
89
  /**
90
90
  * What the form says back once this field's row is answered, replacing the
91
- * built-in sentence ("Nice to meet you, Ramsey."). Set per field in Sonor;
91
+ * built-in sentence ("Nice to meet you, Jordan."). Set per field in Sonor;
92
92
  * the first field in a row that defines one wins. Supports tokens:
93
93
  * `{value}` (this field's answer), `{label}`, `{first_name}`, and
94
94
  * `{slug}` for any other field's answer, e.g.
@@ -166,7 +166,7 @@ export interface FormAnalytics {
166
166
  * - 'spotlight' — THE 4.0 DEFAULT. The classic layout, alive: a glowing ring
167
167
  * visits the active field, and each completed row collapses
168
168
  * into a sentence the form says back ("Nice to meet you,
169
- * Ramsey.") with an edit affordance to reopen it.
169
+ * Jordan.") with an edit affordance to reopen it.
170
170
  * - 'stage' — accordion: beats expand/collapse on one surface, answered
171
171
  * beats settle into filled rows
172
172
  * - 'classic' — the plain grid form, no choreography
@@ -206,7 +206,7 @@ export interface ExperienceRenderProps {
206
206
  honeypot: React.ReactNode;
207
207
  }
208
208
  export interface ManagedFormProps {
209
- /** Form key from Portal */
209
+ /** Form key from Sonor */
210
210
  formId: string;
211
211
  /** @deprecated Project is resolved from API key by the backend. Omit this prop. */
212
212
  projectId?: string;
@@ -30,7 +30,7 @@
30
30
  import React from 'react';
31
31
  export interface ManagedFaviconProps {
32
32
  /**
33
- * API key for Portal API authentication
33
+ * API key for Sonor API authentication
34
34
  * Defaults to SONOR_API_KEY env var
35
35
  */
36
36
  apiKey?: string;
@@ -1,8 +1,8 @@
1
1
  /**
2
- * ManagedImage - Portal-managed image component
2
+ * ManagedImage - Sonor-managed image component
3
3
  *
4
4
  * Features:
5
- * - Fetches images from Portal API via API key (never direct Supabase)
5
+ * - Fetches images from Sonor API via API key (never direct Supabase)
6
6
  * - Dev mode: Click to open image picker modal
7
7
  * - Supports responsive variants
8
8
  * - Automatic focal point handling
@@ -43,7 +43,7 @@ export interface ImageFile {
43
43
  public_url?: string;
44
44
  }
45
45
  export interface ManagedImageProps {
46
- /** API key for Portal API */
46
+ /** API key for Sonor API */
47
47
  apiKey?: string;
48
48
  /** API URL (defaults to https://api.sonor.io) */
49
49
  apiUrl?: string;
@@ -51,7 +51,7 @@ export interface ManagedImageProps {
51
51
  slotId: string;
52
52
  /** Page path for page-specific slots (defaults to current path) */
53
53
  pagePath?: string;
54
- /** Fallback alt text if not set in Portal */
54
+ /** Fallback alt text if not set in Sonor */
55
55
  alt?: string;
56
56
  /** CSS class names */
57
57
  className?: string;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Images API functions
3
3
  *
4
- * All functions use Portal API with API key authentication.
4
+ * All functions use Sonor API with API key authentication.
5
5
  * Never makes direct Supabase calls.
6
6
  */
7
7
  import type { ManagedImageData, ImageFile } from './ManagedImage';
@@ -1,8 +1,8 @@
1
1
  /**
2
2
  * @sonordev/site-kit Images Module
3
3
  *
4
- * Provides managed image components for Portal integration.
5
- * All API calls go through Portal API with API key auth.
4
+ * Provides managed image components for Sonor integration.
5
+ * All API calls go through Sonor API with API key auth.
6
6
  */
7
7
  export { ManagedImage } from './ManagedImage';
8
8
  export type { ManagedImageProps, ManagedImageData, ImageFile } from './ManagedImage';
@@ -1,6 +1,6 @@
1
- export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-542MIHNP.js';
1
+ export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-ILU5I6RW.js';
2
2
  export { ManagedFavicon, getManagedFaviconUrl } from '../chunk-GW7GSBO7.js';
3
- import '../chunk-PXZ7LAOY.js';
4
- import '../chunk-OUNRFXDC.js';
5
- import '../chunk-6OL23QYD.js';
3
+ import '../chunk-3SDOQUUF.js';
4
+ import '../chunk-VDF5DFWT.js';
5
+ import '../chunk-AH5Q262S.js';
6
6
  import '../chunk-PKBMQBKP.js';
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { SITE_KIT_VERSION } from './chunk-6OL23QYD.js';
1
+ export { SITE_KIT_VERSION } from './chunk-AH5Q262S.js';
2
2
  import './chunk-PKBMQBKP.js';
@@ -1,10 +1,9 @@
1
1
  /**
2
2
  * Landing-page campaign contract.
3
3
  *
4
- * normalizeCampaignSlug is an inlined MIRROR of sonor-api's
5
- * `src/modules/analytics/utils/campaign.util.ts` (the CANONICAL copy) —
6
- * keep the function body byte-identical. Both suites assert the same fixed
7
- * vectors (sonor-api's campaign.util.spec.ts and this package's
4
+ * normalizeCampaignSlug is an inlined MIRROR of the Sonor API's campaign
5
+ * normalizer (the CANONICAL copy); keep the function body byte-identical.
6
+ * Both sides assert the same fixed vectors (this package's
8
7
  * landing/contract.test.ts), so silent drift fails CI on either side.
9
8
  *
10
9
  * A slug normalized here always matches the server's canonical form, so the
@@ -37,7 +37,7 @@ export interface SiteKitClientProvidersProps {
37
37
  signal?: boolean | SignalConfig;
38
38
  /**
39
39
  * Runtime SitemapSync from the visitor's browser. Default FALSE — sitemap
40
- * registration belongs to build time and to sonor-api's nightly reconciler,
40
+ * registration belongs to build time and to Sonor's nightly reconciler,
41
41
  * not to whoever happens to load the page. See SiteKitLayout for the full
42
42
  * reasoning; in short, its guards live in session/localStorage, so every new
43
43
  * visitor missed them and re-POSTed the whole sitemap.
@@ -5,7 +5,7 @@
5
5
  * site-kit feature your layout needs:
6
6
  *
7
7
  * Server-side (RSC):
8
- * - ManagedFavicon (link tags from Portal logo)
8
+ * - ManagedFavicon (link tags from the project logo in Sonor)
9
9
  * - ManagedScripts position="head" (tracking pixels, analytics tags)
10
10
  * - ManagedScripts position="body-end"
11
11
  *
@@ -13,7 +13,7 @@
13
13
  * - AnalyticsProvider (page views, scroll depth, heatmap, web vitals)
14
14
  * - EngageWidget (popups, nudges, chat)
15
15
  * - SignalBridge (A/B experiments, behavior tracking)
16
- * - SitemapSync (keeps Portal seo_pages in sync)
16
+ * - SitemapSync (keeps Sonor seo_pages in sync)
17
17
  *
18
18
  * @example
19
19
  * ```tsx
@@ -46,9 +46,9 @@ import * as React from 'react';
46
46
  import type { AnalyticsConfig, ChatLayoutConfig, DesignConfig, EngageConfig, SignalConfig } from './types';
47
47
  export interface SiteKitLayoutProps {
48
48
  children: React.ReactNode;
49
- /** Portal API key. Defaults to SONOR_API_KEY env var. */
49
+ /** Sonor API key. Defaults to SONOR_API_KEY env var. */
50
50
  apiKey?: string;
51
- /** Portal API URL. Defaults to env or https://api.sonor.io */
51
+ /** Sonor API URL. Defaults to env or https://api.sonor.io */
52
52
  apiUrl?: string;
53
53
  /** Project ID (for Engage chat room routing). Auto-resolved if not provided. */
54
54
  projectId?: string;
@@ -69,13 +69,13 @@ export interface SiteKitLayoutProps {
69
69
  * Runtime SitemapSync from the visitor's browser. **Default: false.**
70
70
  *
71
71
  * Sitemap registration is a build-time and server-side job. Build-time
72
- * `createSitemap` is canonical, and sonor-api's nightly reconciler fetches
72
+ * `createSitemap` is canonical, and Sonor's nightly reconciler fetches
73
73
  * each host's /sitemap.xml itself, so nothing here needs a visitor.
74
74
  *
75
75
  * This defaulted to true, and because its throttle lives in sessionStorage
76
76
  * and its content hash in localStorage, every first-time visitor, incognito
77
- * tab and crawler missed both guards and re-POSTed the entire sitemap:
78
- * upforge.io took ~140 full syncs in a day, queencityriverboats.com ~76.
77
+ * tab and crawler missed both guards and re-POSTed the entire sitemap, so
78
+ * a busy site took well over a hundred full syncs a day.
79
79
  * That coupled sitemap traffic to VISITOR COUNT rather than to content
80
80
  * changes — exactly backwards — and made every reader pay for platform
81
81
  * bookkeeping in bandwidth, XML parsing and an API round-trip.
@@ -37,7 +37,7 @@ export interface SiteKitClientProvidersProps {
37
37
  signal?: boolean | SignalConfig;
38
38
  /**
39
39
  * Runtime SitemapSync from the visitor's browser. Default FALSE — sitemap
40
- * registration belongs to build time and to sonor-api's nightly reconciler,
40
+ * registration belongs to build time and to Sonor's nightly reconciler,
41
41
  * not to whoever happens to load the page. See SiteKitLayout for the full
42
42
  * reasoning; in short, its guards live in session/localStorage, so every new
43
43
  * visitor missed them and re-POSTed the whole sitemap.
@@ -1,10 +1,10 @@
1
1
  'use client';
2
- export { SiteKitClientProviders } from '../chunk-ILAW3XKD.js';
2
+ export { SiteKitClientProviders } from '../chunk-HF57LG73.js';
3
3
  import '../chunk-6G43IRWR.js';
4
- import '../chunk-DUQMSNF2.js';
5
- import '../chunk-H42PZKVC.js';
4
+ import '../chunk-ERXXITG4.js';
5
+ import '../chunk-NK4CSJNP.js';
6
6
  import '../chunk-ZTZQPYP6.js';
7
- import '../chunk-Q3S26EQA.js';
7
+ import '../chunk-PHYMNUJU.js';
8
8
  import '../chunk-YC7ELZS3.js';
9
9
  import '../chunk-FESKKJAS.js';
10
10
  import '../chunk-A4CC4ZG3.js';
@@ -12,7 +12,7 @@ import '../chunk-24QZEO3Q.js';
12
12
  import '../chunk-GJWI74ZZ.js';
13
13
  import '../chunk-43OCZ3JA.js';
14
14
  import '../chunk-EKBEOXTH.js';
15
- import '../chunk-PXZ7LAOY.js';
16
- import '../chunk-OUNRFXDC.js';
17
- import '../chunk-6OL23QYD.js';
15
+ import '../chunk-3SDOQUUF.js';
16
+ import '../chunk-VDF5DFWT.js';
17
+ import '../chunk-AH5Q262S.js';
18
18
  import '../chunk-PKBMQBKP.js';
@@ -1,12 +1,12 @@
1
- import { SiteKitClientProviders } from '../chunk-ILAW3XKD.js';
1
+ import { SiteKitClientProviders } from '../chunk-HF57LG73.js';
2
2
  import '../chunk-6G43IRWR.js';
3
- import '../chunk-DUQMSNF2.js';
4
- import '../chunk-H42PZKVC.js';
3
+ import '../chunk-ERXXITG4.js';
4
+ import '../chunk-NK4CSJNP.js';
5
5
  import '../chunk-ZTZQPYP6.js';
6
6
  import { ManagedFavicon } from '../chunk-GW7GSBO7.js';
7
- import '../chunk-Q3S26EQA.js';
7
+ import '../chunk-PHYMNUJU.js';
8
8
  import '../chunk-YC7ELZS3.js';
9
- import { resolveClientCredential } from '../chunk-R3VKF43H.js';
9
+ import { resolveClientCredential } from '../chunk-6WIQCXOO.js';
10
10
  import '../chunk-VX5CMNMM.js';
11
11
  import { ManagedScripts } from '../chunk-MVLMXC44.js';
12
12
  import { resolveApiOrigin } from '../chunk-X6F6SO4S.js';
@@ -17,9 +17,9 @@ import '../chunk-24QZEO3Q.js';
17
17
  import '../chunk-GJWI74ZZ.js';
18
18
  import '../chunk-43OCZ3JA.js';
19
19
  import '../chunk-EKBEOXTH.js';
20
- import '../chunk-PXZ7LAOY.js';
21
- import '../chunk-OUNRFXDC.js';
22
- import '../chunk-6OL23QYD.js';
20
+ import '../chunk-3SDOQUUF.js';
21
+ import '../chunk-VDF5DFWT.js';
22
+ import '../chunk-AH5Q262S.js';
23
23
  import '../chunk-PKBMQBKP.js';
24
24
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
25
25
 
@@ -20,7 +20,7 @@ export interface AnalyticsConfig {
20
20
  excludePaths?: string[];
21
21
  /**
22
22
  * Sub-site identifier — the domain/brand this set of pages belongs to under
23
- * the Sonor project (e.g. `ohiopowerstudies.com`, `truepowersystems.com`).
23
+ * the Sonor project (e.g. `ohio.example.com`, `example.com`).
24
24
  * Every analytics event is tagged with this dimension so a single Sonor
25
25
  * project can host many sites and the dashboard can filter / roll up per
26
26
  * site. If omitted, SiteKitLayout falls back to the host of
@@ -33,7 +33,7 @@ export interface AnalyticsConfig {
33
33
  *
34
34
  * A framed page's visitor is on whoever framed it, not on this site, so by
35
35
  * default an embed reports nothing — see `analytics/send-gate.ts` for the
36
- * phantom traffic that prompted this (Upforge case studies embed live
36
+ * phantom traffic that prompted this (agency case studies embed live
37
37
  * client sites, and every view was writing page views into the client's own
38
38
  * project). Same-origin frames are never blocked: a site embedding itself
39
39
  * is a real visit to that site.
@@ -17,8 +17,8 @@ import type { SpeakableSchemaProps, SpeakableConfig } from './types';
17
17
  * // In a page component
18
18
  * <SpeakableSchema
19
19
  * type="Article"
20
- * name="Family Law Services in Cincinnati"
21
- * url="https://heinrichlaw.com/family-law"
20
+ * name="Family Law Services in Springfield"
21
+ * url="https://example.com/family-law"
22
22
  * speakable={{
23
23
  * cssSelectors: ['.page-summary', '.key-points', 'h1']
24
24
  * }}
@@ -24,7 +24,7 @@ export declare function formatAgentAccessSection(baseUrl: string, options?: Agen
24
24
  /**
25
25
  * Add the section to finished markdown, once. Left out when the markdown
26
26
  * already points agents at a server card: a site describing its own MCP
27
- * server (upforge.io's "Agent interface" section) keeps its own words.
27
+ * server in a section of its own keeps its own words.
28
28
  */
29
29
  export declare function appendAgentAccessSection(markdown: string, baseUrl: string, options?: AgentAccessOptions): string;
30
30
  /** The markdown already tells agents where an MCP server is. */
@@ -33,7 +33,7 @@ export declare function describesMcp(markdown: string): boolean;
33
33
  * - `built-in`: site-kit's Sonor tools (`sonorMcpServer` / `sonorMcpTools`),
34
34
  * what `npx sonor-setup mcp` writes. site-kit's automatic MCP extras (the
35
35
  * llms.txt section) are on for these.
36
- * - `custom`: the site runs an MCP server of its own (upforge.io). site-kit
36
+ * - `custom`: the site runs an MCP server of its own. site-kit
37
37
  * leaves it alone: nothing automatic, `sonor-setup mcp` won't write over
38
38
  * it, and anything it adds is opt-in.
39
39
  * - `null`: no MCP server.
@@ -11,8 +11,8 @@
11
11
  * - createRobotsTxtHandler(): a plain-text robots.txt route handler.
12
12
  *
13
13
  * No `Content-Signal` line is ever emitted (6.3.4). Google's robots.txt
14
- * parser reports it as an "Unknown directive" error in Search Console
15
- * (cincinnaticondoconnection.com, 2026-09-22), and robots.txt is the one file
14
+ * parser reports it as an "Unknown directive" error in Search Console, and
15
+ * robots.txt is the one file
16
16
  * that must parse cleanly for every crawler. Training/retrieval preferences
17
17
  * are expressed by the per-crawler Allow/Disallow rules instead, which every
18
18
  * crawler understands.
@@ -28,8 +28,8 @@
28
28
  * Retrieval/search agents — fetch on demand or index for AI search, cite sources.
29
29
  *
30
30
  * MistralAI-User (Le Chat fetching a page for a user) and YouBot (You.com's
31
- * search index) were added 2026-09-15: vsf-consulting-nextjs named them in
32
- * its own robots.txt and had to keep a NOT_YET_IN_KIT list beside this one.
31
+ * search index) were added 2026-09-15, after a site had to name them in its
32
+ * own robots.txt beside this list.
33
33
  */
34
34
  export declare const AI_RETRIEVAL_CRAWLERS: readonly ['OAI-SearchBot', 'ChatGPT-User', 'Claude-SearchBot', 'Claude-User', 'PerplexityBot', 'Perplexity-User', 'GoogleOther', 'Applebot', 'DuckAssistBot', 'MistralAI-User', 'YouBot'];
35
35
  /**
@@ -35,7 +35,7 @@ export declare const getFAQItems: (projectId?: string, limit?: number, site?: st
35
35
  */
36
36
  export declare const getPageSummaries: (projectId?: string, limit?: number, site?: string) => Promise<LLMPageSummary[]>;
37
37
  /**
38
- * Fetch AI-optimized llms.txt markdown from Portal API (build-time)
38
+ * Fetch AI-optimized llms.txt markdown from Sonor API (build-time)
39
39
  * Used by writeLLMsTxtToPublic for static file generation
40
40
  *
41
41
  * Always fresh (shared/fresh-fetch.ts). With Next's patched fetch and no cache
@@ -44,7 +44,7 @@ export declare const getPageSummaries: (projectId?: string, limit?: number, site
44
44
  */
45
45
  export declare function getOptimizedLLMsTxt(options?: {
46
46
  full?: boolean;
47
- /** Matches Portal GET /api/public/llms/txt?publicSummaryOnly=true */
47
+ /** Matches Sonor GET /api/public/llms/txt?publicSummaryOnly=true */
48
48
  publicSummaryOnly?: boolean;
49
49
  /**
50
50
  * Sub-site host — scopes the page index to THIS domain on multi-site
@@ -10,7 +10,7 @@
10
10
  */
11
11
  import type { GenerateLLMSTxtOptions, LLMSTxtContent } from './types';
12
12
  /**
13
- * Generate llms.txt content from Portal data
13
+ * Generate llms.txt content from Sonor data
14
14
  *
15
15
  * @example
16
16
  * ```ts
@@ -1,10 +1,10 @@
1
- export { createLLMsFullTxtHandler, createLLMsTxtHandler, formatSourcedFactsSection, llmsResponseHeaders } from '../chunk-ZETJTCMV.js';
1
+ export { createLLMsFullTxtHandler, createLLMsTxtHandler, formatSourcedFactsSection, llmsResponseHeaders } from '../chunk-WWSHFRDL.js';
2
2
  export { buildAiDiscoveryHeaders, wantsLlmsDiscoveryLink } from '../chunk-PO2TRJPY.js';
3
3
  export { AI_RETRIEVAL_CRAWLERS, AI_TRAINING_CRAWLERS, buildAiCrawlerRules, createRobotsTxtHandler } from '../chunk-QLTDFUJ7.js';
4
- export { LEGACY_PUBLICATION_PATH, SEO_REVALIDATION_MAX_BODY_BYTES, SEO_REVALIDATION_MAX_ITEMS, createLlmsRevalidateHandler, createSeoRevalidationHandler, parseSeoRevalidationPayload } from '../chunk-JIL5VY2R.js';
4
+ export { LEGACY_PUBLICATION_PATH, SEO_REVALIDATION_MAX_BODY_BYTES, SEO_REVALIDATION_MAX_ITEMS, createLlmsRevalidateHandler, createSeoRevalidationHandler, parseSeoRevalidationPayload } from '../chunk-VGH4MDTU.js';
5
5
  import '../chunk-XTRZGXB2.js';
6
6
  export { AEOBlock, AEOCitedContent, AEOClaim, AEOComparison, AEODefinition, AEOEntity, AEOProvenanceList, AEOStep, AEOSteps, AEOSummary, DEFAULT_SPEAKABLE_SELECTORS, SpeakableSchema, createSpeakableSchema, getSpeakableSelectorsForPage } from '../chunk-PSAG45YF.js';
7
- export { AGENT_ACCESS_HEADING, appendAgentAccessSection, describesMcp, detectMcpServer, formatAgentAccessSection, generateLLMsFullTxt, generateLLMsTxt, writeLLMsTxtToPublic } from '../chunk-J4D6ZXRW.js';
7
+ export { AGENT_ACCESS_HEADING, appendAgentAccessSection, describesMcp, detectMcpServer, formatAgentAccessSection, generateLLMsFullTxt, generateLLMsTxt, writeLLMsTxtToPublic } from '../chunk-QEDHRBAT.js';
8
8
  export { getBusinessInfo, getFAQItems, getLLMsData, getOptimizedLLMsTxt, getPageSummaries, getServices } from '../chunk-GLHQ3LRO.js';
9
9
  import '../chunk-L5UOHS6E.js';
10
10
  import '../chunk-WMVK77ND.js';
@@ -15,5 +15,5 @@ import '../chunk-MJP63SSS.js';
15
15
  import '../chunk-YVKRYQRG.js';
16
16
  import '../chunk-FESKKJAS.js';
17
17
  import '../chunk-A4CC4ZG3.js';
18
- import '../chunk-6OL23QYD.js';
18
+ import '../chunk-AH5Q262S.js';
19
19
  import '../chunk-PKBMQBKP.js';
@@ -3,7 +3,7 @@
3
3
  *
4
4
  * Single source of truth for putting llms.txt links into the site's
5
5
  * trailing-slash shape. Two writers produce this text and neither knows the
6
- * site's next.config: Portal's AI-optimized file (built server-side from
6
+ * site's next.config: Sonor's AI-optimized file (built server-side from
7
7
  * `business.website` + the unslashed seo_pages path) and the local generator.
8
8
  * Both pass their output through here, so on a `trailingSlash: true` site an
9
9
  * AI crawler following a link gets the page instead of a 308. The path rule
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @sonordev/site-kit/llms - On-demand Revalidation
3
3
  *
4
- * Provides a route handler that Portal can call when llms-relevant data changes
4
+ * Provides a route handler that Sonor can call when llms-relevant data changes
5
5
  * (page summaries, FAQs, services, etc.) to bust the Next.js ISR cache.
6
6
  *
7
7
  * @example
@@ -6,9 +6,8 @@
6
6
  * the site, authenticated with the project key. This handler regenerates those
7
7
  * pages, the sitemap and both llms files without a rebuild.
8
8
  *
9
- * Single source of truth for the fleet's `/api/seo-revalidate` handler. It
10
- * replaced per-site copies in heinrich-law-nextjs and wirsch-law-nextjs
11
- * (`lib/seo-revalidation.ts`), and agency-site-kit's portfolio
9
+ * Single source of truth for every site's `/api/seo-revalidate` handler. It
10
+ * replaced per-site copies, and agency-site-kit's portfolio
12
11
  * `createRevalidateHandler` is built on it (`extraPaths` + `extendPayload`);
13
12
  * don't fork it back into a site or package.
14
13
  *
@@ -63,7 +63,7 @@ export interface LLMPageSummary {
63
63
  /** Brief description of page content */
64
64
  description?: string;
65
65
  /**
66
- * Public-safe summary for llms.txt link notes (Portal/Signal validated).
66
+ * Public-safe summary for llms.txt link notes (Sonor/Signal validated).
67
67
  * Prefer this over `description` when building spec-aligned page lists.
68
68
  */
69
69
  llms_public_summary?: string | null;
@@ -90,7 +90,7 @@ export interface GenerateLLMSTxtOptions {
90
90
  /**
91
91
  * Canonical site origin used to absolutize links (e.g. `https://example.com`),
92
92
  * matching the sitemap helper's `baseUrl` convention. When omitted, falls back
93
- * to Portal/local `business.website`, then `NEXT_PUBLIC_SITE_URL` / `SITE_URL`.
93
+ * to Sonor/local `business.website`, then `NEXT_PUBLIC_SITE_URL` / `SITE_URL`.
94
94
  * Never derived from request headers, so /llms.txt stays statically
95
95
  * prerenderable.
96
96
  */
@@ -111,7 +111,7 @@ export interface GenerateLLMSTxtOptions {
111
111
  * generating outside a Next build.
112
112
  */
113
113
  trailingSlash?: boolean;
114
- /** When Portal returns empty services/faq/pages, use this to supply local site data */
114
+ /** When Sonor returns empty services/faq/pages, use this to supply local site data */
115
115
  getLocalData?: () => Promise<LLMsDataResponse | null>;
116
116
  /** Include business info section */
117
117
  includeBusinessInfo?: boolean;
@@ -162,7 +162,7 @@ export interface GenerateLLMSTxtOptions {
162
162
  fullLlmsTxtPath?: string;
163
163
  /**
164
164
  * When true, page list link notes use only validated `llms_public_summary` (no `description` fallback).
165
- * Use for strict GEO alignment when every listed page must have Portal-generated public summaries.
165
+ * Use for strict GEO alignment when every listed page must have Sonor-generated public summaries.
166
166
  */
167
167
  pageListNotesFromPublicSummaryOnly?: boolean;
168
168
  /**
@@ -172,9 +172,9 @@ export interface GenerateLLMSTxtOptions {
172
172
  * off in route handlers so they keep their revalidate window.
173
173
  */
174
174
  fresh?: boolean;
175
- /** When set, overrides Portal `meta.primary_language` for the llms.txt header blockquote. */
175
+ /** When set, overrides Sonor `meta.primary_language` for the llms.txt header blockquote. */
176
176
  headerPrimaryLanguage?: string;
177
- /** When set, overrides Portal `meta.llms_disclaimer` for the llms.txt header blockquote. */
177
+ /** When set, overrides Sonor `meta.llms_disclaimer` for the llms.txt header blockquote. */
178
178
  headerDisclaimer?: string;
179
179
  /** Maximum number of article links to show per topic cluster (default: 5) */
180
180
  maxArticlesPerCluster?: number;
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @sonordev/site-kit/llms - Build-Time Write
3
3
  *
4
- * Fetches AI-optimized llms.txt from Portal API and writes to public/llms.txt
4
+ * Fetches AI-optimized llms.txt from Sonor API and writes to public/llms.txt
5
5
  * at build time. Integrates with sitemap flow when optimizedLLMsTxt is enabled.
6
6
  */
7
7
  import type { PublicationRoutingOptions } from '../articles/routes';
@@ -16,14 +16,14 @@ export interface WriteLLMsTxtOptions {
16
16
  outputDir?: string;
17
17
  /** Write llms-full.txt as well */
18
18
  full?: boolean;
19
- /** Portal API URL */
19
+ /** Sonor API URL */
20
20
  apiUrl?: string;
21
- /** Portal API key */
21
+ /** Sonor API key */
22
22
  apiKey?: string;
23
23
  /** Fallback to non-optimized when API fails */
24
24
  fallbackToLocal?: boolean;
25
25
  /**
26
- * Sub-site host this build belongs to (e.g. `bd-charlotte.com`). Scopes the
26
+ * Sub-site host this build belongs to (e.g. `charlotte.example.com`). Scopes the
27
27
  * page index to THIS domain: one Sonor project can host many domains, and
28
28
  * seo_pages then holds one row PER HOST for shared paths like `/` and
29
29
  * `/terms`. Without it the API resolves an arbitrary sibling's row, so each
@@ -38,21 +38,21 @@ export interface WriteLLMsTxtOptions {
38
38
  publication?: PublicationRoutingOptions;
39
39
  /**
40
40
  * Match Next's `trailingSlash` in the written files' links to this site.
41
- * Portal builds its links from unslashed paths, so on a `trailingSlash: true`
41
+ * Sonor builds its links from unslashed paths, so on a `trailingSlash: true`
42
42
  * site they're rewritten here before the write. createSitemap passes its
43
43
  * resolved value. The default reads next.config through Next's bundle,
44
44
  * which a plain-Node postbuild script doesn't have, so pass it explicitly
45
45
  * there.
46
46
  */
47
47
  trailingSlash?: boolean;
48
- /** When Portal returns empty services/faq/pages, use this to supply local site data */
48
+ /** When Sonor returns empty services/faq/pages, use this to supply local site data */
49
49
  getLocalData?: () => Promise<LLMsDataResponse | null>;
50
50
  /** Forward to GET /api/public/llms/txt and align local fallback with site-kit strict page notes */
51
51
  publicSummaryOnly?: boolean;
52
52
  /**
53
53
  * Site-authored sections appended to llms-full.txt (never llms.txt — that
54
54
  * file stays a compact index). Applied on BOTH content paths: appended to
55
- * the Portal-optimized markdown, and forwarded to the local generator's
55
+ * Sonor-optimized markdown, and forwarded to the local generator's
56
56
  * customSections on fallback. A function form is resolved at write time so
57
57
  * sites can build sections from local data (e.g. a verified citation
58
58
  * registry → a "Sourced facts" section via formatSourcedFactsSection).
@@ -64,17 +64,17 @@ export interface WriteLLMsTxtOptions {
64
64
  * The "Agent access" section (the site's MCP endpoint and server card), on
65
65
  * both files and both content paths. Default: on only for site-kit's
66
66
  * built-in MCP server (what `npx sonor-setup mcp` writes). A site that runs
67
- * its own MCP server (upforge.io) gets nothing unless it passes `true`, and
67
+ * its own MCP server gets nothing unless it passes `true`, and
68
68
  * the section is never added to markdown that already names a server card.
69
69
  * `false` leaves it out everywhere.
70
70
  */
71
71
  mcp?: boolean | AgentAccessOptions;
72
72
  }
73
73
  /**
74
- * Fetch optimized llms.txt from Portal and write to public/llms.txt
74
+ * Fetch optimized llms.txt from Sonor and write to public/llms.txt
75
75
  * Called at build time after sitemap sync (when optimizedLLMsTxt is enabled)
76
76
  *
77
- * Never persists a failure stub: when neither the Portal API nor local data
77
+ * Never persists a failure stub: when neither the Sonor API nor local data
78
78
  * yields real content, the write is skipped entirely so a previously
79
79
  * generated (or committed) file keeps serving.
80
80
  */