@caelo-cms/shared 0.10.72 → 0.11.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (184) hide show
  1. package/dist/ai-tools.d.ts +125 -50
  2. package/dist/ai-tools.d.ts.map +1 -1
  3. package/dist/ai-tools.js +48 -36
  4. package/dist/ai-tools.js.map +1 -1
  5. package/dist/build-page.d.ts +110 -30
  6. package/dist/build-page.d.ts.map +1 -1
  7. package/dist/build-page.js +23 -4
  8. package/dist/build-page.js.map +1 -1
  9. package/dist/content.d.ts +201 -100
  10. package/dist/content.d.ts.map +1 -1
  11. package/dist/content.js +176 -74
  12. package/dist/content.js.map +1 -1
  13. package/dist/css-var-aliases.d.ts +20 -0
  14. package/dist/css-var-aliases.d.ts.map +1 -0
  15. package/dist/css-var-aliases.js +95 -0
  16. package/dist/css-var-aliases.js.map +1 -0
  17. package/dist/css-var-scan.d.ts +0 -16
  18. package/dist/css-var-scan.d.ts.map +1 -1
  19. package/dist/css-var-scan.js +24 -0
  20. package/dist/css-var-scan.js.map +1 -1
  21. package/dist/edit-markers.d.ts +41 -5
  22. package/dist/edit-markers.d.ts.map +1 -1
  23. package/dist/edit-markers.js +47 -50
  24. package/dist/edit-markers.js.map +1 -1
  25. package/dist/index.d.ts +3 -1
  26. package/dist/index.d.ts.map +1 -1
  27. package/dist/index.js +3 -1
  28. package/dist/index.js.map +1 -1
  29. package/dist/interactions.js +2 -2
  30. package/dist/interactions.js.map +1 -1
  31. package/dist/link-canonicalise.d.ts.map +1 -1
  32. package/dist/link-canonicalise.js +7 -1
  33. package/dist/link-canonicalise.js.map +1 -1
  34. package/dist/link-refs.d.ts +1 -1
  35. package/dist/link-refs.js +3 -3
  36. package/dist/lists/address.d.ts +34 -0
  37. package/dist/lists/address.d.ts.map +1 -0
  38. package/dist/lists/address.js +43 -0
  39. package/dist/lists/address.js.map +1 -0
  40. package/dist/lists/default-types.d.ts +10 -0
  41. package/dist/lists/default-types.d.ts.map +1 -0
  42. package/dist/lists/default-types.js +91 -0
  43. package/dist/lists/default-types.js.map +1 -0
  44. package/dist/lists/fields.d.ts +152 -0
  45. package/dist/lists/fields.d.ts.map +1 -0
  46. package/dist/lists/fields.js +258 -0
  47. package/dist/lists/fields.js.map +1 -0
  48. package/dist/lists/index.d.ts +14 -0
  49. package/dist/lists/index.d.ts.map +1 -0
  50. package/dist/lists/index.js +15 -0
  51. package/dist/lists/index.js.map +1 -0
  52. package/dist/lists/item-attr.d.ts +26 -0
  53. package/dist/lists/item-attr.d.ts.map +1 -0
  54. package/dist/lists/item-attr.js +31 -0
  55. package/dist/lists/item-attr.js.map +1 -0
  56. package/dist/lists/items.d.ts +105 -0
  57. package/dist/lists/items.d.ts.map +1 -0
  58. package/dist/lists/items.js +304 -0
  59. package/dist/lists/items.js.map +1 -0
  60. package/dist/lists/list-type.d.ts +401 -0
  61. package/dist/lists/list-type.d.ts.map +1 -0
  62. package/dist/lists/list-type.js +275 -0
  63. package/dist/lists/list-type.js.map +1 -0
  64. package/dist/lists/model.d.ts +14 -0
  65. package/dist/lists/model.d.ts.map +1 -0
  66. package/dist/lists/model.js +15 -0
  67. package/dist/lists/model.js.map +1 -0
  68. package/dist/lists/page-type.d.ts +115 -0
  69. package/dist/lists/page-type.d.ts.map +1 -0
  70. package/dist/lists/page-type.js +66 -0
  71. package/dist/lists/page-type.js.map +1 -0
  72. package/dist/lists/refs.d.ts +13 -0
  73. package/dist/lists/refs.d.ts.map +1 -0
  74. package/dist/lists/refs.js +18 -0
  75. package/dist/lists/refs.js.map +1 -0
  76. package/dist/lists/render-data.d.ts +114 -0
  77. package/dist/lists/render-data.d.ts.map +1 -0
  78. package/dist/lists/render-data.js +3 -0
  79. package/dist/lists/render-data.js.map +1 -0
  80. package/dist/lists/render-deps.d.ts +68 -0
  81. package/dist/lists/render-deps.d.ts.map +1 -0
  82. package/dist/lists/render-deps.js +91 -0
  83. package/dist/lists/render-deps.js.map +1 -0
  84. package/dist/lists/resolve-values.d.ts +63 -0
  85. package/dist/lists/resolve-values.d.ts.map +1 -0
  86. package/dist/lists/resolve-values.js +181 -0
  87. package/dist/lists/resolve-values.js.map +1 -0
  88. package/dist/lists/resolve.d.ts +106 -0
  89. package/dist/lists/resolve.d.ts.map +1 -0
  90. package/dist/lists/resolve.js +878 -0
  91. package/dist/lists/resolve.js.map +1 -0
  92. package/dist/lists/scope.d.ts +81 -0
  93. package/dist/lists/scope.d.ts.map +1 -0
  94. package/dist/lists/scope.js +3 -0
  95. package/dist/lists/scope.js.map +1 -0
  96. package/dist/markup-structure.d.ts +8 -0
  97. package/dist/markup-structure.d.ts.map +1 -1
  98. package/dist/markup-structure.js +2 -0
  99. package/dist/markup-structure.js.map +1 -1
  100. package/dist/media.d.ts +1 -1
  101. package/dist/nested-module-render.d.ts +25 -20
  102. package/dist/nested-module-render.d.ts.map +1 -1
  103. package/dist/nested-module-render.js +122 -31
  104. package/dist/nested-module-render.js.map +1 -1
  105. package/dist/page-log.d.ts +1 -1
  106. package/dist/preview-compose.d.ts +24 -21
  107. package/dist/preview-compose.d.ts.map +1 -1
  108. package/dist/preview-compose.js +34 -118
  109. package/dist/preview-compose.js.map +1 -1
  110. package/dist/source-text-transport.d.ts +17 -0
  111. package/dist/source-text-transport.d.ts.map +1 -0
  112. package/dist/source-text-transport.js +71 -0
  113. package/dist/source-text-transport.js.map +1 -0
  114. package/dist/template-engine.d.ts +44 -31
  115. package/dist/template-engine.d.ts.map +1 -1
  116. package/dist/template-engine.js +75 -174
  117. package/dist/template-engine.js.map +1 -1
  118. package/dist/template-sections.d.ts +69 -0
  119. package/dist/template-sections.d.ts.map +1 -0
  120. package/dist/template-sections.js +423 -0
  121. package/dist/template-sections.js.map +1 -0
  122. package/dist/version.d.ts +2 -2
  123. package/dist/version.d.ts.map +1 -1
  124. package/dist/version.js +1 -1
  125. package/dist/version.js.map +1 -1
  126. package/package.json +8 -1
  127. package/src/__tests__/redos-hardening.test.ts +50 -16
  128. package/src/ai-tools-add-module-modes.test.ts +50 -0
  129. package/src/ai-tools.test.ts +10 -0
  130. package/src/ai-tools.ts +51 -37
  131. package/src/build-page.test.ts +34 -3
  132. package/src/build-page.ts +26 -3
  133. package/src/content.test.ts +111 -3
  134. package/src/content.ts +186 -75
  135. package/src/css-var-aliases.test.ts +61 -0
  136. package/src/css-var-aliases.ts +109 -0
  137. package/src/css-var-scan.ts +9 -0
  138. package/src/edit-markers.test.ts +37 -21
  139. package/src/edit-markers.ts +52 -20
  140. package/src/index.ts +3 -1
  141. package/src/interactions.ts +2 -2
  142. package/src/link-canonicalise.test.ts +36 -6
  143. package/src/link-canonicalise.ts +6 -1
  144. package/src/link-refs.test.ts +66 -42
  145. package/src/link-refs.ts +3 -3
  146. package/src/lists/address.ts +75 -0
  147. package/src/lists/default-types.ts +102 -0
  148. package/src/lists/fields.ts +285 -0
  149. package/src/lists/index.ts +16 -0
  150. package/src/lists/item-attr.test.ts +36 -0
  151. package/src/lists/item-attr.ts +49 -0
  152. package/src/lists/items.ts +402 -0
  153. package/src/lists/list-fixtures.test.ts +302 -0
  154. package/src/lists/list-type.ts +306 -0
  155. package/src/lists/lists.test.ts +328 -0
  156. package/src/lists/model.ts +16 -0
  157. package/src/lists/page-type.ts +71 -0
  158. package/src/lists/refs.ts +21 -0
  159. package/src/lists/render-data.ts +125 -0
  160. package/src/lists/render-deps.test.ts +132 -0
  161. package/src/lists/render-deps.ts +144 -0
  162. package/src/lists/resolve-values.ts +224 -0
  163. package/src/lists/resolve.test.ts +295 -0
  164. package/src/lists/resolve.ts +1148 -0
  165. package/src/lists/scope.ts +69 -0
  166. package/src/lists-compose-parity.test.ts +262 -0
  167. package/src/markup-structure.ts +10 -0
  168. package/src/nested-module-render.test.ts +111 -77
  169. package/src/nested-module-render.ts +85 -48
  170. package/src/preview-compose.test.ts +55 -19
  171. package/src/preview-compose.ts +59 -154
  172. package/src/source-text-transport.test.ts +63 -0
  173. package/src/source-text-transport.ts +70 -0
  174. package/src/template-engine-lists.test.ts +553 -0
  175. package/src/template-engine.test.ts +62 -80
  176. package/src/template-engine.ts +102 -245
  177. package/src/template-sections.ts +500 -0
  178. package/src/version.ts +1 -1
  179. package/dist/structured-sets.d.ts +0 -70
  180. package/dist/structured-sets.d.ts.map +0 -1
  181. package/dist/structured-sets.js +0 -92
  182. package/dist/structured-sets.js.map +0 -1
  183. package/src/structured-sets.ts +0 -114
  184. package/src/template-engine-data-lists.test.ts +0 -90
package/dist/content.d.ts CHANGED
@@ -51,6 +51,22 @@ export declare const MODULE_CSS_MAX: number;
51
51
  export declare const MODULE_JS_MAX: number;
52
52
  export declare const TEMPLATE_HTML_MAX: number;
53
53
  export declare const TEMPLATE_CSS_MAX: number;
54
+ /**
55
+ * Code payloads a model sometimes corrupts before they reach us, both seen
56
+ * in PR #1121's real-AI runs and stored verbatim before this guard:
57
+ * - JSON-encoded: the whole value wrapped in quotes with `\"` escapes
58
+ * (`"<footer class=\"x\">…"`) — the page showed literal quotes;
59
+ * - HTML-escaped markup: `&lt;div&gt;&lt;caelo-slot …` with no real tag
60
+ * — a template without a single slot, so it had no blocks at all.
61
+ * Refusing at the write boundary with the fix turns a broken render the
62
+ * AI only notices from a screenshot into one corrected call (CLAUDE.md
63
+ * §2, §11; same reasoning as the CDATA guard below). AI tool arguments
64
+ * never reach this in that shape: `sourceTextArg` decodes both encodings
65
+ * first (`source-text-transport.ts`); this guards every other writer.
66
+ */
67
+ export declare function jsonEncodedCodeMessage(field: string, value: string): string | null;
68
+ /** See {@link jsonEncodedCodeMessage}: markup sent HTML-escaped. */
69
+ export declare function htmlEscapedMarkupMessage(field: string, value: string): string | null;
54
70
  /**
55
71
  * v0.4.0 — module field schema. Each field declares one substitution slot in
56
72
  * the module's templated HTML (`{{fieldName}}`) and the kind of content it
@@ -75,28 +91,28 @@ export declare const TEMPLATE_CSS_MAX: number;
75
91
  */
76
92
  export declare const MODULE_FIELD_PRIMITIVE_KINDS: readonly ["text", "richtext", "url", "image", "number", "boolean", "link"];
77
93
  /**
78
- * v0.12.0 — list-of-primitive field kinds. The grammar mirrors
79
- * `module-list`'s `{{#field}}{{/field}}` iteration but the elements
80
- * are primitives (or a fixed {label,href} pair for link-list), not
81
- * `{moduleId, contentInstanceId}` refs.
94
+ * Epic #1107 — the data-list field kind (`docs/lists.md` §7). One kind
95
+ * for every repeated piece of data: feature bullets, a footer link group,
96
+ * a three-level menu, a mega dropdown, a "latest news" block. The entry
97
+ * shape comes from a LIST TYPE (`listType`, a slug); the entries come from
98
+ * the field's binding:
82
99
  *
83
- * Use `text-list` for "list of strings" — menu labels, tag chips,
84
- * bullet points where each item is just text. Inner template
85
- * references `{{.}}` (Mustache convention) or `{{item}}` to mean
86
- * the current element.
100
+ * - `local` (default) — entries stored in the placement's value
101
+ * (`ListItem[]`), only this module shows them;
102
+ * - `shared` — a `caelo:list/<id>` list, fixed on the field (`list`) or
103
+ * chosen per placement; navigation and anything needed in
104
+ * more than one place;
105
+ * - `source` — entries generated per page from `source` (a page query,
106
+ * a system source like breadcrumbs, a plugin source).
87
107
  *
88
- * Use `link-list` for "list of links" — primary nav, footer columns,
89
- * sidebar menus. Each element is `{href, label}`. Inner template
90
- * uses `{{href}}` + `{{label}}` per iteration.
91
- *
92
- * For lists with richer per-item structure (cards with image + title
93
- * + body + CTA), use `module-list` pointing at a sub-module — that's
94
- * what nested modules are for.
108
+ * The template iterates `{{#field}}…{{/field}}` the same way for every
109
+ * binding. `module-list` stays: it composes modules, lists carry data.
110
+ * Replaces the `text-list` / `link-list` kinds.
95
111
  */
96
- export declare const MODULE_FIELD_LIST_KINDS: readonly ["text-list", "link-list"];
112
+ export declare const MODULE_FIELD_LIST_KINDS: readonly ["list"];
97
113
  export declare const MODULE_FIELD_NESTED_KINDS: readonly ["module", "module-list"];
98
- /** All eleven v0.12.0 kinds. */
99
- export declare const MODULE_FIELD_KINDS: readonly ["text", "richtext", "url", "image", "number", "boolean", "link", "text-list", "link-list", "module", "module-list"];
114
+ /** Every module field kind. */
115
+ export declare const MODULE_FIELD_KINDS: readonly ["text", "richtext", "url", "image", "number", "boolean", "link", "list", "module", "module-list"];
100
116
  /**
101
117
  * Canonical union of every field kind — used by callers that need to
102
118
  * type a single `kind` field (e.g. the shared template engine's
@@ -106,12 +122,11 @@ export declare const MODULE_FIELD_KINDS: readonly ["text", "richtext", "url", "i
106
122
  export type ModuleFieldKind = (typeof MODULE_FIELD_KINDS)[number];
107
123
  /**
108
124
  * Field kinds the shared template engine iterates via the
109
- * `{{#name}}…{{/name}}` Mustache-section operator. Adding a new
110
- * list-shaped kind to MODULE_FIELD_LIST_KINDS / MODULE_FIELD_NESTED_KINDS
111
- * automatically extends this set; the engine's section-dispatch branch
112
- * keys off it (`packages/shared/src/template-engine.ts`).
125
+ * `{{#name}}…{{/name}}` Mustache-section operator (`list` and
126
+ * `module-list`); the engine's section-dispatch keys off it
127
+ * (`packages/shared/src/template-engine.ts`).
113
128
  */
114
- export declare const MODULE_FIELD_SECTION_KINDS: readonly ["text-list", "link-list", "module-list"];
129
+ export declare const MODULE_FIELD_SECTION_KINDS: readonly ["list", "module-list"];
115
130
  export declare const moduleFieldSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
116
131
  name: z.ZodString;
117
132
  kind: z.ZodEnum<{
@@ -119,29 +134,66 @@ export declare const moduleFieldSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
119
134
  boolean: "boolean";
120
135
  text: "text";
121
136
  richtext: "richtext";
137
+ link: "link";
122
138
  url: "url";
123
139
  image: "image";
124
- link: "link";
125
140
  }>;
126
141
  label: z.ZodString;
127
142
  default: z.ZodOptional<z.ZodUnknown>;
128
143
  }, z.core.$strict>, z.ZodObject<{
129
144
  name: z.ZodString;
130
- kind: z.ZodLiteral<"text-list">;
131
- label: z.ZodString;
132
- min: z.ZodOptional<z.ZodNumber>;
133
- max: z.ZodOptional<z.ZodNumber>;
134
- default: z.ZodOptional<z.ZodArray<z.ZodString>>;
135
- }, z.core.$strict>, z.ZodObject<{
136
- name: z.ZodString;
137
- kind: z.ZodLiteral<"link-list">;
145
+ kind: z.ZodLiteral<"list">;
138
146
  label: z.ZodString;
147
+ listType: z.ZodString;
148
+ bind: z.ZodOptional<z.ZodEnum<{
149
+ source: "source";
150
+ local: "local";
151
+ shared: "shared";
152
+ }>>;
153
+ list: z.ZodOptional<z.ZodString>;
154
+ source: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
155
+ kind: z.ZodLiteral<"query">;
156
+ editable: z.ZodArray<z.ZodEnum<{
157
+ page_type: "page_type";
158
+ terms: "terms";
159
+ terms_mode: "terms_mode";
160
+ parent: "parent";
161
+ exclude_current: "exclude_current";
162
+ order: "order";
163
+ limit: "limit";
164
+ }>>;
165
+ defaults: z.ZodObject<{
166
+ page_type: z.ZodOptional<z.ZodOptional<z.ZodString>>;
167
+ terms: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
168
+ terms_mode: z.ZodOptional<z.ZodOptional<z.ZodEnum<{
169
+ any: "any";
170
+ all: "all";
171
+ }>>>;
172
+ parent: z.ZodOptional<z.ZodOptional<z.ZodString>>;
173
+ exclude_current: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
174
+ order: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
175
+ published_desc: "published_desc";
176
+ published_asc: "published_asc";
177
+ title_asc: "title_asc";
178
+ }>, z.ZodString]>>;
179
+ limit: z.ZodOptional<z.ZodNumber>;
180
+ }, z.core.$strict>;
181
+ }, z.core.$strict>, z.ZodObject<{
182
+ kind: z.ZodLiteral<"system">;
183
+ name: z.ZodEnum<{
184
+ breadcrumbs: "breadcrumbs";
185
+ children: "children";
186
+ siblings: "siblings";
187
+ page_terms: "page_terms";
188
+ term_pages: "term_pages";
189
+ }>;
190
+ }, z.core.$strict>, z.ZodObject<{
191
+ kind: z.ZodLiteral<"plugin">;
192
+ name: z.ZodString;
193
+ }, z.core.$strict>], "kind">>;
139
194
  min: z.ZodOptional<z.ZodNumber>;
140
195
  max: z.ZodOptional<z.ZodNumber>;
141
- default: z.ZodOptional<z.ZodArray<z.ZodObject<{
142
- label: z.ZodString;
143
- href: z.ZodString;
144
- }, z.core.$strict>>>;
196
+ default: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodType<import("./index.js").ListItemInput, unknown, z.core.$ZodTypeInternals<import("./index.js").ListItemInput, unknown>>>, z.ZodString]>>;
145
197
  }, z.core.$strict>, z.ZodObject<{
146
198
  name: z.ZodString;
147
199
  kind: z.ZodLiteral<"module">;
@@ -173,9 +225,9 @@ export type ModuleRef = z.infer<typeof moduleRefSchema>;
173
225
  */
174
226
  export declare const MODULE_KINDS: readonly ["chrome", "hero", "content", "cta", "utility"];
175
227
  export declare const moduleKindSchema: z.ZodEnum<{
228
+ content: "content";
176
229
  chrome: "chrome";
177
230
  hero: "hero";
178
- content: "content";
179
231
  cta: "cta";
180
232
  utility: "utility";
181
233
  }>;
@@ -185,9 +237,9 @@ export declare const moduleCreateSchema: z.ZodObject<{
185
237
  displayName: z.ZodString;
186
238
  description: z.ZodDefault<z.ZodString>;
187
239
  kind: z.ZodDefault<z.ZodEnum<{
240
+ content: "content";
188
241
  chrome: "chrome";
189
242
  hero: "hero";
190
- content: "content";
191
243
  cta: "cta";
192
244
  utility: "utility";
193
245
  }>>;
@@ -202,29 +254,66 @@ export declare const moduleCreateSchema: z.ZodObject<{
202
254
  boolean: "boolean";
203
255
  text: "text";
204
256
  richtext: "richtext";
257
+ link: "link";
205
258
  url: "url";
206
259
  image: "image";
207
- link: "link";
208
260
  }>;
209
261
  label: z.ZodString;
210
262
  default: z.ZodOptional<z.ZodUnknown>;
211
263
  }, z.core.$strict>, z.ZodObject<{
212
264
  name: z.ZodString;
213
- kind: z.ZodLiteral<"text-list">;
214
- label: z.ZodString;
215
- min: z.ZodOptional<z.ZodNumber>;
216
- max: z.ZodOptional<z.ZodNumber>;
217
- default: z.ZodOptional<z.ZodArray<z.ZodString>>;
218
- }, z.core.$strict>, z.ZodObject<{
219
- name: z.ZodString;
220
- kind: z.ZodLiteral<"link-list">;
265
+ kind: z.ZodLiteral<"list">;
221
266
  label: z.ZodString;
267
+ listType: z.ZodString;
268
+ bind: z.ZodOptional<z.ZodEnum<{
269
+ source: "source";
270
+ local: "local";
271
+ shared: "shared";
272
+ }>>;
273
+ list: z.ZodOptional<z.ZodString>;
274
+ source: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
275
+ kind: z.ZodLiteral<"query">;
276
+ editable: z.ZodArray<z.ZodEnum<{
277
+ page_type: "page_type";
278
+ terms: "terms";
279
+ terms_mode: "terms_mode";
280
+ parent: "parent";
281
+ exclude_current: "exclude_current";
282
+ order: "order";
283
+ limit: "limit";
284
+ }>>;
285
+ defaults: z.ZodObject<{
286
+ page_type: z.ZodOptional<z.ZodOptional<z.ZodString>>;
287
+ terms: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
288
+ terms_mode: z.ZodOptional<z.ZodOptional<z.ZodEnum<{
289
+ any: "any";
290
+ all: "all";
291
+ }>>>;
292
+ parent: z.ZodOptional<z.ZodOptional<z.ZodString>>;
293
+ exclude_current: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
294
+ order: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
295
+ published_desc: "published_desc";
296
+ published_asc: "published_asc";
297
+ title_asc: "title_asc";
298
+ }>, z.ZodString]>>;
299
+ limit: z.ZodOptional<z.ZodNumber>;
300
+ }, z.core.$strict>;
301
+ }, z.core.$strict>, z.ZodObject<{
302
+ kind: z.ZodLiteral<"system">;
303
+ name: z.ZodEnum<{
304
+ breadcrumbs: "breadcrumbs";
305
+ children: "children";
306
+ siblings: "siblings";
307
+ page_terms: "page_terms";
308
+ term_pages: "term_pages";
309
+ }>;
310
+ }, z.core.$strict>, z.ZodObject<{
311
+ kind: z.ZodLiteral<"plugin">;
312
+ name: z.ZodString;
313
+ }, z.core.$strict>], "kind">>;
222
314
  min: z.ZodOptional<z.ZodNumber>;
223
315
  max: z.ZodOptional<z.ZodNumber>;
224
- default: z.ZodOptional<z.ZodArray<z.ZodObject<{
225
- label: z.ZodString;
226
- href: z.ZodString;
227
- }, z.core.$strict>>>;
316
+ default: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodType<import("./index.js").ListItemInput, unknown, z.core.$ZodTypeInternals<import("./index.js").ListItemInput, unknown>>>, z.ZodString]>>;
228
317
  }, z.core.$strict>, z.ZodObject<{
229
318
  name: z.ZodString;
230
319
  kind: z.ZodLiteral<"module">;
@@ -244,9 +333,9 @@ export declare const moduleUpdateSchema: z.ZodObject<{
244
333
  displayName: z.ZodOptional<z.ZodString>;
245
334
  description: z.ZodOptional<z.ZodString>;
246
335
  kind: z.ZodOptional<z.ZodEnum<{
336
+ content: "content";
247
337
  chrome: "chrome";
248
338
  hero: "hero";
249
- content: "content";
250
339
  cta: "cta";
251
340
  utility: "utility";
252
341
  }>>;
@@ -261,29 +350,66 @@ export declare const moduleUpdateSchema: z.ZodObject<{
261
350
  boolean: "boolean";
262
351
  text: "text";
263
352
  richtext: "richtext";
353
+ link: "link";
264
354
  url: "url";
265
355
  image: "image";
266
- link: "link";
267
356
  }>;
268
357
  label: z.ZodString;
269
358
  default: z.ZodOptional<z.ZodUnknown>;
270
359
  }, z.core.$strict>, z.ZodObject<{
271
360
  name: z.ZodString;
272
- kind: z.ZodLiteral<"text-list">;
361
+ kind: z.ZodLiteral<"list">;
273
362
  label: z.ZodString;
363
+ listType: z.ZodString;
364
+ bind: z.ZodOptional<z.ZodEnum<{
365
+ source: "source";
366
+ local: "local";
367
+ shared: "shared";
368
+ }>>;
369
+ list: z.ZodOptional<z.ZodString>;
370
+ source: z.ZodOptional<z.ZodDiscriminatedUnion<[z.ZodObject<{
371
+ kind: z.ZodLiteral<"query">;
372
+ editable: z.ZodArray<z.ZodEnum<{
373
+ page_type: "page_type";
374
+ terms: "terms";
375
+ terms_mode: "terms_mode";
376
+ parent: "parent";
377
+ exclude_current: "exclude_current";
378
+ order: "order";
379
+ limit: "limit";
380
+ }>>;
381
+ defaults: z.ZodObject<{
382
+ page_type: z.ZodOptional<z.ZodOptional<z.ZodString>>;
383
+ terms: z.ZodOptional<z.ZodOptional<z.ZodArray<z.ZodString>>>;
384
+ terms_mode: z.ZodOptional<z.ZodOptional<z.ZodEnum<{
385
+ any: "any";
386
+ all: "all";
387
+ }>>>;
388
+ parent: z.ZodOptional<z.ZodOptional<z.ZodString>>;
389
+ exclude_current: z.ZodOptional<z.ZodOptional<z.ZodBoolean>>;
390
+ order: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
391
+ published_desc: "published_desc";
392
+ published_asc: "published_asc";
393
+ title_asc: "title_asc";
394
+ }>, z.ZodString]>>;
395
+ limit: z.ZodOptional<z.ZodNumber>;
396
+ }, z.core.$strict>;
397
+ }, z.core.$strict>, z.ZodObject<{
398
+ kind: z.ZodLiteral<"system">;
399
+ name: z.ZodEnum<{
400
+ breadcrumbs: "breadcrumbs";
401
+ children: "children";
402
+ siblings: "siblings";
403
+ page_terms: "page_terms";
404
+ term_pages: "term_pages";
405
+ }>;
406
+ }, z.core.$strict>, z.ZodObject<{
407
+ kind: z.ZodLiteral<"plugin">;
408
+ name: z.ZodString;
409
+ }, z.core.$strict>], "kind">>;
274
410
  min: z.ZodOptional<z.ZodNumber>;
275
411
  max: z.ZodOptional<z.ZodNumber>;
276
- default: z.ZodOptional<z.ZodArray<z.ZodString>>;
277
- }, z.core.$strict>, z.ZodObject<{
278
- name: z.ZodString;
279
- kind: z.ZodLiteral<"link-list">;
280
- label: z.ZodString;
281
- min: z.ZodOptional<z.ZodNumber>;
282
- max: z.ZodOptional<z.ZodNumber>;
283
- default: z.ZodOptional<z.ZodArray<z.ZodObject<{
284
- label: z.ZodString;
285
- href: z.ZodString;
286
- }, z.core.$strict>>>;
412
+ default: z.ZodOptional<z.ZodUnion<readonly [z.ZodArray<z.ZodType<import("./index.js").ListItemInput, unknown, z.core.$ZodTypeInternals<import("./index.js").ListItemInput, unknown>>>, z.ZodString]>>;
287
413
  }, z.core.$strict>, z.ZodObject<{
288
414
  name: z.ZodString;
289
415
  kind: z.ZodLiteral<"module">;
@@ -298,35 +424,12 @@ export declare const moduleUpdateSchema: z.ZodObject<{
298
424
  max: z.ZodOptional<z.ZodNumber>;
299
425
  }, z.core.$strict>], "kind">>>;
300
426
  }, z.core.$strict>;
301
- /**
302
- * v0.12.0 — page-type tag pages inherit from their template.
303
- * Constrained by templates_kind_check in migration 0096. Surfaced
304
- * in the AI's `## Pages` block so the AI sees three modules-on-
305
- * product-pages as a pattern. See CLAUDE.md §1A.
306
- */
307
- export declare const TEMPLATE_KINDS: readonly ["home", "landing", "product", "blog", "doc", "content", "utility"];
308
- export declare const templateKindSchema: z.ZodEnum<{
309
- content: "content";
310
- utility: "utility";
311
- home: "home";
312
- landing: "landing";
313
- product: "product";
314
- blog: "blog";
315
- doc: "doc";
316
- }>;
317
- export type TemplateKind = (typeof TEMPLATE_KINDS)[number];
427
+ /** A page type slug (epic #1107, docs/lists.md §5). */
428
+ export declare const pageTypeSlugSchema: z.ZodString;
318
429
  export declare const templateCreateSchema: z.ZodObject<{
319
430
  slug: z.ZodString;
320
431
  displayName: z.ZodString;
321
- kind: z.ZodDefault<z.ZodEnum<{
322
- content: "content";
323
- utility: "utility";
324
- home: "home";
325
- landing: "landing";
326
- product: "product";
327
- blog: "blog";
328
- doc: "doc";
329
- }>>;
432
+ pageType: z.ZodOptional<z.ZodString>;
330
433
  html: z.ZodString;
331
434
  css: z.ZodDefault<z.ZodString>;
332
435
  layoutId: z.ZodOptional<z.ZodString>;
@@ -344,15 +447,7 @@ export declare const templateBlockSchema: z.ZodObject<{
344
447
  export declare const templateUpdateSchema: z.ZodObject<{
345
448
  templateId: z.ZodString;
346
449
  displayName: z.ZodOptional<z.ZodString>;
347
- kind: z.ZodOptional<z.ZodEnum<{
348
- content: "content";
349
- utility: "utility";
350
- home: "home";
351
- landing: "landing";
352
- product: "product";
353
- blog: "blog";
354
- doc: "doc";
355
- }>>;
450
+ pageType: z.ZodOptional<z.ZodString>;
356
451
  html: z.ZodOptional<z.ZodString>;
357
452
  css: z.ZodOptional<z.ZodString>;
358
453
  layoutId: z.ZodOptional<z.ZodString>;
@@ -390,6 +485,9 @@ export declare const pageCreateSchema: z.ZodObject<{
390
485
  published: "published";
391
486
  }>>;
392
487
  parentPageId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
488
+ pageType: z.ZodOptional<z.ZodString>;
489
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
490
+ terms: z.ZodOptional<z.ZodArray<z.ZodString>>;
393
491
  }, z.core.$strict>;
394
492
  /**
395
493
  * 0263 — `pages.move_many`: reparent pages (their whole subtrees move
@@ -426,6 +524,9 @@ export declare const pageUpdateSchema: z.ZodObject<{
426
524
  auto: "auto";
427
525
  skip: "skip";
428
526
  }>>;
527
+ pageType: z.ZodOptional<z.ZodString>;
528
+ properties: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
529
+ terms: z.ZodOptional<z.ZodArray<z.ZodString>>;
429
530
  }, z.core.$strict>;
430
531
  export declare const pageSetModulesSchema: z.ZodObject<{
431
532
  pageId: z.ZodString;
@@ -1 +1 @@
1
- {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"content.d.ts","sourceRoot":"","sources":["../src/content.ts"],"names":[],"mappings":"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"}