@sonordev/site-kit 7.1.2 → 7.2.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.
- package/AGENTS.md +1 -1
- package/CHANGELOG.md +51 -0
- package/README.md +9 -8
- package/agent-manifest.json +12 -4
- package/dist/{AnalyticsProvider-ZB33W6MC.js → AnalyticsProvider-SLFFBRPE.js} +4 -4
- package/dist/{ArticleViewTracker-GMHYLLLZ.js → ArticleViewTracker-TM5AMGN2.js} +3 -3
- package/dist/{BlocksPopup-EA6LYL25.js → BlocksPopup-YJNJIVPO.js} +5 -5
- package/dist/ChatWidget-XKOSH66S.js +17 -0
- package/dist/{FileField-QKA3JB2Q.js → FileField-CI4UL5SH.js} +3 -3
- package/dist/{FormSpotlight-AQTIA5TP.js → FormSpotlight-F2AAEGBN.js} +20 -6
- package/dist/{FormStage-FDTLTP3B.js → FormStage-BI5R5CNC.js} +27 -7
- package/dist/ManagedForm-G6COGHXL.js +16 -0
- package/dist/{ManagedNewsletterForm-J6QSAGGP.js → ManagedNewsletterForm-BO3WCGXX.js} +7 -5
- package/dist/{SignalCore-JZNXOLNT.js → SignalCore-ZA6WHKBR.js} +3 -3
- package/dist/SiteChat-YJADDTKG.js +5 -0
- package/dist/{SiteDesignReporter-W4EJUSTE.js → SiteDesignReporter-5YAW36AQ.js} +5 -5
- package/dist/SitePopups-ST5PMKZE.js +10 -0
- package/dist/SitemapSync-RJTEBINX.js +8 -0
- package/dist/_client/booking-widget.js +5 -5
- package/dist/affiliates/index.js +3 -3
- package/dist/analytics/index.js +4 -4
- package/dist/analytics/send-gate.d.ts +1 -1
- package/dist/articles/index.js +2 -2
- package/dist/articles/server-ui.js +3 -2
- package/dist/articles/server.js +2 -1
- package/dist/{engage → chat}/ChatWidget.d.ts +7 -6
- package/dist/{engage → chat}/EchoUiActions.d.ts +1 -1
- package/dist/chat/SiteChat.d.ts +25 -0
- package/dist/{engage → chat}/brand-color.d.ts +1 -1
- package/dist/{engage → chat}/chat-messages.d.ts +1 -1
- package/dist/{engage → chat}/echo-config.d.ts +1 -1
- package/dist/chat/index.d.ts +10 -6
- package/dist/chat/index.js +14 -8
- package/dist/{engage → chat}/launcher-placement.d.ts +1 -7
- package/dist/{engage → chat}/socket-loader.d.ts +2 -2
- package/dist/chat/types.d.ts +136 -0
- package/dist/chunk-27FISYK4.js +4 -0
- package/dist/{chunk-LUXVWITO.js → chunk-4NTBQNHA.js} +247 -78
- package/dist/{chunk-V3PUVBME.js → chunk-5V2V5C3Y.js} +2 -4
- package/dist/{chunk-Q4W23JYM.js → chunk-5YCEMV2L.js} +1 -1
- package/dist/{chunk-RHNWA34F.js → chunk-64DKGVEI.js} +41 -7
- package/dist/{chunk-GLHQ3LRO.js → chunk-6U3VLV2C.js} +1 -1
- package/dist/{chunk-WWSHFRDL.js → chunk-BC4Y3S3D.js} +1 -1
- package/dist/{chunk-JSZN6LDZ.js → chunk-BF7TZYC3.js} +38 -31
- package/dist/{chunk-M3YEPKP7.js → chunk-BKY2ZNM7.js} +1 -1
- package/dist/{chunk-AQSNPZY4.js → chunk-C2FZBUSS.js} +80 -1
- package/dist/{chunk-NK4CSJNP.js → chunk-CF5QNFYU.js} +2 -2
- package/dist/{chunk-D5EC5KVO.js → chunk-D5DCBD4Y.js} +2 -2
- package/dist/{chunk-3SDOQUUF.js → chunk-D6ZC7XKZ.js} +2 -2
- package/dist/chunk-EJVQJCG5.js +370 -0
- package/dist/{chunk-AH5Q262S.js → chunk-F24FNCTK.js} +1 -1
- package/dist/{chunk-V6FDQLR7.js → chunk-FR6BYFPC.js} +53 -21
- package/dist/{chunk-UXOGCKL6.js → chunk-GEXT7BTE.js} +1 -1
- package/dist/{chunk-JTU2GOM4.js → chunk-GGORNBSC.js} +18 -6
- package/dist/{chunk-ERXXITG4.js → chunk-HGFAEDG3.js} +1 -1
- package/dist/chunk-HODO5BX5.js +28 -0
- package/dist/chunk-HW7B43E5.js +14 -0
- package/dist/{chunk-CSTQDNGK.js → chunk-IAM3D3RL.js} +43 -24
- package/dist/{chunk-PGMVL4AB.js → chunk-JJ3DELUL.js} +2 -2
- package/dist/{chunk-ILU5I6RW.js → chunk-JMLK6MH7.js} +1 -1
- package/dist/{chunk-YEMPUQVU.js → chunk-JWTQS5F5.js} +2 -2
- package/dist/{chunk-VDF5DFWT.js → chunk-K4ZHAURD.js} +1 -1
- package/dist/chunk-NV72HZ4W.js +45 -0
- package/dist/{chunk-4Y5FWDPM.js → chunk-NZ4RXN3G.js} +55 -7
- package/dist/chunk-OWZ7ATLZ.js +187 -0
- package/dist/{chunk-TXBAOEKG.js → chunk-PKGN32AU.js} +5 -4
- package/dist/chunk-Q6E4OPGG.js +40 -0
- package/dist/{chunk-QEDHRBAT.js → chunk-QL6XNPSD.js} +2 -2
- package/dist/{chunk-JBE46QJZ.js → chunk-R46IQIGK.js} +1 -1
- package/dist/{chunk-6WIQCXOO.js → chunk-RPZ7OQGD.js} +1 -1
- package/dist/{chunk-PHYMNUJU.js → chunk-S54ECQGY.js} +1 -1
- package/dist/{chunk-VGH4MDTU.js → chunk-VHKEF5ZB.js} +1 -1
- package/dist/{chunk-HF57LG73.js → chunk-VO3JYRT5.js} +43 -29
- package/dist/chunk-VWWITFWM.js +300 -0
- package/dist/{chunk-CIG5UL2S.js → chunk-ZTLMPUO6.js} +3 -2
- package/dist/client/index.js +3 -3
- package/dist/commerce/index.js +4 -4
- package/dist/contracts/color.d.ts +1 -1
- package/dist/contracts/entries.d.ts +1 -1
- package/dist/contracts/error-page.d.ts +183 -0
- package/dist/contracts/llms.d.ts +1 -0
- package/dist/contracts/proposal-sitemap.d.ts +130 -0
- package/dist/contracts/schema-placeholders.d.ts +87 -0
- package/dist/engage/EngageWidget.d.ts +13 -12
- package/dist/engage/index.d.ts +10 -9
- package/dist/engage/index.js +31 -35
- package/dist/engage/types.d.ts +19 -244
- package/dist/fleet/FleetHeartbeat.d.ts +1 -1
- package/dist/fleet/index.js +4 -4
- package/dist/forms/FormEnhancer.d.ts +25 -12
- package/dist/forms/ServerForm.d.ts +11 -10
- package/dist/forms/StaticForm.d.ts +3 -1
- package/dist/forms/field-autocomplete.d.ts +28 -0
- package/dist/forms/form-dom-values.d.ts +42 -0
- package/dist/forms/index.js +11 -9
- package/dist/forms/server.js +6 -4
- package/dist/forms/static.js +3 -2
- package/dist/forms/submitForm.d.ts +8 -1
- package/dist/forms/types.d.ts +41 -2
- package/dist/forms/useForm.d.ts +21 -4
- package/dist/forms/webmcp.d.ts +38 -0
- package/dist/images/index.js +4 -4
- package/dist/index.d.ts +4 -1
- package/dist/index.js +1 -1
- package/dist/layout/SiteKitClientProviders.d.ts +3 -3
- package/dist/layout/SiteKitLayout.d.ts +4 -4
- package/dist/layout/client.d.ts +3 -3
- package/dist/layout/client.js +7 -7
- package/dist/layout/index.js +8 -8
- package/dist/layout/types.d.ts +5 -4
- package/dist/llms/contract.js +1 -1
- package/dist/llms/index.js +6 -6
- package/dist/maps/index.js +3 -3
- package/dist/mcp/index.js +2 -14
- package/dist/mcp/sonor.js +14 -11
- package/dist/revalidate/index.js +2 -2
- package/dist/seo/client.js +4 -4
- package/dist/seo/index.js +15 -8
- package/dist/seo/llms/contract.js +1 -1
- package/dist/seo/llms.js +6 -6
- package/dist/seo/register-sitemap-cli.js +1 -1
- package/dist/seo/sitemap.js +4 -4
- package/dist/server/index.js +2 -2
- package/dist/shared/dialog.d.ts +27 -0
- package/dist/shared/identity.d.ts +1 -1
- package/dist/shared/layers.d.ts +7 -0
- package/dist/shared/mid-form.d.ts +53 -0
- package/dist/shared/reporting-gate.d.ts +1 -1
- package/dist/shared/version.d.ts +1 -1
- package/dist/shared/visual-viewport-gap.d.ts +1 -1
- package/dist/signal/index.js +2 -2
- package/dist/signal/types.d.ts +1 -1
- package/dist/sitemap/index.js +4 -4
- package/dist/{socket-loader-R24ZSRSQ.js → socket-loader-CGIPEG74.js} +1 -1
- package/dist/sync/index.js +5 -5
- package/dist/types.d.ts +3 -1
- package/dist/{web-vitals.attribution-GD6LGLVF.js → web-vitals.attribution-N2PCCF4Q.js} +1 -1
- package/dist/website/BlocksPopup.d.ts +1 -1
- package/dist/website/PopupBlocks.d.ts +5 -2
- package/dist/website/SitePopups.d.ts +25 -0
- package/dist/website/images.js +4 -4
- package/dist/website/index.js +6 -6
- package/dist/website/popup-rules.d.ts +46 -0
- package/dist/website/popup-types.d.ts +113 -0
- package/dist/website/popups.d.ts +2 -6
- package/dist/website/popups.js +6 -14
- package/dist/{writeLLMsTxt-G3JBNBC5.js → writeLLMsTxt-OV24LQVL.js} +3 -3
- package/docs/MIGRATING-TO-7.md +41 -9
- package/docs.json +2 -1
- package/package.json +2 -2
- package/src/analytics/README.md +2 -2
- package/src/articles/README.md +4 -1
- package/src/{engage → chat}/README.md +63 -62
- package/src/forms/README.md +49 -3
- package/src/layout/README.md +8 -5
- package/src/seo/README.md +3 -1
- package/src/sync/README.md +10 -0
- package/src/website/README.md +133 -0
- package/dist/ChatWidget-UCDWMWCW.js +0 -15
- package/dist/EngageWidget-7ZYSK4GE.js +0 -11
- package/dist/ManagedForm-H7BVAH2W.js +0 -14
- package/dist/SitemapSync-XBANGKHZ.js +0 -8
- package/dist/chunk-NDF4A5JM.js +0 -37
- package/dist/chunk-VLARKWZU.js +0 -100
- package/dist/chunk-YCJT4JJG.js +0 -837
- package/dist/engage/DesignRenderer.d.ts +0 -57
- package/dist/engage/element-rules.d.ts +0 -38
package/dist/forms/useForm.d.ts
CHANGED
|
@@ -9,7 +9,7 @@
|
|
|
9
9
|
* const { form, fields, values, errors, setFieldValue, submit, isSubmitting } = useForm('contact-form')
|
|
10
10
|
*
|
|
11
11
|
* return (
|
|
12
|
-
* <form onSubmit={
|
|
12
|
+
* <form {...toolAttributes} onSubmit={handleSubmit}>
|
|
13
13
|
* {fields.map(field => (
|
|
14
14
|
* <MyCustomInput
|
|
15
15
|
* key={field.slug}
|
|
@@ -24,7 +24,9 @@
|
|
|
24
24
|
* )
|
|
25
25
|
* ```
|
|
26
26
|
*/
|
|
27
|
-
import type {
|
|
27
|
+
import type { DeclarativeToolFormAttributes } from '../mcp/declarative';
|
|
28
|
+
import type { FormEvent } from 'react';
|
|
29
|
+
import type { ManagedFormConfig, FormField, FormSubmitOptions, FormSubmitOutcome, FormSubmitResult } from './types';
|
|
28
30
|
export interface UseFormOptions {
|
|
29
31
|
/** Project ID (defaults to SiteKitLayout config) */
|
|
30
32
|
projectId?: string;
|
|
@@ -98,8 +100,23 @@ export interface UseFormReturn {
|
|
|
98
100
|
validateField: (field: FormField) => string | null;
|
|
99
101
|
/** Check if a field is visible (conditional logic) */
|
|
100
102
|
isFieldVisible: (field: FormField) => boolean;
|
|
101
|
-
/**
|
|
102
|
-
|
|
103
|
+
/**
|
|
104
|
+
* Submit the form. Resolves with what happened (sent, invalid, failed,
|
|
105
|
+
* busy); ignoring the result is fine.
|
|
106
|
+
*/
|
|
107
|
+
submit: (options?: FormSubmitOptions) => Promise<FormSubmitOutcome>;
|
|
108
|
+
/**
|
|
109
|
+
* A ready-made `<form onSubmit>`: prevents the native submit, moves to the
|
|
110
|
+
* next step or submits, and hands an AI agent that submitted through
|
|
111
|
+
* WebMCP the outcome. Prefer it to calling `submit()` yourself.
|
|
112
|
+
*/
|
|
113
|
+
handleSubmit: (event: FormEvent<HTMLFormElement>) => void;
|
|
114
|
+
/**
|
|
115
|
+
* WebMCP attributes for your `<form>` (`toolname`, `tooldescription`), so
|
|
116
|
+
* a browser agent can fill it as a tool. Spread them on the form element.
|
|
117
|
+
* Null until the form config loads.
|
|
118
|
+
*/
|
|
119
|
+
toolAttributes: DeclarativeToolFormAttributes | null;
|
|
103
120
|
/** Submission state */
|
|
104
121
|
isSubmitting: boolean;
|
|
105
122
|
isComplete: boolean;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @sonordev/site-kit/forms - managed forms as WebMCP tools
|
|
3
|
+
*
|
|
4
|
+
* Every managed form carries the declarative WebMCP attributes (`toolname`,
|
|
5
|
+
* `tooldescription`), so a browser agent can treat it as a tool: it fills the
|
|
6
|
+
* same controls a person would and the submit runs the same validation and
|
|
7
|
+
* files the same lead. There is deliberately no `toolautosubmit`. The agent
|
|
8
|
+
* fills the fields and the person it's helping presses Send, which is the
|
|
9
|
+
* right default for anything that files a lead or sends a message.
|
|
10
|
+
*
|
|
11
|
+
* Browsers that don't implement WebMCP ignore the attributes. Each field's
|
|
12
|
+
* label is what an agent reads to understand it (FormField adds the help
|
|
13
|
+
* text as `toolparamdescription` where there is some).
|
|
14
|
+
*
|
|
15
|
+
* Single source of truth for a managed form's tool name and description, and
|
|
16
|
+
* for reading an agent's submit (`SubmitEvent.agentInvoked`, `respondWith`).
|
|
17
|
+
* FormClient, FormSpotlight, FormStage, StaticForm and useForm all use it.
|
|
18
|
+
*/
|
|
19
|
+
import { type DeclarativeToolFormAttributes } from '../mcp/declarative';
|
|
20
|
+
import type { ManagedFormConfig } from './types';
|
|
21
|
+
/** `contact-page` -> `submit_contact_page`. Stable, snake_case, unique per form. */
|
|
22
|
+
export declare function formToolName(config: Pick<ManagedFormConfig, 'slug'>): string;
|
|
23
|
+
/** The tool description an agent reads to decide whether this form is the one. */
|
|
24
|
+
export declare function formToolDescription(config: Pick<ManagedFormConfig, 'name' | 'form_type' | 'description'>): string;
|
|
25
|
+
/** Spread onto the managed form's `<form>` element. */
|
|
26
|
+
export declare function formToolAttributes(config: Pick<ManagedFormConfig, 'slug' | 'name' | 'form_type' | 'description'>): DeclarativeToolFormAttributes;
|
|
27
|
+
export interface AgentSubmit {
|
|
28
|
+
/** True when the browser reports that an AI agent submitted the form. */
|
|
29
|
+
invoked: boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Hand the agent the outcome of its submit. Call it synchronously inside
|
|
32
|
+
* the submit handler, after `preventDefault()`. A no-op unless an agent
|
|
33
|
+
* submitted and the browser supports `respondWith`.
|
|
34
|
+
*/
|
|
35
|
+
respond: (outcome: Promise<unknown>) => void;
|
|
36
|
+
}
|
|
37
|
+
/** Read an agent's submit off a native SubmitEvent (`e.nativeEvent` in React). */
|
|
38
|
+
export declare function readAgentSubmit(event: Event | null | undefined): AgentSubmit;
|
package/dist/images/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-
|
|
1
|
+
export { ManagedImage, assignImageToSlot, clearImageSlot, fetchManagedImage, fetchManagedImages, listImageFiles, uploadImage } from '../chunk-JMLK6MH7.js';
|
|
2
2
|
export { ManagedFavicon, getManagedFaviconUrl } from '../chunk-GW7GSBO7.js';
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-D6ZC7XKZ.js';
|
|
4
|
+
import '../chunk-K4ZHAURD.js';
|
|
5
|
+
import '../chunk-F24FNCTK.js';
|
|
6
6
|
import '../chunk-PKBMQBKP.js';
|
package/dist/index.d.ts
CHANGED
|
@@ -15,7 +15,10 @@
|
|
|
15
15
|
export { SITE_KIT_VERSION } from './shared/version';
|
|
16
16
|
export type { ManagedMetadataResult, ManagedSchemaProps, ManagedFAQData } from './seo/types';
|
|
17
17
|
export type { AnalyticsConfig, AnalyticsEvent, PageView } from './analytics/types';
|
|
18
|
-
export type {
|
|
18
|
+
export type { ChatConfig } from './chat/types';
|
|
19
|
+
export type { SitePopup } from './website/popup-types';
|
|
20
|
+
/** Deprecated names (engage was retired): SitePopup and SitePopupConfig. */
|
|
21
|
+
export type { EngageElement, WidgetConfig } from './engage/types';
|
|
19
22
|
export type { ManagedFormConfig, FormSubmission, FormSubmitResult, FormField } from './forms/types';
|
|
20
23
|
export type { Article as ArticleType, ArticleAuthor, ArticleCategory } from './articles/types';
|
|
21
24
|
export type { CommerceOffering, CommerceCategory, CommerceVariant, CommerceSchedule, OfferingType, Cart, CartItem, } from './commerce/types';
|
package/dist/index.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { SITE_KIT_VERSION } from './chunk-
|
|
1
|
+
export { SITE_KIT_VERSION } from './chunk-F24FNCTK.js';
|
|
2
2
|
import './chunk-PKBMQBKP.js';
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SiteKitClientProviders — Client Island
|
|
3
3
|
*
|
|
4
4
|
* This is the 'use client' boundary for SiteKitLayout.
|
|
5
|
-
* It composes the client-only providers (Analytics,
|
|
5
|
+
* It composes the client-only providers (Analytics, chat, popups, Signal, SitemapSync)
|
|
6
6
|
* that require React context or browser APIs.
|
|
7
7
|
*
|
|
8
8
|
* All modules are lazy-loaded via next/dynamic so their JS is only downloaded
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*
|
|
11
11
|
* All modules share a unified identity (visitor ID + session ID) read from
|
|
12
12
|
* the storage-backed singleton (shared/identity), ensuring consistent
|
|
13
|
-
* tracking across Analytics, Signal, and
|
|
13
|
+
* tracking across Analytics, Signal, chat and popups.
|
|
14
14
|
*
|
|
15
15
|
* 4.0 INVARIANT — CHILDREN ARE NEVER WRAPPED. Every module here renders as a
|
|
16
16
|
* childless sibling AFTER {children}; nothing provides context around page
|
|
@@ -56,7 +56,7 @@ export interface SiteKitClientProvidersProps {
|
|
|
56
56
|
*/
|
|
57
57
|
design?: boolean | DesignConfig;
|
|
58
58
|
/**
|
|
59
|
-
* Defer Analytics /
|
|
59
|
+
* Defer Analytics / chat / popups / SitemapSync until window load + idle or first
|
|
60
60
|
* interaction (default true). Pass false to restore legacy eager mounting
|
|
61
61
|
* on hydration. SignalBridge is never deferred — it must apply experiment
|
|
62
62
|
* variants as early as possible.
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
*
|
|
12
12
|
* Client-side (island):
|
|
13
13
|
* - AnalyticsProvider (page views, scroll depth, heatmap, web vitals)
|
|
14
|
-
* -
|
|
14
|
+
* - SitePopups (Website → Popups & Banners) and SiteChat (Website chat)
|
|
15
15
|
* - SignalBridge (A/B experiments, behavior tracking)
|
|
16
16
|
* - SitemapSync (keeps Sonor seo_pages in sync)
|
|
17
17
|
*
|
|
@@ -37,7 +37,7 @@
|
|
|
37
37
|
*
|
|
38
38
|
* @example Opt out of specific features:
|
|
39
39
|
* ```tsx
|
|
40
|
-
* <SiteKitLayout
|
|
40
|
+
* <SiteKitLayout chat={false} popups={false} signal={false}>
|
|
41
41
|
* {children}
|
|
42
42
|
* </SiteKitLayout>
|
|
43
43
|
* ```
|
|
@@ -50,7 +50,7 @@ export interface SiteKitLayoutProps {
|
|
|
50
50
|
apiKey?: string;
|
|
51
51
|
/** Sonor API URL. Defaults to env or https://api.sonor.io */
|
|
52
52
|
apiUrl?: string;
|
|
53
|
-
/** Project ID (for
|
|
53
|
+
/** Project ID (for chat routing). Auto-resolved if not provided. */
|
|
54
54
|
projectId?: string;
|
|
55
55
|
/** Analytics tracking. true (default) | false | config object */
|
|
56
56
|
analytics?: boolean | AnalyticsConfig;
|
|
@@ -100,7 +100,7 @@ export interface SiteKitLayoutProps {
|
|
|
100
100
|
*/
|
|
101
101
|
design?: boolean | DesignConfig;
|
|
102
102
|
/**
|
|
103
|
-
* Defer client modules (Analytics,
|
|
103
|
+
* Defer client modules (Analytics, chat, popups, SitemapSync) until window load +
|
|
104
104
|
* idle or the first user interaction, keeping their JS and mount work out of
|
|
105
105
|
* the critical hydration path. Default: true. Pass false to restore legacy
|
|
106
106
|
* eager mounting. SignalBridge is never deferred.
|
package/dist/layout/client.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* SiteKitClientProviders — Client Island
|
|
3
3
|
*
|
|
4
4
|
* This is the 'use client' boundary for SiteKitLayout.
|
|
5
|
-
* It composes the client-only providers (Analytics,
|
|
5
|
+
* It composes the client-only providers (Analytics, chat, popups, Signal, SitemapSync)
|
|
6
6
|
* that require React context or browser APIs.
|
|
7
7
|
*
|
|
8
8
|
* All modules are lazy-loaded via next/dynamic so their JS is only downloaded
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
*
|
|
11
11
|
* All modules share a unified identity (visitor ID + session ID) read from
|
|
12
12
|
* the storage-backed singleton (shared/identity), ensuring consistent
|
|
13
|
-
* tracking across Analytics, Signal, and
|
|
13
|
+
* tracking across Analytics, Signal, chat and popups.
|
|
14
14
|
*
|
|
15
15
|
* 4.0 INVARIANT — CHILDREN ARE NEVER WRAPPED. Every module here renders as a
|
|
16
16
|
* childless sibling AFTER {children}; nothing provides context around page
|
|
@@ -56,7 +56,7 @@ export interface SiteKitClientProvidersProps {
|
|
|
56
56
|
*/
|
|
57
57
|
design?: boolean | DesignConfig;
|
|
58
58
|
/**
|
|
59
|
-
* Defer Analytics /
|
|
59
|
+
* Defer Analytics / chat / popups / SitemapSync until window load + idle or first
|
|
60
60
|
* interaction (default true). Pass false to restore legacy eager mounting
|
|
61
61
|
* on hydration. SignalBridge is never deferred — it must apply experiment
|
|
62
62
|
* variants as early as possible.
|
package/dist/layout/client.js
CHANGED
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
export { SiteKitClientProviders } from '../chunk-
|
|
2
|
+
export { SiteKitClientProviders } from '../chunk-VO3JYRT5.js';
|
|
3
3
|
import '../chunk-6G43IRWR.js';
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-HGFAEDG3.js';
|
|
5
|
+
import '../chunk-CF5QNFYU.js';
|
|
6
6
|
import '../chunk-ZTZQPYP6.js';
|
|
7
|
-
import '../chunk-
|
|
7
|
+
import '../chunk-S54ECQGY.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-
|
|
16
|
-
import '../chunk-
|
|
17
|
-
import '../chunk-
|
|
15
|
+
import '../chunk-D6ZC7XKZ.js';
|
|
16
|
+
import '../chunk-K4ZHAURD.js';
|
|
17
|
+
import '../chunk-F24FNCTK.js';
|
|
18
18
|
import '../chunk-PKBMQBKP.js';
|
package/dist/layout/index.js
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
import { SiteKitClientProviders } from '../chunk-
|
|
1
|
+
import { SiteKitClientProviders } from '../chunk-VO3JYRT5.js';
|
|
2
2
|
import '../chunk-6G43IRWR.js';
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-HGFAEDG3.js';
|
|
4
|
+
import '../chunk-CF5QNFYU.js';
|
|
5
5
|
import '../chunk-ZTZQPYP6.js';
|
|
6
6
|
import { ManagedFavicon } from '../chunk-GW7GSBO7.js';
|
|
7
|
-
import '../chunk-
|
|
7
|
+
import '../chunk-S54ECQGY.js';
|
|
8
8
|
import '../chunk-YC7ELZS3.js';
|
|
9
|
-
import { resolveClientCredential } from '../chunk-
|
|
9
|
+
import { resolveClientCredential } from '../chunk-RPZ7OQGD.js';
|
|
10
10
|
import '../chunk-VX5CMNMM.js';
|
|
11
11
|
import { ManagedScripts } from '../chunk-MVLMXC44.js';
|
|
12
12
|
import { resolveApiOrigin } from '../chunk-X6F6SO4S.js';
|
|
@@ -17,9 +17,9 @@ import '../chunk-24QZEO3Q.js';
|
|
|
17
17
|
import '../chunk-GJWI74ZZ.js';
|
|
18
18
|
import '../chunk-43OCZ3JA.js';
|
|
19
19
|
import '../chunk-EKBEOXTH.js';
|
|
20
|
-
import '../chunk-
|
|
21
|
-
import '../chunk-
|
|
22
|
-
import '../chunk-
|
|
20
|
+
import '../chunk-D6ZC7XKZ.js';
|
|
21
|
+
import '../chunk-K4ZHAURD.js';
|
|
22
|
+
import '../chunk-F24FNCTK.js';
|
|
23
23
|
import '../chunk-PKBMQBKP.js';
|
|
24
24
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
25
25
|
|
package/dist/layout/types.d.ts
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
* Kept in a shared file so both server (SiteKitLayout) and client
|
|
4
4
|
* (SiteKitClientProviders) components can reference them.
|
|
5
5
|
*/
|
|
6
|
-
import type { ChatLauncherPlacement } from '../
|
|
6
|
+
import type { ChatLauncherPlacement } from '../chat/types';
|
|
7
7
|
import type { SiteDesignConfig } from '../website/design';
|
|
8
8
|
/**
|
|
9
9
|
* The site's design, for popups (Website → Popups & Banners). site-kit
|
|
@@ -47,9 +47,10 @@ export interface AnalyticsConfig {
|
|
|
47
47
|
allowLocalhost?: boolean;
|
|
48
48
|
}
|
|
49
49
|
/**
|
|
50
|
-
* Launcher placement (`position`,
|
|
51
|
-
* ChatLauncherPlacement in
|
|
52
|
-
* config surface extends
|
|
50
|
+
* The deprecated `engage` prop's config. Launcher placement (`position`,
|
|
51
|
+
* `offsetBottom`, `zIndex`) comes from ChatLauncherPlacement in chat/types,
|
|
52
|
+
* the one definition every chat config surface extends; `zIndex` also stacks
|
|
53
|
+
* popups.
|
|
53
54
|
*/
|
|
54
55
|
export interface EngageConfig extends ChatLauncherPlacement {
|
|
55
56
|
chatEnabled?: boolean;
|
package/dist/llms/contract.js
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { LLMS_DISCLAIMER_MAX_LENGTH, LLMS_PUBLIC_SUMMARY_MAX_LENGTH, LLM_GEO_CONTRACT_VERSION, MANAGED_LLM_SCHEMA_KNOWN_KEYS, isEmittableReviewNode, pickManagedLlmSchemaForJsonLd, sanitizeLlmsDisclaimerLine, sanitizeLlmsPublicSummary, sanitizePrimaryLanguageTag } from '../chunk-
|
|
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';
|
|
2
2
|
import '../chunk-PKBMQBKP.js';
|
package/dist/llms/index.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
export { createLLMsFullTxtHandler, createLLMsTxtHandler, formatSourcedFactsSection, llmsResponseHeaders } from '../chunk-
|
|
1
|
+
export { createLLMsFullTxtHandler, createLLMsTxtHandler, formatSourcedFactsSection, llmsResponseHeaders } from '../chunk-BC4Y3S3D.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-
|
|
4
|
+
export { LEGACY_PUBLICATION_PATH, SEO_REVALIDATION_MAX_BODY_BYTES, SEO_REVALIDATION_MAX_ITEMS, createLlmsRevalidateHandler, createSeoRevalidationHandler, parseSeoRevalidationPayload } from '../chunk-VHKEF5ZB.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-
|
|
8
|
-
export { getBusinessInfo, getFAQItems, getLLMsData, getOptimizedLLMsTxt, getPageSummaries, getServices } from '../chunk-
|
|
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';
|
|
9
9
|
import '../chunk-L5UOHS6E.js';
|
|
10
10
|
import '../chunk-WMVK77ND.js';
|
|
11
11
|
import '../chunk-VX5CMNMM.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-
|
|
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-
|
|
18
|
+
import '../chunk-F24FNCTK.js';
|
|
19
19
|
import '../chunk-PKBMQBKP.js';
|
package/dist/maps/index.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { monotonicMs } from '../chunk-MH2DSGC6.js';
|
|
3
|
-
import { sonorFetch } from '../chunk-
|
|
4
|
-
import '../chunk-
|
|
5
|
-
import '../chunk-
|
|
3
|
+
import { sonorFetch } from '../chunk-D6ZC7XKZ.js';
|
|
4
|
+
import '../chunk-K4ZHAURD.js';
|
|
5
|
+
import '../chunk-F24FNCTK.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';
|
package/dist/mcp/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { MCP_SUPPORTED_PROTOCOL_VERSIONS, dispatch, errorOutcome, JSONRPC_INVALID_REQUEST, META_CLIENT_INFO, JSONRPC_PARSE_ERROR, MCP_PROTOCOL_VERSION_MODERN } from '../chunk-FYAB6CXS.js';
|
|
2
2
|
export { JSONRPC_METHOD_NOT_FOUND, MCP_ERROR_HEADER_MISMATCH, MCP_ERROR_UNSUPPORTED_PROTOCOL_VERSION, MCP_PROTOCOL_VERSIONS_LEGACY, MCP_PROTOCOL_VERSION_MODERN, MCP_SUPPORTED_PROTOCOL_VERSIONS, META_CLIENT_INFO, META_PROTOCOL_VERSION, META_SERVER_INFO, dispatch, isSupportedVersion, toToolDescriptor, toToolResult, toolErrorResult, validateArgs } from '../chunk-FYAB6CXS.js';
|
|
3
|
+
export { declarativeToolField, declarativeToolForm } from '../chunk-HW7B43E5.js';
|
|
3
4
|
import '../chunk-PKBMQBKP.js';
|
|
4
5
|
|
|
5
6
|
// src/mcp/types.ts
|
|
@@ -273,17 +274,4 @@ function createMcpServerCardHandler(options) {
|
|
|
273
274
|
};
|
|
274
275
|
}
|
|
275
276
|
|
|
276
|
-
|
|
277
|
-
function declarativeToolForm(options) {
|
|
278
|
-
const attributes = {
|
|
279
|
-
toolname: options.name,
|
|
280
|
-
tooldescription: options.description
|
|
281
|
-
};
|
|
282
|
-
if (options.autoSubmit) attributes.toolautosubmit = "";
|
|
283
|
-
return attributes;
|
|
284
|
-
}
|
|
285
|
-
function declarativeToolField(description) {
|
|
286
|
-
return { toolparamdescription: description };
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
export { MCP_SERVER_CARD_LEGACY_PATH, MCP_SERVER_CARD_PATH, MCP_SERVER_CARD_SCHEMA, SITE_KIT_CARD_META_KEY, WEBMCP_SURFACE_HEADER, buildMcpServerCard, createMcpHandler, createMcpServerCardHandler, declarativeToolField, declarativeToolForm, decodeHeaderValue, defineMcpTool, toolCallRecord, validateMcpServerCard };
|
|
277
|
+
export { MCP_SERVER_CARD_LEGACY_PATH, MCP_SERVER_CARD_PATH, MCP_SERVER_CARD_SCHEMA, SITE_KIT_CARD_META_KEY, WEBMCP_SURFACE_HEADER, buildMcpServerCard, createMcpHandler, createMcpServerCardHandler, decodeHeaderValue, defineMcpTool, toolCallRecord, validateMcpServerCard };
|
package/dist/mcp/sonor.js
CHANGED
|
@@ -1,30 +1,33 @@
|
|
|
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-
|
|
5
|
-
import { getLLMsData, getServices, getFAQItems, getPageSummaries } from '../chunk-
|
|
6
|
-
import { getFormConfig } from '../chunk-
|
|
7
|
-
import '../chunk-
|
|
4
|
+
import { fetchBookingTypes, fetchAvailability } from '../chunk-BKY2ZNM7.js';
|
|
5
|
+
import { getLLMsData, getServices, getFAQItems, getPageSummaries } from '../chunk-6U3VLV2C.js';
|
|
6
|
+
import { getFormConfig } from '../chunk-5V2V5C3Y.js';
|
|
7
|
+
import '../chunk-OWZ7ATLZ.js';
|
|
8
8
|
import '../chunk-YC7ELZS3.js';
|
|
9
|
-
import '../chunk-
|
|
9
|
+
import '../chunk-ZTLMPUO6.js';
|
|
10
10
|
import '../chunk-DXO6SBMD.js';
|
|
11
|
-
import '../chunk-
|
|
12
|
-
import { getAllArticles, getArticle } from '../chunk-
|
|
11
|
+
import '../chunk-4NTBQNHA.js';
|
|
12
|
+
import { getAllArticles, getArticle } from '../chunk-PKGN32AU.js';
|
|
13
13
|
import '../chunk-Y3INC4QJ.js';
|
|
14
14
|
import '../chunk-QXMIKDOL.js';
|
|
15
15
|
import '../chunk-WMVK77ND.js';
|
|
16
16
|
import { resolveFetch } from '../chunk-VX5CMNMM.js';
|
|
17
|
-
import '../chunk-
|
|
17
|
+
import '../chunk-NZ4RXN3G.js';
|
|
18
|
+
import '../chunk-VWWITFWM.js';
|
|
18
19
|
import '../chunk-MJP63SSS.js';
|
|
19
20
|
import { resolveServerApiConfig } from '../chunk-X6F6SO4S.js';
|
|
20
21
|
import '../chunk-MH2DSGC6.js';
|
|
21
22
|
import { resolveSiteHost } from '../chunk-FESKKJAS.js';
|
|
22
23
|
import '../chunk-A4CC4ZG3.js';
|
|
24
|
+
import '../chunk-C2FZBUSS.js';
|
|
23
25
|
import '../chunk-5SQK3D53.js';
|
|
26
|
+
import '../chunk-HW7B43E5.js';
|
|
24
27
|
import '../chunk-NJCTQH2P.js';
|
|
25
|
-
import '../chunk-
|
|
26
|
-
import '../chunk-
|
|
27
|
-
import { SITE_KIT_VERSION } from '../chunk-
|
|
28
|
+
import '../chunk-D6ZC7XKZ.js';
|
|
29
|
+
import '../chunk-K4ZHAURD.js';
|
|
30
|
+
import { SITE_KIT_VERSION } from '../chunk-F24FNCTK.js';
|
|
28
31
|
import '../chunk-PKBMQBKP.js';
|
|
29
32
|
import 'server-only';
|
|
30
33
|
import { after } from 'next/server.js';
|
package/dist/revalidate/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { createSeoRevalidationHandler } from '../chunk-
|
|
1
|
+
import { createSeoRevalidationHandler } from '../chunk-VHKEF5ZB.js';
|
|
2
2
|
import '../chunk-XTRZGXB2.js';
|
|
3
3
|
export { SITE_CACHE_TAGS, SITE_REVALIDATE_PATH, isSiteRevalidatePong } from '../chunk-RYVDGXC2.js';
|
|
4
|
-
import '../chunk-
|
|
4
|
+
import '../chunk-F24FNCTK.js';
|
|
5
5
|
import '../chunk-PKBMQBKP.js';
|
|
6
6
|
|
|
7
7
|
// src/revalidate/index.ts
|
package/dist/seo/client.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
export { SitemapSync } from '../chunk-
|
|
2
|
+
export { SitemapSync } from '../chunk-GEXT7BTE.js';
|
|
3
3
|
import '../chunk-YVKRYQRG.js';
|
|
4
4
|
import '../chunk-43OCZ3JA.js';
|
|
5
5
|
import '../chunk-EKBEOXTH.js';
|
|
6
|
-
import '../chunk-
|
|
7
|
-
import '../chunk-
|
|
8
|
-
import '../chunk-
|
|
6
|
+
import '../chunk-D6ZC7XKZ.js';
|
|
7
|
+
import '../chunk-K4ZHAURD.js';
|
|
8
|
+
import '../chunk-F24FNCTK.js';
|
|
9
9
|
import '../chunk-PKBMQBKP.js';
|
package/dist/seo/index.js
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
export { ManagedNoScripts, ManagedScripts } from '../chunk-MVLMXC44.js';
|
|
2
|
-
import { pickManagedLlmSchemaForJsonLd } from '../chunk-
|
|
2
|
+
import { pickManagedLlmSchemaForJsonLd } from '../chunk-NZ4RXN3G.js';
|
|
3
3
|
import { safeJsonLd } from '../chunk-4KZ6W3ZH.js';
|
|
4
|
-
|
|
4
|
+
import { withoutSchemaPlaceholders } from '../chunk-VWWITFWM.js';
|
|
5
|
+
export { SitemapSync } from '../chunk-GEXT7BTE.js';
|
|
5
6
|
import { getManagedMetadata } from '../chunk-4YTYGG2C.js';
|
|
6
7
|
export { generateSitemap, getABVariant, getManagedMetadata, getManagedMetadataWithAB, getRedirect, getRobotsDirective, isIndexable } from '../chunk-4YTYGG2C.js';
|
|
7
8
|
import { getContentBlock, getSchemaMarkups, getSEOPageData, getEntityEnhancedSchema, getFAQData, getInternalLinks, getEntities, pruneSchemaTypes } from '../chunk-662ILEZ6.js';
|
|
@@ -17,9 +18,9 @@ import '../chunk-FESKKJAS.js';
|
|
|
17
18
|
import '../chunk-A4CC4ZG3.js';
|
|
18
19
|
import '../chunk-43OCZ3JA.js';
|
|
19
20
|
import '../chunk-EKBEOXTH.js';
|
|
20
|
-
import '../chunk-
|
|
21
|
-
import '../chunk-
|
|
22
|
-
import '../chunk-
|
|
21
|
+
import '../chunk-D6ZC7XKZ.js';
|
|
22
|
+
import '../chunk-K4ZHAURD.js';
|
|
23
|
+
import '../chunk-F24FNCTK.js';
|
|
23
24
|
import '../chunk-PKBMQBKP.js';
|
|
24
25
|
import { Suspense } from 'react';
|
|
25
26
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
@@ -73,10 +74,10 @@ async function ManagedSchemaAsync({
|
|
|
73
74
|
const page = pageData?.page;
|
|
74
75
|
const siteUrl = pageData?.project?.site_url || "";
|
|
75
76
|
const deny = new Set(excludeTypes ?? []);
|
|
76
|
-
const fromSonor = (values) => values.map((v) => pruneSchemaTypes(v, deny)).filter(
|
|
77
|
+
const fromSonor = (values) => values.map((v) => withoutPlaceholders(pruneSchemaTypes(v, deny))).filter(isSchemaObject);
|
|
77
78
|
const allSchemas = [
|
|
78
79
|
...fromSonor(entitySchemas),
|
|
79
|
-
...schemas.map((s) => s.schema_json),
|
|
80
|
+
...schemas.map((s) => withoutPlaceholders(s.schema_json)).filter(isSchemaObject),
|
|
80
81
|
// Include auto-generated schema from Signal meta optimization
|
|
81
82
|
...fromSonor(page?.managed_schema ? [page.managed_schema] : []),
|
|
82
83
|
...additionalSchemas
|
|
@@ -127,7 +128,7 @@ async function LLMSchemaAsync({
|
|
|
127
128
|
}) {
|
|
128
129
|
const { page: pageData, project } = await getSEOPageData(path);
|
|
129
130
|
const raw = pageData?.managed_llm_schema;
|
|
130
|
-
const picked = pickManagedLlmSchemaForJsonLd(raw);
|
|
131
|
+
const picked = withoutPlaceholders(pickManagedLlmSchemaForJsonLd(raw));
|
|
131
132
|
if (!picked) {
|
|
132
133
|
return null;
|
|
133
134
|
}
|
|
@@ -183,6 +184,12 @@ function createSpeakableWebPageSchema(type, name, url, speakable) {
|
|
|
183
184
|
speakable: speakableSpec
|
|
184
185
|
};
|
|
185
186
|
}
|
|
187
|
+
function withoutPlaceholders(value) {
|
|
188
|
+
return withoutSchemaPlaceholders(value).value;
|
|
189
|
+
}
|
|
190
|
+
function isSchemaObject(value) {
|
|
191
|
+
return value !== null && typeof value === "object";
|
|
192
|
+
}
|
|
186
193
|
function schemaNodeHasType(node, type) {
|
|
187
194
|
if (!node || typeof node !== "object") return false;
|
|
188
195
|
const t = node["@type"];
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { LLMS_DISCLAIMER_MAX_LENGTH, LLMS_PUBLIC_SUMMARY_MAX_LENGTH, LLM_GEO_CONTRACT_VERSION, MANAGED_LLM_SCHEMA_KNOWN_KEYS, isEmittableReviewNode, pickManagedLlmSchemaForJsonLd, sanitizeLlmsDisclaimerLine, sanitizeLlmsPublicSummary, sanitizePrimaryLanguageTag } from '../../chunk-
|
|
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';
|
|
2
2
|
import '../../chunk-PKBMQBKP.js';
|
package/dist/seo/llms.js
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
export { createLLMsFullTxtHandler, createLLMsTxtHandler, formatSourcedFactsSection, llmsResponseHeaders } from '../chunk-
|
|
1
|
+
export { createLLMsFullTxtHandler, createLLMsTxtHandler, formatSourcedFactsSection, llmsResponseHeaders } from '../chunk-BC4Y3S3D.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-
|
|
4
|
+
export { LEGACY_PUBLICATION_PATH, SEO_REVALIDATION_MAX_BODY_BYTES, SEO_REVALIDATION_MAX_ITEMS, createLlmsRevalidateHandler, createSeoRevalidationHandler, parseSeoRevalidationPayload } from '../chunk-VHKEF5ZB.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-
|
|
8
|
-
export { getBusinessInfo, getFAQItems, getLLMsData, getOptimizedLLMsTxt, getPageSummaries, getServices } from '../chunk-
|
|
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';
|
|
9
9
|
import '../chunk-L5UOHS6E.js';
|
|
10
10
|
import '../chunk-WMVK77ND.js';
|
|
11
11
|
import '../chunk-VX5CMNMM.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-
|
|
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-
|
|
18
|
+
import '../chunk-F24FNCTK.js';
|
|
19
19
|
import '../chunk-PKBMQBKP.js';
|
|
@@ -458,7 +458,7 @@ async function registerLocalSitemap(options) {
|
|
|
458
458
|
}
|
|
459
459
|
if (options.writeLlms && result.success) {
|
|
460
460
|
try {
|
|
461
|
-
const { writeLLMsTxtToPublic } = await import('../writeLLMsTxt-
|
|
461
|
+
const { writeLLMsTxtToPublic } = await import('../writeLLMsTxt-OV24LQVL.js');
|
|
462
462
|
const written = await writeLLMsTxtToPublic({
|
|
463
463
|
// Resolved here too: the sync's own `site` is scoped to the branch that
|
|
464
464
|
// posts, and this runs on the skip path as well.
|
package/dist/seo/sitemap.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
|
-
export { createSitemap, getPortfolioPaths, syncSitemapToPortal } from '../chunk-
|
|
1
|
+
export { createSitemap, getPortfolioPaths, syncSitemapToPortal } from '../chunk-R46IQIGK.js';
|
|
2
2
|
import '../chunk-Z22QVHT4.js';
|
|
3
|
-
import '../chunk-
|
|
4
|
-
import '../chunk-
|
|
3
|
+
import '../chunk-QL6XNPSD.js';
|
|
4
|
+
import '../chunk-6U3VLV2C.js';
|
|
5
5
|
import '../chunk-L5UOHS6E.js';
|
|
6
6
|
import '../chunk-WMVK77ND.js';
|
|
7
7
|
import '../chunk-VX5CMNMM.js';
|
|
8
|
-
import '../chunk-
|
|
8
|
+
import '../chunk-NZ4RXN3G.js';
|
|
9
9
|
import '../chunk-MJP63SSS.js';
|
|
10
10
|
import '../chunk-ZEGVKVD5.js';
|
|
11
11
|
import '../chunk-YVKRYQRG.js';
|
package/dist/server/index.js
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
export { resolveClientCredential } from '../chunk-
|
|
1
|
+
export { resolveClientCredential } from '../chunk-RPZ7OQGD.js';
|
|
2
2
|
import '../chunk-VX5CMNMM.js';
|
|
3
3
|
export { requireServerApiConfig, resolveApiOrigin, resolveServerApiConfig, serverApiFetch } from '../chunk-X6F6SO4S.js';
|
|
4
4
|
import '../chunk-MH2DSGC6.js';
|
|
5
|
-
import '../chunk-
|
|
5
|
+
import '../chunk-F24FNCTK.js';
|
|
6
6
|
import '../chunk-PKBMQBKP.js';
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @sonordev/site-kit shared: how a popup behaves as a dialog.
|
|
3
|
+
*
|
|
4
|
+
* SINGLE SOURCE OF TRUTH for popup focus and Escape. PopupBlocks (Website →
|
|
5
|
+
* Popups & Banners) calls usePopupDialog. Don't hand-roll another keydown
|
|
6
|
+
* listener or focus trap.
|
|
7
|
+
*
|
|
8
|
+
* - Escape closes, whatever the placement.
|
|
9
|
+
* - A modal popup takes focus when it opens (the dialog element itself, so a
|
|
10
|
+
* screen reader announces its name first; Tab then reaches its controls),
|
|
11
|
+
* keeps Tab inside, and hands focus back to where it was when it closes.
|
|
12
|
+
* - A non-modal one (a bar, a slide-in) leaves focus where it is.
|
|
13
|
+
*
|
|
14
|
+
* React only: no Next imports and no other site-kit imports, because Sonor's
|
|
15
|
+
* popup builder renders PopupBlocks too, from a copy of these files.
|
|
16
|
+
*/
|
|
17
|
+
import { type RefObject } from 'react';
|
|
18
|
+
export interface PopupDialogOptions {
|
|
19
|
+
/** False for a render that isn't live on the page (the builder preview). Default true. */
|
|
20
|
+
enabled?: boolean;
|
|
21
|
+
/** Takes focus, keeps Tab inside and returns focus on close. */
|
|
22
|
+
modal: boolean;
|
|
23
|
+
/** Escape calls it. */
|
|
24
|
+
onClose?: () => void;
|
|
25
|
+
}
|
|
26
|
+
/** Dialog behavior for the popup whose panel (the role="dialog" element) is `panelRef`. */
|
|
27
|
+
export declare function usePopupDialog(panelRef: RefObject<HTMLElement | null>, { enabled, modal, onClose }: PopupDialogOptions): void;
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* @sonordev/site-kit/shared — Unified Identity Management
|
|
3
3
|
*
|
|
4
4
|
* Single source of truth for visitor and session IDs across
|
|
5
|
-
* Analytics, Signal, and
|
|
5
|
+
* Analytics, Signal, chat and popups.
|
|
6
6
|
*
|
|
7
7
|
* Storage keys:
|
|
8
8
|
* localStorage: _sk_vid (visitor ID, persists ~forever)
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The layer a site's widgets stack on when the site sets nothing: popups,
|
|
3
|
+
* banners and toasts (SitePopups) and the chat launcher (SiteChat), with the
|
|
4
|
+
* chat window one below. Single source of truth for that default; the
|
|
5
|
+
* layout's `chat.zIndex` (or the deprecated `engage.zIndex`) overrides it.
|
|
6
|
+
*/
|
|
7
|
+
export declare const DEFAULT_WIDGET_Z_INDEX = 9999;
|