@sonordev/site-kit 8.8.0 → 8.9.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/CHANGELOG.md +22 -0
- package/README.md +9 -0
- package/agent-manifest.json +8 -1
- package/dist/AnalyticsProvider-X7JJN3QL.js +19 -0
- package/dist/{ArticleViewTracker-PV2RD3P6.js → ArticleViewTracker-7Q6AMCKX.js} +11 -10
- package/dist/{BlocksPopup-NEEFV2L3.js → BlocksPopup-U5VIYEBA.js} +4 -5
- package/dist/ChatWidget-EAATOFCT.js +30 -0
- package/dist/{FileField-MJ3RCNFJ.js → FileField-YWMSK7RF.js} +1 -3
- package/dist/{FormSpotlight-NQPQFZS7.js → FormSpotlight-MAXDW3TK.js} +1 -1
- package/dist/{FormStage-4T5PJR5K.js → FormStage-VAHRVOIZ.js} +1 -1
- package/dist/ManagedForm-7IZT7ZII.js +29 -0
- package/dist/{ManagedNewsletterForm-TUYGN6O3.js → ManagedNewsletterForm-VVXZSEAL.js} +21 -11
- package/dist/{SignalCore-OW3YIH6M.js → SignalCore-HAN4O7QG.js} +90 -36
- package/dist/{SiteChat-XMKHBSEK.js → SiteChat-3JLCEL2N.js} +2 -2
- package/dist/{SiteDesignReporter-BRH7ORQS.js → SiteDesignReporter-6CCO645E.js} +5 -6
- package/dist/SitePopups-ZGHQNGGH.js +19 -0
- package/dist/SitemapSync-5LSYCBKS.js +7 -0
- package/dist/SitemapSync.d.ts +1 -1
- package/dist/_client/booking-widget.d.ts +1 -1
- package/dist/_client/booking-widget.js +6 -7
- package/dist/_client/reviewed-signal-experiment.d.ts +9 -0
- package/dist/_client/reviewed-signal-experiment.js +89 -0
- package/dist/_client/testimonial-section.d.ts +1 -1
- package/dist/admin-auth/index.d.ts +3 -3
- package/dist/affiliates/AffiliatesWidget.d.ts +1 -1
- package/dist/affiliates/api.d.ts +1 -1
- package/dist/affiliates/index.d.ts +6 -6
- package/dist/affiliates/index.js +1 -3
- package/dist/affiliates/useAffiliates.d.ts +1 -1
- package/dist/analytics/AnalyticsProvider.d.ts +1 -1
- package/dist/analytics/dispatch.d.ts +1 -1
- package/dist/analytics/index.d.ts +6 -6
- package/dist/analytics/index.js +22 -12
- package/dist/analytics/publication-cta.d.ts +1 -1
- package/dist/analytics/send-gate.d.ts +8 -4
- package/dist/articles/Article.d.ts +1 -1
- package/dist/articles/ArticleFAQ.d.ts +1 -1
- package/dist/articles/ArticleFaqSection.d.ts +1 -1
- package/dist/articles/ArticleList.d.ts +1 -1
- package/dist/articles/ArticleViewTracker.d.ts +1 -1
- package/dist/articles/AuthorCard.d.ts +1 -1
- package/dist/articles/AuthorPage.d.ts +1 -1
- package/dist/articles/ClusterLandingPage.d.ts +1 -1
- package/dist/articles/ClusterNavigation.d.ts +1 -1
- package/dist/articles/ManagedNewsletterForm.d.ts +2 -2
- package/dist/articles/NewsletterShell.d.ts +1 -1
- package/dist/articles/NewsletterWidget.d.ts +1 -1
- 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/ServiceCallout.d.ts +1 -1
- package/dist/articles/TableOfContents.d.ts +1 -1
- package/dist/articles/article-photos.d.ts +1 -1
- package/dist/articles/article-styles.d.ts +1 -1
- package/dist/articles/article-tables.d.ts +1 -1
- package/dist/articles/artwork.d.ts +1 -1
- package/dist/articles/author-schema.d.ts +1 -1
- package/dist/articles/author-social.d.ts +1 -1
- package/dist/articles/excerpt.d.ts +1 -1
- package/dist/articles/index.d.ts +1 -1
- package/dist/articles/index.js +3 -3
- package/dist/articles/news-sitemap.d.ts +1 -1
- package/dist/articles/processArticleHtml.d.ts +1 -1
- package/dist/articles/public-reads.d.ts +1 -1
- package/dist/articles/reading-time.d.ts +1 -1
- package/dist/articles/routes.d.ts +1 -1
- package/dist/articles/server-core.d.ts +1 -1
- package/dist/articles/server-ui.d.ts +1 -1
- package/dist/articles/server-ui.js +6 -6
- package/dist/articles/server.d.ts +1 -1
- package/dist/articles/server.js +5 -5
- package/dist/articles/types.d.ts +1 -1
- package/dist/articles/widget-styles.d.ts +1 -1
- package/dist/brand/extract-brand-profile.d.ts +1 -1
- package/dist/chat/ChatWidget.d.ts +1 -1
- package/dist/chat/EchoUiActions.d.ts +1 -1
- package/dist/chat/SiteChat.d.ts +2 -2
- package/dist/chat/chat-messages.d.ts +1 -1
- package/dist/chat/index.d.ts +7 -7
- package/dist/chat/index.js +17 -9
- package/dist/chat/launcher-placement.d.ts +1 -1
- package/dist/{chunk-OPUY4RS6.js → chunk-2LBKIE2K.js} +2 -1
- package/dist/{chunk-XIDWNXZN.js → chunk-3W3MN6Z7.js} +2 -2
- package/dist/{chunk-UPFU63L4.js → chunk-55GFMOI6.js} +1 -1
- package/dist/chunk-5IVD6G77.js +37 -0
- package/dist/{chunk-URLTBVRX.js → chunk-6EDE7BOE.js} +3 -3
- package/dist/{chunk-DYROJGI2.js → chunk-6NLVHTYY.js} +1 -1
- package/dist/{chunk-ZQSCMYZO.js → chunk-7643MCD2.js} +6 -3
- package/dist/chunk-7IZUUXXO.js +1 -0
- package/dist/{chunk-C7TLGL3R.js → chunk-7VMA3KCN.js} +30 -4
- package/dist/{chunk-OWZWRP7Y.js → chunk-ADQ3VCKK.js} +2 -2
- package/dist/chunk-AG2RDHYZ.js +45 -0
- package/dist/chunk-AWLPFFPO.js +36 -0
- package/dist/{chunk-LNSNA3W4.js → chunk-C4XK472G.js} +4 -3
- package/dist/{chunk-TP32MRXV.js → chunk-CJ43K7RA.js} +2 -2
- package/dist/chunk-D4M5K6JN.js +25 -0
- package/dist/{chunk-F6WLHVMQ.js → chunk-DXE6SXWW.js} +1 -1
- package/dist/{chunk-YEX5RAEU.js → chunk-EBEM5BI5.js} +38 -27
- package/dist/chunk-F3RKFGRW.js +2 -0
- package/dist/chunk-FAY6MOLL.js +62 -0
- package/dist/chunk-FRY6PBT6.js +31 -0
- package/dist/{chunk-JYITKUUB.js → chunk-G5WUX7VE.js} +1 -1
- package/dist/chunk-HJD6KXKH.js +147 -0
- package/dist/{chunk-6BFQI3ZE.js → chunk-IO6BWRZ5.js} +2 -2
- package/dist/{chunk-THXELZTQ.js → chunk-ISMHDUBW.js} +1 -1
- package/dist/{chunk-SLFYTELD.js → chunk-J4LJE4NB.js} +1 -1
- package/dist/{chunk-LQJC5S2M.js → chunk-J6D3NEDE.js} +57 -0
- package/dist/chunk-JT7GHHMV.js +56 -0
- package/dist/{chunk-NFGAXWCN.js → chunk-KGIQYVQ2.js} +31 -13
- package/dist/chunk-KMNHNCVG.js +20 -0
- package/dist/chunk-KQKUXIUD.js +25 -0
- package/dist/{chunk-M5JIHQ42.js → chunk-L3S5WH4C.js} +2 -2
- package/dist/chunk-MDBXGN6W.js +13 -0
- package/dist/chunk-MOACHHOJ.js +20 -0
- package/dist/{chunk-6DXQHNZK.js → chunk-MP35JETP.js} +1 -1
- package/dist/chunk-NHDRA4Y5.js +6 -0
- package/dist/{chunk-AYQEIMGS.js → chunk-NZHECYLF.js} +103 -22
- package/dist/{chunk-EATJPSTS.js → chunk-O5LQUBBN.js} +1 -1
- package/dist/{chunk-Y6SHFILE.js → chunk-OEOSR5EG.js} +1 -1
- package/dist/{chunk-GQN4BGK6.js → chunk-OUD4RTBD.js} +1 -1
- package/dist/chunk-PMXQPO5Q.js +78 -0
- package/dist/chunk-PVY7X5UR.js +21 -0
- package/dist/{chunk-KG5IEV7I.js → chunk-QLJ2SC3T.js} +1 -1
- package/dist/{chunk-2WM4TNDF.js → chunk-QXAJPB6O.js} +1 -1
- package/dist/{chunk-2WDWQI7K.js → chunk-RYR6N4X4.js} +1 -1
- package/dist/{chunk-G7BRCSV6.js → chunk-S33CUULL.js} +3 -3
- package/dist/{chunk-YRQS7VAH.js → chunk-S63QY5XW.js} +2 -2
- package/dist/{chunk-GXWM5KNS.js → chunk-SO6RSRUP.js} +40 -45
- package/dist/{chunk-ODOV76VW.js → chunk-STIVFCWM.js} +1 -1
- package/dist/{chunk-SVHPILS3.js → chunk-T4A5J6SJ.js} +1 -1
- package/dist/chunk-TPHOIE4I.js +73 -0
- package/dist/{chunk-IWNJCRXW.js → chunk-UG53ZW7S.js} +125 -118
- package/dist/chunk-VXCUXHZO.js +9 -0
- package/dist/{chunk-SBPUFTMP.js → chunk-WHFWDK2H.js} +2 -2
- package/dist/chunk-WYNDBJG7.js +66 -0
- package/dist/{chunk-HN7GVGWC.js → chunk-XDH5B3PR.js} +3 -3
- package/dist/{chunk-PAYCK7FC.js → chunk-XJZLXUTG.js} +1 -1
- package/dist/{chunk-IDC5CVBR.js → chunk-YVEYO3OD.js} +1 -1
- package/dist/{chunk-PSS6M4CG.js → chunk-ZRSXCT4O.js} +2 -2
- package/dist/client/index.d.ts +8 -8
- package/dist/client/index.js +9 -8
- package/dist/config/index.d.ts +1 -1
- package/dist/contracts/broadcast-layouts.d.ts +8 -0
- package/dist/contracts/crm-disposition.d.ts +87 -0
- package/dist/contracts/decision-roles.d.ts +39 -0
- package/dist/contracts/entries.d.ts +1 -1
- package/dist/contracts/funnels.d.ts +85 -2
- package/dist/contracts/portfolio.d.ts +1 -1
- package/dist/contracts/publication-branding.d.ts +3 -3
- package/dist/contracts/resonance-constants.d.ts +4 -0
- package/dist/contracts/resonance.d.ts +8461 -0
- package/dist/contracts/signal-experiments.d.ts +219 -0
- package/dist/contracts/site-edit.d.ts +2 -2
- package/dist/contracts/sites.d.ts +1 -1
- package/dist/contracts/slots.d.ts +2 -2
- package/dist/contracts/wire-schema.d.ts +36 -0
- package/dist/cta-bar/CtaBar.d.ts +1 -1
- package/dist/cta-bar/client.js +3 -2
- package/dist/cta-bar/index.d.ts +4 -4
- package/dist/cta-bar/index.js +4 -3
- package/dist/fleet/FleetHeartbeat.d.ts +2 -2
- package/dist/fleet/contract.d.ts +1 -1
- package/dist/fleet/heartbeat.d.ts +2 -2
- package/dist/fleet/index.d.ts +6 -6
- package/dist/fleet/index.js +4 -5
- package/dist/forms/FileField.d.ts +1 -1
- package/dist/forms/FormClient.d.ts +2 -2
- package/dist/forms/FormEnhancer.d.ts +1 -1
- package/dist/forms/FormField.d.ts +1 -1
- package/dist/forms/FormSpotlight.d.ts +1 -1
- package/dist/forms/FormStage.d.ts +1 -1
- package/dist/forms/ManagedForm.d.ts +1 -1
- package/dist/forms/PrivateFileField.d.ts +1 -1
- package/dist/forms/ServerForm.d.ts +3 -3
- package/dist/forms/StaticForm.d.ts +1 -1
- package/dist/forms/contract.d.ts +1 -1
- package/dist/forms/experience-plan.d.ts +1 -1
- package/dist/forms/field-autocomplete.d.ts +1 -1
- package/dist/forms/field-controls.d.ts +1 -1
- package/dist/forms/field-rules.d.ts +1 -1
- package/dist/forms/form-dom-values.d.ts +1 -1
- package/dist/forms/index.d.ts +18 -18
- package/dist/forms/index.js +21 -11
- package/dist/forms/normalize-config.d.ts +1 -1
- package/dist/forms/server.d.ts +4 -4
- package/dist/forms/server.js +3 -3
- package/dist/forms/static.d.ts +2 -2
- package/dist/forms/submitForm.d.ts +2 -2
- package/dist/forms/tracking-session.d.ts +1 -1
- package/dist/forms/useForm.d.ts +2 -2
- package/dist/forms/webmcp.d.ts +2 -2
- package/dist/images/api.d.ts +1 -1
- package/dist/images/index.d.ts +6 -6
- package/dist/images/index.js +2 -4
- package/dist/images/server.d.ts +2 -2
- package/dist/index.d.ts +13 -13
- package/dist/index.js +1 -1
- package/dist/landing/contract.d.ts +1 -1
- package/dist/landing/contract.js +2 -1
- package/dist/landing/index.d.ts +3 -3
- package/dist/landing/index.js +3 -2
- package/dist/landing/managed-server.d.ts +2 -2
- package/dist/landing/managed.d.ts +10 -2
- package/dist/landing/server.d.ts +7 -7
- package/dist/landing/server.js +11 -6
- package/dist/layout/AiDiscoveryLinks.d.ts +1 -1
- package/dist/layout/SiteKitClientProviders.d.ts +1 -1
- package/dist/layout/SiteKitLayout.d.ts +2 -2
- package/dist/layout/client.d.ts +1 -1
- package/dist/layout/client.js +15 -11
- package/dist/layout/index.d.ts +5 -5
- package/dist/layout/index.js +17 -13
- package/dist/layout/types.d.ts +2 -2
- package/dist/llms/AEOComponents.d.ts +1 -1
- package/dist/llms/SpeakableSchema.d.ts +1 -1
- package/dist/llms/api.d.ts +1 -1
- package/dist/llms/client.d.ts +3 -3
- package/dist/llms/contract.d.ts +1 -1
- package/dist/llms/generateLLMsTxt.d.ts +1 -1
- package/dist/llms/handlers.d.ts +1 -1
- package/dist/llms/index.d.ts +21 -21
- package/dist/llms/index.js +5 -5
- package/dist/llms/merge.d.ts +1 -1
- package/dist/llms/sourcedFacts.d.ts +1 -1
- package/dist/llms/types.d.ts +5 -5
- package/dist/llms/writeLLMsTxt.d.ts +3 -3
- package/dist/maps/GoogleMap.d.ts +1 -1
- package/dist/maps/NeighborhoodMap.d.ts +1 -1
- package/dist/maps/api.d.ts +1 -1
- package/dist/maps/index.d.ts +5 -5
- package/dist/maps/index.js +1 -3
- package/dist/mcp/WebMcpTools.d.ts +1 -1
- package/dist/mcp/client.d.ts +2 -2
- package/dist/mcp/discovery.d.ts +2 -2
- package/dist/mcp/handlers.d.ts +4 -4
- package/dist/mcp/index.d.ts +12 -12
- package/dist/mcp/protocol.d.ts +1 -1
- package/dist/mcp/report.d.ts +1 -1
- package/dist/mcp/serverCard.d.ts +1 -1
- package/dist/mcp/sonor.d.ts +5 -5
- package/dist/mcp/sonor.js +10 -10
- package/dist/mcp/transport.d.ts +1 -1
- package/dist/motion/Parallax.d.ts +1 -1
- package/dist/motion/ScrollScene.d.ts +1 -1
- package/dist/motion/gsap.d.ts +2 -2
- package/dist/motion/index.d.ts +9 -9
- package/dist/motion/three.d.ts +1 -1
- package/dist/og/index.d.ts +5 -5
- package/dist/og/pages.d.ts +1 -1
- package/dist/og/route-fit.d.ts +17 -0
- package/dist/og/route.d.ts +8 -0
- package/dist/og/route.js +1 -1
- package/dist/og/template.d.ts +1 -1
- package/dist/portfolio/contract.d.ts +1 -1
- package/dist/press-kit/articles/Article.d.ts +2 -2
- package/dist/press-kit/articles/ArticleFaqSection.d.ts +1 -1
- package/dist/press-kit/articles/ArticleList.d.ts +2 -2
- package/dist/press-kit/articles/AuthorCard.d.ts +1 -1
- package/dist/press-kit/articles/AuthorPage.d.ts +1 -1
- package/dist/press-kit/articles/ClusterLandingPage.d.ts +2 -2
- package/dist/press-kit/articles/ClusterNavigation.d.ts +2 -2
- package/dist/press-kit/articles/ManagedNewsletterForm.d.ts +2 -2
- package/dist/press-kit/articles/PublicationLayout.d.ts +2 -2
- package/dist/press-kit/articles/PublicationSidebar.d.ts +1 -1
- package/dist/press-kit/articles/RelatedPosts.d.ts +2 -2
- package/dist/press-kit/articles/TableOfContents.d.ts +1 -1
- package/dist/press-kit/articles/article-body.d.ts +1 -1
- package/dist/press-kit/articles/article-headings.d.ts +1 -1
- package/dist/press-kit/articles/article-photos.d.ts +1 -1
- package/dist/press-kit/articles/artwork.d.ts +2 -2
- package/dist/press-kit/articles/author-schema.d.ts +2 -2
- package/dist/press-kit/articles/author-social.d.ts +1 -1
- package/dist/press-kit/articles/index.d.ts +23 -23
- package/dist/press-kit/articles/news-sitemap.d.ts +2 -2
- package/dist/press-kit/articles/public-reads.d.ts +1 -1
- package/dist/press-kit/articles/publication-reads.d.ts +2 -2
- package/dist/press-kit/articles/reading-time.d.ts +1 -1
- package/dist/press-kit/articles/server-core.d.ts +20 -20
- package/dist/press-kit/articles/server-ui.d.ts +20 -20
- package/dist/press-kit/articles/types.d.ts +1 -1
- package/dist/proxy/index.d.ts +5 -5
- package/dist/proxy/index.js +1 -1
- package/dist/reputation/TestimonialSection.d.ts +1 -1
- package/dist/reputation/VisualReviewCard.d.ts +1 -1
- package/dist/reputation/api.d.ts +1 -1
- package/dist/reputation/index.d.ts +4 -4
- package/dist/reputation/server.d.ts +3 -3
- package/dist/resonance/ResonanceRuntime.d.ts +7 -0
- package/dist/resonance/bridge.d.ts +16 -0
- package/dist/resonance/consent-adapter.d.ts +26 -0
- package/dist/resonance/controller-registry.d.ts +14 -0
- package/dist/resonance/controller.d.ts +103 -0
- package/dist/resonance/form-context.d.ts +5 -0
- package/dist/resonance/index.d.ts +4 -0
- package/dist/resonance/index.js +9 -0
- package/dist/resonance/meta-pixel.d.ts +67 -0
- package/dist/resonance/providers.d.ts +32 -0
- package/dist/resonance/runtime-core.d.ts +5 -0
- package/dist/revalidate/index.d.ts +3 -3
- package/dist/revalidate/index.js +2 -2
- package/dist/robots/index.d.ts +3 -3
- package/dist/robots/indexnow.js +2 -2
- package/dist/runtime/index.d.ts +7 -7
- package/dist/runtime/index.js +4 -5
- package/dist/runtime-core-WT7KKLWQ.js +2213 -0
- package/dist/seo/ManagedFAQ.d.ts +1 -1
- package/dist/seo/ManagedInternalLinks.d.ts +1 -1
- package/dist/seo/ManagedSchema.d.ts +1 -1
- package/dist/seo/ManagedScripts.d.ts +1 -1
- package/dist/seo/client.d.ts +1 -1
- package/dist/seo/client.js +3 -5
- package/dist/seo/entry-indexnow.d.ts +1 -1
- package/dist/seo/entry-llms-client.d.ts +1 -1
- package/dist/seo/entry-llms-contract.d.ts +1 -1
- package/dist/seo/entry-llms.d.ts +1 -1
- package/dist/seo/entry-meta-contract.d.ts +1 -1
- package/dist/seo/entry-og-route.d.ts +1 -1
- package/dist/seo/entry-og.d.ts +1 -1
- package/dist/seo/entry-pages-contract.d.ts +1 -1
- package/dist/seo/entry-redirects.d.ts +1 -1
- package/dist/seo/entry-robots.d.ts +1 -1
- package/dist/seo/entry-sitemap.d.ts +1 -1
- package/dist/seo/getManagedMetadata.d.ts +1 -1
- package/dist/seo/index.d.ts +12 -12
- package/dist/seo/index.js +9 -11
- package/dist/seo/indexnow.d.ts +1 -1
- package/dist/seo/indexnow.js +2 -2
- package/dist/seo/llms/client.d.ts +1 -1
- package/dist/seo/llms/contract.d.ts +1 -1
- package/dist/seo/llms.d.ts +1 -1
- package/dist/seo/llms.js +5 -5
- package/dist/seo/meta/contract.d.ts +1 -1
- package/dist/seo/og/route.d.ts +1 -1
- package/dist/seo/og/route.js +1 -1
- package/dist/seo/og.d.ts +1 -1
- package/dist/seo/pages/contract.d.ts +1 -1
- package/dist/seo/redirects.d.ts +1 -1
- package/dist/seo/register-sitemap-cli-impl.d.ts +1 -1
- package/dist/seo/register-sitemap-cli.js +1 -1
- package/dist/seo/robots.d.ts +1 -1
- package/dist/seo/routing.d.ts +1 -1
- package/dist/seo/server.d.ts +4 -4
- package/dist/seo/server.js +3 -3
- package/dist/seo/sitemap.d.ts +1 -1
- package/dist/seo/sitemap.js +3 -3
- package/dist/seo/types.d.ts +1 -1
- package/dist/seo-meta/contract.d.ts +1 -1
- package/dist/seo-pages/contract.d.ts +1 -1
- package/dist/server/index.d.ts +5 -5
- package/dist/server/index.js +3 -3
- package/dist/server/mint-site-token.d.ts +1 -1
- package/dist/server/server-fetch.d.ts +8 -0
- package/dist/{server-api-XIKDWSNO.js → server-api-A34TABT2.js} +2 -2
- package/dist/shared/build-entries.d.ts +3 -1
- package/dist/shared/color.d.ts +1 -1
- package/dist/shared/fetchWithRetry.d.ts +6 -0
- package/dist/shared/frame.d.ts +1 -1
- package/dist/shared/identity-storage.d.ts +6 -4
- package/dist/shared/identity.d.ts +1 -3
- package/dist/shared/index.d.ts +5 -5
- package/dist/shared/index.js +1 -1
- package/dist/shared/measurement-analytics.d.ts +1 -0
- package/dist/shared/measurement-policy.d.ts +6 -0
- package/dist/shared/measurement-proof.d.ts +5 -0
- package/dist/shared/measurement-store.d.ts +34 -0
- package/dist/shared/measurement-writer.d.ts +6 -0
- package/dist/shared/publishCredential.d.ts +1 -1
- package/dist/shared/reporting-gate.d.ts +3 -1
- package/dist/shared/site-token-claims.d.ts +18 -0
- package/dist/shared/site-token-configuration.d.ts +9 -0
- package/dist/shared/site-token-refresh.d.ts +7 -0
- package/dist/shared/site-token-state.d.ts +23 -0
- package/dist/shared/siteToken.d.ts +5 -39
- package/dist/shared/sonor-auth-state.d.ts +3 -0
- package/dist/shared/sonor-beacon.d.ts +13 -0
- package/dist/shared/sonor-fetch-runtime.d.ts +2 -0
- package/dist/shared/sonor-fetch.d.ts +7 -0
- package/dist/shared/sonorFetch.d.ts +4 -49
- package/dist/shared/version.d.ts +1 -1
- package/dist/signal/ReviewedSignalExperiment.d.ts +9 -0
- package/dist/signal/SignalBridge.d.ts +4 -4
- package/dist/signal/SignalCore.d.ts +2 -1
- package/dist/signal/SignalExperiment.d.ts +13 -5
- package/dist/signal/index.d.ts +3 -3
- package/dist/signal/index.js +4 -73
- package/dist/signal/store.d.ts +10 -7
- package/dist/signal/types.d.ts +4 -0
- package/dist/sitemap/index.d.ts +5 -5
- package/dist/sitemap/index.js +3 -3
- package/dist/sites/contract.d.ts +1 -1
- package/dist/sites/normalize.d.ts +1 -1
- package/dist/slots/ManagedLink.d.ts +2 -2
- package/dist/slots/ManagedList.d.ts +2 -2
- package/dist/slots/ManagedRichText.d.ts +1 -1
- package/dist/slots/ManagedSlot.d.ts +1 -1
- package/dist/slots/contract.d.ts +1 -1
- package/dist/slots/edit/locate.d.ts +1 -1
- package/dist/slots/index.d.ts +14 -14
- package/dist/slots/index.js +2 -2
- package/dist/slots/server-api.d.ts +1 -1
- package/dist/{chunk-FLOJUMFR.js → sonor-fetch-runtime-3PFGUXMF.js} +27 -36
- package/dist/sync/AddToCalendar.d.ts +1 -1
- package/dist/sync/BookingWidget.d.ts +1 -1
- package/dist/sync/MeetingFormatStep.d.ts +1 -1
- package/dist/sync/api.d.ts +2 -2
- package/dist/sync/booking-flow.d.ts +1 -1
- package/dist/sync/index.d.ts +3 -3
- package/dist/sync/index.js +6 -7
- package/dist/types.d.ts +6 -6
- package/dist/website/BlocksPopup.d.ts +1 -1
- package/dist/website/PopupBlocks.d.ts +1 -1
- package/dist/website/SiteDesignReporter.d.ts +2 -2
- package/dist/website/SitePopups.d.ts +1 -1
- package/dist/website/contract.d.ts +1 -1
- package/dist/website/cta-bar.d.ts +1 -1
- package/dist/website/cta-bar.js +4 -3
- package/dist/website/design.d.ts +2 -2
- package/dist/website/images/server.d.ts +1 -1
- package/dist/website/images-server.d.ts +1 -1
- package/dist/website/images.d.ts +1 -1
- package/dist/website/images.js +2 -4
- package/dist/website/index.d.ts +4 -4
- package/dist/website/index.js +5 -6
- package/dist/website/landing/server.d.ts +1 -1
- package/dist/website/landing/server.js +11 -6
- package/dist/website/landing-server.d.ts +1 -1
- package/dist/website/landing.d.ts +1 -1
- package/dist/website/landing.js +3 -2
- package/dist/website/popup-rules.d.ts +2 -2
- package/dist/website/popup-types.d.ts +1 -1
- package/dist/website/popups.d.ts +4 -4
- package/dist/website/popups.js +14 -8
- package/dist/website/slots/contract.d.ts +1 -1
- package/dist/website/slots-contract.d.ts +1 -1
- package/dist/website/slots.d.ts +2 -2
- package/dist/website/slots.js +2 -2
- package/dist/{writeLLMsTxt-4HHUAOA6.js → writeLLMsTxt-JUACXQKP.js} +2 -2
- package/docs.json +5 -0
- package/package.json +8 -2
- package/src/analytics/README.md +21 -0
- package/src/cta-bar/README.md +4 -0
- package/src/forms/README.md +29 -0
- package/src/landing/README.md +14 -0
- package/src/layout/README.md +3 -0
- package/src/og/README.md +28 -0
- package/src/resonance/README.md +273 -0
- package/src/runtime/README.md +6 -1
- package/src/signal/README.md +21 -0
- package/src/website/README.md +14 -2
- package/dist/AnalyticsProvider-7SBJ27SI.js +0 -13
- package/dist/ChatWidget-V46UBDOM.js +0 -20
- package/dist/ManagedForm-DDDVMKLJ.js +0 -19
- package/dist/SitePopups-VU2C3Z6B.js +0 -13
- package/dist/SitemapSync-C4H3HF3L.js +0 -9
- package/dist/chunk-5ROTTMBL.js +0 -19
- package/dist/chunk-5TM3WPCI.js +0 -7
- package/dist/chunk-7HW4TZB5.js +0 -148
- package/dist/chunk-IPQKQEWI.js +0 -52
- package/dist/chunk-LCDVPAMR.js +0 -24
- package/dist/chunk-SHAUX2MQ.js +0 -163
- /package/dist/{chunk-3MJNBOUO.js → chunk-2QPVU63T.js} +0 -0
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// src/shared/sonor-fetch.ts
|
|
2
|
+
async function sonorFetch(url, init = {}, options = {}) {
|
|
3
|
+
if (options.shouldSend && !options.shouldSend()) throw new Error("sonor-dispatch-withdrawn");
|
|
4
|
+
const { executeSonorFetch } = await import('./sonor-fetch-runtime-3PFGUXMF.js');
|
|
5
|
+
if (options.shouldSend && !options.shouldSend()) throw new Error("sonor-dispatch-withdrawn");
|
|
6
|
+
return executeSonorFetch(url, init, options);
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export { sonorFetch };
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { DEFAULT_WIDGET_Z_INDEX } from './chunk-27FISYK4.js';
|
|
3
|
-
import { resolveAnalyticsTarget } from './chunk-
|
|
3
|
+
import { resolveAnalyticsTarget } from './chunk-7643MCD2.js';
|
|
4
4
|
import { useState, useEffect } from 'react';
|
|
5
5
|
import ReactDOM from 'react-dom';
|
|
6
6
|
import dynamic from 'next/dynamic';
|
|
7
7
|
import { jsx } from 'react/jsx-runtime';
|
|
8
8
|
|
|
9
9
|
var LazyChatWidget = dynamic(
|
|
10
|
-
() => import('./ChatWidget-
|
|
10
|
+
() => import('./ChatWidget-EAATOFCT.js').then((m) => ({ default: m.ChatWidget })),
|
|
11
11
|
{ ssr: false }
|
|
12
12
|
);
|
|
13
13
|
function SiteChat(props) {
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { advertisingPurposesPermitted } from './chunk-KMNHNCVG.js';
|
|
2
|
+
import { resonanceControllerState } from './chunk-MOACHHOJ.js';
|
|
3
|
+
import { analyticsPurposePermitted, measurementPolicySnapshot } from './chunk-FRY6PBT6.js';
|
|
4
|
+
|
|
5
|
+
// src/resonance/consent-adapter.ts
|
|
6
|
+
var makeStore = () => ({ adapter: null, listeners: /* @__PURE__ */ new Set(), registrations: 0 });
|
|
7
|
+
var store = typeof window === "undefined" ? makeStore() : window.__SONOR_RESONANCE_CMP_V1__ ?? (window.__SONOR_RESONANCE_CMP_V1__ = makeStore());
|
|
8
|
+
var listeners = store.listeners;
|
|
9
|
+
var getConsentAdapter = () => store.adapter;
|
|
10
|
+
var subscribeConsentAdapter = (listener) => {
|
|
11
|
+
listeners.add(listener);
|
|
12
|
+
return () => {
|
|
13
|
+
listeners.delete(listener);
|
|
14
|
+
};
|
|
15
|
+
};
|
|
16
|
+
function registerResonanceConsentAdapter(next) {
|
|
17
|
+
if (store.adapter && store.adapter !== next) throw new Error("A maintained consent adapter is already registered");
|
|
18
|
+
const changed = store.adapter !== next;
|
|
19
|
+
store.adapter = next;
|
|
20
|
+
store.registrations++;
|
|
21
|
+
if (changed) for (const listener of listeners) listener();
|
|
22
|
+
let active = true;
|
|
23
|
+
return () => {
|
|
24
|
+
if (!active || store.adapter !== next) return;
|
|
25
|
+
active = false;
|
|
26
|
+
if (--store.registrations > 0) return;
|
|
27
|
+
store.adapter = null;
|
|
28
|
+
for (const listener of listeners) listener();
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
// src/resonance/bridge.ts
|
|
33
|
+
function getResonanceMeasurementStatus() {
|
|
34
|
+
return {
|
|
35
|
+
state: resonanceControllerState.controller?.status.state ?? "unknown",
|
|
36
|
+
reason: resonanceControllerState.controller?.status.reason ?? null,
|
|
37
|
+
policy: measurementPolicySnapshot().policy,
|
|
38
|
+
analyticsPermitted: analyticsPurposePermitted(),
|
|
39
|
+
advertisingPermitted: advertisingPurposesPermitted(),
|
|
40
|
+
providerBlockers: [...resonanceControllerState.blockers, ...resonanceControllerState.registrationConflict ? ["duplicate_runtime_installation"] : []]
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
function setProviderBlockers(next) {
|
|
44
|
+
resonanceControllerState.blockers = [...next];
|
|
45
|
+
}
|
|
46
|
+
function registerResonanceController(next) {
|
|
47
|
+
if (resonanceControllerState.controller && resonanceControllerState.controller !== next) {
|
|
48
|
+
resonanceControllerState.registrationConflict = true;
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
resonanceControllerState.controller = next;
|
|
52
|
+
return () => {
|
|
53
|
+
if (resonanceControllerState.controller === next) {
|
|
54
|
+
resonanceControllerState.controller = null;
|
|
55
|
+
resonanceControllerState.blockers = [];
|
|
56
|
+
resonanceControllerState.registrationConflict = false;
|
|
57
|
+
}
|
|
58
|
+
};
|
|
59
|
+
}
|
|
60
|
+
function recordResonanceExposure(exposure) {
|
|
61
|
+
const active = resonanceControllerState.controller;
|
|
62
|
+
if (active) void active.exposure(exposure).catch(() => {
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
export { getConsentAdapter, getResonanceMeasurementStatus, recordResonanceExposure, registerResonanceConsentAdapter, registerResonanceController, setProviderBlockers, subscribeConsentAdapter };
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
'use client';
|
|
2
2
|
import { sanitizeFleetVersion, buildFleetHeartbeatPayload } from './chunk-ZTZQPYP6.js';
|
|
3
3
|
import { useDeferredActivation } from './chunk-YC7ELZS3.js';
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
6
|
-
import {
|
|
4
|
+
import { SITE_KIT_VERSION } from './chunk-DXE6SXWW.js';
|
|
5
|
+
import { resolveAnalyticsTarget } from './chunk-7643MCD2.js';
|
|
6
|
+
import { sonorFetch } from './chunk-VXCUXHZO.js';
|
|
7
7
|
import { useRef, useEffect } from 'react';
|
|
8
8
|
|
|
9
9
|
// src/fleet/heartbeat.ts
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { writeLLMsTxtToPublic } from './chunk-
|
|
1
|
+
import { writeLLMsTxtToPublic } from './chunk-QLJ2SC3T.js';
|
|
2
2
|
import { getSiteConfig } from './chunk-Z22QVHT4.js';
|
|
3
3
|
import { buildFetch } from './chunk-UAYAJPEP.js';
|
|
4
4
|
import { findAppDirForDiscovery } from './chunk-ZEGVKVD5.js';
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { readAnalyticsIdentity } from './chunk-
|
|
2
|
-
import { sonorFetch } from './chunk-
|
|
1
|
+
import { readAnalyticsIdentity } from './chunk-PVY7X5UR.js';
|
|
2
|
+
import { sonorFetch } from './chunk-VXCUXHZO.js';
|
|
3
3
|
import { getClientApiConfig } from './chunk-W7OPEMGJ.js';
|
|
4
4
|
|
|
5
5
|
// src/sync/api.ts
|
package/dist/client/index.d.ts
CHANGED
|
@@ -5,11 +5,11 @@
|
|
|
5
5
|
* own tiny subpath so importing a utility never drags a feature module into
|
|
6
6
|
* the bundle.
|
|
7
7
|
*/
|
|
8
|
-
export { useDeferredActivation } from
|
|
9
|
-
export { VisualViewportGap, useVisualViewportGap, VISUAL_VIEWPORT_GAP_PROPERTY, } from
|
|
10
|
-
export { SiteKitCredential } from
|
|
11
|
-
export type { SiteKitCredentialProps } from
|
|
12
|
-
export { useSiteKitIdentity, getOrCreateVisitorId, getOrCreateSessionId, } from
|
|
13
|
-
export type { SiteKitIdentity } from
|
|
14
|
-
export { trackEvent, trackConversion } from
|
|
15
|
-
export type { TrackEventOptions, TrackConversionOptions } from
|
|
8
|
+
export { useDeferredActivation } from "../shared/defer.js";
|
|
9
|
+
export { VisualViewportGap, useVisualViewportGap, VISUAL_VIEWPORT_GAP_PROPERTY, } from "../shared/visual-viewport-gap.js";
|
|
10
|
+
export { SiteKitCredential } from "./SiteKitCredential.js";
|
|
11
|
+
export type { SiteKitCredentialProps } from "./SiteKitCredential.js";
|
|
12
|
+
export { useSiteKitIdentity, getOrCreateVisitorId, getOrCreateSessionId, } from "../shared/identity.js";
|
|
13
|
+
export type { SiteKitIdentity } from "../shared/identity.js";
|
|
14
|
+
export { trackEvent, trackConversion } from "../analytics/dispatch.js";
|
|
15
|
+
export type { TrackEventOptions, TrackConversionOptions } from "../analytics/types.js";
|
package/dist/client/index.js
CHANGED
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
'use client';
|
|
2
|
-
export { SiteKitCredential } from '../chunk-
|
|
3
|
-
import '../chunk-
|
|
2
|
+
export { SiteKitCredential } from '../chunk-OEOSR5EG.js';
|
|
3
|
+
import '../chunk-2LBKIE2K.js';
|
|
4
|
+
import '../chunk-TPHOIE4I.js';
|
|
4
5
|
export { VISUAL_VIEWPORT_GAP_PROPERTY, VisualViewportGap, useVisualViewportGap } from '../chunk-6T6CQVNL.js';
|
|
5
6
|
export { useDeferredActivation } from '../chunk-YC7ELZS3.js';
|
|
6
7
|
import '../chunk-FESKKJAS.js';
|
|
7
|
-
|
|
8
|
-
export {
|
|
9
|
-
|
|
8
|
+
export { trackConversion, trackEvent } from '../chunk-AG2RDHYZ.js';
|
|
9
|
+
export { getOrCreateSessionId, getOrCreateVisitorId, useSiteKitIdentity } from '../chunk-JT7GHHMV.js';
|
|
10
|
+
import '../chunk-D4M5K6JN.js';
|
|
10
11
|
import '../chunk-GJWI74ZZ.js';
|
|
11
|
-
import '../chunk-
|
|
12
|
-
import '../chunk-
|
|
13
|
-
import '../chunk-
|
|
12
|
+
import '../chunk-5IVD6G77.js';
|
|
13
|
+
import '../chunk-A4CC4ZG3.js';
|
|
14
|
+
import '../chunk-FRY6PBT6.js';
|
|
14
15
|
import '../chunk-PKBMQBKP.js';
|
package/dist/config/index.d.ts
CHANGED
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* })
|
|
28
28
|
* ```
|
|
29
29
|
*/
|
|
30
|
-
import type { SecurityHeadersConfig } from
|
|
30
|
+
import type { SecurityHeadersConfig } from "../proxy/securityHeaders.js";
|
|
31
31
|
type NextConfig = Record<string, unknown>;
|
|
32
32
|
export interface SiteKitNextConfig {
|
|
33
33
|
/** Additional image domains for next/image optimization */
|
|
@@ -85,6 +85,14 @@ export declare const BROADCAST_STYLES: readonly ['glass', 'editorial', 'poster',
|
|
|
85
85
|
export type BroadcastStyleId = (typeof BROADCAST_STYLES)[number];
|
|
86
86
|
export declare const DEFAULT_BROADCAST_STYLE: BroadcastStyleId;
|
|
87
87
|
export declare const isBroadcastStyleId: (value: unknown) => value is BroadcastStyleId;
|
|
88
|
+
/** Explicit per-review photo presentation; absence keeps the existing automatic layout. */
|
|
89
|
+
export declare const REVIEW_PHOTO_PRESENTATIONS: readonly ['background'];
|
|
90
|
+
export type ReviewPhotoPresentation = (typeof REVIEW_PHOTO_PRESENTATIONS)[number];
|
|
91
|
+
/**
|
|
92
|
+
* A supported explicit photo presentation. Optional input boundaries handle
|
|
93
|
+
* omission (preserve) and null (clear) separately; neither is an explicit value.
|
|
94
|
+
*/
|
|
95
|
+
export declare const isReviewPhotoPresentation: (value: unknown) => value is ReviewPhotoPresentation;
|
|
88
96
|
/**
|
|
89
97
|
* The review compositions Broadcast draws: `signature` (photo up top, the
|
|
90
98
|
* quote low) and `frame` (centered). Order matters: a review whose v1 draw
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a rep's three call outcomes do to a prospect. Single source of truth for
|
|
3
|
+
* the Sales Mode disposition: the Sonor API applies it when a rep taps an
|
|
4
|
+
* outcome, the dashboard shows the same three buttons and reasons, and the
|
|
5
|
+
* sales extension stops guessing at 'contacted' when a number is dialed. One
|
|
6
|
+
* map, so the three can't disagree about what "negative" moves.
|
|
7
|
+
*
|
|
8
|
+
* positive a connected call that went well. The contact is `contacted`,
|
|
9
|
+
* the company is `contacted`, today's reminder is done and the
|
|
10
|
+
* prospect's drip stops, since they're now in a conversation.
|
|
11
|
+
* negative a connected call that ended the lead. The contact is `lost`
|
|
12
|
+
* (a reason is required), the company is `not_a_fit`, today's
|
|
13
|
+
* reminder is done. Only "asked not to call" suppresses outreach.
|
|
14
|
+
* voicemail nobody picked up. Nothing about the contact or company changes,
|
|
15
|
+
* because a voicemail isn't a conversation, and today's reminder
|
|
16
|
+
* moves to the next business day.
|
|
17
|
+
*
|
|
18
|
+
* The contract names the moves; the caller makes them. Which stage key
|
|
19
|
+
* `contacted` or `lost` is on a given project, which instant "the next business
|
|
20
|
+
* day" is in the project's time zone, and how a suppression row is written all
|
|
21
|
+
* stay with the Sonor API. A stage the rep picks by hand afterwards (qualified,
|
|
22
|
+
* say) is a separate move that no disposition makes.
|
|
23
|
+
*
|
|
24
|
+
* Pure data and a few small functions, no dependencies. The wire values (the
|
|
25
|
+
* three dispositions, the five reasons) are stored and sent, so they never
|
|
26
|
+
* change; a different map is a new CRM_DISPOSITION_CONTRACT_VERSION.
|
|
27
|
+
*/
|
|
28
|
+
/** Bumped when a disposition's transitions change incompatibly. */
|
|
29
|
+
export declare const CRM_DISPOSITION_CONTRACT_VERSION = 1;
|
|
30
|
+
/** The three words a rep taps after a call, in button order. */
|
|
31
|
+
export declare const SALES_DISPOSITIONS: readonly ['positive', 'negative', 'voicemail'];
|
|
32
|
+
export type SalesDisposition = (typeof SALES_DISPOSITIONS)[number];
|
|
33
|
+
/** What each button says. */
|
|
34
|
+
export declare const SALES_DISPOSITION_LABELS: Record<SalesDisposition, string>;
|
|
35
|
+
/** The one-tap reasons a negative outcome must carry, in the order they're offered. */
|
|
36
|
+
export declare const NEGATIVE_REASONS: readonly ['not_a_fit', 'no_budget', 'has_agency', 'wrong_number', 'do_not_call'];
|
|
37
|
+
export type NegativeReason = (typeof NEGATIVE_REASONS)[number];
|
|
38
|
+
/** What each reason says on its button. `do_not_call` is the one that suppresses outreach. */
|
|
39
|
+
export declare const NEGATIVE_REASON_LABELS: Record<NegativeReason, string>;
|
|
40
|
+
/** Whether a value is one of the three dispositions, spelled exactly. */
|
|
41
|
+
export declare function isSalesDisposition(value: unknown): value is SalesDisposition;
|
|
42
|
+
/** Whether a value is one of the five negative reasons, spelled exactly. */
|
|
43
|
+
export declare function isNegativeReason(value: unknown): value is NegativeReason;
|
|
44
|
+
/** What a disposition changes. A null leaves that thing as it is. */
|
|
45
|
+
export interface DispositionTransitions {
|
|
46
|
+
/** The call row's `outcome_type`. */
|
|
47
|
+
outcomeType: 'connected' | 'left_voicemail';
|
|
48
|
+
/** The call row's `sentiment`. */
|
|
49
|
+
sentiment: 'positive' | 'negative' | null;
|
|
50
|
+
/** The contact's stage, by meaning rather than by a project's stage key. */
|
|
51
|
+
contactStage: 'contacted' | 'lost' | null;
|
|
52
|
+
/** The target company's `status`. */
|
|
53
|
+
companyStatus: 'contacted' | 'not_a_fit' | null;
|
|
54
|
+
/**
|
|
55
|
+
* What happens to the prospect's reminder due today: finish it, or push it to
|
|
56
|
+
* 09:00 on the project's next business day. No disposition leaves it alone
|
|
57
|
+
* today; a caller still handles null so that never has to be a breaking change.
|
|
58
|
+
*/
|
|
59
|
+
reminder: 'complete' | 'snooze_next_business_day' | null;
|
|
60
|
+
/** Stop the prospect's enrolled drip or sequence. */
|
|
61
|
+
stopsOutreach: boolean;
|
|
62
|
+
/**
|
|
63
|
+
* Write an outreach suppression for the prospect. That blocks every send on
|
|
64
|
+
* its own, so it isn't also a `stopsOutreach`. Only a negative outcome whose
|
|
65
|
+
* reason is `do_not_call` suppresses.
|
|
66
|
+
*/
|
|
67
|
+
suppresses: boolean;
|
|
68
|
+
}
|
|
69
|
+
export interface DispositionOptions {
|
|
70
|
+
/** The negative outcome's reason. Read for a negative outcome only. */
|
|
71
|
+
reason?: NegativeReason | null;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* What a disposition changes. Returns a fresh object each call, so a caller can
|
|
75
|
+
* adjust its copy without touching the next caller's. Throws a RangeError for a
|
|
76
|
+
* value that isn't a disposition: check an untrusted one with
|
|
77
|
+
* `dispositionProblem` first.
|
|
78
|
+
*/
|
|
79
|
+
export declare function dispositionTransitions(disposition: SalesDisposition, opts?: DispositionOptions): DispositionTransitions;
|
|
80
|
+
/**
|
|
81
|
+
* Why a disposition and its reason can't be applied, in one sentence, or null
|
|
82
|
+
* when they can. A negative outcome needs a reason and no other outcome takes
|
|
83
|
+
* one. A null or undefined reason means none was given.
|
|
84
|
+
*/
|
|
85
|
+
export declare function dispositionProblem(disposition: unknown, opts?: {
|
|
86
|
+
reason?: unknown;
|
|
87
|
+
}): string | null;
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* What a job title says about a person's part in a buying decision. Single
|
|
3
|
+
* source of truth for the site-people scan: the Sonor API's deterministic scan
|
|
4
|
+
* (JSON-LD persons) and Signal's site-people scout both read this map, so the
|
|
5
|
+
* same person can't be an influencer on one side and an owner on the other.
|
|
6
|
+
*
|
|
7
|
+
* The role is never a model's opinion. A model finds the people; the title the
|
|
8
|
+
* page gives them decides the role, by the rules below, in this order (first
|
|
9
|
+
* match wins):
|
|
10
|
+
*
|
|
11
|
+
* gatekeeper someone who works for a person, whatever that person's
|
|
12
|
+
* title is: "Executive Assistant to the President",
|
|
13
|
+
* "Receptionist"
|
|
14
|
+
* decision_maker a vice president, matched before the president rule can
|
|
15
|
+
* claim the word
|
|
16
|
+
* owner owner, founder, president, CEO, a managing, senior, name
|
|
17
|
+
* or equity partner, a lone "Partner", and "Principal"
|
|
18
|
+
* unless it names a job ("Principal Engineer")
|
|
19
|
+
* decision_maker a chief of something that isn't the CEO, a general
|
|
20
|
+
* manager (or GM), a director, an operations or project
|
|
21
|
+
* manager, an estimator, a superintendent
|
|
22
|
+
* gatekeeper an office manager, an administrator
|
|
23
|
+
* influencer marketing, HR, recruiting, sales, business development
|
|
24
|
+
* gatekeeper a coordinator, last of all
|
|
25
|
+
*
|
|
26
|
+
* So "Vice President of Sales" is a decision maker (not an owner because it
|
|
27
|
+
* says president, not an influencer because it says sales), "Marketing
|
|
28
|
+
* Director" is a decision maker (director beats marketing) and "Marketing
|
|
29
|
+
* Coordinator" is an influencer. A title that names none of these
|
|
30
|
+
* ("Technician", a bare "Manager") has no role: no guess.
|
|
31
|
+
*
|
|
32
|
+
* Pure data and one small function, no dependencies. The four role values are
|
|
33
|
+
* stored and sent, so they never change.
|
|
34
|
+
*/
|
|
35
|
+
/** The four parts a person can play in a buying decision, strongest first. */
|
|
36
|
+
export declare const DECISION_ROLES: readonly ['owner', 'decision_maker', 'influencer', 'gatekeeper'];
|
|
37
|
+
export type DecisionRole = (typeof DECISION_ROLES)[number];
|
|
38
|
+
/** The buying role a job title says, or null when it says none ("Technician", "Manager", no title). */
|
|
39
|
+
export declare function decisionRoleForTitle(title: string | null | undefined): DecisionRole | null;
|
|
@@ -4,5 +4,5 @@
|
|
|
4
4
|
* tsup config, its package.json check and the boundary test, so a new
|
|
5
5
|
* contract is added in one place.
|
|
6
6
|
*/
|
|
7
|
-
export declare const CONTRACT_ENTRIES: readonly ['forms', 'llms', 'slots', 'slot-content', 'site-cache', 'site-edit', 'website', 'color', 'fleet', 'sites', 'seo-pages', 'seo-meta', 'portfolio', 'voice', 'proposal-sitemap', 'error-page', 'schema-placeholders', 'sentences', 'knowledge', 'editorial-media', 'business-claims', 'outreach', 'page-titles', 'broadcast-layouts', 'publication-branding', 'public-url-host', 'inbox', 'funnels'];
|
|
7
|
+
export declare const CONTRACT_ENTRIES: readonly ['forms', 'llms', 'slots', 'slot-content', 'site-cache', 'site-edit', 'website', 'color', 'fleet', 'sites', 'seo-pages', 'seo-meta', 'portfolio', 'voice', 'proposal-sitemap', 'error-page', 'schema-placeholders', 'sentences', 'knowledge', 'editorial-media', 'business-claims', 'outreach', 'page-titles', 'broadcast-layouts', 'publication-branding', 'public-url-host', 'inbox', 'funnels', 'crm-disposition', 'decision-roles', 'resonance', 'resonance-constants', 'signal-experiments'];
|
|
8
8
|
export type ContractEntry = (typeof CONTRACT_ENTRIES)[number];
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { type PublicationColors } from
|
|
2
|
-
export { normalizeCampaignSlug } from
|
|
1
|
+
import { type PublicationColors } from "./publication-branding.js";
|
|
2
|
+
export { normalizeCampaignSlug } from "./campaign-normalize.js";
|
|
3
3
|
export declare const FUNNEL_SCHEMA_VERSION: 1;
|
|
4
4
|
export declare const MANAGED_FUNNEL_PATH_PREFIX: '/f';
|
|
5
5
|
export declare const FUNNEL_TEMPLATES: readonly ['newsletter', 'requested_guide', 'inquiry'];
|
|
@@ -93,6 +93,8 @@ export interface FunnelDefinition {
|
|
|
93
93
|
body: FunnelBodyBlock[];
|
|
94
94
|
formId: string;
|
|
95
95
|
offerAssetId?: string | null;
|
|
96
|
+
/** Authored selection and copy only; native owners verify linkage and derive the published manifest. */
|
|
97
|
+
experiment?: FunnelExperimentAuthoring;
|
|
96
98
|
};
|
|
97
99
|
permission: {
|
|
98
100
|
mode: 'requested_only' | 'marketing_opt_in';
|
|
@@ -152,6 +154,41 @@ export interface PublishedFunnelPage {
|
|
|
152
154
|
tracking: {
|
|
153
155
|
campaignSlug: string;
|
|
154
156
|
};
|
|
157
|
+
/** Optional reviewed content only. Requires a compatible installed renderer;
|
|
158
|
+
* older strict page parsers reject this field. No assignment/publication grant. */
|
|
159
|
+
experimentContent?: FunnelExperimentContentManifest;
|
|
160
|
+
}
|
|
161
|
+
/** Optional saved author input. IDs/revisions select an experiment; they grant no authority.
|
|
162
|
+
* Form, offer, brand, goal and page identity remain fixed on the definition. */
|
|
163
|
+
export interface FunnelExperimentAuthoring {
|
|
164
|
+
experimentId: string;
|
|
165
|
+
experimentRevision: number;
|
|
166
|
+
controlVariantKey: string;
|
|
167
|
+
variants: Array<{
|
|
168
|
+
variantKey: string;
|
|
169
|
+
content: {
|
|
170
|
+
headline: string;
|
|
171
|
+
body: FunnelBodyBlock[];
|
|
172
|
+
};
|
|
173
|
+
}>;
|
|
174
|
+
}
|
|
175
|
+
export interface FunnelExperimentContentManifest {
|
|
176
|
+
schemaVersion: 1;
|
|
177
|
+
kind: 'funnel_experiment_content_v1';
|
|
178
|
+
experimentId: string;
|
|
179
|
+
experimentRevision: number;
|
|
180
|
+
goalRevision: string;
|
|
181
|
+
controlVariantKey: string;
|
|
182
|
+
/** contentDigest covers effective FULL content, including the fixed base offer.
|
|
183
|
+
* Native funnelHash owns canonical hashing; this parser checks digest shape only. */
|
|
184
|
+
variants: Array<{
|
|
185
|
+
variantKey: string;
|
|
186
|
+
content: {
|
|
187
|
+
headline: string;
|
|
188
|
+
body: FunnelBodyBlock[];
|
|
189
|
+
};
|
|
190
|
+
contentDigest: string;
|
|
191
|
+
}>;
|
|
155
192
|
}
|
|
156
193
|
export interface FunnelOperationReceipt {
|
|
157
194
|
operationId: string;
|
|
@@ -276,6 +313,42 @@ export declare const FUNNEL_DEFINITION_JSON_SCHEMA: {
|
|
|
276
313
|
readonly oneOf?: readonly Shape[];
|
|
277
314
|
readonly $schema: 'http://json-schema.org/draft-07/schema#';
|
|
278
315
|
};
|
|
316
|
+
export declare const FUNNEL_EXPERIMENT_AUTHORING_JSON_SCHEMA: {
|
|
317
|
+
readonly type?: 'object' | 'array' | 'string' | 'integer' | 'boolean' | 'null';
|
|
318
|
+
readonly properties?: Record<string, Shape>;
|
|
319
|
+
readonly required?: readonly string[];
|
|
320
|
+
readonly additionalProperties?: false;
|
|
321
|
+
readonly items?: Shape;
|
|
322
|
+
readonly minItems?: number;
|
|
323
|
+
readonly maxItems?: number;
|
|
324
|
+
readonly minLength?: number;
|
|
325
|
+
readonly maxLength?: number;
|
|
326
|
+
readonly pattern?: string;
|
|
327
|
+
readonly minimum?: number;
|
|
328
|
+
readonly maximum?: number;
|
|
329
|
+
readonly enum?: readonly unknown[];
|
|
330
|
+
readonly const?: unknown;
|
|
331
|
+
readonly oneOf?: readonly Shape[];
|
|
332
|
+
readonly $schema: 'http://json-schema.org/draft-07/schema#';
|
|
333
|
+
};
|
|
334
|
+
export declare const FUNNEL_EXPERIMENT_CONTENT_JSON_SCHEMA: {
|
|
335
|
+
readonly type?: 'object' | 'array' | 'string' | 'integer' | 'boolean' | 'null';
|
|
336
|
+
readonly properties?: Record<string, Shape>;
|
|
337
|
+
readonly required?: readonly string[];
|
|
338
|
+
readonly additionalProperties?: false;
|
|
339
|
+
readonly items?: Shape;
|
|
340
|
+
readonly minItems?: number;
|
|
341
|
+
readonly maxItems?: number;
|
|
342
|
+
readonly minLength?: number;
|
|
343
|
+
readonly maxLength?: number;
|
|
344
|
+
readonly pattern?: string;
|
|
345
|
+
readonly minimum?: number;
|
|
346
|
+
readonly maximum?: number;
|
|
347
|
+
readonly enum?: readonly unknown[];
|
|
348
|
+
readonly const?: unknown;
|
|
349
|
+
readonly oneOf?: readonly Shape[];
|
|
350
|
+
readonly $schema: 'http://json-schema.org/draft-07/schema#';
|
|
351
|
+
};
|
|
279
352
|
export declare const PUBLISHED_FUNNEL_PAGE_JSON_SCHEMA: {
|
|
280
353
|
readonly type?: 'object' | 'array' | 'string' | 'integer' | 'boolean' | 'null';
|
|
281
354
|
readonly properties?: Record<string, Shape>;
|
|
@@ -306,6 +379,16 @@ export declare function isSafeFunnelPublicUrl(value: string): boolean;
|
|
|
306
379
|
export declare function managedFunnelPath(value: string): string;
|
|
307
380
|
export declare function parseFunnelDefinition(value: unknown): FunnelDefinition;
|
|
308
381
|
export declare function parsePublishedFunnelPage(value: unknown): PublishedFunnelPage;
|
|
382
|
+
/** Complete copy shape only; native project/site/campaign ownership, current
|
|
383
|
+
* experiment revision/keys/control and goal/hash derivation are still required. */
|
|
384
|
+
export declare function parseFunnelExperimentAuthoring(value: unknown): FunnelExperimentAuthoring;
|
|
385
|
+
/** Shape/content checks only. Native owners verify the complete original Signal
|
|
386
|
+
* variant set and hash each effective FULL content with existing funnelHash. */
|
|
387
|
+
export declare function parseFunnelExperimentContent(value: unknown): FunnelExperimentContentManifest;
|
|
388
|
+
/** One effective-content composition for native hashing and existing rendering.
|
|
389
|
+
* Offer and all page identity/form/brand/tracking fields stay on the base page;
|
|
390
|
+
* a client-provided digest or key grants no native permission. */
|
|
391
|
+
export declare function resolveFunnelExperimentContent(value: unknown, variantKey: string): PublishedFunnelPage['content'];
|
|
309
392
|
export declare function parseFunnelLaunchArgs(value: unknown): FunnelLaunchArgs;
|
|
310
393
|
export declare function parseFunnelLifecycleArgs(value: unknown, operation?: 'pause' | 'resume' | 'rollback'): FunnelLifecycleArgs;
|
|
311
394
|
/** Apply presentation-only overrides to an already resolved canonical brand. Null means inherit. */
|
|
@@ -16,7 +16,7 @@
|
|
|
16
16
|
* must carry, and which numbers may headline. The Sonor API applies the same
|
|
17
17
|
* rules.
|
|
18
18
|
*/
|
|
19
|
-
export { FRAME_READY_MESSAGE, isFrameReadyMessage, type FrameReadyMessage } from
|
|
19
|
+
export { FRAME_READY_MESSAGE, isFrameReadyMessage, type FrameReadyMessage } from "./frame-ready.js";
|
|
20
20
|
/** Bump on breaking changes to the collapse policy. */
|
|
21
21
|
export declare const PORTFOLIO_CONTRACT_VERSION: 1;
|
|
22
22
|
/** The four beats, in reading order. */
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { type BroadcastStyleId, type PublicationCardLayout } from
|
|
2
|
-
import { type PublicationCharter } from
|
|
3
|
-
export { PUBLICATION_CHARTER_FIELDS, parsePublicationCharter, parseSiteCharters, publicationCharterContext, publicationCharterFor, type PublicationCharter, } from
|
|
1
|
+
import { type BroadcastStyleId, type PublicationCardLayout } from "./broadcast-layouts.js";
|
|
2
|
+
import { type PublicationCharter } from "./publication-charter.js";
|
|
3
|
+
export { PUBLICATION_CHARTER_FIELDS, parsePublicationCharter, parseSiteCharters, publicationCharterContext, publicationCharterFor, type PublicationCharter, } from "./publication-charter.js";
|
|
4
4
|
/** The stored profile's version. A breaking change to the shape bumps it. */
|
|
5
5
|
export declare const PUBLICATION_BRANDING_VERSION: 1;
|
|
6
6
|
/** Where a publication appears. `social` overrides every social network; each network can override again. */
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Single source of truth for inert Resonance wire literals; safe in browser entry graphs. */
|
|
2
|
+
export declare const RESONANCE_ATTRIBUTION_MODEL: 'first_party_last_touch_marker_v1';
|
|
3
|
+
export declare const RESONANCE_SOURCE_MARKER_PARAMETER: 'sonor_source';
|
|
4
|
+
export declare const RESONANCE_SUBJECT_HEADER: 'X-Sonor-Resonance-Subject';
|