@sonordev/site-kit 8.6.0 → 8.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (161) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/agent-manifest.json +1 -1
  3. package/dist/{AnalyticsProvider-GVJYL6XY.js → AnalyticsProvider-7SBJ27SI.js} +6 -6
  4. package/dist/{ArticleViewTracker-AOJXEBYM.js → ArticleViewTracker-PV2RD3P6.js} +5 -5
  5. package/dist/{BlocksPopup-AJ3CKVQG.js → BlocksPopup-NEEFV2L3.js} +9 -8
  6. package/dist/{ChatWidget-EYBVB5SZ.js → ChatWidget-V46UBDOM.js} +5 -5
  7. package/dist/{FileField-UEQYIFRO.js → FileField-MJ3RCNFJ.js} +3 -3
  8. package/dist/{FormSpotlight-H73ZZ66T.js → FormSpotlight-NQPQFZS7.js} +1 -1
  9. package/dist/{FormStage-2PLWWYBW.js → FormStage-4T5PJR5K.js} +1 -1
  10. package/dist/{ManagedForm-ZQOFXEWS.js → ManagedForm-DDDVMKLJ.js} +6 -6
  11. package/dist/{ManagedNewsletterForm-5TE47YZD.js → ManagedNewsletterForm-TUYGN6O3.js} +9 -9
  12. package/dist/{SignalCore-FEFNMNYN.js → SignalCore-OW3YIH6M.js} +5 -5
  13. package/dist/SiteChat-XMKHBSEK.js +6 -0
  14. package/dist/SiteDesignReporter-BRH7ORQS.js +13 -0
  15. package/dist/{SitePopups-C44YTQ3Q.js → SitePopups-VU2C3Z6B.js} +6 -6
  16. package/dist/SitemapSync-C4H3HF3L.js +9 -0
  17. package/dist/_client/booking-widget.js +5 -5
  18. package/dist/admin-auth/index.d.ts +2 -2
  19. package/dist/admin-auth/session.d.ts +2 -2
  20. package/dist/affiliates/index.js +3 -3
  21. package/dist/analytics/content-text.d.ts +17 -0
  22. package/dist/analytics/index.js +6 -6
  23. package/dist/{article-styles-VASFBYA3.js → article-styles-D7VCDXMG.js} +2 -1
  24. package/dist/article-tables-W45BE353.js +3 -0
  25. package/dist/articles/index.js +7 -20
  26. package/dist/articles/server-ui.js +29 -55
  27. package/dist/articles/server.js +6 -5
  28. package/dist/chat/index.js +8 -8
  29. package/dist/{chunk-3RDJKIYO.js → chunk-2WDWQI7K.js} +1 -1
  30. package/dist/{chunk-KTMHRXDT.js → chunk-2WM4TNDF.js} +1 -1
  31. package/dist/chunk-3MJNBOUO.js +8 -0
  32. package/dist/{chunk-BF7TZYC3.js → chunk-52KO4LKD.js} +1 -1
  33. package/dist/chunk-64XODP7M.js +7 -0
  34. package/dist/{chunk-DSD3XZQQ.js → chunk-6BFQI3ZE.js} +3 -3
  35. package/dist/{chunk-QNOJSSQT.js → chunk-6DXQHNZK.js} +1 -1
  36. package/dist/{chunk-5D7ZISUP.js → chunk-7DYMM6SS.js} +11 -6
  37. package/dist/{chunk-QQT2T6JQ.js → chunk-7HW4TZB5.js} +1 -1
  38. package/dist/{chunk-E4PTMORJ.js → chunk-AL5UCWLI.js} +23 -8
  39. package/dist/chunk-AYQEIMGS.js +390 -0
  40. package/dist/{chunk-L6QTERSH.js → chunk-DYROJGI2.js} +1 -1
  41. package/dist/{chunk-XA7Q2VQA.js → chunk-EK7P62DT.js} +1 -1
  42. package/dist/{chunk-BUE3Z32O.js → chunk-F6WLHVMQ.js} +1 -1
  43. package/dist/{chunk-IYCSDFPN.js → chunk-FLOJUMFR.js} +2 -2
  44. package/dist/{chunk-7R2STOVD.js → chunk-G7BRCSV6.js} +3 -3
  45. package/dist/{chunk-NI6ZTP3D.js → chunk-GQN4BGK6.js} +1 -1
  46. package/dist/{chunk-GFY3E7EQ.js → chunk-GXWM5KNS.js} +15 -7
  47. package/dist/{chunk-U34O6I7W.js → chunk-HN7GVGWC.js} +3 -3
  48. package/dist/{chunk-6KU7STM3.js → chunk-HY7ZEU2C.js} +3 -1
  49. package/dist/chunk-IBHBEUZV.js +27 -0
  50. package/dist/{chunk-ZZSAWXWD.js → chunk-IDC5CVBR.js} +1 -1
  51. package/dist/{chunk-HMTPRBYJ.js → chunk-IWNJCRXW.js} +1 -1
  52. package/dist/chunk-JESLPEST.js +14 -0
  53. package/dist/{chunk-BC7JMY4Z.js → chunk-JG53YJLM.js} +58 -1
  54. package/dist/{chunk-RI2N2EBI.js → chunk-JYITKUUB.js} +13 -5
  55. package/dist/{chunk-V67OD7RW.js → chunk-KG5IEV7I.js} +113 -93
  56. package/dist/chunk-KIYACQW3.js +1 -0
  57. package/dist/{chunk-JSW42BHL.js → chunk-M5JIHQ42.js} +1 -1
  58. package/dist/{chunk-YJH6WE76.js → chunk-NFGAXWCN.js} +9 -9
  59. package/dist/{chunk-Y35BWW2C.js → chunk-ODOV76VW.js} +1 -1
  60. package/dist/{chunk-VA6IJ55K.js → chunk-OPUY4RS6.js} +1 -1
  61. package/dist/{chunk-6NXFA7HE.js → chunk-OWZWRP7Y.js} +2 -2
  62. package/dist/{chunk-JJ4JS3LD.js → chunk-PAYCK7FC.js} +1 -1
  63. package/dist/{chunk-72F44HKL.js → chunk-PSS6M4CG.js} +1 -1
  64. package/dist/{chunk-O3Z5HHFP.js → chunk-SBPUFTMP.js} +2 -2
  65. package/dist/{chunk-OFSV5TZY.js → chunk-SHAUX2MQ.js} +1 -1
  66. package/dist/{chunk-OWO3RFEX.js → chunk-SLFYTELD.js} +1 -1
  67. package/dist/{chunk-CMUD37WV.js → chunk-SVHPILS3.js} +1 -1
  68. package/dist/{chunk-YNBRVVTX.js → chunk-THXELZTQ.js} +1 -1
  69. package/dist/{chunk-IGAIQ2B3.js → chunk-TP32MRXV.js} +2 -2
  70. package/dist/{chunk-NUXXFCIT.js → chunk-URLTBVRX.js} +4 -4
  71. package/dist/chunk-XAZC2TUD.js +1119 -0
  72. package/dist/{chunk-URJN75ZG.js → chunk-XIDWNXZN.js} +3 -3
  73. package/dist/chunk-XLAHRN4B.js +1 -0
  74. package/dist/chunk-XS2ORMUG.js +32 -0
  75. package/dist/{chunk-6AWIUO2Z.js → chunk-Y6SHFILE.js} +1 -1
  76. package/dist/{chunk-FTSEP7Q3.js → chunk-YEX5RAEU.js} +3 -3
  77. package/dist/{chunk-AJG74ZZV.js → chunk-YRQS7VAH.js} +1 -1
  78. package/dist/{chunk-DLM4FFNH.js → chunk-ZQSCMYZO.js} +1 -1
  79. package/dist/client/index.js +4 -4
  80. package/dist/contracts/campaign-normalize.d.ts +2 -0
  81. package/dist/contracts/entries.d.ts +1 -1
  82. package/dist/contracts/frame-ready.d.ts +23 -0
  83. package/dist/contracts/funnels.d.ts +576 -0
  84. package/dist/contracts/inbox.d.ts +42 -0
  85. package/dist/contracts/llms.d.ts +200 -0
  86. package/dist/contracts/portfolio.d.ts +361 -8
  87. package/dist/contracts/publication-branding.d.ts +10 -2
  88. package/dist/contracts/site-cache.d.ts +2 -0
  89. package/dist/fleet/index.js +6 -6
  90. package/dist/forms/index.js +9 -9
  91. package/dist/forms/server.js +2 -2
  92. package/dist/images/index.js +4 -4
  93. package/dist/index.js +1 -1
  94. package/dist/landing/contract.d.ts +2 -13
  95. package/dist/landing/contract.js +2 -0
  96. package/dist/landing/index.js +4 -2
  97. package/dist/landing/managed-server.d.ts +21 -0
  98. package/dist/landing/managed.d.ts +11 -0
  99. package/dist/landing/metadata.js +2 -0
  100. package/dist/landing/server.d.ts +5 -0
  101. package/dist/landing/server.js +20 -2
  102. package/dist/layout/client.js +9 -9
  103. package/dist/layout/index.js +10 -10
  104. package/dist/llms/contract.js +2 -1
  105. package/dist/llms/index.js +9 -7
  106. package/dist/llms/merge.d.ts +29 -0
  107. package/dist/maps/index.js +3 -3
  108. package/dist/mcp/sonor.js +9 -8
  109. package/dist/og/pages.d.ts +3 -3
  110. package/dist/portfolio/contract.js +705 -1
  111. package/dist/press-kit/articles/article-body.d.ts +12 -0
  112. package/dist/press-kit/articles/article-heading-ids.d.ts +7 -0
  113. package/dist/press-kit/articles/article-headings.d.ts +61 -0
  114. package/dist/press-kit/articles/html-tags.d.ts +46 -0
  115. package/dist/press-kit/articles/types.d.ts +2 -0
  116. package/dist/revalidate/index.js +3 -3
  117. package/dist/runtime/index.js +3 -3
  118. package/dist/seo/client.js +6 -6
  119. package/dist/seo/index.js +14 -13
  120. package/dist/seo/llms/contract.js +2 -1
  121. package/dist/seo/llms.js +9 -7
  122. package/dist/seo/meta/contract.js +2 -1
  123. package/dist/seo/register-sitemap-cli.js +1 -1
  124. package/dist/seo/server.js +5 -4
  125. package/dist/seo/sitemap.js +7 -5
  126. package/dist/seo-meta/contract.js +2 -1
  127. package/dist/server/index.js +3 -3
  128. package/dist/{server-api-EGOKC7Q3.js → server-api-XIKDWSNO.js} +2 -2
  129. package/dist/shared/build-entries.d.ts +3 -1
  130. package/dist/shared/frame.d.ts +1 -1
  131. package/dist/shared/markdown.d.ts +7 -6
  132. package/dist/shared/source-graph.d.ts +5 -5
  133. package/dist/shared/version.d.ts +1 -1
  134. package/dist/signal/index.js +2 -2
  135. package/dist/sitemap/index.js +7 -5
  136. package/dist/sitemap/shared.d.ts +1 -2
  137. package/dist/slots/index.js +2 -2
  138. package/dist/sync/index.js +5 -5
  139. package/dist/website/contract.js +2 -1
  140. package/dist/website/images.js +4 -4
  141. package/dist/website/index.js +10 -9
  142. package/dist/website/landing/server.js +20 -2
  143. package/dist/website/landing.js +4 -2
  144. package/dist/website/popups.js +9 -8
  145. package/dist/website/slots.js +2 -2
  146. package/dist/{writeLLMsTxt-KHVHNSDM.js → writeLLMsTxt-4HHUAOA6.js} +6 -4
  147. package/docs.json +5 -0
  148. package/package.json +1 -1
  149. package/src/analytics/README.md +1 -1
  150. package/src/landing/README.md +64 -0
  151. package/src/llms/README.md +52 -20
  152. package/dist/SiteChat-3MKYL2XM.js +0 -6
  153. package/dist/SiteDesignReporter-AJDIBNHI.js +0 -12
  154. package/dist/SitemapSync-UJA6JVPW.js +0 -9
  155. package/dist/article-tables-6XHVULPU.js +0 -2
  156. package/dist/chunk-EKBEOXTH.js +0 -114
  157. package/dist/chunk-NZ4RXN3G.js +0 -145
  158. package/dist/chunk-OSYCOC3K.js +0 -21
  159. /package/dist/{chunk-7ZWO5HDQ.js → chunk-BTHEQDN4.js} +0 -0
  160. /package/dist/{chunk-BQR4IPBW.js → chunk-ISRBSTB7.js} +0 -0
  161. /package/dist/{chunk-IHG36STL.js → chunk-XHYE24HU.js} +0 -0
@@ -1,13 +1,13 @@
1
1
  'use client';
2
- export { configureFormsApi, defineForm, field, formsApi, initializeForms } from '../chunk-L6QTERSH.js';
3
- export { FormClient, ManagedForm } from '../chunk-7R2STOVD.js';
4
- import '../chunk-NI6ZTP3D.js';
5
- export { DatePicker } from '../chunk-SOD2F6C2.js';
2
+ export { configureFormsApi, defineForm, field, formsApi, initializeForms } from '../chunk-DYROJGI2.js';
6
3
  export { FormCelebration } from '../chunk-YGGDU6C3.js';
7
- export { useForm, useFormTracking } from '../chunk-HMTPRBYJ.js';
4
+ export { FormClient, ManagedForm } from '../chunk-G7BRCSV6.js';
5
+ import '../chunk-GQN4BGK6.js';
6
+ export { DatePicker } from '../chunk-SOD2F6C2.js';
7
+ export { useForm, useFormTracking } from '../chunk-IWNJCRXW.js';
8
8
  import '../chunk-Q6E4OPGG.js';
9
9
  import '../chunk-5ROTTMBL.js';
10
- export { FormEnhancer } from '../chunk-OWO3RFEX.js';
10
+ export { FormEnhancer } from '../chunk-SLFYTELD.js';
11
11
  import '../chunk-C2FZBUSS.js';
12
12
  import '../chunk-YC7ELZS3.js';
13
13
  import '../chunk-DXO6SBMD.js';
@@ -18,8 +18,8 @@ import '../chunk-NJCTQH2P.js';
18
18
  import '../chunk-L2V5PUFN.js';
19
19
  import '../chunk-GJWI74ZZ.js';
20
20
  import '../chunk-5TM3WPCI.js';
21
- import '../chunk-IYCSDFPN.js';
22
- import '../chunk-QQT2T6JQ.js';
21
+ import '../chunk-FLOJUMFR.js';
22
+ import '../chunk-7HW4TZB5.js';
23
23
  import '../chunk-W7OPEMGJ.js';
24
- import '../chunk-BUE3Z32O.js';
24
+ import '../chunk-F6WLHVMQ.js';
25
25
  import '../chunk-PKBMQBKP.js';
@@ -1,5 +1,5 @@
1
- export { ServerForm, getFormConfig } from '../chunk-AJG74ZZV.js';
2
- import '../chunk-OWO3RFEX.js';
1
+ export { ServerForm, getFormConfig } from '../chunk-YRQS7VAH.js';
2
+ import '../chunk-SLFYTELD.js';
3
3
  import '../chunk-C2FZBUSS.js';
4
4
  import '../chunk-YC7ELZS3.js';
5
5
  export { StaticForm } from '../chunk-VPZJ7ZTL.js';
@@ -1,6 +1,6 @@
1
- export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-CMUD37WV.js';
1
+ export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-SVHPILS3.js';
2
2
  export { ManagedFavicon, getManagedFaviconUrl } from '../chunk-GW7GSBO7.js';
3
- import '../chunk-IYCSDFPN.js';
4
- import '../chunk-QQT2T6JQ.js';
5
- import '../chunk-BUE3Z32O.js';
3
+ import '../chunk-FLOJUMFR.js';
4
+ import '../chunk-7HW4TZB5.js';
5
+ import '../chunk-F6WLHVMQ.js';
6
6
  import '../chunk-PKBMQBKP.js';
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { SITE_KIT_VERSION } from './chunk-BUE3Z32O.js';
1
+ export { SITE_KIT_VERSION } from './chunk-F6WLHVMQ.js';
2
2
  import './chunk-PKBMQBKP.js';
@@ -1,13 +1,2 @@
1
- /**
2
- * Landing-page campaign contract.
3
- *
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
7
- * landing/contract.test.ts), so silent drift fails CI on either side.
8
- *
9
- * A slug normalized here always matches the server's canonical form, so the
10
- * campaign a developer declares in code is exactly the identity the
11
- * dashboard reports on.
12
- */
13
- export declare function normalizeCampaignSlug(input?: string | null): string | null;
1
+ /** Compatibility entry. The shared contract owns campaign normalization. */
2
+ export { normalizeCampaignSlug } from '../contracts/campaign-normalize';
@@ -0,0 +1,2 @@
1
+ export { normalizeCampaignSlug } from '../chunk-3MJNBOUO.js';
2
+ import '../chunk-PKBMQBKP.js';
@@ -1,3 +1,5 @@
1
- export { LandingPage } from '../chunk-JJ4JS3LD.js';
2
- export { landingPageMetadata, normalizeCampaignSlug } from '../chunk-OSYCOC3K.js';
1
+ import '../chunk-BTHEQDN4.js';
2
+ export { LandingPage } from '../chunk-PAYCK7FC.js';
3
+ export { normalizeCampaignSlug } from '../chunk-3MJNBOUO.js';
4
+ export { landingPageMetadata } from '../chunk-JESLPEST.js';
3
5
  import '../chunk-PKBMQBKP.js';
@@ -0,0 +1,21 @@
1
+ import 'server-only';
2
+ import React from 'react';
3
+ import type { Metadata } from 'next';
4
+ import { type ResolveServerApiConfigOptions } from '../server/server-fetch';
5
+ import { type PublishedFunnelPage } from '../contracts/funnels';
6
+ export interface GetPublishedFunnelPageOptions extends ResolveServerApiConfigOptions {
7
+ /** Explicit registered site host. No primary-domain or sibling-site fallback. */
8
+ site: string;
9
+ }
10
+ /** Current published pointer, uncached so pointer changes take effect at the next read. */
11
+ export declare function getPublishedFunnelPage(slug: string, options: GetPublishedFunnelPageOptions): Promise<PublishedFunnelPage | null>;
12
+ export declare function managedFunnelMetadata(page: PublishedFunnelPage): Metadata;
13
+ export interface ManagedFunnelPageProps {
14
+ page: PublishedFunnelPage;
15
+ /** Expiring owner dashboard preview only. Never fetches or mounts a live form. */
16
+ preview?: boolean;
17
+ /** Optional server transport overrides; never forwarded to browser markup. */
18
+ configOptions?: ResolveServerApiConfigOptions;
19
+ }
20
+ /** Server-rendered content plus the existing managed browser form and deferred analytics contract. */
21
+ export declare function ManagedFunnelPage({ page: input, preview, configOptions }: ManagedFunnelPageProps): Promise<React.JSX.Element>;
@@ -0,0 +1,11 @@
1
+ import React, { type ReactNode } from 'react';
2
+ import { type PublishedFunnelPage } from '../contracts/funnels';
3
+ export interface FunnelPageContentProps {
4
+ page: PublishedFunnelPage;
5
+ /** A live managed form supplied by the server adapter. Never used in a preview. */
6
+ conversion?: ReactNode;
7
+ /** Private dashboard preview. All conversion controls are inert. */
8
+ preview?: boolean;
9
+ }
10
+ /** Bounded SSR layout for newsletter, requested-guide and inquiry content. */
11
+ export declare function FunnelPageContent({ page: input, conversion, preview }: FunnelPageContentProps): React.JSX.Element;
@@ -0,0 +1,2 @@
1
+ export { landingPageMetadata } from '../chunk-JESLPEST.js';
2
+ import '../chunk-PKBMQBKP.js';
@@ -29,3 +29,8 @@
29
29
  */
30
30
  export { landingPageMetadata } from './metadata';
31
31
  export { normalizeCampaignSlug } from './contract';
32
+ export { getPublishedFunnelPage, managedFunnelMetadata, ManagedFunnelPage } from './managed-server';
33
+ export type { GetPublishedFunnelPageOptions, ManagedFunnelPageProps } from './managed-server';
34
+ export { FunnelPageContent } from './managed';
35
+ export type { FunnelPageContentProps } from './managed';
36
+ export type { PublishedFunnelPage } from '../contracts/funnels';
@@ -1,3 +1,21 @@
1
- import '../chunk-7ZWO5HDQ.js';
2
- export { landingPageMetadata, normalizeCampaignSlug } from '../chunk-OSYCOC3K.js';
1
+ export { FunnelPageContent, ManagedFunnelPage, getPublishedFunnelPage, managedFunnelMetadata } from '../chunk-AYQEIMGS.js';
2
+ import '../chunk-XS2ORMUG.js';
3
+ import '../chunk-PAYCK7FC.js';
4
+ export { normalizeCampaignSlug } from '../chunk-3MJNBOUO.js';
5
+ export { landingPageMetadata } from '../chunk-JESLPEST.js';
6
+ import '../chunk-XHYE24HU.js';
7
+ import '../chunk-YRQS7VAH.js';
8
+ import '../chunk-SLFYTELD.js';
9
+ import '../chunk-C2FZBUSS.js';
10
+ import '../chunk-YC7ELZS3.js';
11
+ import '../chunk-VPZJ7ZTL.js';
12
+ import '../chunk-DXO6SBMD.js';
13
+ import '../chunk-CVADNHJ4.js';
14
+ import '../chunk-TYSIAWC3.js';
15
+ import '../chunk-HW7B43E5.js';
16
+ import '../chunk-NJCTQH2P.js';
17
+ import '../chunk-C7TLGL3R.js';
18
+ import '../chunk-MH2DSGC6.js';
19
+ import '../chunk-S22FSH7C.js';
20
+ import '../chunk-A4CC4ZG3.js';
3
21
  import '../chunk-PKBMQBKP.js';
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- export { SiteKitClientProviders } from '../chunk-YJH6WE76.js';
2
+ export { SiteKitClientProviders } from '../chunk-NFGAXWCN.js';
3
3
  import '../chunk-6G43IRWR.js';
4
- import '../chunk-VA6IJ55K.js';
5
- import '../chunk-U34O6I7W.js';
4
+ import '../chunk-OPUY4RS6.js';
5
+ import '../chunk-HN7GVGWC.js';
6
6
  import '../chunk-ZTZQPYP6.js';
7
7
  import '../chunk-YC7ELZS3.js';
8
8
  import '../chunk-FESKKJAS.js';
@@ -10,11 +10,11 @@ import '../chunk-A4CC4ZG3.js';
10
10
  import '../chunk-IPQKQEWI.js';
11
11
  import '../chunk-GJWI74ZZ.js';
12
12
  import '../chunk-5TM3WPCI.js';
13
- import '../chunk-DLM4FFNH.js';
14
- import '../chunk-EKBEOXTH.js';
15
- import '../chunk-IYCSDFPN.js';
16
- import '../chunk-QQT2T6JQ.js';
13
+ import '../chunk-ZQSCMYZO.js';
14
+ import '../chunk-64XODP7M.js';
15
+ import '../chunk-FLOJUMFR.js';
16
+ import '../chunk-7HW4TZB5.js';
17
17
  import '../chunk-W7OPEMGJ.js';
18
- import '../chunk-BUE3Z32O.js';
19
- import '../chunk-OFSV5TZY.js';
18
+ import '../chunk-F6WLHVMQ.js';
19
+ import '../chunk-SHAUX2MQ.js';
20
20
  import '../chunk-PKBMQBKP.js';
@@ -1,12 +1,12 @@
1
- import { SiteKitClientProviders } from '../chunk-YJH6WE76.js';
1
+ import { SiteKitClientProviders } from '../chunk-NFGAXWCN.js';
2
2
  import '../chunk-6G43IRWR.js';
3
- import '../chunk-VA6IJ55K.js';
4
- import '../chunk-U34O6I7W.js';
3
+ import '../chunk-OPUY4RS6.js';
4
+ import '../chunk-HN7GVGWC.js';
5
5
  import '../chunk-ZTZQPYP6.js';
6
6
  import { aiDiscoveryLinks } from '../chunk-MTDVV5P3.js';
7
7
  import { ManagedFavicon } from '../chunk-GW7GSBO7.js';
8
8
  import '../chunk-YC7ELZS3.js';
9
- import { resolveClientCredential } from '../chunk-JSW42BHL.js';
9
+ import { resolveClientCredential } from '../chunk-M5JIHQ42.js';
10
10
  import '../chunk-UAYAJPEP.js';
11
11
  import { ManagedScripts } from '../chunk-MVLMXC44.js';
12
12
  import { resolveApiOrigin } from '../chunk-C7TLGL3R.js';
@@ -16,13 +16,13 @@ import '../chunk-A4CC4ZG3.js';
16
16
  import '../chunk-IPQKQEWI.js';
17
17
  import '../chunk-GJWI74ZZ.js';
18
18
  import '../chunk-5TM3WPCI.js';
19
- import '../chunk-DLM4FFNH.js';
20
- import '../chunk-EKBEOXTH.js';
21
- import '../chunk-IYCSDFPN.js';
22
- import '../chunk-QQT2T6JQ.js';
19
+ import '../chunk-ZQSCMYZO.js';
20
+ import '../chunk-64XODP7M.js';
21
+ import '../chunk-FLOJUMFR.js';
22
+ import '../chunk-7HW4TZB5.js';
23
23
  import '../chunk-W7OPEMGJ.js';
24
- import '../chunk-BUE3Z32O.js';
25
- import '../chunk-OFSV5TZY.js';
24
+ import '../chunk-F6WLHVMQ.js';
25
+ import '../chunk-SHAUX2MQ.js';
26
26
  import '../chunk-PKBMQBKP.js';
27
27
  import { jsx, Fragment, jsxs } from 'react/jsx-runtime';
28
28
 
@@ -1,2 +1,3 @@
1
- export { LLMS_DISCLAIMER_MAX_LENGTH, LLMS_PUBLIC_SUMMARY_MAX_LENGTH, LLM_GEO_CONTRACT_VERSION, MANAGED_LLM_SCHEMA_KNOWN_KEYS, clipAtWordBoundary, isEmittableReviewNode, pickManagedLlmSchemaForJsonLd, sanitizeLlmsDisclaimerLine, sanitizeLlmsPublicSummary, sanitizePrimaryLanguageTag } from '../chunk-NZ4RXN3G.js';
1
+ export { LLMS_DESCRIPTION_MAX_LENGTH, LLMS_DISCLAIMER_MAX_LENGTH, LLMS_PUBLIC_SUMMARY_MAX_LENGTH, LLM_GEO_CONTRACT_VERSION, MANAGED_LLM_SCHEMA_KNOWN_KEYS, cleanScrapedPageText, clipAtWordBoundary, groupLlmsPages, isEmittableReviewNode, isLlmsListablePage, llmsAbsoluteUrl, llmsBlockquoteSummary, llmsContactLines, llmsPageListNote, llmsPageTitle, pickLlmsPageDescription, pickManagedLlmSchemaForJsonLd, resolveLlmsPageDescription, sanitizeLlmsDisclaimerLine, sanitizeLlmsPublicSummary, sanitizePrimaryLanguageTag, selectLlmsPages, stripContactDetails, stripPageFiller } from '../chunk-XAZC2TUD.js';
2
+ import '../chunk-ISRBSTB7.js';
2
3
  import '../chunk-PKBMQBKP.js';
@@ -1,20 +1,22 @@
1
- export { createLLMsFullTxtHandler, createLLMsTxtHandler, formatSourcedFactsSection, llmsResponseHeaders } from '../chunk-KTMHRXDT.js';
1
+ export { createLLMsFullTxtHandler, createLLMsTxtHandler, formatSourcedFactsSection, llmsResponseHeaders } from '../chunk-2WM4TNDF.js';
2
2
  export { buildAiDiscoveryHeaders, wantsLlmsDiscoveryLink } from '../chunk-MTDVV5P3.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-YNBRVVTX.js';
4
+ export { LEGACY_PUBLICATION_PATH, SEO_REVALIDATION_MAX_BODY_BYTES, SEO_REVALIDATION_MAX_ITEMS, createLlmsRevalidateHandler, createSeoRevalidationHandler, parseSeoRevalidationPayload } from '../chunk-THXELZTQ.js';
5
5
  export { AEOBlock, AEOCitedContent, AEOClaim, AEOComparison, AEODefinition, AEOEntity, AEOProvenanceList, AEOStep, AEOSteps, AEOSummary, DEFAULT_SPEAKABLE_SELECTORS, SpeakableSchema, createSpeakableSchema, getSpeakableSelectorsForPage } from '../chunk-PSAG45YF.js';
6
6
  import '../chunk-XTRZGXB2.js';
7
- export { AGENT_ACCESS_HEADING, appendAgentAccessSection, describesMcp, detectMcpServer, formatAgentAccessSection, generateLLMsFullTxt, generateLLMsTxt, writeLLMsTxtToPublic } from '../chunk-V67OD7RW.js';
8
- export { getBusinessInfo, getFAQItems, getLLMsData, getOptimizedLLMsTxt, getPageSummaries, getServices } from '../chunk-XA7Q2VQA.js';
9
- import '../chunk-5D7ZISUP.js';
7
+ export { AGENT_ACCESS_HEADING, appendAgentAccessSection, describesMcp, detectMcpServer, formatAgentAccessSection, generateLLMsFullTxt, generateLLMsTxt, writeLLMsTxtToPublic } from '../chunk-KG5IEV7I.js';
8
+ export { getBusinessInfo, getFAQItems, getLLMsData, getOptimizedLLMsTxt, getPageSummaries, getServices } from '../chunk-EK7P62DT.js';
9
+ import '../chunk-7DYMM6SS.js';
10
+ import '../chunk-IBHBEUZV.js';
10
11
  import '../chunk-4K735O3J.js';
11
12
  import '../chunk-UAYAJPEP.js';
12
- export { LLMS_DISCLAIMER_MAX_LENGTH, LLMS_PUBLIC_SUMMARY_MAX_LENGTH, LLM_GEO_CONTRACT_VERSION, MANAGED_LLM_SCHEMA_KNOWN_KEYS, pickManagedLlmSchemaForJsonLd, sanitizeLlmsDisclaimerLine, sanitizeLlmsPublicSummary, sanitizePrimaryLanguageTag } from '../chunk-NZ4RXN3G.js';
13
+ export { LLMS_DISCLAIMER_MAX_LENGTH, LLMS_PUBLIC_SUMMARY_MAX_LENGTH, LLM_GEO_CONTRACT_VERSION, MANAGED_LLM_SCHEMA_KNOWN_KEYS, pickManagedLlmSchemaForJsonLd, sanitizeLlmsDisclaimerLine, sanitizeLlmsPublicSummary, sanitizePrimaryLanguageTag } from '../chunk-XAZC2TUD.js';
13
14
  import '../chunk-4KZ6W3ZH.js';
15
+ import '../chunk-ISRBSTB7.js';
14
16
  import '../chunk-MJP63SSS.js';
15
17
  import '../chunk-YVKRYQRG.js';
16
18
  import '../chunk-FESKKJAS.js';
17
19
  import '../chunk-A4CC4ZG3.js';
18
20
  import '../chunk-W7OPEMGJ.js';
19
- import '../chunk-BUE3Z32O.js';
21
+ import '../chunk-F6WLHVMQ.js';
20
22
  import '../chunk-PKBMQBKP.js';
@@ -0,0 +1,29 @@
1
+ /**
2
+ * Merging what Sonor knows about a business with what the site knows.
3
+ *
4
+ * Sonor wins where it has a value. Where it has none, the site's own value
5
+ * stands. This used to be decided per top-level key with `??`
6
+ * (`business: sonor.business ?? local.business`), and an object whose fields
7
+ * are all null is not nullish: a Sonor project with no phone, address or city
8
+ * on file returned `{ phone: null, address: null, ... }`, won the merge, and
9
+ * deleted the NAP the site carried itself from llms.txt.
10
+ */
11
+ import type { LLMsDataResponse } from './types';
12
+ /**
13
+ * The two objects merged field by field: a field Sonor fills wins, a field
14
+ * Sonor leaves empty takes the site's value, and a field neither fills keeps
15
+ * Sonor's. Neither input is changed.
16
+ */
17
+ export declare function mergeFilledFields<T extends object>(sonor: T | null | undefined, local: T | null | undefined): T | undefined;
18
+ /**
19
+ * Whether the site's own data (`getLocalData`) should be read at all: when
20
+ * Sonor returned nothing, left services, FAQs or pages empty, or left a field
21
+ * of the business's name, description, phone or address empty.
22
+ */
23
+ export declare function needsLocalData(data: Partial<LLMsDataResponse> | null | undefined): boolean;
24
+ /**
25
+ * Sonor's data with the site's own filling its gaps: the business and the
26
+ * contact field by field (`mergeFilledFields`), and each list from the site
27
+ * only when Sonor's is empty.
28
+ */
29
+ export declare function mergeLlmsData(sonor: Partial<LLMsDataResponse> | null, local: LLMsDataResponse | null, mergeMeta: (local: LLMsDataResponse['meta'], sonor: Partial<LLMsDataResponse>['meta']) => LLMsDataResponse['meta']): LLMsDataResponse | null;
@@ -1,9 +1,9 @@
1
1
  'use client';
2
2
  import { monotonicMs } from '../chunk-MH2DSGC6.js';
3
- import { sonorFetch } from '../chunk-IYCSDFPN.js';
4
- import '../chunk-QQT2T6JQ.js';
3
+ import { sonorFetch } from '../chunk-FLOJUMFR.js';
4
+ import '../chunk-7HW4TZB5.js';
5
5
  import { getClientApiConfig } from '../chunk-W7OPEMGJ.js';
6
- import '../chunk-BUE3Z32O.js';
6
+ import '../chunk-F6WLHVMQ.js';
7
7
  import '../chunk-PKBMQBKP.js';
8
8
  import { useState, useCallback, useEffect } from 'react';
9
9
  import { APIProvider, Map as Map$1, AdvancedMarker, Pin, InfoWindow } from '@vis.gl/react-google-maps';
package/dist/mcp/sonor.js CHANGED
@@ -1,10 +1,10 @@
1
1
  import { fetchReviews, fetchReviewStats } from '../chunk-BSQP6PRA.js';
2
2
  import { toolErrorResult } from '../chunk-FYAB6CXS.js';
3
- import { fetchBookingTypes, fetchAvailability } from '../chunk-72F44HKL.js';
4
- import { getLLMsData, getServices, getFAQItems, getPageSummaries } from '../chunk-XA7Q2VQA.js';
3
+ import { fetchBookingTypes, fetchAvailability } from '../chunk-PSS6M4CG.js';
4
+ import { getLLMsData, getServices, getFAQItems, getPageSummaries } from '../chunk-EK7P62DT.js';
5
5
  import '../chunk-5ROTTMBL.js';
6
- import { getFormConfig } from '../chunk-AJG74ZZV.js';
7
- import '../chunk-OWO3RFEX.js';
6
+ import { getFormConfig } from '../chunk-YRQS7VAH.js';
7
+ import '../chunk-SLFYTELD.js';
8
8
  import '../chunk-C2FZBUSS.js';
9
9
  import '../chunk-YC7ELZS3.js';
10
10
  import '../chunk-VPZJ7ZTL.js';
@@ -15,17 +15,18 @@ import '../chunk-HW7B43E5.js';
15
15
  import '../chunk-NJCTQH2P.js';
16
16
  import { resolveArticleUrl } from '../chunk-4K735O3J.js';
17
17
  import { resolveFetch } from '../chunk-UAYAJPEP.js';
18
- import '../chunk-NZ4RXN3G.js';
18
+ import '../chunk-XAZC2TUD.js';
19
+ import '../chunk-ISRBSTB7.js';
19
20
  import '../chunk-MJP63SSS.js';
20
21
  import { resolveServerApiConfig } from '../chunk-C7TLGL3R.js';
21
22
  import '../chunk-MH2DSGC6.js';
22
23
  import { resolveSiteHost } from '../chunk-FESKKJAS.js';
23
24
  import '../chunk-A4CC4ZG3.js';
24
25
  import '../chunk-5TM3WPCI.js';
25
- import '../chunk-IYCSDFPN.js';
26
- import '../chunk-QQT2T6JQ.js';
26
+ import '../chunk-FLOJUMFR.js';
27
+ import '../chunk-7HW4TZB5.js';
27
28
  import '../chunk-W7OPEMGJ.js';
28
- import { SITE_KIT_VERSION } from '../chunk-BUE3Z32O.js';
29
+ import { SITE_KIT_VERSION } from '../chunk-F6WLHVMQ.js';
29
30
  import '../chunk-PKBMQBKP.js';
30
31
  import 'server-only';
31
32
  import { after } from 'next/server.js';
@@ -112,8 +112,8 @@ export declare function matchesRoutePattern(path: string, pattern: string): bool
112
112
  * A static file in a dynamic segment covers every param of the route, so
113
113
  * these can't be `opengraph-image` files. `sonor-setup og` renders each one to
114
114
  * `public/_og/` (see paramCardUrl), and the page declares it with
115
- * `paramCardImage`. The MDG property sites needed a card per floor plan and
116
- * per community and rendered them with their own script until this existed.
115
+ * `paramCardImage`. Property sites needed a card per floor plan and per
116
+ * community and rendered them with their own script until this existed.
117
117
  *
118
118
  * Returns each key with the pattern it falls under. Keys that are a real
119
119
  * static route or a pattern are left to the route cards.
@@ -173,7 +173,7 @@ export declare function paramCardImage(path: string, options?: {
173
173
  * Next wires such a card in as `<path>/opengraph-image`, with no extension.
174
174
  * With `trailingSlash: true` that URL 308-redirects to the slashed one, so
175
175
  * every share preview starts with a redirect, and bots that don't follow one
176
- * show no card (the MDG property sites, 2026-09-15). Declaring the slashed URL
176
+ * show no card (seen on several property sites, 2026-09-15). Declaring the slashed URL
177
177
  * gets a 200 first time. Declared images beat the file convention, so this
178
178
  * replaces Next's own entry rather than adding a second.
179
179
  *