@sonordev/site-kit 3.7.0 → 3.8.1
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/agent-manifest.json +1 -1
- package/dist/AnalyticsProvider-DSQNTSJZ.mjs +10 -0
- package/dist/{AnalyticsProvider-OIRXQE7O.mjs.map → AnalyticsProvider-DSQNTSJZ.mjs.map} +1 -1
- package/dist/AnalyticsProvider-MFNXZGXM.js +31 -0
- package/dist/{AnalyticsProvider-JWXDXOIR.js.map → AnalyticsProvider-MFNXZGXM.js.map} +1 -1
- package/dist/ChatWidget-PDCWVGLH.js +19 -0
- package/dist/{ChatWidget-K2BFJXGB.js.map → ChatWidget-PDCWVGLH.js.map} +1 -1
- package/dist/ChatWidget-RNJU2KCF.mjs +10 -0
- package/dist/{ChatWidget-FFCUDCT6.mjs.map → ChatWidget-RNJU2KCF.mjs.map} +1 -1
- package/dist/EngageWidget-EOGLNZ56.mjs +9 -0
- package/dist/{EngageWidget-QKRXI3NB.mjs.map → EngageWidget-EOGLNZ56.mjs.map} +1 -1
- package/dist/EngageWidget-IMKPA7YF.js +18 -0
- package/dist/{EngageWidget-XRXXVVUK.js.map → EngageWidget-IMKPA7YF.js.map} +1 -1
- package/dist/{SignalCore-BXCBV6GR.js → SignalCore-CTOFELJ7.js} +11 -11
- package/dist/{SignalCore-BXCBV6GR.js.map → SignalCore-CTOFELJ7.js.map} +1 -1
- package/dist/{SignalCore-6MUAX656.mjs → SignalCore-JTSREHTT.mjs} +5 -5
- package/dist/{SignalCore-6MUAX656.mjs.map → SignalCore-JTSREHTT.mjs.map} +1 -1
- package/dist/SitemapSync-3C32UQZB.mjs +8 -0
- package/dist/{SitemapSync-KS7KTJBK.mjs.map → SitemapSync-3C32UQZB.mjs.map} +1 -1
- package/dist/SitemapSync-J3QWNCMP.js +17 -0
- package/dist/{SitemapSync-WEZHTSFL.js.map → SitemapSync-J3QWNCMP.js.map} +1 -1
- package/dist/analytics/index.js +12 -12
- package/dist/analytics/index.mjs +5 -5
- package/dist/blog/server-ui.js +6 -6
- package/dist/blog/server-ui.js.map +1 -1
- package/dist/blog/server-ui.mjs +5 -5
- package/dist/blog/server-ui.mjs.map +1 -1
- package/dist/blog/server.d.mts +20 -1
- package/dist/blog/server.d.ts +20 -1
- package/dist/blog/server.js +43 -39
- package/dist/blog/server.mjs +1 -1
- package/dist/{chunk-HWJF7WMI.js → chunk-4WW7DHZS.js} +14 -14
- package/dist/{chunk-HWJF7WMI.js.map → chunk-4WW7DHZS.js.map} +1 -1
- package/dist/{chunk-4NUHZ24M.js → chunk-5LURTXJ3.js} +13 -13
- package/dist/{chunk-4NUHZ24M.js.map → chunk-5LURTXJ3.js.map} +1 -1
- package/dist/{chunk-2PQUCJJF.js → chunk-6UEZ6RJT.js} +5 -5
- package/dist/{chunk-2PQUCJJF.js.map → chunk-6UEZ6RJT.js.map} +1 -1
- package/dist/{chunk-LSWTMMKJ.mjs → chunk-75PY4H43.mjs} +3 -3
- package/dist/{chunk-LSWTMMKJ.mjs.map → chunk-75PY4H43.mjs.map} +1 -1
- package/dist/{chunk-3MYZS6PD.js → chunk-77CIIDE6.js} +15 -3
- package/dist/chunk-77CIIDE6.js.map +1 -0
- package/dist/{chunk-ZKAZGLHI.js → chunk-7CTKFXQ5.js} +9 -9
- package/dist/{chunk-ZKAZGLHI.js.map → chunk-7CTKFXQ5.js.map} +1 -1
- package/dist/{chunk-XOBW75J2.js → chunk-AL2O5QDB.js} +9 -9
- package/dist/{chunk-XOBW75J2.js.map → chunk-AL2O5QDB.js.map} +1 -1
- package/dist/{chunk-5Y5GCSH6.mjs → chunk-BJIJRBNA.mjs} +3 -3
- package/dist/{chunk-5Y5GCSH6.mjs.map → chunk-BJIJRBNA.mjs.map} +1 -1
- package/dist/{chunk-7UZV6JXD.js → chunk-C73RBN2O.js} +14 -14
- package/dist/{chunk-7UZV6JXD.js.map → chunk-C73RBN2O.js.map} +1 -1
- package/dist/{chunk-FP523A7G.mjs → chunk-CDW6LDLH.mjs} +3 -3
- package/dist/{chunk-FP523A7G.mjs.map → chunk-CDW6LDLH.mjs.map} +1 -1
- package/dist/{chunk-ON6WW7IE.js → chunk-CPO7FK36.js} +6 -6
- package/dist/{chunk-ON6WW7IE.js.map → chunk-CPO7FK36.js.map} +1 -1
- package/dist/{chunk-XREO3QRA.mjs → chunk-F5SDNDP6.mjs} +3 -3
- package/dist/{chunk-XREO3QRA.mjs.map → chunk-F5SDNDP6.mjs.map} +1 -1
- package/dist/{chunk-C3QMG4HS.js → chunk-GJMGQJI3.js} +15 -15
- package/dist/{chunk-C3QMG4HS.js.map → chunk-GJMGQJI3.js.map} +1 -1
- package/dist/{chunk-AKBGYQLC.js → chunk-GPXUJQFX.js} +15 -15
- package/dist/{chunk-AKBGYQLC.js.map → chunk-GPXUJQFX.js.map} +1 -1
- package/dist/{chunk-ATG4FJY6.js → chunk-H6AU3WKF.js} +35 -3
- package/dist/chunk-H6AU3WKF.js.map +1 -0
- package/dist/{chunk-NM7L2XKF.mjs → chunk-HJTAHRR3.mjs} +4 -4
- package/dist/{chunk-NM7L2XKF.mjs.map → chunk-HJTAHRR3.mjs.map} +1 -1
- package/dist/{chunk-R3CXRMP7.js → chunk-HNHZLRB6.js} +3 -3
- package/dist/{chunk-R3CXRMP7.js.map → chunk-HNHZLRB6.js.map} +1 -1
- package/dist/{chunk-AUBFDSTJ.js → chunk-ILCDV3MM.js} +8 -8
- package/dist/{chunk-AUBFDSTJ.js.map → chunk-ILCDV3MM.js.map} +1 -1
- package/dist/{chunk-TZTO5CDS.mjs → chunk-IVJLQJEP.mjs} +3 -3
- package/dist/{chunk-TZTO5CDS.mjs.map → chunk-IVJLQJEP.mjs.map} +1 -1
- package/dist/chunk-J4RBHTWC.js +8 -0
- package/dist/{chunk-SCMHZBTN.js.map → chunk-J4RBHTWC.js.map} +1 -1
- package/dist/{chunk-54ZC6LPR.mjs → chunk-J6MMNTYG.mjs} +3 -3
- package/dist/{chunk-54ZC6LPR.mjs.map → chunk-J6MMNTYG.mjs.map} +1 -1
- package/dist/{chunk-QPT5QX2W.js → chunk-KE3RJME2.js} +12 -12
- package/dist/{chunk-QPT5QX2W.js.map → chunk-KE3RJME2.js.map} +1 -1
- package/dist/{chunk-AJPPCSVW.mjs → chunk-LIFKPMXB.mjs} +3 -3
- package/dist/{chunk-AJPPCSVW.mjs.map → chunk-LIFKPMXB.mjs.map} +1 -1
- package/dist/chunk-M2SHY2FQ.mjs +6 -0
- package/dist/{chunk-2HH4VVJT.mjs.map → chunk-M2SHY2FQ.mjs.map} +1 -1
- package/dist/{chunk-LFFBDQM3.mjs → chunk-M3QFG3PA.mjs} +4 -4
- package/dist/{chunk-LFFBDQM3.mjs.map → chunk-M3QFG3PA.mjs.map} +1 -1
- package/dist/{chunk-UWL37MUR.mjs → chunk-NXFXKP7E.mjs} +3 -3
- package/dist/{chunk-UWL37MUR.mjs.map → chunk-NXFXKP7E.mjs.map} +1 -1
- package/dist/{chunk-6BIPAKL4.mjs → chunk-OVIDFJIK.mjs} +15 -4
- package/dist/chunk-OVIDFJIK.mjs.map +1 -0
- package/dist/{chunk-GUXB3QH7.mjs → chunk-PA7ENTUZ.mjs} +41 -9
- package/dist/chunk-PA7ENTUZ.mjs.map +1 -0
- package/dist/{chunk-H23ZT2I2.mjs → chunk-PENNTSJE.mjs} +35 -3
- package/dist/chunk-PENNTSJE.mjs.map +1 -0
- package/dist/{chunk-QAYCRXT4.mjs → chunk-PUZ6XJ2L.mjs} +3 -3
- package/dist/{chunk-QAYCRXT4.mjs.map → chunk-PUZ6XJ2L.mjs.map} +1 -1
- package/dist/{chunk-VZU2EHB6.js → chunk-QGNU2EDU.js} +4 -4
- package/dist/{chunk-VZU2EHB6.js.map → chunk-QGNU2EDU.js.map} +1 -1
- package/dist/{chunk-3K7WF6KB.mjs → chunk-QMBVVQSH.mjs} +8 -8
- package/dist/{chunk-3K7WF6KB.mjs.map → chunk-QMBVVQSH.mjs.map} +1 -1
- package/dist/{chunk-2CNKJMGT.mjs → chunk-SBRZLKE7.mjs} +3 -3
- package/dist/{chunk-2CNKJMGT.mjs.map → chunk-SBRZLKE7.mjs.map} +1 -1
- package/dist/{chunk-34IUDOBC.mjs → chunk-SP3MXF3A.mjs} +34 -5
- package/dist/chunk-SP3MXF3A.mjs.map +1 -0
- package/dist/{chunk-WQ64SU6E.js → chunk-SUWDZOPH.js} +4 -4
- package/dist/{chunk-WQ64SU6E.js.map → chunk-SUWDZOPH.js.map} +1 -1
- package/dist/{chunk-TQS2X5A3.js → chunk-TFU6J77X.js} +5 -5
- package/dist/{chunk-TQS2X5A3.js.map → chunk-TFU6J77X.js.map} +1 -1
- package/dist/{chunk-XAWB2HFQ.js → chunk-TMKLH6MY.js} +41 -8
- package/dist/chunk-TMKLH6MY.js.map +1 -0
- package/dist/{chunk-CDKWTLWF.mjs → chunk-TQYOQ7MH.mjs} +4 -4
- package/dist/{chunk-CDKWTLWF.mjs.map → chunk-TQYOQ7MH.mjs.map} +1 -1
- package/dist/{chunk-JFAAPREU.mjs → chunk-UGBL7GTN.mjs} +4 -4
- package/dist/{chunk-JFAAPREU.mjs.map → chunk-UGBL7GTN.mjs.map} +1 -1
- package/dist/{chunk-2EYHSGQ3.mjs → chunk-WM7U23R5.mjs} +3 -3
- package/dist/{chunk-2EYHSGQ3.mjs.map → chunk-WM7U23R5.mjs.map} +1 -1
- package/dist/{chunk-YE7KZQZ3.mjs → chunk-WXGBLUGC.mjs} +4 -4
- package/dist/{chunk-YE7KZQZ3.mjs.map → chunk-WXGBLUGC.mjs.map} +1 -1
- package/dist/{chunk-TA6KXHCY.js → chunk-X2DWUV5M.js} +7 -7
- package/dist/{chunk-TA6KXHCY.js.map → chunk-X2DWUV5M.js.map} +1 -1
- package/dist/{chunk-6T4NVCAT.js → chunk-XMBYDIV6.js} +40 -11
- package/dist/chunk-XMBYDIV6.js.map +1 -0
- package/dist/{chunk-GZHLVOW3.js → chunk-XMKZXFVX.js} +4 -4
- package/dist/{chunk-GZHLVOW3.js.map → chunk-XMKZXFVX.js.map} +1 -1
- package/dist/cli/index.js +2 -2
- package/dist/cli/index.mjs +1 -1
- package/dist/client/index.js +4 -4
- package/dist/client/index.mjs +3 -3
- package/dist/commerce/index.js +51 -51
- package/dist/commerce/index.mjs +6 -6
- package/dist/config/index.d.mts +1 -1
- package/dist/config/index.d.ts +1 -1
- package/dist/config/index.js +2 -2
- package/dist/config/index.mjs +1 -1
- package/dist/engage/index.js +9 -9
- package/dist/engage/index.mjs +6 -6
- package/dist/fleet/index.js +8 -8
- package/dist/fleet/index.mjs +4 -4
- package/dist/forms/index.js +97 -50
- package/dist/forms/index.js.map +1 -1
- package/dist/forms/index.mjs +89 -42
- package/dist/forms/index.mjs.map +1 -1
- package/dist/forms/styles.css +107 -2
- package/dist/images/index.js +11 -11
- package/dist/images/index.mjs +4 -4
- package/dist/index.js +64 -64
- package/dist/index.mjs +10 -10
- package/dist/layout/client.js +8 -8
- package/dist/layout/client.mjs +7 -7
- package/dist/layout/index.js +10 -10
- package/dist/layout/index.mjs +8 -8
- package/dist/llms/contract.js +9 -9
- package/dist/llms/contract.mjs +1 -1
- package/dist/llms/index.d.mts +131 -40
- package/dist/llms/index.d.ts +131 -40
- package/dist/llms/index.js +125 -21
- package/dist/llms/index.js.map +1 -1
- package/dist/llms/index.mjs +102 -4
- package/dist/llms/index.mjs.map +1 -1
- package/dist/maps/index.js +5 -5
- package/dist/maps/index.mjs +3 -3
- package/dist/middleware/index.d.mts +2 -1
- package/dist/middleware/index.d.ts +2 -1
- package/dist/middleware/index.js +6 -2
- package/dist/middleware/index.js.map +1 -1
- package/dist/middleware/index.mjs +2 -1
- package/dist/middleware/index.mjs.map +1 -1
- package/dist/securityHeaders-CwsFdDcJ.d.mts +49 -0
- package/dist/securityHeaders-CwsFdDcJ.d.ts +49 -0
- package/dist/seo/client.js +5 -5
- package/dist/seo/client.mjs +4 -4
- package/dist/seo/index.js +7 -7
- package/dist/seo/index.mjs +5 -5
- package/dist/server/index.js +3 -3
- package/dist/server/index.mjs +2 -2
- package/dist/signal/index.js +11 -11
- package/dist/signal/index.mjs +2 -2
- package/dist/sitemap/index.d.mts +8 -1
- package/dist/sitemap/index.d.ts +8 -1
- package/dist/sitemap/index.js +5 -4
- package/dist/sitemap/index.js.map +1 -1
- package/dist/sitemap/index.mjs +4 -3
- package/dist/sitemap/index.mjs.map +1 -1
- package/dist/sync/index.js +16 -16
- package/dist/sync/index.mjs +4 -4
- package/dist/{types-xcP_owwn.d.ts → writeLLMsTxt-BFaNr4re.d.ts} +53 -1
- package/dist/{types-DhCAWUmd.d.mts → writeLLMsTxt-SpMdyHQT.d.mts} +53 -1
- package/package.json +1 -1
- package/dist/AnalyticsProvider-JWXDXOIR.js +0 -31
- package/dist/AnalyticsProvider-OIRXQE7O.mjs +0 -10
- package/dist/ChatWidget-FFCUDCT6.mjs +0 -10
- package/dist/ChatWidget-K2BFJXGB.js +0 -19
- package/dist/EngageWidget-QKRXI3NB.mjs +0 -9
- package/dist/EngageWidget-XRXXVVUK.js +0 -18
- package/dist/SitemapSync-KS7KTJBK.mjs +0 -8
- package/dist/SitemapSync-WEZHTSFL.js +0 -17
- package/dist/chunk-2HH4VVJT.mjs +0 -6
- package/dist/chunk-34IUDOBC.mjs.map +0 -1
- package/dist/chunk-3MYZS6PD.js.map +0 -1
- package/dist/chunk-6BIPAKL4.mjs.map +0 -1
- package/dist/chunk-6T4NVCAT.js.map +0 -1
- package/dist/chunk-ATG4FJY6.js.map +0 -1
- package/dist/chunk-GUXB3QH7.mjs.map +0 -1
- package/dist/chunk-H23ZT2I2.mjs.map +0 -1
- package/dist/chunk-SCMHZBTN.js +0 -8
- package/dist/chunk-XAWB2HFQ.js.map +0 -1
- package/dist/securityHeaders-nwZ6nP4g.d.mts +0 -24
- package/dist/securityHeaders-nwZ6nP4g.d.ts +0 -24
package/dist/layout/index.mjs
CHANGED
|
@@ -1,19 +1,19 @@
|
|
|
1
|
-
import { SiteKitClientProviders } from '../chunk-
|
|
2
|
-
import '../chunk-
|
|
3
|
-
import '../chunk-
|
|
1
|
+
import { SiteKitClientProviders } from '../chunk-QMBVVQSH.mjs';
|
|
2
|
+
import '../chunk-F5SDNDP6.mjs';
|
|
3
|
+
import '../chunk-WXGBLUGC.mjs';
|
|
4
4
|
import '../chunk-ZVBLXXNJ.mjs';
|
|
5
5
|
import '../chunk-ZPLN537Q.mjs';
|
|
6
6
|
import '../chunk-NI7OY4FW.mjs';
|
|
7
7
|
import { ManagedFavicon } from '../chunk-CU6OGBKK.mjs';
|
|
8
|
-
import '../chunk-
|
|
9
|
-
import { resolveClientCredential } from '../chunk-
|
|
8
|
+
import '../chunk-75PY4H43.mjs';
|
|
9
|
+
import { resolveClientCredential } from '../chunk-J6MMNTYG.mjs';
|
|
10
10
|
import { ManagedScripts } from '../chunk-6PJTLBRR.mjs';
|
|
11
11
|
import { resolveApiOrigin } from '../chunk-UDBUK5ZJ.mjs';
|
|
12
12
|
import '../chunk-AX4AROLH.mjs';
|
|
13
13
|
import '../chunk-6EDVCUAG.mjs';
|
|
14
|
-
import '../chunk-
|
|
15
|
-
import '../chunk-
|
|
16
|
-
import '../chunk-
|
|
14
|
+
import '../chunk-HJTAHRR3.mjs';
|
|
15
|
+
import '../chunk-PUZ6XJ2L.mjs';
|
|
16
|
+
import '../chunk-M2SHY2FQ.mjs';
|
|
17
17
|
import '../chunk-4XPGGLVP.mjs';
|
|
18
18
|
import { jsxs, Fragment, jsx } from 'react/jsx-runtime';
|
|
19
19
|
|
package/dist/llms/contract.js
CHANGED
|
@@ -1,41 +1,41 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
|
-
var
|
|
3
|
+
var chunkH6AU3WKF_js = require('../chunk-H6AU3WKF.js');
|
|
4
4
|
require('../chunk-ZSMWDLMK.js');
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
Object.defineProperty(exports, "LLMS_DISCLAIMER_MAX_LENGTH", {
|
|
9
9
|
enumerable: true,
|
|
10
|
-
get: function () { return
|
|
10
|
+
get: function () { return chunkH6AU3WKF_js.LLMS_DISCLAIMER_MAX_LENGTH; }
|
|
11
11
|
});
|
|
12
12
|
Object.defineProperty(exports, "LLMS_PUBLIC_SUMMARY_MAX_LENGTH", {
|
|
13
13
|
enumerable: true,
|
|
14
|
-
get: function () { return
|
|
14
|
+
get: function () { return chunkH6AU3WKF_js.LLMS_PUBLIC_SUMMARY_MAX_LENGTH; }
|
|
15
15
|
});
|
|
16
16
|
Object.defineProperty(exports, "LLM_GEO_CONTRACT_VERSION", {
|
|
17
17
|
enumerable: true,
|
|
18
|
-
get: function () { return
|
|
18
|
+
get: function () { return chunkH6AU3WKF_js.LLM_GEO_CONTRACT_VERSION; }
|
|
19
19
|
});
|
|
20
20
|
Object.defineProperty(exports, "MANAGED_LLM_SCHEMA_KNOWN_KEYS", {
|
|
21
21
|
enumerable: true,
|
|
22
|
-
get: function () { return
|
|
22
|
+
get: function () { return chunkH6AU3WKF_js.MANAGED_LLM_SCHEMA_KNOWN_KEYS; }
|
|
23
23
|
});
|
|
24
24
|
Object.defineProperty(exports, "pickManagedLlmSchemaForJsonLd", {
|
|
25
25
|
enumerable: true,
|
|
26
|
-
get: function () { return
|
|
26
|
+
get: function () { return chunkH6AU3WKF_js.pickManagedLlmSchemaForJsonLd; }
|
|
27
27
|
});
|
|
28
28
|
Object.defineProperty(exports, "sanitizeLlmsDisclaimerLine", {
|
|
29
29
|
enumerable: true,
|
|
30
|
-
get: function () { return
|
|
30
|
+
get: function () { return chunkH6AU3WKF_js.sanitizeLlmsDisclaimerLine; }
|
|
31
31
|
});
|
|
32
32
|
Object.defineProperty(exports, "sanitizeLlmsPublicSummary", {
|
|
33
33
|
enumerable: true,
|
|
34
|
-
get: function () { return
|
|
34
|
+
get: function () { return chunkH6AU3WKF_js.sanitizeLlmsPublicSummary; }
|
|
35
35
|
});
|
|
36
36
|
Object.defineProperty(exports, "sanitizePrimaryLanguageTag", {
|
|
37
37
|
enumerable: true,
|
|
38
|
-
get: function () { return
|
|
38
|
+
get: function () { return chunkH6AU3WKF_js.sanitizePrimaryLanguageTag; }
|
|
39
39
|
});
|
|
40
40
|
//# sourceMappingURL=contract.js.map
|
|
41
41
|
//# sourceMappingURL=contract.js.map
|
package/dist/llms/contract.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { LLMS_DISCLAIMER_MAX_LENGTH, LLMS_PUBLIC_SUMMARY_MAX_LENGTH, LLM_GEO_CONTRACT_VERSION, MANAGED_LLM_SCHEMA_KNOWN_KEYS, pickManagedLlmSchemaForJsonLd, sanitizeLlmsDisclaimerLine, sanitizeLlmsPublicSummary, sanitizePrimaryLanguageTag } from '../chunk-
|
|
1
|
+
export { LLMS_DISCLAIMER_MAX_LENGTH, LLMS_PUBLIC_SUMMARY_MAX_LENGTH, LLM_GEO_CONTRACT_VERSION, MANAGED_LLM_SCHEMA_KNOWN_KEYS, pickManagedLlmSchemaForJsonLd, sanitizeLlmsDisclaimerLine, sanitizeLlmsPublicSummary, sanitizePrimaryLanguageTag } from '../chunk-PENNTSJE.mjs';
|
|
2
2
|
import '../chunk-4XPGGLVP.mjs';
|
|
3
3
|
//# sourceMappingURL=contract.mjs.map
|
|
4
4
|
//# sourceMappingURL=contract.mjs.map
|
package/dist/llms/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { G as GenerateLLMSTxtOptions, a as LLMSTxtContent, S as SpeakableSchemaProps,
|
|
2
|
-
export {
|
|
1
|
+
import { G as GenerateLLMSTxtOptions, a as LLMSTxtContent, b as LLMsCustomSection, S as SpeakableSchemaProps, c as SpeakableConfig, A as AEOBlockProps, d as AEOSummaryProps, e as AEODefinitionProps, f as AEOClaimProps, L as LLMsDataResponse, g as LLMBusinessInfo, h as LLMService, i as LLMFAQItem, j as LLMPageSummary } from '../writeLLMsTxt-SpMdyHQT.mjs';
|
|
2
|
+
export { n as AEOCitedContentProps, l as AEOEntityProps, m as AEOProvenanceListProps, C as ContentProvenance, k as LLMContactInfo, o as LLMPortfolioItem, W as WriteLLMsTxtOptions, w as writeLLMsTxtToPublic } from '../writeLLMsTxt-SpMdyHQT.mjs';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
export { LLMS_DISCLAIMER_MAX_LENGTH, LLMS_PUBLIC_SUMMARY_MAX_LENGTH, LLM_GEO_CONTRACT_VERSION, LLMsPayloadMeta, MANAGED_LLM_SCHEMA_KNOWN_KEYS, pickManagedLlmSchemaForJsonLd, sanitizeLlmsDisclaimerLine, sanitizeLlmsPublicSummary, sanitizePrimaryLanguageTag } from './contract.mjs';
|
|
5
5
|
|
|
@@ -133,6 +133,134 @@ interface AiDiscoveryHeadersOptions {
|
|
|
133
133
|
*/
|
|
134
134
|
declare function buildAiDiscoveryHeaders(options: AiDiscoveryHeadersOptions): Record<string, string>;
|
|
135
135
|
|
|
136
|
+
/**
|
|
137
|
+
* @sonordev/site-kit/llms — Sourced facts section
|
|
138
|
+
*
|
|
139
|
+
* Formats a site's verified third-party citations into an llms-full.txt
|
|
140
|
+
* section. AI answer engines preferentially reproduce claims that arrive
|
|
141
|
+
* already attributed — handing them the exact claim + source pairing makes
|
|
142
|
+
* the site's framing the citable version.
|
|
143
|
+
*
|
|
144
|
+
* Pair with WriteLLMsTxtOptions.customSections (or SitemapConfig.
|
|
145
|
+
* llmsCustomSections) so the section is appended at build time:
|
|
146
|
+
*
|
|
147
|
+
* llmsCustomSections: async () => {
|
|
148
|
+
* const { CITATIONS } = await import('./lib/data/citations')
|
|
149
|
+
* const section = formatSourcedFactsSection(Object.values(CITATIONS))
|
|
150
|
+
* return section ? [section] : null
|
|
151
|
+
* }
|
|
152
|
+
*
|
|
153
|
+
* Only include citations a human has actually verified against the source
|
|
154
|
+
* URL — this section is a trust surface, not a dumping ground.
|
|
155
|
+
*/
|
|
156
|
+
|
|
157
|
+
interface SourcedFact {
|
|
158
|
+
/** The claim, faithful to the source, one sentence. */
|
|
159
|
+
stat: string;
|
|
160
|
+
/** The publishing organization (e.g. "Clio Legal Trends Report"). */
|
|
161
|
+
sourceName: string;
|
|
162
|
+
/** Publication/study year. */
|
|
163
|
+
year?: number;
|
|
164
|
+
/** The opened-and-verified source URL. */
|
|
165
|
+
url?: string;
|
|
166
|
+
}
|
|
167
|
+
interface FormatSourcedFactsOptions {
|
|
168
|
+
/** Section heading (default: "Sourced facts"). */
|
|
169
|
+
title?: string;
|
|
170
|
+
/** Intro line above the list. */
|
|
171
|
+
intro?: string;
|
|
172
|
+
/** Cap the number of facts emitted (default: no cap). */
|
|
173
|
+
maxFacts?: number;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Build the "Sourced facts" custom section from verified citations.
|
|
177
|
+
* Returns null when no usable facts exist so callers can skip cleanly.
|
|
178
|
+
*/
|
|
179
|
+
declare function formatSourcedFactsSection(facts: SourcedFact[], options?: FormatSourcedFactsOptions): LLMsCustomSection | null;
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* @sonordev/site-kit/llms — AI crawler robots policy
|
|
183
|
+
*
|
|
184
|
+
* 2026 practice separates AI RETRIEVAL crawlers (they fetch pages to answer
|
|
185
|
+
* live queries and cite the source — visibility with attribution) from AI
|
|
186
|
+
* TRAINING crawlers (they ingest content into future model weights). A site
|
|
187
|
+
* can welcome one and decline the other. This module provides:
|
|
188
|
+
*
|
|
189
|
+
* - Curated user-agent lists for both classes (keep current with vendor docs)
|
|
190
|
+
* - buildAiCrawlerRules(): rules for Next's MetadataRoute robots convention
|
|
191
|
+
* - formatContentSignals(): the Cloudflare Content Signals Policy directive
|
|
192
|
+
* (search / ai-input / ai-train) — declarative, not enforcement, and NOT
|
|
193
|
+
* expressible through Next's robots.js convention (it drops unknown
|
|
194
|
+
* directives), hence:
|
|
195
|
+
* - createRobotsTxtHandler(): a plain-text robots.txt route handler for
|
|
196
|
+
* sites that want Content-Signal lines in the emitted file.
|
|
197
|
+
*/
|
|
198
|
+
/** Retrieval/search agents — fetch on demand or index for AI search, cite sources. */
|
|
199
|
+
declare const AI_RETRIEVAL_CRAWLERS: readonly ["OAI-SearchBot", "ChatGPT-User", "Claude-SearchBot", "Claude-User", "PerplexityBot", "Perplexity-User", "GoogleOther", "Applebot", "DuckAssistBot"];
|
|
200
|
+
/** Training crawlers — content may enter future model training corpora. */
|
|
201
|
+
declare const AI_TRAINING_CRAWLERS: readonly ["GPTBot", "ClaudeBot", "Google-Extended", "Applebot-Extended", "Meta-ExternalAgent", "FacebookBot", "CCBot", "Bytespider", "cohere-ai", "MistralBot"];
|
|
202
|
+
interface AiCrawlerRulesOptions {
|
|
203
|
+
/** Paths every AI crawler may fetch (default: everything). */
|
|
204
|
+
allow?: string | string[];
|
|
205
|
+
/** Paths withheld from every AI crawler (default: none). */
|
|
206
|
+
disallow?: string | string[];
|
|
207
|
+
/**
|
|
208
|
+
* Policy for TRAINING crawlers. 'allow' (default) welcomes them — the
|
|
209
|
+
* visibility-maximalist choice for marketing sites that WANT to be in
|
|
210
|
+
* model knowledge. 'block' opts out of training while retrieval crawlers
|
|
211
|
+
* stay welcome, so the site is still cited in AI answers.
|
|
212
|
+
*/
|
|
213
|
+
training?: 'allow' | 'block';
|
|
214
|
+
}
|
|
215
|
+
interface RobotsRule {
|
|
216
|
+
userAgent: string;
|
|
217
|
+
allow?: string | string[];
|
|
218
|
+
disallow?: string | string[];
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Rules for Next's MetadataRoute robots convention (app/robots.(js|ts)).
|
|
222
|
+
* Spread into your existing rules array; order relative to your own rules
|
|
223
|
+
* does not matter (robots matching is per-user-agent, most-specific wins).
|
|
224
|
+
*/
|
|
225
|
+
declare function buildAiCrawlerRules(options?: AiCrawlerRulesOptions): RobotsRule[];
|
|
226
|
+
interface ContentSignalsOptions {
|
|
227
|
+
/** May the content be indexed for classic search? Default true. */
|
|
228
|
+
search?: boolean;
|
|
229
|
+
/** May the content feed a live AI answer (RAG/grounding)? Default true. */
|
|
230
|
+
aiInput?: boolean;
|
|
231
|
+
/** May the content train future models? Default true. */
|
|
232
|
+
aiTrain?: boolean;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* The Cloudflare Content Signals Policy block for robots.txt — a preferences
|
|
236
|
+
* declaration (the IETF AIPREF group is standardizing the same concepts).
|
|
237
|
+
* Emit near the top of the file, before user-agent groups.
|
|
238
|
+
*/
|
|
239
|
+
declare function formatContentSignals(options?: ContentSignalsOptions): string;
|
|
240
|
+
interface RobotsTxtHandlerOptions {
|
|
241
|
+
/** Robots rules (same shape as MetadataRoute robots rules). */
|
|
242
|
+
rules: RobotsRule[];
|
|
243
|
+
/** Content Signals preferences; omit to skip the block entirely. */
|
|
244
|
+
contentSignals?: ContentSignalsOptions;
|
|
245
|
+
/** Absolute sitemap URL(s). */
|
|
246
|
+
sitemap?: string | string[];
|
|
247
|
+
/** Preferred host (emitted as Host:). */
|
|
248
|
+
host?: string;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Plain-text robots.txt route handler (app/robots.txt/route.ts) for sites
|
|
252
|
+
* that want Content-Signal lines — Next's MetadataRoute robots convention
|
|
253
|
+
* cannot emit them. Drop-in:
|
|
254
|
+
*
|
|
255
|
+
* import { createRobotsTxtHandler, buildAiCrawlerRules } from '@sonordev/site-kit/llms'
|
|
256
|
+
* export const GET = createRobotsTxtHandler({
|
|
257
|
+
* rules: [{ userAgent: '*', allow: '/' }, ...buildAiCrawlerRules()],
|
|
258
|
+
* contentSignals: { search: true, aiInput: true, aiTrain: true },
|
|
259
|
+
* sitemap: 'https://example.com/sitemap.xml',
|
|
260
|
+
* })
|
|
261
|
+
*/
|
|
262
|
+
declare function createRobotsTxtHandler(options: RobotsTxtHandlerOptions): () => Promise<Response>;
|
|
263
|
+
|
|
136
264
|
/**
|
|
137
265
|
* @sonordev/site-kit/llms - Speakable Schema Generator
|
|
138
266
|
*
|
|
@@ -462,43 +590,6 @@ declare function getOptimizedLLMsTxt(options?: {
|
|
|
462
590
|
apiKey?: string;
|
|
463
591
|
}): Promise<string | null>;
|
|
464
592
|
|
|
465
|
-
/**
|
|
466
|
-
* @sonordev/site-kit/llms - Build-Time Write
|
|
467
|
-
*
|
|
468
|
-
* Fetches AI-optimized llms.txt from Portal API and writes to public/llms.txt
|
|
469
|
-
* at build time. Integrates with sitemap flow when optimizedLLMsTxt is enabled.
|
|
470
|
-
*/
|
|
471
|
-
|
|
472
|
-
interface WriteLLMsTxtOptions {
|
|
473
|
-
/** Output directory (default: public, relative to cwd) */
|
|
474
|
-
outputDir?: string;
|
|
475
|
-
/** Write llms-full.txt as well */
|
|
476
|
-
full?: boolean;
|
|
477
|
-
/** Portal API URL */
|
|
478
|
-
apiUrl?: string;
|
|
479
|
-
/** Portal API key */
|
|
480
|
-
apiKey?: string;
|
|
481
|
-
/** Fallback to non-optimized when API fails */
|
|
482
|
-
fallbackToLocal?: boolean;
|
|
483
|
-
/** When Portal returns empty services/faq/pages, use this to supply local site data */
|
|
484
|
-
getLocalData?: () => Promise<LLMsDataResponse | null>;
|
|
485
|
-
/** Forward to GET /api/public/llms/txt and align local fallback with site-kit strict page notes */
|
|
486
|
-
publicSummaryOnly?: boolean;
|
|
487
|
-
}
|
|
488
|
-
/**
|
|
489
|
-
* Fetch optimized llms.txt from Portal and write to public/llms.txt
|
|
490
|
-
* Called at build time after sitemap sync (when optimizedLLMsTxt is enabled)
|
|
491
|
-
*
|
|
492
|
-
* Never persists a failure stub: when neither the Portal API nor local data
|
|
493
|
-
* yields real content, the write is skipped entirely so a previously
|
|
494
|
-
* generated (or committed) file keeps serving.
|
|
495
|
-
*/
|
|
496
|
-
declare function writeLLMsTxtToPublic(options?: WriteLLMsTxtOptions): Promise<{
|
|
497
|
-
success: boolean;
|
|
498
|
-
path: string;
|
|
499
|
-
optimized: boolean;
|
|
500
|
-
}>;
|
|
501
|
-
|
|
502
593
|
/**
|
|
503
594
|
* @sonordev/site-kit/llms - On-demand Revalidation
|
|
504
595
|
*
|
|
@@ -525,4 +616,4 @@ declare function createLlmsRevalidateHandler(secret: string, options?: {
|
|
|
525
616
|
revalidatePath?: RevalidatePathFn;
|
|
526
617
|
}): (request: Request) => Promise<Response>;
|
|
527
618
|
|
|
528
|
-
export { AEOBlock, AEOBlockProps, AEOCitedContent, AEOClaim, AEOClaimProps, AEOComparison, AEODefinition, AEODefinitionProps, AEOEntity, AEOProvenanceList, AEOStep, AEOSteps, AEOSummary, AEOSummaryProps, type AiDiscoveryHeadersOptions, DEFAULT_SPEAKABLE_SELECTORS, GenerateLLMSTxtOptions, LLMBusinessInfo, LLMFAQItem, LLMPageSummary, LLMSTxtContent, LLMService, LLMsDataResponse, type LlmsLanguageAlternate, SpeakableConfig, SpeakableSchema, SpeakableSchemaProps,
|
|
619
|
+
export { AEOBlock, AEOBlockProps, AEOCitedContent, AEOClaim, AEOClaimProps, AEOComparison, AEODefinition, AEODefinitionProps, AEOEntity, AEOProvenanceList, AEOStep, AEOSteps, AEOSummary, AEOSummaryProps, AI_RETRIEVAL_CRAWLERS, AI_TRAINING_CRAWLERS, type AiCrawlerRulesOptions, type AiDiscoveryHeadersOptions, type ContentSignalsOptions, DEFAULT_SPEAKABLE_SELECTORS, type FormatSourcedFactsOptions, GenerateLLMSTxtOptions, LLMBusinessInfo, LLMFAQItem, LLMPageSummary, LLMSTxtContent, LLMService, LLMsCustomSection, LLMsDataResponse, type LlmsLanguageAlternate, type RobotsTxtHandlerOptions, type SourcedFact, SpeakableConfig, SpeakableSchema, SpeakableSchemaProps, buildAiCrawlerRules, buildAiDiscoveryHeaders, createLLMsFullTxtHandler, createLLMsTxtHandler, createLlmsRevalidateHandler, createRobotsTxtHandler, createSpeakableSchema, formatContentSignals, formatSourcedFactsSection, generateLLMsFullTxt, generateLLMsTxt, getBusinessInfo, getFAQItems, getLLMsData, getOptimizedLLMsTxt, getPageSummaries, getServices, getSpeakableSelectorsForPage, llmsResponseHeaders };
|
package/dist/llms/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { G as GenerateLLMSTxtOptions, a as LLMSTxtContent, S as SpeakableSchemaProps,
|
|
2
|
-
export {
|
|
1
|
+
import { G as GenerateLLMSTxtOptions, a as LLMSTxtContent, b as LLMsCustomSection, S as SpeakableSchemaProps, c as SpeakableConfig, A as AEOBlockProps, d as AEOSummaryProps, e as AEODefinitionProps, f as AEOClaimProps, L as LLMsDataResponse, g as LLMBusinessInfo, h as LLMService, i as LLMFAQItem, j as LLMPageSummary } from '../writeLLMsTxt-BFaNr4re.js';
|
|
2
|
+
export { n as AEOCitedContentProps, l as AEOEntityProps, m as AEOProvenanceListProps, C as ContentProvenance, k as LLMContactInfo, o as LLMPortfolioItem, W as WriteLLMsTxtOptions, w as writeLLMsTxtToPublic } from '../writeLLMsTxt-BFaNr4re.js';
|
|
3
3
|
import * as React from 'react';
|
|
4
4
|
export { LLMS_DISCLAIMER_MAX_LENGTH, LLMS_PUBLIC_SUMMARY_MAX_LENGTH, LLM_GEO_CONTRACT_VERSION, LLMsPayloadMeta, MANAGED_LLM_SCHEMA_KNOWN_KEYS, pickManagedLlmSchemaForJsonLd, sanitizeLlmsDisclaimerLine, sanitizeLlmsPublicSummary, sanitizePrimaryLanguageTag } from './contract.js';
|
|
5
5
|
|
|
@@ -133,6 +133,134 @@ interface AiDiscoveryHeadersOptions {
|
|
|
133
133
|
*/
|
|
134
134
|
declare function buildAiDiscoveryHeaders(options: AiDiscoveryHeadersOptions): Record<string, string>;
|
|
135
135
|
|
|
136
|
+
/**
|
|
137
|
+
* @sonordev/site-kit/llms — Sourced facts section
|
|
138
|
+
*
|
|
139
|
+
* Formats a site's verified third-party citations into an llms-full.txt
|
|
140
|
+
* section. AI answer engines preferentially reproduce claims that arrive
|
|
141
|
+
* already attributed — handing them the exact claim + source pairing makes
|
|
142
|
+
* the site's framing the citable version.
|
|
143
|
+
*
|
|
144
|
+
* Pair with WriteLLMsTxtOptions.customSections (or SitemapConfig.
|
|
145
|
+
* llmsCustomSections) so the section is appended at build time:
|
|
146
|
+
*
|
|
147
|
+
* llmsCustomSections: async () => {
|
|
148
|
+
* const { CITATIONS } = await import('./lib/data/citations')
|
|
149
|
+
* const section = formatSourcedFactsSection(Object.values(CITATIONS))
|
|
150
|
+
* return section ? [section] : null
|
|
151
|
+
* }
|
|
152
|
+
*
|
|
153
|
+
* Only include citations a human has actually verified against the source
|
|
154
|
+
* URL — this section is a trust surface, not a dumping ground.
|
|
155
|
+
*/
|
|
156
|
+
|
|
157
|
+
interface SourcedFact {
|
|
158
|
+
/** The claim, faithful to the source, one sentence. */
|
|
159
|
+
stat: string;
|
|
160
|
+
/** The publishing organization (e.g. "Clio Legal Trends Report"). */
|
|
161
|
+
sourceName: string;
|
|
162
|
+
/** Publication/study year. */
|
|
163
|
+
year?: number;
|
|
164
|
+
/** The opened-and-verified source URL. */
|
|
165
|
+
url?: string;
|
|
166
|
+
}
|
|
167
|
+
interface FormatSourcedFactsOptions {
|
|
168
|
+
/** Section heading (default: "Sourced facts"). */
|
|
169
|
+
title?: string;
|
|
170
|
+
/** Intro line above the list. */
|
|
171
|
+
intro?: string;
|
|
172
|
+
/** Cap the number of facts emitted (default: no cap). */
|
|
173
|
+
maxFacts?: number;
|
|
174
|
+
}
|
|
175
|
+
/**
|
|
176
|
+
* Build the "Sourced facts" custom section from verified citations.
|
|
177
|
+
* Returns null when no usable facts exist so callers can skip cleanly.
|
|
178
|
+
*/
|
|
179
|
+
declare function formatSourcedFactsSection(facts: SourcedFact[], options?: FormatSourcedFactsOptions): LLMsCustomSection | null;
|
|
180
|
+
|
|
181
|
+
/**
|
|
182
|
+
* @sonordev/site-kit/llms — AI crawler robots policy
|
|
183
|
+
*
|
|
184
|
+
* 2026 practice separates AI RETRIEVAL crawlers (they fetch pages to answer
|
|
185
|
+
* live queries and cite the source — visibility with attribution) from AI
|
|
186
|
+
* TRAINING crawlers (they ingest content into future model weights). A site
|
|
187
|
+
* can welcome one and decline the other. This module provides:
|
|
188
|
+
*
|
|
189
|
+
* - Curated user-agent lists for both classes (keep current with vendor docs)
|
|
190
|
+
* - buildAiCrawlerRules(): rules for Next's MetadataRoute robots convention
|
|
191
|
+
* - formatContentSignals(): the Cloudflare Content Signals Policy directive
|
|
192
|
+
* (search / ai-input / ai-train) — declarative, not enforcement, and NOT
|
|
193
|
+
* expressible through Next's robots.js convention (it drops unknown
|
|
194
|
+
* directives), hence:
|
|
195
|
+
* - createRobotsTxtHandler(): a plain-text robots.txt route handler for
|
|
196
|
+
* sites that want Content-Signal lines in the emitted file.
|
|
197
|
+
*/
|
|
198
|
+
/** Retrieval/search agents — fetch on demand or index for AI search, cite sources. */
|
|
199
|
+
declare const AI_RETRIEVAL_CRAWLERS: readonly ["OAI-SearchBot", "ChatGPT-User", "Claude-SearchBot", "Claude-User", "PerplexityBot", "Perplexity-User", "GoogleOther", "Applebot", "DuckAssistBot"];
|
|
200
|
+
/** Training crawlers — content may enter future model training corpora. */
|
|
201
|
+
declare const AI_TRAINING_CRAWLERS: readonly ["GPTBot", "ClaudeBot", "Google-Extended", "Applebot-Extended", "Meta-ExternalAgent", "FacebookBot", "CCBot", "Bytespider", "cohere-ai", "MistralBot"];
|
|
202
|
+
interface AiCrawlerRulesOptions {
|
|
203
|
+
/** Paths every AI crawler may fetch (default: everything). */
|
|
204
|
+
allow?: string | string[];
|
|
205
|
+
/** Paths withheld from every AI crawler (default: none). */
|
|
206
|
+
disallow?: string | string[];
|
|
207
|
+
/**
|
|
208
|
+
* Policy for TRAINING crawlers. 'allow' (default) welcomes them — the
|
|
209
|
+
* visibility-maximalist choice for marketing sites that WANT to be in
|
|
210
|
+
* model knowledge. 'block' opts out of training while retrieval crawlers
|
|
211
|
+
* stay welcome, so the site is still cited in AI answers.
|
|
212
|
+
*/
|
|
213
|
+
training?: 'allow' | 'block';
|
|
214
|
+
}
|
|
215
|
+
interface RobotsRule {
|
|
216
|
+
userAgent: string;
|
|
217
|
+
allow?: string | string[];
|
|
218
|
+
disallow?: string | string[];
|
|
219
|
+
}
|
|
220
|
+
/**
|
|
221
|
+
* Rules for Next's MetadataRoute robots convention (app/robots.(js|ts)).
|
|
222
|
+
* Spread into your existing rules array; order relative to your own rules
|
|
223
|
+
* does not matter (robots matching is per-user-agent, most-specific wins).
|
|
224
|
+
*/
|
|
225
|
+
declare function buildAiCrawlerRules(options?: AiCrawlerRulesOptions): RobotsRule[];
|
|
226
|
+
interface ContentSignalsOptions {
|
|
227
|
+
/** May the content be indexed for classic search? Default true. */
|
|
228
|
+
search?: boolean;
|
|
229
|
+
/** May the content feed a live AI answer (RAG/grounding)? Default true. */
|
|
230
|
+
aiInput?: boolean;
|
|
231
|
+
/** May the content train future models? Default true. */
|
|
232
|
+
aiTrain?: boolean;
|
|
233
|
+
}
|
|
234
|
+
/**
|
|
235
|
+
* The Cloudflare Content Signals Policy block for robots.txt — a preferences
|
|
236
|
+
* declaration (the IETF AIPREF group is standardizing the same concepts).
|
|
237
|
+
* Emit near the top of the file, before user-agent groups.
|
|
238
|
+
*/
|
|
239
|
+
declare function formatContentSignals(options?: ContentSignalsOptions): string;
|
|
240
|
+
interface RobotsTxtHandlerOptions {
|
|
241
|
+
/** Robots rules (same shape as MetadataRoute robots rules). */
|
|
242
|
+
rules: RobotsRule[];
|
|
243
|
+
/** Content Signals preferences; omit to skip the block entirely. */
|
|
244
|
+
contentSignals?: ContentSignalsOptions;
|
|
245
|
+
/** Absolute sitemap URL(s). */
|
|
246
|
+
sitemap?: string | string[];
|
|
247
|
+
/** Preferred host (emitted as Host:). */
|
|
248
|
+
host?: string;
|
|
249
|
+
}
|
|
250
|
+
/**
|
|
251
|
+
* Plain-text robots.txt route handler (app/robots.txt/route.ts) for sites
|
|
252
|
+
* that want Content-Signal lines — Next's MetadataRoute robots convention
|
|
253
|
+
* cannot emit them. Drop-in:
|
|
254
|
+
*
|
|
255
|
+
* import { createRobotsTxtHandler, buildAiCrawlerRules } from '@sonordev/site-kit/llms'
|
|
256
|
+
* export const GET = createRobotsTxtHandler({
|
|
257
|
+
* rules: [{ userAgent: '*', allow: '/' }, ...buildAiCrawlerRules()],
|
|
258
|
+
* contentSignals: { search: true, aiInput: true, aiTrain: true },
|
|
259
|
+
* sitemap: 'https://example.com/sitemap.xml',
|
|
260
|
+
* })
|
|
261
|
+
*/
|
|
262
|
+
declare function createRobotsTxtHandler(options: RobotsTxtHandlerOptions): () => Promise<Response>;
|
|
263
|
+
|
|
136
264
|
/**
|
|
137
265
|
* @sonordev/site-kit/llms - Speakable Schema Generator
|
|
138
266
|
*
|
|
@@ -462,43 +590,6 @@ declare function getOptimizedLLMsTxt(options?: {
|
|
|
462
590
|
apiKey?: string;
|
|
463
591
|
}): Promise<string | null>;
|
|
464
592
|
|
|
465
|
-
/**
|
|
466
|
-
* @sonordev/site-kit/llms - Build-Time Write
|
|
467
|
-
*
|
|
468
|
-
* Fetches AI-optimized llms.txt from Portal API and writes to public/llms.txt
|
|
469
|
-
* at build time. Integrates with sitemap flow when optimizedLLMsTxt is enabled.
|
|
470
|
-
*/
|
|
471
|
-
|
|
472
|
-
interface WriteLLMsTxtOptions {
|
|
473
|
-
/** Output directory (default: public, relative to cwd) */
|
|
474
|
-
outputDir?: string;
|
|
475
|
-
/** Write llms-full.txt as well */
|
|
476
|
-
full?: boolean;
|
|
477
|
-
/** Portal API URL */
|
|
478
|
-
apiUrl?: string;
|
|
479
|
-
/** Portal API key */
|
|
480
|
-
apiKey?: string;
|
|
481
|
-
/** Fallback to non-optimized when API fails */
|
|
482
|
-
fallbackToLocal?: boolean;
|
|
483
|
-
/** When Portal returns empty services/faq/pages, use this to supply local site data */
|
|
484
|
-
getLocalData?: () => Promise<LLMsDataResponse | null>;
|
|
485
|
-
/** Forward to GET /api/public/llms/txt and align local fallback with site-kit strict page notes */
|
|
486
|
-
publicSummaryOnly?: boolean;
|
|
487
|
-
}
|
|
488
|
-
/**
|
|
489
|
-
* Fetch optimized llms.txt from Portal and write to public/llms.txt
|
|
490
|
-
* Called at build time after sitemap sync (when optimizedLLMsTxt is enabled)
|
|
491
|
-
*
|
|
492
|
-
* Never persists a failure stub: when neither the Portal API nor local data
|
|
493
|
-
* yields real content, the write is skipped entirely so a previously
|
|
494
|
-
* generated (or committed) file keeps serving.
|
|
495
|
-
*/
|
|
496
|
-
declare function writeLLMsTxtToPublic(options?: WriteLLMsTxtOptions): Promise<{
|
|
497
|
-
success: boolean;
|
|
498
|
-
path: string;
|
|
499
|
-
optimized: boolean;
|
|
500
|
-
}>;
|
|
501
|
-
|
|
502
593
|
/**
|
|
503
594
|
* @sonordev/site-kit/llms - On-demand Revalidation
|
|
504
595
|
*
|
|
@@ -525,4 +616,4 @@ declare function createLlmsRevalidateHandler(secret: string, options?: {
|
|
|
525
616
|
revalidatePath?: RevalidatePathFn;
|
|
526
617
|
}): (request: Request) => Promise<Response>;
|
|
527
618
|
|
|
528
|
-
export { AEOBlock, AEOBlockProps, AEOCitedContent, AEOClaim, AEOClaimProps, AEOComparison, AEODefinition, AEODefinitionProps, AEOEntity, AEOProvenanceList, AEOStep, AEOSteps, AEOSummary, AEOSummaryProps, type AiDiscoveryHeadersOptions, DEFAULT_SPEAKABLE_SELECTORS, GenerateLLMSTxtOptions, LLMBusinessInfo, LLMFAQItem, LLMPageSummary, LLMSTxtContent, LLMService, LLMsDataResponse, type LlmsLanguageAlternate, SpeakableConfig, SpeakableSchema, SpeakableSchemaProps,
|
|
619
|
+
export { AEOBlock, AEOBlockProps, AEOCitedContent, AEOClaim, AEOClaimProps, AEOComparison, AEODefinition, AEODefinitionProps, AEOEntity, AEOProvenanceList, AEOStep, AEOSteps, AEOSummary, AEOSummaryProps, AI_RETRIEVAL_CRAWLERS, AI_TRAINING_CRAWLERS, type AiCrawlerRulesOptions, type AiDiscoveryHeadersOptions, type ContentSignalsOptions, DEFAULT_SPEAKABLE_SELECTORS, type FormatSourcedFactsOptions, GenerateLLMSTxtOptions, LLMBusinessInfo, LLMFAQItem, LLMPageSummary, LLMSTxtContent, LLMService, LLMsCustomSection, LLMsDataResponse, type LlmsLanguageAlternate, type RobotsTxtHandlerOptions, type SourcedFact, SpeakableConfig, SpeakableSchema, SpeakableSchemaProps, buildAiCrawlerRules, buildAiDiscoveryHeaders, createLLMsFullTxtHandler, createLLMsTxtHandler, createLlmsRevalidateHandler, createRobotsTxtHandler, createSpeakableSchema, formatContentSignals, formatSourcedFactsSection, generateLLMsFullTxt, generateLLMsTxt, getBusinessInfo, getFAQItems, getLLMsData, getOptimizedLLMsTxt, getPageSummaries, getServices, getSpeakableSelectorsForPage, llmsResponseHeaders };
|