@caelo-cms/shared 0.10.22 → 0.10.24

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 (249) hide show
  1. package/dist/ai-tools.d.ts +289 -273
  2. package/dist/ai-tools.d.ts.map +1 -1
  3. package/dist/ai-tools.js +342 -323
  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 +35 -0
  9. package/dist/base-css.d.ts.map +1 -0
  10. package/dist/base-css.js +40 -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-draft-shell.d.ts +21 -0
  29. package/dist/design-draft-shell.d.ts.map +1 -0
  30. package/dist/design-draft-shell.js +81 -0
  31. package/dist/design-draft-shell.js.map +1 -0
  32. package/dist/design-manifest.d.ts +36 -0
  33. package/dist/design-manifest.d.ts.map +1 -0
  34. package/dist/design-manifest.js +90 -0
  35. package/dist/design-manifest.js.map +1 -0
  36. package/dist/fonts.d.ts +89 -0
  37. package/dist/fonts.d.ts.map +1 -0
  38. package/dist/fonts.js +241 -0
  39. package/dist/fonts.js.map +1 -0
  40. package/dist/genesis-inventory.d.ts +32 -0
  41. package/dist/genesis-inventory.d.ts.map +1 -0
  42. package/dist/genesis-inventory.js +186 -0
  43. package/dist/genesis-inventory.js.map +1 -0
  44. package/dist/genesis.d.ts +102 -0
  45. package/dist/genesis.d.ts.map +1 -0
  46. package/dist/genesis.js +145 -0
  47. package/dist/genesis.js.map +1 -0
  48. package/dist/i18n.d.ts +29 -36
  49. package/dist/i18n.d.ts.map +1 -1
  50. package/dist/i18n.js +53 -128
  51. package/dist/i18n.js.map +1 -1
  52. package/dist/index.d.ts +28 -1
  53. package/dist/index.d.ts.map +1 -1
  54. package/dist/index.js +28 -1
  55. package/dist/index.js.map +1 -1
  56. package/dist/interactions.d.ts +23 -0
  57. package/dist/interactions.d.ts.map +1 -0
  58. package/dist/interactions.js +44 -0
  59. package/dist/interactions.js.map +1 -0
  60. package/dist/media.d.ts +101 -16
  61. package/dist/media.d.ts.map +1 -1
  62. package/dist/media.js +126 -15
  63. package/dist/media.js.map +1 -1
  64. package/dist/page-log.d.ts +94 -0
  65. package/dist/page-log.d.ts.map +1 -0
  66. package/dist/page-log.js +111 -0
  67. package/dist/page-log.js.map +1 -0
  68. package/dist/preview-compose.d.ts +85 -12
  69. package/dist/preview-compose.d.ts.map +1 -1
  70. package/dist/preview-compose.js +157 -67
  71. package/dist/preview-compose.js.map +1 -1
  72. package/dist/proposal-status.d.ts +40 -0
  73. package/dist/proposal-status.d.ts.map +1 -0
  74. package/dist/proposal-status.js +34 -0
  75. package/dist/proposal-status.js.map +1 -0
  76. package/dist/responsive-images.d.ts +64 -0
  77. package/dist/responsive-images.d.ts.map +1 -0
  78. package/dist/responsive-images.js +98 -0
  79. package/dist/responsive-images.js.map +1 -0
  80. package/dist/safe-keys.d.ts +9 -0
  81. package/dist/safe-keys.d.ts.map +1 -0
  82. package/dist/safe-keys.js +20 -0
  83. package/dist/safe-keys.js.map +1 -0
  84. package/dist/seo.d.ts +11 -16
  85. package/dist/seo.d.ts.map +1 -1
  86. package/dist/seo.js +7 -23
  87. package/dist/seo.js.map +1 -1
  88. package/dist/skills.d.ts +14 -68
  89. package/dist/skills.d.ts.map +1 -1
  90. package/dist/skills.js +19 -113
  91. package/dist/skills.js.map +1 -1
  92. package/dist/strip-cdata.d.ts +7 -0
  93. package/dist/strip-cdata.d.ts.map +1 -0
  94. package/dist/strip-cdata.js +48 -0
  95. package/dist/strip-cdata.js.map +1 -0
  96. package/dist/structured-sets.d.ts +6 -52
  97. package/dist/structured-sets.d.ts.map +1 -1
  98. package/dist/structured-sets.js +6 -68
  99. package/dist/structured-sets.js.map +1 -1
  100. package/dist/subagents.d.ts +105 -3
  101. package/dist/subagents.d.ts.map +1 -1
  102. package/dist/subagents.js +224 -41
  103. package/dist/subagents.js.map +1 -1
  104. package/dist/template-engine.d.ts +85 -0
  105. package/dist/template-engine.d.ts.map +1 -0
  106. package/dist/template-engine.js +403 -0
  107. package/dist/template-engine.js.map +1 -0
  108. package/dist/theme-importers/auto-detect.d.ts +26 -0
  109. package/dist/theme-importers/auto-detect.d.ts.map +1 -0
  110. package/dist/theme-importers/auto-detect.js +42 -0
  111. package/dist/theme-importers/auto-detect.js.map +1 -0
  112. package/dist/theme-importers/css-comments.d.ts +12 -0
  113. package/dist/theme-importers/css-comments.d.ts.map +1 -0
  114. package/dist/theme-importers/css-comments.js +15 -0
  115. package/dist/theme-importers/css-comments.js.map +1 -0
  116. package/dist/theme-importers/dtcg.d.ts +46 -0
  117. package/dist/theme-importers/dtcg.d.ts.map +1 -0
  118. package/dist/theme-importers/dtcg.js +111 -0
  119. package/dist/theme-importers/dtcg.js.map +1 -0
  120. package/dist/theme-importers/loose.d.ts +3 -0
  121. package/dist/theme-importers/loose.d.ts.map +1 -0
  122. package/dist/theme-importers/loose.js +76 -0
  123. package/dist/theme-importers/loose.js.map +1 -0
  124. package/dist/theme-importers/shadcn.d.ts +24 -0
  125. package/dist/theme-importers/shadcn.d.ts.map +1 -0
  126. package/dist/theme-importers/shadcn.js +135 -0
  127. package/dist/theme-importers/shadcn.js.map +1 -0
  128. package/dist/theme-importers/style-dictionary.d.ts +17 -0
  129. package/dist/theme-importers/style-dictionary.d.ts.map +1 -0
  130. package/dist/theme-importers/style-dictionary.js +125 -0
  131. package/dist/theme-importers/style-dictionary.js.map +1 -0
  132. package/dist/theme-importers/tailwind.d.ts +3 -0
  133. package/dist/theme-importers/tailwind.d.ts.map +1 -0
  134. package/dist/theme-importers/tailwind.js +218 -0
  135. package/dist/theme-importers/tailwind.js.map +1 -0
  136. package/dist/theme-literal-binding.d.ts +37 -0
  137. package/dist/theme-literal-binding.d.ts.map +1 -0
  138. package/dist/theme-literal-binding.js +138 -0
  139. package/dist/theme-literal-binding.js.map +1 -0
  140. package/dist/theme-normalize.d.ts +31 -0
  141. package/dist/theme-normalize.d.ts.map +1 -0
  142. package/dist/theme-normalize.js +587 -0
  143. package/dist/theme-normalize.js.map +1 -0
  144. package/dist/theme-ramp.d.ts +55 -0
  145. package/dist/theme-ramp.d.ts.map +1 -0
  146. package/dist/theme-ramp.js +149 -0
  147. package/dist/theme-ramp.js.map +1 -0
  148. package/dist/theme-render.d.ts +105 -0
  149. package/dist/theme-render.d.ts.map +1 -0
  150. package/dist/theme-render.js +441 -0
  151. package/dist/theme-render.js.map +1 -0
  152. package/dist/themes-errors.d.ts +109 -0
  153. package/dist/themes-errors.d.ts.map +1 -0
  154. package/dist/themes-errors.js +170 -0
  155. package/dist/themes-errors.js.map +1 -0
  156. package/dist/themes.d.ts +343 -0
  157. package/dist/themes.d.ts.map +1 -0
  158. package/dist/themes.js +697 -0
  159. package/dist/themes.js.map +1 -0
  160. package/dist/version.d.ts +7 -4
  161. package/dist/version.d.ts.map +1 -1
  162. package/dist/version.js +6 -3
  163. package/dist/version.js.map +1 -1
  164. package/package.json +10 -2
  165. package/src/__tests__/redos-hardening.test.ts +160 -0
  166. package/src/ai-tools-add-module-modes.test.ts +106 -0
  167. package/src/ai-tools-position.test.ts +134 -0
  168. package/src/ai-tools.test.ts +81 -0
  169. package/src/ai-tools.ts +1105 -0
  170. package/src/auth-forms.ts +36 -0
  171. package/src/base-css.ts +42 -0
  172. package/src/build-page.test.ts +228 -0
  173. package/src/build-page.ts +319 -0
  174. package/src/cap-failures.ts +67 -0
  175. package/src/content.test.ts +170 -0
  176. package/src/content.ts +620 -0
  177. package/src/context.ts +43 -0
  178. package/src/css-gradient-scan.ts +88 -0
  179. package/src/css-var-scan.test.ts +96 -0
  180. package/src/css-var-scan.ts +144 -0
  181. package/src/derive-module-type.test.ts +80 -0
  182. package/src/design-draft-shell.test.ts +85 -0
  183. package/src/design-draft-shell.ts +109 -0
  184. package/src/design-manifest.ts +93 -0
  185. package/src/fonts.test.ts +157 -0
  186. package/src/fonts.ts +296 -0
  187. package/src/genesis-inventory.test.ts +86 -0
  188. package/src/genesis-inventory.ts +215 -0
  189. package/src/genesis-sanitize.test.ts +35 -0
  190. package/src/genesis.ts +158 -0
  191. package/src/i18n.test.ts +58 -0
  192. package/src/i18n.ts +91 -0
  193. package/src/index.test.ts +10 -0
  194. package/src/index.ts +59 -0
  195. package/src/interactions.ts +48 -0
  196. package/src/logger.ts +147 -0
  197. package/src/media.test.ts +160 -0
  198. package/src/media.ts +355 -0
  199. package/src/page-log.test.ts +163 -0
  200. package/src/page-log.ts +124 -0
  201. package/src/preview-compose.test.ts +637 -0
  202. package/src/preview-compose.ts +656 -0
  203. package/src/preview-scanner.test.ts +96 -0
  204. package/src/preview-scanner.ts +214 -0
  205. package/src/proposal-status.test.ts +69 -0
  206. package/src/proposal-status.ts +40 -0
  207. package/src/responsive-images.test.ts +104 -0
  208. package/src/responsive-images.ts +151 -0
  209. package/src/result.ts +29 -0
  210. package/src/safe-keys.ts +21 -0
  211. package/src/seo.test.ts +194 -0
  212. package/src/seo.ts +233 -0
  213. package/src/skills.ts +48 -0
  214. package/src/snapshots.test.ts +80 -0
  215. package/src/snapshots.ts +81 -0
  216. package/src/strip-cdata.test.ts +41 -0
  217. package/src/strip-cdata.ts +50 -0
  218. package/src/structured-sets.ts +114 -0
  219. package/src/subagents.test.ts +262 -0
  220. package/src/subagents.ts +432 -0
  221. package/src/template-engine.test.ts +379 -0
  222. package/src/template-engine.ts +520 -0
  223. package/src/theme-gradient.test.ts +92 -0
  224. package/src/theme-importers/__tests__/proto-pollution.test.ts +54 -0
  225. package/src/theme-importers/auto-detect.ts +84 -0
  226. package/src/theme-importers/css-comments.ts +15 -0
  227. package/src/theme-importers/dtcg.ts +106 -0
  228. package/src/theme-importers/loose.ts +76 -0
  229. package/src/theme-importers/shadcn.ts +133 -0
  230. package/src/theme-importers/style-dictionary.ts +125 -0
  231. package/src/theme-importers/tailwind.ts +217 -0
  232. package/src/theme-literal-binding.test.ts +71 -0
  233. package/src/theme-literal-binding.ts +159 -0
  234. package/src/theme-motion.test.ts +115 -0
  235. package/src/theme-normalize-envelope.test.ts +43 -0
  236. package/src/theme-normalize-gradient.test.ts +135 -0
  237. package/src/theme-normalize.ts +661 -0
  238. package/src/theme-ramp.ts +187 -0
  239. package/src/theme-render-sanitize.test.ts +45 -0
  240. package/src/theme-render.test.ts +119 -0
  241. package/src/theme-render.ts +487 -0
  242. package/src/theme-shadow.test.ts +56 -0
  243. package/src/themes-errors.ts +199 -0
  244. package/src/themes.ts +842 -0
  245. package/src/version.ts +66 -0
  246. package/dist/translation.d.ts +0 -127
  247. package/dist/translation.d.ts.map +0 -1
  248. package/dist/translation.js +0 -208
  249. package/dist/translation.js.map +0 -1
@@ -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>>;
159
245
  }, 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"];
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;
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,38 @@ 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";
312
440
  "nav-menu": "nav-menu";
313
441
  taxonomy: "taxonomy";
314
- theme: "theme";
315
442
  tags: "tags";
316
- "link-list": "link-list";
317
- "language-selector": "language-selector";
318
443
  }>;
319
444
  slug: z.ZodString;
320
445
  displayName: z.ZodString;
321
446
  items: z.ZodArray<z.ZodUnknown>;
322
447
  }, 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
448
  export declare const setTemplateLayoutToolInput: z.ZodObject<{
363
449
  templateId: z.ZodString;
364
450
  layoutSlug: z.ZodString;
@@ -392,7 +478,7 @@ export declare const duplicatePageToolInput: z.ZodObject<{
392
478
  targetTemplateId: z.ZodOptional<z.ZodString>;
393
479
  locale: z.ZodOptional<z.ZodString>;
394
480
  }, z.core.$strict>;
395
- export declare const changeTemplateToolInput: z.ZodObject<{
481
+ export declare const repointPageTemplateToolInput: z.ZodObject<{
396
482
  pageId: z.ZodString;
397
483
  newTemplateId: z.ZodString;
398
484
  orphanDisposition: z.ZodDefault<z.ZodDiscriminatedUnion<[z.ZodObject<{
@@ -406,10 +492,10 @@ export declare const moveModuleToolInput: z.ZodObject<{
406
492
  pageId: z.ZodString;
407
493
  moduleId: z.ZodString;
408
494
  toBlockName: z.ZodString;
409
- position: z.ZodUnion<readonly [z.ZodEnum<{
495
+ position: z.ZodPreprocess<z.ZodUnion<readonly [z.ZodEnum<{
410
496
  top: "top";
411
497
  bottom: "bottom";
412
- }>, z.ZodPipe<z.ZodTransform<unknown, unknown>, z.ZodNumber>]>;
498
+ }>, z.ZodPreprocess<z.ZodNumber>]>>;
413
499
  }, z.core.$strict>;
414
500
  export declare const reorderModuleToolInput: z.ZodObject<{
415
501
  pageId: z.ZodString;
@@ -430,11 +516,11 @@ export declare const reorderModuleToolInput: z.ZodObject<{
430
516
  export declare const findMediaToolInput: z.ZodObject<{
431
517
  query: z.ZodOptional<z.ZodString>;
432
518
  mime: z.ZodOptional<z.ZodEnum<{
433
- "image/jpeg": "image/jpeg";
434
519
  "image/png": "image/png";
520
+ "image/jpeg": "image/jpeg";
435
521
  "image/webp": "image/webp";
436
- "image/avif": "image/avif";
437
522
  "image/gif": "image/gif";
523
+ "image/avif": "image/avif";
438
524
  "image/svg+xml": "image/svg+xml";
439
525
  "application/pdf": "application/pdf";
440
526
  "video/mp4": "video/mp4";
@@ -442,6 +528,18 @@ export declare const findMediaToolInput: z.ZodObject<{
442
528
  limit: z.ZodDefault<z.ZodNumber>;
443
529
  }, z.core.$strict>;
444
530
  export type FindMediaToolInput = z.infer<typeof findMediaToolInput>;
531
+ /**
532
+ * run #10 D4 — `regenerate_media_variants`. Recovery tool for the
533
+ * staging generator's "media references unresolved" failure: re-runs
534
+ * the image pipeline for the named assets (or every asset with an
535
+ * incomplete ladder) and reports per-asset what was added or why
536
+ * nothing could be.
537
+ */
538
+ export declare const regenerateMediaVariantsToolInput: z.ZodObject<{
539
+ assetIds: z.ZodOptional<z.ZodArray<z.ZodString>>;
540
+ allMissing: z.ZodDefault<z.ZodBoolean>;
541
+ }, z.core.$strict>;
542
+ export type RegenerateMediaVariantsToolInput = z.infer<typeof regenerateMediaVariantsToolInput>;
445
543
  /**
446
544
  * P7 — `set_media_alt`. AI may improve a11y on an existing asset
447
545
  * without a human round-trip (e.g. when the editor uploaded an image
@@ -453,6 +551,34 @@ export declare const setMediaAltToolInput: z.ZodObject<{
453
551
  alt: z.ZodString;
454
552
  }, z.core.$strict>;
455
553
  export type SetMediaAltToolInput = z.infer<typeof setMediaAltToolInput>;
554
+ /**
555
+ * 0184 — `set_home_page`. AI designates a page as the site homepage (per
556
+ * locale, the locale root). Records `locales.home_page_id`; the page keeps
557
+ * its own slug but resolves to `/`.
558
+ */
559
+ export declare const setHomePageToolInput: z.ZodObject<{
560
+ pageId: z.ZodString;
561
+ locale: z.ZodOptional<z.ZodString>;
562
+ }, z.core.$strict>;
563
+ export type SetHomePageToolInput = z.infer<typeof setHomePageToolInput>;
564
+ /**
565
+ * 0181 — `set_media_source`. AI records an asset's provenance (source
566
+ * kind + origin detail) and licence when known. All fields but the
567
+ * assetId are optional; the op COALESCEs so omitted fields stay
568
+ * unchanged.
569
+ */
570
+ export declare const setMediaSourceToolInput: z.ZodObject<{
571
+ assetId: z.ZodString;
572
+ sourceKind: z.ZodOptional<z.ZodEnum<{
573
+ upload: "upload";
574
+ ai_generated: "ai_generated";
575
+ imported: "imported";
576
+ external: "external";
577
+ }>>;
578
+ sourceDetail: z.ZodOptional<z.ZodString>;
579
+ license: z.ZodOptional<z.ZodString>;
580
+ }, z.core.$strict>;
581
+ export type SetMediaSourceToolInput = z.infer<typeof setMediaSourceToolInput>;
456
582
  /**
457
583
  * P8 — `set_page_seo`. Manual / panel writes to the per-page SEO
458
584
  * sidecar. AI calls this only on explicit user intent
@@ -530,14 +656,6 @@ export type BulkCreateRedirectsToolInput = z.infer<typeof bulkCreateRedirectsToo
530
656
  * `status='published'`. Use the bulk form for "publish all drafts" or
531
657
  * any N>1 flip — saves N round-trips + N snapshot writes + N audit rows.
532
658
  */
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
659
  export declare const setPagesStatusManyToolInput: z.ZodObject<{
542
660
  pageIds: z.ZodArray<z.ZodString>;
543
661
  status: z.ZodEnum<{
@@ -563,14 +681,7 @@ export declare const bulkOptimizeSeoToolInput: z.ZodObject<{
563
681
  export type BulkOptimizeSeoToolInput = z.infer<typeof bulkOptimizeSeoToolInput>;
564
682
  export type EditModuleToolInput = z.infer<typeof editModuleToolInput>;
565
683
  export type SiteMemoryProposeToolInput = z.infer<typeof siteMemoryProposeToolInput>;
566
- export type CreatePageToolInput = z.infer<typeof createPageToolInput>;
567
684
  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
685
  export type SetStructuredSetToolInput = z.infer<typeof setStructuredSetToolInput>;
575
686
  export type ChatCreateSessionInput = z.infer<typeof chatCreateSessionInput>;
576
687
  export type ChatSendMessageInput = z.infer<typeof chatSendMessageInput>;
@@ -580,73 +691,13 @@ export type AiMemorySetInput = z.infer<typeof aiMemorySetInput>;
580
691
  export type AiMemoryReviewInput = z.infer<typeof aiMemoryReviewInput>;
581
692
  export type AiProvidersSetInput = z.infer<typeof aiProvidersSetInput>;
582
693
  export type AiProvidersClearKeyInput = z.infer<typeof aiProvidersClearKeyInput>;
583
- export type AddModuleToLayoutToolInput = z.infer<typeof addModuleToLayoutToolInput>;
584
- export type RemoveModuleFromLayoutToolInput = z.infer<typeof removeModuleFromLayoutToolInput>;
585
694
  export type SetTemplateLayoutToolInput = z.infer<typeof setTemplateLayoutToolInput>;
586
695
  export type CreateLayoutToolInput = z.infer<typeof createLayoutToolInput>;
587
696
  export type SetSiteDefaultsToolInput = z.infer<typeof setSiteDefaultsToolInput>;
588
697
  export type DuplicatePageToolInput = z.infer<typeof duplicatePageToolInput>;
589
- export type ChangeTemplateToolInput = z.infer<typeof changeTemplateToolInput>;
698
+ export type RepointPageTemplateToolInput = z.infer<typeof repointPageTemplateToolInput>;
590
699
  export type MoveModuleToolInput = z.infer<typeof moveModuleToolInput>;
591
700
  export type ReorderModuleToolInput = z.infer<typeof reorderModuleToolInput>;
592
- export declare const proposeAddLocaleToolInput: z.ZodObject<{
593
- code: z.ZodString;
594
- displayName: z.ZodString;
595
- urlStrategy: z.ZodDefault<z.ZodEnum<{
596
- none: "none";
597
- subdirectory: "subdirectory";
598
- subdomain: "subdomain";
599
- domain: "domain";
600
- }>>;
601
- urlHost: z.ZodOptional<z.ZodNullable<z.ZodString>>;
602
- }, z.core.$strict>;
603
- export type ProposeAddLocaleToolInput = z.infer<typeof proposeAddLocaleToolInput>;
604
- export declare const proposeRemoveLocaleToolInput: z.ZodObject<{
605
- code: z.ZodString;
606
- }, z.core.$strict>;
607
- export type ProposeRemoveLocaleToolInput = z.infer<typeof proposeRemoveLocaleToolInput>;
608
- export declare const proposeSetDefaultLocaleToolInput: z.ZodObject<{
609
- code: z.ZodString;
610
- }, z.core.$strict>;
611
- export type ProposeSetDefaultLocaleToolInput = z.infer<typeof proposeSetDefaultLocaleToolInput>;
612
- export declare const proposeUpdateLocaleStrategyToolInput: z.ZodObject<{
613
- code: z.ZodString;
614
- urlStrategy: z.ZodEnum<{
615
- none: "none";
616
- subdirectory: "subdirectory";
617
- subdomain: "subdomain";
618
- domain: "domain";
619
- }>;
620
- urlHost: z.ZodOptional<z.ZodNullable<z.ZodString>>;
621
- }, z.core.$strict>;
622
- export type ProposeUpdateLocaleStrategyToolInput = z.infer<typeof proposeUpdateLocaleStrategyToolInput>;
623
- /**
624
- * P10 — translation tool inputs. `translate_page` auto-dispatches
625
- * Mode 1 / Mode 2 based on the variant's existing status — the AI
626
- * sees one verb regardless of state. `start_translation_job` queues
627
- * a bulk run.
628
- */
629
- export declare const translatePageToolInput: z.ZodObject<{
630
- pageId: z.ZodString;
631
- targetLocale: z.ZodString;
632
- }, z.core.$strict>;
633
- export type TranslatePageToolInput = z.infer<typeof translatePageToolInput>;
634
- export declare const startTranslationJobToolInput: z.ZodObject<{
635
- scope: z.ZodDiscriminatedUnion<[z.ZodObject<{
636
- kind: z.ZodLiteral<"all-stale">;
637
- }, z.core.$strict>, z.ZodObject<{
638
- kind: z.ZodLiteral<"page">;
639
- pageId: z.ZodString;
640
- }, z.core.$strict>, z.ZodObject<{
641
- kind: z.ZodLiteral<"locale">;
642
- code: z.ZodString;
643
- }, z.core.$strict>, z.ZodObject<{
644
- kind: z.ZodLiteral<"pages">;
645
- pageIds: z.ZodArray<z.ZodString>;
646
- }, z.core.$strict>], "kind">;
647
- capMicrocents: z.ZodOptional<z.ZodNullable<z.ZodNumber>>;
648
- }, z.core.$strict>;
649
- export type StartTranslationJobToolInput = z.infer<typeof startTranslationJobToolInput>;
650
701
  /**
651
702
  * P10A — `propose_skill`. AI drafts a new skill body (or revision) and
652
703
  * queues it for Owner review. Per CLAUDE.md §2: skills augment the AI's
@@ -705,41 +756,6 @@ export declare const bootstrapSiteScaffoldToolInput: z.ZodObject<{
705
756
  setAsDefaults: z.ZodOptional<z.ZodBoolean>;
706
757
  }, z.core.$strict>;
707
758
  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
759
  /**
744
760
  * v0.6.0 W4 (deferred) — composite revert. Undoes every snapshot tagged
745
761
  * with the given chat's branch_id. Per-entity revert ops handle the