@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.
- package/AGENTS.md +2 -2
- package/CHANGELOG.md +21 -3426
- package/agent-manifest.json +1 -1
- package/dist/{AnalyticsProvider-ZMQUV33M.js → AnalyticsProvider-ZB33W6MC.js} +4 -4
- package/dist/{ArticleViewTracker-V7NUXYBY.js → ArticleViewTracker-GMHYLLLZ.js} +3 -3
- package/dist/{BlocksPopup-52EU7OUY.js → BlocksPopup-EA6LYL25.js} +4 -4
- package/dist/{ChatWidget-5BHMNR57.js → ChatWidget-UCDWMWCW.js} +5 -5
- package/dist/{EngageWidget-PCGLX7SO.js → EngageWidget-7ZYSK4GE.js} +4 -4
- package/dist/{FileField-TSFGNAMY.js → FileField-QKA3JB2Q.js} +3 -3
- package/dist/{FormSpotlight-XLBWEOTE.js → FormSpotlight-AQTIA5TP.js} +2 -2
- package/dist/{FormStage-IJQ5Q2X6.js → FormStage-FDTLTP3B.js} +2 -2
- package/dist/ManagedForm-H7BVAH2W.js +14 -0
- package/dist/{ManagedNewsletterForm-QAO3POLC.js → ManagedNewsletterForm-J6QSAGGP.js} +4 -4
- package/dist/{SignalCore-RBA3VDBL.js → SignalCore-JZNXOLNT.js} +3 -3
- package/dist/{SiteDesignReporter-C4LR5X2V.js → SiteDesignReporter-W4EJUSTE.js} +5 -5
- package/dist/SitemapSync-XBANGKHZ.js +8 -0
- package/dist/SitemapSync.d.ts +1 -1
- package/dist/_client/booking-widget.js +5 -5
- package/dist/_client/testimonial-section.d.ts +1 -1
- package/dist/affiliates/api.d.ts +1 -1
- package/dist/affiliates/index.js +3 -3
- package/dist/analytics/AnalyticsProvider.d.ts +1 -1
- package/dist/analytics/index.js +4 -4
- package/dist/analytics/send-gate.d.ts +12 -25
- package/dist/articles/Article.d.ts +1 -1
- package/dist/articles/ArticleList.d.ts +1 -1
- package/dist/articles/ClusterLandingPage.d.ts +2 -2
- package/dist/articles/PublicationLayout.d.ts +1 -1
- package/dist/articles/PublicationSidebar.d.ts +1 -1
- package/dist/articles/RelatedPosts.d.ts +1 -1
- package/dist/articles/author-schema.d.ts +1 -1
- package/dist/articles/excerpt.d.ts +3 -4
- package/dist/articles/index.d.ts +2 -2
- package/dist/articles/index.js +1 -1
- package/dist/articles/news-sitemap.d.ts +1 -1
- package/dist/articles/processArticleHtml.d.ts +1 -1
- package/dist/articles/server-core.d.ts +4 -4
- package/dist/articles/server-ui.js +1 -1
- package/dist/articles/server.d.ts +4 -4
- package/dist/articles/types.d.ts +1 -1
- package/dist/chat/index.js +5 -5
- package/dist/{chunk-U35H2JIQ.js → chunk-3SDOQUUF.js} +2 -2
- package/dist/{chunk-F42R35NV.js → chunk-6WIQCXOO.js} +1 -1
- package/dist/{chunk-4JQQDCMO.js → chunk-AH5Q262S.js} +1 -1
- package/dist/{chunk-OPRBF7VE.js → chunk-CIG5UL2S.js} +1 -1
- package/dist/{chunk-EIULXXUJ.js → chunk-CSTQDNGK.js} +4 -4
- package/dist/{chunk-YLSEB32F.js → chunk-D5EC5KVO.js} +1 -1
- package/dist/{chunk-L2DJD5Y4.js → chunk-ERXXITG4.js} +1 -1
- package/dist/{chunk-3XPJKZ6D.js → chunk-HF57LG73.js} +7 -7
- package/dist/{chunk-GWUKQ26F.js → chunk-ILU5I6RW.js} +1 -1
- package/dist/{chunk-HAG4YIZY.js → chunk-JBE46QJZ.js} +6 -6
- package/dist/{chunk-3G2SE2J4.js → chunk-JTU2GOM4.js} +9 -5
- package/dist/{chunk-QPEEKFCA.js → chunk-LUXVWITO.js} +2 -2
- package/dist/{chunk-7QTMMHUO.js → chunk-M3YEPKP7.js} +1 -1
- package/dist/{chunk-XNVSCQ2O.js → chunk-NK4CSJNP.js} +2 -2
- package/dist/{chunk-W2CL2DB3.js → chunk-PGMVL4AB.js} +2 -2
- package/dist/{chunk-HVH37YPX.js → chunk-PHYMNUJU.js} +1 -1
- package/dist/{chunk-GIAOPEN6.js → chunk-Q4W23JYM.js} +1 -1
- package/dist/{chunk-J4D6ZXRW.js → chunk-QEDHRBAT.js} +1 -1
- package/dist/{chunk-DUAO4Q75.js → chunk-RHNWA34F.js} +2 -2
- package/dist/{chunk-LFXVE32I.js → chunk-UXOGCKL6.js} +1 -1
- package/dist/{chunk-PLUP2KN5.js → chunk-V3PUVBME.js} +2 -2
- package/dist/{chunk-XD3ZQET6.js → chunk-V6FDQLR7.js} +1 -1
- package/dist/{chunk-EVFZ7KEW.js → chunk-VDF5DFWT.js} +1 -1
- package/dist/{chunk-7MHHWZKC.js → chunk-VGH4MDTU.js} +1 -1
- package/dist/{chunk-FLR3EMK6.js → chunk-VLARKWZU.js} +1 -1
- package/dist/{chunk-ZETJTCMV.js → chunk-WWSHFRDL.js} +1 -1
- package/dist/{chunk-ZIMFQWGJ.js → chunk-YCJT4JJG.js} +3 -3
- package/dist/{chunk-3J2ERO3I.js → chunk-YEMPUQVU.js} +2 -2
- package/dist/client/index.js +3 -3
- package/dist/cms/CmsPreview.d.ts +2 -2
- package/dist/cms/index.d.ts +3 -3
- package/dist/cms/server-api.d.ts +1 -1
- package/dist/cms/types.d.ts +1 -1
- package/dist/commerce/EventCheckout.d.ts +1 -1
- package/dist/commerce/EventsAgenda.d.ts +3 -3
- package/dist/commerce/api.d.ts +1 -1
- package/dist/commerce/index.js +4 -4
- package/dist/commerce/server.d.ts +3 -4
- package/dist/contracts/entries.d.ts +1 -1
- package/dist/contracts/fleet.d.ts +9 -9
- package/dist/contracts/forms.d.ts +4 -10
- package/dist/contracts/llms.d.ts +1 -1
- package/dist/contracts/portfolio.d.ts +11 -15
- package/dist/contracts/seo-meta.d.ts +11 -12
- package/dist/contracts/seo-pages.d.ts +12 -18
- package/dist/contracts/site-cache.d.ts +4 -4
- package/dist/contracts/sites-normalize.d.ts +2 -4
- package/dist/contracts/sites.d.ts +3 -5
- package/dist/contracts/slot-content.d.ts +2 -2
- package/dist/contracts/slots.d.ts +6 -6
- package/dist/contracts/voice.d.ts +56 -0
- package/dist/contracts/website.d.ts +2 -2
- package/dist/engage/ChatWidget.d.ts +2 -2
- package/dist/engage/EchoUiActions.d.ts +3 -3
- package/dist/engage/EngageWidget.d.ts +1 -1
- package/dist/engage/brand-color.d.ts +1 -1
- package/dist/engage/element-rules.d.ts +2 -2
- package/dist/engage/index.js +6 -6
- package/dist/engage/types.d.ts +3 -3
- package/dist/fleet/FleetHeartbeat.d.ts +2 -2
- package/dist/fleet/index.js +4 -4
- package/dist/forms/FormSpotlight.d.ts +2 -2
- package/dist/forms/ManagedForm.d.ts +1 -1
- package/dist/forms/StaticForm.d.ts +1 -1
- package/dist/forms/field-interactions.d.ts +2 -2
- package/dist/forms/form-loaded-at.d.ts +2 -2
- package/dist/forms/formsApi.d.ts +2 -2
- package/dist/forms/index.d.ts +1 -1
- package/dist/forms/index.js +8 -8
- package/dist/forms/server.d.ts +1 -1
- package/dist/forms/server.js +4 -4
- package/dist/forms/static.js +2 -2
- package/dist/forms/submitForm.d.ts +1 -1
- package/dist/forms/types.d.ts +3 -3
- package/dist/images/ManagedFavicon.d.ts +1 -1
- package/dist/images/ManagedImage.d.ts +4 -4
- package/dist/images/api.d.ts +1 -1
- package/dist/images/index.d.ts +2 -2
- package/dist/images/index.js +4 -4
- package/dist/index.js +1 -1
- package/dist/landing/contract.d.ts +3 -4
- package/dist/layout/SiteKitClientProviders.d.ts +1 -1
- package/dist/layout/SiteKitLayout.d.ts +7 -7
- package/dist/layout/client.d.ts +1 -1
- package/dist/layout/client.js +7 -7
- package/dist/layout/index.js +8 -8
- package/dist/layout/types.d.ts +2 -2
- package/dist/llms/SpeakableSchema.d.ts +2 -2
- package/dist/llms/agent-access.d.ts +2 -2
- package/dist/llms/aiRobots.d.ts +4 -4
- package/dist/llms/api.d.ts +2 -2
- package/dist/llms/generateLLMsTxt.d.ts +1 -1
- package/dist/llms/index.js +4 -4
- package/dist/llms/links.d.ts +1 -1
- package/dist/llms/revalidate.d.ts +1 -1
- package/dist/llms/seo-revalidate.d.ts +2 -3
- package/dist/llms/types.d.ts +6 -6
- package/dist/llms/writeLLMsTxt.d.ts +10 -10
- package/dist/manifest/index.d.ts +8 -8
- package/dist/maps/index.js +3 -3
- package/dist/mcp/WebMcpTools.d.ts +1 -1
- package/dist/mcp/report.d.ts +2 -2
- package/dist/mcp/serverCard.d.ts +1 -1
- package/dist/mcp/sonor.d.ts +5 -6
- package/dist/mcp/sonor.js +8 -8
- package/dist/mcp/transport.d.ts +1 -2
- package/dist/mcp/types.d.ts +4 -5
- package/dist/motion/engine.d.ts +2 -3
- package/dist/motion/failsafe.d.ts +1 -2
- package/dist/motion/gsap.d.ts +2 -2
- package/dist/motion/three.d.ts +1 -1
- package/dist/og/config.d.ts +4 -4
- package/dist/og/contrast.d.ts +2 -2
- package/dist/og/pages.d.ts +5 -5
- package/dist/og/route-fit.d.ts +2 -2
- package/dist/og/route.d.ts +1 -2
- package/dist/og/template.d.ts +1 -1
- package/dist/proxy/index.d.ts +2 -2
- package/dist/proxy/securityHeaders.d.ts +10 -12
- package/dist/redirects/index.d.ts +7 -7
- package/dist/reputation/TestimonialSection.d.ts +1 -1
- package/dist/reputation/api.d.ts +1 -1
- package/dist/revalidate/index.js +2 -2
- package/dist/robots/index.d.ts +5 -5
- package/dist/robots/indexnow.d.ts +2 -3
- package/dist/seo/ManagedScripts.d.ts +2 -2
- package/dist/seo/client.js +4 -4
- package/dist/seo/getManagedMetadata.d.ts +1 -1
- package/dist/seo/groundingSchema.d.ts +2 -2
- package/dist/seo/index.js +4 -4
- package/dist/seo/llms.js +4 -4
- package/dist/seo/register-sitemap-cli-impl.d.ts +1 -1
- package/dist/seo/register-sitemap-cli.d.ts +1 -1
- package/dist/seo/register-sitemap-cli.js +2 -2
- package/dist/seo/schema-filter.d.ts +5 -6
- package/dist/seo/server-api.d.ts +1 -1
- package/dist/seo/sitemap.js +2 -2
- package/dist/seo/types.d.ts +4 -4
- package/dist/seo/withManagedMetadata.d.ts +4 -4
- package/dist/server/index.js +2 -2
- package/dist/server/mint-site-token.d.ts +1 -2
- package/dist/server/server-fetch.d.ts +5 -5
- package/dist/shared/build-entries.d.ts +4 -4
- package/dist/shared/frame.d.ts +8 -9
- package/dist/shared/fresh-fetch.d.ts +1 -2
- package/dist/shared/next-files.d.ts +1 -1
- package/dist/shared/publishCredential.d.ts +1 -1
- package/dist/shared/uuid.d.ts +1 -2
- package/dist/shared/version.d.ts +1 -1
- package/dist/shared/visual-viewport-gap.d.ts +2 -2
- package/dist/signal/index.js +2 -2
- package/dist/site-config/index.d.ts +2 -2
- package/dist/sitemap/index.d.ts +13 -13
- package/dist/sitemap/index.js +2 -2
- package/dist/sitemap/shared.d.ts +3 -3
- package/dist/sites/site-param.d.ts +2 -2
- package/dist/slots/ManagedRichText.d.ts +1 -1
- package/dist/slots/ManagedSlot.d.ts +1 -1
- package/dist/slots/index.d.ts +1 -3
- package/dist/sync/index.js +5 -5
- package/dist/types.d.ts +1 -1
- package/dist/{web-vitals.attribution-N2PCCF4Q.js → web-vitals.attribution-GD6LGLVF.js} +1 -1
- package/dist/website/PopupBlocks.d.ts +3 -4
- package/dist/website/images.js +4 -4
- package/dist/website/index.js +5 -5
- package/dist/website/popups.js +4 -4
- package/dist/{writeLLMsTxt-QR23OQUE.js → writeLLMsTxt-G3JBNBC5.js} +1 -1
- package/docs/MIGRATING-TO-7.md +9 -13
- package/package.json +1 -1
- package/src/admin-auth/README.md +3 -3
- package/src/analytics/README.md +7 -9
- package/src/articles/README.md +6 -6
- package/src/cta-bar/README.md +11 -11
- package/src/forms/README.md +10 -8
- package/src/llms/README.md +3 -3
- package/src/mcp/README.md +7 -7
- package/src/motion/README.md +1 -1
- package/src/og/README.md +26 -27
- package/src/proxy/README.md +14 -14
- package/src/seo/README.md +1 -1
- package/src/slots/README.md +1 -1
- package/src/sync/README.md +1 -1
- package/dist/ManagedForm-Z3PKOPIZ.js +0 -14
- package/dist/SitemapSync-XVMGKCF3.js +0 -8
package/dist/manifest/index.d.ts
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
28
|
+
/** App description. Defaults to Sonor project description. */
|
|
29
29
|
description?: string;
|
|
30
|
-
/** Theme color for browser chrome. Defaults to
|
|
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
|
|
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
|
-
/**
|
|
51
|
+
/** Sonor API key. Defaults from env. */
|
|
52
52
|
apiKey?: string;
|
|
53
|
-
/**
|
|
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
|
|
58
|
+
* Fetches project data from Sonor and merges with config overrides.
|
|
59
59
|
*/
|
|
60
60
|
export declare function createManifest(config?: ManifestConfig): () => Promise<Response>;
|
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-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
|
|
50
|
+
* rendering.
|
|
51
51
|
*
|
|
52
52
|
* @example
|
|
53
53
|
* ```tsx
|
package/dist/mcp/report.d.ts
CHANGED
|
@@ -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 (
|
|
4
|
-
*
|
|
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
|
package/dist/mcp/serverCard.d.ts
CHANGED
|
@@ -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://
|
|
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;
|
package/dist/mcp/sonor.d.ts
CHANGED
|
@@ -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.
|
|
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: '
|
|
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
|
|
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
|
|
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
|
-
/** `
|
|
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-
|
|
4
|
+
import { fetchBookingTypes, fetchAvailability } from '../chunk-M3YEPKP7.js';
|
|
5
5
|
import { getLLMsData, getServices, getFAQItems, getPageSummaries } from '../chunk-GLHQ3LRO.js';
|
|
6
|
-
import { getFormConfig } from '../chunk-
|
|
7
|
-
import '../chunk-
|
|
6
|
+
import { getFormConfig } from '../chunk-V3PUVBME.js';
|
|
7
|
+
import '../chunk-VLARKWZU.js';
|
|
8
8
|
import '../chunk-YC7ELZS3.js';
|
|
9
|
-
import '../chunk-
|
|
9
|
+
import '../chunk-CIG5UL2S.js';
|
|
10
10
|
import '../chunk-DXO6SBMD.js';
|
|
11
|
-
import '../chunk-
|
|
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-
|
|
26
|
-
import '../chunk-
|
|
27
|
-
import { SITE_KIT_VERSION } from '../chunk-
|
|
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';
|
package/dist/mcp/transport.d.ts
CHANGED
|
@@ -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
|
|
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
|
*
|
package/dist/mcp/types.d.ts
CHANGED
|
@@ -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
|
|
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://
|
|
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
|
-
* (
|
|
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.
|
|
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. */
|
package/dist/motion/engine.d.ts
CHANGED
|
@@ -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
|
|
23
|
-
*
|
|
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.
|
|
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.
|
package/dist/motion/gsap.d.ts
CHANGED
|
@@ -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 (
|
|
92
|
-
*
|
|
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
|
}
|
package/dist/motion/three.d.ts
CHANGED
|
@@ -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
|
|
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';
|
package/dist/og/config.d.ts
CHANGED
|
@@ -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 (
|
|
6
|
-
*
|
|
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. ['
|
|
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
|
|
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
|
package/dist/og/contrast.d.ts
CHANGED
|
@@ -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
|
|
9
|
-
*
|
|
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
|
package/dist/og/pages.d.ts
CHANGED
|
@@ -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,
|
|
47
|
-
*
|
|
48
|
-
*
|
|
49
|
-
*
|
|
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/
|
|
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
|
*/
|
package/dist/og/route-fit.d.ts
CHANGED
|
@@ -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
|
-
*
|
|
10
|
-
*
|
|
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
|
package/dist/og/route.d.ts
CHANGED
|
@@ -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
|
-
* (
|
|
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,
|
package/dist/og/template.d.ts
CHANGED
|
@@ -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
|
|
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
|
package/dist/proxy/index.d.ts
CHANGED
|
@@ -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
|
-
* -
|
|
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
|
-
*
|
|
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
|
-
*
|
|
27
|
-
*
|
|
28
|
-
*
|
|
29
|
-
*
|
|
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
|
|
35
|
-
*
|
|
36
|
-
*
|
|
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'
|
|
47
|
-
*
|
|
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
|
|
5
|
-
* Supports API key only (domain resolved from
|
|
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
|
-
* '
|
|
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. '
|
|
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*
|
|
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
|
|
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
|
|
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
|
|
5
|
+
* Fetches published reviews from Sonor API public endpoint
|
|
6
6
|
*
|
|
7
7
|
* Minimal styling - let site CSS control appearance
|
|
8
8
|
*/
|
package/dist/reputation/api.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* @sonordev/site-kit/reputation - API Functions
|
|
3
3
|
*
|
|
4
|
-
* Fetch reviews and stats from
|
|
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
|
*/
|
package/dist/revalidate/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { createSeoRevalidationHandler } from '../chunk-
|
|
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-
|
|
4
|
+
import '../chunk-AH5Q262S.js';
|
|
5
5
|
import '../chunk-PKBMQBKP.js';
|
|
6
6
|
|
|
7
7
|
// src/revalidate/index.ts
|
package/dist/robots/index.d.ts
CHANGED
|
@@ -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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
3
|
-
*
|
|
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
|
|
5
|
-
*
|
|
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
|
package/dist/seo/client.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
export { SitemapSync } from '../chunk-
|
|
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-
|
|
7
|
-
import '../chunk-
|
|
8
|
-
import '../chunk-
|
|
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
|
|
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
|
|
3
|
-
* Default product stance:
|
|
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-
|
|
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-
|
|
21
|
-
import '../chunk-
|
|
22
|
-
import '../chunk-
|
|
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';
|