@sonordev/site-kit 7.1.0 → 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 (225) hide show
  1. package/AGENTS.md +2 -2
  2. package/CHANGELOG.md +21 -3426
  3. package/agent-manifest.json +1 -1
  4. package/dist/{AnalyticsProvider-ZMQUV33M.js → AnalyticsProvider-ZB33W6MC.js} +4 -4
  5. package/dist/{ArticleViewTracker-V7NUXYBY.js → ArticleViewTracker-GMHYLLLZ.js} +3 -3
  6. package/dist/{BlocksPopup-52EU7OUY.js → BlocksPopup-EA6LYL25.js} +4 -4
  7. package/dist/{ChatWidget-5BHMNR57.js → ChatWidget-UCDWMWCW.js} +5 -5
  8. package/dist/{EngageWidget-PCGLX7SO.js → EngageWidget-7ZYSK4GE.js} +4 -4
  9. package/dist/{FileField-TSFGNAMY.js → FileField-QKA3JB2Q.js} +3 -3
  10. package/dist/{FormSpotlight-XLBWEOTE.js → FormSpotlight-AQTIA5TP.js} +2 -2
  11. package/dist/{FormStage-IJQ5Q2X6.js → FormStage-FDTLTP3B.js} +2 -2
  12. package/dist/ManagedForm-H7BVAH2W.js +14 -0
  13. package/dist/{ManagedNewsletterForm-QAO3POLC.js → ManagedNewsletterForm-J6QSAGGP.js} +4 -4
  14. package/dist/{SignalCore-RBA3VDBL.js → SignalCore-JZNXOLNT.js} +3 -3
  15. package/dist/{SiteDesignReporter-C4LR5X2V.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-U35H2JIQ.js → chunk-3SDOQUUF.js} +2 -2
  43. package/dist/{chunk-F42R35NV.js → chunk-6WIQCXOO.js} +1 -1
  44. package/dist/{chunk-4JQQDCMO.js → chunk-AH5Q262S.js} +1 -1
  45. package/dist/{chunk-OPRBF7VE.js → chunk-CIG5UL2S.js} +1 -1
  46. package/dist/{chunk-EIULXXUJ.js → chunk-CSTQDNGK.js} +4 -4
  47. package/dist/{chunk-YLSEB32F.js → chunk-D5EC5KVO.js} +1 -1
  48. package/dist/{chunk-L2DJD5Y4.js → chunk-ERXXITG4.js} +1 -1
  49. package/dist/{chunk-3XPJKZ6D.js → chunk-HF57LG73.js} +7 -7
  50. package/dist/{chunk-GWUKQ26F.js → chunk-ILU5I6RW.js} +1 -1
  51. package/dist/{chunk-HAG4YIZY.js → chunk-JBE46QJZ.js} +6 -6
  52. package/dist/{chunk-3G2SE2J4.js → chunk-JTU2GOM4.js} +9 -5
  53. package/dist/{chunk-QPEEKFCA.js → chunk-LUXVWITO.js} +2 -2
  54. package/dist/{chunk-7QTMMHUO.js → chunk-M3YEPKP7.js} +1 -1
  55. package/dist/{chunk-XNVSCQ2O.js → chunk-NK4CSJNP.js} +2 -2
  56. package/dist/{chunk-W2CL2DB3.js → chunk-PGMVL4AB.js} +2 -2
  57. package/dist/{chunk-HVH37YPX.js → chunk-PHYMNUJU.js} +1 -1
  58. package/dist/{chunk-GIAOPEN6.js → chunk-Q4W23JYM.js} +1 -1
  59. package/dist/{chunk-J4D6ZXRW.js → chunk-QEDHRBAT.js} +1 -1
  60. package/dist/{chunk-DUAO4Q75.js → chunk-RHNWA34F.js} +2 -2
  61. package/dist/{chunk-LFXVE32I.js → chunk-UXOGCKL6.js} +1 -1
  62. package/dist/{chunk-PLUP2KN5.js → chunk-V3PUVBME.js} +2 -2
  63. package/dist/{chunk-XD3ZQET6.js → chunk-V6FDQLR7.js} +1 -1
  64. package/dist/{chunk-EVFZ7KEW.js → chunk-VDF5DFWT.js} +1 -1
  65. package/dist/{chunk-7MHHWZKC.js → chunk-VGH4MDTU.js} +1 -1
  66. package/dist/{chunk-FLR3EMK6.js → chunk-VLARKWZU.js} +1 -1
  67. package/dist/{chunk-ZETJTCMV.js → chunk-WWSHFRDL.js} +1 -1
  68. package/dist/{chunk-ZIMFQWGJ.js → chunk-YCJT4JJG.js} +3 -3
  69. package/dist/{chunk-3J2ERO3I.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/src/sync/README.md +1 -1
  224. package/dist/ManagedForm-Z3PKOPIZ.js +0 -14
  225. package/dist/SitemapSync-XVMGKCF3.js +0 -8
@@ -2,7 +2,7 @@
2
2
  * @sonordev/site-kit/manifest
3
3
  *
4
4
  * PWA manifest generator. Fetches project name, description, brand colors,
5
- * and logo from Portal to generate a compliant Web App Manifest.
5
+ * and logo from Sonor to generate a compliant Web App Manifest.
6
6
  *
7
7
  * @example
8
8
  * ```ts
@@ -21,13 +21,13 @@
21
21
  * ```
22
22
  */
23
23
  export interface ManifestConfig {
24
- /** App name. Defaults to Portal project name. */
24
+ /** App name. Defaults to Sonor project name. */
25
25
  name?: string;
26
26
  /** Short name for home screen. Defaults to first word of name. */
27
27
  shortName?: string;
28
- /** App description. Defaults to Portal project description. */
28
+ /** App description. Defaults to Sonor project description. */
29
29
  description?: string;
30
- /** Theme color for browser chrome. Defaults to Portal brand color or #4bbf39. */
30
+ /** Theme color for browser chrome. Defaults to Sonor brand color or #4bbf39. */
31
31
  themeColor?: string;
32
32
  /** Background color for splash screen. Default: '#ffffff' */
33
33
  backgroundColor?: string;
@@ -41,20 +41,20 @@ export interface ManifestConfig {
41
41
  scope?: string;
42
42
  /** App categories */
43
43
  categories?: string[];
44
- /** Custom icons. If not provided, derived from Portal logo. */
44
+ /** Custom icons. If not provided, derived from the project logo in Sonor. */
45
45
  icons?: Array<{
46
46
  src: string;
47
47
  sizes: string;
48
48
  type: string;
49
49
  purpose?: string;
50
50
  }>;
51
- /** Portal API key. Defaults from env. */
51
+ /** Sonor API key. Defaults from env. */
52
52
  apiKey?: string;
53
- /** Portal API URL. Defaults from env. */
53
+ /** Sonor API URL. Defaults from env. */
54
54
  apiUrl?: string;
55
55
  }
56
56
  /**
57
57
  * Create a route handler that serves the PWA manifest.
58
- * Fetches project data from Portal and merges with config overrides.
58
+ * Fetches project data from Sonor and merges with config overrides.
59
59
  */
60
60
  export declare function createManifest(config?: ManifestConfig): () => Promise<Response>;
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
  import { monotonicMs } from '../chunk-MH2DSGC6.js';
3
- import { sonorFetch } from '../chunk-U35H2JIQ.js';
4
- import '../chunk-EVFZ7KEW.js';
5
- import '../chunk-4JQQDCMO.js';
3
+ import { sonorFetch } from '../chunk-3SDOQUUF.js';
4
+ import '../chunk-VDF5DFWT.js';
5
+ import '../chunk-AH5Q262S.js';
6
6
  import '../chunk-PKBMQBKP.js';
7
7
  import { useState, useCallback, useEffect } from 'react';
8
8
  import { APIProvider, Map as Map$1, AdvancedMarker, Pin, InfoWindow } from '@vis.gl/react-google-maps';
@@ -47,7 +47,7 @@ export interface WebMcpToolsProps {
47
47
  *
48
48
  * Renders nothing. Mount it as a CHILDLESS sibling in the layout — never as a
49
49
  * wrapper around `{children}`, which would de-opt the whole route to client
50
- * rendering (the cardinal rule in the root CLAUDE.md).
50
+ * rendering.
51
51
  *
52
52
  * @example
53
53
  * ```tsx
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * Sends each MCP tool call to Sonor, so the dashboard can say which agents
3
- * used a site, which tools, and whether they worked (CLAUDE.md "every agent
4
- * gets a badge": the record carries the agent's own name).
3
+ * used a site, which tools, and whether they worked (every agent gets a
4
+ * badge: the record carries the agent's own name).
5
5
  *
6
6
  * Fire-and-forget, after the response: Next's `after()` keeps a serverless
7
7
  * function alive for it without the agent waiting. It carries no person's
@@ -57,7 +57,7 @@ export interface McpServerCard {
57
57
  }
58
58
  export interface BuildMcpServerCardOptions {
59
59
  info: McpServerInfo;
60
- /** Absolute site origin, e.g. `https://upforge.io` (no trailing slash). */
60
+ /** Absolute site origin, e.g. `https://example.com` (no trailing slash). */
61
61
  baseUrl: string;
62
62
  /** Path of the MCP endpoint on this origin (default `/api/mcp`). */
63
63
  mcpPath?: string;
@@ -23,8 +23,7 @@
23
23
  * send_inquiry goes through Sonor's agent-inquiry door, not the browser form
24
24
  * endpoint: the form must opt in (embed_config.agent_inquiries in Sonor), the
25
25
  * call carries the agent's badge (`agent_identity`) and `human_approved`, and
26
- * the row lands in Forms as an agent inquiry. See sonor-api
27
- * src/modules/forms/agent-inquiry.ts.
26
+ * the row lands in Forms as an agent inquiry.
28
27
  *
29
28
  * @example
30
29
  * ```ts
@@ -33,7 +32,7 @@
33
32
  * import { sonorMcpServer, reportToolCallsToSonor } from '@sonordev/site-kit/mcp/sonor'
34
33
  *
35
34
  * export const { POST, GET, DELETE, OPTIONS } = createMcpHandler({
36
- * server: sonorMcpServer({ businessName: 'Heinrich Law', inquiry: { form: 'contact' } }),
35
+ * server: sonorMcpServer({ businessName: 'Example Law', inquiry: { form: 'contact' } }),
37
36
  * baseUrl: process.env.NEXT_PUBLIC_SITE_URL,
38
37
  * onToolCall: reportToolCallsToSonor(),
39
38
  * })
@@ -46,7 +45,7 @@ export { reportToolCallsToSonor } from './report';
46
45
  export type { ReportToolCallsOptions } from './report';
47
46
  export type SonorMcpToolName = 'get_business_profile' | 'list_services' | 'search_faq' | 'find_pages' | 'list_articles' | 'get_article' | 'get_reviews' | 'list_offerings' | 'check_availability' | 'get_inquiry_form' | 'send_inquiry';
48
47
  export interface SonorMcpOptions {
49
- /** The business, as tool descriptions name it ("…at Heinrich Law"). */
48
+ /** The business, as tool descriptions name it ("…at Example Law"). */
50
49
  businessName: string;
51
50
  /** Absolute site origin for links. Default: NEXT_PUBLIC_SITE_URL. */
52
51
  siteUrl?: string;
@@ -83,11 +82,11 @@ export interface SonorMcpOptions {
83
82
  * a hit in the primary field twice. No query keeps the given order.
84
83
  */
85
84
  export declare function rankByQuery<T>(items: T[], query: string, fields: (item: T) => [primary: string, secondary: string], limit: number): T[];
86
- /** `<host> MCP <tool> via <assistant>`: the badge an agent's write carries (CLAUDE.md "every agent gets a badge"). */
85
+ /** `<host> MCP <tool> via <assistant>`: the badge an agent's write carries. */
87
86
  export declare function formatAgentIdentity(host: string, tool: string, assistant: string): string;
88
87
  /** The built-in tools for this site, in the order agents should reach for them. */
89
88
  export declare function sonorMcpTools(options: SonorMcpOptions): SiteKitMcpTool[];
90
- /** `heinrichlaw.com` → `com.heinrichlaw/site`, the reverse-DNS server name SEP-2127 asks for. */
89
+ /** `examplelaw.com` → `com.examplelaw/site`, the reverse-DNS server name SEP-2127 asks for. */
91
90
  export declare function serverNameForHost(host: string): string;
92
91
  export interface SonorMcpServerOptions extends SonorMcpOptions {
93
92
  /** Override any of the server card's fields. */
package/dist/mcp/sonor.js CHANGED
@@ -1,14 +1,14 @@
1
1
  import { toolErrorResult } from '../chunk-FYAB6CXS.js';
2
2
  import { fetchReviews, fetchReviewStats } from '../chunk-EDYHROQ7.js';
3
3
  import { getOfferings } from '../chunk-G3NHWMP5.js';
4
- import { fetchBookingTypes, fetchAvailability } from '../chunk-7QTMMHUO.js';
4
+ import { fetchBookingTypes, fetchAvailability } from '../chunk-M3YEPKP7.js';
5
5
  import { getLLMsData, getServices, getFAQItems, getPageSummaries } from '../chunk-GLHQ3LRO.js';
6
- import { getFormConfig } from '../chunk-PLUP2KN5.js';
7
- import '../chunk-FLR3EMK6.js';
6
+ import { getFormConfig } from '../chunk-V3PUVBME.js';
7
+ import '../chunk-VLARKWZU.js';
8
8
  import '../chunk-YC7ELZS3.js';
9
- import '../chunk-OPRBF7VE.js';
9
+ import '../chunk-CIG5UL2S.js';
10
10
  import '../chunk-DXO6SBMD.js';
11
- import '../chunk-QPEEKFCA.js';
11
+ import '../chunk-LUXVWITO.js';
12
12
  import { getAllArticles, getArticle } from '../chunk-TXBAOEKG.js';
13
13
  import '../chunk-Y3INC4QJ.js';
14
14
  import '../chunk-QXMIKDOL.js';
@@ -22,9 +22,9 @@ import { resolveSiteHost } from '../chunk-FESKKJAS.js';
22
22
  import '../chunk-A4CC4ZG3.js';
23
23
  import '../chunk-5SQK3D53.js';
24
24
  import '../chunk-NJCTQH2P.js';
25
- import '../chunk-U35H2JIQ.js';
26
- import '../chunk-EVFZ7KEW.js';
27
- import { SITE_KIT_VERSION } from '../chunk-4JQQDCMO.js';
25
+ import '../chunk-3SDOQUUF.js';
26
+ import '../chunk-VDF5DFWT.js';
27
+ import { SITE_KIT_VERSION } from '../chunk-AH5Q262S.js';
28
28
  import '../chunk-PKBMQBKP.js';
29
29
  import 'server-only';
30
30
  import { after } from 'next/server.js';
@@ -19,8 +19,7 @@
19
19
  * answered by the same immutable deploy that received it, and the base URL
20
20
  * comes from the platform (`context`), never from a client header.
21
21
  *
22
- * Single source of truth for the relay. It replaced per-site copies in
23
- * upforge-nextjs and wirsch-law-nextjs (`lib/mcp/transport-auth.ts`, the
22
+ * Single source of truth for the relay. It replaced per-site copies (the
24
23
  * `protect()` wrapper, the `/api/mcp-internal` relay and the function body);
25
24
  * don't fork it back into a site.
26
25
  *
@@ -10,8 +10,7 @@
10
10
  * Keeping the definition in one shape is the whole point: the tool an agent
11
11
  * finds by crawling `/.well-known/mcp.json` and the tool it finds by driving a
12
12
  * browser to the page are the same tool, with the same schema and the same
13
- * handler. Two definitions would drift the way the two Square token refreshers
14
- * drifted (see the root CLAUDE.md "Consolidate Duplicated Logic" note).
13
+ * handler. Two definitions would drift.
15
14
  */
16
15
  /** A JSON Schema node. Deliberately loose — MCP passes these through verbatim. */
17
16
  export interface JsonSchemaNode {
@@ -84,7 +83,7 @@ export interface McpToolAnnotations {
84
83
  export interface McpToolContext {
85
84
  /** Where the call came in from: the remote endpoint or the in-page API. */
86
85
  surface: 'http' | 'webmcp';
87
- /** Absolute site origin, e.g. `https://upforge.io`. */
86
+ /** Absolute site origin, e.g. `https://example.com`. */
88
87
  baseUrl?: string;
89
88
  /** The originating Request, when the call arrived over HTTP. */
90
89
  request?: Request;
@@ -95,7 +94,7 @@ export interface McpToolContext {
95
94
  }
96
95
  /**
97
96
  * One tool call, as the endpoint saw it: the record an agent leaves
98
- * (CLAUDE.md "every agent gets a badge"). `createMcpHandler`'s `onToolCall`
97
+ * (every agent gets a badge). `createMcpHandler`'s `onToolCall`
99
98
  * receives it; `reportToolCallsToSonor` sends it to Sonor, which is how the
100
99
  * dashboard knows which agents used a site and what for.
101
100
  */
@@ -153,7 +152,7 @@ export declare function defineMcpTool<Args = Record<string, unknown>>(tool: Site
153
152
  export interface McpServerInfo {
154
153
  /**
155
154
  * Reverse-DNS name with exactly one forward slash, per SEP-2127:
156
- * `io.upforge/site`. The part before the slash is a namespace you control.
155
+ * `io.example/site`. The part before the slash is a namespace you control.
157
156
  */
158
157
  name: string;
159
158
  /** Semver. No ranges. */
@@ -19,9 +19,8 @@
19
19
  * - Nothing here touches the DOM at import time, so it is safe in any module
20
20
  * graph a server component reaches; scenes register from effects.
21
21
  *
22
- * Zero dependencies, ~2KB. Extracted from the upforgelabs.com engine
23
- * (components/cinema/engine.ts) — that repo's docs/SCROLL-CINEMA.md is the
24
- * full playbook for building scenes on top of it.
22
+ * Zero dependencies, ~2KB. Extracted from the engine behind
23
+ * upforgelabs.com.
25
24
  */
26
25
  export type SceneMode = 'pin' | 'view';
27
26
  /**
@@ -9,8 +9,7 @@
9
9
  * arms, we assume nobody is going to and show the content. Real visitors
10
10
  * scroll well inside the window, so animations are unaffected.
11
11
  *
12
- * Single source of truth for every reveal system in the kit. Ported from
13
- * upforge.io's lib/reveal-failsafe.
12
+ * Single source of truth for every reveal system in the kit.
14
13
  */
15
14
  /**
16
15
  * Run `fn` after `ms` milliseconds unless the visitor scrolls first.
@@ -88,8 +88,8 @@ export interface UseGsapOptions {
88
88
  * `plugins`, so setup can stay synchronous. That matters: gsap.context
89
89
  * only records what runs synchronously inside it, so a plugin imported
90
90
  * from within setup did its work outside the context, unscoped and never
91
- * reverted on unmount (vsf-consulting-nextjs's SplitHeading had to build a
92
- * second context of its own to clean up).
91
+ * reverted on unmount (a split-text heading had to build a second context
92
+ * of its own to clean up).
93
93
  */
94
94
  plugins?: GsapPluginLoaders;
95
95
  }
@@ -26,7 +26,7 @@
26
26
  * server-rendered still. Mobile gets composed stills by design.
27
27
  * - Byte budget: ≤5MB of models/textures per scene, fetched on approach.
28
28
  *
29
- * upforgelabs.com is the reference build (components/cinema/SiteScene.tsx).
29
+ * upforgelabs.com is the reference build.
30
30
  */
31
31
  import { type RefObject } from 'react';
32
32
  import { PerspectiveCamera, Scene, WebGLRenderer, type Object3D, type Texture } from 'three';
@@ -2,8 +2,8 @@
2
2
  * @sonordev/site-kit/og — OG card config contract.
3
3
  *
4
4
  * THE SITE OWNS THE THEME. Sonor stores one brand_primary/secondary per
5
- * project; real sites have full palettes (Ludlow: red, ink, cream, scrim —
6
- * four tokens where Sonor stores two). So the card's colors, fonts, and
5
+ * project; real sites have full palettes (red, ink, cream, scrim: four
6
+ * tokens where Sonor stores two). So the card's colors, fonts, and
7
7
  * layout come from a repo-owned og.config.ts, typically importing the same
8
8
  * constants the site itself uses. Sonor brand data is only the zero-config
9
9
  * seed used by `sonor-setup og` when no og.config.ts exists.
@@ -61,7 +61,7 @@ export interface OgContent {
61
61
  subtitle?: string;
62
62
  /** Handwritten-style accent line (rendered in the last configured font). */
63
63
  hand?: string;
64
- /** Bottom bar segments, e.g. ['Give an hour', 'ludlowpto.org']. */
64
+ /** Bottom bar segments, e.g. ['Free estimate', 'example.com']. */
65
65
  bar?: string[];
66
66
  }
67
67
  /**
@@ -82,7 +82,7 @@ export interface OgCardConfig {
82
82
  logo?: string;
83
83
  background?: OgBackground;
84
84
  /**
85
- * 'plate-left': logo plate left, copy right (the Ludlow layout).
85
+ * 'plate-left': logo plate left, copy right.
86
86
  * 'centered': stacked, logo above title.
87
87
  * 'banner': no plate, full-bleed copy.
88
88
  * 'split': copy left, content photo right — for cards that show the page's
@@ -5,8 +5,8 @@
5
5
  * build-time template (template.ts) and the runtime card (route.tsx). The two
6
6
  * disagreed: the template set the bar in `theme.surface`, the runtime card in
7
7
  * `theme.text`, and on a site whose text and accent are both strong colors the
8
- * runtime bar came out unreadable (navy on crimson on watsonhac.com, ink on
9
- * green on reinhart). Both sites dropped the bar rather than ship it.
8
+ * runtime bar came out unreadable (navy on crimson, ink on green), and sites
9
+ * dropped the bar rather than ship it.
10
10
  *
11
11
  * `theme.barText` always wins. Otherwise the first candidate that reaches
12
12
  * WCAG AA for large text against the accent is used, in the order the
@@ -43,10 +43,10 @@ export declare const DYNAMIC = "*";
43
43
  * not — the logo, the photo and the bar are already saying whose it is, and
44
44
  * every character spent on the brand is one not spent on the page.
45
45
  *
46
- * Also drops the two broken suffixes managed titles turn up with, both found
47
- * on 2026-09-15 and each worked around by hand in a site's `cards`: a
48
- * dangling separator with no brand after it (reinhart's "About Us |", Green
49
- * Bay's), and the domain after a comma ("Privacy Policy, abbeyglenapts.com").
46
+ * Also drops the two broken suffixes managed titles turn up with, each once
47
+ * worked around by hand in a site's `cards`: a dangling separator with no
48
+ * brand after it ("About Us |"), and the domain after a comma ("Privacy
49
+ * Policy, example.com").
50
50
  */
51
51
  export declare function stripBrandSuffix(title: string, brand?: string): string;
52
52
  /**
@@ -98,7 +98,7 @@ export declare function slugForPath(path: string): string;
98
98
  export declare function unmatchedCardKeys(cards: Record<string, unknown> | undefined, paths: string[]): string[];
99
99
  /**
100
100
  * Does a concrete URL fall under a dynamic route pattern? One `*` matches
101
- * exactly one segment: `/properties/tall-pines/about` is under
101
+ * exactly one segment: `/properties/maple-court/about` is under
102
102
  * `/properties/*` + `/about`, and `/floor-plans/1-bedroom` under
103
103
  * `/floor-plans/*`. A key that is itself a pattern matches nothing.
104
104
  */
@@ -6,8 +6,8 @@
6
6
  * Satori, which has no DOM to measure, so its title sat at a fixed 84px,
7
7
  * uppercase, with no fitting. Beside the 430px photo that holds about 11
8
8
  * characters a line, so a real post title ran off the bottom of the card.
9
- * watsonhac.com, reinhart and vsf-consulting-nextjs each worked around it by
10
- * dropping the photo past a hand-picked length (40 or 50 characters).
9
+ * Sites worked around it by dropping the photo past a hand-picked length
10
+ * (40 or 50 characters).
11
11
  *
12
12
  * This does what the build-time fitter does, from an estimate instead of a
13
13
  * measurement: the same size range (TITLE_MAX_PX down to TITLE_MIN_PX, in 2px
@@ -42,8 +42,7 @@
42
42
  * Next doesn't wire it into metadata; the page declares it.
43
43
  *
44
44
  * Sites needed an adapter between the two before `createOgImage` existed
45
- * (watsonhac.com, reinhart, vsf-consulting-nextjs: a default export that
46
- * built a dummy Request to call the GET handler).
45
+ * (a default export that built a dummy Request to call the GET handler).
47
46
  *
48
47
  * SATORI CONSTRAINTS (why this is not the static template): flexbox-only CSS
49
48
  * subset, no external stylesheets, images must be absolute URLs or data URIs,
@@ -2,7 +2,7 @@
2
2
  * OG card HTML template builder.
3
3
  *
4
4
  * Turns an OgCardConfig into a self-contained 1200x630 HTML document rendered
5
- * by headless Chrome. Layout rules baked in from the Ludlow card:
5
+ * by headless Chrome. Layout rules baked in from real cards:
6
6
  * - content held inside the middle ~80% (platforms crop toward 2:1 and the
7
7
  * bottom bar is the first casualty)
8
8
  * - script/hand faces never below 40px — under that they turn to mush at
@@ -5,7 +5,7 @@
5
5
  * Also served on the deprecated `/middleware` subpath. Handles:
6
6
  * - Security headers (CSP frame-ancestors, nosniff, referrer/permissions
7
7
  * policy — deliberately NO X-Frame-Options; see securityHeaders.ts)
8
- * - Portal-managed redirects (rule list cached in memory, see the
8
+ * - Sonor-managed redirects (rule list cached in memory, see the
9
9
  * `redirects` option below)
10
10
  * - Optional before/after hooks for custom logic
11
11
  *
@@ -70,7 +70,7 @@ export interface LlmsDiscoveryConfig {
70
70
  }
71
71
  export interface SiteKitProxyConfig {
72
72
  /**
73
- * Portal-managed redirects, checked before each page render. Default: true,
73
+ * Sonor-managed redirects, checked before each page render. Default: true,
74
74
  * and the recommended setting.
75
75
  *
76
76
  * The rule list is cached in memory for `cacheSeconds` (default 300) per
@@ -23,18 +23,15 @@
23
23
  * Content). The page is public anyway, and the overlay it loads there only
24
24
  * outlines copy and reports clicks (`slots/edit/overlay.ts`).
25
25
  *
26
- * upforgeapps.com is deliberately NOT here. It is a third Upforge apex,
27
- * but it only *links* to case studies (`upforge.io/work/<slug>`, see its
28
- * `lib/proof.ts`) and frames no client site anywhere. An origin earns a
29
- * place on this list by embedding, not by belonging to Upforge; adding a
30
- * non-embedder would hand out framing rights nothing needs. Re-check that
31
- * before adding it.
26
+ * An origin earns a place on this list by embedding managed sites, not by
27
+ * belonging to the same company: a site that only links to case studies
28
+ * frames nothing, and adding it would hand out framing rights nothing needs.
29
+ * Re-check that before adding one.
32
30
  *
33
31
  * Do NOT re-fork this list into individual sites' proxy/middleware/
34
- * next.config/netlify.toml/_headers — a fork is a copy that stops
35
- * tracking this one, which is exactly how upforgelabs.com came to be
36
- * missing from ten sites' allowlists at once. Add origins HERE and let
37
- * the fleet inherit them on its next deploy.
32
+ * next.config/netlify.toml/_headers: a fork is a copy that stops tracking
33
+ * this one, so a new origin never reaches it. Add origins HERE and every
34
+ * site inherits them on its next deploy.
38
35
  */
39
36
  export declare const DEFAULT_FRAME_ANCESTORS: string[];
40
37
  export interface SecurityHeadersConfig {
@@ -43,8 +40,9 @@ export interface SecurityHeadersConfig {
43
40
  frameOptions?: 'DENY' | 'SAMEORIGIN' | false;
44
41
  /**
45
42
  * Origins allowed to frame this site, emitted as a CSP `frame-ancestors`
46
- * directive. Defaults to {@link DEFAULT_FRAME_ANCESTORS} ('self' + upforge.io)
47
- * so Upforge can showcase the site. Pass an array to extend/replace, or
43
+ * directive. Defaults to {@link DEFAULT_FRAME_ANCESTORS} ('self', Sonor's
44
+ * dashboard and the Upforge showcase origins). Pass an array to replace it
45
+ * (spread the default to extend it), or
48
46
  * `false` to opt out entirely and fall back to X-Frame-Options.
49
47
  *
50
48
  * Ignored if a `Content-Security-Policy` is supplied via `customHeaders` —
@@ -1,12 +1,12 @@
1
1
  /**
2
2
  * Managed Redirects - Next.js Middleware Helper
3
3
  *
4
- * Fetches redirect rules from Portal and applies them.
5
- * Supports API key only (domain resolved from Portal) or domain-based lookup.
4
+ * Fetches redirect rules from Sonor and applies them.
5
+ * Supports API key only (domain resolved from Sonor) or domain-based lookup.
6
6
  *
7
7
  * On a multi-site project (one Sonor project, many domains) rules are per
8
8
  * host: a rule with no site applies everywhere, and one tagged
9
- * 'bd-charlotte.com' applies only there. The list read and the hit both name
9
+ * 'charlotte.example.com' applies only there. The list read and the hit both name
10
10
  * the host through `sites/site-param` (explicit `site` > NEXT_PUBLIC_SITE_URL
11
11
  * host), and the in-memory cache key carries it too. Keyed by API key alone,
12
12
  * two hosts served by one process would share whichever list was fetched
@@ -41,7 +41,7 @@ export interface RedirectConfig {
41
41
  /** Project API key; when set, redirects are fetched by key (no domain needed) */
42
42
  apiKey?: string;
43
43
  /**
44
- * Sub-site host on a multi-site project (e.g. 'bd-charlotte.com'). Same
44
+ * Sub-site host on a multi-site project (e.g. 'charlotte.example.com'). Same
45
45
  * meaning as the `site` argument of withSiteParam: when unset it comes from
46
46
  * the NEXT_PUBLIC_SITE_URL host. The API returns this host's rules plus the
47
47
  * project-wide ones. When nothing resolves no site is sent, and the API
@@ -54,14 +54,14 @@ export interface RedirectConfig {
54
54
  * Hard ceiling on the rules fetch, in ms. Default 300.
55
55
  *
56
56
  * This fetch can sit in front of HTML (proxy hot path / not-found render),
57
- * and without a bound a *slow* Portal becomes every page's TTFB — the
57
+ * and without a bound a *slow* Sonor becomes every page's TTFB — the
58
58
  * try/catch only fails open on error, not on slow. Build-time callers
59
59
  * (generateNextRedirects) pass a larger value.
60
60
  */
61
61
  fetchTimeoutMs?: number;
62
62
  }
63
63
  /**
64
- * Fetch redirect rules from Portal API.
64
+ * Fetch redirect rules from Sonor API.
65
65
  * When apiKey is set (or from env), uses key-based endpoint (no domain required).
66
66
  * Otherwise uses domain query (or domain from getSiteConfig when only env API key is set).
67
67
  * Either way the site host goes along as `?site=`, left off when it resolves empty.
@@ -86,7 +86,7 @@ export declare function handleManagedRedirects(request: NextRequest, config: Red
86
86
  */
87
87
  export declare function trackRedirectHit(config: RedirectConfig, fromPath: string, domainForHit?: string): Promise<void>;
88
88
  /**
89
- * Generate Next.js redirects config from Portal
89
+ * Generate Next.js redirects config from Sonor
90
90
  * Use this in next.config.js for build-time redirects
91
91
  *
92
92
  * The site host resolves as it does everywhere else. Next loads .env files
@@ -2,7 +2,7 @@
2
2
  * @sonordev/site-kit/reputation - Testimonial Section
3
3
  *
4
4
  * Displays client reviews in a rotating carousel
5
- * Fetches published reviews from Portal API public endpoint
5
+ * Fetches published reviews from Sonor API public endpoint
6
6
  *
7
7
  * Minimal styling - let site CSS control appearance
8
8
  */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * @sonordev/site-kit/reputation - API Functions
3
3
  *
4
- * Fetch reviews and stats from Portal API public endpoint.
4
+ * Fetch reviews and stats from Sonor API public endpoint.
5
5
  * Uses API key authentication (x-api-key header) - project is resolved server-side.
6
6
  * Includes retry with backoff for rate limiting (429).
7
7
  */
@@ -1,7 +1,7 @@
1
- import { createSeoRevalidationHandler } from '../chunk-7MHHWZKC.js';
1
+ import { createSeoRevalidationHandler } from '../chunk-VGH4MDTU.js';
2
2
  import '../chunk-XTRZGXB2.js';
3
3
  export { SITE_CACHE_TAGS, SITE_REVALIDATE_PATH, isSiteRevalidatePong } from '../chunk-RYVDGXC2.js';
4
- import '../chunk-4JQQDCMO.js';
4
+ import '../chunk-AH5Q262S.js';
5
5
  import '../chunk-PKBMQBKP.js';
6
6
 
7
7
  // src/revalidate/index.ts
@@ -2,7 +2,7 @@
2
2
  * @sonordev/site-kit/robots - robots.txt Generator
3
3
  *
4
4
  * Generates robots.txt with Sitemap directive.
5
- * baseUrl can be omitted when apiKey is set (resolved from Portal project-info).
5
+ * baseUrl can be omitted when apiKey is set (resolved from Sonor project-info).
6
6
  *
7
7
  * @example
8
8
  * // app/robots.txt/route.ts (API key only)
@@ -20,14 +20,14 @@ export { isNextInternalsPath } from './next-internals';
20
20
  export { AI_RETRIEVAL_CRAWLERS, AI_TRAINING_CRAWLERS, buildAiCrawlerRules, createRobotsTxtHandler, } from '../llms/aiRobots';
21
21
  export type { AiCrawlerRulesOptions, ContentSignalsOptions, RobotsTxtHandlerOptions } from '../llms/aiRobots';
22
22
  export interface RobotsConfig {
23
- /** Base URL of the site (optional when apiKey is set; then resolved from Portal) */
23
+ /** Base URL of the site (optional when apiKey is set; then resolved from Sonor) */
24
24
  baseUrl?: string;
25
- /** Project API key; when set and baseUrl is not, baseUrl is resolved from Portal */
25
+ /** Project API key; when set and baseUrl is not, baseUrl is resolved from Sonor */
26
26
  apiKey?: string;
27
27
  apiUrl?: string;
28
28
  /** Path to sitemap (default: /sitemap.xml) */
29
29
  sitemapPath?: string;
30
- /** Pre-built robots content from Portal (overrides default when provided) */
30
+ /** Pre-built robots content from Sonor (overrides default when provided) */
31
31
  managedRobots?: string | null;
32
32
  /**
33
33
  * Paths to disallow (e.g. ['/admin', '/api']). `/_next` paths are dropped:
@@ -37,6 +37,6 @@ export interface RobotsConfig {
37
37
  }
38
38
  /**
39
39
  * Create a robots.txt handler that returns a Response or Promise<Response>.
40
- * Use as GET handler for app/robots.txt/route.ts. When baseUrl is omitted, pass apiKey to resolve from Portal.
40
+ * Use as GET handler for app/robots.txt/route.ts. When baseUrl is omitted, pass apiKey to resolve from Sonor.
41
41
  */
42
42
  export declare function createRobots(config: RobotsConfig): () => Response | Promise<Response>;
@@ -1,7 +1,6 @@
1
1
  /**
2
- * Where the key is served. Sonor's IndexNowService (sonor-api
3
- * src/modules/seo/indexnow.service.ts, INDEXNOW_KEY_PATH) submits this path
4
- * as the keyLocation. Keep the two equal.
2
+ * Where the key is served. Sonor submits this path as the keyLocation, so
3
+ * keep the two equal.
5
4
  */
6
5
  export declare const INDEXNOW_KEY_PATH = "/indexnow.txt";
7
6
  /** The project's IndexNow key, or null when Sonor can't be reached. */
@@ -1,8 +1,8 @@
1
1
  import type { ManagedScriptsProps } from './types';
2
2
  /**
3
3
  * @deprecated The managed-scripts feature is retired (2026-06): scripts belong
4
- * in the site's own code via next/script, not in a Portal-managed table. The
5
- * Portal admin endpoints are removed and the table is empty; this component
4
+ * in the site's own code via next/script, not in a Sonor-managed table. The
5
+ * Sonor admin endpoints are removed and the table is empty; this component
6
6
  * now always renders null and is kept only so existing imports keep compiling.
7
7
  *
8
8
  * Perf note (2026-07): the previous "stub" still fetched
@@ -1,9 +1,9 @@
1
1
  'use client';
2
- export { SitemapSync } from '../chunk-LFXVE32I.js';
2
+ export { SitemapSync } from '../chunk-UXOGCKL6.js';
3
3
  import '../chunk-YVKRYQRG.js';
4
4
  import '../chunk-43OCZ3JA.js';
5
5
  import '../chunk-EKBEOXTH.js';
6
- import '../chunk-U35H2JIQ.js';
7
- import '../chunk-EVFZ7KEW.js';
8
- import '../chunk-4JQQDCMO.js';
6
+ import '../chunk-3SDOQUUF.js';
7
+ import '../chunk-VDF5DFWT.js';
8
+ import '../chunk-AH5Q262S.js';
9
9
  import '../chunk-PKBMQBKP.js';
@@ -2,7 +2,7 @@ import type { GetManagedMetadataOptions, ManagedMetadataResult, GetABVariantOpti
2
2
  /**
3
3
  * Get managed metadata for a page
4
4
  *
5
- * Use in generateMetadata() to fetch Portal-managed SEO data
5
+ * Use in generateMetadata() to fetch Sonor-managed SEO data
6
6
  *
7
7
  * @example
8
8
  * ```tsx
@@ -1,6 +1,6 @@
1
1
  /**
2
- * Optional JSON-LD stub when Portal does **not** emit Organization/WebSite.
3
- * Default product stance: Portal owns entity nodes; only use this when confirmed absent.
2
+ * Optional JSON-LD stub when Sonor does **not** emit Organization/WebSite.
3
+ * Default product stance: Sonor owns entity nodes; only use this when confirmed absent.
4
4
  */
5
5
  export interface WebSiteOrganizationStubInput {
6
6
  name: string;
package/dist/seo/index.js CHANGED
@@ -1,7 +1,7 @@
1
1
  export { ManagedNoScripts, ManagedScripts } from '../chunk-MVLMXC44.js';
2
2
  import { pickManagedLlmSchemaForJsonLd } from '../chunk-4Y5FWDPM.js';
3
3
  import { safeJsonLd } from '../chunk-4KZ6W3ZH.js';
4
- export { SitemapSync } from '../chunk-LFXVE32I.js';
4
+ export { SitemapSync } from '../chunk-UXOGCKL6.js';
5
5
  import { getManagedMetadata } from '../chunk-4YTYGG2C.js';
6
6
  export { generateSitemap, getABVariant, getManagedMetadata, getManagedMetadataWithAB, getRedirect, getRobotsDirective, isIndexable } from '../chunk-4YTYGG2C.js';
7
7
  import { getContentBlock, getSchemaMarkups, getSEOPageData, getEntityEnhancedSchema, getFAQData, getInternalLinks, getEntities, pruneSchemaTypes } from '../chunk-662ILEZ6.js';
@@ -17,9 +17,9 @@ import '../chunk-FESKKJAS.js';
17
17
  import '../chunk-A4CC4ZG3.js';
18
18
  import '../chunk-43OCZ3JA.js';
19
19
  import '../chunk-EKBEOXTH.js';
20
- import '../chunk-U35H2JIQ.js';
21
- import '../chunk-EVFZ7KEW.js';
22
- import '../chunk-4JQQDCMO.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 { Suspense } from 'react';
25
25
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';