@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.
Files changed (172) hide show
  1. package/README.md +175 -0
  2. package/dist/cli/index.js +42 -95
  3. package/dist/cli/index.js.map +1 -1
  4. package/dist/cli/init-docs/content/agents-section.md +50 -0
  5. package/dist/cli/init-docs/content/cli-reference.md +574 -0
  6. package/dist/cli/init-docs/content/content-management.md +384 -0
  7. package/dist/cli/init-docs/content/context-brand.md +125 -0
  8. package/dist/cli/init-docs/content/context-brief.md +77 -0
  9. package/dist/cli/init-docs/content/context-knowledge.md +111 -0
  10. package/dist/cli/init-docs/content/getting-started.md +130 -0
  11. package/dist/cli/init-docs/content/site-workflows-readme.md +96 -0
  12. package/dist/cli/init-docs/content/workflow-add-block.md +228 -0
  13. package/dist/cli/init-docs/content/workflow-create-page.md +193 -0
  14. package/dist/cli/init-docs/content/workflow-publish.md +280 -0
  15. package/dist/client/client.d.mts +2 -2
  16. package/dist/client/client.d.ts +2 -2
  17. package/dist/client/client.js +536 -71
  18. package/dist/client/client.js.map +1 -1
  19. package/dist/client/client.mjs +536 -78
  20. package/dist/client/client.mjs.map +1 -1
  21. package/dist/client/hooks.d.mts +2 -2
  22. package/dist/client/hooks.d.ts +2 -2
  23. package/dist/client/usePage-C9tJpuKa.d.mts +6813 -0
  24. package/dist/client/usePage-Db9kzA41.d.ts +6813 -0
  25. package/dist/server/{Layout-wBtJLTVX.d.ts → Layout-Ce7PU9I5.d.ts} +1 -1
  26. package/dist/server/{Layout-B7cvis7r.d.mts → Layout-WllR8Zug.d.mts} +1 -1
  27. package/dist/server/{chunk-I7ZR2WO3.mjs → chunk-5JT452F2.mjs} +537 -76
  28. package/dist/server/chunk-5JT452F2.mjs.map +1 -0
  29. package/dist/server/{chunk-Z5ZA6Q4D.mjs → chunk-74XUVNOO.mjs} +5 -3
  30. package/dist/server/chunk-74XUVNOO.mjs.map +1 -0
  31. package/dist/server/{chunk-3B364WO2.js → chunk-7BVRA5MY.js} +4 -49
  32. package/dist/server/chunk-7BVRA5MY.js.map +1 -0
  33. package/dist/server/chunk-AET56TQX.mjs +45 -0
  34. package/dist/server/chunk-AET56TQX.mjs.map +1 -0
  35. package/dist/server/chunk-ARNCLSQT.mjs +52 -0
  36. package/dist/server/chunk-ARNCLSQT.mjs.map +1 -0
  37. package/dist/server/chunk-BNQV3PXP.js +69 -0
  38. package/dist/server/chunk-BNQV3PXP.js.map +1 -0
  39. package/dist/server/{chunk-IVHIQFJH.js → chunk-HMENX4Y7.js} +543 -82
  40. package/dist/server/chunk-HMENX4Y7.js.map +1 -0
  41. package/dist/server/{chunk-I2D7KOEA.js → chunk-JWRNMNWI.js} +5 -3
  42. package/dist/server/chunk-JWRNMNWI.js.map +1 -0
  43. package/dist/server/chunk-LQUKXIW7.mjs +13 -0
  44. package/dist/server/chunk-LQUKXIW7.mjs.map +1 -0
  45. package/dist/server/{chunk-XXFF4RVR.mjs → chunk-RBJFXNDM.mjs} +1 -46
  46. package/dist/server/chunk-RBJFXNDM.mjs.map +1 -0
  47. package/dist/server/chunk-SWYWZT3L.mjs +69 -0
  48. package/dist/server/chunk-SWYWZT3L.mjs.map +1 -0
  49. package/dist/server/chunk-T26N3P26.js +52 -0
  50. package/dist/server/chunk-T26N3P26.js.map +1 -0
  51. package/dist/server/chunk-VODFQMUW.js +45 -0
  52. package/dist/server/chunk-VODFQMUW.js.map +1 -0
  53. package/dist/server/chunk-WYNEYDXO.js +13 -0
  54. package/dist/server/chunk-WYNEYDXO.js.map +1 -0
  55. package/dist/server/{components-CICSJyp_.d.ts → components--LT61IKp.d.ts} +2 -2
  56. package/dist/server/{components-CMMwDXTW.d.mts → components-RPzRQve6.d.mts} +2 -2
  57. package/dist/server/components.d.mts +4 -4
  58. package/dist/server/components.d.ts +4 -4
  59. package/dist/server/components.js +5 -4
  60. package/dist/server/components.js.map +1 -1
  61. package/dist/server/components.mjs +5 -4
  62. package/dist/server/config-validation.js +0 -1
  63. package/dist/server/config-validation.js.map +1 -1
  64. package/dist/server/config-validation.mjs +0 -1
  65. package/dist/server/config.js +0 -1
  66. package/dist/server/config.js.map +1 -1
  67. package/dist/server/config.mjs +0 -1
  68. package/dist/server/config.mjs.map +1 -1
  69. package/dist/server/data.d.mts +1 -1
  70. package/dist/server/data.d.ts +1 -1
  71. package/dist/server/data.js +0 -1
  72. package/dist/server/data.js.map +1 -1
  73. package/dist/server/data.mjs +0 -1
  74. package/dist/server/env.d.mts +23 -0
  75. package/dist/server/env.d.ts +23 -0
  76. package/dist/server/env.js +7 -0
  77. package/dist/server/env.js.map +1 -0
  78. package/dist/server/env.mjs +7 -0
  79. package/dist/server/index-BL66CU6d.d.mts +130 -0
  80. package/dist/server/{index-Bucs6UqG.d.mts → index-Bkva0WAj.d.mts} +1 -1
  81. package/dist/server/index-CJk9iQQW.d.ts +130 -0
  82. package/dist/server/{index-Cp7tJuRt.d.ts → index-CSBWKA3r.d.ts} +1 -1
  83. package/dist/server/index.d.mts +3 -3
  84. package/dist/server/index.d.ts +3 -3
  85. package/dist/server/index.js +2 -3
  86. package/dist/server/index.js.map +1 -1
  87. package/dist/server/index.mjs +1 -2
  88. package/dist/server/index.mjs.map +1 -1
  89. package/dist/server/{loadContent-Buvmudee.d.ts → loadContent-CXUWMuzY.d.ts} +11 -3
  90. package/dist/server/{loadContent-BS-3wesN.d.mts → loadContent-F_tAS0Nl.d.mts} +11 -3
  91. package/dist/server/{loadPage-IDGVDFBB.js → loadPage-6I7F6GRF.js} +1 -2
  92. package/dist/server/loadPage-6I7F6GRF.js.map +1 -0
  93. package/dist/server/{loadPage-B8mQUUSo.d.mts → loadPage-CxlYLe5K.d.mts} +1 -1
  94. package/dist/server/{loadPage-DNQTTRHL.mjs → loadPage-JI2SML4M.mjs} +1 -2
  95. package/dist/server/{loadPage-DP3nrHBi.d.ts → loadPage-i2r-X5b9.d.ts} +1 -1
  96. package/dist/server/metadata.d.mts +8 -135
  97. package/dist/server/metadata.d.ts +8 -135
  98. package/dist/server/metadata.js +4 -65
  99. package/dist/server/metadata.js.map +1 -1
  100. package/dist/server/metadata.mjs +4 -65
  101. package/dist/server/metadata.mjs.map +1 -1
  102. package/dist/server/navigation.js +0 -1
  103. package/dist/server/navigation.js.map +1 -1
  104. package/dist/server/navigation.mjs +0 -1
  105. package/dist/server/next/revalidate.d.mts +66 -0
  106. package/dist/server/next/revalidate.d.ts +66 -0
  107. package/dist/server/next/revalidate.js +59 -0
  108. package/dist/server/next/revalidate.js.map +1 -0
  109. package/dist/server/next/revalidate.mjs +59 -0
  110. package/dist/server/next/revalidate.mjs.map +1 -0
  111. package/dist/server/next/tags.d.mts +78 -0
  112. package/dist/server/next/tags.d.ts +78 -0
  113. package/dist/server/next/tags.js +34 -0
  114. package/dist/server/next/tags.js.map +1 -0
  115. package/dist/server/next/tags.mjs +34 -0
  116. package/dist/server/next/tags.mjs.map +1 -0
  117. package/dist/server/next.d.mts +432 -0
  118. package/dist/server/next.d.ts +432 -0
  119. package/dist/server/next.js +217 -0
  120. package/dist/server/next.js.map +1 -0
  121. package/dist/server/next.mjs +217 -0
  122. package/dist/server/next.mjs.map +1 -0
  123. package/dist/server/rendering/server.d.mts +3 -3
  124. package/dist/server/rendering/server.d.ts +3 -3
  125. package/dist/server/rendering/server.js +5 -4
  126. package/dist/server/rendering/server.js.map +1 -1
  127. package/dist/server/rendering/server.mjs +5 -4
  128. package/dist/server/rendering.d.mts +6 -6
  129. package/dist/server/rendering.d.ts +6 -6
  130. package/dist/server/rendering.js +7 -6
  131. package/dist/server/rendering.js.map +1 -1
  132. package/dist/server/rendering.mjs +9 -8
  133. package/dist/server/routing.d.mts +2 -2
  134. package/dist/server/routing.d.ts +2 -2
  135. package/dist/server/routing.js +2 -4
  136. package/dist/server/routing.js.map +1 -1
  137. package/dist/server/routing.mjs +1 -3
  138. package/dist/server/routing.mjs.map +1 -1
  139. package/dist/server/server.d.mts +4 -4
  140. package/dist/server/server.d.ts +4 -4
  141. package/dist/server/server.js +4 -5
  142. package/dist/server/server.js.map +1 -1
  143. package/dist/server/server.mjs +5 -6
  144. package/dist/server/theme-bridge.js +0 -1
  145. package/dist/server/theme-bridge.js.map +1 -1
  146. package/dist/server/theme-bridge.mjs +0 -1
  147. package/dist/server/theme-bridge.mjs.map +1 -1
  148. package/dist/server/theme.js +1 -3
  149. package/dist/server/theme.js.map +1 -1
  150. package/dist/server/theme.mjs +0 -2
  151. package/dist/server/theme.mjs.map +1 -1
  152. package/dist/server/{types-BvcJU7zk.d.ts → types-DnkRh0UL.d.ts} +118 -9
  153. package/dist/server/{types-1cLz0vnq.d.mts → types-MF2AWoKv.d.mts} +118 -9
  154. package/dist/server/webhooks.d.mts +75 -0
  155. package/dist/server/webhooks.d.ts +75 -0
  156. package/dist/server/webhooks.js +11 -0
  157. package/dist/server/webhooks.js.map +1 -0
  158. package/dist/server/webhooks.mjs +11 -0
  159. package/dist/server/webhooks.mjs.map +1 -0
  160. package/package.json +33 -1
  161. package/dist/server/chunk-3B364WO2.js.map +0 -1
  162. package/dist/server/chunk-BJTO5JO5.mjs +0 -11
  163. package/dist/server/chunk-DGUM43GV.js +0 -11
  164. package/dist/server/chunk-DGUM43GV.js.map +0 -1
  165. package/dist/server/chunk-I2D7KOEA.js.map +0 -1
  166. package/dist/server/chunk-I7ZR2WO3.mjs.map +0 -1
  167. package/dist/server/chunk-IVHIQFJH.js.map +0 -1
  168. package/dist/server/chunk-XXFF4RVR.mjs.map +0 -1
  169. package/dist/server/chunk-Z5ZA6Q4D.mjs.map +0 -1
  170. package/dist/server/loadPage-IDGVDFBB.js.map +0 -1
  171. /package/dist/server/{chunk-BJTO5JO5.mjs.map → env.mjs.map} +0 -0
  172. /package/dist/server/{loadPage-DNQTTRHL.mjs.map → loadPage-JI2SML4M.mjs.map} +0 -0
@@ -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,+BAA4B;AAC5B;AACE;AACA;AACA;AACA;AACF,qRAAC","file":"/Users/will/Projects/Business/cms/builder/packages/sdk/dist/server/data.js"}
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"}
@@ -7,7 +7,6 @@ import {
7
7
  prefetchBlockData
8
8
  } from "./chunk-AEFWG657.mjs";
9
9
  import "./chunk-BYBJA6SP.mjs";
10
- import "./chunk-BJTO5JO5.mjs";
11
10
  export {
12
11
  SUPPORTED_LOADER_ENDPOINTS,
13
12
  executeCodeLoaders,
@@ -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,7 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true});
2
+
3
+ var _chunkWYNEYDXOjs = require('./chunk-WYNEYDXO.js');
4
+
5
+
6
+ exports.isPreviewMode = _chunkWYNEYDXOjs.isPreviewMode;
7
+ //# sourceMappingURL=env.js.map
@@ -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,7 @@
1
+ import {
2
+ isPreviewMode
3
+ } from "./chunk-LQUKXIW7.mjs";
4
+ export {
5
+ isPreviewMode
6
+ };
7
+ //# sourceMappingURL=env.mjs.map
@@ -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 };
@@ -1,4 +1,4 @@
1
- import { a as RiverbankClientConfig, R as RiverbankClient } from './types-1cLz0vnq.mjs';
1
+ import { a as RiverbankClientConfig, R as RiverbankClient } from './types-MF2AWoKv.mjs';
2
2
  import './schema-Z6-afHJG.mjs';
3
3
 
4
4
  /**
@@ -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 };
@@ -1,4 +1,4 @@
1
- import { a as RiverbankClientConfig, R as RiverbankClient } from './types-BvcJU7zk.js';
1
+ import { a as RiverbankClientConfig, R as RiverbankClient } from './types-DnkRh0UL.js';
2
2
  import './schema-Z6-afHJG.js';
3
3
 
4
4
  /**
@@ -1,5 +1,5 @@
1
- export { c as createRiverbankClient } from './index-Bucs6UqG.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-1cLz0vnq.mjs';
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;
@@ -1,5 +1,5 @@
1
- export { c as createRiverbankClient } from './index-Cp7tJuRt.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-BvcJU7zk.js';
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;
@@ -5,8 +5,7 @@ var _chunkGERCMTPQjs = require('./chunk-GERCMTPQ.js');
5
5
 
6
6
 
7
7
 
8
- var _chunkIVHIQFJHjs = require('./chunk-IVHIQFJH.js');
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 = _chunkIVHIQFJHjs.API_ENDPOINTS; exports.SYSTEM_BLOCK_KINDS = _chunkGERCMTPQjs.SYSTEM_BLOCK_KINDS; exports.buildEndpointURL = _chunkIVHIQFJHjs.buildEndpointURL; exports.createRiverbankClient = _chunkIVHIQFJHjs.createRiverbankClient;
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
@@ -1 +1 @@
1
- {"version":3,"sources":["/Users/will/Projects/Business/cms/builder/packages/sdk/dist/server/index.js","../../../api/src/aiPlayground.ts"],"names":[],"mappings":"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","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"]}
1
+ {"version":3,"sources":["/Users/will/Projects/Business/cms/builder/packages/sdk/dist/server/index.js","../../../api/src/aiPlayground.ts"],"names":[],"mappings":"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","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"]}
@@ -5,8 +5,7 @@ import {
5
5
  API_ENDPOINTS,
6
6
  buildEndpointURL,
7
7
  createRiverbankClient
8
- } from "./chunk-I7ZR2WO3.mjs";
9
- import "./chunk-BJTO5JO5.mjs";
8
+ } from "./chunk-5JT452F2.mjs";
10
9
 
11
10
  // ../api/src/aiPlayground.ts
12
11
  import { z } from "zod";
@@ -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":"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","names":[]}
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-BvcJU7zk.js';
4
- import { P as PageProps } from './loadPage-DP3nrHBi.js';
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-1cLz0vnq.mjs';
4
- import { P as PageProps } from './loadPage-B8mQUUSo.mjs';
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-IDGVDFBB.js.map
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-1cLz0vnq.mjs';
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-DNQTTRHL.mjs.map
10
+ //# sourceMappingURL=loadPage-JI2SML4M.mjs.map
@@ -1,4 +1,4 @@
1
- import { R as RiverbankClient, S as SiteResponse } from './types-BvcJU7zk.js';
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';