@caelo-cms/shared 0.10.21 → 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 +291 -231
  2. package/dist/ai-tools.d.ts.map +1 -1
  3. package/dist/ai-tools.js +349 -281
  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
@@ -9,29 +9,26 @@
9
9
  * silent drops in the handler.
10
10
  */
11
11
  import { z } from "zod";
12
- /**
13
- * v0.6.2 — `position` argument shared across the three `add_module_to_*`
14
- * tools. Accepts either the literal string `"top"` / `"bottom"` OR a
15
- * 0..1000 integer index.
16
- *
17
- * The integer branch is `z.preprocess`-wrapped to coerce digit-only
18
- * strings (`"0"`, `"42"`) to numbers before the int check. The AI
19
- * recurrently passes JSON-quoted numbers (`"0"`) even though the tool
20
- * description explicitly says to use bare integers; the coercion
21
- * removes that ergonomic gotcha while still rejecting non-numeric
22
- * strings (`"abc"` → still fails the int check cleanly).
23
- */
24
- export declare const positionInputSchema: z.ZodUnion<readonly [z.ZodEnum<{
12
+ export declare const positionInputSchema: z.ZodPreprocess<z.ZodUnion<readonly [z.ZodEnum<{
25
13
  top: "top";
26
14
  bottom: "bottom";
27
- }>, z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodNumber>]>;
15
+ }>, z.ZodPreprocess<z.ZodNumber>]>>;
28
16
  export declare const editModuleToolInput: z.ZodObject<{
29
17
  moduleId: z.ZodString;
30
18
  displayName: z.ZodOptional<z.ZodString>;
19
+ description: z.ZodOptional<z.ZodString>;
20
+ kind: z.ZodOptional<z.ZodEnum<{
21
+ chrome: "chrome";
22
+ hero: "hero";
23
+ content: "content";
24
+ cta: "cta";
25
+ utility: "utility";
26
+ }>>;
27
+ type: z.ZodOptional<z.ZodString>;
31
28
  html: z.ZodOptional<z.ZodString>;
32
29
  css: z.ZodOptional<z.ZodString>;
33
30
  js: z.ZodOptional<z.ZodString>;
34
- fields: z.ZodOptional<z.ZodArray<z.ZodObject<{
31
+ fields: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
35
32
  name: z.ZodString;
36
33
  kind: z.ZodEnum<{
37
34
  number: "number";
@@ -44,7 +41,37 @@ export declare const editModuleToolInput: z.ZodObject<{
44
41
  }>;
45
42
  label: z.ZodString;
46
43
  default: z.ZodOptional<z.ZodUnknown>;
47
- }, z.core.$strict>>>;
44
+ }, z.core.$strict>, z.ZodObject<{
45
+ name: z.ZodString;
46
+ kind: z.ZodLiteral<"text-list">;
47
+ label: z.ZodString;
48
+ min: z.ZodOptional<z.ZodNumber>;
49
+ max: z.ZodOptional<z.ZodNumber>;
50
+ default: z.ZodOptional<z.ZodArray<z.ZodString>>;
51
+ }, z.core.$strict>, z.ZodObject<{
52
+ name: z.ZodString;
53
+ kind: z.ZodLiteral<"link-list">;
54
+ label: z.ZodString;
55
+ min: z.ZodOptional<z.ZodNumber>;
56
+ max: z.ZodOptional<z.ZodNumber>;
57
+ default: z.ZodOptional<z.ZodArray<z.ZodObject<{
58
+ label: z.ZodString;
59
+ href: z.ZodString;
60
+ }, z.core.$strict>>>;
61
+ }, z.core.$strict>, z.ZodObject<{
62
+ name: z.ZodString;
63
+ kind: z.ZodLiteral<"module">;
64
+ label: z.ZodString;
65
+ allowedModuleTypes: z.ZodOptional<z.ZodArray<z.ZodString>>;
66
+ }, z.core.$strict>, z.ZodObject<{
67
+ name: z.ZodString;
68
+ kind: z.ZodLiteral<"module-list">;
69
+ label: z.ZodString;
70
+ allowedModuleTypes: z.ZodOptional<z.ZodArray<z.ZodString>>;
71
+ min: z.ZodOptional<z.ZodNumber>;
72
+ max: z.ZodOptional<z.ZodNumber>;
73
+ }, z.core.$strict>], "kind">>>;
74
+ bindThemeLiterals: z.ZodOptional<z.ZodBoolean>;
48
75
  }, z.core.$strict>;
49
76
  /**
50
77
  * v0.4.0 — `set_page_module_content` AI tool. Fills the content values for
@@ -70,28 +97,66 @@ export declare const siteMemoryProposeToolInput: z.ZodObject<{
70
97
  body: z.ZodString;
71
98
  rationale: z.ZodString;
72
99
  }, z.core.$strict>;
100
+ /**
101
+ * Progressive-disclosure skill loading. The `## Skills` system-prompt block
102
+ * lists each active skill's slug + description; when a task matches one or
103
+ * more, the model calls `load_skill({slugs})` to pull their full instructions
104
+ * into the conversation (they persist as a tool result for the rest of the
105
+ * chat, so each skill loads at most once).
106
+ *
107
+ * Takes a LIST, not a single slug, per CLAUDE.md §11: a load is a routine
108
+ * operation and every routine operation ships in bulk form, with n=1 as its
109
+ * smallest case rather than a separate singular tool. Loading three skills was
110
+ * three provider round-trips whose only output was one tool call each.
111
+ *
112
+ * Capped at 5: skills are task-scoped, and a model that wants more than a
113
+ * handful at once has almost certainly matched the index too loosely — each
114
+ * body is a sizeable injection into history.
115
+ */
116
+ export declare const loadSkillToolInput: z.ZodObject<{
117
+ slugs: z.ZodArray<z.ZodString>;
118
+ }, z.core.$strict>;
119
+ export type LoadSkillToolInput = z.infer<typeof loadSkillToolInput>;
73
120
  /**
74
121
  * The set of tools shipped in P5. Other phases extend by adding a new
75
122
  * entry; the dispatcher walks this map at registration time.
76
123
  */
77
124
  /**
78
- * P6.7.3 — `add_module_to_page` AI tool. Creates a new module and
79
- * inserts it into a target page's block at the requested position. The
80
- * AI passes html (and optionally css/js) and a sluggable displayName;
81
- * the tool generates a unique slug.
125
+ * The ONE `add_module` input — consolidates add_module_to_{page,layout,template}
126
+ * (audit #2). `target` picks the destination; `targetRef` is a slug OR a uuid
127
+ * (resolved server-side — a slug is friendlier for the AI to hold than a uuid).
128
+ * Same two modes as before: `moduleId` reuses an existing module (now for ALL
129
+ * three targets — layout used to be mint-only), or the authoring fields mint a
130
+ * new one (raw html is fine — moduleize turns it into a proper module). Exactly
131
+ * one mode, enforced by the shared superRefine.
82
132
  */
83
- export declare const addModuleToPageToolInput: z.ZodObject<{
84
- pageId: z.ZodString;
133
+ export declare const addModuleToolInput: z.ZodObject<{
134
+ target: z.ZodEnum<{
135
+ page: "page";
136
+ layout: "layout";
137
+ template: "template";
138
+ }>;
139
+ targetRef: z.ZodString;
85
140
  blockName: z.ZodString;
86
- position: z.ZodUnion<readonly [z.ZodEnum<{
141
+ position: z.ZodPreprocess<z.ZodUnion<readonly [z.ZodEnum<{
87
142
  top: "top";
88
143
  bottom: "bottom";
89
- }>, z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodNumber>]>;
90
- displayName: z.ZodString;
91
- html: z.ZodString;
144
+ }>, z.ZodPreprocess<z.ZodNumber>]>>;
145
+ moduleId: z.ZodOptional<z.ZodString>;
146
+ displayName: z.ZodOptional<z.ZodString>;
147
+ description: z.ZodOptional<z.ZodString>;
148
+ kind: z.ZodOptional<z.ZodEnum<{
149
+ chrome: "chrome";
150
+ hero: "hero";
151
+ content: "content";
152
+ cta: "cta";
153
+ utility: "utility";
154
+ }>>;
155
+ type: z.ZodOptional<z.ZodString>;
156
+ html: z.ZodOptional<z.ZodString>;
92
157
  css: z.ZodOptional<z.ZodString>;
93
158
  js: z.ZodOptional<z.ZodString>;
94
- fields: z.ZodOptional<z.ZodArray<z.ZodObject<{
159
+ fields: z.ZodOptional<z.ZodArray<z.ZodDiscriminatedUnion<[z.ZodObject<{
95
160
  name: z.ZodString;
96
161
  kind: z.ZodEnum<{
97
162
  number: "number";
@@ -104,40 +169,40 @@ export declare const addModuleToPageToolInput: z.ZodObject<{
104
169
  }>;
105
170
  label: z.ZodString;
106
171
  default: z.ZodOptional<z.ZodUnknown>;
107
- }, z.core.$strict>>>;
108
- }, z.core.$strict>;
109
- /**
110
- * P6.7.3 — `add_module_to_template` AI tool. Same shape as
111
- * `add_module_to_page` but fans the new module out to every page using
112
- * the target template, inserting at the same block + position. Used
113
- * for "site-wide" content (a global footer, a header banner, etc.).
114
- */
115
- export declare const addModuleToTemplateToolInput: z.ZodObject<{
116
- templateId: z.ZodString;
117
- blockName: z.ZodString;
118
- position: z.ZodUnion<readonly [z.ZodEnum<{
119
- top: "top";
120
- bottom: "bottom";
121
- }>, z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodNumber>]>;
122
- displayName: z.ZodString;
123
- html: z.ZodString;
124
- css: z.ZodOptional<z.ZodString>;
125
- js: z.ZodOptional<z.ZodString>;
126
- fields: z.ZodOptional<z.ZodArray<z.ZodObject<{
172
+ }, z.core.$strict>, z.ZodObject<{
127
173
  name: z.ZodString;
128
- kind: z.ZodEnum<{
129
- number: "number";
130
- boolean: "boolean";
131
- text: "text";
132
- richtext: "richtext";
133
- url: "url";
134
- image: "image";
135
- link: "link";
136
- }>;
174
+ kind: z.ZodLiteral<"text-list">;
137
175
  label: z.ZodString;
138
- default: z.ZodOptional<z.ZodUnknown>;
139
- }, z.core.$strict>>>;
140
- }, z.core.$strict>;
176
+ min: z.ZodOptional<z.ZodNumber>;
177
+ max: z.ZodOptional<z.ZodNumber>;
178
+ default: z.ZodOptional<z.ZodArray<z.ZodString>>;
179
+ }, z.core.$strict>, z.ZodObject<{
180
+ name: z.ZodString;
181
+ kind: z.ZodLiteral<"link-list">;
182
+ label: z.ZodString;
183
+ min: z.ZodOptional<z.ZodNumber>;
184
+ max: z.ZodOptional<z.ZodNumber>;
185
+ default: z.ZodOptional<z.ZodArray<z.ZodObject<{
186
+ label: z.ZodString;
187
+ href: z.ZodString;
188
+ }, z.core.$strict>>>;
189
+ }, z.core.$strict>, z.ZodObject<{
190
+ name: z.ZodString;
191
+ kind: z.ZodLiteral<"module">;
192
+ label: z.ZodString;
193
+ allowedModuleTypes: z.ZodOptional<z.ZodArray<z.ZodString>>;
194
+ }, z.core.$strict>, z.ZodObject<{
195
+ name: z.ZodString;
196
+ kind: z.ZodLiteral<"module-list">;
197
+ label: z.ZodString;
198
+ allowedModuleTypes: z.ZodOptional<z.ZodArray<z.ZodString>>;
199
+ min: z.ZodOptional<z.ZodNumber>;
200
+ max: z.ZodOptional<z.ZodNumber>;
201
+ }, z.core.$strict>], "kind">>>;
202
+ bindThemeLiterals: z.ZodOptional<z.ZodBoolean>;
203
+ values: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
204
+ }, z.core.$strict>;
205
+ export type AddModuleToolInput = z.infer<typeof addModuleToolInput>;
141
206
  /**
142
207
  * v0.2.16 — `add_plugin_to_page` AI tool. Inserts a plugin's
143
208
  * `<div data-caelo-plugin>` placeholder into a page's block via a
@@ -152,16 +217,68 @@ export declare const addPluginToPageToolInput: z.ZodObject<{
152
217
  pageId: z.ZodString;
153
218
  pluginSlug: z.ZodString;
154
219
  blockName: z.ZodString;
155
- position: z.ZodUnion<readonly [z.ZodEnum<{
220
+ position: z.ZodPreprocess<z.ZodUnion<readonly [z.ZodEnum<{
156
221
  top: "top";
157
222
  bottom: "bottom";
158
- }>, z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodNumber>]>;
223
+ }>, z.ZodPreprocess<z.ZodNumber>]>>;
224
+ }, z.core.$strict>;
225
+ /**
226
+ * `list_content_instances` — browse the content library. The `placementCount`
227
+ * returned per row is a blast-radius affordance: the AI can decide whether
228
+ * to edit a shared instance (propagates everywhere) or fork it first.
229
+ */
230
+ export declare const listContentInstancesToolInput: z.ZodObject<{
231
+ moduleId: z.ZodOptional<z.ZodString>;
232
+ slug: z.ZodOptional<z.ZodString>;
233
+ search: z.ZodOptional<z.ZodString>;
234
+ pageId: z.ZodOptional<z.ZodString>;
235
+ }, z.core.$strict>;
236
+ export declare const getContentInstanceToolInput: z.ZodObject<{
237
+ id: z.ZodString;
238
+ }, z.core.$strict>;
239
+ export declare const createContentInstanceToolInput: z.ZodObject<{
240
+ moduleId: z.ZodString;
241
+ slug: z.ZodOptional<z.ZodString>;
242
+ displayName: z.ZodOptional<z.ZodString>;
243
+ purpose: z.ZodOptional<z.ZodString>;
244
+ values: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
245
+ }, z.core.$strict>;
246
+ export declare const setContentInstanceValuesToolInput: z.ZodObject<{
247
+ id: z.ZodString;
248
+ values: z.ZodRecord<z.ZodString, z.ZodUnknown>;
249
+ expectedVersion: z.ZodOptional<z.ZodNumber>;
250
+ slug: z.ZodOptional<z.ZodNullable<z.ZodString>>;
251
+ displayName: z.ZodOptional<z.ZodNullable<z.ZodString>>;
252
+ purpose: z.ZodOptional<z.ZodNullable<z.ZodString>>;
253
+ }, z.core.$strict>;
254
+ export declare const deleteContentInstanceToolInput: z.ZodObject<{
255
+ id: z.ZodString;
256
+ }, z.core.$strict>;
257
+ export declare const setPlacementContentToolInput: z.ZodObject<{
258
+ pageId: z.ZodString;
259
+ blockName: z.ZodString;
260
+ position: z.ZodNumber;
261
+ contentInstanceId: z.ZodString;
262
+ syncMode: z.ZodEnum<{
263
+ synced: "synced";
264
+ unsynced: "unsynced";
265
+ }>;
266
+ }, z.core.$strict>;
267
+ export declare const forkPlacementContentToolInput: z.ZodObject<{
268
+ pageId: z.ZodString;
269
+ blockName: z.ZodString;
270
+ position: z.ZodNumber;
159
271
  }, z.core.$strict>;
160
- export declare const AI_TOOLS: readonly ["edit_module", "site_memory_propose", "add_module_to_page", "add_module_to_template", "create_page", "rename_page", "set_page_title", "change_page_slug", "delete_page", "remove_module_from_page", "set_structured_set", "update_theme", "add_module_to_layout", "remove_module_from_layout", "set_template_layout", "create_layout", "set_site_defaults", "duplicate_page", "change_template", "move_module", "reorder_module", "set_nav_menu", "add_plugin_to_page"];
272
+ export declare const AI_TOOLS: readonly ["edit_module", "site_memory_propose", "add_module", "create_page", "update_pages_many", "delete_pages_many", "remove_module_from", "set_structured_set", "update_theme", "set_template_layout", "create_layout", "set_site_defaults", "duplicate_page", "repoint_page_template", "move_module", "reorder_module", "set_nav_menu", "add_plugin_to_page", "list_content_instances", "get_content_instance", "create_content_instance", "set_content_instance_values", "delete_content_instance", "set_placement_content", "fork_placement_content", "build_page", "create_content_instances", "set_page_module_content_many"];
161
273
  export type AiToolName = (typeof AI_TOOLS)[number];
162
- export type AddModuleToPageToolInput = z.infer<typeof addModuleToPageToolInput>;
163
- export type AddModuleToTemplateToolInput = z.infer<typeof addModuleToTemplateToolInput>;
164
274
  export type AddPluginToPageToolInput = z.infer<typeof addPluginToPageToolInput>;
275
+ export type ListContentInstancesToolInput = z.infer<typeof listContentInstancesToolInput>;
276
+ export type GetContentInstanceToolInput = z.infer<typeof getContentInstanceToolInput>;
277
+ export type CreateContentInstanceToolInput = z.infer<typeof createContentInstanceToolInput>;
278
+ export type SetContentInstanceValuesToolInput = z.infer<typeof setContentInstanceValuesToolInput>;
279
+ export type DeleteContentInstanceToolInput = z.infer<typeof deleteContentInstanceToolInput>;
280
+ export type SetPlacementContentToolInput = z.infer<typeof setPlacementContentToolInput>;
281
+ export type ForkPlacementContentToolInput = z.infer<typeof forkPlacementContentToolInput>;
165
282
  /** Chat ops input shapes — used by the SvelteKit form actions. */
166
283
  export declare const chatCreateSessionInput: z.ZodObject<{
167
284
  title: z.ZodOptional<z.ZodString>;
@@ -170,15 +287,55 @@ export declare const chatCreateSessionInput: z.ZodObject<{
170
287
  subagentRole: z.ZodOptional<z.ZodString>;
171
288
  parentChatSessionId: z.ZodOptional<z.ZodNullable<z.ZodString>>;
172
289
  }, z.core.$strict>;
290
+ /**
291
+ * issue #190 — an operator-attached image riding a user chat message.
292
+ * References a media_assets row (the upload endpoint owns validation
293
+ * + storage); image/* only in v1 so the provider mapping is always an
294
+ * image part.
295
+ */
296
+ export declare const chatAttachmentSchema: z.ZodObject<{
297
+ assetId: z.ZodOptional<z.ZodString>;
298
+ storageKey: z.ZodOptional<z.ZodString>;
299
+ mime: z.ZodEnum<{
300
+ "image/png": "image/png";
301
+ "image/jpeg": "image/jpeg";
302
+ "image/webp": "image/webp";
303
+ "image/gif": "image/gif";
304
+ }>;
305
+ alt: z.ZodOptional<z.ZodString>;
306
+ }, z.core.$strict>;
307
+ export type ChatAttachment = z.infer<typeof chatAttachmentSchema>;
308
+ /** issue #190 — attachments-per-message cap; bounds provider payload size. */
309
+ export declare const CHAT_MAX_ATTACHMENTS = 4;
173
310
  export declare const chatSendMessageInput: z.ZodObject<{
174
311
  chatSessionId: z.ZodString;
175
- content: z.ZodString;
312
+ content: z.ZodOptional<z.ZodString>;
176
313
  chips: z.ZodDefault<z.ZodArray<z.ZodObject<{
177
314
  moduleId: z.ZodString;
178
315
  selector: z.ZodString;
179
316
  label: z.ZodString;
180
317
  }, z.core.$strict>>>;
318
+ attachments: z.ZodDefault<z.ZodArray<z.ZodObject<{
319
+ assetId: z.ZodOptional<z.ZodString>;
320
+ storageKey: z.ZodOptional<z.ZodString>;
321
+ mime: z.ZodEnum<{
322
+ "image/png": "image/png";
323
+ "image/jpeg": "image/jpeg";
324
+ "image/webp": "image/webp";
325
+ "image/gif": "image/gif";
326
+ }>;
327
+ alt: z.ZodOptional<z.ZodString>;
328
+ }, z.core.$strict>>>;
329
+ origin: z.ZodOptional<z.ZodEnum<{
330
+ operator: "operator";
331
+ system: "system";
332
+ }>>;
181
333
  activePageId: z.ZodOptional<z.ZodString>;
334
+ resumeApproval: z.ZodOptional<z.ZodObject<{
335
+ approvalId: z.ZodString;
336
+ approved: z.ZodBoolean;
337
+ reason: z.ZodOptional<z.ZodString>;
338
+ }, z.core.$strict>>;
182
339
  }, z.core.$strict>;
183
340
  export declare const chatRenameSessionInput: z.ZodObject<{
184
341
  chatSessionId: z.ZodString;
@@ -189,12 +346,13 @@ export declare const chatPublishInput: z.ZodObject<{
189
346
  entities: z.ZodOptional<z.ZodArray<z.ZodObject<{
190
347
  kind: z.ZodEnum<{
191
348
  module: "module";
192
- template: "template";
193
349
  page: "page";
350
+ layout: "layout";
351
+ template: "template";
194
352
  pageLayout: "pageLayout";
195
353
  pageModuleContent: "pageModuleContent";
196
- layout: "layout";
197
354
  structuredSet: "structuredSet";
355
+ theme: "theme";
198
356
  }>;
199
357
  entityId: z.ZodString;
200
358
  }, z.core.$strict>>>;
@@ -229,18 +387,6 @@ export declare const aiProvidersSetInput: z.ZodObject<{
229
387
  isActive: z.ZodDefault<z.ZodBoolean>;
230
388
  apiKey: z.ZodOptional<z.ZodString>;
231
389
  }, z.core.$strict>;
232
- /**
233
- * P19 — `compose_from_import` AI tool input. Wraps
234
- * `imports.compose_from_run`. Single transaction synthesis: aggregates
235
- * theme tokens, creates one template bound to the default layout,
236
- * materialises every staged import_pages row into a draft page +
237
- * modules. Idempotent — pages already accepted skip cleanly.
238
- */
239
- export declare const composeFromImportToolInput: z.ZodObject<{
240
- runId: z.ZodString;
241
- templateSlug: z.ZodOptional<z.ZodString>;
242
- includeImportPageIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
243
- }, z.core.$strict>;
244
390
  /**
245
391
  * Input for `ai_providers.clear_key` — Owner-only NULLs the encrypted
246
392
  * triplet so the resolver falls back to the env-var path for that
@@ -255,17 +401,6 @@ export declare const aiProvidersClearKeyInput: z.ZodObject<{
255
401
  "local-openai-compat": "local-openai-compat";
256
402
  }>;
257
403
  }, z.core.$strict>;
258
- export declare const createPageToolInput: z.ZodObject<{
259
- name: z.ZodString;
260
- title: z.ZodString;
261
- slug: z.ZodString;
262
- locale: z.ZodDefault<z.ZodString>;
263
- templateId: z.ZodOptional<z.ZodString>;
264
- status: z.ZodDefault<z.ZodEnum<{
265
- draft: "draft";
266
- published: "published";
267
- }>>;
268
- }, z.core.$strict>;
269
404
  /**
270
405
  * P18 AI-completeness — `create_template` AI tool input. Wraps
271
406
  * `templates.create` (widened to AI in this pass per CLAUDE.md §11
@@ -278,89 +413,40 @@ export declare const createTemplateToolInput: z.ZodObject<{
278
413
  html: z.ZodString;
279
414
  css: z.ZodDefault<z.ZodString>;
280
415
  layoutId: z.ZodOptional<z.ZodString>;
416
+ blocks: z.ZodOptional<z.ZodArray<z.ZodObject<{
417
+ name: z.ZodString;
418
+ displayName: z.ZodString;
419
+ position: z.ZodNumber;
420
+ }, z.core.$strip>>>;
281
421
  }, z.core.$strict>;
282
- export declare const renamePageToolInput: z.ZodObject<{
283
- pageId: z.ZodString;
284
- newName: z.ZodString;
285
- }, z.core.$strict>;
286
- export declare const setPageTitleToolInput: z.ZodObject<{
287
- pageId: z.ZodString;
288
- newTitle: z.ZodString;
289
- }, z.core.$strict>;
290
- export declare const changePageSlugToolInput: z.ZodObject<{
291
- pageId: z.ZodString;
292
- newSlug: z.ZodString;
293
- redirectFromOld: z.ZodDefault<z.ZodEnum<{
294
- auto: "auto";
295
- skip: "skip";
296
- }>>;
297
- }, z.core.$strict>;
298
- export declare const deletePageToolInput: z.ZodObject<{
299
- pageId: z.ZodString;
300
- disposition: z.ZodEnum<{
301
- 404: "404";
302
- redirect: "redirect";
422
+ /**
423
+ * The ONE remove-module input — `target` picks page vs layout, `targetRef` is a
424
+ * slug OR a uuid (resolved server-side). Mirrors `add_module` so placement and
425
+ * un-placement share one shape. (No `template` target: there is no
426
+ * remove_module_from_template, matching the add-side history.)
427
+ */
428
+ export declare const removeModuleFromToolInput: z.ZodObject<{
429
+ target: z.ZodEnum<{
430
+ page: "page";
431
+ layout: "layout";
303
432
  }>;
304
- redirectTo: z.ZodOptional<z.ZodString>;
305
- }, z.core.$strict>;
306
- export declare const removeModuleFromPageToolInput: z.ZodObject<{
307
- pageId: z.ZodString;
433
+ targetRef: z.ZodString;
308
434
  moduleId: z.ZodString;
309
435
  }, z.core.$strict>;
436
+ export type RemoveModuleFromToolInput = z.infer<typeof removeModuleFromToolInput>;
310
437
  export declare const setStructuredSetToolInput: z.ZodObject<{
311
438
  kind: z.ZodEnum<{
439
+ "link-list": "link-list";
440
+ theme: "theme";
312
441
  "nav-menu": "nav-menu";
313
442
  taxonomy: "taxonomy";
314
- theme: "theme";
315
443
  tags: "tags";
316
- "link-list": "link-list";
444
+ "language-selector": "language-selector";
317
445
  }>;
318
446
  slug: z.ZodString;
319
447
  displayName: z.ZodString;
320
448
  items: z.ZodArray<z.ZodUnknown>;
321
449
  }, z.core.$strict>;
322
- export declare const updateThemeToolInput: z.ZodObject<{
323
- tokens: z.ZodRecord<z.ZodString, z.ZodString>;
324
- }, z.core.$strict>;
325
- /**
326
- * P6.7.6 — layout-layer tools. Layouts are site-wide chrome (header /
327
- * footer / nav) that wraps every page on every template bound to the
328
- * layout. `add_module_to_layout` reaches every page across the site
329
- * with one call; `set_template_layout` re-points a template's chrome.
330
- * `create_layout` and `set_site_defaults` are Owner-only at the op
331
- * level — AI calls reject with ActorScopeRejected and the chat surfaces
332
- * the permission requirement.
333
- */
334
- export declare const addModuleToLayoutToolInput: z.ZodObject<{
335
- layoutSlug: z.ZodString;
336
- blockName: z.ZodString;
337
- position: z.ZodUnion<readonly [z.ZodEnum<{
338
- top: "top";
339
- bottom: "bottom";
340
- }>, z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodNumber>]>;
341
- displayName: z.ZodString;
342
- html: z.ZodString;
343
- css: z.ZodOptional<z.ZodString>;
344
- js: z.ZodOptional<z.ZodString>;
345
- fields: z.ZodOptional<z.ZodArray<z.ZodObject<{
346
- name: z.ZodString;
347
- kind: z.ZodEnum<{
348
- number: "number";
349
- boolean: "boolean";
350
- text: "text";
351
- richtext: "richtext";
352
- url: "url";
353
- image: "image";
354
- link: "link";
355
- }>;
356
- label: z.ZodString;
357
- default: z.ZodOptional<z.ZodUnknown>;
358
- }, z.core.$strict>>>;
359
- }, z.core.$strict>;
360
- export declare const removeModuleFromLayoutToolInput: z.ZodObject<{
361
- layoutSlug: z.ZodString;
362
- moduleId: z.ZodString;
363
- }, z.core.$strict>;
364
450
  export declare const setTemplateLayoutToolInput: z.ZodObject<{
365
451
  templateId: z.ZodString;
366
452
  layoutSlug: z.ZodString;
@@ -394,7 +480,7 @@ export declare const duplicatePageToolInput: z.ZodObject<{
394
480
  targetTemplateId: z.ZodOptional<z.ZodString>;
395
481
  locale: z.ZodOptional<z.ZodString>;
396
482
  }, z.core.$strict>;
397
- export declare const changeTemplateToolInput: z.ZodObject<{
483
+ export declare const repointPageTemplateToolInput: z.ZodObject<{
398
484
  pageId: z.ZodString;
399
485
  newTemplateId: z.ZodString;
400
486
  orphanDisposition: z.ZodDefault<z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -408,10 +494,10 @@ export declare const moveModuleToolInput: z.ZodObject<{
408
494
  pageId: z.ZodString;
409
495
  moduleId: z.ZodString;
410
496
  toBlockName: z.ZodString;
411
- position: z.ZodUnion<readonly [z.ZodEnum<{
497
+ position: z.ZodPreprocess<z.ZodUnion<readonly [z.ZodEnum<{
412
498
  top: "top";
413
499
  bottom: "bottom";
414
- }>, z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodNumber>]>;
500
+ }>, z.ZodPreprocess<z.ZodNumber>]>>;
415
501
  }, z.core.$strict>;
416
502
  export declare const reorderModuleToolInput: z.ZodObject<{
417
503
  pageId: z.ZodString;
@@ -421,18 +507,6 @@ export declare const reorderModuleToolInput: z.ZodObject<{
421
507
  down: "down";
422
508
  }>, z.ZodNumber]>;
423
509
  }, z.core.$strict>;
424
- /**
425
- * Convenience wrapper over `set_structured_set` for the `nav-menu`
426
- * kind specifically. Users say "edit the menu", not "set the
427
- * structured set kind=nav-menu" — this maps natural language to the
428
- * right tool. Items shape matches `navMenuItem` from
429
- * @caelo-cms/shared/structured-sets.
430
- */
431
- export declare const setNavMenuToolInput: z.ZodObject<{
432
- slug: z.ZodString;
433
- displayName: z.ZodString;
434
- items: z.ZodArray<z.ZodUnknown>;
435
- }, z.core.$strict>;
436
510
  /**
437
511
  * P7 — `find_media`. Searches the media library by alt-text /
438
512
  * filename / mime. Returns up to `limit` matches with the WebP-800
@@ -444,11 +518,11 @@ export declare const setNavMenuToolInput: z.ZodObject<{
444
518
  export declare const findMediaToolInput: z.ZodObject<{
445
519
  query: z.ZodOptional<z.ZodString>;
446
520
  mime: z.ZodOptional<z.ZodEnum<{
447
- "image/jpeg": "image/jpeg";
448
521
  "image/png": "image/png";
522
+ "image/jpeg": "image/jpeg";
449
523
  "image/webp": "image/webp";
450
- "image/avif": "image/avif";
451
524
  "image/gif": "image/gif";
525
+ "image/avif": "image/avif";
452
526
  "image/svg+xml": "image/svg+xml";
453
527
  "application/pdf": "application/pdf";
454
528
  "video/mp4": "video/mp4";
@@ -456,6 +530,18 @@ export declare const findMediaToolInput: z.ZodObject<{
456
530
  limit: z.ZodDefault<z.ZodNumber>;
457
531
  }, z.core.$strict>;
458
532
  export type FindMediaToolInput = z.infer<typeof findMediaToolInput>;
533
+ /**
534
+ * run #10 D4 — `regenerate_media_variants`. Recovery tool for the
535
+ * staging generator's "media references unresolved" failure: re-runs
536
+ * the image pipeline for the named assets (or every asset with an
537
+ * incomplete ladder) and reports per-asset what was added or why
538
+ * nothing could be.
539
+ */
540
+ export declare const regenerateMediaVariantsToolInput: z.ZodObject<{
541
+ assetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
542
+ allMissing: z.ZodDefault<z.ZodBoolean>;
543
+ }, z.core.$strict>;
544
+ export type RegenerateMediaVariantsToolInput = z.infer<typeof regenerateMediaVariantsToolInput>;
459
545
  /**
460
546
  * P7 — `set_media_alt`. AI may improve a11y on an existing asset
461
547
  * without a human round-trip (e.g. when the editor uploaded an image
@@ -467,6 +553,34 @@ export declare const setMediaAltToolInput: z.ZodObject<{
467
553
  alt: z.ZodString;
468
554
  }, z.core.$strict>;
469
555
  export type SetMediaAltToolInput = z.infer<typeof setMediaAltToolInput>;
556
+ /**
557
+ * 0184 — `set_home_page`. AI designates a page as the site homepage (per
558
+ * locale, the locale root). Records `locales.home_page_id`; the page keeps
559
+ * its own slug but resolves to `/`.
560
+ */
561
+ export declare const setHomePageToolInput: z.ZodObject<{
562
+ pageId: z.ZodString;
563
+ locale: z.ZodOptional<z.ZodString>;
564
+ }, z.core.$strict>;
565
+ export type SetHomePageToolInput = z.infer<typeof setHomePageToolInput>;
566
+ /**
567
+ * 0181 — `set_media_source`. AI records an asset's provenance (source
568
+ * kind + origin detail) and licence when known. All fields but the
569
+ * assetId are optional; the op COALESCEs so omitted fields stay
570
+ * unchanged.
571
+ */
572
+ export declare const setMediaSourceToolInput: z.ZodObject<{
573
+ assetId: z.ZodString;
574
+ sourceKind: z.ZodOptional<z.ZodEnum<{
575
+ upload: "upload";
576
+ ai_generated: "ai_generated";
577
+ imported: "imported";
578
+ external: "external";
579
+ }>>;
580
+ sourceDetail: z.ZodOptional<z.ZodString>;
581
+ license: z.ZodOptional<z.ZodString>;
582
+ }, z.core.$strict>;
583
+ export type SetMediaSourceToolInput = z.infer<typeof setMediaSourceToolInput>;
470
584
  /**
471
585
  * P8 — `set_page_seo`. Manual / panel writes to the per-page SEO
472
586
  * sidecar. AI calls this only on explicit user intent
@@ -544,14 +658,6 @@ export type BulkCreateRedirectsToolInput = z.infer<typeof bulkCreateRedirectsToo
544
658
  * `status='published'`. Use the bulk form for "publish all drafts" or
545
659
  * any N>1 flip — saves N round-trips + N snapshot writes + N audit rows.
546
660
  */
547
- export declare const setPageStatusToolInput: z.ZodObject<{
548
- pageId: z.ZodString;
549
- status: z.ZodEnum<{
550
- draft: "draft";
551
- published: "published";
552
- }>;
553
- }, z.core.$strict>;
554
- export type SetPageStatusToolInput = z.infer<typeof setPageStatusToolInput>;
555
661
  export declare const setPagesStatusManyToolInput: z.ZodObject<{
556
662
  pageIds: z.ZodArray<z.ZodString>;
557
663
  status: z.ZodEnum<{
@@ -577,16 +683,8 @@ export declare const bulkOptimizeSeoToolInput: z.ZodObject<{
577
683
  export type BulkOptimizeSeoToolInput = z.infer<typeof bulkOptimizeSeoToolInput>;
578
684
  export type EditModuleToolInput = z.infer<typeof editModuleToolInput>;
579
685
  export type SiteMemoryProposeToolInput = z.infer<typeof siteMemoryProposeToolInput>;
580
- export type CreatePageToolInput = z.infer<typeof createPageToolInput>;
581
686
  export type CreateTemplateToolInput = z.infer<typeof createTemplateToolInput>;
582
- export type ComposeFromImportToolInput = z.infer<typeof composeFromImportToolInput>;
583
- export type RenamePageToolInput = z.infer<typeof renamePageToolInput>;
584
- export type SetPageTitleToolInput = z.infer<typeof setPageTitleToolInput>;
585
- export type ChangePageSlugToolInput = z.infer<typeof changePageSlugToolInput>;
586
- export type DeletePageToolInput = z.infer<typeof deletePageToolInput>;
587
- export type RemoveModuleFromPageToolInput = z.infer<typeof removeModuleFromPageToolInput>;
588
687
  export type SetStructuredSetToolInput = z.infer<typeof setStructuredSetToolInput>;
589
- export type UpdateThemeToolInput = z.infer<typeof updateThemeToolInput>;
590
688
  export type ChatCreateSessionInput = z.infer<typeof chatCreateSessionInput>;
591
689
  export type ChatSendMessageInput = z.infer<typeof chatSendMessageInput>;
592
690
  export type ChatRenameSessionInput = z.infer<typeof chatRenameSessionInput>;
@@ -595,16 +693,13 @@ export type AiMemorySetInput = z.infer<typeof aiMemorySetInput>;
595
693
  export type AiMemoryReviewInput = z.infer<typeof aiMemoryReviewInput>;
596
694
  export type AiProvidersSetInput = z.infer<typeof aiProvidersSetInput>;
597
695
  export type AiProvidersClearKeyInput = z.infer<typeof aiProvidersClearKeyInput>;
598
- export type AddModuleToLayoutToolInput = z.infer<typeof addModuleToLayoutToolInput>;
599
- export type RemoveModuleFromLayoutToolInput = z.infer<typeof removeModuleFromLayoutToolInput>;
600
696
  export type SetTemplateLayoutToolInput = z.infer<typeof setTemplateLayoutToolInput>;
601
697
  export type CreateLayoutToolInput = z.infer<typeof createLayoutToolInput>;
602
698
  export type SetSiteDefaultsToolInput = z.infer<typeof setSiteDefaultsToolInput>;
603
699
  export type DuplicatePageToolInput = z.infer<typeof duplicatePageToolInput>;
604
- export type ChangeTemplateToolInput = z.infer<typeof changeTemplateToolInput>;
700
+ export type RepointPageTemplateToolInput = z.infer<typeof repointPageTemplateToolInput>;
605
701
  export type MoveModuleToolInput = z.infer<typeof moveModuleToolInput>;
606
702
  export type ReorderModuleToolInput = z.infer<typeof reorderModuleToolInput>;
607
- export type SetNavMenuToolInput = z.infer<typeof setNavMenuToolInput>;
608
703
  export declare const proposeAddLocaleToolInput: z.ZodObject<{
609
704
  code: z.ZodString;
610
705
  displayName: z.ZodString;
@@ -721,41 +816,6 @@ export declare const bootstrapSiteScaffoldToolInput: z.ZodObject<{
721
816
  setAsDefaults: z.ZodOptional<z.ZodBoolean>;
722
817
  }, z.core.$strict>;
723
818
  export type BootstrapSiteScaffoldToolInput = z.infer<typeof bootstrapSiteScaffoldToolInput>;
724
- /**
725
- * v0.6.0 W4 (deferred) — composite tool. Creates a page and attaches N
726
- * modules to its content block in one tool call, mirroring the way the
727
- * AI naturally describes a multi-section page: a title + a series of
728
- * sections, each with its own HTML/CSS. The handler runs the chain
729
- * server-side so the AI doesn't have to orchestrate create_page +
730
- * N×add_module_to_page across N+1 round-trips.
731
- *
732
- * `sections[]` are placed on the block named in `blockName` (default
733
- * `content`) in the order given.
734
- */
735
- export declare const composePageFromSpecToolInput: z.ZodObject<{
736
- slug: z.ZodString;
737
- name: z.ZodString;
738
- title: z.ZodString;
739
- locale: z.ZodOptional<z.ZodString>;
740
- templateId: z.ZodOptional<z.ZodString>;
741
- status: z.ZodOptional<z.ZodEnum<{
742
- draft: "draft";
743
- published: "published";
744
- }>>;
745
- blockName: z.ZodOptional<z.ZodString>;
746
- sections: z.ZodArray<z.ZodObject<{
747
- displayName: z.ZodString;
748
- html: z.ZodString;
749
- css: z.ZodOptional<z.ZodString>;
750
- js: z.ZodOptional<z.ZodString>;
751
- }, z.core.$strip>>;
752
- seo: z.ZodOptional<z.ZodObject<{
753
- metaDescription: z.ZodOptional<z.ZodString>;
754
- ogImageAssetId: z.ZodOptional<z.ZodString>;
755
- skipSeo: z.ZodOptional<z.ZodBoolean>;
756
- }, z.core.$strict>>;
757
- }, z.core.$strict>;
758
- export type ComposePageFromSpecToolInput = z.infer<typeof composePageFromSpecToolInput>;
759
819
  /**
760
820
  * v0.6.0 W4 (deferred) — composite revert. Undoes every snapshot tagged
761
821
  * with the given chat's branch_id. Per-entity revert ops handle the