@aglyn/aglyn 1.0.0-beta.143

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 (963) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +11 -0
  3. package/package.json +66 -0
  4. package/src/index.d.ts +25 -0
  5. package/src/index.js +26 -0
  6. package/src/index.js.map +1 -0
  7. package/src/lib/aglyn.d.ts +31 -0
  8. package/src/lib/aglyn.js +114 -0
  9. package/src/lib/aglyn.js.map +1 -0
  10. package/src/lib/app-utils/abuse-report.d.ts +193 -0
  11. package/src/lib/app-utils/abuse-report.js +321 -0
  12. package/src/lib/app-utils/abuse-report.js.map +1 -0
  13. package/src/lib/app-utils/accept-negotiation.d.ts +129 -0
  14. package/src/lib/app-utils/accept-negotiation.js +266 -0
  15. package/src/lib/app-utils/accept-negotiation.js.map +1 -0
  16. package/src/lib/app-utils/account-emails.d.ts +263 -0
  17. package/src/lib/app-utils/account-emails.js +264 -0
  18. package/src/lib/app-utils/account-emails.js.map +1 -0
  19. package/src/lib/app-utils/actions.d.ts +717 -0
  20. package/src/lib/app-utils/actions.js +1031 -0
  21. package/src/lib/app-utils/actions.js.map +1 -0
  22. package/src/lib/app-utils/activity-presenter.d.ts +152 -0
  23. package/src/lib/app-utils/activity-presenter.js +326 -0
  24. package/src/lib/app-utils/activity-presenter.js.map +1 -0
  25. package/src/lib/app-utils/advertising-tag-mounts.d.ts +133 -0
  26. package/src/lib/app-utils/advertising-tag-mounts.js +118 -0
  27. package/src/lib/app-utils/advertising-tag-mounts.js.map +1 -0
  28. package/src/lib/app-utils/advertising-tags.d.ts +307 -0
  29. package/src/lib/app-utils/advertising-tags.js +525 -0
  30. package/src/lib/app-utils/advertising-tags.js.map +1 -0
  31. package/src/lib/app-utils/agent-api-catalog.d.ts +94 -0
  32. package/src/lib/app-utils/agent-api-catalog.js +106 -0
  33. package/src/lib/app-utils/agent-api-catalog.js.map +1 -0
  34. package/src/lib/app-utils/agent-openapi.d.ts +103 -0
  35. package/src/lib/app-utils/agent-openapi.js +1128 -0
  36. package/src/lib/app-utils/agent-openapi.js.map +1 -0
  37. package/src/lib/app-utils/analytics-beacon.d.ts +154 -0
  38. package/src/lib/app-utils/analytics-beacon.js +152 -0
  39. package/src/lib/app-utils/analytics-beacon.js.map +1 -0
  40. package/src/lib/app-utils/analytics-environment.d.ts +133 -0
  41. package/src/lib/app-utils/analytics-environment.js +152 -0
  42. package/src/lib/app-utils/analytics-environment.js.map +1 -0
  43. package/src/lib/app-utils/analytics-events.d.ts +744 -0
  44. package/src/lib/app-utils/analytics-events.js +650 -0
  45. package/src/lib/app-utils/analytics-events.js.map +1 -0
  46. package/src/lib/app-utils/analytics-link-clicks.d.ts +102 -0
  47. package/src/lib/app-utils/analytics-link-clicks.js +267 -0
  48. package/src/lib/app-utils/analytics-link-clicks.js.map +1 -0
  49. package/src/lib/app-utils/analytics-path-key.d.ts +46 -0
  50. package/src/lib/app-utils/analytics-path-key.js +46 -0
  51. package/src/lib/app-utils/analytics-path-key.js.map +1 -0
  52. package/src/lib/app-utils/api-adapter.d.ts +47 -0
  53. package/src/lib/app-utils/api-adapter.js +367 -0
  54. package/src/lib/app-utils/api-adapter.js.map +1 -0
  55. package/src/lib/app-utils/api-idempotency.d.ts +169 -0
  56. package/src/lib/app-utils/api-idempotency.js +213 -0
  57. package/src/lib/app-utils/api-idempotency.js.map +1 -0
  58. package/src/lib/app-utils/api-plugins.d.ts +210 -0
  59. package/src/lib/app-utils/api-plugins.js +221 -0
  60. package/src/lib/app-utils/api-plugins.js.map +1 -0
  61. package/src/lib/app-utils/assist-credits.d.ts +482 -0
  62. package/src/lib/app-utils/assist-credits.js +509 -0
  63. package/src/lib/app-utils/assist-credits.js.map +1 -0
  64. package/src/lib/app-utils/attribution-attribute.d.ts +34 -0
  65. package/src/lib/app-utils/attribution-attribute.js +34 -0
  66. package/src/lib/app-utils/attribution-attribute.js.map +1 -0
  67. package/src/lib/app-utils/attribution-guard.d.ts +130 -0
  68. package/src/lib/app-utils/attribution-guard.js +410 -0
  69. package/src/lib/app-utils/attribution-guard.js.map +1 -0
  70. package/src/lib/app-utils/author-css.d.ts +123 -0
  71. package/src/lib/app-utils/author-css.js +275 -0
  72. package/src/lib/app-utils/author-css.js.map +1 -0
  73. package/src/lib/app-utils/author-html-markdown.d.ts +31 -0
  74. package/src/lib/app-utils/author-html-markdown.js +497 -0
  75. package/src/lib/app-utils/author-html-markdown.js.map +1 -0
  76. package/src/lib/app-utils/author-html.d.ts +135 -0
  77. package/src/lib/app-utils/author-html.js +1037 -0
  78. package/src/lib/app-utils/author-html.js.map +1 -0
  79. package/src/lib/app-utils/automation-placeholders.d.ts +72 -0
  80. package/src/lib/app-utils/automation-placeholders.js +207 -0
  81. package/src/lib/app-utils/automation-placeholders.js.map +1 -0
  82. package/src/lib/app-utils/bandwidth-cap.d.ts +183 -0
  83. package/src/lib/app-utils/bandwidth-cap.js +193 -0
  84. package/src/lib/app-utils/bandwidth-cap.js.map +1 -0
  85. package/src/lib/app-utils/binding-token-catalog.d.ts +82 -0
  86. package/src/lib/app-utils/binding-token-catalog.js +293 -0
  87. package/src/lib/app-utils/binding-token-catalog.js.map +1 -0
  88. package/src/lib/app-utils/binding-tokens.d.ts +157 -0
  89. package/src/lib/app-utils/binding-tokens.js +251 -0
  90. package/src/lib/app-utils/binding-tokens.js.map +1 -0
  91. package/src/lib/app-utils/breadcrumb-json-ld.d.ts +57 -0
  92. package/src/lib/app-utils/breadcrumb-json-ld.js +67 -0
  93. package/src/lib/app-utils/breadcrumb-json-ld.js.map +1 -0
  94. package/src/lib/app-utils/campaign-attribution.d.ts +117 -0
  95. package/src/lib/app-utils/campaign-attribution.js +162 -0
  96. package/src/lib/app-utils/campaign-attribution.js.map +1 -0
  97. package/src/lib/app-utils/campaign-forwarding.d.ts +220 -0
  98. package/src/lib/app-utils/campaign-forwarding.js +332 -0
  99. package/src/lib/app-utils/campaign-forwarding.js.map +1 -0
  100. package/src/lib/app-utils/campaign-membership.d.ts +109 -0
  101. package/src/lib/app-utils/campaign-membership.js +176 -0
  102. package/src/lib/app-utils/campaign-membership.js.map +1 -0
  103. package/src/lib/app-utils/campaign-touch.d.ts +206 -0
  104. package/src/lib/app-utils/campaign-touch.js +326 -0
  105. package/src/lib/app-utils/campaign-touch.js.map +1 -0
  106. package/src/lib/app-utils/child-contract-compose.d.ts +28 -0
  107. package/src/lib/app-utils/child-contract-compose.js +140 -0
  108. package/src/lib/app-utils/child-contract-compose.js.map +1 -0
  109. package/src/lib/app-utils/child-contract.d.ts +129 -0
  110. package/src/lib/app-utils/child-contract.js +153 -0
  111. package/src/lib/app-utils/child-contract.js.map +1 -0
  112. package/src/lib/app-utils/collection-delete.d.ts +113 -0
  113. package/src/lib/app-utils/collection-delete.js +120 -0
  114. package/src/lib/app-utils/collection-delete.js.map +1 -0
  115. package/src/lib/app-utils/collection-entries.d.ts +833 -0
  116. package/src/lib/app-utils/collection-entries.js +1285 -0
  117. package/src/lib/app-utils/collection-entries.js.map +1 -0
  118. package/src/lib/app-utils/collection-entry-date.d.ts +129 -0
  119. package/src/lib/app-utils/collection-entry-date.js +183 -0
  120. package/src/lib/app-utils/collection-entry-date.js.map +1 -0
  121. package/src/lib/app-utils/collection-kind.d.ts +55 -0
  122. package/src/lib/app-utils/collection-kind.js +69 -0
  123. package/src/lib/app-utils/collection-kind.js.map +1 -0
  124. package/src/lib/app-utils/collection-slug.d.ts +79 -0
  125. package/src/lib/app-utils/collection-slug.js +70 -0
  126. package/src/lib/app-utils/collection-slug.js.map +1 -0
  127. package/src/lib/app-utils/compose-layout-nodes.d.ts +147 -0
  128. package/src/lib/app-utils/compose-layout-nodes.js +261 -0
  129. package/src/lib/app-utils/compose-layout-nodes.js.map +1 -0
  130. package/src/lib/app-utils/compose-layout-props.d.ts +71 -0
  131. package/src/lib/app-utils/compose-layout-props.js +61 -0
  132. package/src/lib/app-utils/compose-layout-props.js.map +1 -0
  133. package/src/lib/app-utils/compose-reusable-components.d.ts +504 -0
  134. package/src/lib/app-utils/compose-reusable-components.js +1366 -0
  135. package/src/lib/app-utils/compose-reusable-components.js.map +1 -0
  136. package/src/lib/app-utils/compress.d.ts +35 -0
  137. package/src/lib/app-utils/compress.js +38 -0
  138. package/src/lib/app-utils/compress.js.map +1 -0
  139. package/src/lib/app-utils/consent-banner-ui.d.ts +226 -0
  140. package/src/lib/app-utils/consent-banner-ui.js +583 -0
  141. package/src/lib/app-utils/consent-banner-ui.js.map +1 -0
  142. package/src/lib/app-utils/consent-groups.d.ts +189 -0
  143. package/src/lib/app-utils/consent-groups.js +219 -0
  144. package/src/lib/app-utils/consent-groups.js.map +1 -0
  145. package/src/lib/app-utils/consent-preferences-dialog.d.ts +58 -0
  146. package/src/lib/app-utils/consent-preferences-dialog.js +106 -0
  147. package/src/lib/app-utils/consent-preferences-dialog.js.map +1 -0
  148. package/src/lib/app-utils/console-record-links.d.ts +163 -0
  149. package/src/lib/app-utils/console-record-links.js +178 -0
  150. package/src/lib/app-utils/console-record-links.js.map +1 -0
  151. package/src/lib/app-utils/console-routes.d.ts +658 -0
  152. package/src/lib/app-utils/console-routes.js +489 -0
  153. package/src/lib/app-utils/console-routes.js.map +1 -0
  154. package/src/lib/app-utils/console-widget-slot-context.d.ts +46 -0
  155. package/src/lib/app-utils/console-widget-slot-context.js +23 -0
  156. package/src/lib/app-utils/console-widget-slot-context.js.map +1 -0
  157. package/src/lib/app-utils/contact-custom-fields.d.ts +191 -0
  158. package/src/lib/app-utils/contact-custom-fields.js +349 -0
  159. package/src/lib/app-utils/contact-custom-fields.js.map +1 -0
  160. package/src/lib/app-utils/contact-holder.d.ts +52 -0
  161. package/src/lib/app-utils/contact-holder.js +98 -0
  162. package/src/lib/app-utils/contact-holder.js.map +1 -0
  163. package/src/lib/app-utils/contact-merge.d.ts +136 -0
  164. package/src/lib/app-utils/contact-merge.js +379 -0
  165. package/src/lib/app-utils/contact-merge.js.map +1 -0
  166. package/src/lib/app-utils/contacts.d.ts +554 -0
  167. package/src/lib/app-utils/contacts.js +401 -0
  168. package/src/lib/app-utils/contacts.js.map +1 -0
  169. package/src/lib/app-utils/content-author-profile.d.ts +68 -0
  170. package/src/lib/app-utils/content-author-profile.js +118 -0
  171. package/src/lib/app-utils/content-author-profile.js.map +1 -0
  172. package/src/lib/app-utils/content-authors.d.ts +662 -0
  173. package/src/lib/app-utils/content-authors.js +771 -0
  174. package/src/lib/app-utils/content-authors.js.map +1 -0
  175. package/src/lib/app-utils/content-schema-type.d.ts +81 -0
  176. package/src/lib/app-utils/content-schema-type.js +87 -0
  177. package/src/lib/app-utils/content-schema-type.js.map +1 -0
  178. package/src/lib/app-utils/contexts.d.ts +35 -0
  179. package/src/lib/app-utils/contexts.js +35 -0
  180. package/src/lib/app-utils/contexts.js.map +1 -0
  181. package/src/lib/app-utils/create-resource-uid.d.ts +18 -0
  182. package/src/lib/app-utils/create-resource-uid.js +23 -0
  183. package/src/lib/app-utils/create-resource-uid.js.map +1 -0
  184. package/src/lib/app-utils/crm-booking.d.ts +75 -0
  185. package/src/lib/app-utils/crm-booking.js +133 -0
  186. package/src/lib/app-utils/crm-booking.js.map +1 -0
  187. package/src/lib/app-utils/crm-csv.d.ts +232 -0
  188. package/src/lib/app-utils/crm-csv.js +432 -0
  189. package/src/lib/app-utils/crm-csv.js.map +1 -0
  190. package/src/lib/app-utils/crm-digest.d.ts +179 -0
  191. package/src/lib/app-utils/crm-digest.js +271 -0
  192. package/src/lib/app-utils/crm-digest.js.map +1 -0
  193. package/src/lib/app-utils/crm-email-templates.d.ts +172 -0
  194. package/src/lib/app-utils/crm-email-templates.js +382 -0
  195. package/src/lib/app-utils/crm-email-templates.js.map +1 -0
  196. package/src/lib/app-utils/crm-inbound.d.ts +245 -0
  197. package/src/lib/app-utils/crm-inbound.js +407 -0
  198. package/src/lib/app-utils/crm-inbound.js.map +1 -0
  199. package/src/lib/app-utils/crm-kinds.d.ts +73 -0
  200. package/src/lib/app-utils/crm-kinds.js +92 -0
  201. package/src/lib/app-utils/crm-kinds.js.map +1 -0
  202. package/src/lib/app-utils/crm-next-activity.d.ts +107 -0
  203. package/src/lib/app-utils/crm-next-activity.js +140 -0
  204. package/src/lib/app-utils/crm-next-activity.js.map +1 -0
  205. package/src/lib/app-utils/crm-reports.d.ts +479 -0
  206. package/src/lib/app-utils/crm-reports.js +680 -0
  207. package/src/lib/app-utils/crm-reports.js.map +1 -0
  208. package/src/lib/app-utils/crm-task-reminders.d.ts +129 -0
  209. package/src/lib/app-utils/crm-task-reminders.js +139 -0
  210. package/src/lib/app-utils/crm-task-reminders.js.map +1 -0
  211. package/src/lib/app-utils/crm.d.ts +1546 -0
  212. package/src/lib/app-utils/crm.js +1814 -0
  213. package/src/lib/app-utils/crm.js.map +1 -0
  214. package/src/lib/app-utils/csp-report.d.ts +84 -0
  215. package/src/lib/app-utils/csp-report.js +177 -0
  216. package/src/lib/app-utils/csp-report.js.map +1 -0
  217. package/src/lib/app-utils/csv-import.d.ts +192 -0
  218. package/src/lib/app-utils/csv-import.js +279 -0
  219. package/src/lib/app-utils/csv-import.js.map +1 -0
  220. package/src/lib/app-utils/dataset-csv.d.ts +109 -0
  221. package/src/lib/app-utils/dataset-csv.js +235 -0
  222. package/src/lib/app-utils/dataset-csv.js.map +1 -0
  223. package/src/lib/app-utils/dataset-models.d.ts +194 -0
  224. package/src/lib/app-utils/dataset-models.js +409 -0
  225. package/src/lib/app-utils/dataset-models.js.map +1 -0
  226. package/src/lib/app-utils/dataset-query.d.ts +57 -0
  227. package/src/lib/app-utils/dataset-query.js +126 -0
  228. package/src/lib/app-utils/dataset-query.js.map +1 -0
  229. package/src/lib/app-utils/datasets.d.ts +136 -0
  230. package/src/lib/app-utils/datasets.js +177 -0
  231. package/src/lib/app-utils/datasets.js.map +1 -0
  232. package/src/lib/app-utils/decompress.d.ts +36 -0
  233. package/src/lib/app-utils/decompress.js +32 -0
  234. package/src/lib/app-utils/decompress.js.map +1 -0
  235. package/src/lib/app-utils/dedicated-sending-domain.d.ts +47 -0
  236. package/src/lib/app-utils/dedicated-sending-domain.js +114 -0
  237. package/src/lib/app-utils/dedicated-sending-domain.js.map +1 -0
  238. package/src/lib/app-utils/deferred-image.d.ts +86 -0
  239. package/src/lib/app-utils/deferred-image.js +83 -0
  240. package/src/lib/app-utils/deferred-image.js.map +1 -0
  241. package/src/lib/app-utils/definition-canvas-tree.d.ts +61 -0
  242. package/src/lib/app-utils/definition-canvas-tree.js +126 -0
  243. package/src/lib/app-utils/definition-canvas-tree.js.map +1 -0
  244. package/src/lib/app-utils/deployment-shape.d.ts +167 -0
  245. package/src/lib/app-utils/deployment-shape.js +238 -0
  246. package/src/lib/app-utils/deployment-shape.js.map +1 -0
  247. package/src/lib/app-utils/detect-template-placeholders.d.ts +30 -0
  248. package/src/lib/app-utils/detect-template-placeholders.js +53 -0
  249. package/src/lib/app-utils/detect-template-placeholders.js.map +1 -0
  250. package/src/lib/app-utils/dmca-counter-notice.d.ts +185 -0
  251. package/src/lib/app-utils/dmca-counter-notice.js +277 -0
  252. package/src/lib/app-utils/dmca-counter-notice.js.map +1 -0
  253. package/src/lib/app-utils/docs-deflection.d.ts +156 -0
  254. package/src/lib/app-utils/docs-deflection.js +547 -0
  255. package/src/lib/app-utils/docs-deflection.js.map +1 -0
  256. package/src/lib/app-utils/docs-help.d.ts +57 -0
  257. package/src/lib/app-utils/docs-help.generated.d.ts +303 -0
  258. package/src/lib/app-utils/docs-help.generated.js +867 -0
  259. package/src/lib/app-utils/docs-help.generated.js.map +1 -0
  260. package/src/lib/app-utils/docs-help.js +46 -0
  261. package/src/lib/app-utils/docs-help.js.map +1 -0
  262. package/src/lib/app-utils/docs-index.generated.d.ts +29 -0
  263. package/src/lib/app-utils/docs-index.generated.js +8388 -0
  264. package/src/lib/app-utils/docs-index.generated.js.map +1 -0
  265. package/src/lib/app-utils/docs-retrieval.d.ts +67 -0
  266. package/src/lib/app-utils/docs-retrieval.js +188 -0
  267. package/src/lib/app-utils/docs-retrieval.js.map +1 -0
  268. package/src/lib/app-utils/document-landmark.d.ts +50 -0
  269. package/src/lib/app-utils/document-landmark.js +100 -0
  270. package/src/lib/app-utils/document-landmark.js.map +1 -0
  271. package/src/lib/app-utils/duplicate-resource.d.ts +101 -0
  272. package/src/lib/app-utils/duplicate-resource.js +206 -0
  273. package/src/lib/app-utils/duplicate-resource.js.map +1 -0
  274. package/src/lib/app-utils/dynamic-list-rule.d.ts +471 -0
  275. package/src/lib/app-utils/dynamic-list-rule.js +914 -0
  276. package/src/lib/app-utils/dynamic-list-rule.js.map +1 -0
  277. package/src/lib/app-utils/element-animation.d.ts +200 -0
  278. package/src/lib/app-utils/element-animation.js +233 -0
  279. package/src/lib/app-utils/element-animation.js.map +1 -0
  280. package/src/lib/app-utils/element-hidden-style.d.ts +46 -0
  281. package/src/lib/app-utils/element-hidden-style.js +48 -0
  282. package/src/lib/app-utils/element-hidden-style.js.map +1 -0
  283. package/src/lib/app-utils/element-ui.d.ts +243 -0
  284. package/src/lib/app-utils/element-ui.js +459 -0
  285. package/src/lib/app-utils/element-ui.js.map +1 -0
  286. package/src/lib/app-utils/email-starter-policy.d.ts +160 -0
  287. package/src/lib/app-utils/email-starter-policy.js +327 -0
  288. package/src/lib/app-utils/email-starter-policy.js.map +1 -0
  289. package/src/lib/app-utils/email-topics.d.ts +310 -0
  290. package/src/lib/app-utils/email-topics.js +336 -0
  291. package/src/lib/app-utils/email-topics.js.map +1 -0
  292. package/src/lib/app-utils/enabled-plugins-context.d.ts +100 -0
  293. package/src/lib/app-utils/enabled-plugins-context.js +113 -0
  294. package/src/lib/app-utils/enabled-plugins-context.js.map +1 -0
  295. package/src/lib/app-utils/ensure-canvas-root.d.ts +38 -0
  296. package/src/lib/app-utils/ensure-canvas-root.js +61 -0
  297. package/src/lib/app-utils/ensure-canvas-root.js.map +1 -0
  298. package/src/lib/app-utils/entity-picker-context.d.ts +199 -0
  299. package/src/lib/app-utils/entity-picker-context.js +93 -0
  300. package/src/lib/app-utils/entity-picker-context.js.map +1 -0
  301. package/src/lib/app-utils/error-beacon.d.ts +107 -0
  302. package/src/lib/app-utils/error-beacon.js +296 -0
  303. package/src/lib/app-utils/error-beacon.js.map +1 -0
  304. package/src/lib/app-utils/expand-repeatables.d.ts +172 -0
  305. package/src/lib/app-utils/expand-repeatables.js +299 -0
  306. package/src/lib/app-utils/expand-repeatables.js.map +1 -0
  307. package/src/lib/app-utils/foreign-script.d.ts +82 -0
  308. package/src/lib/app-utils/foreign-script.js +102 -0
  309. package/src/lib/app-utils/foreign-script.js.map +1 -0
  310. package/src/lib/app-utils/form-abuse-ceiling.d.ts +146 -0
  311. package/src/lib/app-utils/form-abuse-ceiling.js +158 -0
  312. package/src/lib/app-utils/form-abuse-ceiling.js.map +1 -0
  313. package/src/lib/app-utils/form-contract.d.ts +198 -0
  314. package/src/lib/app-utils/form-contract.js +282 -0
  315. package/src/lib/app-utils/form-contract.js.map +1 -0
  316. package/src/lib/app-utils/form-dataset-binding.d.ts +50 -0
  317. package/src/lib/app-utils/form-dataset-binding.js +74 -0
  318. package/src/lib/app-utils/form-dataset-binding.js.map +1 -0
  319. package/src/lib/app-utils/forms.d.ts +727 -0
  320. package/src/lib/app-utils/forms.js +777 -0
  321. package/src/lib/app-utils/forms.js.map +1 -0
  322. package/src/lib/app-utils/functions.d.ts +188 -0
  323. package/src/lib/app-utils/functions.js +529 -0
  324. package/src/lib/app-utils/functions.js.map +1 -0
  325. package/src/lib/app-utils/guarded-version-save.d.ts +91 -0
  326. package/src/lib/app-utils/guarded-version-save.js +131 -0
  327. package/src/lib/app-utils/guarded-version-save.js.map +1 -0
  328. package/src/lib/app-utils/health-report.d.ts +1766 -0
  329. package/src/lib/app-utils/health-report.js +2072 -0
  330. package/src/lib/app-utils/health-report.js.map +1 -0
  331. package/src/lib/app-utils/host-naming.d.ts +135 -0
  332. package/src/lib/app-utils/host-naming.js +188 -0
  333. package/src/lib/app-utils/host-naming.js.map +1 -0
  334. package/src/lib/app-utils/host-permissions.d.ts +76 -0
  335. package/src/lib/app-utils/host-permissions.js +119 -0
  336. package/src/lib/app-utils/host-permissions.js.map +1 -0
  337. package/src/lib/app-utils/host-tokens.d.ts +228 -0
  338. package/src/lib/app-utils/host-tokens.js +304 -0
  339. package/src/lib/app-utils/host-tokens.js.map +1 -0
  340. package/src/lib/app-utils/idp-profile.d.ts +83 -0
  341. package/src/lib/app-utils/idp-profile.js +268 -0
  342. package/src/lib/app-utils/idp-profile.js.map +1 -0
  343. package/src/lib/app-utils/image-upload-types.d.ts +49 -0
  344. package/src/lib/app-utils/image-upload-types.js +86 -0
  345. package/src/lib/app-utils/image-upload-types.js.map +1 -0
  346. package/src/lib/app-utils/index.d.ts +18 -0
  347. package/src/lib/app-utils/index.js +23 -0
  348. package/src/lib/app-utils/index.js.map +1 -0
  349. package/src/lib/app-utils/internal-traffic.d.ts +197 -0
  350. package/src/lib/app-utils/internal-traffic.js +288 -0
  351. package/src/lib/app-utils/internal-traffic.js.map +1 -0
  352. package/src/lib/app-utils/lineal-order.d.ts +62 -0
  353. package/src/lib/app-utils/lineal-order.js +65 -0
  354. package/src/lib/app-utils/lineal-order.js.map +1 -0
  355. package/src/lib/app-utils/link-references.d.ts +36 -0
  356. package/src/lib/app-utils/link-references.js +89 -0
  357. package/src/lib/app-utils/link-references.js.map +1 -0
  358. package/src/lib/app-utils/link-target-search-context.d.ts +123 -0
  359. package/src/lib/app-utils/link-target-search-context.js +221 -0
  360. package/src/lib/app-utils/link-target-search-context.js.map +1 -0
  361. package/src/lib/app-utils/list-assignment-policy.d.ts +169 -0
  362. package/src/lib/app-utils/list-assignment-policy.js +170 -0
  363. package/src/lib/app-utils/list-assignment-policy.js.map +1 -0
  364. package/src/lib/app-utils/list-import.d.ts +158 -0
  365. package/src/lib/app-utils/list-import.js +332 -0
  366. package/src/lib/app-utils/list-import.js.map +1 -0
  367. package/src/lib/app-utils/llms-txt.d.ts +104 -0
  368. package/src/lib/app-utils/llms-txt.js +144 -0
  369. package/src/lib/app-utils/llms-txt.js.map +1 -0
  370. package/src/lib/app-utils/local-storage-budget.d.ts +75 -0
  371. package/src/lib/app-utils/local-storage-budget.js +153 -0
  372. package/src/lib/app-utils/local-storage-budget.js.map +1 -0
  373. package/src/lib/app-utils/lockdown.d.ts +698 -0
  374. package/src/lib/app-utils/lockdown.js +929 -0
  375. package/src/lib/app-utils/lockdown.js.map +1 -0
  376. package/src/lib/app-utils/margin-utilization.d.ts +267 -0
  377. package/src/lib/app-utils/margin-utilization.js +351 -0
  378. package/src/lib/app-utils/margin-utilization.js.map +1 -0
  379. package/src/lib/app-utils/markdown-lite.d.ts +297 -0
  380. package/src/lib/app-utils/markdown-lite.js +705 -0
  381. package/src/lib/app-utils/markdown-lite.js.map +1 -0
  382. package/src/lib/app-utils/marketing-consent.d.ts +704 -0
  383. package/src/lib/app-utils/marketing-consent.js +783 -0
  384. package/src/lib/app-utils/marketing-consent.js.map +1 -0
  385. package/src/lib/app-utils/marketplace-listing-visibility.d.ts +120 -0
  386. package/src/lib/app-utils/marketplace-listing-visibility.js +139 -0
  387. package/src/lib/app-utils/marketplace-listing-visibility.js.map +1 -0
  388. package/src/lib/app-utils/marketplace-overrides.d.ts +271 -0
  389. package/src/lib/app-utils/marketplace-overrides.js +462 -0
  390. package/src/lib/app-utils/marketplace-overrides.js.map +1 -0
  391. package/src/lib/app-utils/marketplace-provenance.d.ts +150 -0
  392. package/src/lib/app-utils/marketplace-provenance.js +136 -0
  393. package/src/lib/app-utils/marketplace-provenance.js.map +1 -0
  394. package/src/lib/app-utils/marketplace-theme.d.ts +237 -0
  395. package/src/lib/app-utils/marketplace-theme.js +525 -0
  396. package/src/lib/app-utils/marketplace-theme.js.map +1 -0
  397. package/src/lib/app-utils/marketplace-update-state.d.ts +119 -0
  398. package/src/lib/app-utils/marketplace-update-state.js +132 -0
  399. package/src/lib/app-utils/marketplace-update-state.js.map +1 -0
  400. package/src/lib/app-utils/marketplace-verification.d.ts +95 -0
  401. package/src/lib/app-utils/marketplace-verification.js +81 -0
  402. package/src/lib/app-utils/marketplace-verification.js.map +1 -0
  403. package/src/lib/app-utils/measure-node-map.d.ts +76 -0
  404. package/src/lib/app-utils/measure-node-map.js +111 -0
  405. package/src/lib/app-utils/measure-node-map.js.map +1 -0
  406. package/src/lib/app-utils/media-alt.d.ts +55 -0
  407. package/src/lib/app-utils/media-alt.js +58 -0
  408. package/src/lib/app-utils/media-alt.js.map +1 -0
  409. package/src/lib/app-utils/media-asset-facts.d.ts +125 -0
  410. package/src/lib/app-utils/media-asset-facts.js +467 -0
  411. package/src/lib/app-utils/media-asset-facts.js.map +1 -0
  412. package/src/lib/app-utils/media-cdn-scope.d.ts +65 -0
  413. package/src/lib/app-utils/media-cdn-scope.js +75 -0
  414. package/src/lib/app-utils/media-cdn-scope.js.map +1 -0
  415. package/src/lib/app-utils/media-folders.d.ts +161 -0
  416. package/src/lib/app-utils/media-folders.js +230 -0
  417. package/src/lib/app-utils/media-folders.js.map +1 -0
  418. package/src/lib/app-utils/media-metadata.d.ts +277 -0
  419. package/src/lib/app-utils/media-metadata.js +388 -0
  420. package/src/lib/app-utils/media-metadata.js.map +1 -0
  421. package/src/lib/app-utils/media-picker-context.d.ts +93 -0
  422. package/src/lib/app-utils/media-picker-context.js +26 -0
  423. package/src/lib/app-utils/media-picker-context.js.map +1 -0
  424. package/src/lib/app-utils/media-quarantine.d.ts +247 -0
  425. package/src/lib/app-utils/media-quarantine.js +323 -0
  426. package/src/lib/app-utils/media-quarantine.js.map +1 -0
  427. package/src/lib/app-utils/media-ref.d.ts +661 -0
  428. package/src/lib/app-utils/media-ref.js +1055 -0
  429. package/src/lib/app-utils/media-ref.js.map +1 -0
  430. package/src/lib/app-utils/media-takedown-reach.d.ts +126 -0
  431. package/src/lib/app-utils/media-takedown-reach.js +143 -0
  432. package/src/lib/app-utils/media-takedown-reach.js.map +1 -0
  433. package/src/lib/app-utils/member-email-aliases.d.ts +180 -0
  434. package/src/lib/app-utils/member-email-aliases.js +217 -0
  435. package/src/lib/app-utils/member-email-aliases.js.map +1 -0
  436. package/src/lib/app-utils/merge-node-sx.d.ts +47 -0
  437. package/src/lib/app-utils/merge-node-sx.js +123 -0
  438. package/src/lib/app-utils/merge-node-sx.js.map +1 -0
  439. package/src/lib/app-utils/name-match.d.ts +155 -0
  440. package/src/lib/app-utils/name-match.js +175 -0
  441. package/src/lib/app-utils/name-match.js.map +1 -0
  442. package/src/lib/app-utils/name-search.d.ts +117 -0
  443. package/src/lib/app-utils/name-search.js +145 -0
  444. package/src/lib/app-utils/name-search.js.map +1 -0
  445. package/src/lib/app-utils/node-capabilities.d.ts +85 -0
  446. package/src/lib/app-utils/node-capabilities.js +88 -0
  447. package/src/lib/app-utils/node-capabilities.js.map +1 -0
  448. package/src/lib/app-utils/node-definition-sanitizer.d.ts +164 -0
  449. package/src/lib/app-utils/node-definition-sanitizer.js +402 -0
  450. package/src/lib/app-utils/node-definition-sanitizer.js.map +1 -0
  451. package/src/lib/app-utils/node-identity.d.ts +47 -0
  452. package/src/lib/app-utils/node-identity.js +50 -0
  453. package/src/lib/app-utils/node-identity.js.map +1 -0
  454. package/src/lib/app-utils/node-interactions.d.ts +102 -0
  455. package/src/lib/app-utils/node-interactions.js +192 -0
  456. package/src/lib/app-utils/node-interactions.js.map +1 -0
  457. package/src/lib/app-utils/node-url-policy.d.ts +54 -0
  458. package/src/lib/app-utils/node-url-policy.js +72 -0
  459. package/src/lib/app-utils/node-url-policy.js.map +1 -0
  460. package/src/lib/app-utils/notifications.d.ts +71 -0
  461. package/src/lib/app-utils/notifications.js +101 -0
  462. package/src/lib/app-utils/notifications.js.map +1 -0
  463. package/src/lib/app-utils/onboarding-deep-link.d.ts +120 -0
  464. package/src/lib/app-utils/onboarding-deep-link.js +142 -0
  465. package/src/lib/app-utils/onboarding-deep-link.js.map +1 -0
  466. package/src/lib/app-utils/operator-identity.d.ts +207 -0
  467. package/src/lib/app-utils/operator-identity.js +186 -0
  468. package/src/lib/app-utils/operator-identity.js.map +1 -0
  469. package/src/lib/app-utils/org-billing-doc.d.ts +231 -0
  470. package/src/lib/app-utils/org-billing-doc.js +238 -0
  471. package/src/lib/app-utils/org-billing-doc.js.map +1 -0
  472. package/src/lib/app-utils/org-override-reason.d.ts +100 -0
  473. package/src/lib/app-utils/org-override-reason.js +116 -0
  474. package/src/lib/app-utils/org-override-reason.js.map +1 -0
  475. package/src/lib/app-utils/org-permissions.d.ts +194 -0
  476. package/src/lib/app-utils/org-permissions.js +357 -0
  477. package/src/lib/app-utils/org-permissions.js.map +1 -0
  478. package/src/lib/app-utils/org-roles.d.ts +72 -0
  479. package/src/lib/app-utils/org-roles.js +131 -0
  480. package/src/lib/app-utils/org-roles.js.map +1 -0
  481. package/src/lib/app-utils/organizations.d.ts +407 -0
  482. package/src/lib/app-utils/organizations.js +511 -0
  483. package/src/lib/app-utils/organizations.js.map +1 -0
  484. package/src/lib/app-utils/page-header-actions-context.d.ts +83 -0
  485. package/src/lib/app-utils/page-header-actions-context.js +58 -0
  486. package/src/lib/app-utils/page-header-actions-context.js.map +1 -0
  487. package/src/lib/app-utils/page-header-record-context.d.ts +80 -0
  488. package/src/lib/app-utils/page-header-record-context.js +64 -0
  489. package/src/lib/app-utils/page-header-record-context.js.map +1 -0
  490. package/src/lib/app-utils/page-markdown.d.ts +103 -0
  491. package/src/lib/app-utils/page-markdown.js +385 -0
  492. package/src/lib/app-utils/page-markdown.js.map +1 -0
  493. package/src/lib/app-utils/paid-media-source.d.ts +90 -0
  494. package/src/lib/app-utils/paid-media-source.js +184 -0
  495. package/src/lib/app-utils/paid-media-source.js.map +1 -0
  496. package/src/lib/app-utils/palette-sx.d.ts +34 -0
  497. package/src/lib/app-utils/palette-sx.js +150 -0
  498. package/src/lib/app-utils/palette-sx.js.map +1 -0
  499. package/src/lib/app-utils/password-policy.d.ts +47 -0
  500. package/src/lib/app-utils/password-policy.js +46 -0
  501. package/src/lib/app-utils/password-policy.js.map +1 -0
  502. package/src/lib/app-utils/payments-configured.d.ts +84 -0
  503. package/src/lib/app-utils/payments-configured.js +88 -0
  504. package/src/lib/app-utils/payments-configured.js.map +1 -0
  505. package/src/lib/app-utils/person-erasure.d.ts +126 -0
  506. package/src/lib/app-utils/person-erasure.js +121 -0
  507. package/src/lib/app-utils/person-erasure.js.map +1 -0
  508. package/src/lib/app-utils/person-key.d.ts +32 -0
  509. package/src/lib/app-utils/person-key.js +62 -0
  510. package/src/lib/app-utils/person-key.js.map +1 -0
  511. package/src/lib/app-utils/plan-entitlements.d.ts +2756 -0
  512. package/src/lib/app-utils/plan-entitlements.js +4085 -0
  513. package/src/lib/app-utils/plan-entitlements.js.map +1 -0
  514. package/src/lib/app-utils/platform-ad-conversions.d.ts +122 -0
  515. package/src/lib/app-utils/platform-ad-conversions.js +174 -0
  516. package/src/lib/app-utils/platform-ad-conversions.js.map +1 -0
  517. package/src/lib/app-utils/platform-advertising-tags.d.ts +139 -0
  518. package/src/lib/app-utils/platform-advertising-tags.js +203 -0
  519. package/src/lib/app-utils/platform-advertising-tags.js.map +1 -0
  520. package/src/lib/app-utils/platform-brand.d.ts +151 -0
  521. package/src/lib/app-utils/platform-brand.js +175 -0
  522. package/src/lib/app-utils/platform-brand.js.map +1 -0
  523. package/src/lib/app-utils/platform-consent-default.d.ts +142 -0
  524. package/src/lib/app-utils/platform-consent-default.js +295 -0
  525. package/src/lib/app-utils/platform-consent-default.js.map +1 -0
  526. package/src/lib/app-utils/platform-marketing-consent.d.ts +151 -0
  527. package/src/lib/app-utils/platform-marketing-consent.js +182 -0
  528. package/src/lib/app-utils/platform-marketing-consent.js.map +1 -0
  529. package/src/lib/app-utils/platform-marketing-host.d.ts +33 -0
  530. package/src/lib/app-utils/platform-marketing-host.js +97 -0
  531. package/src/lib/app-utils/platform-marketing-host.js.map +1 -0
  532. package/src/lib/app-utils/platform-visitor-consent.d.ts +252 -0
  533. package/src/lib/app-utils/platform-visitor-consent.js +533 -0
  534. package/src/lib/app-utils/platform-visitor-consent.js.map +1 -0
  535. package/src/lib/app-utils/plugin-api-cross-origin.d.ts +61 -0
  536. package/src/lib/app-utils/plugin-api-cross-origin.js +202 -0
  537. package/src/lib/app-utils/plugin-api-cross-origin.js.map +1 -0
  538. package/src/lib/app-utils/plugin-api-rate-limit.d.ts +192 -0
  539. package/src/lib/app-utils/plugin-api-rate-limit.js +270 -0
  540. package/src/lib/app-utils/plugin-api-rate-limit.js.map +1 -0
  541. package/src/lib/app-utils/plugin-artifact-path.d.ts +32 -0
  542. package/src/lib/app-utils/plugin-artifact-path.js +33 -0
  543. package/src/lib/app-utils/plugin-artifact-path.js.map +1 -0
  544. package/src/lib/app-utils/plugin-bundle-checks.d.ts +148 -0
  545. package/src/lib/app-utils/plugin-bundle-checks.js +989 -0
  546. package/src/lib/app-utils/plugin-bundle-checks.js.map +1 -0
  547. package/src/lib/app-utils/plugin-manifest.d.ts +516 -0
  548. package/src/lib/app-utils/plugin-manifest.js +687 -0
  549. package/src/lib/app-utils/plugin-manifest.js.map +1 -0
  550. package/src/lib/app-utils/published-legal-pages.d.ts +71 -0
  551. package/src/lib/app-utils/published-legal-pages.js +90 -0
  552. package/src/lib/app-utils/published-legal-pages.js.map +1 -0
  553. package/src/lib/app-utils/publisher-agreement.d.ts +254 -0
  554. package/src/lib/app-utils/publisher-agreement.js +274 -0
  555. package/src/lib/app-utils/publisher-agreement.js.map +1 -0
  556. package/src/lib/app-utils/publisher-attestation.d.ts +99 -0
  557. package/src/lib/app-utils/publisher-attestation.js +158 -0
  558. package/src/lib/app-utils/publisher-attestation.js.map +1 -0
  559. package/src/lib/app-utils/recipient-email-render.d.ts +216 -0
  560. package/src/lib/app-utils/recipient-email-render.js +221 -0
  561. package/src/lib/app-utils/recipient-email-render.js.map +1 -0
  562. package/src/lib/app-utils/redispatch-caught-error.d.ts +38 -0
  563. package/src/lib/app-utils/redispatch-caught-error.js +46 -0
  564. package/src/lib/app-utils/redispatch-caught-error.js.map +1 -0
  565. package/src/lib/app-utils/registering-plugin.d.ts +19 -0
  566. package/src/lib/app-utils/registering-plugin.js +38 -0
  567. package/src/lib/app-utils/registering-plugin.js.map +1 -0
  568. package/src/lib/app-utils/release-flags.d.ts +283 -0
  569. package/src/lib/app-utils/release-flags.js +518 -0
  570. package/src/lib/app-utils/release-flags.js.map +1 -0
  571. package/src/lib/app-utils/repair-canvas-nodes.d.ts +130 -0
  572. package/src/lib/app-utils/repair-canvas-nodes.js +298 -0
  573. package/src/lib/app-utils/repair-canvas-nodes.js.map +1 -0
  574. package/src/lib/app-utils/repeat-infringer.d.ts +166 -0
  575. package/src/lib/app-utils/repeat-infringer.js +188 -0
  576. package/src/lib/app-utils/repeat-infringer.js.map +1 -0
  577. package/src/lib/app-utils/repeat-sources.d.ts +115 -0
  578. package/src/lib/app-utils/repeat-sources.js +86 -0
  579. package/src/lib/app-utils/repeat-sources.js.map +1 -0
  580. package/src/lib/app-utils/request-geo.d.ts +114 -0
  581. package/src/lib/app-utils/request-geo.js +247 -0
  582. package/src/lib/app-utils/request-geo.js.map +1 -0
  583. package/src/lib/app-utils/request-ip.d.ts +213 -0
  584. package/src/lib/app-utils/request-ip.js +344 -0
  585. package/src/lib/app-utils/request-ip.js.map +1 -0
  586. package/src/lib/app-utils/resolve-named-tokens.d.ts +26 -0
  587. package/src/lib/app-utils/resolve-named-tokens.js +59 -0
  588. package/src/lib/app-utils/resolve-named-tokens.js.map +1 -0
  589. package/src/lib/app-utils/responsive-typography-sx.d.ts +77 -0
  590. package/src/lib/app-utils/responsive-typography-sx.js +122 -0
  591. package/src/lib/app-utils/responsive-typography-sx.js.map +1 -0
  592. package/src/lib/app-utils/reusable-component-keys.d.ts +135 -0
  593. package/src/lib/app-utils/reusable-component-keys.js +140 -0
  594. package/src/lib/app-utils/reusable-component-keys.js.map +1 -0
  595. package/src/lib/app-utils/reusable-prop-values.d.ts +199 -0
  596. package/src/lib/app-utils/reusable-prop-values.js +494 -0
  597. package/src/lib/app-utils/reusable-prop-values.js.map +1 -0
  598. package/src/lib/app-utils/safe-json-ld.d.ts +29 -0
  599. package/src/lib/app-utils/safe-json-ld.js +37 -0
  600. package/src/lib/app-utils/safe-json-ld.js.map +1 -0
  601. package/src/lib/app-utils/sanitize-svg.d.ts +55 -0
  602. package/src/lib/app-utils/sanitize-svg.js +460 -0
  603. package/src/lib/app-utils/sanitize-svg.js.map +1 -0
  604. package/src/lib/app-utils/scheme-sx.d.ts +84 -0
  605. package/src/lib/app-utils/scheme-sx.js +148 -0
  606. package/src/lib/app-utils/scheme-sx.js.map +1 -0
  607. package/src/lib/app-utils/scope-tokens.d.ts +249 -0
  608. package/src/lib/app-utils/scope-tokens.js +331 -0
  609. package/src/lib/app-utils/scope-tokens.js.map +1 -0
  610. package/src/lib/app-utils/screen-link-context-value.d.ts +57 -0
  611. package/src/lib/app-utils/screen-link-context-value.js +43 -0
  612. package/src/lib/app-utils/screen-link-context-value.js.map +1 -0
  613. package/src/lib/app-utils/screen-link-context.d.ts +185 -0
  614. package/src/lib/app-utils/screen-link-context.js +304 -0
  615. package/src/lib/app-utils/screen-link-context.js.map +1 -0
  616. package/src/lib/app-utils/screen-link-value.d.ts +269 -0
  617. package/src/lib/app-utils/screen-link-value.js +384 -0
  618. package/src/lib/app-utils/screen-link-value.js.map +1 -0
  619. package/src/lib/app-utils/screen-route.d.ts +669 -0
  620. package/src/lib/app-utils/screen-route.js +751 -0
  621. package/src/lib/app-utils/screen-route.js.map +1 -0
  622. package/src/lib/app-utils/screen-seo-fields.d.ts +37 -0
  623. package/src/lib/app-utils/screen-seo-fields.js +42 -0
  624. package/src/lib/app-utils/screen-seo-fields.js.map +1 -0
  625. package/src/lib/app-utils/search-indexing.d.ts +162 -0
  626. package/src/lib/app-utils/search-indexing.js +207 -0
  627. package/src/lib/app-utils/search-indexing.js.map +1 -0
  628. package/src/lib/app-utils/seo-listing-fields.d.ts +70 -0
  629. package/src/lib/app-utils/seo-listing-fields.js +75 -0
  630. package/src/lib/app-utils/seo-listing-fields.js.map +1 -0
  631. package/src/lib/app-utils/seo-locale.d.ts +119 -0
  632. package/src/lib/app-utils/seo-locale.js +133 -0
  633. package/src/lib/app-utils/seo-locale.js.map +1 -0
  634. package/src/lib/app-utils/seo-title-variables.d.ts +149 -0
  635. package/src/lib/app-utils/seo-title-variables.js +190 -0
  636. package/src/lib/app-utils/seo-title-variables.js.map +1 -0
  637. package/src/lib/app-utils/seo-title.d.ts +70 -0
  638. package/src/lib/app-utils/seo-title.js +117 -0
  639. package/src/lib/app-utils/seo-title.js.map +1 -0
  640. package/src/lib/app-utils/server.d.ts +174 -0
  641. package/src/lib/app-utils/server.js +314 -0
  642. package/src/lib/app-utils/server.js.map +1 -0
  643. package/src/lib/app-utils/site-context.d.ts +106 -0
  644. package/src/lib/app-utils/site-context.js +100 -0
  645. package/src/lib/app-utils/site-context.js.map +1 -0
  646. package/src/lib/app-utils/sitemap.d.ts +117 -0
  647. package/src/lib/app-utils/sitemap.js +183 -0
  648. package/src/lib/app-utils/sitemap.js.map +1 -0
  649. package/src/lib/app-utils/social-image.d.ts +112 -0
  650. package/src/lib/app-utils/social-image.js +191 -0
  651. package/src/lib/app-utils/social-image.js.map +1 -0
  652. package/src/lib/app-utils/starter-templates.d.ts +99 -0
  653. package/src/lib/app-utils/starter-templates.js +579 -0
  654. package/src/lib/app-utils/starter-templates.js.map +1 -0
  655. package/src/lib/app-utils/stored-nodes.d.ts +120 -0
  656. package/src/lib/app-utils/stored-nodes.js +174 -0
  657. package/src/lib/app-utils/stored-nodes.js.map +1 -0
  658. package/src/lib/app-utils/strip-undefined.d.ts +59 -0
  659. package/src/lib/app-utils/strip-undefined.js +95 -0
  660. package/src/lib/app-utils/strip-undefined.js.map +1 -0
  661. package/src/lib/app-utils/stripe-deployment-mode.d.ts +47 -0
  662. package/src/lib/app-utils/stripe-deployment-mode.js +70 -0
  663. package/src/lib/app-utils/stripe-deployment-mode.js.map +1 -0
  664. package/src/lib/app-utils/support-tiers.d.ts +108 -0
  665. package/src/lib/app-utils/support-tiers.js +201 -0
  666. package/src/lib/app-utils/support-tiers.js.map +1 -0
  667. package/src/lib/app-utils/timezone-geo-hint.d.ts +36 -0
  668. package/src/lib/app-utils/timezone-geo-hint.js +180 -0
  669. package/src/lib/app-utils/timezone-geo-hint.js.map +1 -0
  670. package/src/lib/app-utils/upload-cors.d.ts +155 -0
  671. package/src/lib/app-utils/upload-cors.js +254 -0
  672. package/src/lib/app-utils/upload-cors.js.map +1 -0
  673. package/src/lib/app-utils/upload-inspection.d.ts +159 -0
  674. package/src/lib/app-utils/upload-inspection.js +539 -0
  675. package/src/lib/app-utils/upload-inspection.js.map +1 -0
  676. package/src/lib/app-utils/url-slug.d.ts +40 -0
  677. package/src/lib/app-utils/url-slug.js +42 -0
  678. package/src/lib/app-utils/url-slug.js.map +1 -0
  679. package/src/lib/app-utils/usage-budget.d.ts +429 -0
  680. package/src/lib/app-utils/usage-budget.js +421 -0
  681. package/src/lib/app-utils/usage-budget.js.map +1 -0
  682. package/src/lib/app-utils/variables.d.ts +96 -0
  683. package/src/lib/app-utils/variables.js +233 -0
  684. package/src/lib/app-utils/variables.js.map +1 -0
  685. package/src/lib/app-utils/video-asset-facts.d.ts +61 -0
  686. package/src/lib/app-utils/video-asset-facts.js +70 -0
  687. package/src/lib/app-utils/video-asset-facts.js.map +1 -0
  688. package/src/lib/app-utils/video-object.d.ts +89 -0
  689. package/src/lib/app-utils/video-object.js +245 -0
  690. package/src/lib/app-utils/video-object.js.map +1 -0
  691. package/src/lib/app-utils/visitor-consent.d.ts +757 -0
  692. package/src/lib/app-utils/visitor-consent.js +981 -0
  693. package/src/lib/app-utils/visitor-consent.js.map +1 -0
  694. package/src/lib/app-utils/visitor-record-ceiling.d.ts +223 -0
  695. package/src/lib/app-utils/visitor-record-ceiling.js +215 -0
  696. package/src/lib/app-utils/visitor-record-ceiling.js.map +1 -0
  697. package/src/lib/app-utils/web-vitals-rum.d.ts +53 -0
  698. package/src/lib/app-utils/web-vitals-rum.js +278 -0
  699. package/src/lib/app-utils/web-vitals-rum.js.map +1 -0
  700. package/src/lib/app-utils/webhook-delivery.d.ts +324 -0
  701. package/src/lib/app-utils/webhook-delivery.js +413 -0
  702. package/src/lib/app-utils/webhook-delivery.js.map +1 -0
  703. package/src/lib/app-utils/where-used.d.ts +57 -0
  704. package/src/lib/app-utils/where-used.js +59 -0
  705. package/src/lib/app-utils/where-used.js.map +1 -0
  706. package/src/lib/app-utils/wistia-embed.d.ts +86 -0
  707. package/src/lib/app-utils/wistia-embed.js +119 -0
  708. package/src/lib/app-utils/wistia-embed.js.map +1 -0
  709. package/src/lib/app-utils/workflows.d.ts +136 -0
  710. package/src/lib/app-utils/workflows.js +346 -0
  711. package/src/lib/app-utils/workflows.js.map +1 -0
  712. package/src/lib/canvas-manager/canvas-manager-tree.d.ts +109 -0
  713. package/src/lib/canvas-manager/canvas-manager-tree.js +139 -0
  714. package/src/lib/canvas-manager/canvas-manager-tree.js.map +1 -0
  715. package/src/lib/canvas-manager/canvas-manager.d.ts +549 -0
  716. package/src/lib/canvas-manager/canvas-manager.js +1311 -0
  717. package/src/lib/canvas-manager/canvas-manager.js.map +1 -0
  718. package/src/lib/canvas-manager/index.d.ts +20 -0
  719. package/src/lib/canvas-manager/index.js +21 -0
  720. package/src/lib/canvas-manager/index.js.map +1 -0
  721. package/src/lib/canvas-manager/stores/index.d.ts +17 -0
  722. package/src/lib/canvas-manager/stores/index.js +18 -0
  723. package/src/lib/canvas-manager/stores/index.js.map +1 -0
  724. package/src/lib/canvas-manager/stores/node.store.d.ts +30 -0
  725. package/src/lib/canvas-manager/stores/node.store.js +45 -0
  726. package/src/lib/canvas-manager/stores/node.store.js.map +1 -0
  727. package/src/lib/components-manager/components-manager.d.ts +56 -0
  728. package/src/lib/components-manager/components-manager.js +191 -0
  729. package/src/lib/components-manager/components-manager.js.map +1 -0
  730. package/src/lib/components-manager/index.d.ts +18 -0
  731. package/src/lib/components-manager/index.js +19 -0
  732. package/src/lib/components-manager/index.js.map +1 -0
  733. package/src/lib/emit-manager/emit-manager.d.ts +56 -0
  734. package/src/lib/emit-manager/emit-manager.js +60 -0
  735. package/src/lib/emit-manager/emit-manager.js.map +1 -0
  736. package/src/lib/emit-manager/index.d.ts +18 -0
  737. package/src/lib/emit-manager/index.js +19 -0
  738. package/src/lib/emit-manager/index.js.map +1 -0
  739. package/src/lib/foundation/constants/_internal.d.ts +18 -0
  740. package/src/lib/foundation/constants/_internal.js +62 -0
  741. package/src/lib/foundation/constants/_internal.js.map +1 -0
  742. package/src/lib/foundation/constants/app.d.ts +23 -0
  743. package/src/lib/foundation/constants/app.js +25 -0
  744. package/src/lib/foundation/constants/app.js.map +1 -0
  745. package/src/lib/foundation/constants/canvas.d.ts +18 -0
  746. package/src/lib/foundation/constants/canvas.js +18 -0
  747. package/src/lib/foundation/constants/canvas.js.map +1 -0
  748. package/src/lib/foundation/constants/components.d.ts +54 -0
  749. package/src/lib/foundation/constants/components.js +61 -0
  750. package/src/lib/foundation/constants/components.js.map +1 -0
  751. package/src/lib/foundation/constants/shared.d.ts +50 -0
  752. package/src/lib/foundation/constants/shared.js +49 -0
  753. package/src/lib/foundation/constants/shared.js.map +1 -0
  754. package/src/lib/foundation/constants/symbol.d.ts +63 -0
  755. package/src/lib/foundation/constants/symbol.js +75 -0
  756. package/src/lib/foundation/constants/symbol.js.map +1 -0
  757. package/src/lib/foundation/definitions/components.types.d.ts +372 -0
  758. package/src/lib/foundation/definitions/components.types.js +180 -0
  759. package/src/lib/foundation/definitions/components.types.js.map +1 -0
  760. package/src/lib/foundation/definitions/contact.types.d.ts +73 -0
  761. package/src/lib/foundation/definitions/contact.types.js +107 -0
  762. package/src/lib/foundation/definitions/contact.types.js.map +1 -0
  763. package/src/lib/foundation/definitions/host-content-collections.d.ts +137 -0
  764. package/src/lib/foundation/definitions/host-content-collections.js +219 -0
  765. package/src/lib/foundation/definitions/host-content-collections.js.map +1 -0
  766. package/src/lib/foundation/definitions/org-billing.types.d.ts +1361 -0
  767. package/src/lib/foundation/definitions/org-billing.types.js +77 -0
  768. package/src/lib/foundation/definitions/org-billing.types.js.map +1 -0
  769. package/src/lib/foundation/definitions/organization.types.d.ts +307 -0
  770. package/src/lib/foundation/definitions/organization.types.js +42 -0
  771. package/src/lib/foundation/definitions/organization.types.js.map +1 -0
  772. package/src/lib/foundation/definitions/platform.types.d.ts +1326 -0
  773. package/src/lib/foundation/definitions/platform.types.js +124 -0
  774. package/src/lib/foundation/definitions/platform.types.js.map +1 -0
  775. package/src/lib/foundation/definitions/property-kinds.d.ts +189 -0
  776. package/src/lib/foundation/definitions/property-kinds.js +565 -0
  777. package/src/lib/foundation/definitions/property-kinds.js.map +1 -0
  778. package/src/lib/foundation/definitions/shared.d.ts +23 -0
  779. package/src/lib/foundation/definitions/shared.js +18 -0
  780. package/src/lib/foundation/definitions/shared.js.map +1 -0
  781. package/src/lib/foundation/definitions/write-deny-coverage.util.d.ts +249 -0
  782. package/src/lib/foundation/definitions/write-deny-coverage.util.js +499 -0
  783. package/src/lib/foundation/definitions/write-deny-coverage.util.js.map +1 -0
  784. package/src/lib/foundation/index.d.ts +32 -0
  785. package/src/lib/foundation/index.js +67 -0
  786. package/src/lib/foundation/index.js.map +1 -0
  787. package/src/lib/lifecycle.d.ts +24 -0
  788. package/src/lib/lifecycle.js +39 -0
  789. package/src/lib/lifecycle.js.map +1 -0
  790. package/src/lib/mst/common.d.ts +17 -0
  791. package/src/lib/mst/common.js +23 -0
  792. package/src/lib/mst/common.js.map +1 -0
  793. package/src/lib/mst/index.d.ts +19 -0
  794. package/src/lib/mst/index.js +20 -0
  795. package/src/lib/mst/index.js.map +1 -0
  796. package/src/lib/mst/json.d.ts +22 -0
  797. package/src/lib/mst/json.js +23 -0
  798. package/src/lib/mst/json.js.map +1 -0
  799. package/src/lib/mst/types.d.ts +20 -0
  800. package/src/lib/mst/types.js +18 -0
  801. package/src/lib/mst/types.js.map +1 -0
  802. package/src/lib/plugin-manager/billing-webhook-hooks.d.ts +77 -0
  803. package/src/lib/plugin-manager/billing-webhook-hooks.js +55 -0
  804. package/src/lib/plugin-manager/billing-webhook-hooks.js.map +1 -0
  805. package/src/lib/plugin-manager/commerce-zone-props.d.ts +172 -0
  806. package/src/lib/plugin-manager/commerce-zone-props.js +31 -0
  807. package/src/lib/plugin-manager/commerce-zone-props.js.map +1 -0
  808. package/src/lib/plugin-manager/custom-fields.d.ts +60 -0
  809. package/src/lib/plugin-manager/custom-fields.js +39 -0
  810. package/src/lib/plugin-manager/custom-fields.js.map +1 -0
  811. package/src/lib/plugin-manager/editor-sessions.d.ts +109 -0
  812. package/src/lib/plugin-manager/editor-sessions.js +137 -0
  813. package/src/lib/plugin-manager/editor-sessions.js.map +1 -0
  814. package/src/lib/plugin-manager/enabled-plugins.d.ts +438 -0
  815. package/src/lib/plugin-manager/enabled-plugins.js +403 -0
  816. package/src/lib/plugin-manager/enabled-plugins.js.map +1 -0
  817. package/src/lib/plugin-manager/feature-plugins.d.ts +1314 -0
  818. package/src/lib/plugin-manager/feature-plugins.js +609 -0
  819. package/src/lib/plugin-manager/feature-plugins.js.map +1 -0
  820. package/src/lib/plugin-manager/first-party-plugins.generated.d.ts +11 -0
  821. package/src/lib/plugin-manager/first-party-plugins.generated.js +149 -0
  822. package/src/lib/plugin-manager/first-party-plugins.generated.js.map +1 -0
  823. package/src/lib/plugin-manager/index.d.ts +42 -0
  824. package/src/lib/plugin-manager/index.js +46 -0
  825. package/src/lib/plugin-manager/index.js.map +1 -0
  826. package/src/lib/plugin-manager/install-presets.d.ts +93 -0
  827. package/src/lib/plugin-manager/install-presets.js +86 -0
  828. package/src/lib/plugin-manager/install-presets.js.map +1 -0
  829. package/src/lib/plugin-manager/media-delivery-provider.d.ts +124 -0
  830. package/src/lib/plugin-manager/media-delivery-provider.js +53 -0
  831. package/src/lib/plugin-manager/media-delivery-provider.js.map +1 -0
  832. package/src/lib/plugin-manager/order-fulfilment.d.ts +142 -0
  833. package/src/lib/plugin-manager/order-fulfilment.js +104 -0
  834. package/src/lib/plugin-manager/order-fulfilment.js.map +1 -0
  835. package/src/lib/plugin-manager/plugin-activity-actions.d.ts +122 -0
  836. package/src/lib/plugin-manager/plugin-activity-actions.js +140 -0
  837. package/src/lib/plugin-manager/plugin-activity-actions.js.map +1 -0
  838. package/src/lib/plugin-manager/plugin-bridge.d.ts +98 -0
  839. package/src/lib/plugin-manager/plugin-bridge.js +154 -0
  840. package/src/lib/plugin-manager/plugin-bridge.js.map +1 -0
  841. package/src/lib/plugin-manager/plugin-config.d.ts +148 -0
  842. package/src/lib/plugin-manager/plugin-config.js +228 -0
  843. package/src/lib/plugin-manager/plugin-config.js.map +1 -0
  844. package/src/lib/plugin-manager/plugin-console-crons.d.ts +139 -0
  845. package/src/lib/plugin-manager/plugin-console-crons.js +177 -0
  846. package/src/lib/plugin-manager/plugin-console-crons.js.map +1 -0
  847. package/src/lib/plugin-manager/plugin-contact-capture.d.ts +220 -0
  848. package/src/lib/plugin-manager/plugin-contact-capture.js +89 -0
  849. package/src/lib/plugin-manager/plugin-contact-capture.js.map +1 -0
  850. package/src/lib/plugin-manager/plugin-contributions.d.ts +244 -0
  851. package/src/lib/plugin-manager/plugin-contributions.js +283 -0
  852. package/src/lib/plugin-manager/plugin-contributions.js.map +1 -0
  853. package/src/lib/plugin-manager/plugin-entitlement-keys.d.ts +169 -0
  854. package/src/lib/plugin-manager/plugin-entitlement-keys.js +84 -0
  855. package/src/lib/plugin-manager/plugin-entitlement-keys.js.map +1 -0
  856. package/src/lib/plugin-manager/plugin-entitlements.d.ts +181 -0
  857. package/src/lib/plugin-manager/plugin-entitlements.js +188 -0
  858. package/src/lib/plugin-manager/plugin-entitlements.js.map +1 -0
  859. package/src/lib/plugin-manager/plugin-events.d.ts +145 -0
  860. package/src/lib/plugin-manager/plugin-events.js +79 -0
  861. package/src/lib/plugin-manager/plugin-events.js.map +1 -0
  862. package/src/lib/plugin-manager/plugin-figures.d.ts +251 -0
  863. package/src/lib/plugin-manager/plugin-figures.js +252 -0
  864. package/src/lib/plugin-manager/plugin-figures.js.map +1 -0
  865. package/src/lib/plugin-manager/plugin-host-collections.d.ts +146 -0
  866. package/src/lib/plugin-manager/plugin-host-collections.js +116 -0
  867. package/src/lib/plugin-manager/plugin-host-collections.js.map +1 -0
  868. package/src/lib/plugin-manager/plugin-jobs.d.ts +130 -0
  869. package/src/lib/plugin-manager/plugin-jobs.js +182 -0
  870. package/src/lib/plugin-manager/plugin-jobs.js.map +1 -0
  871. package/src/lib/plugin-manager/plugin-loader.d.ts +86 -0
  872. package/src/lib/plugin-manager/plugin-loader.js +223 -0
  873. package/src/lib/plugin-manager/plugin-loader.js.map +1 -0
  874. package/src/lib/plugin-manager/plugin-manager.d.ts +95 -0
  875. package/src/lib/plugin-manager/plugin-manager.js +343 -0
  876. package/src/lib/plugin-manager/plugin-manager.js.map +1 -0
  877. package/src/lib/plugin-manager/plugin-metered-lines.d.ts +97 -0
  878. package/src/lib/plugin-manager/plugin-metered-lines.js +123 -0
  879. package/src/lib/plugin-manager/plugin-metered-lines.js.map +1 -0
  880. package/src/lib/plugin-manager/plugin-org-erasure.d.ts +52 -0
  881. package/src/lib/plugin-manager/plugin-org-erasure.js +100 -0
  882. package/src/lib/plugin-manager/plugin-org-erasure.js.map +1 -0
  883. package/src/lib/plugin-manager/plugin-permissions.d.ts +69 -0
  884. package/src/lib/plugin-manager/plugin-permissions.js +77 -0
  885. package/src/lib/plugin-manager/plugin-permissions.js.map +1 -0
  886. package/src/lib/plugin-manager/plugin-person-erasure.d.ts +58 -0
  887. package/src/lib/plugin-manager/plugin-person-erasure.js +109 -0
  888. package/src/lib/plugin-manager/plugin-person-erasure.js.map +1 -0
  889. package/src/lib/plugin-manager/plugin-record-cards.d.ts +99 -0
  890. package/src/lib/plugin-manager/plugin-record-cards.js +59 -0
  891. package/src/lib/plugin-manager/plugin-record-cards.js.map +1 -0
  892. package/src/lib/plugin-manager/plugin-record-facts.d.ts +111 -0
  893. package/src/lib/plugin-manager/plugin-record-facts.js +51 -0
  894. package/src/lib/plugin-manager/plugin-record-facts.js.map +1 -0
  895. package/src/lib/plugin-manager/plugin-record-routes.d.ts +129 -0
  896. package/src/lib/plugin-manager/plugin-record-routes.js +93 -0
  897. package/src/lib/plugin-manager/plugin-record-routes.js.map +1 -0
  898. package/src/lib/plugin-manager/plugin-record-timeline.d.ts +147 -0
  899. package/src/lib/plugin-manager/plugin-record-timeline.js +39 -0
  900. package/src/lib/plugin-manager/plugin-record-timeline.js.map +1 -0
  901. package/src/lib/plugin-manager/plugin-resource-drafts.d.ts +137 -0
  902. package/src/lib/plugin-manager/plugin-resource-drafts.js +51 -0
  903. package/src/lib/plugin-manager/plugin-resource-drafts.js.map +1 -0
  904. package/src/lib/plugin-manager/plugin-services.d.ts +94 -0
  905. package/src/lib/plugin-manager/plugin-services.js +153 -0
  906. package/src/lib/plugin-manager/plugin-services.js.map +1 -0
  907. package/src/lib/plugin-manager/plugin-styles-ui.d.ts +71 -0
  908. package/src/lib/plugin-manager/plugin-styles-ui.js +80 -0
  909. package/src/lib/plugin-manager/plugin-styles-ui.js.map +1 -0
  910. package/src/lib/plugin-manager/plugin-styles.d.ts +176 -0
  911. package/src/lib/plugin-manager/plugin-styles.js +186 -0
  912. package/src/lib/plugin-manager/plugin-styles.js.map +1 -0
  913. package/src/lib/plugin-manager/plugin-subprocessors.d.ts +135 -0
  914. package/src/lib/plugin-manager/plugin-subprocessors.js +129 -0
  915. package/src/lib/plugin-manager/plugin-subprocessors.js.map +1 -0
  916. package/src/lib/plugin-manager/plugin-tax-profile.d.ts +84 -0
  917. package/src/lib/plugin-manager/plugin-tax-profile.js +39 -0
  918. package/src/lib/plugin-manager/plugin-tax-profile.js.map +1 -0
  919. package/src/lib/plugin-manager/plugin-user-erasure.d.ts +53 -0
  920. package/src/lib/plugin-manager/plugin-user-erasure.js +84 -0
  921. package/src/lib/plugin-manager/plugin-user-erasure.js.map +1 -0
  922. package/src/lib/plugin-manager/plugin-zones.d.ts +121 -0
  923. package/src/lib/plugin-manager/plugin-zones.js +74 -0
  924. package/src/lib/plugin-manager/plugin-zones.js.map +1 -0
  925. package/src/lib/plugin-manager/realm-plugins.d.ts +112 -0
  926. package/src/lib/plugin-manager/realm-plugins.js +196 -0
  927. package/src/lib/plugin-manager/realm-plugins.js.map +1 -0
  928. package/src/lib/plugin-manager/realm-server.d.ts +54 -0
  929. package/src/lib/plugin-manager/realm-server.js +88 -0
  930. package/src/lib/plugin-manager/realm-server.js.map +1 -0
  931. package/src/lib/plugin-manager/record-zone-props.d.ts +126 -0
  932. package/src/lib/plugin-manager/record-zone-props.js +31 -0
  933. package/src/lib/plugin-manager/record-zone-props.js.map +1 -0
  934. package/src/lib/plugin-manager/site-page-hooks.d.ts +102 -0
  935. package/src/lib/plugin-manager/site-page-hooks.js +114 -0
  936. package/src/lib/plugin-manager/site-page-hooks.js.map +1 -0
  937. package/src/lib/plugin-manager/site-runtime.d.ts +57 -0
  938. package/src/lib/plugin-manager/site-runtime.js +25 -0
  939. package/src/lib/plugin-manager/site-runtime.js.map +1 -0
  940. package/src/lib/plugin-manager/usage-alert-contributors.d.ts +115 -0
  941. package/src/lib/plugin-manager/usage-alert-contributors.js +106 -0
  942. package/src/lib/plugin-manager/usage-alert-contributors.js.map +1 -0
  943. package/src/lib/types/ast.d.ts +199 -0
  944. package/src/lib/types/ast.js +20 -0
  945. package/src/lib/types/ast.js.map +1 -0
  946. package/src/lib/types/index.d.ts +20 -0
  947. package/src/lib/types/index.js +21 -0
  948. package/src/lib/types/index.js.map +1 -0
  949. package/src/lib/types/nodes.d.ts +608 -0
  950. package/src/lib/types/nodes.js +28 -0
  951. package/src/lib/types/nodes.js.map +1 -0
  952. package/src/lib/types/routing.d.ts +17 -0
  953. package/src/lib/types/routing.js +18 -0
  954. package/src/lib/types/routing.js.map +1 -0
  955. package/src/lib/types/screen.d.ts +23 -0
  956. package/src/lib/types/screen.js +18 -0
  957. package/src/lib/types/screen.js.map +1 -0
  958. package/src/lib/utils.d.ts +25 -0
  959. package/src/lib/utils.js +42 -0
  960. package/src/lib/utils.js.map +1 -0
  961. package/src/server.d.ts +37 -0
  962. package/src/server.js +55 -0
  963. package/src/server.js.map +1 -0
@@ -0,0 +1,1326 @@
1
+ /**
2
+ * @license
3
+ * Copyright 2026 Aglyn LLC
4
+ *
5
+ * Licensed under the Apache License, Version 2.0 (the "License");
6
+ * you may not use this file except in compliance with the License.
7
+ * You may obtain a copy of the License at
8
+ *
9
+ * http://www.apache.org/licenses/LICENSE-2.0
10
+ *
11
+ * Unless required by applicable law or agreed to in writing, software
12
+ * distributed under the License is distributed on an "AS IS" BASIS,
13
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ * See the License for the specific language governing permissions and
15
+ * limitations under the License.
16
+ */
17
+ import type { HttpStatusCode } from '@aglyn/shared-data-enums';
18
+ import type { HostTheme } from '@aglyn/shared-data-types';
19
+ import type { ITimestamp } from '@aglyn/shared-util-timestamp';
20
+ import type { AglynNodeSchema, FieldComponentType, NodeId } from './components.types';
21
+ import type { MediaVideoMetadata } from '../../app-utils/media-metadata';
22
+ import type { MediaVideoRendition } from '../../app-utils/media-ref';
23
+ /**
24
+ * Platform-side definitions: documents, hosts, screens, media, users.
25
+ * The ORG BILLING family (`AglynOrgBilling` and the Org* plan/entitlement
26
+ * vocabulary) lives in `org-billing.types.ts` — see the docs-site glossary
27
+ * for the org/workspace/tenant/host naming convention. (This file was
28
+ * `workspace.types.ts`; renamed in AGL-443 because nothing in it is the
29
+ * workspace/org entity.)
30
+ */
31
+ export interface AglynDocument {
32
+ [field: string]: any;
33
+ }
34
+ export declare enum HostScreenStatus {
35
+ UNPUBLISHED = 2,
36
+ PUBLISHED = 4,
37
+ SCHEDULED_TO_PUBLISH_UNPUBLISHED = 10,
38
+ SCHEDULED_TO_UNPUBLISH_PUBLISHED = 20,
39
+ SCHEDULED_TO_UPDATE_PUBLISHED = 36,
40
+ SCHEDULED_TO_REVERT_UPDATE_PUBLISHED = 68
41
+ }
42
+ export declare enum HostScreenVisibility {
43
+ PUBLIC = 2,
44
+ UNLISTED = 6,
45
+ PRIVATE = 8,
46
+ PASSWORD = 24,
47
+ AUTHENTICATED = 40,
48
+ AUTHORIZED = 104
49
+ }
50
+ export declare enum HostViewType {
51
+ SCREEN = 1,
52
+ LAYOUT = 2,
53
+ /** A besigner-designed email document (screen with kind 'email', AGL-395). */
54
+ EMAIL = 4
55
+ }
56
+ export declare enum HostViewFormat {
57
+ NORMALIZED = 1,
58
+ DENORMALIZED = 2
59
+ }
60
+ export declare enum HostEntityType {
61
+ ORGANIZATION = 1,
62
+ PERSON = 2
63
+ }
64
+ export declare enum HostRedirectParams {
65
+ IGNORE = 0,
66
+ FORWARD = 1,
67
+ MATCH = 2
68
+ }
69
+ /** Org document id (`orgs/{orgId}`). Formerly TenantUid (AGL-444). */
70
+ export type OrgUid = string;
71
+ export type UserUid = string;
72
+ export interface AglynUser extends AglynDocument {
73
+ $id: UserUid;
74
+ admin?: boolean;
75
+ email?: string;
76
+ }
77
+ /**
78
+ * Site-wide announcement bar config on the host doc (AGL-195). Text may
79
+ * contain binding tokens; the tenant render resolves them server-side.
80
+ */
81
+ export interface HostAnnouncementBar {
82
+ enabled?: boolean;
83
+ text?: string;
84
+ /** Optional link the whole bar navigates to. */
85
+ href?: string;
86
+ backgroundColor?: string;
87
+ textColor?: string;
88
+ /** Visitors may hide the bar; hidden state re-arms when text changes. */
89
+ dismissible?: boolean;
90
+ }
91
+ /**
92
+ * Promotional popup config on the host doc (AGL-196); one per host,
93
+ * marketingOverlays-gated. Body text may contain binding tokens; the
94
+ * tenant render resolves them server-side.
95
+ */
96
+ export interface HostPopup {
97
+ enabled?: boolean;
98
+ headline?: string;
99
+ body?: string;
100
+ /** Media-library image URL shown above the copy. */
101
+ imageUrl?: string;
102
+ /**
103
+ * Alt text for {@link imageUrl} (AGL-1896). Defaults from the chosen DAM
104
+ * asset's own alt when the author picks through "Browse media"; empty
105
+ * still renders `alt=""`, which is correct for a decorative banner.
106
+ */
107
+ imageAlt?: string;
108
+ ctaLabel?: string;
109
+ ctaHref?: string;
110
+ /** Render an email-capture field posting into the forms pipeline. */
111
+ collectEmail?: boolean;
112
+ /** How the popup opens. */
113
+ trigger?: 'delay' | 'scroll' | 'exit';
114
+ /** Seconds (delay trigger) or percent 0-100 (scroll trigger). */
115
+ triggerValue?: number;
116
+ /**
117
+ * Re-show after this many days once dismissed (localStorage).
118
+ *
119
+ * Ignored when {@link oncePerSession} is set — the two are alternative
120
+ * answers to the same question, and honouring both would mean a popup
121
+ * suppressed for the session AND for seven days after it.
122
+ */
123
+ frequencyDays?: number;
124
+ /**
125
+ * Show at most once per browser SESSION (AGL-2174).
126
+ *
127
+ * `/product/marketing` sells "per-session frequency caps" in as many
128
+ * words, and the only cap the product had was day-based — a visitor who
129
+ * dismissed a popup did not see it again for a week, which is a
130
+ * different promise. Backed by `sessionStorage`, which is exactly the
131
+ * lifetime the copy describes: it clears when the tab closes.
132
+ */
133
+ oncePerSession?: boolean;
134
+ /** Optional showing window (epoch millis; simple to serialize). */
135
+ startAtMs?: number;
136
+ endAtMs?: number;
137
+ }
138
+ export type ProjectUid = string;
139
+ export type ProjectNumber = number;
140
+ export type HostUid = string;
141
+ export type HostPath = string;
142
+ export type HostMediaUid = string;
143
+ /**
144
+ * Persisted MUI theme customization for a host's published site.
145
+ * Canonical shape lives in `@aglyn/shared-data-types` so UI-scope libs can
146
+ * consume it without depending on this framework lib.
147
+ */
148
+ export type AglynHostTheme = HostTheme;
149
+ /** Host-scoped document */
150
+ export interface AglynHost extends AglynDocument {
151
+ $id: HostUid;
152
+ /** Owning org (AGL-233); mirrored into `hostIndex/{hostId}`. */
153
+ orgId?: OrgUid;
154
+ /** Membership projection from the org (AGL-233): uid → role tier. */
155
+ memberRoles?: Record<UserUid, string>;
156
+ subdomain?: string;
157
+ cname?: string;
158
+ /** Site-wide announcement bar (AGL-195); marketingOverlays-gated. */
159
+ announcementBar?: HostAnnouncementBar;
160
+ /** Promotional popup (AGL-196); marketingOverlays-gated. */
161
+ popup?: HostPopup;
162
+ displayName?: string;
163
+ /**
164
+ * Site logo URL (AGL-594): the host's own brand mark, shown by the
165
+ * tenant's navigation loader (and future chrome). Distinct from
166
+ * `seo.entity.logo`, which is publisher-semantic JSON-LD.
167
+ */
168
+ logoUrl?: string;
169
+ seo?: {
170
+ title?: string;
171
+ description?: string;
172
+ separator?: string;
173
+ favicon?: string;
174
+ /**
175
+ * The square mark a visitor installs to their home screen — the `icons`
176
+ * entry of `/manifest.webmanifest`.
177
+ *
178
+ * Distinct from both of its neighbours, and the distinction is what the
179
+ * field exists for. {@link favicon} is drawn at 16–32px in a tab, so it is
180
+ * a glyph rather than artwork. `logoUrl` is the site's LOCKUP — a wordmark
181
+ * on most sites, which is a wide rectangle, and the manifest fell back to
182
+ * it for want of anything else: an installer that trusted a declared size
183
+ * painted a stretched or letterboxed tile on somebody's home screen.
184
+ *
185
+ * A `media:` reference or a plain URL, absolutized before it is written
186
+ * into the manifest because nothing fetches an install icon from the page
187
+ * that linked it. Unset falls back to `logoUrl`, which is what every site
188
+ * installs with today; a site with neither gets no `icons` array at all,
189
+ * so the browser uses a screenshot rather than a broken tile.
190
+ */
191
+ appIcon?: string;
192
+ /**
193
+ * Site-wide default social card image (AGL-1337) — used by every page
194
+ * that sets none of its own. A `media:` reference (what the picker
195
+ * writes) or a raw URL; resolved and made absolute by
196
+ * `resolveSocialImage`, never emitted as stored.
197
+ *
198
+ * `''` is a CLEARED field, written directly to Firestore by the picker
199
+ * card rather than through the attributes form stack, which maps `''` to
200
+ * `undefined` and would leave a default nobody could remove (AGL-1191).
201
+ */
202
+ image?: string;
203
+ /**
204
+ * Copied from the media record at pick time, and the FALLBACK rather than
205
+ * the answer: a replace rewrites the asset's pair and cannot reach this
206
+ * copy, so the head prefers what the asset's document records when the
207
+ * page is composed (AGL-2850). See `resolveSocialImage`.
208
+ */
209
+ imageWidth?: number;
210
+ imageHeight?: number;
211
+ /**
212
+ * `og:image:alt` (AGL-2417) — what the card SHOWS, for the screen
213
+ * readers that announce a social preview. Defaulted from the chosen DAM
214
+ * asset's own alt at pick time and editable per surface; stored beside
215
+ * the reference so `resolveSocialImage` emits the description belonging
216
+ * to the image that actually won the precedence list.
217
+ *
218
+ * Blank is never stored: `og:image:alt=""` asserts the image conveys
219
+ * nothing, which is not what an undescribed card means.
220
+ */
221
+ imageAlt?: string;
222
+ /**
223
+ * Site-wide "discourage search engines" (AGL-1263): `robots.txt` refuses
224
+ * everything, the sitemap goes empty, and every page carries `noindex`.
225
+ * The staged-launch control — a site that is live but not ready to be
226
+ * found, which until now could only be approximated by setting each
227
+ * screen to {@link HostScreenVisibility.UNLISTED} one at a time.
228
+ *
229
+ * Absent means INDEX, and must keep meaning that. Reading a missing field
230
+ * as "hide" would let a schema slip de-index every customer at once.
231
+ */
232
+ discourageSearchEngines?: boolean;
233
+ entity?: {
234
+ type?: HostEntityType;
235
+ name?: string;
236
+ logo?: string;
237
+ /**
238
+ * What the publisher IS, in a sentence — `Organization.description`
239
+ * (AGL-2716).
240
+ *
241
+ * Distinct from {@link AglynHost.seo.description}, which is the meta
242
+ * description of the site's home page: one describes a business, the
243
+ * other describes a document, and a site whose home page is a product
244
+ * launch should not be telling an AI assistant that the company is a
245
+ * product launch. Unset falls back to the site description, because a
246
+ * fallback that is approximately right beats an entity with no
247
+ * description at all — which is what every site published before this
248
+ * field existed.
249
+ */
250
+ description?: string;
251
+ /**
252
+ * The publisher's own canonical address, when it is not this site —
253
+ * a brand site for a company whose main presence is elsewhere. Unset
254
+ * means this site's origin, which is the common case.
255
+ */
256
+ url?: string;
257
+ /**
258
+ * Profiles that identify the SAME entity — `schema.org/sameAs`. The
259
+ * company's LinkedIn, its Crunchbase entry, its Wikipedia article. Not
260
+ * a link list: a page that merely mentions the entity is not the
261
+ * entity, and listing one teaches a consumer the wrong identity.
262
+ */
263
+ sameAs?: string[];
264
+ /**
265
+ * How to reach a person — `Organization.contactPoint`.
266
+ *
267
+ * Split into fields rather than stored as a `contactPoint` object
268
+ * because the console collects them as three form controls, and a
269
+ * nested object in a settings document is a shape a partial write can
270
+ * blank. Assembled at serialization; see `siteEntityJsonLd`.
271
+ */
272
+ email?: string;
273
+ telephone?: string;
274
+ /**
275
+ * Which kind of enquiry that contact answers — `customer support`,
276
+ * `sales`, `technical support`. Free text, because `schema.org` defines
277
+ * the property as text rather than an enumeration.
278
+ */
279
+ contactType?: string;
280
+ /**
281
+ * Postal address — `Organization.address`, a `PostalAddress`.
282
+ *
283
+ * Every field optional and every field omitted when blank: a partial
284
+ * address is still a real answer to "where are they", while a
285
+ * `PostalAddress` carrying empty strings is a claim that the street is
286
+ * the empty string.
287
+ */
288
+ address?: {
289
+ streetAddress?: string;
290
+ addressLocality?: string;
291
+ addressRegion?: string;
292
+ postalCode?: string;
293
+ /** ISO 3166-1 alpha-2, or a country name. */
294
+ addressCountry?: string;
295
+ };
296
+ };
297
+ /**
298
+ * Guidance for AI agents, published in `/llms.txt` (AGL-2716).
299
+ *
300
+ * Its own key rather than a field on `entity`, because it is about the
301
+ * SITE's usefulness rather than about who publishes it — and because the
302
+ * two are edited by different people at different times.
303
+ */
304
+ agent?: {
305
+ /**
306
+ * When an agent should reach for this site: the jobs it is the right
307
+ * source for, in the author's own words.
308
+ *
309
+ * Absent is not a gap. `buildLlmsTxt` derives a when-to-use section
310
+ * from what the site demonstrably publishes, so a site whose author
311
+ * writes nothing here still ships checkable guidance; this is the place
312
+ * to say the things that cannot be derived.
313
+ */
314
+ whenToUse?: string;
315
+ /** How an agent should call the site — endpoints, etiquette, limits. */
316
+ howToUse?: string;
317
+ };
318
+ };
319
+ /**
320
+ * Customer-configured third-party analytics (AGL-138/661). Long written by
321
+ * the console and read by the tenant through `any` casts; declared as of
322
+ * AGL-1498 so the write-deny guard sees it through the type rather than
323
+ * not at all. The id is format-checked (`GA_MEASUREMENT_ID_PATTERN`)
324
+ * before it reaches the inline script, and its LOADING is consent-gated
325
+ * by `visitor-consent.ts` — see `consent` below.
326
+ */
327
+ analytics?: {
328
+ gaMeasurementId?: string;
329
+ /**
330
+ * Google Tag Manager container (AGL-2486), `GTM-XXXXXXX`.
331
+ *
332
+ * Declared here for the reason the `consent` comment below spells out at
333
+ * length: a field the console persists and the tenant reads, but that no
334
+ * type knows about, is how a whole-object write silently drops a sibling.
335
+ *
336
+ * Format-checked by `GTM_CONTAINER_ID_PATTERN` before it reaches an
337
+ * inline script, and consent-gated exactly as `gaMeasurementId` is — a
338
+ * container counts as a gated feature in `consentGatedCategories`, so a
339
+ * site running only a container still gets the banner. It has to: a
340
+ * container is the likeliest thing on a page to carry advertising tags,
341
+ * and advertising is opt-in worldwide.
342
+ */
343
+ gtmContainerId?: string;
344
+ /**
345
+ * Advertising pixels, vendor id → that vendor's account id (AGL-2486).
346
+ *
347
+ * Declared here for exactly the reason the `gtmContainerId` comment above
348
+ * gives, and it is the field that proved the point: the console persisted
349
+ * it and the tenant read it through `advertising-tags.ts`, while no type
350
+ * knew about it. `aglyn-marketing` carries a live Meta pixel in it today,
351
+ * and a whole-object write to `analytics` would have dropped it silently.
352
+ *
353
+ * The vendor descriptors — which script each id loads, and therefore which
354
+ * hosts the CSP has to admit — live in `advertising-tags.ts`. An id here
355
+ * for a vendor with no descriptor loads nothing.
356
+ */
357
+ adTags?: Record<string, string> | null;
358
+ };
359
+ /**
360
+ * Visitor consent tool (AGL-1498). The tool is ACTIVE when this is absent
361
+ * — but only ever on sites that use a consent-gated feature (today:
362
+ * `analytics.gaMeasurementId`); with none configured no consent UI exists
363
+ * and this map decides nothing. `disabled: true` is the host's opt-out
364
+ * (they run their own consent solution, and gated features load ungated).
365
+ * `mode` is the host's posture: `'geo'` (geo-conditional: implied consent
366
+ * with an always-available opt-out in opt-out regions, a prior-consent
367
+ * banner in EU/EEA/UK and unknown regions) or `'strict'` (the banner for
368
+ * everyone). Absent `mode` behaves as `'geo'`. Absent-means-active is the
369
+ * only safe default for the tool itself: a schema slip must fail toward
370
+ * asking, never toward silently tracking. See `visitor-consent.ts`.
371
+ *
372
+ * `advertising` (AGL-1649) is the host's opt-in to ASKING a second
373
+ * question. It was persisted by the console and read by the tenant for four
374
+ * days without being declared here — the same undeclared-field shape the
375
+ * `analytics` comment above says was fixed for AGL-1498, on the very key
376
+ * this issue exists to deliver. The cost is not typos: `consent` is an
377
+ * inline object type, so a whole-object write built against a type missing
378
+ * the key drops a host's advertising opt-in and TypeScript agrees with the
379
+ * drop. `consent-host-schema-coverage.spec.ts` now fails the build on any
380
+ * `consent.*` key that is written or read but not declared.
381
+ */
382
+ consent?: {
383
+ disabled?: boolean;
384
+ mode?: 'geo' | 'strict';
385
+ /**
386
+ * Host opt-in to asking visitors about advertising storage (AGL-1649).
387
+ * PERSISTED NAME; absent or `false` — the state of every site that
388
+ * exists — means the visitor is asked about analytics only and
389
+ * `ad_storage`, `ad_user_data` and `ad_personalization` stay denied
390
+ * where AGL-1622 put them.
391
+ *
392
+ * `true` does not grant anything by itself — it makes the category
393
+ * REACHABLE. It adds a second, separate question to the banner and the
394
+ * privacy-choices panel, and where advertising then starts follows the
395
+ * visitor's region: asked-first in the prior-consent set (the EU 27, the
396
+ * EEA/EFTA three, the UK, Gibraltar, the outermost regions, and any
397
+ * visitor whose region cannot be determined), running from the first
398
+ * visit everywhere else on the same implied basis analytics uses. A
399
+ * refusal — declined, opted out, or GPC — denies it everywhere.
400
+ *
401
+ * See `advertisingGrantedByStatus`; this sentence and that function are
402
+ * locked together by `consent-advertising-copy-drift.spec.ts`, and the
403
+ * published Cookie Policy moves before either of them.
404
+ *
405
+ * Read only through `hostAsksAboutAdvertising`, which also requires a
406
+ * configured measurement id and tests `=== true`, so a truthy string out
407
+ * of a hand-edited document cannot turn a consent category on.
408
+ */
409
+ advertising?: boolean;
410
+ };
411
+ screens?: Record<ScreenUid, ScreenSlug>;
412
+ /** Screen rendered (noindex) for unmatched paths (AGL-87). */
413
+ notFoundScreenId?: ScreenUid;
414
+ /**
415
+ * Designable error screens by status (AGL-131). `notFound` supersedes
416
+ * `notFoundScreenId` (kept in sync for back-compat).
417
+ */
418
+ errorScreens?: HostErrorScreens;
419
+ /**
420
+ * Designable membership screens (AGL-553): which besigner-built screen
421
+ * renders at `/signin`, `/signup` and `/recover`. An empty slot falls back
422
+ * to the built-in form.
423
+ *
424
+ * ADMIN TIER, not authoring — the one thing that separates it from its
425
+ * sibling `errorScreens`, which is a binding to screens the editor already
426
+ * controls and serves only their own visitors. These three addresses are
427
+ * where a site's members type their password, so the field decides what a
428
+ * sign-in page IS. `enabledPlugins` is denied to an editor one tier down
429
+ * for deciding merely whether those addresses EXIST; the field that
430
+ * decides what they render cannot sit in a weaker tier than the field that
431
+ * opens them.
432
+ *
433
+ * It is also a live-content surface that does not go through the routing
434
+ * map: the tenant loader resolves the slot straight to a screen document,
435
+ * and `screenClaimsToBeAPage` asks only whether that screen is deleted. So
436
+ * `screens` being frozen for an `author` does not reach it, and an author
437
+ * — the role sold as "edit content but not publish" — could otherwise put
438
+ * a screen on the site's sign-in address without publishing anything.
439
+ */
440
+ authScreens?: HostAuthScreens;
441
+ /** Maintenance mode (AGL-131): every path renders the 503 screen. */
442
+ maintenance?: boolean;
443
+ /**
444
+ * STAFF host takedown (AGL-1501) — the host scope of the panic button,
445
+ * for an infected or abusive site. The same field family as the org's
446
+ * AGL-202 suspension: while `suspendedAt` is set (and `suspendedUntilMs`
447
+ * has not passed) the site serves the lockdown notice instead of content.
448
+ * Deliberately separate from `maintenance` above, which is the CUSTOMER'S
449
+ * own switch — a takedown the site's editors could clear from the client
450
+ * SDK would not be a takedown, so all four keys are client-denied in the
451
+ * rules and written only by /api/admin/lockdown. `suspendedMessage` is
452
+ * visitor-facing; timestamps are plain epoch ms (converter-safe).
453
+ * Normalized by `app-utils/lockdown.ts`.
454
+ */
455
+ suspendedAt?: number;
456
+ suspendedReasonCode?: string;
457
+ suspendedMessage?: string;
458
+ suspendedUntilMs?: number;
459
+ /**
460
+ * Per-site plugin deny-list (AGL-1014): plugin ids the org has enabled
461
+ * but this site switches OFF. Subtracted from the org's resolved set by
462
+ * `resolveHostEnabledPlugins` — the host can only ever narrow, never
463
+ * widen, and an absent field means every org-enabled plugin runs here.
464
+ * Writable by site ADMINS only (rules). The base component library's id is
465
+ * ignored; a plugin on for every workspace (AI) is switched off for this
466
+ * site like any other (AGL-3028).
467
+ */
468
+ disabledPlugins?: string[];
469
+ /**
470
+ * Per-site plugin OPT-IN list (AGL-2486): the `defaultOffPerSite` plugin
471
+ * ids this site has explicitly turned on. Today that is `accounts` — the
472
+ * user-accounts capability behind `/signin`, `/signup` and `/recover`.
473
+ *
474
+ * The companion of `disabledPlugins` above, not a duplicate of it, because
475
+ * a deny-list cannot express "off until asked": absent means ON there, and
476
+ * every published site was therefore serving member pages whether or not
477
+ * it had members. This field is what an absent value means OFF for, and it
478
+ * is read ONLY for ids the catalog marks default-off, so it can never
479
+ * widen a site past its org. Writable by site ADMINS only (rules).
480
+ */
481
+ enabledPlugins?: string[];
482
+ /**
483
+ * External image hosts this site's owner has approved (AGL-1152).
484
+ *
485
+ * The tenant's `img-src` is built from this list, per site, in the
486
+ * middleware — which is the only layer that runs ahead of the ISR cache, and
487
+ * therefore the only place a per-site policy can be set at all.
488
+ *
489
+ * ## Why the list exists rather than a platform-wide allowlist
490
+ *
491
+ * AGL-1726 refused to enforce `img-src` because hotlinking an external image
492
+ * is an ADVERTISED authoring feature (`image.tsx` tells authors to paste a
493
+ * URL), so a first-party-only policy would silently revoke a documented
494
+ * capability from every published site at once. Enforcement against a list
495
+ * the OWNER chose revokes nothing, and the console warns at authoring time
496
+ * so a refusal is never the first anyone hears of it.
497
+ *
498
+ * It is also what gives that issue's condition 6 — "a rollback that does not
499
+ * need a deploy" — an answer: this is host data, so widening or emptying it
500
+ * propagates within the verdict TTL with no Vercel build in the path.
501
+ *
502
+ * ⛔ NOT a place to put `firebasestorage.googleapis.com`. That host is PINNED
503
+ * in `security-origins.js` and deliberately not owner-removable: orgs without
504
+ * the paid `mediaCdn` entitlement store absolute download URLs, so an owner
505
+ * who deleted it would blank their own images (AGL-1726 condition 5).
506
+ *
507
+ * Stored as bare hostnames (`cdn.example.com`, or one leading `*.` label).
508
+ * Anything with a scheme, port, path or separator is REFUSED at the parse
509
+ * rather than repaired — `img-src` sources are space-delimited and
510
+ * directives `;`-delimited, so both are injection points. Writable by site
511
+ * ADMINS only (rules).
512
+ */
513
+ approvedImageHosts?: string[];
514
+ /** Site languages (AGL-164), e.g. ['en', 'es']; first is the default
515
+ * unless `defaultLocale` says otherwise. */
516
+ locales?: string[];
517
+ defaultLocale?: string;
518
+ /** Directory of shared layouts by display name (mirrors `screens`). */
519
+ layouts?: Record<LayoutUid, string>;
520
+ theme?: AglynHostTheme;
521
+ redirects?: Record<RedirectUid, true>;
522
+ projectId?: ProjectUid;
523
+ projectNumber?: ProjectNumber;
524
+ }
525
+ /**
526
+ * Host-document fields an editor may legitimately write, each with the reason
527
+ * (AGL-1361). Everything else must be denied in the rules' host key diff.
528
+ *
529
+ * `host-write-deny-coverage.spec.ts` fails the build for any field of this
530
+ * document that is in neither list, so "I forgot" is not a reachable state —
531
+ * the answer that costs nothing is always to deny. The reason strings are the
532
+ * point: they record that somebody decided, rather than that somebody did not
533
+ * notice. AGL-1364 is what this catches, found while writing it.
534
+ *
535
+ * The bar for landing here: could a client rewrite change what the platform
536
+ * DECIDES — an entitlement, a price, where a request routes, who may read? If
537
+ * so it belongs in the rules, whatever the console does today.
538
+ */
539
+ export declare const HOST_CLIENT_WRITABLE_FIELDS: Readonly<Record<string, string>>;
540
+ /**
541
+ * Host-document keys that never reach Firestore, so the rules have no opinion.
542
+ */
543
+ export declare const HOST_UNPERSISTED_FIELDS: Readonly<Record<string, string>>;
544
+ /** Error-screen bindings by HTTP-ish status (AGL-131). */
545
+ export interface HostErrorScreens {
546
+ notFound?: ScreenUid;
547
+ unauthorized?: ScreenUid;
548
+ forbidden?: ScreenUid;
549
+ unavailable?: ScreenUid;
550
+ }
551
+ /**
552
+ * The membership screen slots (AGL-553), keyed as the console card and the
553
+ * tenant loader spell them. The names carry the `ScreenId` suffix because
554
+ * that is how they are persisted; the console writes them as dotted field
555
+ * paths (`authScreens.signinScreenId`).
556
+ */
557
+ export interface HostAuthScreens {
558
+ signinScreenId?: ScreenUid;
559
+ signupScreenId?: ScreenUid;
560
+ recoveryScreenId?: ScreenUid;
561
+ }
562
+ /**
563
+ * The error slots, as a value (AGL-2092).
564
+ *
565
+ * The console card enumerated these separately and so did nothing else, which
566
+ * was fine while the list was only a list. It stopped being only a list when
567
+ * `kind: 'error'` made an assigned screen stop counting against
568
+ * `screensPerHost`: the number of slots is now the BOUND on how many screens a
569
+ * host can take off its plan that way, so the bound and the pickers have to be
570
+ * the same four things or the exemption is unbounded in one of them.
571
+ *
572
+ * `ERROR_SCREEN_MAX_PER_HOST` is `.length` of this, deliberately — adding a
573
+ * fifth status here widens the exemption to five, which is correct and is the
574
+ * only way it should ever widen.
575
+ */
576
+ export declare const HOST_ERROR_SCREEN_SLOTS: readonly ["notFound", "unauthorized", "forbidden", "unavailable"];
577
+ export type HostErrorScreenSlot = (typeof HOST_ERROR_SCREEN_SLOTS)[number];
578
+ export type ScreenUid = string;
579
+ export type ScreenSlug = string;
580
+ export type VersionUid = string;
581
+ export type LayoutUid = string;
582
+ /**
583
+ * Who may see an org-owned resource (AGL-1037): `'org'` is every site in
584
+ * the org, `host:{hostId}` names one. Lives here rather than beside its
585
+ * helpers in `app-utils/scope-tokens` because foundation cannot import
586
+ * app-utils; that module re-exports this type along with the helpers.
587
+ */
588
+ export type ScopeToken = 'org' | `host:${string}`;
589
+ /**
590
+ * Uploaded media metadata (AGL-72): the binary lives in Firebase Storage at
591
+ * `hosts/{hostId}/media/{mediaId}`; this doc mirrors it in Firestore at the
592
+ * same logical path so the library can list without Storage list calls.
593
+ */
594
+ export interface AglynHostMedia {
595
+ $id: HostMediaUid;
596
+ fileName?: string;
597
+ contentType?: string;
598
+ sizeBytes?: number;
599
+ /** Download URL captured at upload time; nodes reference this directly. */
600
+ url?: string;
601
+ /**
602
+ * Folder doc id in `hosts/{hostId}/mediaFolders` (AGL-171); null/absent
603
+ * = root. Replaces the legacy free-text `folder` string below.
604
+ */
605
+ folderId?: string | null;
606
+ /** Legacy AGL-124 free-text folder; read as fallback until migrated. */
607
+ folder?: string;
608
+ tags?: string[];
609
+ alt?: string;
610
+ description?: string;
611
+ /** Auto-captured at upload (AGL-173); best-effort for images only. */
612
+ width?: number;
613
+ height?: number;
614
+ uploadedBy?: string;
615
+ /**
616
+ * CDN delivery (AGL-175 / AGL-829): the stable, mediaId-keyed path
617
+ * (`/api/media/cdn/{scope}/{mediaId}`) served by both apps — location- and
618
+ * replace-independent (references never break; the route revalidates via
619
+ * the `contentHash` ETag). The same route also serves an immutable
620
+ * `…/{mediaId}/{hash}` form. `variants` are the WebP widths from upload.
621
+ */
622
+ cdnPath?: string;
623
+ contentHash?: string;
624
+ /**
625
+ * The FULL 64-hex sha256 of the served bytes (AGL-1614), written only by
626
+ * the routes that hash the bytes server-side. Additive beside
627
+ * {@link contentHash}, which is unchanged and stays the ETag and the
628
+ * immutable-URL segment.
629
+ *
630
+ * The distinction is load-bearing rather than tidy. `contentHash` is a
631
+ * 16-hex (64-bit) TRUNCATION of one of TWO digests — sha256 on
632
+ * `/api/media/upload` and `/api/media/replace`, GCS's md5 on
633
+ * `/api/media/upload-url` — which is fine for a cache validator (opaque,
634
+ * per-URL, self-consistent) and weak for anything that has to be a
635
+ * SECURITY key. Two md5 files with the same digest are hours of laptop
636
+ * compute to construct, and a truncation to 64 bits inherits that
637
+ * immediately; a quarantine keyed on such a value can be made to refuse an
638
+ * innocent asset. `contentSha256` has neither property.
639
+ *
640
+ * Absent, not null, when the server never held the bytes: the signed-upload
641
+ * route streams client → bucket and only downloads them back for an SVG
642
+ * sanitization pass, so that is the one case there where it is written.
643
+ * Absent means "no strong key for these bytes", and every consumer already
644
+ * degrades to `contentHash` and then to the per-asset key.
645
+ */
646
+ contentSha256?: string;
647
+ variants?: number[];
648
+ /**
649
+ * Why an eligible asset has no {@link variants}, when generation was
650
+ * attempted and did not complete (AGL-1468).
651
+ *
652
+ * Written by every upload route and by `/api/media/replace`, and declared
653
+ * here late: it has been on production documents since AGL-1468 and was
654
+ * missing from this interface, so every reader either cast or guessed.
655
+ * Absent is the common, correct case — an SVG, a document, a source
656
+ * already narrower than 320px — and must never look like a fault.
657
+ */
658
+ variantsError?: string;
659
+ /**
660
+ * The Cloud Storage object path (`{hosts|orgs}/{id}/media/{folders…}/{id}`).
661
+ * Written at upload, rewritten by a folder move, and read back by
662
+ * `serveMediaCdn` — which honors it ONLY inside this scope's media prefix,
663
+ * because it is client-influenced data on an admin-SDK bucket read
664
+ * (AGL-1881). Legacy assets have none and fall back to the flat layout.
665
+ */
666
+ storagePath?: string;
667
+ /** Constructs `sanitizeSvgBuffer` removed (AGL-1474). Absent when clean. */
668
+ svgSanitized?: string[];
669
+ /** Uid of whoever last replaced the bytes (`/api/media/replace`). */
670
+ replacedBy?: string;
671
+ /**
672
+ * What the uploader's browser measured about a VIDEO (AGL-2742).
673
+ *
674
+ * Client-reported and bounded by `normalizeVideoMetadata` before it lands,
675
+ * which is why it does not widen {@link width}/{@link height}: those are
676
+ * read from the bytes by the server and carry a stronger claim. A reader
677
+ * that folds the two together loses the ability to tell which it has.
678
+ *
679
+ * All three numbers or none — a `VideoObject` emitting a `duration` with
680
+ * no `width` is worse than one emitting neither.
681
+ */
682
+ video?: MediaVideoMetadata;
683
+ /**
684
+ * The generated poster still for a video (AGL-2742), served by the CDN as
685
+ * `?poster=1` and — because it genuinely is an `image/webp` — under the
686
+ * shared edge policy rather than the origin-only one video takes.
687
+ *
688
+ * `variants` here are poster widths, generated by the same `sharp` pass
689
+ * that produces an image's, at `{storagePath}__poster__w{n}.webp`.
690
+ */
691
+ poster?: {
692
+ width: number;
693
+ height: number;
694
+ variants: number[];
695
+ };
696
+ /**
697
+ * Why a video has no {@link poster}: the browser could not decode it,
698
+ * would not paint a frame, or the encoder refused the bytes it sent.
699
+ * Absent on every video that has one, and on every non-video.
700
+ */
701
+ posterError?: string;
702
+ /**
703
+ * Compressed delivery copies of a video (AGL-2745), in the order a
704
+ * renderer should emit `<source>` elements — most efficient codec first,
705
+ * because a browser takes the first it can decode.
706
+ *
707
+ * Produced out of band by `tools/scripts/generate-video-renditions.mjs`
708
+ * rather than at upload: there is no decoder in either upload runtime, and
709
+ * a hosted transcoder is a recurring bill this platform's budget does not
710
+ * carry. Absent means the master is the only copy, which is what every
711
+ * video served before this shipped.
712
+ */
713
+ videoRenditions?: MediaVideoRendition[];
714
+ /**
715
+ * User-defined key/value metadata (AGL-822), mirrored onto the Storage
716
+ * object's `customMetadata` by `/api/media/folders` (action
717
+ * `custom-metadata`); this doc copy is the source of truth for display.
718
+ */
719
+ customMetadata?: Record<string, string>;
720
+ /**
721
+ * Which sites may see this asset (AGL-1037); absent = org-wide until the
722
+ * AGL-1040 backfill stamps it. Only meaningful on the org-scoped library
723
+ * (`orgs/{orgId}/media`) — a host's own library is private already.
724
+ */
725
+ visibleTo?: ScopeToken[];
726
+ /**
727
+ * Not fetchable without a signature (AGL-1051). **Orthogonal to
728
+ * `visibleTo`**, and the distinction is the whole point:
729
+ *
730
+ * - `visibleTo` answers *which sites may USE this asset* — a discovery
731
+ * and authoring control. An asset restricted to one site is still
732
+ * served to anyone who has its URL, because that site's pages are
733
+ * public and the CDN that serves them is unauthenticated.
734
+ * - `private` answers *may the public FETCH these bytes at all*.
735
+ *
736
+ * A private asset carries no {@link cdnPath}, is refused by the pickers
737
+ * that place media into page content, and is reachable only through a
738
+ * short-lived signed URL minted for an authorized caller. Use it for
739
+ * things that are not web assets — a signed contract, unreleased
740
+ * artwork, an embargoed release — never for "this image is only on one
741
+ * site", which is what `visibleTo` is for.
742
+ */
743
+ private?: boolean;
744
+ createdAt?: ITimestamp;
745
+ updatedAt?: ITimestamp;
746
+ deletedAt?: ITimestamp;
747
+ }
748
+ /**
749
+ * Media folder doc (AGL-171): `hosts/{hostId}/mediaFolders/{folderId}`.
750
+ * Hierarchy/validation helpers live in `app-utils/media-folders`.
751
+ */
752
+ export interface AglynHostMediaFolder {
753
+ $id: string;
754
+ name: string;
755
+ /** Parent folder id; null = root. Depth capped at 5 (see app-utils). */
756
+ parentId?: string | null;
757
+ order?: number;
758
+ /**
759
+ * Which sites may see this folder (AGL-1037). Assets carry their own
760
+ * scope — a folder's is applied to them by an explicit write-time
761
+ * cascade (AGL-1042), never inherited at read time.
762
+ */
763
+ visibleTo?: ScopeToken[];
764
+ createdAt?: ITimestamp;
765
+ }
766
+ /**
767
+ * Pending scheduled publication (AGL-61): when `publishAt` passes, the
768
+ * parent doc's `versionId` pointer moves to `versionId`. Applied lazily by
769
+ * the tenant's ISR revalidation (no dedicated cron needed).
770
+ */
771
+ export interface PublishSchedule {
772
+ /** Version to make live; unused for `action: 'unpublish'` (AGL-113). */
773
+ versionId?: VersionUid;
774
+ /**
775
+ * What happens at `publishAt` (AGL-113): `publish` (default) flips the
776
+ * live version pointer; `unpublish` removes the screen's routing-map
777
+ * entry so its path 404s after the next revalidate.
778
+ */
779
+ action?: 'publish' | 'unpublish';
780
+ publishAt: ITimestamp;
781
+ /**
782
+ * `skipped-unentitled` is a terminal refusal (AGL-1185): the schedule came
783
+ * due on a plan without `scheduledPublishing`, so the executor declined it
784
+ * and will not reconsider.
785
+ *
786
+ * It exists because leaving it `pending` meant the refusal was not recorded
787
+ * anywhere — the schedule stayed due forever, and the moment the org upgraded
788
+ * to Business the next beat published it. Content someone scheduled and
789
+ * forgot, months later, surfacing during an upgrade. Recording the refusal is
790
+ * what makes it stop being due.
791
+ *
792
+ * Every reader tests `=== 'pending'`, so adding a member here degrades
793
+ * correctly rather than needing each one updated — checked, not assumed.
794
+ *
795
+ * `skipped-unroutable` is the second terminal refusal (AGL-1589): the
796
+ * publish came due on a screen with no live route and no address the
797
+ * executor could give it — no slug on the screen or one of its ancestors,
798
+ * an address another screen already holds, or an email document, which has
799
+ * no URL at all. One value for the three because they share a remedy (fix
800
+ * the address in the console and schedule it again) and because a terminal
801
+ * state is a thing every reader has to reason about; the console names the
802
+ * causes in its message.
803
+ *
804
+ * It exists for the same reason as the value above: before AGL-1589 that
805
+ * publish reported `applied` while the page kept 404ing, which is a silent
806
+ * failure in the worst direction. A recorded refusal is the difference
807
+ * between a schedule that did not run and one that pretended it had.
808
+ */
809
+ status: 'pending' | 'applied' | 'canceled' | 'skipped-unentitled' | 'skipped-unroutable';
810
+ createdAt?: ITimestamp;
811
+ }
812
+ /** Host-scoped document */
813
+ export interface AglynScreen extends AglynDocument {
814
+ $id: ScreenUid;
815
+ hostId?: HostUid;
816
+ parentId?: ScreenUid;
817
+ slug?: ScreenSlug;
818
+ /** Position among siblings (screens sharing `parentId`) in the screens list. */
819
+ order?: number;
820
+ versionId?: VersionUid;
821
+ publishSchedule?: PublishSchedule;
822
+ /** Password protection (AGL-87): sha256 hex of the visitor password. */
823
+ protection?: {
824
+ passwordHash?: string;
825
+ };
826
+ /** Language this screen is written in (AGL-164), e.g. 'en'. */
827
+ locale?: string;
828
+ /** Translations of this screen: locale → screen id (AGL-164). */
829
+ localeVariants?: Record<string, ScreenUid>;
830
+ status?: HostScreenStatus;
831
+ createdAt?: ITimestamp;
832
+ updatedAt?: ITimestamp;
833
+ /**
834
+ * When the screen's route was last published (AGL: date-published). Stamped
835
+ * by `publishScreenRoute` and cleared on unpublish, so it is present only
836
+ * while the screen is reachable — distinct from `createdAt`.
837
+ */
838
+ publishedAt?: ITimestamp;
839
+ deletedAt?: ITimestamp;
840
+ displayName?: string;
841
+ /**
842
+ * Normalized `displayName` for case-insensitive prefix search (AGL-835);
843
+ * see `nameSearchKey`. Stamped by the screen create/import write paths so
844
+ * the besigner switcher can query screens by name instead of loading the
845
+ * whole collection.
846
+ */
847
+ nameLower?: string;
848
+ description?: string;
849
+ seo?: {
850
+ title?: string;
851
+ description?: string;
852
+ breadcrumb?: string;
853
+ /**
854
+ * This screen's social card image (AGL-1337), overriding the host
855
+ * default. Same storage contract as {@link AglynHost.seo.image}: a
856
+ * `media:` reference or URL, `''` meaning cleared — which is how a screen
857
+ * goes back to inheriting the site default.
858
+ */
859
+ image?: string;
860
+ /**
861
+ * Copied from the media record at pick time, and the FALLBACK rather than
862
+ * the answer: a replace rewrites the asset's pair and cannot reach this
863
+ * copy, so the head prefers what the asset's document records when the
864
+ * page is composed (AGL-2850). See `resolveSocialImage`.
865
+ */
866
+ imageWidth?: number;
867
+ imageHeight?: number;
868
+ /**
869
+ * `og:image:alt` (AGL-2417) — what the card SHOWS, for the screen
870
+ * readers that announce a social preview. Defaulted from the chosen DAM
871
+ * asset's own alt at pick time and editable per surface; stored beside
872
+ * the reference so `resolveSocialImage` emits the description belonging
873
+ * to the image that actually won the precedence list.
874
+ *
875
+ * Blank is never stored: `og:image:alt=""` asserts the image conveys
876
+ * nothing, which is not what an undescribed card means.
877
+ */
878
+ imageAlt?: string;
879
+ };
880
+ schedule?: {
881
+ startAt?: ITimestamp;
882
+ endAt?: ITimestamp;
883
+ next?: VersionUid;
884
+ previous?: VersionUid;
885
+ };
886
+ visibility?: HostScreenVisibility;
887
+ /** Shared layout this screen renders inside (see {@link AglynLayout}). */
888
+ layoutId?: LayoutUid;
889
+ }
890
+ /**
891
+ * Host-scoped document.
892
+ * `N` lets higher layers narrow the node schema (e.g. the aglyn SDK
893
+ * instantiates it with its richer `NodeSchema`).
894
+ */
895
+ export interface AglynScreenVersion<N = AglynNodeSchema> extends AglynDocument {
896
+ $id: VersionUid;
897
+ hostId?: HostUid;
898
+ screenId?: ScreenUid;
899
+ createdAt?: ITimestamp;
900
+ updatedAt?: ITimestamp;
901
+ nodes?: Record<NodeId, N>;
902
+ /**
903
+ * Shared layout THIS VERSION renders inside (see {@link AglynLayout}).
904
+ *
905
+ * Key-present wins over the screen document's {@link AglynScreen.layoutId}:
906
+ * a `LayoutUid` binds the version to that layout, an explicit `null` renders
907
+ * the version with no layout, and an absent key inherits the screen's
908
+ * binding. Per-version binding is what lets a scheduled version bring its
909
+ * own chrome live at publish time without reframing the currently served
910
+ * version. On layout versions ({@link AglynLayoutVersion}) this same key is
911
+ * instead the back-pointer to the owning layout document.
912
+ */
913
+ layoutId?: LayoutUid | null;
914
+ /**
915
+ * This version's values for the properties of the layouts it renders inside
916
+ * (AGL-2893), stored beside the {@link layoutId} binding: layout id →
917
+ * property name → value, for every layout in the chain.
918
+ *
919
+ * Keyed by layout so that binding a different layout never hands this
920
+ * screen's values to a property of the same name there, and so that a
921
+ * layout nested inside another can be given values of its own. A property
922
+ * the screen leaves unset renders with its default. Read on screen versions
923
+ * only.
924
+ */
925
+ layoutPropValues?: Record<LayoutUid, Record<string, ReusableComponentPropValue>>;
926
+ }
927
+ /** Unique id of a host-level reusable component definition. */
928
+ export type ComponentDefUid = string;
929
+ /**
930
+ * Attribute field kinds that hold no value of their own: they arrange other
931
+ * fields (a sub-form, tabs, a wizard, a repeating field array), decorate one
932
+ * (an input add-on), or only display or trigger something (plain text, a
933
+ * button). A property is one value, so none of these is a property kind —
934
+ * see `NON_VALUE_FIELD_KINDS` for the reason each is listed.
935
+ */
936
+ export type NonValueFieldKind = FieldComponentType.BUTTON | FieldComponentType.BUTTON_GROUP | FieldComponentType.FIELD_ARRAY | FieldComponentType.INPUT_ADDON_BUTTON_GROUP | FieldComponentType.INPUT_ADDON_GROUP | FieldComponentType.PLAIN_TEXT | FieldComponentType.SUB_FORM | FieldComponentType.TAB_ITEM | FieldComponentType.TABS | FieldComponentType.WIZARD;
937
+ /**
938
+ * Attribute field kinds whose property kind was named before properties
939
+ * covered every field kind, and keeps that stored name: a text field is
940
+ * `text`, a textarea `richText`, a switch `boolean`, a dropdown `choice`, an
941
+ * icon picker `icon` and a screen picker `href`.
942
+ */
943
+ export type LegacyNamedFieldKind = FieldComponentType.TEXT_FIELD | FieldComponentType.TEXTAREA | FieldComponentType.SWITCH | FieldComponentType.SELECT | FieldComponentType.ICON_PICKER | FieldComponentType.SCREEN_SELECT;
944
+ /**
945
+ * Kind of a declared component or layout property (AGL-1247, AGL-2893): which
946
+ * control edits it, in the Properties dialog and on every page that sets it,
947
+ * and which fields it can be bound to.
948
+ *
949
+ * Derived from the attribute schema's own field kinds rather than listed
950
+ * beside them. Every {@link FieldComponentType} that holds a value is a
951
+ * property kind — under its own stored value (`color-picker`,
952
+ * `css-dimension`, …), or under the name it already had
953
+ * ({@link LegacyNamedFieldKind}). `number` and `image` are the two text-field
954
+ * variants a coded component declares as `type: 'number'` or as a media
955
+ * field. So a field kind added to the attribute schema is a property kind the
956
+ * moment it exists, and `REUSABLE_PROP_KINDS` fails to compile until it says
957
+ * how the kind is edited.
958
+ *
959
+ * These values are stored in component and layout documents. Never rename
960
+ * one.
961
+ */
962
+ export type ReusableComponentPropType = 'text' | 'richText' | 'image' | 'href' | 'number' | 'boolean' | 'choice' | 'icon' | `${Exclude<FieldComponentType, NonValueFieldKind | LegacyNamedFieldKind>}`;
963
+ /**
964
+ * A property's value as it is stored: a default on the declaration, or a
965
+ * page's own value in `propValues` / `layoutPropValues`.
966
+ *
967
+ * The shape follows the kind's control — a Yes / no stores a boolean, a
968
+ * slider a number, a list of answers an array, an icon pick its id and path —
969
+ * and text-shaped kinds store text. Defaults written before the kinds were
970
+ * typed are text (`'true'`, `'28'`), which every reader accepts.
971
+ */
972
+ export type ReusableComponentPropValue = string | number | boolean | ReadonlyArray<string | number> | ReusableComponentIcon;
973
+ /**
974
+ * One rule of a property's `condition`: the attribute schema's condition
975
+ * (data-driven-forms' `ConditionDefinition`), with `when` naming another
976
+ * property of the same component or layout instead of an attribute.
977
+ *
978
+ * The operators are the schema's own — `is` (one value, or any of a list),
979
+ * `notMatch` to negate `is` or `pattern`, `isEmpty`, `isNotEmpty`, `pattern`
980
+ * with `flags`, and the four comparisons — and the rule is evaluated by
981
+ * data-driven-forms' own parser, in the Attributes panel and at render. Only
982
+ * the serializable part is here: a stored document cannot carry a function.
983
+ */
984
+ export interface ReusableComponentPropRule {
985
+ /** The name of the property whose value decides. */
986
+ when: string;
987
+ is?: string | number | boolean | ReadonlyArray<string | number | boolean>;
988
+ notMatch?: boolean;
989
+ isEmpty?: boolean;
990
+ isNotEmpty?: boolean;
991
+ pattern?: string;
992
+ flags?: string;
993
+ greaterThan?: number;
994
+ greaterThanOrEqualTo?: number;
995
+ lessThan?: number;
996
+ lessThanOrEqualTo?: number;
997
+ }
998
+ /**
999
+ * When a property shows and applies: one rule, a list that must ALL hold, or
1000
+ * the schema's `and` / `or` / `not` over rules.
1001
+ */
1002
+ export type ReusableComponentPropCondition = ReusableComponentPropRule | {
1003
+ and: ReusableComponentPropCondition[];
1004
+ } | {
1005
+ or: ReusableComponentPropCondition[];
1006
+ } | {
1007
+ not: ReusableComponentPropCondition | ReusableComponentPropCondition[];
1008
+ };
1009
+ /**
1010
+ * One answer a `choice` prop offers (AGL-2871).
1011
+ *
1012
+ * Two halves because two people read it: the page author picks the `label`,
1013
+ * and the field inside the component receives the `value` — which is why a
1014
+ * dropdown bound to the prop needs values it offers itself.
1015
+ */
1016
+ export interface ReusableComponentPropOption {
1017
+ /** What a field bound to the prop receives. */
1018
+ value: string;
1019
+ /** What the Attributes panel shows; falls back to `value`. */
1020
+ label?: string;
1021
+ }
1022
+ /**
1023
+ * A prop a reusable component declares (AGL-1247), so one definition can
1024
+ * render different content per instance instead of being copied per page.
1025
+ *
1026
+ * Inside the definition the author binds a node prop to it with the
1027
+ * existing token syntax — `{{prop.headline}}`, the same mechanism behind
1028
+ * `{{entry.*}}` and `{{host.*}}` — and `composeReusableComponentNodes`
1029
+ * substitutes each instance's own values as it grafts.
1030
+ */
1031
+ export interface ReusableComponentProp {
1032
+ /**
1033
+ * Token name: `{{prop.<name>}}`. This is the STABLE key instances store
1034
+ * their overrides under, so renaming one orphans every existing value —
1035
+ * the editor must rename in place rather than remove-and-add.
1036
+ */
1037
+ name: string;
1038
+ type?: ReusableComponentPropType;
1039
+ /** Field label in the Attributes panel; falls back to `name`. */
1040
+ label?: string;
1041
+ /**
1042
+ * Help shown beside the property's field wherever a page sets it — the
1043
+ * attribute schema's `description`.
1044
+ */
1045
+ description?: string;
1046
+ /**
1047
+ * Rendered wherever an instance leaves this prop unset, and shown as the
1048
+ * Attributes field's placeholder. One field serving both is deliberate:
1049
+ * a component that renders its own sensible copy until overridden is the
1050
+ * "shows the placeholder from the component" behaviour, and it means an
1051
+ * unset prop can never collapse a section to empty on a live page.
1052
+ */
1053
+ defaultValue?: ReusableComponentPropValue;
1054
+ /**
1055
+ * The answers a page picks from, in the order offered, for a kind whose
1056
+ * control lists answers (`choice`, `radio`, `toggle-button`,
1057
+ * `dual-list-select`, and a `checkbox` that is a list). A `defaultValue`
1058
+ * names one of their values, or several for a kind that takes several.
1059
+ */
1060
+ options?: ReusableComponentPropOption[];
1061
+ /**
1062
+ * The kind's own settings, named by the kind's `settings` in
1063
+ * `REUSABLE_PROP_KINDS`: a slider's range, whether a choice takes several
1064
+ * answers, which theme scale a theme-scale field offers. They are the
1065
+ * attribute field's own props, so a coded component's attribute and a
1066
+ * property of the same kind are configured with the same words.
1067
+ */
1068
+ settings?: Record<string, string | number | boolean>;
1069
+ /**
1070
+ * When the property shows and applies. While it does not hold, the field is
1071
+ * hidden wherever a page sets it, and the property renders as one with no
1072
+ * value and no default: text bound to it is empty, a Yes / no is a no, and
1073
+ * a field bound to it keeps its own default.
1074
+ */
1075
+ condition?: ReusableComponentPropCondition | ReusableComponentPropCondition[];
1076
+ /**
1077
+ * `icon` only: the SVG path of the icon `defaultValue` names, stored beside
1078
+ * the id when the default is picked, for the reason
1079
+ * {@link ReusableComponentIcon} stores both — a published page never loads
1080
+ * the icon catalog, so an id alone draws the empty Icon placeholder. An
1081
+ * instance's own pick travels the same way, as a whole
1082
+ * {@link ReusableComponentIcon} in its prop values.
1083
+ */
1084
+ defaultIconPath?: string;
1085
+ }
1086
+ /**
1087
+ * A reusable component's chosen icon (AGL-1193), stood in for by the generic
1088
+ * package glyph when unset.
1089
+ *
1090
+ * Both halves are stored, for the reason AGL-1212 exists: the MDI catalog is
1091
+ * ~2.9 MB and only picker surfaces load it, so anything that had to resolve
1092
+ * `iconId` on a render surface got `DEFAULT_ICON` — a real path, so every
1093
+ * icon painted a confident "help" glyph. The id stays the source of truth;
1094
+ * `iconPath` is the denormalized copy that travels with the document.
1095
+ */
1096
+ export interface ReusableComponentIcon {
1097
+ iconId?: string;
1098
+ iconPath?: string;
1099
+ }
1100
+ /**
1101
+ * Reusable component definition: a node subtree promoted from a screen,
1102
+ * inserted anywhere as an instance node (`componentId: 'reusableInstance'`,
1103
+ * `props.refId`) and grafted at render time (see
1104
+ * `composeReusableComponentNodes`). Host-scoped document at
1105
+ * `hosts/{hostId}/components/{componentId}`.
1106
+ */
1107
+ export interface AglynHostComponent<N = AglynNodeSchema> extends AglynDocument {
1108
+ $id: ComponentDefUid;
1109
+ hostId?: HostUid;
1110
+ displayName?: string;
1111
+ description?: string;
1112
+ /**
1113
+ * Icon shown wherever an instance of this component is represented in the
1114
+ * besigner (AGL-1193) — the hierarchy row, the canvas badge, the element
1115
+ * drawer. Absent on every component that predates the picker, which is
1116
+ * why it is optional and never defaulted: unset means "the package glyph",
1117
+ * not "an icon we failed to read".
1118
+ */
1119
+ icon?: ReusableComponentIcon;
1120
+ /**
1121
+ * Definition tree root id within {@link AglynHostComponent.nodes}.
1122
+ *
1123
+ * `rootId` and `nodes` on THIS doc are the published snapshot — the copy
1124
+ * the tenant runtime renders. `getComponents` reads every component in a
1125
+ * single collection query on each page render, so they deliberately stay
1126
+ * here rather than moving into the version docs below: relocating them
1127
+ * would turn one query into N+1 on the hot path of every published site
1128
+ * (AGL-679).
1129
+ */
1130
+ rootId?: NodeId;
1131
+ nodes?: Record<NodeId, N>;
1132
+ /**
1133
+ * Declared props (AGL-1247), published alongside `rootId`/`nodes` and for
1134
+ * the same reason: the tenant reads this doc, so a definition whose props
1135
+ * stayed on the version doc would graft with every `{{prop.*}}` token
1136
+ * unresolved on the live site.
1137
+ */
1138
+ props?: ReusableComponentProp[];
1139
+ /**
1140
+ * Working version pointer (AGL-679). Absent on components that predate
1141
+ * the standalone editor — those still render from the fields above, and
1142
+ * opening one creates version 1 from them.
1143
+ */
1144
+ versionId?: VersionUid;
1145
+ createdAt?: ITimestamp;
1146
+ updatedAt?: ITimestamp;
1147
+ deletedAt?: ITimestamp;
1148
+ }
1149
+ /**
1150
+ * A reusable component's editing history (AGL-679), at
1151
+ * `hosts/{hostId}/components/{componentId}/versions/{versionId}`.
1152
+ *
1153
+ * Same shape as a screen version, with the component's `rootId` carried so
1154
+ * publishing is a copy of both fields onto the parent rather than a
1155
+ * reconstruction. Edits here are invisible to live sites until published —
1156
+ * the same mental model screens already have.
1157
+ */
1158
+ export interface AglynHostComponentVersion<N = AglynNodeSchema> extends AglynDocument {
1159
+ $id: VersionUid;
1160
+ hostId?: HostUid;
1161
+ componentId?: ComponentDefUid;
1162
+ displayName?: string;
1163
+ rootId?: NodeId;
1164
+ nodes?: Record<NodeId, N>;
1165
+ /** Declared props being edited; published onto the parent (AGL-1247). */
1166
+ props?: ReusableComponentProp[];
1167
+ createdAt?: ITimestamp;
1168
+ updatedAt?: ITimestamp;
1169
+ }
1170
+ /**
1171
+ * Shared layout: canvas chrome (appbar, footer, nav) designed once and
1172
+ * rendered around every bound screen. Host-scoped document at
1173
+ * `hosts/{hostId}/layouts/{layoutId}`.
1174
+ */
1175
+ export interface AglynLayout extends AglynDocument {
1176
+ $id: LayoutUid;
1177
+ hostId?: HostUid;
1178
+ /** Published version pointer; bound screens render this version. */
1179
+ versionId?: VersionUid;
1180
+ publishSchedule?: PublishSchedule;
1181
+ versions?: Array<VersionUid>;
1182
+ displayName?: string;
1183
+ description?: string;
1184
+ /**
1185
+ * Layout this layout renders inside (AGL-703) — the same relationship
1186
+ * `AglynScreen.layoutId` expresses, one level up, so shared chrome can
1187
+ * sit outside a more specific frame. Must not be this layout, or any
1188
+ * layout already below it; see `canNestLayout`.
1189
+ */
1190
+ layoutId?: LayoutUid;
1191
+ createdAt?: ITimestamp;
1192
+ updatedAt?: ITimestamp;
1193
+ }
1194
+ /**
1195
+ * Shared layout version. Node map has the same shape as a screen version
1196
+ * (including compression at rest) plus a LayoutSlot node marking where the
1197
+ * bound screen's content is grafted. Hosted at
1198
+ * `hosts/{hostId}/layouts/{layoutId}/versions/{versionId}`.
1199
+ */
1200
+ export interface AglynLayoutVersion<N = AglynNodeSchema> extends AglynScreenVersion<N> {
1201
+ layoutId?: LayoutUid;
1202
+ hostId?: HostUid;
1203
+ /**
1204
+ * The properties this layout declares (AGL-2893), each set by the screens
1205
+ * that render inside it. On the version rather than the layout document,
1206
+ * beside the nodes that bind them: a layout is served by its version
1207
+ * pointer, so a version's properties go live with its tree.
1208
+ */
1209
+ props?: ReusableComponentProp[];
1210
+ }
1211
+ export type TemplateUid = string;
1212
+ /** What a template can be instantiated as. */
1213
+ export type TemplateKind = 'page' | 'component' | 'layout';
1214
+ /**
1215
+ * A named substitution offered when the template is instantiated. Values are
1216
+ * applied with `resolveNamedTokens` — the same `{{name}}` mechanism that
1217
+ * renders collection entry templates — so a template author marks copy as
1218
+ * `{{productName}}` and is prompted for it on use.
1219
+ */
1220
+ export interface TemplatePlaceholder {
1221
+ /** Token name as it appears in the nodes, without the braces. */
1222
+ name: string;
1223
+ /** Prompt label shown when instantiating. */
1224
+ label?: string;
1225
+ defaultValue?: string;
1226
+ }
1227
+ /**
1228
+ * Where a template came from.
1229
+ *
1230
+ * SERVER-MANAGED. A client that could write this would be able to stamp
1231
+ * `marketplace` provenance on something it authored, and the library shows
1232
+ * this to the user as a trust signal.
1233
+ */
1234
+ export interface TemplateSource {
1235
+ type: 'authored' | 'marketplace' | 'starter';
1236
+ /** Marketplace listing this was installed from. */
1237
+ listingId?: string;
1238
+ /** Listing version installed — compared against `latestVersion` to
1239
+ * surface "update available" without storing anything extra. */
1240
+ version?: number | string;
1241
+ /** First-party starter id from `starter-templates.ts`. */
1242
+ starterId?: string;
1243
+ /**
1244
+ * Bundle-level identity for a seeded starter (AGL-687). A multi-page
1245
+ * starter seeds one page template per screen, exactly as a marketplace
1246
+ * install does; these carry the name/description/order of the bundle the
1247
+ * screens belong to so the gallery can present them as the single starter
1248
+ * they were authored as, without a second, code-side template source.
1249
+ */
1250
+ starterName?: string;
1251
+ starterDescription?: string;
1252
+ /** Position within the starter; fixes the order pages are created in. */
1253
+ starterOrder?: number;
1254
+ }
1255
+ /**
1256
+ * Reusable starting point for a page, component or layout (AGL-666).
1257
+ * Host-scoped document at `hosts/{hostId}/templates/{templateId}`.
1258
+ *
1259
+ * Distinct from the things it produces: a template is inert until
1260
+ * instantiated, so marketplace downloads land here rather than becoming live
1261
+ * pages. `nodes` carries the same node-map shape screens, components and
1262
+ * layouts already use, which is what lets one collection serve all three
1263
+ * kinds.
1264
+ */
1265
+ export interface AglynTemplate<N = AglynNodeSchema> extends AglynDocument {
1266
+ $id: TemplateUid;
1267
+ hostId?: HostUid;
1268
+ kind?: TemplateKind;
1269
+ displayName?: string;
1270
+ description?: string;
1271
+ category?: string;
1272
+ nodes?: Record<NodeId, N>;
1273
+ /** Definition tree root — `component` kind, mirroring AglynHostComponent. */
1274
+ rootId?: NodeId;
1275
+ /**
1276
+ * The properties a `component` or `layout` template's tree binds to
1277
+ * (AGL-2932), carried so what is made from it declares them — without them
1278
+ * every `{{prop.*}}` in the tree renders raw.
1279
+ */
1280
+ props?: ReusableComponentProp[];
1281
+ /** Suggested slug — `page` kind; de-conflicted against the host on use. */
1282
+ slug?: string;
1283
+ /** Mirrors AglynScreen.seo — carried through to the created page. */
1284
+ seo?: {
1285
+ title?: string;
1286
+ description?: string;
1287
+ breadcrumb?: string;
1288
+ image?: string;
1289
+ imageWidth?: number;
1290
+ imageHeight?: number;
1291
+ /** Mirrors `AglynScreen.seo.imageAlt` (AGL-2417). */
1292
+ imageAlt?: string;
1293
+ };
1294
+ placeholders?: Array<TemplatePlaceholder>;
1295
+ /**
1296
+ * Theme the template was designed against, carried over from a site
1297
+ * template's snapshot. Held rather than applied: applying a theme changes
1298
+ * the whole site's appearance, which is exactly the kind of instant,
1299
+ * site-wide change installing is not allowed to make (AGL-669).
1300
+ */
1301
+ theme?: Record<string, unknown>;
1302
+ source?: TemplateSource;
1303
+ createdAt?: ITimestamp;
1304
+ updatedAt?: ITimestamp;
1305
+ deletedAt?: ITimestamp;
1306
+ }
1307
+ export type RedirectUid = string;
1308
+ /** CONCEPT: Host redirects. Host-scoped document */
1309
+ export interface AglynRedirect extends AglynDocument {
1310
+ $id: RedirectUid;
1311
+ hostId?: HostUid;
1312
+ sourcePath?: HostPath;
1313
+ sourceScreen?: ScreenUid;
1314
+ destinationPath?: HostPath;
1315
+ destinationScreen?: ScreenUid;
1316
+ statusCode?: HttpStatusCode;
1317
+ params?: HostRedirectParams;
1318
+ flags?: {
1319
+ regex?: true;
1320
+ ignoreSlash?: true;
1321
+ ignoreCase?: true;
1322
+ };
1323
+ hits?: number;
1324
+ lastAccess?: ITimestamp;
1325
+ description?: string;
1326
+ }