@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
@@ -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;
159
256
  }, 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"];
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;
271
+ }, z.core.$strict>;
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,87 +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";
317
444
  "language-selector": "language-selector";
318
445
  }>;
319
446
  slug: z.ZodString;
320
447
  displayName: z.ZodString;
321
448
  items: z.ZodArray<z.ZodUnknown>;
322
449
  }, z.core.$strict>;
323
- /**
324
- * P6.7.6 — layout-layer tools. Layouts are site-wide chrome (header /
325
- * footer / nav) that wraps every page on every template bound to the
326
- * layout. `add_module_to_layout` reaches every page across the site
327
- * with one call; `set_template_layout` re-points a template's chrome.
328
- * `create_layout` and `set_site_defaults` are Owner-only at the op
329
- * level — AI calls reject with ActorScopeRejected and the chat surfaces
330
- * the permission requirement.
331
- */
332
- export declare const addModuleToLayoutToolInput: z.ZodObject<{
333
- layoutSlug: z.ZodString;
334
- blockName: z.ZodString;
335
- position: z.ZodUnion<readonly [z.ZodEnum<{
336
- top: "top";
337
- bottom: "bottom";
338
- }>, z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodNumber>]>;
339
- displayName: z.ZodString;
340
- html: z.ZodString;
341
- css: z.ZodOptional<z.ZodString>;
342
- js: z.ZodOptional<z.ZodString>;
343
- fields: z.ZodOptional<z.ZodArray<z.ZodObject<{
344
- name: z.ZodString;
345
- kind: z.ZodEnum<{
346
- number: "number";
347
- boolean: "boolean";
348
- text: "text";
349
- richtext: "richtext";
350
- url: "url";
351
- image: "image";
352
- link: "link";
353
- }>;
354
- label: z.ZodString;
355
- default: z.ZodOptional<z.ZodUnknown>;
356
- }, z.core.$strict>>>;
357
- }, z.core.$strict>;
358
- export declare const removeModuleFromLayoutToolInput: z.ZodObject<{
359
- layoutSlug: z.ZodString;
360
- moduleId: z.ZodString;
361
- }, z.core.$strict>;
362
450
  export declare const setTemplateLayoutToolInput: z.ZodObject<{
363
451
  templateId: z.ZodString;
364
452
  layoutSlug: z.ZodString;
@@ -392,7 +480,7 @@ export declare const duplicatePageToolInput: z.ZodObject<{
392
480
  targetTemplateId: z.ZodOptional<z.ZodString>;
393
481
  locale: z.ZodOptional<z.ZodString>;
394
482
  }, z.core.$strict>;
395
- export declare const changeTemplateToolInput: z.ZodObject<{
483
+ export declare const repointPageTemplateToolInput: z.ZodObject<{
396
484
  pageId: z.ZodString;
397
485
  newTemplateId: z.ZodString;
398
486
  orphanDisposition: z.ZodDefault<z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -406,10 +494,10 @@ export declare const moveModuleToolInput: z.ZodObject<{
406
494
  pageId: z.ZodString;
407
495
  moduleId: z.ZodString;
408
496
  toBlockName: z.ZodString;
409
- position: z.ZodUnion<readonly [z.ZodEnum<{
497
+ position: z.ZodPreprocess<z.ZodUnion<readonly [z.ZodEnum<{
410
498
  top: "top";
411
499
  bottom: "bottom";
412
- }>, z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodNumber>]>;
500
+ }>, z.ZodPreprocess<z.ZodNumber>]>>;
413
501
  }, z.core.$strict>;
414
502
  export declare const reorderModuleToolInput: z.ZodObject<{
415
503
  pageId: z.ZodString;
@@ -430,11 +518,11 @@ export declare const reorderModuleToolInput: z.ZodObject<{
430
518
  export declare const findMediaToolInput: z.ZodObject<{
431
519
  query: z.ZodOptional<z.ZodString>;
432
520
  mime: z.ZodOptional<z.ZodEnum<{
433
- "image/jpeg": "image/jpeg";
434
521
  "image/png": "image/png";
522
+ "image/jpeg": "image/jpeg";
435
523
  "image/webp": "image/webp";
436
- "image/avif": "image/avif";
437
524
  "image/gif": "image/gif";
525
+ "image/avif": "image/avif";
438
526
  "image/svg+xml": "image/svg+xml";
439
527
  "application/pdf": "application/pdf";
440
528
  "video/mp4": "video/mp4";
@@ -442,6 +530,18 @@ export declare const findMediaToolInput: z.ZodObject<{
442
530
  limit: z.ZodDefault<z.ZodNumber>;
443
531
  }, z.core.$strict>;
444
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>;
445
545
  /**
446
546
  * P7 — `set_media_alt`. AI may improve a11y on an existing asset
447
547
  * without a human round-trip (e.g. when the editor uploaded an image
@@ -453,6 +553,34 @@ export declare const setMediaAltToolInput: z.ZodObject<{
453
553
  alt: z.ZodString;
454
554
  }, z.core.$strict>;
455
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>;
456
584
  /**
457
585
  * P8 — `set_page_seo`. Manual / panel writes to the per-page SEO
458
586
  * sidecar. AI calls this only on explicit user intent
@@ -530,14 +658,6 @@ export type BulkCreateRedirectsToolInput = z.infer<typeof bulkCreateRedirectsToo
530
658
  * `status='published'`. Use the bulk form for "publish all drafts" or
531
659
  * any N>1 flip — saves N round-trips + N snapshot writes + N audit rows.
532
660
  */
533
- export declare const setPageStatusToolInput: z.ZodObject<{
534
- pageId: z.ZodString;
535
- status: z.ZodEnum<{
536
- draft: "draft";
537
- published: "published";
538
- }>;
539
- }, z.core.$strict>;
540
- export type SetPageStatusToolInput = z.infer<typeof setPageStatusToolInput>;
541
661
  export declare const setPagesStatusManyToolInput: z.ZodObject<{
542
662
  pageIds: z.ZodArray<z.ZodString>;
543
663
  status: z.ZodEnum<{
@@ -563,14 +683,7 @@ export declare const bulkOptimizeSeoToolInput: z.ZodObject<{
563
683
  export type BulkOptimizeSeoToolInput = z.infer<typeof bulkOptimizeSeoToolInput>;
564
684
  export type EditModuleToolInput = z.infer<typeof editModuleToolInput>;
565
685
  export type SiteMemoryProposeToolInput = z.infer<typeof siteMemoryProposeToolInput>;
566
- export type CreatePageToolInput = z.infer<typeof createPageToolInput>;
567
686
  export type CreateTemplateToolInput = z.infer<typeof createTemplateToolInput>;
568
- export type ComposeFromImportToolInput = z.infer<typeof composeFromImportToolInput>;
569
- export type RenamePageToolInput = z.infer<typeof renamePageToolInput>;
570
- export type SetPageTitleToolInput = z.infer<typeof setPageTitleToolInput>;
571
- export type ChangePageSlugToolInput = z.infer<typeof changePageSlugToolInput>;
572
- export type DeletePageToolInput = z.infer<typeof deletePageToolInput>;
573
- export type RemoveModuleFromPageToolInput = z.infer<typeof removeModuleFromPageToolInput>;
574
687
  export type SetStructuredSetToolInput = z.infer<typeof setStructuredSetToolInput>;
575
688
  export type ChatCreateSessionInput = z.infer<typeof chatCreateSessionInput>;
576
689
  export type ChatSendMessageInput = z.infer<typeof chatSendMessageInput>;
@@ -580,13 +693,11 @@ export type AiMemorySetInput = z.infer<typeof aiMemorySetInput>;
580
693
  export type AiMemoryReviewInput = z.infer<typeof aiMemoryReviewInput>;
581
694
  export type AiProvidersSetInput = z.infer<typeof aiProvidersSetInput>;
582
695
  export type AiProvidersClearKeyInput = z.infer<typeof aiProvidersClearKeyInput>;
583
- export type AddModuleToLayoutToolInput = z.infer<typeof addModuleToLayoutToolInput>;
584
- export type RemoveModuleFromLayoutToolInput = z.infer<typeof removeModuleFromLayoutToolInput>;
585
696
  export type SetTemplateLayoutToolInput = z.infer<typeof setTemplateLayoutToolInput>;
586
697
  export type CreateLayoutToolInput = z.infer<typeof createLayoutToolInput>;
587
698
  export type SetSiteDefaultsToolInput = z.infer<typeof setSiteDefaultsToolInput>;
588
699
  export type DuplicatePageToolInput = z.infer<typeof duplicatePageToolInput>;
589
- export type ChangeTemplateToolInput = z.infer<typeof changeTemplateToolInput>;
700
+ export type RepointPageTemplateToolInput = z.infer<typeof repointPageTemplateToolInput>;
590
701
  export type MoveModuleToolInput = z.infer<typeof moveModuleToolInput>;
591
702
  export type ReorderModuleToolInput = z.infer<typeof reorderModuleToolInput>;
592
703
  export declare const proposeAddLocaleToolInput: z.ZodObject<{
@@ -705,41 +816,6 @@ export declare const bootstrapSiteScaffoldToolInput: z.ZodObject<{
705
816
  setAsDefaults: z.ZodOptional<z.ZodBoolean>;
706
817
  }, z.core.$strict>;
707
818
  export type BootstrapSiteScaffoldToolInput = z.infer<typeof bootstrapSiteScaffoldToolInput>;
708
- /**
709
- * v0.6.0 W4 (deferred) — composite tool. Creates a page and attaches N
710
- * modules to its content block in one tool call, mirroring the way the
711
- * AI naturally describes a multi-section page: a title + a series of
712
- * sections, each with its own HTML/CSS. The handler runs the chain
713
- * server-side so the AI doesn't have to orchestrate create_page +
714
- * N×add_module_to_page across N+1 round-trips.
715
- *
716
- * `sections[]` are placed on the block named in `blockName` (default
717
- * `content`) in the order given.
718
- */
719
- export declare const composePageFromSpecToolInput: z.ZodObject<{
720
- slug: z.ZodString;
721
- name: z.ZodString;
722
- title: z.ZodString;
723
- locale: z.ZodOptional<z.ZodString>;
724
- templateId: z.ZodOptional<z.ZodString>;
725
- status: z.ZodOptional<z.ZodEnum<{
726
- draft: "draft";
727
- published: "published";
728
- }>>;
729
- blockName: z.ZodOptional<z.ZodString>;
730
- sections: z.ZodArray<z.ZodObject<{
731
- displayName: z.ZodString;
732
- html: z.ZodString;
733
- css: z.ZodOptional<z.ZodString>;
734
- js: z.ZodOptional<z.ZodString>;
735
- }, z.core.$strip>>;
736
- seo: z.ZodOptional<z.ZodObject<{
737
- metaDescription: z.ZodOptional<z.ZodString>;
738
- ogImageAssetId: z.ZodOptional<z.ZodString>;
739
- skipSeo: z.ZodOptional<z.ZodBoolean>;
740
- }, z.core.$strict>>;
741
- }, z.core.$strict>;
742
- export type ComposePageFromSpecToolInput = z.infer<typeof composePageFromSpecToolInput>;
743
819
  /**
744
820
  * v0.6.0 W4 (deferred) — composite revert. Undoes every snapshot tagged
745
821
  * with the given chat's branch_id. Per-entity revert ops handle the