@riverbankcms/sdk 0.6.1 → 0.7.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/README.md +175 -0
- package/dist/cli/index.js +42 -95
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/init-docs/content/agents-section.md +50 -0
- package/dist/cli/init-docs/content/cli-reference.md +574 -0
- package/dist/cli/init-docs/content/content-management.md +384 -0
- package/dist/cli/init-docs/content/context-brand.md +125 -0
- package/dist/cli/init-docs/content/context-brief.md +77 -0
- package/dist/cli/init-docs/content/context-knowledge.md +111 -0
- package/dist/cli/init-docs/content/getting-started.md +130 -0
- package/dist/cli/init-docs/content/site-workflows-readme.md +96 -0
- package/dist/cli/init-docs/content/workflow-add-block.md +228 -0
- package/dist/cli/init-docs/content/workflow-create-page.md +193 -0
- package/dist/cli/init-docs/content/workflow-publish.md +280 -0
- package/dist/client/client.d.mts +2 -2
- package/dist/client/client.d.ts +2 -2
- package/dist/client/client.js +536 -71
- package/dist/client/client.js.map +1 -1
- package/dist/client/client.mjs +536 -78
- package/dist/client/client.mjs.map +1 -1
- package/dist/client/hooks.d.mts +2 -2
- package/dist/client/hooks.d.ts +2 -2
- package/dist/client/usePage-C9tJpuKa.d.mts +6813 -0
- package/dist/client/usePage-Db9kzA41.d.ts +6813 -0
- package/dist/server/{Layout-wBtJLTVX.d.ts → Layout-Ce7PU9I5.d.ts} +1 -1
- package/dist/server/{Layout-B7cvis7r.d.mts → Layout-WllR8Zug.d.mts} +1 -1
- package/dist/server/{chunk-I7ZR2WO3.mjs → chunk-5JT452F2.mjs} +537 -76
- package/dist/server/chunk-5JT452F2.mjs.map +1 -0
- package/dist/server/{chunk-Z5ZA6Q4D.mjs → chunk-74XUVNOO.mjs} +5 -3
- package/dist/server/chunk-74XUVNOO.mjs.map +1 -0
- package/dist/server/{chunk-3B364WO2.js → chunk-7BVRA5MY.js} +4 -49
- package/dist/server/chunk-7BVRA5MY.js.map +1 -0
- package/dist/server/chunk-AET56TQX.mjs +45 -0
- package/dist/server/chunk-AET56TQX.mjs.map +1 -0
- package/dist/server/chunk-ARNCLSQT.mjs +52 -0
- package/dist/server/chunk-ARNCLSQT.mjs.map +1 -0
- package/dist/server/chunk-BNQV3PXP.js +69 -0
- package/dist/server/chunk-BNQV3PXP.js.map +1 -0
- package/dist/server/{chunk-IVHIQFJH.js → chunk-HMENX4Y7.js} +543 -82
- package/dist/server/chunk-HMENX4Y7.js.map +1 -0
- package/dist/server/{chunk-I2D7KOEA.js → chunk-JWRNMNWI.js} +5 -3
- package/dist/server/chunk-JWRNMNWI.js.map +1 -0
- package/dist/server/chunk-LQUKXIW7.mjs +13 -0
- package/dist/server/chunk-LQUKXIW7.mjs.map +1 -0
- package/dist/server/{chunk-XXFF4RVR.mjs → chunk-RBJFXNDM.mjs} +1 -46
- package/dist/server/chunk-RBJFXNDM.mjs.map +1 -0
- package/dist/server/chunk-SWYWZT3L.mjs +69 -0
- package/dist/server/chunk-SWYWZT3L.mjs.map +1 -0
- package/dist/server/chunk-T26N3P26.js +52 -0
- package/dist/server/chunk-T26N3P26.js.map +1 -0
- package/dist/server/chunk-VODFQMUW.js +45 -0
- package/dist/server/chunk-VODFQMUW.js.map +1 -0
- package/dist/server/chunk-WYNEYDXO.js +13 -0
- package/dist/server/chunk-WYNEYDXO.js.map +1 -0
- package/dist/server/{components-CICSJyp_.d.ts → components--LT61IKp.d.ts} +2 -2
- package/dist/server/{components-CMMwDXTW.d.mts → components-RPzRQve6.d.mts} +2 -2
- package/dist/server/components.d.mts +4 -4
- package/dist/server/components.d.ts +4 -4
- package/dist/server/components.js +5 -4
- package/dist/server/components.js.map +1 -1
- package/dist/server/components.mjs +5 -4
- package/dist/server/config-validation.js +0 -1
- package/dist/server/config-validation.js.map +1 -1
- package/dist/server/config-validation.mjs +0 -1
- package/dist/server/config.js +0 -1
- package/dist/server/config.js.map +1 -1
- package/dist/server/config.mjs +0 -1
- package/dist/server/config.mjs.map +1 -1
- package/dist/server/data.d.mts +1 -1
- package/dist/server/data.d.ts +1 -1
- package/dist/server/data.js +0 -1
- package/dist/server/data.js.map +1 -1
- package/dist/server/data.mjs +0 -1
- package/dist/server/env.d.mts +23 -0
- package/dist/server/env.d.ts +23 -0
- package/dist/server/env.js +7 -0
- package/dist/server/env.js.map +1 -0
- package/dist/server/env.mjs +7 -0
- package/dist/server/index-BL66CU6d.d.mts +130 -0
- package/dist/server/{index-Bucs6UqG.d.mts → index-Bkva0WAj.d.mts} +1 -1
- package/dist/server/index-CJk9iQQW.d.ts +130 -0
- package/dist/server/{index-Cp7tJuRt.d.ts → index-CSBWKA3r.d.ts} +1 -1
- package/dist/server/index.d.mts +3 -3
- package/dist/server/index.d.ts +3 -3
- package/dist/server/index.js +2 -3
- package/dist/server/index.js.map +1 -1
- package/dist/server/index.mjs +1 -2
- package/dist/server/index.mjs.map +1 -1
- package/dist/server/{loadContent-Buvmudee.d.ts → loadContent-CXUWMuzY.d.ts} +11 -3
- package/dist/server/{loadContent-BS-3wesN.d.mts → loadContent-F_tAS0Nl.d.mts} +11 -3
- package/dist/server/{loadPage-IDGVDFBB.js → loadPage-6I7F6GRF.js} +1 -2
- package/dist/server/loadPage-6I7F6GRF.js.map +1 -0
- package/dist/server/{loadPage-B8mQUUSo.d.mts → loadPage-CxlYLe5K.d.mts} +1 -1
- package/dist/server/{loadPage-DNQTTRHL.mjs → loadPage-JI2SML4M.mjs} +1 -2
- package/dist/server/{loadPage-DP3nrHBi.d.ts → loadPage-i2r-X5b9.d.ts} +1 -1
- package/dist/server/metadata.d.mts +8 -135
- package/dist/server/metadata.d.ts +8 -135
- package/dist/server/metadata.js +4 -65
- package/dist/server/metadata.js.map +1 -1
- package/dist/server/metadata.mjs +4 -65
- package/dist/server/metadata.mjs.map +1 -1
- package/dist/server/navigation.js +0 -1
- package/dist/server/navigation.js.map +1 -1
- package/dist/server/navigation.mjs +0 -1
- package/dist/server/next/revalidate.d.mts +66 -0
- package/dist/server/next/revalidate.d.ts +66 -0
- package/dist/server/next/revalidate.js +59 -0
- package/dist/server/next/revalidate.js.map +1 -0
- package/dist/server/next/revalidate.mjs +59 -0
- package/dist/server/next/revalidate.mjs.map +1 -0
- package/dist/server/next/tags.d.mts +78 -0
- package/dist/server/next/tags.d.ts +78 -0
- package/dist/server/next/tags.js +34 -0
- package/dist/server/next/tags.js.map +1 -0
- package/dist/server/next/tags.mjs +34 -0
- package/dist/server/next/tags.mjs.map +1 -0
- package/dist/server/next.d.mts +432 -0
- package/dist/server/next.d.ts +432 -0
- package/dist/server/next.js +217 -0
- package/dist/server/next.js.map +1 -0
- package/dist/server/next.mjs +217 -0
- package/dist/server/next.mjs.map +1 -0
- package/dist/server/rendering/server.d.mts +3 -3
- package/dist/server/rendering/server.d.ts +3 -3
- package/dist/server/rendering/server.js +5 -4
- package/dist/server/rendering/server.js.map +1 -1
- package/dist/server/rendering/server.mjs +5 -4
- package/dist/server/rendering.d.mts +6 -6
- package/dist/server/rendering.d.ts +6 -6
- package/dist/server/rendering.js +7 -6
- package/dist/server/rendering.js.map +1 -1
- package/dist/server/rendering.mjs +9 -8
- package/dist/server/routing.d.mts +2 -2
- package/dist/server/routing.d.ts +2 -2
- package/dist/server/routing.js +2 -4
- package/dist/server/routing.js.map +1 -1
- package/dist/server/routing.mjs +1 -3
- package/dist/server/routing.mjs.map +1 -1
- package/dist/server/server.d.mts +4 -4
- package/dist/server/server.d.ts +4 -4
- package/dist/server/server.js +4 -5
- package/dist/server/server.js.map +1 -1
- package/dist/server/server.mjs +5 -6
- package/dist/server/theme-bridge.js +0 -1
- package/dist/server/theme-bridge.js.map +1 -1
- package/dist/server/theme-bridge.mjs +0 -1
- package/dist/server/theme-bridge.mjs.map +1 -1
- package/dist/server/theme.js +1 -3
- package/dist/server/theme.js.map +1 -1
- package/dist/server/theme.mjs +0 -2
- package/dist/server/theme.mjs.map +1 -1
- package/dist/server/{types-BvcJU7zk.d.ts → types-DnkRh0UL.d.ts} +118 -9
- package/dist/server/{types-1cLz0vnq.d.mts → types-MF2AWoKv.d.mts} +118 -9
- package/dist/server/webhooks.d.mts +75 -0
- package/dist/server/webhooks.d.ts +75 -0
- package/dist/server/webhooks.js +11 -0
- package/dist/server/webhooks.js.map +1 -0
- package/dist/server/webhooks.mjs +11 -0
- package/dist/server/webhooks.mjs.map +1 -0
- package/package.json +33 -1
- package/dist/server/chunk-3B364WO2.js.map +0 -1
- package/dist/server/chunk-BJTO5JO5.mjs +0 -11
- package/dist/server/chunk-DGUM43GV.js +0 -11
- package/dist/server/chunk-DGUM43GV.js.map +0 -1
- package/dist/server/chunk-I2D7KOEA.js.map +0 -1
- package/dist/server/chunk-I7ZR2WO3.mjs.map +0 -1
- package/dist/server/chunk-IVHIQFJH.js.map +0 -1
- package/dist/server/chunk-XXFF4RVR.mjs.map +0 -1
- package/dist/server/chunk-Z5ZA6Q4D.mjs.map +0 -1
- package/dist/server/loadPage-IDGVDFBB.js.map +0 -1
- /package/dist/server/{chunk-BJTO5JO5.mjs.map → env.mjs.map} +0 -0
- /package/dist/server/{loadPage-DNQTTRHL.mjs.map → loadPage-JI2SML4M.mjs.map} +0 -0
package/dist/server/data.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/will/Projects/Business/cms/builder/packages/sdk/dist/server/data.js"],"names":[],"mappings":"AAAA;AACE;AACA;AACF,sDAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B
|
|
1
|
+
{"version":3,"sources":["/Users/will/Projects/Business/cms/builder/packages/sdk/dist/server/data.js"],"names":[],"mappings":"AAAA;AACE;AACA;AACF,sDAA4B;AAC5B;AACE;AACA;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACA;AACA;AACA;AACF,qRAAC","file":"/Users/will/Projects/Business/cms/builder/packages/sdk/dist/server/data.js"}
|
package/dist/server/data.mjs
CHANGED
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment detection utilities for SDK
|
|
3
|
+
*
|
|
4
|
+
* Provides helpers for detecting preview mode and other environment states.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Detects if the current environment is in preview mode.
|
|
8
|
+
*
|
|
9
|
+
* Precedence:
|
|
10
|
+
* 1. RIVERBANK_PREVIEW env var (explicit override) - 'true' or 'false'
|
|
11
|
+
* 2. VERCEL_ENV === 'preview' (Vercel preview deployments)
|
|
12
|
+
* 3. Default: false (production behavior)
|
|
13
|
+
*
|
|
14
|
+
* In preview mode:
|
|
15
|
+
* - Draft content is visible
|
|
16
|
+
* - ISR revalidation is more aggressive
|
|
17
|
+
* - Cache bypass may be enabled
|
|
18
|
+
*
|
|
19
|
+
* @returns true if in preview mode, false otherwise
|
|
20
|
+
*/
|
|
21
|
+
declare function isPreviewMode(): boolean;
|
|
22
|
+
|
|
23
|
+
export { isPreviewMode };
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Environment detection utilities for SDK
|
|
3
|
+
*
|
|
4
|
+
* Provides helpers for detecting preview mode and other environment states.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Detects if the current environment is in preview mode.
|
|
8
|
+
*
|
|
9
|
+
* Precedence:
|
|
10
|
+
* 1. RIVERBANK_PREVIEW env var (explicit override) - 'true' or 'false'
|
|
11
|
+
* 2. VERCEL_ENV === 'preview' (Vercel preview deployments)
|
|
12
|
+
* 3. Default: false (production behavior)
|
|
13
|
+
*
|
|
14
|
+
* In preview mode:
|
|
15
|
+
* - Draft content is visible
|
|
16
|
+
* - ISR revalidation is more aggressive
|
|
17
|
+
* - Cache bypass may be enabled
|
|
18
|
+
*
|
|
19
|
+
* @returns true if in preview mode, false otherwise
|
|
20
|
+
*/
|
|
21
|
+
declare function isPreviewMode(): boolean;
|
|
22
|
+
|
|
23
|
+
export { isPreviewMode };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/will/Projects/Business/cms/builder/packages/sdk/dist/server/env.js"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACF,uDAAC","file":"/Users/will/Projects/Business/cms/builder/packages/sdk/dist/server/env.js"}
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { a as LoadPageResult } from './loadPage-CxlYLe5K.mjs';
|
|
2
|
+
import { S as SiteResponse } from './types-MF2AWoKv.mjs';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Metadata generation helper for Next.js pages
|
|
6
|
+
*
|
|
7
|
+
* Generates SEO-optimized metadata from Builder page data for use in
|
|
8
|
+
* Next.js generateMetadata() functions.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Next.js Metadata type
|
|
13
|
+
* Simplified version to avoid requiring Next.js as a dependency
|
|
14
|
+
*/
|
|
15
|
+
type Metadata = {
|
|
16
|
+
title?: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
alternates?: {
|
|
19
|
+
canonical?: string;
|
|
20
|
+
};
|
|
21
|
+
openGraph?: {
|
|
22
|
+
title?: string;
|
|
23
|
+
description?: string;
|
|
24
|
+
url?: string;
|
|
25
|
+
siteName?: string;
|
|
26
|
+
type?: string;
|
|
27
|
+
images?: Array<{
|
|
28
|
+
url: string;
|
|
29
|
+
alt?: string;
|
|
30
|
+
}>;
|
|
31
|
+
};
|
|
32
|
+
twitter?: {
|
|
33
|
+
card?: string;
|
|
34
|
+
title?: string;
|
|
35
|
+
description?: string;
|
|
36
|
+
images?: string[];
|
|
37
|
+
};
|
|
38
|
+
robots?: {
|
|
39
|
+
index?: boolean;
|
|
40
|
+
follow?: boolean;
|
|
41
|
+
};
|
|
42
|
+
verification?: {
|
|
43
|
+
google?: string;
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
type PageMetadataInput = {
|
|
47
|
+
/**
|
|
48
|
+
* Page data from loadPage() or custom page object
|
|
49
|
+
*/
|
|
50
|
+
page: LoadPageResult['page'] | {
|
|
51
|
+
name: string;
|
|
52
|
+
purpose?: string;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Site data from client.getSite()
|
|
56
|
+
*/
|
|
57
|
+
site: SiteResponse['site'];
|
|
58
|
+
/**
|
|
59
|
+
* Current URL path (e.g., '/about', '/blog/post-1')
|
|
60
|
+
*/
|
|
61
|
+
path: string;
|
|
62
|
+
/**
|
|
63
|
+
* Full site URL for canonical and OG URLs
|
|
64
|
+
* Example: 'https://example.com'
|
|
65
|
+
*/
|
|
66
|
+
siteUrl: string;
|
|
67
|
+
/**
|
|
68
|
+
* Optional custom metadata overrides
|
|
69
|
+
*/
|
|
70
|
+
overrides?: {
|
|
71
|
+
title?: string;
|
|
72
|
+
description?: string;
|
|
73
|
+
ogImage?: string;
|
|
74
|
+
canonicalUrl?: string;
|
|
75
|
+
robots?: {
|
|
76
|
+
index?: boolean;
|
|
77
|
+
follow?: boolean;
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Optional Google site verification token
|
|
82
|
+
*/
|
|
83
|
+
googleSiteVerification?: string;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Generate Next.js Metadata object from Builder page data
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```tsx
|
|
90
|
+
* import { generatePageMetadata } from '@riverbankcms/sdk/metadata';
|
|
91
|
+
* import { loadPage } from '@riverbankcms/sdk';
|
|
92
|
+
*
|
|
93
|
+
* export async function generateMetadata({ params }) {
|
|
94
|
+
* const pageData = await loadPage({ client, siteId, path: params.slug });
|
|
95
|
+
* const siteData = await client.getSite({ id: siteId });
|
|
96
|
+
*
|
|
97
|
+
* return generatePageMetadata({
|
|
98
|
+
* page: pageData.page,
|
|
99
|
+
* site: siteData.site,
|
|
100
|
+
* path: params.slug,
|
|
101
|
+
* siteUrl: 'https://example.com',
|
|
102
|
+
* });
|
|
103
|
+
* }
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
declare function generatePageMetadata(input: PageMetadataInput): Metadata;
|
|
107
|
+
/**
|
|
108
|
+
* Generate metadata for preview/staging environments
|
|
109
|
+
*
|
|
110
|
+
* This helper adds noindex/nofollow robots tags to prevent search engines
|
|
111
|
+
* from indexing preview or staging URLs.
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```tsx
|
|
115
|
+
* export async function generateMetadata({ params }) {
|
|
116
|
+
* const pageData = await loadPage({ client, siteId, path: params.slug });
|
|
117
|
+
* const isPreview = process.env.VERCEL_ENV !== 'production';
|
|
118
|
+
*
|
|
119
|
+
* return generatePreviewMetadata({
|
|
120
|
+
* page: pageData.page,
|
|
121
|
+
* site: siteData.site,
|
|
122
|
+
* path: params.slug,
|
|
123
|
+
* siteUrl: 'https://example.com',
|
|
124
|
+
* });
|
|
125
|
+
* }
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
128
|
+
declare function generatePreviewMetadata(input: PageMetadataInput): Metadata;
|
|
129
|
+
|
|
130
|
+
export { type Metadata as M, type PageMetadataInput as P, generatePreviewMetadata as a, generatePageMetadata as g };
|
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import { a as LoadPageResult } from './loadPage-i2r-X5b9.js';
|
|
2
|
+
import { S as SiteResponse } from './types-DnkRh0UL.js';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* Metadata generation helper for Next.js pages
|
|
6
|
+
*
|
|
7
|
+
* Generates SEO-optimized metadata from Builder page data for use in
|
|
8
|
+
* Next.js generateMetadata() functions.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
/**
|
|
12
|
+
* Next.js Metadata type
|
|
13
|
+
* Simplified version to avoid requiring Next.js as a dependency
|
|
14
|
+
*/
|
|
15
|
+
type Metadata = {
|
|
16
|
+
title?: string;
|
|
17
|
+
description?: string;
|
|
18
|
+
alternates?: {
|
|
19
|
+
canonical?: string;
|
|
20
|
+
};
|
|
21
|
+
openGraph?: {
|
|
22
|
+
title?: string;
|
|
23
|
+
description?: string;
|
|
24
|
+
url?: string;
|
|
25
|
+
siteName?: string;
|
|
26
|
+
type?: string;
|
|
27
|
+
images?: Array<{
|
|
28
|
+
url: string;
|
|
29
|
+
alt?: string;
|
|
30
|
+
}>;
|
|
31
|
+
};
|
|
32
|
+
twitter?: {
|
|
33
|
+
card?: string;
|
|
34
|
+
title?: string;
|
|
35
|
+
description?: string;
|
|
36
|
+
images?: string[];
|
|
37
|
+
};
|
|
38
|
+
robots?: {
|
|
39
|
+
index?: boolean;
|
|
40
|
+
follow?: boolean;
|
|
41
|
+
};
|
|
42
|
+
verification?: {
|
|
43
|
+
google?: string;
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
type PageMetadataInput = {
|
|
47
|
+
/**
|
|
48
|
+
* Page data from loadPage() or custom page object
|
|
49
|
+
*/
|
|
50
|
+
page: LoadPageResult['page'] | {
|
|
51
|
+
name: string;
|
|
52
|
+
purpose?: string;
|
|
53
|
+
};
|
|
54
|
+
/**
|
|
55
|
+
* Site data from client.getSite()
|
|
56
|
+
*/
|
|
57
|
+
site: SiteResponse['site'];
|
|
58
|
+
/**
|
|
59
|
+
* Current URL path (e.g., '/about', '/blog/post-1')
|
|
60
|
+
*/
|
|
61
|
+
path: string;
|
|
62
|
+
/**
|
|
63
|
+
* Full site URL for canonical and OG URLs
|
|
64
|
+
* Example: 'https://example.com'
|
|
65
|
+
*/
|
|
66
|
+
siteUrl: string;
|
|
67
|
+
/**
|
|
68
|
+
* Optional custom metadata overrides
|
|
69
|
+
*/
|
|
70
|
+
overrides?: {
|
|
71
|
+
title?: string;
|
|
72
|
+
description?: string;
|
|
73
|
+
ogImage?: string;
|
|
74
|
+
canonicalUrl?: string;
|
|
75
|
+
robots?: {
|
|
76
|
+
index?: boolean;
|
|
77
|
+
follow?: boolean;
|
|
78
|
+
};
|
|
79
|
+
};
|
|
80
|
+
/**
|
|
81
|
+
* Optional Google site verification token
|
|
82
|
+
*/
|
|
83
|
+
googleSiteVerification?: string;
|
|
84
|
+
};
|
|
85
|
+
/**
|
|
86
|
+
* Generate Next.js Metadata object from Builder page data
|
|
87
|
+
*
|
|
88
|
+
* @example
|
|
89
|
+
* ```tsx
|
|
90
|
+
* import { generatePageMetadata } from '@riverbankcms/sdk/metadata';
|
|
91
|
+
* import { loadPage } from '@riverbankcms/sdk';
|
|
92
|
+
*
|
|
93
|
+
* export async function generateMetadata({ params }) {
|
|
94
|
+
* const pageData = await loadPage({ client, siteId, path: params.slug });
|
|
95
|
+
* const siteData = await client.getSite({ id: siteId });
|
|
96
|
+
*
|
|
97
|
+
* return generatePageMetadata({
|
|
98
|
+
* page: pageData.page,
|
|
99
|
+
* site: siteData.site,
|
|
100
|
+
* path: params.slug,
|
|
101
|
+
* siteUrl: 'https://example.com',
|
|
102
|
+
* });
|
|
103
|
+
* }
|
|
104
|
+
* ```
|
|
105
|
+
*/
|
|
106
|
+
declare function generatePageMetadata(input: PageMetadataInput): Metadata;
|
|
107
|
+
/**
|
|
108
|
+
* Generate metadata for preview/staging environments
|
|
109
|
+
*
|
|
110
|
+
* This helper adds noindex/nofollow robots tags to prevent search engines
|
|
111
|
+
* from indexing preview or staging URLs.
|
|
112
|
+
*
|
|
113
|
+
* @example
|
|
114
|
+
* ```tsx
|
|
115
|
+
* export async function generateMetadata({ params }) {
|
|
116
|
+
* const pageData = await loadPage({ client, siteId, path: params.slug });
|
|
117
|
+
* const isPreview = process.env.VERCEL_ENV !== 'production';
|
|
118
|
+
*
|
|
119
|
+
* return generatePreviewMetadata({
|
|
120
|
+
* page: pageData.page,
|
|
121
|
+
* site: siteData.site,
|
|
122
|
+
* path: params.slug,
|
|
123
|
+
* siteUrl: 'https://example.com',
|
|
124
|
+
* });
|
|
125
|
+
* }
|
|
126
|
+
* ```
|
|
127
|
+
*/
|
|
128
|
+
declare function generatePreviewMetadata(input: PageMetadataInput): Metadata;
|
|
129
|
+
|
|
130
|
+
export { type Metadata as M, type PageMetadataInput as P, generatePreviewMetadata as a, generatePageMetadata as g };
|
package/dist/server/index.d.mts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { c as createRiverbankClient } from './index-
|
|
2
|
-
export { E as EntriesResponse, c as EntriesResponseWithMeta, b as EntryResponse, P as PageResponse, d as PaginationMeta, R as RiverbankClient, a as RiverbankClientConfig, S as SiteResponse } from './types-
|
|
1
|
+
export { c as createRiverbankClient } from './index-Bkva0WAj.mjs';
|
|
2
|
+
export { E as EntriesResponse, c as EntriesResponseWithMeta, b as EntryResponse, P as PageResponse, d as PaginationMeta, R as RiverbankClient, a as RiverbankClientConfig, S as SiteResponse } from './types-MF2AWoKv.mjs';
|
|
3
3
|
import { A as APIEndpoints, b as APICallParams } from './types-Dsu9wsUh.mjs';
|
|
4
4
|
import './schema-Z6-afHJG.mjs';
|
|
5
5
|
export { g as ContainerAlignment, f as ContainerMaxWidth, d as ContainerOptionsConfig, R as RiverbankSiteConfig, b as SectionBackground, c as SectionOptionsConfig, e as SectionSpacing, S as SiteStyleConfig } from './types-BjgZt8xJ.mjs';
|
|
@@ -35,7 +35,7 @@ interface ApiResponse<TData> {
|
|
|
35
35
|
data: TData;
|
|
36
36
|
meta: ResponseMeta;
|
|
37
37
|
}
|
|
38
|
-
type ApiErrorCode = 'auth:unauthenticated' | 'auth:token_expired' | 'auth:token_invalid' | 'auth:forbidden' | 'auth:mfa_required' | 'auth:sudo_required' | 'auth:insufficient_permissions' | 'auth:impersonation_restricted' | 'validation:invalid_input' | 'validation:missing_field' | 'validation:invalid_format' | 'validation:payload_too_large' | 'resource:not_found' | 'resource:already_exists' | 'resource:conflict' | 'resource:gone' | 'rate_limit:exceeded' | 'billing:payment_required' | 'billing:plan_limit_exceeded' | 'server:internal_error' | 'server:unavailable' | 'external:service_error';
|
|
38
|
+
type ApiErrorCode = 'auth:unauthenticated' | 'auth:token_expired' | 'auth:token_invalid' | 'auth:forbidden' | 'auth:mfa_required' | 'auth:sudo_required' | 'auth:insufficient_permissions' | 'auth:impersonation_restricted' | 'validation:invalid_input' | 'validation:missing_field' | 'validation:invalid_format' | 'validation:payload_too_large' | 'resource:not_found' | 'resource:already_exists' | 'resource:conflict' | 'resource:gone' | 'rate_limit:exceeded' | 'billing:payment_required' | 'billing:plan_limit_exceeded' | 'server:internal_error' | 'server:unavailable' | 'external:service_error' | 'network:connection_error' | 'network:timeout' | 'network:dns_error';
|
|
39
39
|
interface FieldError {
|
|
40
40
|
field: string;
|
|
41
41
|
code: string;
|
package/dist/server/index.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
export { c as createRiverbankClient } from './index-
|
|
2
|
-
export { E as EntriesResponse, c as EntriesResponseWithMeta, b as EntryResponse, P as PageResponse, d as PaginationMeta, R as RiverbankClient, a as RiverbankClientConfig, S as SiteResponse } from './types-
|
|
1
|
+
export { c as createRiverbankClient } from './index-CSBWKA3r.js';
|
|
2
|
+
export { E as EntriesResponse, c as EntriesResponseWithMeta, b as EntryResponse, P as PageResponse, d as PaginationMeta, R as RiverbankClient, a as RiverbankClientConfig, S as SiteResponse } from './types-DnkRh0UL.js';
|
|
3
3
|
import { A as APIEndpoints, b as APICallParams } from './types-CVykEqXN.js';
|
|
4
4
|
import './schema-Z6-afHJG.js';
|
|
5
5
|
export { g as ContainerAlignment, f as ContainerMaxWidth, d as ContainerOptionsConfig, R as RiverbankSiteConfig, b as SectionBackground, c as SectionOptionsConfig, e as SectionSpacing, S as SiteStyleConfig } from './types-DLBhEPSt.js';
|
|
@@ -35,7 +35,7 @@ interface ApiResponse<TData> {
|
|
|
35
35
|
data: TData;
|
|
36
36
|
meta: ResponseMeta;
|
|
37
37
|
}
|
|
38
|
-
type ApiErrorCode = 'auth:unauthenticated' | 'auth:token_expired' | 'auth:token_invalid' | 'auth:forbidden' | 'auth:mfa_required' | 'auth:sudo_required' | 'auth:insufficient_permissions' | 'auth:impersonation_restricted' | 'validation:invalid_input' | 'validation:missing_field' | 'validation:invalid_format' | 'validation:payload_too_large' | 'resource:not_found' | 'resource:already_exists' | 'resource:conflict' | 'resource:gone' | 'rate_limit:exceeded' | 'billing:payment_required' | 'billing:plan_limit_exceeded' | 'server:internal_error' | 'server:unavailable' | 'external:service_error';
|
|
38
|
+
type ApiErrorCode = 'auth:unauthenticated' | 'auth:token_expired' | 'auth:token_invalid' | 'auth:forbidden' | 'auth:mfa_required' | 'auth:sudo_required' | 'auth:insufficient_permissions' | 'auth:impersonation_restricted' | 'validation:invalid_input' | 'validation:missing_field' | 'validation:invalid_format' | 'validation:payload_too_large' | 'resource:not_found' | 'resource:already_exists' | 'resource:conflict' | 'resource:gone' | 'rate_limit:exceeded' | 'billing:payment_required' | 'billing:plan_limit_exceeded' | 'server:internal_error' | 'server:unavailable' | 'external:service_error' | 'network:connection_error' | 'network:timeout' | 'network:dns_error';
|
|
39
39
|
interface FieldError {
|
|
40
40
|
field: string;
|
|
41
41
|
code: string;
|
package/dist/server/index.js
CHANGED
|
@@ -5,8 +5,7 @@ var _chunkGERCMTPQjs = require('./chunk-GERCMTPQ.js');
|
|
|
5
5
|
|
|
6
6
|
|
|
7
7
|
|
|
8
|
-
var
|
|
9
|
-
require('./chunk-DGUM43GV.js');
|
|
8
|
+
var _chunkHMENX4Y7js = require('./chunk-HMENX4Y7.js');
|
|
10
9
|
|
|
11
10
|
// ../api/src/aiPlayground.ts
|
|
12
11
|
var _zod = require('zod');
|
|
@@ -101,5 +100,5 @@ var MultiPageUpdateResponse = _zod.z.object({
|
|
|
101
100
|
|
|
102
101
|
|
|
103
102
|
|
|
104
|
-
exports.API_ENDPOINTS =
|
|
103
|
+
exports.API_ENDPOINTS = _chunkHMENX4Y7js.API_ENDPOINTS; exports.SYSTEM_BLOCK_KINDS = _chunkGERCMTPQjs.SYSTEM_BLOCK_KINDS; exports.buildEndpointURL = _chunkHMENX4Y7js.buildEndpointURL; exports.createRiverbankClient = _chunkHMENX4Y7js.createRiverbankClient;
|
|
105
104
|
//# sourceMappingURL=index.js.map
|
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["/Users/will/Projects/Business/cms/builder/packages/sdk/dist/server/index.js","../../../api/src/aiPlayground.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACF,sDAA4B;AAC5B
|
|
1
|
+
{"version":3,"sources":["/Users/will/Projects/Business/cms/builder/packages/sdk/dist/server/index.js","../../../api/src/aiPlayground.ts"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B;AACE;AACA;AACA;AACF,sDAA4B;AAC5B;AACA;ACTA,0BAAkB;AAOX,IAAM,eAAA,EAAiB,MAAA,CAAE,kBAAA,CAAmB,IAAA,EAAM;AAAA;AAAA,EAEvD,MAAA,CAAE,MAAA,CAAO;AAAA,IACP,EAAA,EAAI,MAAA,CAAE,OAAA,CAAQ,KAAK,CAAA;AAAA,IACnB,IAAA,EAAM,MAAA,CAAE,MAAA,CAAO,CAAA;AAAA,IACf,KAAA,EAAO,MAAA,CAAE,OAAA,CAAQ;AAAA,EACnB,CAAC,CAAA;AAAA,EACD,MAAA,CAAE,MAAA,CAAO;AAAA,IACP,EAAA,EAAI,MAAA,CAAE,OAAA,CAAQ,QAAQ,CAAA;AAAA,IACtB,IAAA,EAAM,MAAA,CAAE,MAAA,CAAO;AAAA,EACjB,CAAC,CAAA;AAAA,EACD,MAAA,CAAE,MAAA,CAAO;AAAA,IACP,EAAA,EAAI,MAAA,CAAE,OAAA,CAAQ,SAAS,CAAA;AAAA,IACvB,IAAA,EAAM,MAAA,CAAE,MAAA,CAAO,CAAA;AAAA,IACf,KAAA,EAAO,MAAA,CAAE,OAAA,CAAQ;AAAA,EACnB,CAAC,CAAA;AAAA,EACD,MAAA,CAAE,MAAA,CAAO;AAAA,IACP,EAAA,EAAI,MAAA,CAAE,OAAA,CAAQ,MAAM,CAAA;AAAA,IACpB,IAAA,EAAM,MAAA,CAAE,MAAA,CAAO,CAAA;AAAA,IACf,IAAA,EAAM,MAAA,CAAE,MAAA,CAAO;AAAA,EACjB,CAAC,CAAA;AAAA,EACD,MAAA,CAAE,MAAA,CAAO;AAAA,IACP,EAAA,EAAI,MAAA,CAAE,OAAA,CAAQ,MAAM,CAAA;AAAA,IACpB,IAAA,EAAM,MAAA,CAAE,MAAA,CAAO,CAAA;AAAA,IACf,IAAA,EAAM,MAAA,CAAE,MAAA,CAAO;AAAA,EACjB,CAAC,CAAA;AAAA;AAAA,EAED,MAAA,CAAE,MAAA,CAAO;AAAA,IACP,EAAA,EAAI,MAAA,CAAE,OAAA,CAAQ,WAAW,CAAA;AAAA,IACzB,SAAA,EAAW,MAAA,CAAE,MAAA,CAAO,CAAA;AAAA,IACpB,YAAA,EAAc,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,QAAA,CAAS,CAAA;AAAA,IAClC,OAAA,EAAS,MAAA,CAAE,MAAA,CAAO,MAAA,CAAE,MAAA,CAAO,CAAA,EAAG,MAAA,CAAE,OAAA,CAAQ,CAAC,CAAA;AAAA,IACzC,SAAA,EAAW,MAAA,CAAE,MAAA,CAAO;AAAA,EACtB,CAAC,CAAA;AAAA,EACD,MAAA,CAAE,MAAA,CAAO;AAAA,IACP,EAAA,EAAI,MAAA,CAAE,OAAA,CAAQ,cAAc,CAAA;AAAA,IAC5B,OAAA,EAAS,MAAA,CAAE,MAAA,CAAO,CAAA;AAAA,IAClB,SAAA,EAAW,MAAA,CAAE,MAAA,CAAO;AAAA,EACtB,CAAC,CAAA;AAAA,EACD,MAAA,CAAE,MAAA,CAAO;AAAA,IACP,EAAA,EAAI,MAAA,CAAE,OAAA,CAAQ,eAAe,CAAA;AAAA,IAC7B,OAAA,EAAS,MAAA,CAAE,MAAA,CAAO,CAAA;AAAA,IAClB,YAAA,EAAc,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,QAAA,CAAS,CAAA;AAAA,IAClC,SAAA,EAAW,MAAA,CAAE,MAAA,CAAO;AAAA,EACtB,CAAC;AACH,CAAC,CAAA;AAEM,IAAM,cAAA,EAAgB,MAAA,CAAE,MAAA,CAAO;AAAA,EACpC,OAAA,EAAS,MAAA,CAAE,MAAA,CAAO,CAAA;AAAA,EAClB,SAAA,EAAW,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,QAAA,CAAS,CAAA;AAAA,EAC/B,YAAA,EAAc,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,QAAA,CAAS,CAAA,CAAE,QAAA,CAAS,CAAA;AAAA,EAC7C,GAAA,EAAK,MAAA,CAAE,KAAA,CAAM,cAAc,CAAA;AAAA,EAC3B,SAAA,EAAW,MAAA,CAAE,MAAA,CAAO,CAAA;AAAA,EACpB,cAAA,EAAgB,MAAA,CAAE,MAAA,CAAO,MAAA,CAAE,MAAA,CAAO,CAAA,EAAG,MAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,CAAE,QAAA,CAAS;AAC7D,CAAC,CAAA;AAEM,IAAM,sBAAA,EAAwB,MAAA,CAAE,MAAA,CAAO;AAAA,EAC5C,OAAA,EAAS,MAAA,CAAE,KAAA,CAAM,aAAa,CAAA;AAAA,EAC9B,gBAAA,EAAkB,MAAA,CAAE,MAAA,CAAO;AAC7B,CAAC,CAAA;AAEM,IAAM,yBAAA,EAA2B,MAAA,CAAE,MAAA,CAAO;AAAA,EAC/C,OAAA,EAAS,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,GAAA,CAAI,CAAC,CAAA,CAAE,GAAA,CAAI,GAAI;AACrC,CAAC,CAAA;AAEM,IAAM,0BAAA,EAA4B,MAAA,CAAE,MAAA,CAAO;AAAA,EAChD,OAAA,EAAS,MAAA,CAAE,KAAA,CAAM,aAAa,CAAA;AAAA,EAC9B,gBAAA,EAAkB,MAAA,CAAE,MAAA,CAAO,CAAA;AAAA,EAC3B,UAAA,EAAY,MAAA,CAAE,MAAA,CAAO;AAAA,IACnB,KAAA,EAAO,MAAA,CAAE,OAAA,CAAQ,CAAA;AAAA,IACjB,MAAA,EAAQ,MAAA,CAAE,KAAA,CAAM,MAAA,CAAE,MAAA,CAAO,CAAC,CAAA;AAAA,IAC1B,QAAA,EAAU,MAAA,CAAE,MAAA,CAAO;AAAA,EACrB,CAAC;AACH,CAAC,CAAA;AAGM,IAAM,uBAAA,EAAyB,MAAA,CAAE,MAAA,CAAO;AAAA,EAC7C,MAAA,EAAQ,MAAA,CAAE,MAAA,CAAO,CAAA;AAAA,EACjB,OAAA,EAAS,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,QAAA,CAAS,CAAA;AAAA;AAAA,EAC7B,SAAA,EAAW,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,QAAA,CAAS,CAAA;AAAA,EAC/B,YAAA,EAAc,MAAA,CAAE,MAAA,CAAO,CAAA,CAAE,QAAA,CAAS,CAAA,CAAE,QAAA,CAAS,CAAA;AAAA,EAC7C,GAAA,EAAK,MAAA,CAAE,KAAA,CAAM,cAAc,CAAA;AAAA,EAC3B,SAAA,EAAW,MAAA,CAAE,MAAA,CAAO,CAAA;AAAA,EACpB,cAAA,EAAgB,MAAA,CAAE,MAAA,CAAO,MAAA,CAAE,MAAA,CAAO,CAAA,EAAG,MAAA,CAAE,OAAA,CAAQ,CAAC,CAAA,CAAE,QAAA,CAAS;AAC7D,CAAC,CAAA;AAEM,IAAM,wBAAA,EAA0B,MAAA,CAAE,MAAA,CAAO;AAAA,EAC9C,OAAA,EAAS,MAAA,CAAE,KAAA,CAAM,sBAAsB,CAAA;AAAA,EACvC,gBAAA,EAAkB,MAAA,CAAE,MAAA,CAAO,CAAA;AAAA,EAC3B,aAAA,EAAe,MAAA,CAAE,MAAA,CAAO,CAAA;AAAA,EACxB,aAAA,EAAe,MAAA,CAAE,MAAA,CAAO;AAC1B,CAAC,CAAA;ADDD;AACE;AACA;AACA;AACA;AACF,+PAAC","file":"/Users/will/Projects/Business/cms/builder/packages/sdk/dist/server/index.js","sourcesContent":[null,"import { z } from 'zod';\n\n/**\n * RFC-6902 JSON Patch Operations\n * Standard JSON Patch format for AI Playground content updates\n */\n\nexport const Rfc6902PatchOp = z.discriminatedUnion('op', [\n // Standard RFC-6902 operations\n z.object({\n op: z.literal('add'),\n path: z.string(),\n value: z.unknown(),\n }),\n z.object({\n op: z.literal('remove'),\n path: z.string(),\n }),\n z.object({\n op: z.literal('replace'),\n path: z.string(),\n value: z.unknown(),\n }),\n z.object({\n op: z.literal('move'),\n from: z.string(),\n path: z.string(),\n }),\n z.object({\n op: z.literal('copy'),\n from: z.string(),\n path: z.string(),\n }),\n // Block-level operations (Phase 2)\n z.object({\n op: z.literal('add_block'),\n blockKind: z.string(),\n afterBlockId: z.string().nullable(),\n content: z.record(z.string(), z.unknown()),\n rationale: z.string(),\n }),\n z.object({\n op: z.literal('delete_block'),\n blockId: z.string(),\n rationale: z.string(),\n }),\n z.object({\n op: z.literal('reorder_block'),\n blockId: z.string(),\n afterBlockId: z.string().nullable(),\n rationale: z.string(),\n }),\n]);\n\nexport const PatchEnvelope = z.object({\n blockId: z.string(),\n blockKind: z.string().optional(),\n blockPurpose: z.string().optional().nullable(),\n ops: z.array(Rfc6902PatchOp),\n rationale: z.string(),\n currentContent: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const ContentUpdateResponse = z.object({\n patches: z.array(PatchEnvelope),\n assistantMessage: z.string(),\n});\n\nexport const PlaygroundProposeRequest = z.object({\n request: z.string().min(1).max(2000),\n});\n\nexport const PlaygroundProposeResponse = z.object({\n patches: z.array(PatchEnvelope),\n assistantMessage: z.string(),\n validation: z.object({\n valid: z.boolean(),\n issues: z.array(z.string()),\n filtered: z.number(),\n }),\n});\n\n// Multi-page schemas (Phase 2)\nexport const MultiPagePatchEnvelope = z.object({\n pageId: z.string(),\n blockId: z.string().optional(), // Not present for page-level ops\n blockKind: z.string().optional(),\n blockPurpose: z.string().optional().nullable(),\n ops: z.array(Rfc6902PatchOp),\n rationale: z.string(),\n currentContent: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const MultiPageUpdateResponse = z.object({\n patches: z.array(MultiPagePatchEnvelope),\n assistantMessage: z.string(),\n pagesModified: z.number(),\n toolCallsUsed: z.number(),\n});\n\n// Stream event types for real-time updates\nexport type StreamEvent =\n | { type: 'status'; message: string; detail?: string }\n | { type: 'tool_call'; tool: string; args: unknown }\n | { type: 'tool_result'; tool: string; summary: string }\n | { type: 'patch_group'; envelope: MultiPagePatchEnvelope }\n | { type: 'complete'; response: MultiPageUpdateResponse };\n\n// Types - export both the schemas and the inferred types\nexport type Rfc6902PatchOp = z.infer<typeof Rfc6902PatchOp>;\nexport type PatchEnvelope = z.infer<typeof PatchEnvelope>;\nexport type ContentUpdateResponse = z.infer<typeof ContentUpdateResponse>;\nexport type PlaygroundProposeRequest = z.infer<typeof PlaygroundProposeRequest>;\nexport type PlaygroundProposeResponse = z.infer<typeof PlaygroundProposeResponse>;\nexport type MultiPagePatchEnvelope = z.infer<typeof MultiPagePatchEnvelope>;\nexport type MultiPageUpdateResponse = z.infer<typeof MultiPageUpdateResponse>;\n\n// Re-export schemas for runtime validation\nexport {\n Rfc6902PatchOp as Rfc6902PatchOpSchema,\n PatchEnvelope as PatchEnvelopeSchema,\n ContentUpdateResponse as ContentUpdateResponseSchema,\n PlaygroundProposeRequest as PlaygroundProposeRequestSchema,\n PlaygroundProposeResponse as PlaygroundProposeResponseSchema,\n MultiPagePatchEnvelope as MultiPagePatchEnvelopeSchema,\n MultiPageUpdateResponse as MultiPageUpdateResponseSchema,\n};\n\n// Page context types for building AI prompts\nexport type AllowedField = {\n path: string;\n type: 'richtext' | 'plaintext' | 'url' | 'number' | 'boolean';\n};\n\nexport type BlockContext = {\n id: string;\n kind: string;\n purpose: string | null;\n orderIndex: number;\n allowedPaths: string[]; // Legacy, kept for backward compat\n allowedFields?: AllowedField[]; // New structured format with types\n content: Record<string, unknown>;\n};\n\nexport type PageContext = {\n site: {\n id: string;\n title: string;\n primaryDomain: string | null;\n };\n page: {\n id: string;\n path: string;\n title: string;\n slug: string | null;\n metaTitle: string | null;\n metaDescription: string | null;\n blocks: BlockContext[];\n };\n};\n"]}
|
package/dist/server/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../../api/src/aiPlayground.ts"],"sourcesContent":["import { z } from 'zod';\n\n/**\n * RFC-6902 JSON Patch Operations\n * Standard JSON Patch format for AI Playground content updates\n */\n\nexport const Rfc6902PatchOp = z.discriminatedUnion('op', [\n // Standard RFC-6902 operations\n z.object({\n op: z.literal('add'),\n path: z.string(),\n value: z.unknown(),\n }),\n z.object({\n op: z.literal('remove'),\n path: z.string(),\n }),\n z.object({\n op: z.literal('replace'),\n path: z.string(),\n value: z.unknown(),\n }),\n z.object({\n op: z.literal('move'),\n from: z.string(),\n path: z.string(),\n }),\n z.object({\n op: z.literal('copy'),\n from: z.string(),\n path: z.string(),\n }),\n // Block-level operations (Phase 2)\n z.object({\n op: z.literal('add_block'),\n blockKind: z.string(),\n afterBlockId: z.string().nullable(),\n content: z.record(z.string(), z.unknown()),\n rationale: z.string(),\n }),\n z.object({\n op: z.literal('delete_block'),\n blockId: z.string(),\n rationale: z.string(),\n }),\n z.object({\n op: z.literal('reorder_block'),\n blockId: z.string(),\n afterBlockId: z.string().nullable(),\n rationale: z.string(),\n }),\n]);\n\nexport const PatchEnvelope = z.object({\n blockId: z.string(),\n blockKind: z.string().optional(),\n blockPurpose: z.string().optional().nullable(),\n ops: z.array(Rfc6902PatchOp),\n rationale: z.string(),\n currentContent: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const ContentUpdateResponse = z.object({\n patches: z.array(PatchEnvelope),\n assistantMessage: z.string(),\n});\n\nexport const PlaygroundProposeRequest = z.object({\n request: z.string().min(1).max(2000),\n});\n\nexport const PlaygroundProposeResponse = z.object({\n patches: z.array(PatchEnvelope),\n assistantMessage: z.string(),\n validation: z.object({\n valid: z.boolean(),\n issues: z.array(z.string()),\n filtered: z.number(),\n }),\n});\n\n// Multi-page schemas (Phase 2)\nexport const MultiPagePatchEnvelope = z.object({\n pageId: z.string(),\n blockId: z.string().optional(), // Not present for page-level ops\n blockKind: z.string().optional(),\n blockPurpose: z.string().optional().nullable(),\n ops: z.array(Rfc6902PatchOp),\n rationale: z.string(),\n currentContent: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const MultiPageUpdateResponse = z.object({\n patches: z.array(MultiPagePatchEnvelope),\n assistantMessage: z.string(),\n pagesModified: z.number(),\n toolCallsUsed: z.number(),\n});\n\n// Stream event types for real-time updates\nexport type StreamEvent =\n | { type: 'status'; message: string; detail?: string }\n | { type: 'tool_call'; tool: string; args: unknown }\n | { type: 'tool_result'; tool: string; summary: string }\n | { type: 'patch_group'; envelope: MultiPagePatchEnvelope }\n | { type: 'complete'; response: MultiPageUpdateResponse };\n\n// Types - export both the schemas and the inferred types\nexport type Rfc6902PatchOp = z.infer<typeof Rfc6902PatchOp>;\nexport type PatchEnvelope = z.infer<typeof PatchEnvelope>;\nexport type ContentUpdateResponse = z.infer<typeof ContentUpdateResponse>;\nexport type PlaygroundProposeRequest = z.infer<typeof PlaygroundProposeRequest>;\nexport type PlaygroundProposeResponse = z.infer<typeof PlaygroundProposeResponse>;\nexport type MultiPagePatchEnvelope = z.infer<typeof MultiPagePatchEnvelope>;\nexport type MultiPageUpdateResponse = z.infer<typeof MultiPageUpdateResponse>;\n\n// Re-export schemas for runtime validation\nexport {\n Rfc6902PatchOp as Rfc6902PatchOpSchema,\n PatchEnvelope as PatchEnvelopeSchema,\n ContentUpdateResponse as ContentUpdateResponseSchema,\n PlaygroundProposeRequest as PlaygroundProposeRequestSchema,\n PlaygroundProposeResponse as PlaygroundProposeResponseSchema,\n MultiPagePatchEnvelope as MultiPagePatchEnvelopeSchema,\n MultiPageUpdateResponse as MultiPageUpdateResponseSchema,\n};\n\n// Page context types for building AI prompts\nexport type AllowedField = {\n path: string;\n type: 'richtext' | 'plaintext' | 'url' | 'number' | 'boolean';\n};\n\nexport type BlockContext = {\n id: string;\n kind: string;\n purpose: string | null;\n orderIndex: number;\n allowedPaths: string[]; // Legacy, kept for backward compat\n allowedFields?: AllowedField[]; // New structured format with types\n content: Record<string, unknown>;\n};\n\nexport type PageContext = {\n site: {\n id: string;\n title: string;\n primaryDomain: string | null;\n };\n page: {\n id: string;\n path: string;\n title: string;\n slug: string | null;\n metaTitle: string | null;\n metaDescription: string | null;\n blocks: BlockContext[];\n };\n};\n"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["../../../api/src/aiPlayground.ts"],"sourcesContent":["import { z } from 'zod';\n\n/**\n * RFC-6902 JSON Patch Operations\n * Standard JSON Patch format for AI Playground content updates\n */\n\nexport const Rfc6902PatchOp = z.discriminatedUnion('op', [\n // Standard RFC-6902 operations\n z.object({\n op: z.literal('add'),\n path: z.string(),\n value: z.unknown(),\n }),\n z.object({\n op: z.literal('remove'),\n path: z.string(),\n }),\n z.object({\n op: z.literal('replace'),\n path: z.string(),\n value: z.unknown(),\n }),\n z.object({\n op: z.literal('move'),\n from: z.string(),\n path: z.string(),\n }),\n z.object({\n op: z.literal('copy'),\n from: z.string(),\n path: z.string(),\n }),\n // Block-level operations (Phase 2)\n z.object({\n op: z.literal('add_block'),\n blockKind: z.string(),\n afterBlockId: z.string().nullable(),\n content: z.record(z.string(), z.unknown()),\n rationale: z.string(),\n }),\n z.object({\n op: z.literal('delete_block'),\n blockId: z.string(),\n rationale: z.string(),\n }),\n z.object({\n op: z.literal('reorder_block'),\n blockId: z.string(),\n afterBlockId: z.string().nullable(),\n rationale: z.string(),\n }),\n]);\n\nexport const PatchEnvelope = z.object({\n blockId: z.string(),\n blockKind: z.string().optional(),\n blockPurpose: z.string().optional().nullable(),\n ops: z.array(Rfc6902PatchOp),\n rationale: z.string(),\n currentContent: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const ContentUpdateResponse = z.object({\n patches: z.array(PatchEnvelope),\n assistantMessage: z.string(),\n});\n\nexport const PlaygroundProposeRequest = z.object({\n request: z.string().min(1).max(2000),\n});\n\nexport const PlaygroundProposeResponse = z.object({\n patches: z.array(PatchEnvelope),\n assistantMessage: z.string(),\n validation: z.object({\n valid: z.boolean(),\n issues: z.array(z.string()),\n filtered: z.number(),\n }),\n});\n\n// Multi-page schemas (Phase 2)\nexport const MultiPagePatchEnvelope = z.object({\n pageId: z.string(),\n blockId: z.string().optional(), // Not present for page-level ops\n blockKind: z.string().optional(),\n blockPurpose: z.string().optional().nullable(),\n ops: z.array(Rfc6902PatchOp),\n rationale: z.string(),\n currentContent: z.record(z.string(), z.unknown()).optional(),\n});\n\nexport const MultiPageUpdateResponse = z.object({\n patches: z.array(MultiPagePatchEnvelope),\n assistantMessage: z.string(),\n pagesModified: z.number(),\n toolCallsUsed: z.number(),\n});\n\n// Stream event types for real-time updates\nexport type StreamEvent =\n | { type: 'status'; message: string; detail?: string }\n | { type: 'tool_call'; tool: string; args: unknown }\n | { type: 'tool_result'; tool: string; summary: string }\n | { type: 'patch_group'; envelope: MultiPagePatchEnvelope }\n | { type: 'complete'; response: MultiPageUpdateResponse };\n\n// Types - export both the schemas and the inferred types\nexport type Rfc6902PatchOp = z.infer<typeof Rfc6902PatchOp>;\nexport type PatchEnvelope = z.infer<typeof PatchEnvelope>;\nexport type ContentUpdateResponse = z.infer<typeof ContentUpdateResponse>;\nexport type PlaygroundProposeRequest = z.infer<typeof PlaygroundProposeRequest>;\nexport type PlaygroundProposeResponse = z.infer<typeof PlaygroundProposeResponse>;\nexport type MultiPagePatchEnvelope = z.infer<typeof MultiPagePatchEnvelope>;\nexport type MultiPageUpdateResponse = z.infer<typeof MultiPageUpdateResponse>;\n\n// Re-export schemas for runtime validation\nexport {\n Rfc6902PatchOp as Rfc6902PatchOpSchema,\n PatchEnvelope as PatchEnvelopeSchema,\n ContentUpdateResponse as ContentUpdateResponseSchema,\n PlaygroundProposeRequest as PlaygroundProposeRequestSchema,\n PlaygroundProposeResponse as PlaygroundProposeResponseSchema,\n MultiPagePatchEnvelope as MultiPagePatchEnvelopeSchema,\n MultiPageUpdateResponse as MultiPageUpdateResponseSchema,\n};\n\n// Page context types for building AI prompts\nexport type AllowedField = {\n path: string;\n type: 'richtext' | 'plaintext' | 'url' | 'number' | 'boolean';\n};\n\nexport type BlockContext = {\n id: string;\n kind: string;\n purpose: string | null;\n orderIndex: number;\n allowedPaths: string[]; // Legacy, kept for backward compat\n allowedFields?: AllowedField[]; // New structured format with types\n content: Record<string, unknown>;\n};\n\nexport type PageContext = {\n site: {\n id: string;\n title: string;\n primaryDomain: string | null;\n };\n page: {\n id: string;\n path: string;\n title: string;\n slug: string | null;\n metaTitle: string | null;\n metaDescription: string | null;\n blocks: BlockContext[];\n };\n};\n"],"mappings":"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","names":[]}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { T as Theme } from './types-CVykEqXN.js';
|
|
2
2
|
import './schema-Z6-afHJG.js';
|
|
3
|
-
import { R as RiverbankClient } from './types-
|
|
4
|
-
import { P as PageProps } from './loadPage-
|
|
3
|
+
import { R as RiverbankClient, S as SiteResponse } from './types-DnkRh0UL.js';
|
|
4
|
+
import { P as PageProps } from './loadPage-i2r-X5b9.js';
|
|
5
5
|
import { R as ResolvedBlockData } from './types-DuQCNVV0.js';
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -11,6 +11,10 @@ import { R as ResolvedBlockData } from './types-DuQCNVV0.js';
|
|
|
11
11
|
* a page or a content entry.
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Site data included in content results for metadata generation.
|
|
16
|
+
*/
|
|
17
|
+
type SiteData = SiteResponse['site'];
|
|
14
18
|
type LoadContentParams = {
|
|
15
19
|
client: RiverbankClient;
|
|
16
20
|
siteId: string;
|
|
@@ -56,6 +60,8 @@ type PageContentResult = {
|
|
|
56
60
|
siteId: string;
|
|
57
61
|
/** Pre-fetched block data for data loaders */
|
|
58
62
|
resolvedData: ResolvedBlockData;
|
|
63
|
+
/** Site data for metadata generation */
|
|
64
|
+
site: SiteData;
|
|
59
65
|
};
|
|
60
66
|
/**
|
|
61
67
|
* Result when path resolves to a content entry
|
|
@@ -76,6 +82,8 @@ type EntryContentResult = {
|
|
|
76
82
|
theme: Theme;
|
|
77
83
|
/** Site ID */
|
|
78
84
|
siteId: string;
|
|
85
|
+
/** Site data for metadata generation */
|
|
86
|
+
site: SiteData;
|
|
79
87
|
};
|
|
80
88
|
/**
|
|
81
89
|
* Discriminated union result from loadContent
|
|
@@ -150,4 +158,4 @@ declare function isEntryContent(result: LoadContentResult): result is EntryConte
|
|
|
150
158
|
*/
|
|
151
159
|
declare function loadContent(params: LoadContentParams): Promise<LoadContentResult>;
|
|
152
160
|
|
|
153
|
-
export { type ContentEntryData as C, type EntryContentResult as E, type LoadContentParams as L, type PageContentResult as P, isEntryContent as a, type LoadContentResult as b, isPageContent as i, loadContent as l };
|
|
161
|
+
export { type ContentEntryData as C, type EntryContentResult as E, type LoadContentParams as L, type PageContentResult as P, type SiteData as S, isEntryContent as a, type LoadContentResult as b, isPageContent as i, loadContent as l };
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { T as Theme } from './types-Dsu9wsUh.mjs';
|
|
2
2
|
import './schema-Z6-afHJG.mjs';
|
|
3
|
-
import { R as RiverbankClient } from './types-
|
|
4
|
-
import { P as PageProps } from './loadPage-
|
|
3
|
+
import { R as RiverbankClient, S as SiteResponse } from './types-MF2AWoKv.mjs';
|
|
4
|
+
import { P as PageProps } from './loadPage-CxlYLe5K.mjs';
|
|
5
5
|
import { R as ResolvedBlockData } from './types-CbagRQ_7.mjs';
|
|
6
6
|
|
|
7
7
|
/**
|
|
@@ -11,6 +11,10 @@ import { R as ResolvedBlockData } from './types-CbagRQ_7.mjs';
|
|
|
11
11
|
* a page or a content entry.
|
|
12
12
|
*/
|
|
13
13
|
|
|
14
|
+
/**
|
|
15
|
+
* Site data included in content results for metadata generation.
|
|
16
|
+
*/
|
|
17
|
+
type SiteData = SiteResponse['site'];
|
|
14
18
|
type LoadContentParams = {
|
|
15
19
|
client: RiverbankClient;
|
|
16
20
|
siteId: string;
|
|
@@ -56,6 +60,8 @@ type PageContentResult = {
|
|
|
56
60
|
siteId: string;
|
|
57
61
|
/** Pre-fetched block data for data loaders */
|
|
58
62
|
resolvedData: ResolvedBlockData;
|
|
63
|
+
/** Site data for metadata generation */
|
|
64
|
+
site: SiteData;
|
|
59
65
|
};
|
|
60
66
|
/**
|
|
61
67
|
* Result when path resolves to a content entry
|
|
@@ -76,6 +82,8 @@ type EntryContentResult = {
|
|
|
76
82
|
theme: Theme;
|
|
77
83
|
/** Site ID */
|
|
78
84
|
siteId: string;
|
|
85
|
+
/** Site data for metadata generation */
|
|
86
|
+
site: SiteData;
|
|
79
87
|
};
|
|
80
88
|
/**
|
|
81
89
|
* Discriminated union result from loadContent
|
|
@@ -150,4 +158,4 @@ declare function isEntryContent(result: LoadContentResult): result is EntryConte
|
|
|
150
158
|
*/
|
|
151
159
|
declare function loadContent(params: LoadContentParams): Promise<LoadContentResult>;
|
|
152
160
|
|
|
153
|
-
export { type ContentEntryData as C, type EntryContentResult as E, type LoadContentParams as L, type PageContentResult as P, isEntryContent as a, type LoadContentResult as b, isPageContent as i, loadContent as l };
|
|
161
|
+
export { type ContentEntryData as C, type EntryContentResult as E, type LoadContentParams as L, type PageContentResult as P, type SiteData as S, isEntryContent as a, type LoadContentResult as b, isPageContent as i, loadContent as l };
|
|
@@ -4,8 +4,7 @@ var _chunkP3NNN73Gjs = require('./chunk-P3NNN73G.js');
|
|
|
4
4
|
require('./chunk-Y7347JMZ.js');
|
|
5
5
|
require('./chunk-RVDS7VSP.js');
|
|
6
6
|
require('./chunk-YYO3RIFO.js');
|
|
7
|
-
require('./chunk-DGUM43GV.js');
|
|
8
7
|
|
|
9
8
|
|
|
10
9
|
exports.loadPage = _chunkP3NNN73Gjs.loadPage;
|
|
11
|
-
//# sourceMappingURL=loadPage-
|
|
10
|
+
//# sourceMappingURL=loadPage-6I7F6GRF.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["/Users/will/Projects/Business/cms/builder/packages/sdk/dist/server/loadPage-6I7F6GRF.js"],"names":[],"mappings":"AAAA;AACE;AACF,sDAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B,+BAA4B;AAC5B;AACE;AACF,6CAAC","file":"/Users/will/Projects/Business/cms/builder/packages/sdk/dist/server/loadPage-6I7F6GRF.js"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { R as RiverbankClient, S as SiteResponse } from './types-
|
|
1
|
+
import { R as RiverbankClient, S as SiteResponse } from './types-MF2AWoKv.mjs';
|
|
2
2
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
3
3
|
import * as React$1 from 'react';
|
|
4
4
|
import React__default from 'react';
|
|
@@ -4,8 +4,7 @@ import {
|
|
|
4
4
|
import "./chunk-A2FZMRDW.mjs";
|
|
5
5
|
import "./chunk-AEFWG657.mjs";
|
|
6
6
|
import "./chunk-BYBJA6SP.mjs";
|
|
7
|
-
import "./chunk-BJTO5JO5.mjs";
|
|
8
7
|
export {
|
|
9
8
|
loadPage
|
|
10
9
|
};
|
|
11
|
-
//# sourceMappingURL=loadPage-
|
|
10
|
+
//# sourceMappingURL=loadPage-JI2SML4M.mjs.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { R as RiverbankClient, S as SiteResponse } from './types-
|
|
1
|
+
import { R as RiverbankClient, S as SiteResponse } from './types-DnkRh0UL.js';
|
|
2
2
|
import * as react_jsx_runtime from 'react/jsx-runtime';
|
|
3
3
|
import * as React$1 from 'react';
|
|
4
4
|
import React__default from 'react';
|