@sonordev/site-kit 7.2.0 → 7.4.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 (108) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/agent-manifest.json +6 -4
  3. package/dist/{AnalyticsProvider-SLFFBRPE.js → AnalyticsProvider-BQXV3ZF3.js} +4 -4
  4. package/dist/{ArticleViewTracker-TM5AMGN2.js → ArticleViewTracker-3DH53RSB.js} +3 -3
  5. package/dist/{BlocksPopup-YJNJIVPO.js → BlocksPopup-FGWYVHCH.js} +4 -4
  6. package/dist/{ChatWidget-XKOSH66S.js → ChatWidget-CDQZCLVH.js} +5 -5
  7. package/dist/{FileField-CI4UL5SH.js → FileField-IPJ7L2W6.js} +3 -3
  8. package/dist/{FormSpotlight-F2AAEGBN.js → FormSpotlight-CQI2DBWI.js} +1 -1
  9. package/dist/{FormStage-BI5R5CNC.js → FormStage-4WHD6ED4.js} +1 -1
  10. package/dist/{ManagedForm-G6COGHXL.js → ManagedForm-7FZNH4L2.js} +6 -6
  11. package/dist/{ManagedNewsletterForm-BO3WCGXX.js → ManagedNewsletterForm-3D2BK3KQ.js} +4 -4
  12. package/dist/{SignalCore-ZA6WHKBR.js → SignalCore-HEQYITTM.js} +3 -3
  13. package/dist/{SiteChat-YJADDTKG.js → SiteChat-DMPDXY3W.js} +1 -1
  14. package/dist/{SiteDesignReporter-5YAW36AQ.js → SiteDesignReporter-Y2IOJE52.js} +5 -5
  15. package/dist/{SitePopups-ST5PMKZE.js → SitePopups-HD2LDKVU.js} +4 -4
  16. package/dist/SitemapSync-OKPZHRX6.js +8 -0
  17. package/dist/_client/booking-widget.js +5 -5
  18. package/dist/_client/testimonial-section.d.ts +1 -1
  19. package/dist/_client/testimonial-section.js +2 -1
  20. package/dist/affiliates/index.js +3 -3
  21. package/dist/analytics/index.js +4 -4
  22. package/dist/articles/index.js +1 -1
  23. package/dist/articles/server-ui.js +1 -1
  24. package/dist/chat/index.js +6 -6
  25. package/dist/{chunk-D6ZC7XKZ.js → chunk-3E3PPSNR.js} +2 -2
  26. package/dist/{chunk-6U3VLV2C.js → chunk-4BHRA7TI.js} +1 -1
  27. package/dist/{chunk-R46IQIGK.js → chunk-4DJMJ4V5.js} +2 -2
  28. package/dist/{chunk-BC4Y3S3D.js → chunk-5O62CER4.js} +7 -3
  29. package/dist/{chunk-EJVQJCG5.js → chunk-6LLTLLEJ.js} +2 -2
  30. package/dist/{chunk-BR4ZKUHH.js → chunk-7HPZSWS4.js} +17 -1
  31. package/dist/{chunk-S54ECQGY.js → chunk-AH4AXO4P.js} +1 -1
  32. package/dist/{chunk-D5DCBD4Y.js → chunk-ATE6IFVK.js} +1 -1
  33. package/dist/{chunk-GGORNBSC.js → chunk-AV4QAK5F.js} +1 -1
  34. package/dist/chunk-CAT235HY.js +13 -0
  35. package/dist/{chunk-JJ3DELUL.js → chunk-CG4ETW5Y.js} +2 -2
  36. package/dist/{chunk-JWTQS5F5.js → chunk-CKW4HFJG.js} +1 -1
  37. package/dist/{chunk-FR6BYFPC.js → chunk-CSN45MHO.js} +1 -1
  38. package/dist/{chunk-GEXT7BTE.js → chunk-D2RGEWHS.js} +1 -1
  39. package/dist/{chunk-JMLK6MH7.js → chunk-DA5XC7Y6.js} +1 -1
  40. package/dist/{chunk-CF5QNFYU.js → chunk-EHR4NIMX.js} +2 -2
  41. package/dist/{chunk-5V2V5C3Y.js → chunk-FUQTV5O6.js} +1 -1
  42. package/dist/{chunk-K4ZHAURD.js → chunk-GK7TV7EK.js} +1 -1
  43. package/dist/{chunk-RPZ7OQGD.js → chunk-IE5SSOCN.js} +3 -10
  44. package/dist/{chunk-HGFAEDG3.js → chunk-JRCNUUNG.js} +1 -1
  45. package/dist/{chunk-F24FNCTK.js → chunk-KHQ5GD6T.js} +1 -1
  46. package/dist/{chunk-IAM3D3RL.js → chunk-MDP7EB4J.js} +3 -3
  47. package/dist/{chunk-BKY2ZNM7.js → chunk-MHGAZ3LL.js} +1 -1
  48. package/dist/chunk-OD2ULW5Z.js +57 -0
  49. package/dist/{chunk-64DKGVEI.js → chunk-OOD6GMT4.js} +2 -2
  50. package/dist/{chunk-OWZ7ATLZ.js → chunk-PF64OEXC.js} +1 -1
  51. package/dist/{chunk-5YCEMV2L.js → chunk-PQDJNIHR.js} +1 -1
  52. package/dist/{chunk-VX5CMNMM.js → chunk-UAYAJPEP.js} +7 -1
  53. package/dist/{chunk-VHKEF5ZB.js → chunk-XA2BNW5M.js} +1 -1
  54. package/dist/{chunk-VO3JYRT5.js → chunk-XEMHGJEG.js} +8 -8
  55. package/dist/{chunk-NV72HZ4W.js → chunk-YCFW2OQO.js} +1 -1
  56. package/dist/{chunk-QL6XNPSD.js → chunk-ZTLU3BSW.js} +26 -9
  57. package/dist/client/index.js +3 -3
  58. package/dist/commerce/index.js +4 -4
  59. package/dist/engage/index.js +7 -7
  60. package/dist/fleet/index.js +4 -4
  61. package/dist/forms/index.js +7 -7
  62. package/dist/forms/server.js +2 -2
  63. package/dist/images/index.js +4 -4
  64. package/dist/index.js +1 -1
  65. package/dist/layout/client.js +7 -7
  66. package/dist/layout/index.js +9 -9
  67. package/dist/llms/agent-access.d.ts +4 -0
  68. package/dist/llms/index.js +6 -6
  69. package/dist/maps/index.js +3 -3
  70. package/dist/mcp/WebMcpTools.d.ts +5 -4
  71. package/dist/mcp/client.js +14 -7
  72. package/dist/mcp/discovery.d.ts +48 -0
  73. package/dist/mcp/handlers.d.ts +13 -7
  74. package/dist/mcp/index.d.ts +5 -3
  75. package/dist/mcp/index.js +61 -17
  76. package/dist/mcp/serverCard.d.ts +6 -7
  77. package/dist/mcp/sonor.js +8 -8
  78. package/dist/reputation/TestimonialSection.d.ts +1 -1
  79. package/dist/reputation/VisualReviewCard.d.ts +6 -0
  80. package/dist/reputation/index.d.ts +2 -1
  81. package/dist/reputation/index.js +3 -1
  82. package/dist/reputation/review-photo.d.ts +2 -0
  83. package/dist/reputation/server.d.ts +3 -2
  84. package/dist/reputation/server.js +2 -0
  85. package/dist/reputation/types.d.ts +22 -0
  86. package/dist/revalidate/index.js +2 -2
  87. package/dist/seo/client.js +4 -4
  88. package/dist/seo/index.js +4 -4
  89. package/dist/seo/llms.js +6 -6
  90. package/dist/seo/register-sitemap-cli.js +1 -1
  91. package/dist/seo/sitemap.js +4 -4
  92. package/dist/server/index.js +3 -3
  93. package/dist/server/mint-site-token.d.ts +1 -2
  94. package/dist/shared/fresh-fetch.d.ts +9 -3
  95. package/dist/shared/version.d.ts +1 -1
  96. package/dist/signal/index.js +2 -2
  97. package/dist/sitemap/index.js +4 -4
  98. package/dist/sync/index.js +5 -5
  99. package/dist/website/images.js +4 -4
  100. package/dist/website/index.js +5 -5
  101. package/dist/website/popups.js +4 -4
  102. package/dist/{writeLLMsTxt-OV24LQVL.js → writeLLMsTxt-OL4KQERZ.js} +3 -3
  103. package/package.json +1 -1
  104. package/src/forms/README.md +2 -2
  105. package/src/llms/README.md +69 -0
  106. package/src/mcp/README.md +50 -16
  107. package/src/reputation/README.md +25 -0
  108. package/dist/SitemapSync-RJTEBINX.js +0 -8
@@ -2,8 +2,8 @@
2
2
  import { sanitizeFleetVersion, buildFleetHeartbeatPayload } from './chunk-ZTZQPYP6.js';
3
3
  import { useDeferredActivation } from './chunk-YC7ELZS3.js';
4
4
  import { resolveAnalyticsTarget } from './chunk-43OCZ3JA.js';
5
- import { sonorFetch } from './chunk-D6ZC7XKZ.js';
6
- import { SITE_KIT_VERSION } from './chunk-F24FNCTK.js';
5
+ import { sonorFetch } from './chunk-3E3PPSNR.js';
6
+ import { SITE_KIT_VERSION } from './chunk-KHQ5GD6T.js';
7
7
  import { useRef, useEffect } from 'react';
8
8
 
9
9
  // src/fleet/heartbeat.ts
@@ -1,4 +1,4 @@
1
- import { FormEnhancer } from './chunk-OWZ7ATLZ.js';
1
+ import { FormEnhancer } from './chunk-PF64OEXC.js';
2
2
  import { StaticForm } from './chunk-ZTLMPUO6.js';
3
3
  import { serverApiFetch } from './chunk-X6F6SO4S.js';
4
4
  import { jsx } from 'react/jsx-runtime';
@@ -1,4 +1,4 @@
1
- import { SITE_KIT_VERSION } from './chunk-F24FNCTK.js';
1
+ import { SITE_KIT_VERSION } from './chunk-KHQ5GD6T.js';
2
2
 
3
3
  // src/shared/siteToken.ts
4
4
  var SITE_TOKEN_PREFIX = "st1.";
@@ -1,6 +1,6 @@
1
- import { resolveFetch } from './chunk-VX5CMNMM.js';
1
+ import { trackedFreshFetch } from './chunk-UAYAJPEP.js';
2
2
  import { monotonicMs } from './chunk-MH2DSGC6.js';
3
- import { SITE_KIT_VERSION } from './chunk-F24FNCTK.js';
3
+ import { SITE_KIT_VERSION } from './chunk-KHQ5GD6T.js';
4
4
  import 'server-only';
5
5
 
6
6
  var MINT_PATH = "/api/public/site-token";
@@ -67,20 +67,13 @@ async function mintWithRetry(rawKey, apiUrl) {
67
67
  for (let attempt = 0; attempt < MINT_MAX_ATTEMPTS; attempt++) {
68
68
  let res = null;
69
69
  try {
70
- const { fn: fetchFn, unpatched } = resolveFetch();
71
- res = await fetchFn(`${base}${MINT_PATH}`, {
70
+ res = await trackedFreshFetch(`${base}${MINT_PATH}`, {
72
71
  method: "POST",
73
72
  headers: {
74
73
  "content-type": "application/json",
75
74
  "x-api-key": rawKey,
76
75
  "x-sitekit-version": SITE_KIT_VERSION
77
76
  },
78
- // Only meaningful on the fallback path, where a future Next stopped
79
- // exposing `_nextOriginalFetch` and we're back on the patched fetch.
80
- // `revalidate: false` is the one setting that neither bails out of static
81
- // generation nor downgrades the route to ISR; a Data Cache entry is the
82
- // lesser evil versus shipping the raw key again.
83
- ...unpatched ? {} : { next: { revalidate: false } },
84
77
  signal: typeof AbortSignal !== "undefined" && AbortSignal.timeout ? AbortSignal.timeout(MINT_TIMEOUT_MS) : void 0
85
78
  });
86
79
  } catch (err) {
@@ -1,5 +1,5 @@
1
1
  import { resolveSiteHost } from './chunk-FESKKJAS.js';
2
- import { configureSiteCredential, currentCredential } from './chunk-K4ZHAURD.js';
2
+ import { configureSiteCredential, currentCredential } from './chunk-GK7TV7EK.js';
3
3
 
4
4
  // src/shared/publishCredential.ts
5
5
  function publishSiteCredential({
@@ -1,4 +1,4 @@
1
1
  // src/shared/version.ts
2
- var SITE_KIT_VERSION = "7.2.0";
2
+ var SITE_KIT_VERSION = "7.4.0";
3
3
 
4
4
  export { SITE_KIT_VERSION };
@@ -1,8 +1,8 @@
1
1
  'use client';
2
- import { countStageViews, countStageQuestions, useFieldControls } from './chunk-D5DCBD4Y.js';
2
+ import { countStageViews, countStageQuestions, useFieldControls } from './chunk-ATE6IFVK.js';
3
3
  import { HoneypotField } from './chunk-DXO6SBMD.js';
4
4
  import { DelightStyles, FormMomentum, FormField } from './chunk-4NTBQNHA.js';
5
- import { useFormLoadedAt, useFormTracking, submitForm, useRecaptchaWarmup, useForm } from './chunk-FR6BYFPC.js';
5
+ import { useFormLoadedAt, useFormTracking, submitForm, useRecaptchaWarmup, useForm } from './chunk-CSN45MHO.js';
6
6
  import { readAgentSubmit, formToolAttributes } from './chunk-Q6E4OPGG.js';
7
7
  import { isFieldVisible, validateField, isFieldComplete, isDisplayOnly, unseenControlValues } from './chunk-C2FZBUSS.js';
8
8
  import { DEFAULT_FORM_SUCCESS_MESSAGE } from './chunk-5SQK3D53.js';
@@ -63,7 +63,7 @@ function FormClient({
63
63
  return;
64
64
  }
65
65
  let cancelled = false;
66
- const load = resolvedExperience === "stage" ? import('./FormStage-BI5R5CNC.js').then((m) => m.FormStage) : import('./FormSpotlight-F2AAEGBN.js').then((m) => m.FormSpotlight);
66
+ const load = resolvedExperience === "stage" ? import('./FormStage-4WHD6ED4.js').then((m) => m.FormStage) : import('./FormSpotlight-CQI2DBWI.js').then((m) => m.FormSpotlight);
67
67
  load.then((Component) => {
68
68
  if (!cancelled) setExperience(() => Component);
69
69
  }).catch((err) => {
@@ -1,4 +1,4 @@
1
- import { sonorFetch } from './chunk-D6ZC7XKZ.js';
1
+ import { sonorFetch } from './chunk-3E3PPSNR.js';
2
2
 
3
3
  // src/sync/api.ts
4
4
  var DEFAULT_API_URL = "https://api.sonor.io";
@@ -0,0 +1,57 @@
1
+ import { reviewPhotoUrl } from './chunk-CAT235HY.js';
2
+ import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
3
+
4
+ var styles = `
5
+ .sk-visual-review-gallery{font-family:var(--sk-font,inherit);color:var(--sk-text-primary);padding-block:2rem}
6
+ .sk-visual-review-gallery-header{margin-block-end:1.5rem}.sk-visual-review-gallery-header h2{margin:0 0 .5rem}.sk-visual-review-gallery-header p{margin:0;color:var(--sk-text-secondary)}
7
+ .sk-visual-review-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,19rem),1fr));gap:1.5rem;align-items:start}
8
+ .sk-visual-review{min-width:0;overflow:hidden;border:1px solid var(--sk-surface-border);border-radius:var(--sk-radius-lg,.75rem);background:var(--sk-bg);color:var(--sk-text-primary);font-family:var(--sk-font,inherit)}
9
+ .sk-visual-review-photo{margin:0;background:var(--sk-surface)}.sk-visual-review-photo img{display:block;aspect-ratio:4/3;width:100%;object-fit:cover}
10
+ .sk-visual-review-photo figcaption{padding:.75rem 1rem;color:var(--sk-text-secondary);font-size:.875rem;line-height:1.5;overflow-wrap:anywhere}
11
+ .sk-visual-review-body{position:relative;padding:1.5rem;border-block-start:3px solid var(--sk-primary)}
12
+ .sk-visual-review-stars{display:flex;gap:.2rem;margin-block-end:1rem;color:var(--sk-primary)}.sk-visual-review-star-empty{opacity:.25}
13
+ .sk-visual-review blockquote{margin:0;font-size:1.125rem;line-height:1.7;white-space:pre-line;overflow-wrap:anywhere}
14
+ .sk-visual-review-author{display:flex;align-items:center;gap:.75rem;margin-block-start:1.25rem}.sk-visual-review-avatar{width:2.75rem;height:2.75rem;border-radius:50%;object-fit:cover;flex:none}
15
+ .sk-visual-review-name{font-weight:600;overflow-wrap:anywhere}.sk-visual-review-role{margin-block-start:.2rem;font-size:.875rem;color:var(--sk-text-secondary);overflow-wrap:anywhere}
16
+ `;
17
+ function CardContent({ review, showRating = true, className = "" }) {
18
+ const photoUrl = reviewPhotoUrl(review.photo?.url);
19
+ const avatarUrl = reviewPhotoUrl(review.image);
20
+ const rating = Number.isFinite(review.rating) ? Math.max(0, Math.min(5, review.rating)) : 0;
21
+ return /* @__PURE__ */ jsxs("article", { className: `sk-visual-review ${className}`, "data-site-kit-visual-review": review.id, children: [
22
+ photoUrl && /* @__PURE__ */ jsxs("figure", { className: "sk-visual-review-photo", children: [
23
+ /* @__PURE__ */ jsx("img", { src: photoUrl, alt: review.photo?.altText || `Photo accompanying ${review.name}'s review`, loading: "lazy", decoding: "async" }),
24
+ review.photo?.caption && /* @__PURE__ */ jsx("figcaption", { children: review.photo.caption })
25
+ ] }),
26
+ /* @__PURE__ */ jsxs("div", { className: "sk-visual-review-body", children: [
27
+ showRating && /* @__PURE__ */ jsx("div", { className: "sk-visual-review-stars", role: "img", "aria-label": `${rating} out of 5 stars`, children: [1, 2, 3, 4, 5].map((star) => /* @__PURE__ */ jsx("span", { "aria-hidden": "true", className: star > rating ? "sk-visual-review-star-empty" : void 0, children: "\u2605" }, star)) }),
28
+ /* @__PURE__ */ jsx("blockquote", { children: review.quote }),
29
+ /* @__PURE__ */ jsxs("div", { className: "sk-visual-review-author", children: [
30
+ avatarUrl && /* @__PURE__ */ jsx("img", { className: "sk-visual-review-avatar", src: avatarUrl, alt: "", loading: "lazy", decoding: "async" }),
31
+ /* @__PURE__ */ jsxs("div", { children: [
32
+ /* @__PURE__ */ jsx("div", { className: "sk-visual-review-name", children: review.name }),
33
+ review.role && /* @__PURE__ */ jsx("div", { className: "sk-visual-review-role", children: review.role })
34
+ ] })
35
+ ] })
36
+ ] })
37
+ ] });
38
+ }
39
+ function VisualReviewCard(props) {
40
+ return /* @__PURE__ */ jsxs(Fragment, { children: [
41
+ /* @__PURE__ */ jsx("style", { children: styles }),
42
+ /* @__PURE__ */ jsx(CardContent, { ...props })
43
+ ] });
44
+ }
45
+ function VisualReviewGallery({ reviews, title, subtitle, showRating = true, className = "" }) {
46
+ if (!reviews.length) return null;
47
+ return /* @__PURE__ */ jsxs("section", { className: `sk-visual-review-gallery ${className}`, "data-site-kit-visual-reviews": true, children: [
48
+ /* @__PURE__ */ jsx("style", { children: styles }),
49
+ (title || subtitle) && /* @__PURE__ */ jsxs("header", { className: "sk-visual-review-gallery-header", children: [
50
+ title && /* @__PURE__ */ jsx("h2", { children: title }),
51
+ subtitle && /* @__PURE__ */ jsx("p", { children: subtitle })
52
+ ] }),
53
+ /* @__PURE__ */ jsx("div", { className: "sk-visual-review-grid", children: reviews.map((review) => /* @__PURE__ */ jsx(CardContent, { review, showRating }, review.id)) })
54
+ ] });
55
+ }
56
+
57
+ export { VisualReviewCard, VisualReviewGallery };
@@ -2,9 +2,9 @@
2
2
  import { VISUAL_VIEWPORT_GAP_PROPERTY } from './chunk-6T6CQVNL.js';
3
3
  import { GlassStyles } from './chunk-JE4A5S4F.js';
4
4
  import { DEFAULT_WIDGET_Z_INDEX } from './chunk-27FISYK4.js';
5
- import { useForm } from './chunk-FR6BYFPC.js';
5
+ import { useForm } from './chunk-CSN45MHO.js';
6
6
  import { parseColor, relativeLuminance, DARK_LUMINANCE, contrastRatio } from './chunk-S22FSH7C.js';
7
- import { sonorFetch } from './chunk-D6ZC7XKZ.js';
7
+ import { sonorFetch } from './chunk-3E3PPSNR.js';
8
8
  import { useState, useEffect, useRef, useLayoutEffect, useCallback, Fragment as Fragment$1 } from 'react';
9
9
  import { lexer } from 'marked';
10
10
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
@@ -6,7 +6,7 @@ import { DEFAULT_HONEYPOT_FIELD } from './chunk-NJCTQH2P.js';
6
6
  import React, { useRef, useEffect, useState, useMemo, useCallback } from 'react';
7
7
  import { jsx, jsxs } from 'react/jsx-runtime';
8
8
 
9
- var loadInteractiveForm = () => import('./ManagedForm-G6COGHXL.js').then((m) => m.ManagedForm);
9
+ var loadInteractiveForm = () => import('./ManagedForm-7FZNH4L2.js').then((m) => m.ManagedForm);
10
10
  var REPLAY_WAIT_MS = 8e3;
11
11
  function FormEnhancer({
12
12
  formId,
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { getSiteDesignTokens, tokensForReport, shouldReportDesign, sendSiteDesign } from './chunk-JJ3DELUL.js';
2
+ import { getSiteDesignTokens, tokensForReport, shouldReportDesign, sendSiteDesign } from './chunk-CG4ETW5Y.js';
3
3
  import { designTokensHash } from './chunk-IHG36STL.js';
4
4
  import { useDeferredActivation } from './chunk-YC7ELZS3.js';
5
5
  import { resolveAnalyticsTarget } from './chunk-43OCZ3JA.js';
@@ -8,6 +8,12 @@ function resolveFetch() {
8
8
  }
9
9
  var BUILD_NONCE = `${Date.now().toString(36)}-${Math.random().toString(36).slice(2, 10)}`;
10
10
  var FRESH_FETCH_NONCE_HEADER = "x-sitekit-build-nonce";
11
+ var trackedRequestSequence = 0;
12
+ function trackedFreshFetch(input, init = {}) {
13
+ const headers = new Headers(init.headers);
14
+ headers.set(FRESH_FETCH_NONCE_HEADER, `${BUILD_NONCE}-${++trackedRequestSequence}`);
15
+ return fetch(input, { ...init, headers, cache: "force-cache" });
16
+ }
11
17
  function freshFetch(input, init = {}) {
12
18
  const current = globalThis.fetch;
13
19
  const { fn, unpatched } = resolveFetch();
@@ -23,4 +29,4 @@ function buildFetch(input, init = {}) {
23
29
  return isNextProductionBuild() ? freshFetch(input, init) : fetch(input, init);
24
30
  }
25
31
 
26
- export { buildFetch, freshFetch, resolveFetch };
32
+ export { buildFetch, freshFetch, resolveFetch, trackedFreshFetch };
@@ -1,5 +1,5 @@
1
1
  import { secretsMatch, readCappedBody } from './chunk-XTRZGXB2.js';
2
- import { SITE_KIT_VERSION } from './chunk-F24FNCTK.js';
2
+ import { SITE_KIT_VERSION } from './chunk-KHQ5GD6T.js';
3
3
 
4
4
  // src/llms/revalidate.ts
5
5
  function createLlmsRevalidateHandler(secret, options) {
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
  import { SITE_EDIT_PARAM } from './chunk-6G43IRWR.js';
3
- import { publishSiteCredential } from './chunk-HGFAEDG3.js';
4
- import { FleetHeartbeat } from './chunk-CF5QNFYU.js';
5
- import { SignalBridge } from './chunk-S54ECQGY.js';
3
+ import { publishSiteCredential } from './chunk-JRCNUUNG.js';
4
+ import { FleetHeartbeat } from './chunk-EHR4NIMX.js';
5
+ import { SignalBridge } from './chunk-AH4AXO4P.js';
6
6
  import { useDeferredActivation } from './chunk-YC7ELZS3.js';
7
7
  import { resolveSiteHost } from './chunk-FESKKJAS.js';
8
8
  import { getOrCreateVisitorId, getOrCreateSessionId } from './chunk-24QZEO3Q.js';
@@ -33,23 +33,23 @@ function startEditBridge() {
33
33
  };
34
34
  }
35
35
  var LazyAnalyticsProvider = dynamic(
36
- () => import('./AnalyticsProvider-SLFFBRPE.js').then((m) => ({ default: m.AnalyticsProvider })),
36
+ () => import('./AnalyticsProvider-BQXV3ZF3.js').then((m) => ({ default: m.AnalyticsProvider })),
37
37
  { ssr: false }
38
38
  );
39
39
  var LazySiteChat = dynamic(
40
- () => import('./SiteChat-YJADDTKG.js').then((m) => ({ default: m.SiteChat })),
40
+ () => import('./SiteChat-DMPDXY3W.js').then((m) => ({ default: m.SiteChat })),
41
41
  { ssr: false }
42
42
  );
43
43
  var LazySitePopups = dynamic(
44
- () => import('./SitePopups-ST5PMKZE.js').then((m) => ({ default: m.SitePopups })),
44
+ () => import('./SitePopups-HD2LDKVU.js').then((m) => ({ default: m.SitePopups })),
45
45
  { ssr: false }
46
46
  );
47
47
  var LazySiteDesignReporter = dynamic(
48
- () => import('./SiteDesignReporter-5YAW36AQ.js').then((m) => ({ default: m.SiteDesignReporter })),
48
+ () => import('./SiteDesignReporter-Y2IOJE52.js').then((m) => ({ default: m.SiteDesignReporter })),
49
49
  { ssr: false }
50
50
  );
51
51
  var LazySitemapSync = dynamic(
52
- () => import('./SitemapSync-RJTEBINX.js').then((m) => ({ default: m.SitemapSync })),
52
+ () => import('./SitemapSync-OKPZHRX6.js').then((m) => ({ default: m.SitemapSync })),
53
53
  { ssr: false }
54
54
  );
55
55
  function SiteKitClientProviders({
@@ -7,7 +7,7 @@ import dynamic from 'next/dynamic';
7
7
  import { jsx } from 'react/jsx-runtime';
8
8
 
9
9
  var LazyChatWidget = dynamic(
10
- () => import('./ChatWidget-XKOSH66S.js').then((m) => ({ default: m.ChatWidget })),
10
+ () => import('./ChatWidget-CDQZCLVH.js').then((m) => ({ default: m.ChatWidget })),
11
11
  { ssr: false }
12
12
  );
13
13
  function SiteChat(props) {
@@ -1,7 +1,7 @@
1
- import { getLLMsData, getOptimizedLLMsTxt } from './chunk-6U3VLV2C.js';
1
+ import { getLLMsData, getOptimizedLLMsTxt } from './chunk-4BHRA7TI.js';
2
2
  import { linkClassificationHost } from './chunk-L5UOHS6E.js';
3
3
  import { resolveArticleUrl } from './chunk-WMVK77ND.js';
4
- import { freshFetch } from './chunk-VX5CMNMM.js';
4
+ import { freshFetch } from './chunk-UAYAJPEP.js';
5
5
  import { LLM_GEO_CONTRACT_VERSION, sanitizePrimaryLanguageTag, sanitizeLlmsDisclaimerLine, sanitizeLlmsPublicSummary } from './chunk-NZ4RXN3G.js';
6
6
  import { resolveTrailingSlash, applyTrailingSlash } from './chunk-YVKRYQRG.js';
7
7
  import { resolveSiteHost } from './chunk-FESKKJAS.js';
@@ -19,24 +19,39 @@ function formatAgentAccessSection(baseUrl, options = {}) {
19
19
  return [
20
20
  AGENT_ACCESS_HEADING,
21
21
  "",
22
- "This site answers AI assistants directly through the Model Context Protocol, so an assistant can look things up (and, where offered, send an inquiry for someone) instead of reading pages.",
22
+ "AI assistants can use this site\u2019s Model Context Protocol tools to look up information and, with the user\u2019s approval, take supported actions.",
23
23
  "",
24
24
  `- [MCP endpoint](${endpoint}): Streamable HTTP. Call tools/list for the current tools.`,
25
25
  `- [Server card](${card}): what the server is and how to connect.`,
26
+ ...options.catalog ? [`- [AI catalog](${absolute(baseUrl, options.catalog)}): experimental domain discovery.`] : [],
26
27
  ...tools.length ? ["", `Tools include ${tools.map((t) => `\`${t}\``).join(", ")}.`] : []
27
28
  ].join("\n");
28
29
  }
29
30
  function appendAgentAccessSection(markdown, baseUrl, options = {}) {
30
31
  if (!baseUrl || describesMcp(markdown)) return markdown;
32
+ const section = formatAgentAccessSection(baseUrl, options);
33
+ if (options.position === "after-intro") {
34
+ const firstSection = /^## /m.exec(markdown);
35
+ if (firstSection) {
36
+ const intro = markdown.slice(0, firstSection.index).trimEnd().replace(/\n---$/, "").trimEnd();
37
+ return `${intro}
38
+
39
+ ${section}
40
+
41
+ ---
42
+
43
+ ${markdown.slice(firstSection.index)}`;
44
+ }
45
+ }
31
46
  return `${markdown.trimEnd()}
32
47
 
33
48
  ---
34
49
 
35
- ${formatAgentAccessSection(baseUrl, options)}
50
+ ${section}
36
51
  `;
37
52
  }
38
53
  function describesMcp(markdown) {
39
- return markdown.includes(AGENT_ACCESS_HEADING) || markdown.includes("/.well-known/mcp-server-card") || markdown.includes("/.well-known/mcp.json");
54
+ return markdown.includes(AGENT_ACCESS_HEADING) || markdown.includes("/.well-known/mcp-server-card") || markdown.includes("/.well-known/mcp.json") || markdown.includes("/api/mcp/server-card");
40
55
  }
41
56
  var MCP_ROUTE_FILES = ["route.ts", "route.tsx", "route.js", "route.jsx", "route.mjs"];
42
57
  var SERVER_CARD_DIRS = ["mcp-server-card", "mcp.json"];
@@ -362,16 +377,18 @@ async function generateLLMsTxt(options) {
362
377
  }
363
378
  }
364
379
  }
365
- if (options.mcp && baseUrl) {
366
- sections.push(formatAgentAccessSection(baseUrl, options.mcp === true ? {} : options.mcp));
367
- sectionNames.push("agent-access");
368
- }
369
380
  for (const custom of customSections) {
370
381
  sections.push(`## ${custom.title}
371
382
 
372
383
  ${custom.content}`);
373
384
  sectionNames.push(custom.title.toLowerCase().replace(/\s+/g, "-"));
374
385
  }
386
+ if (options.mcp && baseUrl) {
387
+ const agentOptions = options.mcp === true ? {} : options.mcp;
388
+ const index = agentOptions.position === "after-intro" ? sectionNames[0] === "header" ? 1 : 0 : sections.length;
389
+ sections.splice(index, 0, formatAgentAccessSection(baseUrl, agentOptions));
390
+ sectionNames.splice(index, 0, "agent-access");
391
+ }
375
392
  return {
376
393
  // Every own-site link (pages, clusters, portfolio, custom sections) takes
377
394
  // the site's trailing-slash shape in one pass.
@@ -1,5 +1,5 @@
1
1
  'use client';
2
- import { publishSiteCredential } from '../chunk-HGFAEDG3.js';
2
+ import { publishSiteCredential } from '../chunk-JRCNUUNG.js';
3
3
  export { useDeferredActivation } from '../chunk-YC7ELZS3.js';
4
4
  import '../chunk-FESKKJAS.js';
5
5
  import '../chunk-A4CC4ZG3.js';
@@ -7,8 +7,8 @@ export { trackConversion, trackEvent } from '../chunk-LCDVPAMR.js';
7
7
  export { VISUAL_VIEWPORT_GAP_PROPERTY, VisualViewportGap, useVisualViewportGap } from '../chunk-6T6CQVNL.js';
8
8
  export { getOrCreateSessionId, getOrCreateVisitorId, useSiteKitIdentity } from '../chunk-24QZEO3Q.js';
9
9
  import '../chunk-GJWI74ZZ.js';
10
- import '../chunk-K4ZHAURD.js';
11
- import '../chunk-F24FNCTK.js';
10
+ import '../chunk-GK7TV7EK.js';
11
+ import '../chunk-KHQ5GD6T.js';
12
12
  import '../chunk-PKBMQBKP.js';
13
13
 
14
14
  // src/client/SiteKitCredential.tsx
@@ -1,15 +1,15 @@
1
1
  'use client';
2
2
  import '../chunk-P5GB6NEO.js';
3
- import { useAnalyticsOptional } from '../chunk-JWTQS5F5.js';
3
+ import { useAnalyticsOptional } from '../chunk-CKW4HFJG.js';
4
4
  import '../chunk-LCDVPAMR.js';
5
5
  import '../chunk-24QZEO3Q.js';
6
6
  import '../chunk-L2V5PUFN.js';
7
7
  import '../chunk-GJWI74ZZ.js';
8
8
  import '../chunk-43OCZ3JA.js';
9
9
  import '../chunk-EKBEOXTH.js';
10
- import { sonorFetch } from '../chunk-D6ZC7XKZ.js';
11
- import '../chunk-K4ZHAURD.js';
12
- import '../chunk-F24FNCTK.js';
10
+ import { sonorFetch } from '../chunk-3E3PPSNR.js';
11
+ import '../chunk-GK7TV7EK.js';
12
+ import '../chunk-KHQ5GD6T.js';
13
13
  import '../chunk-PKBMQBKP.js';
14
14
  import { jsxs, jsx, Fragment } from 'react/jsx-runtime';
15
15
  import React5, { useState, useEffect, useMemo, useRef, useCallback } from 'react';
@@ -1,12 +1,12 @@
1
1
  'use client';
2
2
  export { SONOR_PUBLIC_ECHO_DEFAULTS, getEchoWidgetProps } from '../chunk-HODO5BX5.js';
3
- export { ChatWidget } from '../chunk-64DKGVEI.js';
4
- import { SiteChat } from '../chunk-NV72HZ4W.js';
3
+ export { ChatWidget } from '../chunk-OOD6GMT4.js';
4
+ import { SiteChat } from '../chunk-YCFW2OQO.js';
5
5
  import '../chunk-6T6CQVNL.js';
6
6
  import '../chunk-JE4A5S4F.js';
7
- import { SitePopups } from '../chunk-EJVQJCG5.js';
7
+ import { SitePopups } from '../chunk-6LLTLLEJ.js';
8
8
  import '../chunk-27FISYK4.js';
9
- import '../chunk-FR6BYFPC.js';
9
+ import '../chunk-CSN45MHO.js';
10
10
  import '../chunk-Q6E4OPGG.js';
11
11
  import '../chunk-C2FZBUSS.js';
12
12
  import '../chunk-5SQK3D53.js';
@@ -18,9 +18,9 @@ import '../chunk-L2V5PUFN.js';
18
18
  import '../chunk-GJWI74ZZ.js';
19
19
  import '../chunk-43OCZ3JA.js';
20
20
  import '../chunk-EKBEOXTH.js';
21
- import '../chunk-D6ZC7XKZ.js';
22
- import '../chunk-K4ZHAURD.js';
23
- import '../chunk-F24FNCTK.js';
21
+ import '../chunk-3E3PPSNR.js';
22
+ import '../chunk-GK7TV7EK.js';
23
+ import '../chunk-KHQ5GD6T.js';
24
24
  import '../chunk-PKBMQBKP.js';
25
25
  import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
26
26
 
@@ -1,10 +1,10 @@
1
1
  'use client';
2
- export { FLEET_HEARTBEAT_PATH, FleetHeartbeat, detectNextVersion, sendFleetHeartbeat } from '../chunk-CF5QNFYU.js';
2
+ export { FLEET_HEARTBEAT_PATH, FleetHeartbeat, detectNextVersion, sendFleetHeartbeat } from '../chunk-EHR4NIMX.js';
3
3
  export { FLEET_CONTRACT_VERSION, FLEET_MODULES, FLEET_MODULES_MAX, FLEET_SITE_MAX_LENGTH, FLEET_VERSION_MAX_LENGTH, FLEET_VERSION_PATTERN, buildFleetHeartbeatPayload, isFleetModule, normalizeFleetModules, normalizeFleetSite, sanitizeFleetVersion } from '../chunk-ZTZQPYP6.js';
4
4
  import '../chunk-YC7ELZS3.js';
5
5
  import '../chunk-43OCZ3JA.js';
6
6
  import '../chunk-EKBEOXTH.js';
7
- import '../chunk-D6ZC7XKZ.js';
8
- import '../chunk-K4ZHAURD.js';
9
- import '../chunk-F24FNCTK.js';
7
+ import '../chunk-3E3PPSNR.js';
8
+ import '../chunk-GK7TV7EK.js';
9
+ import '../chunk-KHQ5GD6T.js';
10
10
  import '../chunk-PKBMQBKP.js';
@@ -1,13 +1,13 @@
1
1
  'use client';
2
2
  export { FormCelebration } from '../chunk-YGGDU6C3.js';
3
- export { FormClient, ManagedForm } from '../chunk-IAM3D3RL.js';
4
- import '../chunk-D5DCBD4Y.js';
3
+ export { FormClient, ManagedForm } from '../chunk-MDP7EB4J.js';
4
+ import '../chunk-ATE6IFVK.js';
5
5
  export { DatePicker } from '../chunk-SOD2F6C2.js';
6
- export { FormEnhancer } from '../chunk-OWZ7ATLZ.js';
6
+ export { FormEnhancer } from '../chunk-PF64OEXC.js';
7
7
  import '../chunk-YC7ELZS3.js';
8
8
  import '../chunk-DXO6SBMD.js';
9
9
  export { FormField as FormFieldComponent } from '../chunk-4NTBQNHA.js';
10
- export { useForm, useFormTracking } from '../chunk-FR6BYFPC.js';
10
+ export { useForm, useFormTracking } from '../chunk-CSN45MHO.js';
11
11
  import '../chunk-Q6E4OPGG.js';
12
12
  import '../chunk-C2FZBUSS.js';
13
13
  export { DEFAULT_FORM_SUCCESS_MESSAGE } from '../chunk-5SQK3D53.js';
@@ -15,9 +15,9 @@ import '../chunk-HW7B43E5.js';
15
15
  import '../chunk-NJCTQH2P.js';
16
16
  import '../chunk-L2V5PUFN.js';
17
17
  import '../chunk-GJWI74ZZ.js';
18
- import { sonorFetch } from '../chunk-D6ZC7XKZ.js';
19
- import '../chunk-K4ZHAURD.js';
20
- import '../chunk-F24FNCTK.js';
18
+ import { sonorFetch } from '../chunk-3E3PPSNR.js';
19
+ import '../chunk-GK7TV7EK.js';
20
+ import '../chunk-KHQ5GD6T.js';
21
21
  import '../chunk-PKBMQBKP.js';
22
22
 
23
23
  // src/forms/formsApi.ts
@@ -1,5 +1,5 @@
1
- export { ServerForm, getFormConfig } from '../chunk-5V2V5C3Y.js';
2
- import '../chunk-OWZ7ATLZ.js';
1
+ export { ServerForm, getFormConfig } from '../chunk-FUQTV5O6.js';
2
+ import '../chunk-PF64OEXC.js';
3
3
  import '../chunk-YC7ELZS3.js';
4
4
  export { StaticForm } from '../chunk-ZTLMPUO6.js';
5
5
  import '../chunk-DXO6SBMD.js';
@@ -1,6 +1,6 @@
1
- export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-JMLK6MH7.js';
1
+ export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-DA5XC7Y6.js';
2
2
  export { ManagedFavicon, getManagedFaviconUrl } from '../chunk-GW7GSBO7.js';
3
- import '../chunk-D6ZC7XKZ.js';
4
- import '../chunk-K4ZHAURD.js';
5
- import '../chunk-F24FNCTK.js';
3
+ import '../chunk-3E3PPSNR.js';
4
+ import '../chunk-GK7TV7EK.js';
5
+ import '../chunk-KHQ5GD6T.js';
6
6
  import '../chunk-PKBMQBKP.js';
package/dist/index.js CHANGED
@@ -1,2 +1,2 @@
1
- export { SITE_KIT_VERSION } from './chunk-F24FNCTK.js';
1
+ export { SITE_KIT_VERSION } from './chunk-KHQ5GD6T.js';
2
2
  import './chunk-PKBMQBKP.js';
@@ -1,10 +1,10 @@
1
1
  'use client';
2
- export { SiteKitClientProviders } from '../chunk-VO3JYRT5.js';
2
+ export { SiteKitClientProviders } from '../chunk-XEMHGJEG.js';
3
3
  import '../chunk-6G43IRWR.js';
4
- import '../chunk-HGFAEDG3.js';
5
- import '../chunk-CF5QNFYU.js';
4
+ import '../chunk-JRCNUUNG.js';
5
+ import '../chunk-EHR4NIMX.js';
6
6
  import '../chunk-ZTZQPYP6.js';
7
- import '../chunk-S54ECQGY.js';
7
+ import '../chunk-AH4AXO4P.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-D6ZC7XKZ.js';
16
- import '../chunk-K4ZHAURD.js';
17
- import '../chunk-F24FNCTK.js';
15
+ import '../chunk-3E3PPSNR.js';
16
+ import '../chunk-GK7TV7EK.js';
17
+ import '../chunk-KHQ5GD6T.js';
18
18
  import '../chunk-PKBMQBKP.js';
@@ -1,13 +1,13 @@
1
- import { SiteKitClientProviders } from '../chunk-VO3JYRT5.js';
1
+ import { SiteKitClientProviders } from '../chunk-XEMHGJEG.js';
2
2
  import '../chunk-6G43IRWR.js';
3
- import '../chunk-HGFAEDG3.js';
4
- import '../chunk-CF5QNFYU.js';
3
+ import '../chunk-JRCNUUNG.js';
4
+ import '../chunk-EHR4NIMX.js';
5
5
  import '../chunk-ZTZQPYP6.js';
6
6
  import { ManagedFavicon } from '../chunk-GW7GSBO7.js';
7
- import '../chunk-S54ECQGY.js';
7
+ import '../chunk-AH4AXO4P.js';
8
8
  import '../chunk-YC7ELZS3.js';
9
- import { resolveClientCredential } from '../chunk-RPZ7OQGD.js';
10
- import '../chunk-VX5CMNMM.js';
9
+ import { resolveClientCredential } from '../chunk-IE5SSOCN.js';
10
+ import '../chunk-UAYAJPEP.js';
11
11
  import { ManagedScripts } from '../chunk-MVLMXC44.js';
12
12
  import { resolveApiOrigin } from '../chunk-X6F6SO4S.js';
13
13
  import '../chunk-MH2DSGC6.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-D6ZC7XKZ.js';
21
- import '../chunk-K4ZHAURD.js';
22
- import '../chunk-F24FNCTK.js';
20
+ import '../chunk-3E3PPSNR.js';
21
+ import '../chunk-GK7TV7EK.js';
22
+ import '../chunk-KHQ5GD6T.js';
23
23
  import '../chunk-PKBMQBKP.js';
24
24
  import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
25
25
 
@@ -14,6 +14,10 @@ export interface AgentAccessOptions {
14
14
  endpoint?: string;
15
15
  /** The server card's path (default `/.well-known/mcp-server-card`). */
16
16
  card?: string;
17
+ /** Optional AI catalog path. Only set when the site serves this experimental discovery document. */
18
+ catalog?: string;
19
+ /** Place discovery before the first content section, preserving the title and introduction. */
20
+ position?: 'after-intro' | 'end';
17
21
  /** Tool names worth naming, e.g. the built-in ones. Optional. */
18
22
  tools?: string[];
19
23
  }
@@ -1,19 +1,19 @@
1
- export { createLLMsFullTxtHandler, createLLMsTxtHandler, formatSourcedFactsSection, llmsResponseHeaders } from '../chunk-BC4Y3S3D.js';
1
+ export { createLLMsFullTxtHandler, createLLMsTxtHandler, formatSourcedFactsSection, llmsResponseHeaders } from '../chunk-5O62CER4.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-VHKEF5ZB.js';
4
+ export { LEGACY_PUBLICATION_PATH, SEO_REVALIDATION_MAX_BODY_BYTES, SEO_REVALIDATION_MAX_ITEMS, createLlmsRevalidateHandler, createSeoRevalidationHandler, parseSeoRevalidationPayload } from '../chunk-XA2BNW5M.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-QL6XNPSD.js';
8
- export { getBusinessInfo, getFAQItems, getLLMsData, getOptimizedLLMsTxt, getPageSummaries, getServices } from '../chunk-6U3VLV2C.js';
7
+ export { AGENT_ACCESS_HEADING, appendAgentAccessSection, describesMcp, detectMcpServer, formatAgentAccessSection, generateLLMsFullTxt, generateLLMsTxt, writeLLMsTxtToPublic } from '../chunk-ZTLU3BSW.js';
8
+ export { getBusinessInfo, getFAQItems, getLLMsData, getOptimizedLLMsTxt, getPageSummaries, getServices } from '../chunk-4BHRA7TI.js';
9
9
  import '../chunk-L5UOHS6E.js';
10
10
  import '../chunk-WMVK77ND.js';
11
- import '../chunk-VX5CMNMM.js';
11
+ import '../chunk-UAYAJPEP.js';
12
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
13
  import '../chunk-4KZ6W3ZH.js';
14
14
  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-F24FNCTK.js';
18
+ import '../chunk-KHQ5GD6T.js';
19
19
  import '../chunk-PKBMQBKP.js';
@@ -1,8 +1,8 @@
1
1
  'use client';
2
2
  import { monotonicMs } from '../chunk-MH2DSGC6.js';
3
- import { sonorFetch } from '../chunk-D6ZC7XKZ.js';
4
- import '../chunk-K4ZHAURD.js';
5
- import '../chunk-F24FNCTK.js';
3
+ import { sonorFetch } from '../chunk-3E3PPSNR.js';
4
+ import '../chunk-GK7TV7EK.js';
5
+ import '../chunk-KHQ5GD6T.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';