@caelo-cms/shared 0.10.22 → 0.10.23

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 (241) hide show
  1. package/dist/ai-tools.d.ts +290 -214
  2. package/dist/ai-tools.d.ts.map +1 -1
  3. package/dist/ai-tools.js +341 -264
  4. package/dist/ai-tools.js.map +1 -1
  5. package/dist/auth-forms.d.ts.map +1 -1
  6. package/dist/auth-forms.js +4 -1
  7. package/dist/auth-forms.js.map +1 -1
  8. package/dist/base-css.d.ts +24 -0
  9. package/dist/base-css.d.ts.map +1 -0
  10. package/dist/base-css.js +28 -0
  11. package/dist/base-css.js.map +1 -0
  12. package/dist/build-page.d.ts +330 -0
  13. package/dist/build-page.d.ts.map +1 -0
  14. package/dist/build-page.js +282 -0
  15. package/dist/build-page.js.map +1 -0
  16. package/dist/content.d.ts +322 -9
  17. package/dist/content.d.ts.map +1 -1
  18. package/dist/content.js +354 -11
  19. package/dist/content.js.map +1 -1
  20. package/dist/css-gradient-scan.d.ts +14 -0
  21. package/dist/css-gradient-scan.d.ts.map +1 -0
  22. package/dist/css-gradient-scan.js +81 -0
  23. package/dist/css-gradient-scan.js.map +1 -0
  24. package/dist/css-var-scan.d.ts +56 -0
  25. package/dist/css-var-scan.d.ts.map +1 -0
  26. package/dist/css-var-scan.js +97 -0
  27. package/dist/css-var-scan.js.map +1 -0
  28. package/dist/design-manifest.d.ts +36 -0
  29. package/dist/design-manifest.d.ts.map +1 -0
  30. package/dist/design-manifest.js +90 -0
  31. package/dist/design-manifest.js.map +1 -0
  32. package/dist/fonts.d.ts +89 -0
  33. package/dist/fonts.d.ts.map +1 -0
  34. package/dist/fonts.js +241 -0
  35. package/dist/fonts.js.map +1 -0
  36. package/dist/genesis-inventory.d.ts +32 -0
  37. package/dist/genesis-inventory.d.ts.map +1 -0
  38. package/dist/genesis-inventory.js +186 -0
  39. package/dist/genesis-inventory.js.map +1 -0
  40. package/dist/genesis.d.ts +62 -0
  41. package/dist/genesis.d.ts.map +1 -0
  42. package/dist/genesis.js +78 -0
  43. package/dist/genesis.js.map +1 -0
  44. package/dist/i18n.d.ts +44 -1
  45. package/dist/i18n.d.ts.map +1 -1
  46. package/dist/i18n.js +72 -6
  47. package/dist/i18n.js.map +1 -1
  48. package/dist/index.d.ts +27 -0
  49. package/dist/index.d.ts.map +1 -1
  50. package/dist/index.js +27 -0
  51. package/dist/index.js.map +1 -1
  52. package/dist/interactions.d.ts +23 -0
  53. package/dist/interactions.d.ts.map +1 -0
  54. package/dist/interactions.js +44 -0
  55. package/dist/interactions.js.map +1 -0
  56. package/dist/media.d.ts +101 -16
  57. package/dist/media.d.ts.map +1 -1
  58. package/dist/media.js +126 -15
  59. package/dist/media.js.map +1 -1
  60. package/dist/page-log.d.ts +94 -0
  61. package/dist/page-log.d.ts.map +1 -0
  62. package/dist/page-log.js +111 -0
  63. package/dist/page-log.js.map +1 -0
  64. package/dist/preview-compose.d.ts +79 -0
  65. package/dist/preview-compose.d.ts.map +1 -1
  66. package/dist/preview-compose.js +155 -25
  67. package/dist/preview-compose.js.map +1 -1
  68. package/dist/proposal-status.d.ts +40 -0
  69. package/dist/proposal-status.d.ts.map +1 -0
  70. package/dist/proposal-status.js +34 -0
  71. package/dist/proposal-status.js.map +1 -0
  72. package/dist/responsive-images.d.ts +64 -0
  73. package/dist/responsive-images.d.ts.map +1 -0
  74. package/dist/responsive-images.js +98 -0
  75. package/dist/responsive-images.js.map +1 -0
  76. package/dist/safe-keys.d.ts +9 -0
  77. package/dist/safe-keys.d.ts.map +1 -0
  78. package/dist/safe-keys.js +20 -0
  79. package/dist/safe-keys.js.map +1 -0
  80. package/dist/seo.d.ts +8 -0
  81. package/dist/seo.d.ts.map +1 -1
  82. package/dist/seo.js +3 -1
  83. package/dist/seo.js.map +1 -1
  84. package/dist/skills.d.ts +14 -68
  85. package/dist/skills.d.ts.map +1 -1
  86. package/dist/skills.js +19 -113
  87. package/dist/skills.js.map +1 -1
  88. package/dist/strip-cdata.d.ts +7 -0
  89. package/dist/strip-cdata.d.ts.map +1 -0
  90. package/dist/strip-cdata.js +48 -0
  91. package/dist/strip-cdata.js.map +1 -0
  92. package/dist/structured-sets.d.ts +6 -16
  93. package/dist/structured-sets.d.ts.map +1 -1
  94. package/dist/structured-sets.js +5 -16
  95. package/dist/structured-sets.js.map +1 -1
  96. package/dist/subagents.d.ts +105 -3
  97. package/dist/subagents.d.ts.map +1 -1
  98. package/dist/subagents.js +224 -41
  99. package/dist/subagents.js.map +1 -1
  100. package/dist/template-engine.d.ts +85 -0
  101. package/dist/template-engine.d.ts.map +1 -0
  102. package/dist/template-engine.js +403 -0
  103. package/dist/template-engine.js.map +1 -0
  104. package/dist/theme-importers/auto-detect.d.ts +26 -0
  105. package/dist/theme-importers/auto-detect.d.ts.map +1 -0
  106. package/dist/theme-importers/auto-detect.js +42 -0
  107. package/dist/theme-importers/auto-detect.js.map +1 -0
  108. package/dist/theme-importers/css-comments.d.ts +12 -0
  109. package/dist/theme-importers/css-comments.d.ts.map +1 -0
  110. package/dist/theme-importers/css-comments.js +15 -0
  111. package/dist/theme-importers/css-comments.js.map +1 -0
  112. package/dist/theme-importers/dtcg.d.ts +46 -0
  113. package/dist/theme-importers/dtcg.d.ts.map +1 -0
  114. package/dist/theme-importers/dtcg.js +111 -0
  115. package/dist/theme-importers/dtcg.js.map +1 -0
  116. package/dist/theme-importers/loose.d.ts +3 -0
  117. package/dist/theme-importers/loose.d.ts.map +1 -0
  118. package/dist/theme-importers/loose.js +76 -0
  119. package/dist/theme-importers/loose.js.map +1 -0
  120. package/dist/theme-importers/shadcn.d.ts +24 -0
  121. package/dist/theme-importers/shadcn.d.ts.map +1 -0
  122. package/dist/theme-importers/shadcn.js +135 -0
  123. package/dist/theme-importers/shadcn.js.map +1 -0
  124. package/dist/theme-importers/style-dictionary.d.ts +17 -0
  125. package/dist/theme-importers/style-dictionary.d.ts.map +1 -0
  126. package/dist/theme-importers/style-dictionary.js +125 -0
  127. package/dist/theme-importers/style-dictionary.js.map +1 -0
  128. package/dist/theme-importers/tailwind.d.ts +3 -0
  129. package/dist/theme-importers/tailwind.d.ts.map +1 -0
  130. package/dist/theme-importers/tailwind.js +218 -0
  131. package/dist/theme-importers/tailwind.js.map +1 -0
  132. package/dist/theme-literal-binding.d.ts +37 -0
  133. package/dist/theme-literal-binding.d.ts.map +1 -0
  134. package/dist/theme-literal-binding.js +138 -0
  135. package/dist/theme-literal-binding.js.map +1 -0
  136. package/dist/theme-normalize.d.ts +31 -0
  137. package/dist/theme-normalize.d.ts.map +1 -0
  138. package/dist/theme-normalize.js +587 -0
  139. package/dist/theme-normalize.js.map +1 -0
  140. package/dist/theme-ramp.d.ts +55 -0
  141. package/dist/theme-ramp.d.ts.map +1 -0
  142. package/dist/theme-ramp.js +149 -0
  143. package/dist/theme-ramp.js.map +1 -0
  144. package/dist/theme-render.d.ts +105 -0
  145. package/dist/theme-render.d.ts.map +1 -0
  146. package/dist/theme-render.js +441 -0
  147. package/dist/theme-render.js.map +1 -0
  148. package/dist/themes-errors.d.ts +109 -0
  149. package/dist/themes-errors.d.ts.map +1 -0
  150. package/dist/themes-errors.js +170 -0
  151. package/dist/themes-errors.js.map +1 -0
  152. package/dist/themes.d.ts +343 -0
  153. package/dist/themes.d.ts.map +1 -0
  154. package/dist/themes.js +697 -0
  155. package/dist/themes.js.map +1 -0
  156. package/dist/version.d.ts +7 -4
  157. package/dist/version.d.ts.map +1 -1
  158. package/dist/version.js +6 -3
  159. package/dist/version.js.map +1 -1
  160. package/package.json +10 -2
  161. package/src/__tests__/redos-hardening.test.ts +160 -0
  162. package/src/ai-tools-add-module-modes.test.ts +106 -0
  163. package/src/ai-tools-position.test.ts +134 -0
  164. package/src/ai-tools.test.ts +81 -0
  165. package/src/ai-tools.ts +1179 -0
  166. package/src/auth-forms.ts +36 -0
  167. package/src/base-css.ts +30 -0
  168. package/src/build-page.test.ts +228 -0
  169. package/src/build-page.ts +319 -0
  170. package/src/cap-failures.ts +67 -0
  171. package/src/content.test.ts +170 -0
  172. package/src/content.ts +620 -0
  173. package/src/context.ts +43 -0
  174. package/src/css-gradient-scan.ts +88 -0
  175. package/src/css-var-scan.test.ts +96 -0
  176. package/src/css-var-scan.ts +144 -0
  177. package/src/derive-module-type.test.ts +80 -0
  178. package/src/design-manifest.ts +93 -0
  179. package/src/fonts.test.ts +157 -0
  180. package/src/fonts.ts +296 -0
  181. package/src/genesis-inventory.test.ts +86 -0
  182. package/src/genesis-inventory.ts +215 -0
  183. package/src/genesis-sanitize.test.ts +35 -0
  184. package/src/genesis.ts +87 -0
  185. package/src/i18n.test.ts +274 -0
  186. package/src/i18n.ts +269 -0
  187. package/src/index.test.ts +10 -0
  188. package/src/index.ts +59 -0
  189. package/src/interactions.ts +48 -0
  190. package/src/logger.ts +147 -0
  191. package/src/media.test.ts +160 -0
  192. package/src/media.ts +355 -0
  193. package/src/page-log.test.ts +163 -0
  194. package/src/page-log.ts +124 -0
  195. package/src/preview-compose.test.ts +602 -0
  196. package/src/preview-compose.ts +709 -0
  197. package/src/preview-scanner.test.ts +96 -0
  198. package/src/preview-scanner.ts +214 -0
  199. package/src/proposal-status.test.ts +69 -0
  200. package/src/proposal-status.ts +40 -0
  201. package/src/responsive-images.test.ts +104 -0
  202. package/src/responsive-images.ts +151 -0
  203. package/src/result.ts +29 -0
  204. package/src/safe-keys.ts +21 -0
  205. package/src/seo.test.ts +234 -0
  206. package/src/seo.ts +261 -0
  207. package/src/skills.ts +48 -0
  208. package/src/snapshots.test.ts +80 -0
  209. package/src/snapshots.ts +81 -0
  210. package/src/strip-cdata.test.ts +41 -0
  211. package/src/strip-cdata.ts +50 -0
  212. package/src/structured-sets.ts +180 -0
  213. package/src/subagents.test.ts +262 -0
  214. package/src/subagents.ts +432 -0
  215. package/src/template-engine.test.ts +379 -0
  216. package/src/template-engine.ts +520 -0
  217. package/src/theme-gradient.test.ts +92 -0
  218. package/src/theme-importers/__tests__/proto-pollution.test.ts +54 -0
  219. package/src/theme-importers/auto-detect.ts +84 -0
  220. package/src/theme-importers/css-comments.ts +15 -0
  221. package/src/theme-importers/dtcg.ts +106 -0
  222. package/src/theme-importers/loose.ts +76 -0
  223. package/src/theme-importers/shadcn.ts +133 -0
  224. package/src/theme-importers/style-dictionary.ts +125 -0
  225. package/src/theme-importers/tailwind.ts +217 -0
  226. package/src/theme-literal-binding.test.ts +71 -0
  227. package/src/theme-literal-binding.ts +159 -0
  228. package/src/theme-motion.test.ts +115 -0
  229. package/src/theme-normalize-envelope.test.ts +43 -0
  230. package/src/theme-normalize-gradient.test.ts +135 -0
  231. package/src/theme-normalize.ts +661 -0
  232. package/src/theme-ramp.ts +187 -0
  233. package/src/theme-render-sanitize.test.ts +45 -0
  234. package/src/theme-render.test.ts +119 -0
  235. package/src/theme-render.ts +487 -0
  236. package/src/theme-shadow.test.ts +56 -0
  237. package/src/themes-errors.ts +199 -0
  238. package/src/themes.ts +842 -0
  239. package/src/translation.test.ts +160 -0
  240. package/src/translation.ts +295 -0
  241. package/src/version.ts +66 -0
package/dist/content.d.ts CHANGED
@@ -10,6 +10,41 @@
10
10
  import { z } from "zod";
11
11
  /** Lowercase slug, hyphenated, 1–64 chars, no leading/trailing hyphen. */
12
12
  export declare const slugSchema: z.ZodString;
13
+ /**
14
+ * v0.12.3 (issue #106) — derive a module's stable `type` from its
15
+ * displayName. The `type` is the semantic class of a module (`button`,
16
+ * `hero`, `pricing-card`) shared by every instance of that class — it is
17
+ * what a parent module's `allowedModuleTypes` whitelist matches against.
18
+ *
19
+ * This is the slug *base* WITHOUT the `-<timestamp>` uniqueness suffix
20
+ * that `slugify()` appends: a module's `slug` is its unique row identity
21
+ * (`button-mpqxq3ch`), its `type` is the reusable class (`button`). The
22
+ * tool-side `slugify` composes as `deriveModuleType(name) + "-" + suffix`
23
+ * so the two can never diverge.
24
+ *
25
+ * Mirrors `slugify`'s normalization (lowercase, non-alphanumerics → single
26
+ * hyphen, trim hyphens, 40-char cap, `"module"` stem fallback) so a
27
+ * round-trip is predictable.
28
+ */
29
+ export declare function deriveModuleType(displayName: string): string;
30
+ /**
31
+ * v0.12.3 (issue #106) — mint a unique module slug from a displayName:
32
+ * the stable `type` base (`deriveModuleType`) + a base36 timestamp
33
+ * suffix. Because the slug is always `type + "-" + suffix`, a module's
34
+ * `type` is guaranteed to be a prefix of its `slug` — the two can never
35
+ * drift. Shared by every module-minting AI tool so the rule lives in one
36
+ * place.
37
+ *
38
+ * @param suffix - override the uniqueness suffix (defaults to a base36
39
+ * timestamp). Pass a stable value in tests for determinism.
40
+ */
41
+ export declare function slugifyModuleName(displayName: string, suffix?: string): string;
42
+ /**
43
+ * v0.12.3 (issue #106) — slug for a module minted per page-section
44
+ * (`build_page` / legacy compose). Includes the section index so two sections
45
+ * sharing a displayName don't collide on the unique slug constraint.
46
+ */
47
+ export declare function slugifyModuleSection(displayName: string, idx: number, suffix?: string): string;
13
48
  /** BCP-47 shape: 2-letter language with optional 2-letter region. P9 widens this. */
14
49
  export declare const localeSchema: z.ZodString;
15
50
  /** Caps are arbitrary but cheap — paste-of-binary mistakes get caught. */
@@ -21,10 +56,65 @@ export declare const TEMPLATE_CSS_MAX: number;
21
56
  /**
22
57
  * v0.4.0 — module field schema. Each field declares one substitution slot in
23
58
  * the module's templated HTML (`{{fieldName}}`) and the kind of content it
24
- * holds. Field values live on each page placement in `page_module_content`.
59
+ * holds. Field values live on each page placement (v0.4.0: in
60
+ * `page_module_content.content_values`; v0.12.0 onward: in
61
+ * `content_instances.values`).
62
+ *
63
+ * v0.12.0 — extended to nine kinds. Primitive kinds (text/richtext/url/
64
+ * image/number/boolean/link) substitute via `{{fieldName}}` placeholders.
65
+ * The two new nested kinds reference another module by id + content_instance:
66
+ *
67
+ * - `module` — single nested module reference. HTML slot syntax: `{{>fieldName}}`.
68
+ * Value shape: `{ moduleId, contentInstanceId }`.
69
+ * - `module-list` — ordered array of nested module references. HTML slot
70
+ * syntax: `{{#fieldName}}…inner…{{/fieldName}}` — `inner` renders once
71
+ * per element. Value shape: `Array<{ moduleId, contentInstanceId }>`.
72
+ *
73
+ * Schema is a discriminated union by `kind` so the validator rejects, e.g., a
74
+ * `text` kind that carries `allowedModuleTypes` (which only nested kinds use)
75
+ * or a `module-list` that carries a `default` (nested kinds populate from
76
+ * referenced content_instances, not from defaults).
77
+ */
78
+ export declare const MODULE_FIELD_PRIMITIVE_KINDS: readonly ["text", "richtext", "url", "image", "number", "boolean", "link"];
79
+ /**
80
+ * v0.12.0 — list-of-primitive field kinds. The grammar mirrors
81
+ * `module-list`'s `{{#field}}{{/field}}` iteration but the elements
82
+ * are primitives (or a fixed {label,href} pair for link-list), not
83
+ * `{moduleId, contentInstanceId}` refs.
84
+ *
85
+ * Use `text-list` for "list of strings" — menu labels, tag chips,
86
+ * bullet points where each item is just text. Inner template
87
+ * references `{{.}}` (Mustache convention) or `{{item}}` to mean
88
+ * the current element.
89
+ *
90
+ * Use `link-list` for "list of links" — primary nav, footer columns,
91
+ * sidebar menus. Each element is `{href, label}`. Inner template
92
+ * uses `{{href}}` + `{{label}}` per iteration.
93
+ *
94
+ * For lists with richer per-item structure (cards with image + title
95
+ * + body + CTA), use `module-list` pointing at a sub-module — that's
96
+ * what nested modules are for.
25
97
  */
26
- export declare const MODULE_FIELD_KINDS: readonly ["text", "richtext", "url", "image", "number", "boolean", "link"];
27
- export declare const moduleFieldSchema: z.ZodObject<{
98
+ export declare const MODULE_FIELD_LIST_KINDS: readonly ["text-list", "link-list"];
99
+ export declare const MODULE_FIELD_NESTED_KINDS: readonly ["module", "module-list"];
100
+ /** All eleven v0.12.0 kinds. */
101
+ export declare const MODULE_FIELD_KINDS: readonly ["text", "richtext", "url", "image", "number", "boolean", "link", "text-list", "link-list", "module", "module-list"];
102
+ /**
103
+ * Canonical union of every field kind — used by callers that need to
104
+ * type a single `kind` field (e.g. the shared template engine's
105
+ * `TemplateField.kind`, the static-gen field parser). Importing this
106
+ * instead of `string` catches typos like `'tetx-list'` at compile time.
107
+ */
108
+ export type ModuleFieldKind = (typeof MODULE_FIELD_KINDS)[number];
109
+ /**
110
+ * Field kinds the shared template engine iterates via the
111
+ * `{{#name}}…{{/name}}` Mustache-section operator. Adding a new
112
+ * list-shaped kind to MODULE_FIELD_LIST_KINDS / MODULE_FIELD_NESTED_KINDS
113
+ * automatically extends this set; the engine's section-dispatch branch
114
+ * keys off it (`packages/shared/src/template-engine.ts`).
115
+ */
116
+ export declare const MODULE_FIELD_SECTION_KINDS: readonly ["text-list", "link-list", "module-list"];
117
+ export declare const moduleFieldSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
28
118
  name: z.ZodString;
29
119
  kind: z.ZodEnum<{
30
120
  number: "number";
@@ -37,15 +127,77 @@ export declare const moduleFieldSchema: z.ZodObject<{
37
127
  }>;
38
128
  label: z.ZodString;
39
129
  default: z.ZodOptional<z.ZodUnknown>;
40
- }, z.core.$strict>;
130
+ }, z.core.$strict>, z.ZodObject<{
131
+ name: z.ZodString;
132
+ kind: z.ZodLiteral<"text-list">;
133
+ label: z.ZodString;
134
+ min: z.ZodOptional<z.ZodNumber>;
135
+ max: z.ZodOptional<z.ZodNumber>;
136
+ default: z.ZodOptional<z.ZodArray<z.ZodString>>;
137
+ }, z.core.$strict>, z.ZodObject<{
138
+ name: z.ZodString;
139
+ kind: z.ZodLiteral<"link-list">;
140
+ label: z.ZodString;
141
+ min: z.ZodOptional<z.ZodNumber>;
142
+ max: z.ZodOptional<z.ZodNumber>;
143
+ default: z.ZodOptional<z.ZodArray<z.ZodObject<{
144
+ label: z.ZodString;
145
+ href: z.ZodString;
146
+ }, z.core.$strict>>>;
147
+ }, z.core.$strict>, z.ZodObject<{
148
+ name: z.ZodString;
149
+ kind: z.ZodLiteral<"module">;
150
+ label: z.ZodString;
151
+ allowedModuleTypes: z.ZodOptional<z.ZodArray<z.ZodString>>;
152
+ }, z.core.$strict>, z.ZodObject<{
153
+ name: z.ZodString;
154
+ kind: z.ZodLiteral<"module-list">;
155
+ label: z.ZodString;
156
+ allowedModuleTypes: z.ZodOptional<z.ZodArray<z.ZodString>>;
157
+ min: z.ZodOptional<z.ZodNumber>;
158
+ max: z.ZodOptional<z.ZodNumber>;
159
+ }, z.core.$strict>], "kind">;
41
160
  export type ModuleField = z.infer<typeof moduleFieldSchema>;
161
+ /**
162
+ * The shape of a single nested-module reference inside `content_instances.values`
163
+ * when the field's kind is `module` or — repeated inside an array — `module-list`.
164
+ */
165
+ export declare const moduleRefSchema: z.ZodObject<{
166
+ moduleId: z.ZodString;
167
+ contentInstanceId: z.ZodString;
168
+ }, z.core.$strict>;
169
+ export type ModuleRef = z.infer<typeof moduleRefSchema>;
170
+ /**
171
+ * v0.12.0 — coarse role tag for the AI's `## Modules` catalog block.
172
+ * Constrained by `modules_kind_check` in migration 0095. Adding a
173
+ * new kind means: (1) bump the SQL CHECK, (2) update this schema,
174
+ * (3) update formatModulesBlock so the AI knows when to use it.
175
+ */
176
+ export declare const MODULE_KINDS: readonly ["chrome", "hero", "content", "cta", "utility"];
177
+ export declare const moduleKindSchema: z.ZodEnum<{
178
+ chrome: "chrome";
179
+ hero: "hero";
180
+ content: "content";
181
+ cta: "cta";
182
+ utility: "utility";
183
+ }>;
184
+ export type ModuleKind = (typeof MODULE_KINDS)[number];
42
185
  export declare const moduleCreateSchema: z.ZodObject<{
43
186
  slug: z.ZodString;
44
187
  displayName: z.ZodString;
188
+ description: z.ZodDefault<z.ZodString>;
189
+ kind: z.ZodDefault<z.ZodEnum<{
190
+ chrome: "chrome";
191
+ hero: "hero";
192
+ content: "content";
193
+ cta: "cta";
194
+ utility: "utility";
195
+ }>>;
196
+ type: z.ZodOptional<z.ZodString>;
45
197
  html: z.ZodString;
46
198
  css: z.ZodDefault<z.ZodString>;
47
199
  js: z.ZodDefault<z.ZodString>;
48
- fields: z.ZodDefault<z.ZodArray<z.ZodObject<{
200
+ fields: z.ZodDefault<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
49
201
  name: z.ZodString;
50
202
  kind: z.ZodEnum<{
51
203
  number: "number";
@@ -58,15 +210,53 @@ export declare const moduleCreateSchema: z.ZodObject<{
58
210
  }>;
59
211
  label: z.ZodString;
60
212
  default: z.ZodOptional<z.ZodUnknown>;
61
- }, z.core.$strict>>>;
213
+ }, z.core.$strict>, z.ZodObject<{
214
+ name: z.ZodString;
215
+ kind: z.ZodLiteral<"text-list">;
216
+ label: z.ZodString;
217
+ min: z.ZodOptional<z.ZodNumber>;
218
+ max: z.ZodOptional<z.ZodNumber>;
219
+ default: z.ZodOptional<z.ZodArray<z.ZodString>>;
220
+ }, z.core.$strict>, z.ZodObject<{
221
+ name: z.ZodString;
222
+ kind: z.ZodLiteral<"link-list">;
223
+ label: z.ZodString;
224
+ min: z.ZodOptional<z.ZodNumber>;
225
+ max: z.ZodOptional<z.ZodNumber>;
226
+ default: z.ZodOptional<z.ZodArray<z.ZodObject<{
227
+ label: z.ZodString;
228
+ href: z.ZodString;
229
+ }, z.core.$strict>>>;
230
+ }, z.core.$strict>, z.ZodObject<{
231
+ name: z.ZodString;
232
+ kind: z.ZodLiteral<"module">;
233
+ label: z.ZodString;
234
+ allowedModuleTypes: z.ZodOptional<z.ZodArray<z.ZodString>>;
235
+ }, z.core.$strict>, z.ZodObject<{
236
+ name: z.ZodString;
237
+ kind: z.ZodLiteral<"module-list">;
238
+ label: z.ZodString;
239
+ allowedModuleTypes: z.ZodOptional<z.ZodArray<z.ZodString>>;
240
+ min: z.ZodOptional<z.ZodNumber>;
241
+ max: z.ZodOptional<z.ZodNumber>;
242
+ }, z.core.$strict>], "kind">>>;
62
243
  }, z.core.$strict>;
63
244
  export declare const moduleUpdateSchema: z.ZodObject<{
64
245
  moduleId: z.ZodString;
65
246
  displayName: z.ZodOptional<z.ZodString>;
247
+ description: z.ZodOptional<z.ZodString>;
248
+ kind: z.ZodOptional<z.ZodEnum<{
249
+ chrome: "chrome";
250
+ hero: "hero";
251
+ content: "content";
252
+ cta: "cta";
253
+ utility: "utility";
254
+ }>>;
255
+ type: z.ZodOptional<z.ZodString>;
66
256
  html: z.ZodOptional<z.ZodString>;
67
257
  css: z.ZodOptional<z.ZodString>;
68
258
  js: z.ZodOptional<z.ZodString>;
69
- fields: z.ZodOptional<z.ZodArray<z.ZodObject<{
259
+ fields: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
70
260
  name: z.ZodString;
71
261
  kind: z.ZodEnum<{
72
262
  number: "number";
@@ -79,14 +269,74 @@ export declare const moduleUpdateSchema: z.ZodObject<{
79
269
  }>;
80
270
  label: z.ZodString;
81
271
  default: z.ZodOptional<z.ZodUnknown>;
82
- }, z.core.$strict>>>;
272
+ }, z.core.$strict>, z.ZodObject<{
273
+ name: z.ZodString;
274
+ kind: z.ZodLiteral<"text-list">;
275
+ label: z.ZodString;
276
+ min: z.ZodOptional<z.ZodNumber>;
277
+ max: z.ZodOptional<z.ZodNumber>;
278
+ default: z.ZodOptional<z.ZodArray<z.ZodString>>;
279
+ }, z.core.$strict>, z.ZodObject<{
280
+ name: z.ZodString;
281
+ kind: z.ZodLiteral<"link-list">;
282
+ label: z.ZodString;
283
+ min: z.ZodOptional<z.ZodNumber>;
284
+ max: z.ZodOptional<z.ZodNumber>;
285
+ default: z.ZodOptional<z.ZodArray<z.ZodObject<{
286
+ label: z.ZodString;
287
+ href: z.ZodString;
288
+ }, z.core.$strict>>>;
289
+ }, z.core.$strict>, z.ZodObject<{
290
+ name: z.ZodString;
291
+ kind: z.ZodLiteral<"module">;
292
+ label: z.ZodString;
293
+ allowedModuleTypes: z.ZodOptional<z.ZodArray<z.ZodString>>;
294
+ }, z.core.$strict>, z.ZodObject<{
295
+ name: z.ZodString;
296
+ kind: z.ZodLiteral<"module-list">;
297
+ label: z.ZodString;
298
+ allowedModuleTypes: z.ZodOptional<z.ZodArray<z.ZodString>>;
299
+ min: z.ZodOptional<z.ZodNumber>;
300
+ max: z.ZodOptional<z.ZodNumber>;
301
+ }, z.core.$strict>], "kind">>>;
83
302
  }, z.core.$strict>;
303
+ /**
304
+ * v0.12.0 — page-type tag pages inherit from their template.
305
+ * Constrained by templates_kind_check in migration 0096. Surfaced
306
+ * in the AI's `## Pages` block so the AI sees three modules-on-
307
+ * product-pages as a pattern. See CLAUDE.md §1A.
308
+ */
309
+ export declare const TEMPLATE_KINDS: readonly ["home", "landing", "product", "blog", "doc", "content", "utility"];
310
+ export declare const templateKindSchema: z.ZodEnum<{
311
+ content: "content";
312
+ utility: "utility";
313
+ home: "home";
314
+ landing: "landing";
315
+ product: "product";
316
+ blog: "blog";
317
+ doc: "doc";
318
+ }>;
319
+ export type TemplateKind = (typeof TEMPLATE_KINDS)[number];
84
320
  export declare const templateCreateSchema: z.ZodObject<{
85
321
  slug: z.ZodString;
86
322
  displayName: z.ZodString;
323
+ kind: z.ZodDefault<z.ZodEnum<{
324
+ content: "content";
325
+ utility: "utility";
326
+ home: "home";
327
+ landing: "landing";
328
+ product: "product";
329
+ blog: "blog";
330
+ doc: "doc";
331
+ }>>;
87
332
  html: z.ZodString;
88
333
  css: z.ZodDefault<z.ZodString>;
89
334
  layoutId: z.ZodOptional<z.ZodString>;
335
+ blocks: z.ZodOptional<z.ZodArray<z.ZodObject<{
336
+ name: z.ZodString;
337
+ displayName: z.ZodString;
338
+ position: z.ZodNumber;
339
+ }, z.core.$strip>>>;
90
340
  }, z.core.$strict>;
91
341
  export declare const templateBlockSchema: z.ZodObject<{
92
342
  name: z.ZodString;
@@ -96,6 +346,15 @@ export declare const templateBlockSchema: z.ZodObject<{
96
346
  export declare const templateUpdateSchema: z.ZodObject<{
97
347
  templateId: z.ZodString;
98
348
  displayName: z.ZodOptional<z.ZodString>;
349
+ kind: z.ZodOptional<z.ZodEnum<{
350
+ content: "content";
351
+ utility: "utility";
352
+ home: "home";
353
+ landing: "landing";
354
+ product: "product";
355
+ blog: "blog";
356
+ doc: "doc";
357
+ }>>;
99
358
  html: z.ZodOptional<z.ZodString>;
100
359
  css: z.ZodOptional<z.ZodString>;
101
360
  layoutId: z.ZodOptional<z.ZodString>;
@@ -129,7 +388,7 @@ export declare const pageCreateSchema: z.ZodObject<{
129
388
  name: z.ZodOptional<z.ZodString>;
130
389
  title: z.ZodString;
131
390
  templateId: z.ZodOptional<z.ZodString>;
132
- status: z.ZodDefault<z.ZodEnum<{
391
+ status: z.ZodOptional<z.ZodEnum<{
133
392
  draft: "draft";
134
393
  published: "published";
135
394
  }>>;
@@ -145,6 +404,10 @@ export declare const pageUpdateSchema: z.ZodObject<{
145
404
  draft: "draft";
146
405
  published: "published";
147
406
  }>>;
407
+ redirectFromOld: z.ZodOptional<z.ZodEnum<{
408
+ auto: "auto";
409
+ skip: "skip";
410
+ }>>;
148
411
  }, z.core.$strict>;
149
412
  export declare const pageSetModulesSchema: z.ZodObject<{
150
413
  pageId: z.ZodString;
@@ -162,4 +425,54 @@ export type TemplateBlocksSetInput = z.infer<typeof templateBlocksSetSchema>;
162
425
  export type PageCreateInput = z.infer<typeof pageCreateSchema>;
163
426
  export type PageUpdateInput = z.infer<typeof pageUpdateSchema>;
164
427
  export type PageSetModulesInput = z.infer<typeof pageSetModulesSchema>;
428
+ /**
429
+ * v0.12.0 — content sync mode on a placement.
430
+ *
431
+ * `synced` — editing the placement's content_instance propagates to
432
+ * every other placement bound to the same row.
433
+ * `unsynced` — placement holds a private row. Default.
434
+ */
435
+ export declare const syncModeSchema: z.ZodEnum<{
436
+ synced: "synced";
437
+ unsynced: "unsynced";
438
+ }>;
439
+ export type SyncMode = z.infer<typeof syncModeSchema>;
440
+ export declare const contentInstanceCreateSchema: z.ZodObject<{
441
+ moduleId: z.ZodString;
442
+ slug: z.ZodOptional<z.ZodString>;
443
+ displayName: z.ZodOptional<z.ZodString>;
444
+ purpose: z.ZodOptional<z.ZodString>;
445
+ values: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
446
+ }, z.core.$strict>;
447
+ export declare const contentInstanceUpdateSchema: z.ZodObject<{
448
+ id: z.ZodString;
449
+ values: z.ZodRecord<z.ZodString, z.ZodUnknown>;
450
+ expectedVersion: z.ZodOptional<z.ZodNumber>;
451
+ slug: z.ZodOptional<z.ZodNullable<z.ZodString>>;
452
+ displayName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
453
+ purpose: z.ZodOptional<z.ZodNullable<z.ZodString>>;
454
+ }, z.core.$strict>;
455
+ export declare const contentInstanceDeleteSchema: z.ZodObject<{
456
+ id: z.ZodString;
457
+ }, z.core.$strict>;
458
+ export declare const setPlacementContentSchema: z.ZodObject<{
459
+ pageId: z.ZodString;
460
+ blockName: z.ZodString;
461
+ position: z.ZodNumber;
462
+ contentInstanceId: z.ZodString;
463
+ syncMode: z.ZodEnum<{
464
+ synced: "synced";
465
+ unsynced: "unsynced";
466
+ }>;
467
+ }, z.core.$strict>;
468
+ export declare const forkPlacementContentSchema: z.ZodObject<{
469
+ pageId: z.ZodString;
470
+ blockName: z.ZodString;
471
+ position: z.ZodNumber;
472
+ }, z.core.$strict>;
473
+ export type ContentInstanceCreateInput = z.infer<typeof contentInstanceCreateSchema>;
474
+ export type ContentInstanceUpdateInput = z.infer<typeof contentInstanceUpdateSchema>;
475
+ export type ContentInstanceDeleteInput = z.infer<typeof contentInstanceDeleteSchema>;
476
+ export type SetPlacementContentInput = z.infer<typeof setPlacementContentSchema>;
477
+ export type ForkPlacementContentInput = z.infer<typeof forkPlacementContentSchema>;
165
478
  //# sourceMappingURL=content.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,0EAA0E;AAC1E,eAAO,MAAM,UAAU,aAKpB,CAAC;AAEJ,qFAAqF;AACrF,eAAO,MAAM,YAAY,aAE0D,CAAC;AAIpF,0EAA0E;AAC1E,eAAO,MAAM,eAAe,QAAa,CAAC;AAC1C,eAAO,MAAM,cAAc,QAAa,CAAC;AACzC,eAAO,MAAM,aAAa,QAAa,CAAC;AACxC,eAAO,MAAM,iBAAiB,QAAa,CAAC;AAC5C,eAAO,MAAM,gBAAgB,QAAa,CAAC;AAM3C;;;;GAIG;AACH,eAAO,MAAM,kBAAkB,4EAQrB,CAAC;AACX,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;kBAUnB,CAAC;AACZ,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAgB5D,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;kBASpB,CAAC;AAEZ,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;kBASpB,CAAC;AAEZ,eAAO,MAAM,oBAAoB;;;;;;kBAatB,CAAC;AAEZ,eAAO,MAAM,mBAAmB;;;;kBAMrB,CAAC;AAEZ,eAAO,MAAM,oBAAoB;;;;;;;;;;;kBAsBtB,CAAC;AAEZ,eAAO,MAAM,uBAAuB;;;;;;;kBAKzB,CAAC;AAEZ,eAAO,MAAM,gBAAgB;;;EAAiC,CAAC;AAE/D;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;kBAelB,CAAC;AAEZ,eAAO,MAAM,gBAAgB;;;;;;;;;;;kBAgBlB,CAAC;AAEZ,eAAO,MAAM,oBAAoB;;;;;;;kBAatB,CAAC;AAEZ,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACnE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACnE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACvE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACvE,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAC7E,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC/D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC/D,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC"}
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"AAEA;;;;;;;;GAQG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,0EAA0E;AAC1E,eAAO,MAAM,UAAU,aAKpB,CAAC;AAEJ;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,MAAM,CAe5D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,MAAM,EACnB,MAAM,GAAE,MAAgC,GACvC,MAAM,CAER;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAClC,WAAW,EAAE,MAAM,EACnB,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,MAAgC,GACvC,MAAM,CAER;AAED,qFAAqF;AACrF,eAAO,MAAM,YAAY,aAE0D,CAAC;AAIpF,0EAA0E;AAC1E,eAAO,MAAM,eAAe,QAAa,CAAC;AAC1C,eAAO,MAAM,cAAc,QAAa,CAAC;AACzC,eAAO,MAAM,aAAa,QAAa,CAAC;AACxC,eAAO,MAAM,iBAAiB,QAAa,CAAC;AAC5C,eAAO,MAAM,gBAAgB,QAAa,CAAC;AAM3C;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,eAAO,MAAM,4BAA4B,4EAQ/B,CAAC;AAEX;;;;;;;;;;;;;;;;;;GAkBG;AACH,eAAO,MAAM,uBAAuB,qCAAsC,CAAC;AAE3E,eAAO,MAAM,yBAAyB,oCAAqC,CAAC;AAE5E,gCAAgC;AAChC,eAAO,MAAM,kBAAkB,+HAIrB,CAAC;AAEX;;;;;GAKG;AACH,MAAM,MAAM,eAAe,GAAG,CAAC,OAAO,kBAAkB,CAAC,CAAC,MAAM,CAAC,CAAC;AAElE;;;;;;GAMG;AACH,eAAO,MAAM,0BAA0B,oDAAuD,CAAC;AAmF/F,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4BAM5B,CAAC;AACH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D;;;GAGG;AACH,eAAO,MAAM,eAAe;;;kBAKjB,CAAC;AACZ,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAgBxD;;;;;GAKG;AACH,eAAO,MAAM,YAAY,0DAA2D,CAAC;AACrF,eAAO,MAAM,gBAAgB;;;;;;EAAuB,CAAC;AACrD,MAAM,MAAM,UAAU,GAAG,CAAC,OAAO,YAAY,CAAC,CAAC,MAAM,CAAC,CAAC;AAUvD,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAoBpB,CAAC;AAEZ,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kBAapB,CAAC;AAEZ;;;;;GAKG;AACH,eAAO,MAAM,cAAc,8EAQjB,CAAC;AACX,eAAO,MAAM,kBAAkB;;;;;;;;EAAyB,CAAC;AACzD,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAC;AAE3D,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;kBAiCtB,CAAC;AAEZ,eAAO,MAAM,mBAAmB;;;;kBAMrB,CAAC;AAEZ,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;kBAwBtB,CAAC;AAEZ,eAAO,MAAM,uBAAuB;;;;;;;kBAKzB,CAAC;AAEZ,eAAO,MAAM,gBAAgB;;;EAAiC,CAAC;AAE/D;;;;;GAKG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;kBAuBlB,CAAC;AAEZ,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;kBA4BlB,CAAC;AAEZ,eAAO,MAAM,oBAAoB;;;;;;;kBAatB,CAAC;AAEZ,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACnE,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AACnE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACvE,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AACvE,MAAM,MAAM,sBAAsB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAC7E,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC/D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAC;AAC/D,MAAM,MAAM,mBAAmB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAIvE;;;;;;GAMG;AACH,eAAO,MAAM,cAAc;;;EAAiC,CAAC;AAC7D,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AAqBtD,eAAO,MAAM,2BAA2B;;;;;;kBAQ7B,CAAC;AAEZ,eAAO,MAAM,2BAA2B;;;;;;;kBAa7B,CAAC;AAEZ,eAAO,MAAM,2BAA2B;;kBAI7B,CAAC;AAEZ,eAAO,MAAM,yBAAyB;;;;;;;;;kBAQ3B,CAAC;AAEZ,eAAO,MAAM,0BAA0B;;;;kBAM5B,CAAC;AAEZ,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AACrF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AACrF,MAAM,MAAM,0BAA0B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,2BAA2B,CAAC,CAAC;AACrF,MAAM,MAAM,wBAAwB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,yBAAyB,CAAC,CAAC;AACjF,MAAM,MAAM,yBAAyB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,0BAA0B,CAAC,CAAC"}