@elytracms/studio 0.0.92 → 0.0.94

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 (599) hide show
  1. package/convex/analytics-cost.test.ts +817 -0
  2. package/convex/asset-alt-migration.test.ts +127 -0
  3. package/convex/asset-replace.test.ts +168 -0
  4. package/convex/asset-revalidate.test.ts +6 -6
  5. package/convex/assets.ts +41 -5
  6. package/convex/auth.ts +5 -2
  7. package/convex/authority.ts +35 -11
  8. package/convex/cms.ts +25 -11
  9. package/convex/contract-parity.test.ts +25 -3
  10. package/convex/delivery.ts +12 -9
  11. package/convex/document-revalidate.test.ts +10 -12
  12. package/convex/guard.ts +9 -7
  13. package/convex/http-routes.test.ts +18 -8
  14. package/convex/http.ts +23 -17
  15. package/convex/ingest.test.ts +326 -0
  16. package/convex/ingest.ts +281 -0
  17. package/convex/invites.ts +13 -5
  18. package/convex/members.ts +10 -4
  19. package/convex/orphan-hydration.test.ts +116 -0
  20. package/convex/rail-write-parity.test.ts +11 -8
  21. package/convex/record-functions.ts +325 -0
  22. package/convex/records.test.ts +156 -0
  23. package/convex/redirect-migration.test.ts +205 -0
  24. package/convex/redirect-revalidate.test.ts +5 -1
  25. package/convex/redirects.ts +120 -79
  26. package/convex/role-policy.test.ts +315 -0
  27. package/convex/roles.ts +83 -0
  28. package/convex/schema.ts +36 -0
  29. package/convex/triggers.ts +21 -1
  30. package/dist/addon.d.ts +71 -0
  31. package/dist/addon.js +67 -0
  32. package/dist/addon.js.map +1 -0
  33. package/dist/components/account/account-settings.js +2 -2
  34. package/dist/components/account/account-settings.js.map +1 -1
  35. package/dist/components/account/credential-panel.js +2 -2
  36. package/dist/components/account/credential-panel.js.map +1 -1
  37. package/dist/components/account/self-account-schema.d.ts +6 -15
  38. package/dist/components/account/self-account-schema.js +52 -34
  39. package/dist/components/account/self-account-schema.js.map +1 -1
  40. package/dist/components/account/self-account-view-source.d.ts +1 -1
  41. package/dist/components/account/self-account-view-source.js +6 -4
  42. package/dist/components/account/self-account-view-source.js.map +1 -1
  43. package/dist/components/ai/ai-chat-panel-lazy.js +1 -1
  44. package/dist/components/ai/ai-chat-panel-lazy.js.map +1 -1
  45. package/dist/components/ai/ai-chat-panel.js +6 -6
  46. package/dist/components/ai/ai-chat-panel.js.map +1 -1
  47. package/dist/components/ai/ai-cms-panel.js +2 -2
  48. package/dist/components/ai/ai-cms-panel.js.map +1 -1
  49. package/dist/components/ai/ai-panel-toggle.js +4 -4
  50. package/dist/components/ai/ai-panel-toggle.js.map +1 -1
  51. package/dist/components/ai/chat-ui.js +2 -2
  52. package/dist/components/ai/chat-ui.js.map +1 -1
  53. package/dist/components/ai/proposal-card.d.ts +2 -2
  54. package/dist/components/ai/proposal-card.js +4 -3
  55. package/dist/components/ai/proposal-card.js.map +1 -1
  56. package/dist/components/ai/proposal-issues.js +2 -2
  57. package/dist/components/ai/proposal-issues.js.map +1 -1
  58. package/dist/components/ai/translate-document-action.js +2 -2
  59. package/dist/components/ai/translate-document-action.js.map +1 -1
  60. package/dist/components/ai/translate-document-dialog.js +10 -8
  61. package/dist/components/ai/translate-document-dialog.js.map +1 -1
  62. package/dist/components/ai/translate-skipped.d.ts +19 -0
  63. package/dist/components/ai/translate-skipped.js +46 -0
  64. package/dist/components/ai/translate-skipped.js.map +1 -0
  65. package/dist/components/app-views/default-modules.d.ts +50 -2
  66. package/dist/components/app-views/default-modules.js +65 -20
  67. package/dist/components/app-views/default-modules.js.map +1 -1
  68. package/dist/components/app-views/module.d.ts +53 -3
  69. package/dist/components/app-views/module.js +14 -7
  70. package/dist/components/app-views/module.js.map +1 -1
  71. package/dist/components/app-views/sidebar.js +1 -1
  72. package/dist/components/app-views/sidebar.js.map +1 -1
  73. package/dist/components/app-views/studio-config.d.ts +11 -2
  74. package/dist/components/app-views/studio-config.js.map +1 -1
  75. package/dist/components/assets/asset-detail.js +20 -10
  76. package/dist/components/assets/asset-detail.js.map +1 -1
  77. package/dist/components/assets/asset-grid.js +2 -2
  78. package/dist/components/assets/asset-grid.js.map +1 -1
  79. package/dist/components/assets/asset-metadata.d.ts +15 -4
  80. package/dist/components/assets/asset-metadata.js +15 -2
  81. package/dist/components/assets/asset-metadata.js.map +1 -1
  82. package/dist/components/assets/asset-search.js +4 -1
  83. package/dist/components/assets/asset-search.js.map +1 -1
  84. package/dist/components/assets/asset-selection.d.ts +0 -8
  85. package/dist/components/assets/asset-selection.js +4 -23
  86. package/dist/components/assets/asset-selection.js.map +1 -1
  87. package/dist/components/assets/asset-thumb.js +6 -5
  88. package/dist/components/assets/asset-thumb.js.map +1 -1
  89. package/dist/components/assets/assets-collection-view-source.d.ts +5 -5
  90. package/dist/components/assets/assets-collection-view-source.js +9 -5
  91. package/dist/components/assets/assets-collection-view-source.js.map +1 -1
  92. package/dist/components/assets/assets-module.js +1 -1
  93. package/dist/components/assets/assets-module.js.map +1 -1
  94. package/dist/components/assets/assets-store.d.ts +16 -2
  95. package/dist/components/assets/assets-store.js +28 -6
  96. package/dist/components/assets/assets-store.js.map +1 -1
  97. package/dist/components/assets/assets-view-preference.js +1 -1
  98. package/dist/components/assets/assets-view-preference.js.map +1 -1
  99. package/dist/components/assets/replace-file.d.ts +22 -0
  100. package/dist/components/assets/replace-file.js +59 -0
  101. package/dist/components/assets/replace-file.js.map +1 -0
  102. package/dist/components/auth-context.d.ts +1 -1
  103. package/dist/components/auth-context.js +6 -6
  104. package/dist/components/auth-context.js.map +1 -1
  105. package/dist/components/builder/blocks-model.d.ts +15 -27
  106. package/dist/components/builder/blocks-model.js +38 -44
  107. package/dist/components/builder/blocks-model.js.map +1 -1
  108. package/dist/components/builder/blocks-panel.d.ts +8 -4
  109. package/dist/components/builder/blocks-panel.js +10 -9
  110. package/dist/components/builder/blocks-panel.js.map +1 -1
  111. package/dist/components/builder/builder-store.d.ts +104 -15
  112. package/dist/components/builder/builder-store.js +157 -32
  113. package/dist/components/builder/builder-store.js.map +1 -1
  114. package/dist/components/builder/canvas-body.d.ts +30 -0
  115. package/dist/components/builder/canvas-body.js +38 -0
  116. package/dist/components/builder/canvas-body.js.map +1 -0
  117. package/dist/components/builder/canvas-breakpoints.js +1 -1
  118. package/dist/components/builder/canvas-breakpoints.js.map +1 -1
  119. package/dist/components/builder/canvas-chrome-css.js +7 -0
  120. package/dist/components/builder/canvas-chrome-css.js.map +1 -1
  121. package/dist/components/builder/canvas-dnd.d.ts +9 -9
  122. package/dist/components/builder/canvas-dnd.js +6 -6
  123. package/dist/components/builder/canvas-dnd.js.map +1 -1
  124. package/dist/components/builder/canvas-inline-editing.d.ts +1 -1
  125. package/dist/components/builder/canvas-inline-editing.js.map +1 -1
  126. package/dist/components/builder/canvas-overlay-geometry.d.ts +1 -1
  127. package/dist/components/builder/canvas-overlay-geometry.js.map +1 -1
  128. package/dist/components/builder/canvas-render-context.d.ts +28 -20
  129. package/dist/components/builder/canvas-render-context.js +46 -47
  130. package/dist/components/builder/canvas-render-context.js.map +1 -1
  131. package/dist/components/builder/canvas-runs.d.ts +45 -0
  132. package/dist/components/builder/canvas-runs.js +51 -0
  133. package/dist/components/builder/canvas-runs.js.map +1 -0
  134. package/dist/components/builder/canvas-theme-notice.js +2 -2
  135. package/dist/components/builder/canvas-theme-notice.js.map +1 -1
  136. package/dist/components/builder/canvas.js +35 -8
  137. package/dist/components/builder/canvas.js.map +1 -1
  138. package/dist/components/builder/clipboard-actions.d.ts +16 -1
  139. package/dist/components/builder/clipboard-actions.js +48 -11
  140. package/dist/components/builder/clipboard-actions.js.map +1 -1
  141. package/dist/components/builder/composition-field-editor-lazy.js +1 -1
  142. package/dist/components/builder/composition-field-editor-lazy.js.map +1 -1
  143. package/dist/components/builder/composition-field-editor.d.ts +4 -16
  144. package/dist/components/builder/composition-field-editor.js +32 -43
  145. package/dist/components/builder/composition-field-editor.js.map +1 -1
  146. package/dist/components/builder/delete-key.d.ts +5 -0
  147. package/dist/components/builder/delete-key.js +4 -0
  148. package/dist/components/builder/delete-key.js.map +1 -1
  149. package/dist/components/builder/drag-session.d.ts +1 -1
  150. package/dist/components/builder/drag-session.js.map +1 -1
  151. package/dist/components/builder/fixture-thumbnail.js +1 -1
  152. package/dist/components/builder/fixture-thumbnail.js.map +1 -1
  153. package/dist/components/builder/insert-context.d.ts +18 -26
  154. package/dist/components/builder/insert-context.js +47 -94
  155. package/dist/components/builder/insert-context.js.map +1 -1
  156. package/dist/components/builder/layout-inspector.js +1 -1
  157. package/dist/components/builder/layout-inspector.js.map +1 -1
  158. package/dist/components/builder/node-title.js +1 -1
  159. package/dist/components/builder/node-title.js.map +1 -1
  160. package/dist/components/builder/page-tree.d.ts +4 -4
  161. package/dist/components/builder/page-tree.js +8 -8
  162. package/dist/components/builder/page-tree.js.map +1 -1
  163. package/dist/components/builder/placement-refusal.d.ts +18 -0
  164. package/dist/components/builder/placement-refusal.js +46 -0
  165. package/dist/components/builder/placement-refusal.js.map +1 -0
  166. package/dist/components/builder/property-inspector.js +8 -4
  167. package/dist/components/builder/property-inspector.js.map +1 -1
  168. package/dist/components/builder/reuse-context.js +68 -30
  169. package/dist/components/builder/reuse-context.js.map +1 -1
  170. package/dist/components/builder/reuse.d.ts +79 -1
  171. package/dist/components/builder/reuse.js +70 -3
  172. package/dist/components/builder/reuse.js.map +1 -1
  173. package/dist/components/builder/rich-text-toolbar.js +1 -1
  174. package/dist/components/builder/rich-text-toolbar.js.map +1 -1
  175. package/dist/components/builder/run-inspector.d.ts +11 -0
  176. package/dist/components/builder/run-inspector.js +33 -0
  177. package/dist/components/builder/run-inspector.js.map +1 -0
  178. package/dist/components/builder/selection-overlay.js +3 -3
  179. package/dist/components/builder/selection-overlay.js.map +1 -1
  180. package/dist/components/builder/spacing-handles.d.ts +2 -2
  181. package/dist/components/builder/spacing-handles.js +3 -3
  182. package/dist/components/builder/spacing-handles.js.map +1 -1
  183. package/dist/components/cms/asset-field.d.ts +38 -1
  184. package/dist/components/cms/asset-field.js +184 -60
  185. package/dist/components/cms/asset-field.js.map +1 -1
  186. package/dist/components/cms/asset-picker-core.d.ts +16 -0
  187. package/dist/components/cms/asset-picker-core.js +20 -0
  188. package/dist/components/cms/asset-picker-core.js.map +1 -1
  189. package/dist/components/cms/asset-picker.js +14 -20
  190. package/dist/components/cms/asset-picker.js.map +1 -1
  191. package/dist/components/cms/bulk-actions.d.ts +4 -20
  192. package/dist/components/cms/bulk-actions.js +5 -26
  193. package/dist/components/cms/bulk-actions.js.map +1 -1
  194. package/dist/components/cms/bulk-bar.d.ts +2 -2
  195. package/dist/components/cms/bulk-bar.js +2 -2
  196. package/dist/components/cms/bulk-bar.js.map +1 -1
  197. package/dist/components/cms/cell-edit.d.ts +1 -1
  198. package/dist/components/cms/cell-edit.js +1 -1
  199. package/dist/components/cms/cell-edit.js.map +1 -1
  200. package/dist/components/cms/cell.d.ts +1 -1
  201. package/dist/components/cms/cell.js +3 -3
  202. package/dist/components/cms/cell.js.map +1 -1
  203. package/dist/components/cms/cms-index.js +2 -2
  204. package/dist/components/cms/cms-index.js.map +1 -1
  205. package/dist/components/cms/cms-labels.js +2 -2
  206. package/dist/components/cms/cms-labels.js.map +1 -1
  207. package/dist/components/cms/cms-store.d.ts +7 -6
  208. package/dist/components/cms/cms-store.js +23 -43
  209. package/dist/components/cms/cms-store.js.map +1 -1
  210. package/dist/components/cms/collection-table.js +7 -7
  211. package/dist/components/cms/collection-table.js.map +1 -1
  212. package/dist/components/cms/detail-editor.d.ts +5 -2
  213. package/dist/components/cms/detail-editor.js +20 -15
  214. package/dist/components/cms/detail-editor.js.map +1 -1
  215. package/dist/components/cms/details-pane.js +1 -1
  216. package/dist/components/cms/details-pane.js.map +1 -1
  217. package/dist/components/cms/doc-state.js +1 -1
  218. package/dist/components/cms/doc-state.js.map +1 -1
  219. package/dist/components/cms/document-diff-view.d.ts +3 -1
  220. package/dist/components/cms/document-diff-view.js +17 -12
  221. package/dist/components/cms/document-diff-view.js.map +1 -1
  222. package/dist/components/cms/document-editor-context.js +1 -1
  223. package/dist/components/cms/document-editor-context.js.map +1 -1
  224. package/dist/components/cms/document-staging.js +1 -1
  225. package/dist/components/cms/document-staging.js.map +1 -1
  226. package/dist/components/cms/document-url-path.js +2 -2
  227. package/dist/components/cms/document-url-path.js.map +1 -1
  228. package/dist/components/cms/duplicate-document.d.ts +1 -1
  229. package/dist/components/cms/duplicate-document.js.map +1 -1
  230. package/dist/components/cms/editable-cell.js +3 -3
  231. package/dist/components/cms/editable-cell.js.map +1 -1
  232. package/dist/components/cms/field-anchors.d.ts +7 -4
  233. package/dist/components/cms/field-anchors.js +9 -7
  234. package/dist/components/cms/field-anchors.js.map +1 -1
  235. package/dist/components/cms/field-collaboration.d.ts +1 -1
  236. package/dist/components/cms/field-collaboration.js +1 -1
  237. package/dist/components/cms/field-collaboration.js.map +1 -1
  238. package/dist/components/cms/field-connection.d.ts +1 -1
  239. package/dist/components/cms/field-connection.js +2 -2
  240. package/dist/components/cms/field-connection.js.map +1 -1
  241. package/dist/components/cms/field-control-lib.d.ts +15 -1
  242. package/dist/components/cms/field-control-lib.js +23 -4
  243. package/dist/components/cms/field-control-lib.js.map +1 -1
  244. package/dist/components/cms/field-control.js +4 -4
  245. package/dist/components/cms/field-control.js.map +1 -1
  246. package/dist/components/cms/field-renderer.d.ts +1 -1
  247. package/dist/components/cms/field-renderer.js +2 -2
  248. package/dist/components/cms/field-renderer.js.map +1 -1
  249. package/dist/components/cms/filter-builder.d.ts +1 -1
  250. package/dist/components/cms/filter-builder.js +3 -3
  251. package/dist/components/cms/filter-builder.js.map +1 -1
  252. package/dist/components/cms/gate-validation.d.ts +21 -30
  253. package/dist/components/cms/gate-validation.js +11 -32
  254. package/dist/components/cms/gate-validation.js.map +1 -1
  255. package/dist/components/cms/import-export.js +2 -2
  256. package/dist/components/cms/import-export.js.map +1 -1
  257. package/dist/components/cms/issue-copy.js +1 -1
  258. package/dist/components/cms/issue-copy.js.map +1 -1
  259. package/dist/components/cms/issues-pane.js +3 -3
  260. package/dist/components/cms/issues-pane.js.map +1 -1
  261. package/dist/components/cms/object-array-field.js +6 -6
  262. package/dist/components/cms/object-array-field.js.map +1 -1
  263. package/dist/components/cms/prop-fields.d.ts +7 -2
  264. package/dist/components/cms/prop-fields.js +14 -7
  265. package/dist/components/cms/prop-fields.js.map +1 -1
  266. package/dist/components/cms/reference-confirm.d.ts +1 -1
  267. package/dist/components/cms/reference-confirm.js +2 -2
  268. package/dist/components/cms/reference-confirm.js.map +1 -1
  269. package/dist/components/cms/relation-picker.js +2 -2
  270. package/dist/components/cms/relation-picker.js.map +1 -1
  271. package/dist/components/cms/rich-text/block-style.js +1 -1
  272. package/dist/components/cms/rich-text/block-style.js.map +1 -1
  273. package/dist/components/cms/rich-text/component-embed.js +4 -4
  274. package/dist/components/cms/rich-text/component-embed.js.map +1 -1
  275. package/dist/components/cms/rich-text/editor.js +3 -3
  276. package/dist/components/cms/rich-text/editor.js.map +1 -1
  277. package/dist/components/cms/rich-text/embed-picker.d.ts +1 -1
  278. package/dist/components/cms/rich-text/embed-picker.js +3 -3
  279. package/dist/components/cms/rich-text/embed-picker.js.map +1 -1
  280. package/dist/components/cms/rich-text/embed-props.js +3 -3
  281. package/dist/components/cms/rich-text/embed-props.js.map +1 -1
  282. package/dist/components/cms/rich-text/extensions.js +1 -1
  283. package/dist/components/cms/rich-text/extensions.js.map +1 -1
  284. package/dist/components/cms/rich-text/font-size-control.d.ts +1 -1
  285. package/dist/components/cms/rich-text/font-size-control.js +2 -2
  286. package/dist/components/cms/rich-text/font-size-control.js.map +1 -1
  287. package/dist/components/cms/rich-text/insert.d.ts +20 -9
  288. package/dist/components/cms/rich-text/insert.js +25 -17
  289. package/dist/components/cms/rich-text/insert.js.map +1 -1
  290. package/dist/components/cms/rich-text/lazy.js +1 -1
  291. package/dist/components/cms/rich-text/lazy.js.map +1 -1
  292. package/dist/components/cms/rich-text/link-control.js +2 -2
  293. package/dist/components/cms/rich-text/link-control.js.map +1 -1
  294. package/dist/components/cms/rich-text/slash-command.js +3 -3
  295. package/dist/components/cms/rich-text/slash-command.js.map +1 -1
  296. package/dist/components/cms/rich-text/toolbar.js +1 -1
  297. package/dist/components/cms/rich-text/toolbar.js.map +1 -1
  298. package/dist/components/cms/rich-text/unknown-node.js +2 -2
  299. package/dist/components/cms/rich-text/unknown-node.js.map +1 -1
  300. package/dist/components/cms/rich-text-preview.js +2 -2
  301. package/dist/components/cms/rich-text-preview.js.map +1 -1
  302. package/dist/components/cms/row-actions.d.ts +1 -1
  303. package/dist/components/cms/row-actions.js.map +1 -1
  304. package/dist/components/cms/scalar-value-editor.d.ts +1 -1
  305. package/dist/components/cms/scalar-value-editor.js +2 -2
  306. package/dist/components/cms/scalar-value-editor.js.map +1 -1
  307. package/dist/components/cms/use-discard-controller.d.ts +1 -1
  308. package/dist/components/cms/use-discard-controller.js +1 -1
  309. package/dist/components/cms/use-discard-controller.js.map +1 -1
  310. package/dist/components/cms/use-document-draft.d.ts +7 -1
  311. package/dist/components/cms/use-document-draft.js +16 -2
  312. package/dist/components/cms/use-document-draft.js.map +1 -1
  313. package/dist/components/cms/use-document-versions.js +1 -1
  314. package/dist/components/cms/use-document-versions.js.map +1 -1
  315. package/dist/components/cms/use-field-focus.d.ts +1 -1
  316. package/dist/components/cms/use-field-focus.js +2 -2
  317. package/dist/components/cms/use-field-focus.js.map +1 -1
  318. package/dist/components/cms/use-live-url.d.ts +1 -1
  319. package/dist/components/cms/use-live-url.js +3 -3
  320. package/dist/components/cms/use-live-url.js.map +1 -1
  321. package/dist/components/cms/use-publish-controller.d.ts +2 -3
  322. package/dist/components/cms/use-publish-controller.js +8 -20
  323. package/dist/components/cms/use-publish-controller.js.map +1 -1
  324. package/dist/components/cms/use-published-perspective.d.ts +1 -1
  325. package/dist/components/cms/use-published-perspective.js.map +1 -1
  326. package/dist/components/cms/use-restore-version.d.ts +1 -1
  327. package/dist/components/cms/use-restore-version.js +1 -1
  328. package/dist/components/cms/use-restore-version.js.map +1 -1
  329. package/dist/components/cms/version-compare-lazy.js +1 -1
  330. package/dist/components/cms/version-compare-lazy.js.map +1 -1
  331. package/dist/components/cms/version-compare.js +1 -1
  332. package/dist/components/cms/version-compare.js.map +1 -1
  333. package/dist/components/cms/versions-pane.js +11 -4
  334. package/dist/components/cms/versions-pane.js.map +1 -1
  335. package/dist/components/cms/view-bar.js +3 -3
  336. package/dist/components/cms/view-bar.js.map +1 -1
  337. package/dist/components/collection-view/cms-collection-view-source.d.ts +1 -1
  338. package/dist/components/collection-view/cms-collection-view-source.js +5 -3
  339. package/dist/components/collection-view/cms-collection-view-source.js.map +1 -1
  340. package/dist/components/collection-view/collection-view-context.d.ts +1 -1
  341. package/dist/components/collection-view/collection-view-context.js +1 -1
  342. package/dist/components/collection-view/collection-view-context.js.map +1 -1
  343. package/dist/components/collection-view/collection-view-surface.d.ts +13 -0
  344. package/dist/components/collection-view/collection-view-surface.js +18 -0
  345. package/dist/components/collection-view/collection-view-surface.js.map +1 -0
  346. package/dist/components/components/component-detail.js +10 -10
  347. package/dist/components/components/component-detail.js.map +1 -1
  348. package/dist/components/components/component-preview.d.ts +2 -2
  349. package/dist/components/components/component-preview.js +5 -5
  350. package/dist/components/components/component-preview.js.map +1 -1
  351. package/dist/components/components/component-status.d.ts +1 -1
  352. package/dist/components/components/component-status.js +1 -1
  353. package/dist/components/components/component-status.js.map +1 -1
  354. package/dist/components/components/components-index.js +2 -2
  355. package/dist/components/components/components-index.js.map +1 -1
  356. package/dist/components/components/field-inspector.js +1 -1
  357. package/dist/components/components/field-inspector.js.map +1 -1
  358. package/dist/components/components/registry-browser.js +3 -3
  359. package/dist/components/components/registry-browser.js.map +1 -1
  360. package/dist/components/components/taxonomy.d.ts +1 -1
  361. package/dist/components/components/taxonomy.js.map +1 -1
  362. package/dist/components/components/transfer-dialog.js +4 -3
  363. package/dist/components/components/transfer-dialog.js.map +1 -1
  364. package/dist/components/components/transfer.d.ts +10 -10
  365. package/dist/components/components/transfer.js +13 -12
  366. package/dist/components/components/transfer.js.map +1 -1
  367. package/dist/components/current-user-menu.js +1 -1
  368. package/dist/components/current-user-menu.js.map +1 -1
  369. package/dist/components/delivery-health-banner.js +2 -2
  370. package/dist/components/delivery-health-banner.js.map +1 -1
  371. package/dist/components/deployment-setup-gate.js +3 -3
  372. package/dist/components/deployment-setup-gate.js.map +1 -1
  373. package/dist/components/dev-login-badge.js +2 -2
  374. package/dist/components/dev-login-badge.js.map +1 -1
  375. package/dist/components/guards.js +1 -1
  376. package/dist/components/guards.js.map +1 -1
  377. package/dist/components/inspector/document-panes.d.ts +54 -0
  378. package/dist/components/inspector/document-panes.js +41 -0
  379. package/dist/components/inspector/document-panes.js.map +1 -0
  380. package/dist/components/inspector/inspector-sidebar.js +1 -1
  381. package/dist/components/inspector/inspector-sidebar.js.map +1 -1
  382. package/dist/components/nav-issues-registry.d.ts +53 -0
  383. package/dist/components/nav-issues-registry.js +69 -0
  384. package/dist/components/nav-issues-registry.js.map +1 -0
  385. package/dist/components/nav-issues.js +4 -4
  386. package/dist/components/nav-issues.js.map +1 -1
  387. package/dist/components/operation-error.d.ts +1 -1
  388. package/dist/components/operation-error.js +4 -4
  389. package/dist/components/operation-error.js.map +1 -1
  390. package/dist/components/playground-badge.js +2 -2
  391. package/dist/components/playground-badge.js.map +1 -1
  392. package/dist/components/project-list.js +3 -3
  393. package/dist/components/project-list.js.map +1 -1
  394. package/dist/components/project-session.d.ts +2 -2
  395. package/dist/components/project-session.js +5 -5
  396. package/dist/components/project-session.js.map +1 -1
  397. package/dist/components/project-switcher.js +2 -2
  398. package/dist/components/project-switcher.js.map +1 -1
  399. package/dist/components/rail-store-status.js +1 -1
  400. package/dist/components/rail-store-status.js.map +1 -1
  401. package/dist/components/rail-view-source.d.ts +6 -5
  402. package/dist/components/rail-view-source.js +4 -3
  403. package/dist/components/rail-view-source.js.map +1 -1
  404. package/dist/components/records/record-lens.d.ts +51 -0
  405. package/dist/components/records/record-lens.js +156 -0
  406. package/dist/components/records/record-lens.js.map +1 -0
  407. package/dist/components/records/record-rail.d.ts +86 -0
  408. package/dist/components/records/record-rail.js +241 -0
  409. package/dist/components/records/record-rail.js.map +1 -0
  410. package/dist/components/redirects/redirects-schema.js +1 -1
  411. package/dist/components/redirects/redirects-schema.js.map +1 -1
  412. package/dist/components/references/references-panel.js +2 -2
  413. package/dist/components/references/references-panel.js.map +1 -1
  414. package/dist/components/section-nav.js +27 -11
  415. package/dist/components/section-nav.js.map +1 -1
  416. package/dist/components/section-state.js +2 -2
  417. package/dist/components/section-state.js.map +1 -1
  418. package/dist/components/section-surface.js +2 -2
  419. package/dist/components/section-surface.js.map +1 -1
  420. package/dist/components/session-expired-overlay.js +3 -3
  421. package/dist/components/session-expired-overlay.js.map +1 -1
  422. package/dist/components/settings-form.js +1 -1
  423. package/dist/components/settings-form.js.map +1 -1
  424. package/dist/components/sign-in-needed-badge.js +1 -1
  425. package/dist/components/sign-in-needed-badge.js.map +1 -1
  426. package/dist/components/sign-in-view.d.ts +2 -2
  427. package/dist/components/sign-in-view.js +5 -5
  428. package/dist/components/sign-in-view.js.map +1 -1
  429. package/dist/components/studio-context.js +3 -3
  430. package/dist/components/studio-context.js.map +1 -1
  431. package/dist/components/studio-project-screen.js +30 -3
  432. package/dist/components/studio-project-screen.js.map +1 -1
  433. package/dist/components/studio-shell.js +6 -5
  434. package/dist/components/studio-shell.js.map +1 -1
  435. package/dist/components/theme-context.d.ts +1 -1
  436. package/dist/components/theme-context.js +2 -2
  437. package/dist/components/theme-context.js.map +1 -1
  438. package/dist/components/use-hydration-phase.d.ts +1 -1
  439. package/dist/components/use-hydration-phase.js +1 -1
  440. package/dist/components/use-hydration-phase.js.map +1 -1
  441. package/dist/components/users/invite-user-bar.d.ts +27 -0
  442. package/dist/components/users/invite-user-bar.js +25 -9
  443. package/dist/components/users/invite-user-bar.js.map +1 -1
  444. package/dist/components/users/role-policy-drift-issues.d.ts +38 -0
  445. package/dist/components/users/role-policy-drift-issues.js +71 -0
  446. package/dist/components/users/role-policy-drift-issues.js.map +1 -0
  447. package/dist/components/users/users-collection-view-source.d.ts +1 -1
  448. package/dist/components/users/users-collection-view-source.js +4 -2
  449. package/dist/components/users/users-collection-view-source.js.map +1 -1
  450. package/dist/components/users/users-module.js +1 -1
  451. package/dist/components/users/users-module.js.map +1 -1
  452. package/dist/components/users/users-schema.d.ts +10 -1
  453. package/dist/components/users/users-schema.js +45 -25
  454. package/dist/components/users/users-schema.js.map +1 -1
  455. package/dist/components/users/users-store.js +3 -3
  456. package/dist/components/users/users-store.js.map +1 -1
  457. package/dist/components/workspace-projects.d.ts +1 -1
  458. package/dist/components/workspace-projects.js +1 -1
  459. package/dist/components/workspace-projects.js.map +1 -1
  460. package/dist/lib/ai/apply-content.js +56 -116
  461. package/dist/lib/ai/apply-content.js.map +1 -1
  462. package/dist/lib/ai/chat-context.d.ts +8 -0
  463. package/dist/lib/ai/chat-context.js +37 -6
  464. package/dist/lib/ai/chat-context.js.map +1 -1
  465. package/dist/lib/ai/chat-state.d.ts +6 -0
  466. package/dist/lib/ai/chat-state.js.map +1 -1
  467. package/dist/lib/ai/constraints.d.ts +20 -5
  468. package/dist/lib/ai/constraints.js +125 -33
  469. package/dist/lib/ai/constraints.js.map +1 -1
  470. package/dist/lib/ai/fake-provider.d.ts +16 -3
  471. package/dist/lib/ai/fake-provider.js +22 -6
  472. package/dist/lib/ai/fake-provider.js.map +1 -1
  473. package/dist/lib/ai/index.d.ts +3 -1
  474. package/dist/lib/ai/index.js +3 -1
  475. package/dist/lib/ai/index.js.map +1 -1
  476. package/dist/lib/ai/leash.d.ts +34 -0
  477. package/dist/lib/ai/leash.js +28 -0
  478. package/dist/lib/ai/leash.js.map +1 -0
  479. package/dist/lib/ai/node-handler.d.ts +1 -1
  480. package/dist/lib/ai/node-handler.js.map +1 -1
  481. package/dist/lib/ai/rich-text-input.d.ts +8 -8
  482. package/dist/lib/ai/rich-text-input.js +2 -1
  483. package/dist/lib/ai/rich-text-input.js.map +1 -1
  484. package/dist/lib/ai/rich-text-translate.d.ts +27 -4
  485. package/dist/lib/ai/rich-text-translate.js +28 -10
  486. package/dist/lib/ai/rich-text-translate.js.map +1 -1
  487. package/dist/lib/ai/shape.d.ts +13 -13
  488. package/dist/lib/ai/shape.js +69 -93
  489. package/dist/lib/ai/shape.js.map +1 -1
  490. package/dist/lib/ai/tools.d.ts +36 -41
  491. package/dist/lib/ai/tools.js +83 -87
  492. package/dist/lib/ai/tools.js.map +1 -1
  493. package/dist/lib/ai/translate-document.d.ts +32 -4
  494. package/dist/lib/ai/translate-document.js +145 -47
  495. package/dist/lib/ai/translate-document.js.map +1 -1
  496. package/dist/lib/ai/types.d.ts +34 -23
  497. package/dist/lib/ai/types.js.map +1 -1
  498. package/dist/lib/ai/update-fields.d.ts +15 -12
  499. package/dist/lib/ai/update-fields.js +112 -188
  500. package/dist/lib/ai/update-fields.js.map +1 -1
  501. package/dist/lib/ai/writer-form.d.ts +116 -0
  502. package/dist/lib/ai/writer-form.js +429 -0
  503. package/dist/lib/ai/writer-form.js.map +1 -0
  504. package/dist/lib/assets/upload.d.ts +31 -2
  505. package/dist/lib/assets/upload.js +61 -6
  506. package/dist/lib/assets/upload.js.map +1 -1
  507. package/dist/lib/clipboard/os-clipboard.d.ts +10 -2
  508. package/dist/lib/clipboard/os-clipboard.js +8 -4
  509. package/dist/lib/clipboard/os-clipboard.js.map +1 -1
  510. package/dist/lib/clipboard/paste-issues.js +1 -1
  511. package/dist/lib/clipboard/paste-issues.js.map +1 -1
  512. package/dist/lib/clipboard/paste-target.d.ts +18 -9
  513. package/dist/lib/clipboard/paste-target.js +10 -9
  514. package/dist/lib/clipboard/paste-target.js.map +1 -1
  515. package/dist/lib/cms/field-patch.d.ts +0 -10
  516. package/dist/lib/cms/field-patch.js +4 -30
  517. package/dist/lib/cms/field-patch.js.map +1 -1
  518. package/dist/lib/cms/published-documents.js +1 -1
  519. package/dist/lib/cms/published-documents.js.map +1 -1
  520. package/dist/lib/cms-views/view-model.d.ts +9 -9
  521. package/dist/lib/cms-views/view-model.js +2 -2
  522. package/dist/lib/cms-views/view-model.js.map +1 -1
  523. package/dist/lib/collection-view/collection-view-source.d.ts +14 -5
  524. package/dist/lib/collection-view/collection-view-source.js.map +1 -1
  525. package/dist/lib/data/collection-content.js +3 -2
  526. package/dist/lib/data/collection-content.js.map +1 -1
  527. package/dist/lib/data/content-session-refresh.d.ts +1 -1
  528. package/dist/lib/data/content-session-refresh.js.map +1 -1
  529. package/dist/lib/data/playground-unload-guard.d.ts +1 -1
  530. package/dist/lib/data/playground-unload-guard.js +1 -1
  531. package/dist/lib/data/playground-unload-guard.js.map +1 -1
  532. package/dist/lib/dnd/drop-rules.d.ts +25 -31
  533. package/dist/lib/dnd/drop-rules.js +53 -59
  534. package/dist/lib/dnd/drop-rules.js.map +1 -1
  535. package/dist/lib/engine-version.d.ts +1 -1
  536. package/dist/lib/engine-version.js +1 -1
  537. package/dist/lib/engine-version.js.map +1 -1
  538. package/dist/lib/i18n/i18n.js +1 -1
  539. package/dist/lib/i18n/i18n.js.map +1 -1
  540. package/dist/lib/i18n/messages.de.js +44 -3
  541. package/dist/lib/i18n/messages.de.js.map +1 -1
  542. package/dist/lib/i18n/messages.en.d.ts +38 -2
  543. package/dist/lib/i18n/messages.en.js +51 -3
  544. package/dist/lib/i18n/messages.en.js.map +1 -1
  545. package/dist/lib/operations/project-runtime-config.d.ts +34 -6
  546. package/dist/lib/operations/project-runtime-config.js +50 -10
  547. package/dist/lib/operations/project-runtime-config.js.map +1 -1
  548. package/dist/lib/operations/publish-with-revision.d.ts +33 -1
  549. package/dist/lib/operations/publish-with-revision.js +32 -0
  550. package/dist/lib/operations/publish-with-revision.js.map +1 -1
  551. package/dist/lib/operations/runtime-validator.d.ts +19 -68
  552. package/dist/lib/operations/runtime-validator.js +12 -138
  553. package/dist/lib/operations/runtime-validator.js.map +1 -1
  554. package/dist/lib/operations/studio-operations.d.ts +17 -2
  555. package/dist/lib/operations/studio-operations.js +18 -11
  556. package/dist/lib/operations/studio-operations.js.map +1 -1
  557. package/dist/lib/persistence/convex-adapter.d.ts +16 -3
  558. package/dist/lib/persistence/convex-adapter.js +83 -47
  559. package/dist/lib/persistence/convex-adapter.js.map +1 -1
  560. package/dist/lib/persistence/index.js +14 -1
  561. package/dist/lib/persistence/index.js.map +1 -1
  562. package/dist/lib/persona/labels.js +4 -2
  563. package/dist/lib/persona/labels.js.map +1 -1
  564. package/dist/lib/query/operations-query.d.ts +1 -1
  565. package/dist/lib/query/operations-query.js +1 -1
  566. package/dist/lib/query/operations-query.js.map +1 -1
  567. package/dist/lib/references/reference-model.js +1 -1
  568. package/dist/lib/references/reference-model.js.map +1 -1
  569. package/dist/lib/references/references-store.js +1 -1
  570. package/dist/lib/references/references-store.js.map +1 -1
  571. package/dist/lib/workspace/index.d.ts +14 -11
  572. package/dist/lib/workspace/index.js +20 -24
  573. package/dist/lib/workspace/index.js.map +1 -1
  574. package/dist/mount.d.ts +28 -0
  575. package/dist/mount.js +27 -0
  576. package/dist/mount.js.map +1 -0
  577. package/dist/router/root.js +10 -10
  578. package/dist/router/root.js.map +1 -1
  579. package/dist/ui/badge.d.ts +1 -1
  580. package/dist/ui/button.d.ts +2 -2
  581. package/package.json +15 -11
  582. package/dist/components/cms/cms-composition-validators.d.ts +0 -16
  583. package/dist/components/cms/cms-composition-validators.js +0 -133
  584. package/dist/components/cms/cms-composition-validators.js.map +0 -1
  585. package/dist/components/cms/publish-clean.d.ts +0 -28
  586. package/dist/components/cms/publish-clean.js +0 -38
  587. package/dist/components/cms/publish-clean.js.map +0 -1
  588. package/dist/components/redirects/redirects-collection-view-source.d.ts +0 -53
  589. package/dist/components/redirects/redirects-collection-view-source.js +0 -146
  590. package/dist/components/redirects/redirects-collection-view-source.js.map +0 -1
  591. package/dist/components/redirects/redirects-module.d.ts +0 -21
  592. package/dist/components/redirects/redirects-module.js +0 -40
  593. package/dist/components/redirects/redirects-module.js.map +0 -1
  594. package/dist/components/redirects/redirects-store.d.ts +0 -68
  595. package/dist/components/redirects/redirects-store.js +0 -132
  596. package/dist/components/redirects/redirects-store.js.map +0 -1
  597. package/dist/lib/assets/asset-placements.d.ts +0 -28
  598. package/dist/lib/assets/asset-placements.js +0 -83
  599. package/dist/lib/assets/asset-placements.js.map +0 -1
@@ -131,6 +131,7 @@ declare const MESSAGES: {
131
131
  'shell.playground.badge': import("./types.js").SourceMessage;
132
132
  'shell.playground.hint': import("./types.js").SourceMessage;
133
133
  'shell.deliveryHealth.dismiss': import("./types.js").SourceMessage;
134
+ 'shell.rolePolicyDrift.title': import("./types.js").SourceMessage;
134
135
  'customization.issue.noCollections': import("./types.js").SourceMessage;
135
136
  'customization.issue.duplicateOverrideId': import("./types.js").SourceMessage;
136
137
  'customization.issue.unknownOverrideTarget': import("./types.js").SourceMessage;
@@ -204,6 +205,8 @@ declare const MESSAGES: {
204
205
  'operations.error.strictReferencesBlockUnpublishOne': import("./types.js").SourceMessage;
205
206
  'operations.error.strictTargetsUnpublishedOne': import("./types.js").SourceMessage;
206
207
  'operations.error.strictTargetsUnpublished': import("./types.js").SourceMessage;
208
+ 'operations.error.publishNeedsLocales': import("./types.js").SourceMessage;
209
+ 'operations.error.versionNotPinnable': import("./types.js").SourceMessage;
207
210
  'operations.errorDetail.andMore': import("./types.js").SourceMessage;
208
211
  'content.queryError.nonFilterableField': import("./types.js").SourceMessage;
209
212
  'content.queryError.unknownField': import("./types.js").SourceMessage;
@@ -414,6 +417,7 @@ declare const MESSAGES: {
414
417
  'cms.issue.hidden-predicate-error': import("./types.js").SourceMessage;
415
418
  'cms.issue.unaddressable-url': import("./types.js").SourceMessage;
416
419
  'cms.issue.unknown-version': import("./types.js").SourceMessage;
420
+ 'cms.issue.invalid-stored-document': import("./types.js").SourceMessage;
417
421
  'cms.issueBody.missing-required-field': import("./types.js").SourceMessage;
418
422
  'cms.issueBody.missing-localized-value.default': import("./types.js").SourceMessage;
419
423
  'cms.issueBody.missing-localized-value.fallback': import("./types.js").SourceMessage;
@@ -495,6 +499,7 @@ declare const MESSAGES: {
495
499
  'cms.issueMessage.routeBoundDocumentNotFound': import("./types.js").SourceMessage;
496
500
  'cms.issueMessage.routeParamNotCaptured': import("./types.js").SourceMessage;
497
501
  'cms.issueMessage.collectionNotDefined': import("./types.js").SourceMessage;
502
+ 'cms.issueMessage.storedDocumentUnreadable': import("./types.js").SourceMessage;
498
503
  'cms.issueMessage.unaddressableLocaleCollision': import("./types.js").SourceMessage;
499
504
  'cms.issueDetail.expectsString': import("./types.js").SourceMessage;
500
505
  'cms.issueDetail.expectsRichText': import("./types.js").SourceMessage;
@@ -563,6 +568,8 @@ declare const MESSAGES: {
563
568
  'cms.version.textUnchanged': import("./types.js").SourceMessage;
564
569
  'cms.version.restoreBlock': import("./types.js").SourceMessage;
565
570
  'cms.version.nestedContentChanged': import("./types.js").SourceMessage;
571
+ 'cms.version.nestedInProse': import("./types.js").SourceMessage;
572
+ 'cms.version.nestedIn': import("./types.js").SourceMessage;
566
573
  'cms.version.blockAdded': import("./types.js").SourceMessage;
567
574
  'cms.version.blockRemoved': import("./types.js").SourceMessage;
568
575
  'cms.version.emptyValue': import("./types.js").SourceMessage;
@@ -649,6 +656,16 @@ declare const MESSAGES: {
649
656
  'cms.asset.notSet': import("./types.js").SourceMessage;
650
657
  'cms.asset.imageOptions.title': import("./types.js").SourceMessage;
651
658
  'cms.asset.imageOptions.description': import("./types.js").SourceMessage;
659
+ 'cms.asset.imageOptions.placementTitle': import("./types.js").SourceMessage;
660
+ 'cms.asset.imageOptions.placementHint': import("./types.js").SourceMessage;
661
+ 'cms.asset.imageOptions.assetTitle': import("./types.js").SourceMessage;
662
+ 'cms.asset.imageOptions.assetHint': import("./types.js").SourceMessage;
663
+ 'cms.asset.imageOptions.whereUsed': import("./types.js").SourceMessage;
664
+ 'cms.asset.replaceFile': import("./types.js").SourceMessage;
665
+ 'cms.asset.replacing': import("./types.js").SourceMessage;
666
+ 'cms.asset.replaceWrongKind': import("./types.js").SourceMessage;
667
+ 'cms.asset.replaceSaveFirst': import("./types.js").SourceMessage;
668
+ 'cms.asset.replacedCheckFocal': import("./types.js").SourceMessage;
652
669
  'cms.asset.focalPoint': import("./types.js").SourceMessage;
653
670
  'cms.asset.resetToCentre': import("./types.js").SourceMessage;
654
671
  'cms.asset.focalPointHint': import("./types.js").SourceMessage;
@@ -750,6 +767,9 @@ declare const MESSAGES: {
750
767
  'account.password.error.playgroundUnsupported': import("./types.js").SourceMessage;
751
768
  'account.profile.error.unavailable': import("./types.js").SourceMessage;
752
769
  'account.profile.error.playgroundUnsupported': import("./types.js").SourceMessage;
770
+ 'records.loadFailed': import("./types.js").SourceMessage;
771
+ 'records.loading': import("./types.js").SourceMessage;
772
+ 'records.untitled': import("./types.js").SourceMessage;
753
773
  'redirects.loadFailed': import("./types.js").SourceMessage;
754
774
  'redirects.loading': import("./types.js").SourceMessage;
755
775
  'redirects.rail.label': import("./types.js").SourceMessage;
@@ -876,6 +896,10 @@ declare const MESSAGES: {
876
896
  'builder.clipboard.notAllowed': import("./types.js").SourceMessage;
877
897
  'builder.clipboard.notAllowedByField': import("./types.js").SourceMessage;
878
898
  'builder.clipboard.issueComponent': import("./types.js").SourceMessage;
899
+ 'builder.placement.notAllowedByField': import("./types.js").SourceMessage;
900
+ 'builder.placement.notAllowedInSlot': import("./types.js").SourceMessage;
901
+ 'builder.placement.serverOnly': import("./types.js").SourceMessage;
902
+ 'builder.placement.dismiss': import("./types.js").SourceMessage;
879
903
  'builder.clipboard.error.corruptJson': import("./types.js").SourceMessage;
880
904
  'builder.clipboard.error.notEnvelope': import("./types.js").SourceMessage;
881
905
  'builder.clipboard.error.foreignFormat': import("./types.js").SourceMessage;
@@ -912,7 +936,6 @@ declare const MESSAGES: {
912
936
  'builder.inspector.slots': import("./types.js").SourceMessage;
913
937
  'builder.inspector.slotsHint': import("./types.js").SourceMessage;
914
938
  'builder.inspector.propertiesPane': import("./types.js").SourceMessage;
915
- 'builder.inspector.invalidValue': import("./types.js").SourceMessage;
916
939
  'builder.inspector.invalidJson': import("./types.js").SourceMessage;
917
940
  'builder.layout.title': import("./types.js").SourceMessage;
918
941
  'builder.layout.direction': import("./types.js").SourceMessage;
@@ -956,7 +979,10 @@ declare const MESSAGES: {
956
979
  'builder.canvasTheme.stylesheetErrorNotice': import("./types.js").SourceMessage;
957
980
  'builder.canvasTheme.noThemeTokensNotice': import("./types.js").SourceMessage;
958
981
  'builder.canvasTheme.noStylesheetNotice': import("./types.js").SourceMessage;
959
- 'builder.composition.preservedNotice': import("./types.js").SourceMessage;
982
+ 'builder.run.title': import("./types.js").SourceMessage;
983
+ 'builder.run.items': import("./types.js").SourceMessage;
984
+ 'builder.run.hint': import("./types.js").SourceMessage;
985
+ 'builder.run.delete': import("./types.js").SourceMessage;
960
986
  'builder.spacing.gapAfterChild': import("./types.js").SourceMessage;
961
987
  'builder.richText.toolbarLabel': import("./types.js").SourceMessage;
962
988
  'builder.richText.linkPlaceholder': import("./types.js").SourceMessage;
@@ -1079,6 +1105,10 @@ declare const MESSAGES: {
1079
1105
  'ai.translate.proposalTitle': import("./types.js").SourceMessage;
1080
1106
  'ai.translate.diffBefore': import("./types.js").SourceMessage;
1081
1107
  'ai.translate.diffAfter': import("./types.js").SourceMessage;
1108
+ 'ai.translate.skippedTitle': import("./types.js").SourceMessage;
1109
+ 'ai.translate.skipped.unreadable': import("./types.js").SourceMessage;
1110
+ 'ai.translate.skipped.notReturned': import("./types.js").SourceMessage;
1111
+ 'ai.translate.skipped.structureChanged': import("./types.js").SourceMessage;
1082
1112
  'ai.update.proposalTitle': import("./types.js").SourceMessage;
1083
1113
  'ai.update.diffBefore': import("./types.js").SourceMessage;
1084
1114
  'ai.update.diffAfter': import("./types.js").SourceMessage;
@@ -1089,7 +1119,13 @@ declare const MESSAGES: {
1089
1119
  'builder.inspector.unsetWithHint': import("./types.js").SourceMessage;
1090
1120
  'cms.issueMessage.nonCanonicalValue': import("./types.js").SourceMessage;
1091
1121
  'cms.issueMessage.assetHoldsUrl': import("./types.js").SourceMessage;
1122
+ 'cms.issueMessage.emptyAllow': import("./types.js").SourceMessage;
1123
+ 'cms.issueMessage.unknownAllowComponent': import("./types.js").SourceMessage;
1092
1124
  'cms.issueMessage.blocksNotTopLevel': import("./types.js").SourceMessage;
1125
+ 'cms.issueMessage.placementKeyReserved': import("./types.js").SourceMessage;
1126
+ 'cms.issueMessage.placementNotScalar': import("./types.js").SourceMessage;
1127
+ 'cms.issueMessage.sourceNotOnAssetCollection': import("./types.js").SourceMessage;
1128
+ 'cms.issueMessage.sourceTypeMismatch': import("./types.js").SourceMessage;
1093
1129
  'cms.issueMessage.uniqueNotTopLevel': import("./types.js").SourceMessage;
1094
1130
  'cms.issueMessage.localizedOnProp': import("./types.js").SourceMessage;
1095
1131
  'cms.issueMessage.localizedOnSubField': import("./types.js").SourceMessage;
@@ -147,6 +147,10 @@ const MESSAGES = {
147
147
  'shell.playground.badge': msg('Playground', 'Product term — may stay untranslated.'),
148
148
  'shell.playground.hint': msg('Playground mode: data lives in memory on this device and resets on reload. Nothing is saved to a backend.'),
149
149
  'shell.deliveryHealth.dismiss': msg('Dismiss'),
150
+ // EC-605 — the role-policy drift finding in the rail's issues foot (the deployment
151
+ // enforces another role policy than elytra.config.ts declares). The doctor's verdict
152
+ // text (English, technical) follows it.
153
+ 'shell.rolePolicyDrift.title': msg('This deployment enforces a different role policy than the project declares — permissions may not be what you expect.'),
150
154
  // ─────────────────────────────────────────────────────────────────────────
151
155
  // Customization issues — the section-rail foot (`NavIssues`)
152
156
  // ─────────────────────────────────────────────────────────────────────────
@@ -267,6 +271,8 @@ const MESSAGES = {
267
271
  // EC-589 — the referrer direction of `strict: true`: publish refused while a strict target is missing or unpublished.
268
272
  'operations.error.strictTargetsUnpublishedOne': msg('Document “{target}” cannot be published: a strict relation target is missing or unpublished — publish it first.'),
269
273
  'operations.error.strictTargetsUnpublished': msg('Document “{target}” cannot be published: strict relation targets are missing or unpublished — publish them first.'),
274
+ 'operations.error.publishNeedsLocales': msg('“{target}” cannot be published: its collection declares localized fields ({fields}), and no locale config was given to judge their hidden values in.', 'EC-585: a headless runtime publishing a localized collection without the project locale config; {fields} is a comma-separated list of field names.'),
275
+ 'operations.error.versionNotPinnable': msg('Version {version} of “{target}” was not recorded by a publish, so it cannot be pinned live — restore it into the draft and publish that instead.', 'EC-585: only a version a publish recorded can be re-pinned; {version} is a number.'),
270
276
  'operations.errorDetail.andMore': msg(', and {count} more', 'Truncation fragment spliced into the strict-reference sentences; keeps its leading comma and space.'),
271
277
  // EC-494 — content-query errors (`core/content`'s validateWhere/validateSort/
272
278
  // validateLimit). Two studio surfaces render them: the filter builder's per-clause
@@ -521,6 +527,7 @@ const MESSAGES = {
521
527
  'cms.issue.hidden-predicate-error': msg('Broken visibility rule'),
522
528
  'cms.issue.unaddressable-url': msg('Unreachable URL'),
523
529
  'cms.issue.unknown-version': msg('Unknown version'),
530
+ 'cms.issue.invalid-stored-document': msg('Unreadable stored document', 'EC-585: a stored row the delivery snapshot shipped is not a valid document, so it is not delivered.'),
524
531
  // EC-443 — issue-card BODY templates, only for codes whose full body derives
525
532
  // from `code` + `path`/`meta` (`issue-copy.ts`); every other code shows the
526
533
  // raw English core message (honest fallback).
@@ -627,6 +634,7 @@ const MESSAGES = {
627
634
  'cms.issueMessage.routeBoundDocumentNotFound': msg('Route-bound document "{collection}:{id}" was not found.'),
628
635
  'cms.issueMessage.routeParamNotCaptured': msg('Route "{route}" binds its document to URL parameter ":{param}", which pattern "{pattern}" does not capture.'),
629
636
  'cms.issueMessage.collectionNotDefined': msg('Collection "{collection}" is not defined.'),
637
+ 'cms.issueMessage.storedDocumentUnreadable': msg('Stored document {document} could not be read and is not delivered ({reason}).', 'EC-585 (Codex F12): {document} is collection:id (or #index), {reason} the schema findings in English.'),
630
638
  'cms.issueMessage.unaddressableLocaleCollision': msg('No URL reaches "{id}" in locale "{locale}": its address would be "{url}", but the first segment "{segment}" is a declared locale code, so the site reads that URL as locale "{segment}", path "{readPath}". Rename that segment — on this document or on the ancestor that owns it — so it does not collide with a locale code.'),
631
639
  'cms.issueDetail.expectsString': msg('expects a string'),
632
640
  'cms.issueDetail.expectsRichText': msg('expects rich-text content (a string or a rich-text value)'),
@@ -708,6 +716,9 @@ const MESSAGES = {
708
716
  'cms.version.textUnchanged': msg('Text unchanged — formatting or whitespace differs.'),
709
717
  'cms.version.restoreBlock': msg('Restore this block from v{version}'),
710
718
  'cms.version.nestedContentChanged': msg('Nested content changed.'),
719
+ // EC-593 — where a nested component's diff row sits.
720
+ 'cms.version.nestedInProse': msg('in the text'),
721
+ 'cms.version.nestedIn': msg('inside {path}', '{path} lists component names, e.g. "Section › Grid".'),
711
722
  'cms.version.blockAdded': msg('Block added.'),
712
723
  'cms.version.blockRemoved': msg('Block removed.'),
713
724
  'cms.version.emptyValue': msg('empty'),
@@ -808,7 +819,17 @@ const MESSAGES = {
808
819
  'cms.asset.altLabel': msg('Alt:', 'Inline label prefixing an image’s alt text.'),
809
820
  'cms.asset.notSet': msg('not set'),
810
821
  'cms.asset.imageOptions.title': msg('Image options'),
811
- 'cms.asset.imageOptions.description': msg('Focal point and metadata — shared across every use of this image.'),
822
+ 'cms.asset.imageOptions.description': msg('What belongs to this use of the image, apart from what is true of the image everywhere.'),
823
+ 'cms.asset.imageOptions.placementTitle': msg('In this place', 'Image options dialog: the section of per-use (placement) fields, e.g. a caption.'),
824
+ 'cms.asset.imageOptions.placementHint': msg('Only this use of the image — another page can show it differently.'),
825
+ 'cms.asset.imageOptions.assetTitle': msg('About this image', 'Image options dialog: the section of the asset’s own facts (alt text, credit, focal point).'),
826
+ 'cms.asset.imageOptions.assetHint': msg('Applies everywhere this image is used — a change here changes every use.'),
827
+ 'cms.asset.imageOptions.whereUsed': msg('Where it is used'),
828
+ 'cms.asset.replaceFile': msg('Replace file', 'Asset action: upload new bytes into the SAME asset — every use shows the new file.'),
829
+ 'cms.asset.replacing': msg('Replacing…'),
830
+ 'cms.asset.replaceWrongKind': msg('“{name}” not used — a replacement must be {types}, like the current file.'),
831
+ 'cms.asset.replaceSaveFirst': msg('Save or discard the metadata changes first.'),
832
+ 'cms.asset.replacedCheckFocal': msg('The file was replaced — check that the focal point still frames the subject.'),
812
833
  'cms.asset.focalPoint': msg('Focal point'),
813
834
  'cms.asset.resetToCentre': msg('Reset to centre'),
814
835
  'cms.asset.focalPointHint': msg('Click or drag on the image to set the focal point used when it’s cropped.'),
@@ -941,6 +962,10 @@ const MESSAGES = {
941
962
  // ─────────────────────────────────────────────────────────────────────────
942
963
  // Redirects (section)
943
964
  // ─────────────────────────────────────────────────────────────────────────
965
+ // EC-616 — a generic record rail (`nav.rail(kind)`); `{label}` is the rail's label.
966
+ 'records.loadFailed': msg('{label} failed to load', 'A record rail failed to load; {label} is the rail name, e.g. "Submissions".'),
967
+ 'records.loading': msg('Loading {label}…', '{label} is the rail name, e.g. "Submissions".'),
968
+ 'records.untitled': msg('(new {label})', 'Title of an unsaved new record; {label} is the singular record noun, e.g. "redirect".'),
944
969
  'redirects.loadFailed': msg('Redirects failed to load'),
945
970
  'redirects.loading': msg('Loading redirects…'),
946
971
  // Built-in redirects rail — schema labels via the catalog (msgLabel), see above.
@@ -1086,6 +1111,12 @@ const MESSAGES = {
1086
1111
  // EC-554 — the composition FIELD's top-level `allow` refuses the pasted root.
1087
1112
  'builder.clipboard.notAllowedByField': msg('{component} cannot be pasted at the top level of "{field}" — the field does not allow it.', '{component} is the pasted root’s short component name (e.g. “Container”); {field} is the composition field’s label (e.g. “Canvas”).'),
1088
1113
  'builder.clipboard.issueComponent': msg('component'),
1114
+ // EC-584 — a refused placement: the builder reducer ran the one placement judge and
1115
+ // left the composition unchanged. Shown above the canvas (and for a refused paste).
1116
+ 'builder.placement.notAllowedByField': msg('{component} is not allowed at the top level of "{field}" — the field does not allow it. Nothing changed.', '{component} is the component’s short name (e.g. “Hero”); {field} is the composition field’s label (e.g. “Canvas”).'),
1117
+ 'builder.placement.notAllowedInSlot': msg('{component} is not allowed in {destination} — the slot does not allow it. Nothing changed.', '{component} is the component’s short name; {destination} is “Parent · slot” (e.g. “Section · body”).'),
1118
+ 'builder.placement.serverOnly': msg('{component} renders on the server only and cannot be placed on the canvas. Nothing changed.', 'EC-191: a component declared clientRenderable: false — usable in page/layout code, not in an editor composition.'),
1119
+ 'builder.placement.dismiss': msg('Dismiss'),
1089
1120
  // EC-494 — the engine-built clipboard failures (`core/clipboard`), which carry a
1090
1121
  // catalog ref because that subpath may not import this catalog, plus the studio-side
1091
1122
  // paste diff and its summary (translated in place — it already holds the locale).
@@ -1125,7 +1156,6 @@ const MESSAGES = {
1125
1156
  'builder.inspector.slots': msg('Slots'),
1126
1157
  'builder.inspector.slotsHint': msg('Add or reorder slot children from the page tree.'),
1127
1158
  'builder.inspector.propertiesPane': msg('Properties'),
1128
- 'builder.inspector.invalidValue': msg('Value doesn’t match the prop schema — the component renders its own default until it is fixed.'),
1129
1159
  'builder.inspector.invalidJson': msg('Invalid JSON'),
1130
1160
  'builder.layout.title': msg('Layout'),
1131
1161
  'builder.layout.direction': msg('Direction'),
@@ -1176,7 +1206,13 @@ const MESSAGES = {
1176
1206
  // Mixed-sequence honesty notice (EC-549 interim): a blocks value carrying
1177
1207
  // typography items the canvas cannot render yet must SAY so — count + pointer,
1178
1208
  // never silence (EC-500 D3's canvas contract, scope item 3).
1179
- 'builder.composition.preservedNotice': msg('This composition carries {count} text item(s) the canvas can’t display yet. They keep their position between the blocks, are untouched by canvas edits, and publish normally.', '{count} is the number of preserved non-component sequence items (prose paragraphs, quotes, …).'),
1209
+ // EC-549 — a typography run of a canvas value (loose prose between blocks): selected,
1210
+ // edited in the inspector's rich-text editor, deleted like a block. It replaced the
1211
+ // count-only `builder.composition.preservedNotice`.
1212
+ 'builder.run.title': msg('Text', 'Inspector title for a selected run of loose prose (paragraphs, quotes, lists) between blocks.'),
1213
+ 'builder.run.items': msg('{count} item(s)', '{count} is the number of typography items (paragraphs, headings, quotes…) in the run.'),
1214
+ 'builder.run.hint': msg('Written text between the blocks — edit it here; it keeps its place between the blocks and publishes as it reads.'),
1215
+ 'builder.run.delete': msg('Delete text'),
1180
1216
  'builder.spacing.gapAfterChild': msg('Gap after child {index}'),
1181
1217
  'builder.richText.toolbarLabel': msg('Text formatting'),
1182
1218
  'builder.richText.linkPlaceholder': msg('https://… (empty removes)'),
@@ -1313,6 +1349,11 @@ const MESSAGES = {
1313
1349
  'ai.translate.proposalTitle': msg('Translation of {collection}'),
1314
1350
  'ai.translate.diffBefore': msg('Current'),
1315
1351
  'ai.translate.diffAfter': msg('Translated'),
1352
+ // EC-593 — what a translation run could not translate is reported, never skipped silently.
1353
+ 'ai.translate.skippedTitle': msg('Not translated ({count})', '{count} is a number.'),
1354
+ 'ai.translate.skipped.unreadable': msg('its stored value could not be read'),
1355
+ 'ai.translate.skipped.notReturned': msg('the assistant returned no text for it'),
1356
+ 'ai.translate.skipped.structureChanged': msg('the translation lost formatting, links or embedded items — the original was kept'),
1316
1357
  // EC-378 — the update (edit-existing) proposal
1317
1358
  'ai.update.proposalTitle': msg('Changes to {collection}'),
1318
1359
  'ai.update.diffBefore': msg('Current'),
@@ -1329,7 +1370,14 @@ const MESSAGES = {
1329
1370
  // EC-586 / EC-581 (wave-0092, zone A) — canonical values and the per-FieldType definition
1330
1371
  'cms.issueMessage.nonCanonicalValue': msg('Field "{field}" is stored in a non-canonical form for a "{type}" field — it was written past the write path that stores one form per field type. It still reads correctly; saving the document again stores the canonical form.'),
1331
1372
  'cms.issueMessage.assetHoldsUrl': msg('Asset field "{field}" holds a URL — an asset value is a library asset, never a URL. Upload the image to the library and pick it, or give a component a literal src for an external image.'),
1373
+ // EC-584 — the AllowList parse (config load / registration).
1374
+ 'cms.issueMessage.emptyAllow': msg('Field "{field}" declares an empty "allow" — a list permits exactly the ids it names, so an empty one permits nothing. Omit "allow" for the type\'s default vocabulary, or list the component ids.'),
1375
+ 'cms.issueMessage.unknownAllowComponent': msg('Field "{field}" allows "{component}", which is not a component of this project — check the id, or remove it from "allow".', '{component} is the component id as declared in the field\'s allow list.'),
1332
1376
  'cms.issueMessage.blocksNotTopLevel': msg('Field "{field}" is a "blocks" field inside an object — a blocks field is top-level only (a canvas inside a repeater breaks the form, the validator positions and the delivery type). Declare another top-level blocks field, or give a component a blocks prop (a slot).'),
1377
+ 'cms.issueMessage.placementKeyReserved': msg('Asset field "{asset}" declares the per-use sub-field "{field}", a name the asset itself owns — it would never reach a component (the asset\'s own "{field}" wins). Rename it; an image\'s alt, credit or AI fact belongs on the asset collection.'),
1378
+ 'cms.issueMessage.placementNotScalar': msg('Asset field "{asset}" declares the per-use sub-field "{field}" of type "{type}" — a placement holds data about this use of the image (a caption, a layout), never a reference or rich text.'),
1379
+ 'cms.issueMessage.sourceNotOnAssetCollection': msg('Field "{field}" declares source "{source}" — an embedded-metadata source fills a top-level field of the asset collection only.'),
1380
+ 'cms.issueMessage.sourceTypeMismatch': msg('Field "{field}" declares source "{source}", which cannot fill a "{type}" field (every source fills text; iptc:digitalSourceType also a boolean).'),
1333
1381
  'cms.issueMessage.uniqueNotTopLevel': msg('Sub-field "{field}" declares "unique" — uniqueness is judged across a collection\'s documents, so it applies to top-level fields only.'),
1334
1382
  'cms.issueMessage.localizedOnProp': msg('Component prop "{field}" declares "localized" — a localized value is stored per locale under the document, so only a top-level document field can be localized (localize the field that holds the composition).'),
1335
1383
  'cms.issueMessage.localizedOnSubField': msg('Sub-field "{field}" declares "localized" — a localized value is stored per locale under the document, so only a top-level field can be localized (localize the field that holds it).'),