@cosmicdrift/kumiko-bundled-features 0.377.0 → 0.379.0

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 (669) hide show
  1. package/dist/account-security/feature.js +2 -2
  2. package/dist/account-security/index.d.ts +2 -2
  3. package/dist/account-security/index.js +2 -2
  4. package/dist/account-security/{constants.js → web/constants.js} +0 -1
  5. package/dist/account-security/{i18n.js → web/i18n.js} +0 -1
  6. package/dist/admin-shell/feature.js +4 -3
  7. package/dist/admin-shell/index.d.ts +2 -2
  8. package/dist/admin-shell/index.js +2 -2
  9. package/dist/admin-shell/web/client-plugin.js +2 -3
  10. package/dist/admin-shell/{constants.js → web/constants.js} +0 -1
  11. package/dist/admin-shell/web/default-translations.d.ts +2 -0
  12. package/dist/admin-shell/web/default-translations.js +4 -0
  13. package/dist/admin-shell/web/i18n.d.ts +5 -2
  14. package/dist/admin-shell/web/i18n.js +50 -5
  15. package/dist/admin-shell/web/index.js +0 -1
  16. package/dist/audit/feature.js +58 -59
  17. package/dist/audit/handlers/audit-events.d.ts +102 -0
  18. package/dist/audit/handlers/audit-events.js +112 -0
  19. package/dist/audit/handlers/audit-system-db.d.ts +1 -0
  20. package/dist/audit/handlers/audit-system-db.js +9 -0
  21. package/dist/audit/handlers/details-all-tenants.query.d.ts +15 -0
  22. package/dist/audit/handlers/details-all-tenants.query.js +20 -0
  23. package/dist/audit/handlers/details.query.d.ts +2 -1
  24. package/dist/audit/handlers/details.query.js +8 -24
  25. package/dist/audit/handlers/list-all-tenants.query.d.ts +41 -0
  26. package/dist/audit/handlers/list-all-tenants.query.js +32 -0
  27. package/dist/audit/handlers/list.query.d.ts +2 -1
  28. package/dist/audit/handlers/list.query.js +9 -99
  29. package/dist/audit/handlers/resolve-audit-tenant.d.ts +3 -1
  30. package/dist/audit/handlers/resolve-audit-tenant.js +21 -7
  31. package/dist/audit/index.d.ts +1 -1
  32. package/dist/audit/index.js +1 -1
  33. package/dist/audit/run-escape-hatch-retention.js +1 -1
  34. package/dist/audit/screens.d.ts +65 -0
  35. package/dist/audit/screens.js +73 -0
  36. package/dist/audit/web/client-plugin.js +2 -3
  37. package/dist/audit/{constants.d.ts → web/constants.d.ts} +8 -0
  38. package/dist/audit/{constants.js → web/constants.js} +8 -1
  39. package/dist/audit/web/default-translations.d.ts +2 -0
  40. package/dist/audit/web/default-translations.js +3 -0
  41. package/dist/audit/web/i18n.d.ts +5 -2
  42. package/dist/audit/web/i18n.js +31 -4
  43. package/dist/audit/web/index.js +0 -1
  44. package/dist/auth-email-password/bootstrap.d.ts +1 -1
  45. package/dist/auth-email-password/bootstrap.js +4 -4
  46. package/dist/auth-email-password/errors.js +1 -1
  47. package/dist/auth-email-password/feature.js +2 -2
  48. package/dist/auth-email-password/handlers/confirm-account-unlock.write.js +1 -1
  49. package/dist/auth-email-password/handlers/invite-accept-with-login.write.js +1 -1
  50. package/dist/auth-email-password/handlers/invite-create.write.d.ts +1 -1
  51. package/dist/auth-email-password/handlers/invite-create.write.js +3 -3
  52. package/dist/auth-email-password/handlers/invite-info.query.js +1 -1
  53. package/dist/auth-email-password/handlers/login.write.d.ts +1 -0
  54. package/dist/auth-email-password/handlers/login.write.js +26 -1
  55. package/dist/auth-email-password/handlers/request-account-unlock.write.js +1 -1
  56. package/dist/auth-email-password/handlers/request-email-verification.write.js +1 -1
  57. package/dist/auth-email-password/handlers/request-password-reset.write.js +1 -1
  58. package/dist/auth-email-password/handlers/reset-password.write.js +1 -1
  59. package/dist/auth-email-password/handlers/verify-email.write.js +1 -1
  60. package/dist/auth-email-password/index.d.ts +1 -1
  61. package/dist/auth-email-password/index.js +1 -1
  62. package/dist/auth-email-password/mail-notifications.js +1 -1
  63. package/dist/auth-email-password/signup-activation.js +1 -1
  64. package/dist/auth-email-password/web/auth-client.js +0 -1
  65. package/dist/auth-email-password/web/auth-form-logic.js +0 -1
  66. package/dist/auth-email-password/web/auth-form-primitives.js +0 -1
  67. package/dist/auth-email-password/web/auth-gate.js +0 -1
  68. package/dist/auth-email-password/web/auth-redirect.js +0 -1
  69. package/dist/auth-email-password/web/client-actions.js +0 -1
  70. package/dist/auth-email-password/web/client-plugin.js +1 -2
  71. package/dist/auth-email-password/web/confirm-account-unlock-screen.js +0 -1
  72. package/dist/auth-email-password/{constants.js → web/constants.js} +3 -6
  73. package/dist/auth-email-password/web/default-topbar-actions.js +0 -1
  74. package/dist/auth-email-password/web/forgot-password-screen.js +0 -1
  75. package/dist/auth-email-password/{i18n.js → web/i18n.js} +3 -4
  76. package/dist/auth-email-password/web/index.d.ts +1 -1
  77. package/dist/auth-email-password/web/index.js +1 -2
  78. package/dist/auth-email-password/web/invite-accept-screen.d.ts +2 -2
  79. package/dist/auth-email-password/web/invite-accept-screen.js +0 -1
  80. package/dist/auth-email-password/web/login-screen.js +0 -1
  81. package/dist/auth-email-password/{mail-i18n.js → web/mail-i18n.js} +0 -1
  82. package/dist/auth-email-password/web/request-account-unlock-screen.js +0 -1
  83. package/dist/auth-email-password/web/reset-password-screen.js +0 -1
  84. package/dist/auth-email-password/web/session-bootstrap-error.js +0 -1
  85. package/dist/auth-email-password/web/session.js +0 -1
  86. package/dist/auth-email-password/web/signup-complete-screen.d.ts +2 -2
  87. package/dist/auth-email-password/web/signup-complete-screen.js +0 -1
  88. package/dist/auth-email-password/web/signup-screen.js +0 -1
  89. package/dist/auth-email-password/web/tenant-menu-items.js +0 -1
  90. package/dist/auth-email-password/web/tenant-switcher.js +0 -1
  91. package/dist/auth-email-password/web/use-shell-user.js +0 -1
  92. package/dist/auth-email-password/web/user-menu.js +0 -1
  93. package/dist/auth-email-password/web/verify-email-screen.js +0 -1
  94. package/dist/auth-mfa/errors.d.ts +1 -1
  95. package/dist/auth-mfa/errors.js +2 -2
  96. package/dist/auth-mfa/handlers/enable-confirm-preauth.write.js +1 -1
  97. package/dist/auth-mfa/handlers/enable-start-preauth.write.js +1 -1
  98. package/dist/auth-mfa/handlers/enable-start.write.js +1 -1
  99. package/dist/auth-mfa/handlers/verify.write.js +1 -1
  100. package/dist/auth-mfa/index.d.ts +1 -1
  101. package/dist/auth-mfa/index.js +1 -1
  102. package/dist/auth-mfa/mfa-status-checker.js +1 -1
  103. package/dist/auth-mfa/screens.js +1 -1
  104. package/dist/auth-mfa/web/client-plugin.js +0 -1
  105. package/dist/auth-mfa/{constants.js → web/constants.js} +0 -1
  106. package/dist/auth-mfa/web/i18n.js +0 -1
  107. package/dist/auth-mfa/web/index.js +0 -1
  108. package/dist/auth-mfa/web/mfa-client.js +0 -1
  109. package/dist/auth-mfa/web/mfa-disable-dialog.js +1 -2
  110. package/dist/auth-mfa/web/mfa-recovery-codes-reveal.js +0 -1
  111. package/dist/auth-mfa/web/mfa-regenerate-recovery-dialog.js +1 -2
  112. package/dist/auth-mfa/web/mfa-setup-preauth-screen.js +11 -18
  113. package/dist/auth-mfa/web/mfa-verify-screen.js +0 -1
  114. package/dist/billing-foundation/checkout-core.js +1 -1
  115. package/dist/billing-foundation/consumer-protection/consent-text.d.ts +2 -2
  116. package/dist/billing-foundation/consumer-protection/consent-text.js +1 -1
  117. package/dist/billing-foundation/consumer-protection/issue-confirmation.js +7 -3
  118. package/dist/billing-foundation/consumer-protection/mail-notifications.js +3 -1
  119. package/dist/billing-foundation/consumer-protection/register-consent.js +1 -1
  120. package/dist/billing-foundation/consumer-protection/register-termination.js +8 -2
  121. package/dist/billing-foundation/consumer-protection/stored-user-email.d.ts +1 -0
  122. package/dist/billing-foundation/consumer-protection/stored-user-email.js +8 -0
  123. package/dist/billing-foundation/consumer-protection/termination-mail.d.ts +5 -1
  124. package/dist/billing-foundation/consumer-protection/termination-mail.js +3 -1
  125. package/dist/billing-foundation/consumer-protection/termination-notify.js +1 -1
  126. package/dist/billing-foundation/consumer-protection/termination-pages.js +109 -15
  127. package/dist/billing-foundation/consumer-protection/termination-record.d.ts +8 -1
  128. package/dist/billing-foundation/consumer-protection/termination-record.js +76 -3
  129. package/dist/billing-foundation/consumer-protection/termination-request.js +33 -6
  130. package/dist/billing-foundation/consumer-protection/termination-revoke.d.ts +28 -0
  131. package/dist/billing-foundation/consumer-protection/termination-revoke.js +149 -0
  132. package/dist/billing-foundation/consumer-protection/termination-texts.d.ts +17 -1
  133. package/dist/billing-foundation/consumer-protection/termination-texts.js +39 -0
  134. package/dist/billing-foundation/events.d.ts +9 -0
  135. package/dist/billing-foundation/events.js +14 -2
  136. package/dist/billing-foundation/feature.js +1 -1
  137. package/dist/billing-foundation/handlers/process-event.write.d.ts +5 -1
  138. package/dist/billing-foundation/handlers/process-event.write.js +57 -3
  139. package/dist/billing-foundation/handlers/switch-plan.write.js +1 -1
  140. package/dist/billing-foundation/handlers/sync-subscription.write.js +1 -1
  141. package/dist/billing-foundation/index.d.ts +2 -2
  142. package/dist/billing-foundation/index.js +2 -2
  143. package/dist/billing-foundation/plan-catalog.js +1 -1
  144. package/dist/billing-foundation/screens.js +1 -1
  145. package/dist/billing-foundation/subscription-tier-sync.js +1 -1
  146. package/dist/billing-foundation/types.d.ts +14 -2
  147. package/dist/billing-foundation/types.js +1 -1
  148. package/dist/billing-foundation/validate-options.js +3 -3
  149. package/dist/billing-foundation/web/billing-contact-plan.js +1 -2
  150. package/dist/billing-foundation/web/billing-plans-panel.js +1 -2
  151. package/dist/billing-foundation/web/cancel-contract-dialog.js +1 -2
  152. package/dist/billing-foundation/web/checkout-consent-dialog.js +1 -2
  153. package/dist/billing-foundation/web/client-plugin.js +1 -1
  154. package/dist/billing-foundation/{constants.d.ts → web/constants.d.ts} +21 -14
  155. package/dist/billing-foundation/{constants.js → web/constants.js} +35 -31
  156. package/dist/billing-foundation/{consumer-protection → web/consumer-protection}/consent-locale.js +0 -1
  157. package/dist/billing-foundation/{contact-card.js → web/contact-card.js} +0 -1
  158. package/dist/billing-foundation/web/index.d.ts +2 -2
  159. package/dist/billing-foundation/web/index.js +2 -3
  160. package/dist/billing-foundation/web/localized-params.js +0 -1
  161. package/dist/billing-foundation/webhook-handler.js +4 -1
  162. package/dist/cap-counter/stock-cap-guard.js +8 -0
  163. package/dist/cap-overview/feature.js +1 -1
  164. package/dist/cap-overview/handlers/caps-usage.query.js +1 -1
  165. package/dist/cap-overview/handlers/tenant-caps-list.query.js +2 -2
  166. package/dist/cap-overview/index.d.ts +2 -2
  167. package/dist/cap-overview/index.js +2 -2
  168. package/dist/cap-overview/screens.js +1 -1
  169. package/dist/cap-overview/web/cap-cards-panel.js +1 -1
  170. package/dist/cap-overview/web/cap-usage-bar.js +1 -2
  171. package/dist/cap-overview/web/client-plugin.js +1 -1
  172. package/dist/cap-overview/{constants.js → web/constants.js} +0 -1
  173. package/dist/cap-overview/web/index.js +0 -1
  174. package/dist/cap-overview/{usage-math.d.ts → web/usage-math.d.ts} +1 -1
  175. package/dist/compliance-profiles/feature.js +1 -1
  176. package/dist/compliance-profiles/index.d.ts +1 -1
  177. package/dist/compliance-profiles/index.js +1 -1
  178. package/dist/compliance-profiles/web/client-plugin.js +1 -2
  179. package/dist/compliance-profiles/web/compliance-profile-catalog.js +1 -2
  180. package/dist/compliance-profiles/{constants.js → web/constants.js} +0 -1
  181. package/dist/compliance-profiles/web/index.js +0 -1
  182. package/dist/config/index.d.ts +1 -1
  183. package/dist/config/index.js +1 -1
  184. package/dist/config/web/client-plugin.d.ts +1 -1
  185. package/dist/config/web/client-plugin.js +1 -2
  186. package/dist/config/{constants.js → web/constants.js} +0 -1
  187. package/dist/config/web/i18n.js +1 -1
  188. package/dist/config/web/index.d.ts +1 -1
  189. package/dist/config/web/index.js +1 -2
  190. package/dist/config/write-helpers.js +1 -1
  191. package/dist/custom-fields/feature.js +1 -1
  192. package/dist/custom-fields/handlers/clear-custom-field.write.js +1 -1
  193. package/dist/custom-fields/handlers/define-tenant-field.write.js +1 -1
  194. package/dist/custom-fields/handlers/delete-system-field.write.js +1 -1
  195. package/dist/custom-fields/handlers/delete-tenant-field.write.js +1 -1
  196. package/dist/custom-fields/handlers/set-custom-field.write.js +1 -1
  197. package/dist/custom-fields/handlers/update-tenant-field.write.js +1 -1
  198. package/dist/custom-fields/index.d.ts +1 -1
  199. package/dist/custom-fields/index.js +1 -1
  200. package/dist/custom-fields/lib/value-schema.js +1 -1
  201. package/dist/custom-fields/schemas.js +1 -1
  202. package/dist/custom-fields/web/client-plugin.js +1 -2
  203. package/dist/custom-fields/{constants.js → web/constants.js} +18 -19
  204. package/dist/custom-fields/web/custom-fields-form-section.js +1 -2
  205. package/dist/custom-fields/web/i18n.js +0 -1
  206. package/dist/custom-fields/web/index.d.ts +1 -1
  207. package/dist/custom-fields/web/index.js +1 -2
  208. package/dist/custom-fields/wire-for-entity.js +1 -1
  209. package/dist/delivery/address-opt-out.js +1 -1
  210. package/dist/delivery/attempt-log-retention.js +21 -3
  211. package/dist/delivery/constants.d.ts +1 -1
  212. package/dist/delivery/constants.js +2 -2
  213. package/dist/delivery/i18n.js +1 -1
  214. package/dist/delivery/unsubscribe-page.js +1 -1
  215. package/dist/delivery/web/client-plugin.js +1 -1
  216. package/dist/delivery/web/delivery-channel-cell.js +0 -1
  217. package/dist/delivery/web/delivery-error-cell.js +0 -1
  218. package/dist/delivery/web/delivery-status-cell.js +1 -2
  219. package/dist/delivery/web/delivery-time-cell.js +0 -1
  220. package/dist/delivery/web/delivery-type-cell.js +0 -1
  221. package/dist/delivery/web/index.js +0 -1
  222. package/dist/delivery/{public-names.js → web/public-names.js} +0 -1
  223. package/dist/document-ingest-foundation/events.d.ts +1 -0
  224. package/dist/document-ingest-foundation/events.js +3 -0
  225. package/dist/document-ingest-foundation/executor.js +2 -1
  226. package/dist/document-ingest-foundation/feature.js +16 -5
  227. package/dist/document-ingest-foundation/index.d.ts +1 -1
  228. package/dist/document-ingest-foundation/index.js +1 -1
  229. package/dist/feature-toggles/feature.d.ts +1 -1
  230. package/dist/feature-toggles/feature.js +2 -2
  231. package/dist/feature-toggles/handlers/list.query.js +1 -1
  232. package/dist/feature-toggles/handlers/registered.query.js +1 -1
  233. package/dist/feature-toggles/handlers/set.write.js +1 -1
  234. package/dist/feature-toggles/index.d.ts +1 -1
  235. package/dist/feature-toggles/index.js +1 -1
  236. package/dist/feature-toggles/web/client-plugin.js +1 -2
  237. package/dist/feature-toggles/{constants.js → web/constants.js} +0 -1
  238. package/dist/feature-toggles/web/index.js +0 -1
  239. package/dist/folders/feature.js +1 -1
  240. package/dist/folders/handlers/clear-folder.write.js +1 -1
  241. package/dist/folders/handlers/delete-folder.write.js +1 -1
  242. package/dist/folders/handlers/set-folder.write.js +1 -1
  243. package/dist/folders/index.d.ts +1 -1
  244. package/dist/folders/index.js +1 -1
  245. package/dist/folders/web/client-plugin.js +1 -2
  246. package/dist/folders/{constants.js → web/constants.js} +0 -1
  247. package/dist/folders/web/folder-manager.js +1 -2
  248. package/dist/folders/web/folder-section.js +1 -2
  249. package/dist/folders/web/i18n.js +0 -1
  250. package/dist/folders/web/index.d.ts +1 -1
  251. package/dist/folders/web/index.js +1 -2
  252. package/dist/folders/web/tree.js +0 -1
  253. package/dist/form-draft/db/queries/cleanup.d.ts +3 -2
  254. package/dist/form-draft/db/queries/cleanup.js +18 -9
  255. package/dist/form-draft/decrypt-draft.d.ts +2 -0
  256. package/dist/form-draft/decrypt-draft.js +19 -0
  257. package/dist/form-draft/entity.js +6 -9
  258. package/dist/form-draft/feature.js +1 -1
  259. package/dist/form-draft/handlers/cleanup.job.d.ts +1 -0
  260. package/dist/form-draft/handlers/cleanup.job.js +17 -4
  261. package/dist/form-draft/handlers/discard.write.js +1 -1
  262. package/dist/form-draft/handlers/get.query.js +6 -7
  263. package/dist/form-draft/handlers/list.query.js +11 -7
  264. package/dist/form-draft/handlers/save.write.js +1 -1
  265. package/dist/form-draft/index.d.ts +1 -1
  266. package/dist/form-draft/index.js +1 -1
  267. package/dist/form-draft/lookup.d.ts +2 -2
  268. package/dist/form-draft/lookup.js +7 -2
  269. package/dist/form-draft/schemas.js +1 -1
  270. package/dist/form-draft/{constants.js → web/constants.js} +0 -1
  271. package/dist/form-draft-user-data/hooks.js +2 -2
  272. package/dist/inbound-mail-foundation/handlers/list-accounts.query.d.ts +1 -1
  273. package/dist/inbound-mail-foundation/handlers/list-accounts.query.js +11 -3
  274. package/dist/inbound-mail-foundation/retention-sweep.js +7 -5
  275. package/dist/jobs/feature.js +2 -2
  276. package/dist/jobs/handlers/retry.write.js +1 -1
  277. package/dist/jobs/handlers/trigger.write.js +1 -1
  278. package/dist/jobs/index.d.ts +1 -1
  279. package/dist/jobs/index.js +1 -1
  280. package/dist/jobs/web/client-plugin.js +2 -3
  281. package/dist/jobs/{constants.js → web/constants.js} +0 -1
  282. package/dist/jobs/web/default-translations.d.ts +2 -0
  283. package/dist/jobs/web/default-translations.js +3 -0
  284. package/dist/jobs/web/i18n.d.ts +5 -2
  285. package/dist/jobs/web/i18n.js +51 -4
  286. package/dist/jobs/web/index.js +0 -1
  287. package/dist/ledger/entity.d.ts +1 -1
  288. package/dist/ledger/entity.js +1 -1
  289. package/dist/ledger/feature.js +1 -1
  290. package/dist/ledger/handlers/confirm-schedule-period.write.js +2 -5
  291. package/dist/ledger/handlers/create-transaction.write.js +1 -1
  292. package/dist/ledger/handlers/reports.query.js +1 -1
  293. package/dist/ledger/handlers/reverse-transaction.write.js +1 -1
  294. package/dist/ledger/index.d.ts +1 -1
  295. package/dist/ledger/index.js +1 -1
  296. package/dist/ledger/recurring.d.ts +1 -1
  297. package/dist/ledger/reports.d.ts +1 -1
  298. package/dist/ledger/schemas.js +1 -1
  299. package/dist/ledger/{constants.js → web/constants.js} +0 -1
  300. package/dist/ledger/web/index.d.ts +1 -1
  301. package/dist/ledger/web/index.js +1 -2
  302. package/dist/legal-pages/feature.d.ts +1 -1
  303. package/dist/legal-pages/feature.js +1 -1
  304. package/dist/legal-pages/index.d.ts +1 -1
  305. package/dist/legal-pages/index.js +1 -1
  306. package/dist/legal-pages/lib/boot-check.d.ts +1 -1
  307. package/dist/legal-pages/lib/boot-check.js +1 -1
  308. package/dist/legal-pages/lib/validate-routes.d.ts +1 -1
  309. package/dist/legal-pages/web/client-plugin.js +1 -2
  310. package/dist/legal-pages/{constants.js → web/constants.js} +6 -8
  311. package/dist/legal-pages/web/index.js +0 -1
  312. package/dist/mail-foundation/i18n.d.ts +5 -2
  313. package/dist/mail-foundation/i18n.js +3 -2
  314. package/dist/mail-transport-smtp/i18n.d.ts +1 -1
  315. package/dist/mail-transport-smtp/i18n.js +1 -1
  316. package/dist/managed-pages/feature.js +1 -1
  317. package/dist/managed-pages/web/client-plugin.js +1 -2
  318. package/dist/managed-pages/web/default-translations.d.ts +2 -0
  319. package/dist/managed-pages/web/default-translations.js +11 -0
  320. package/dist/managed-pages/web/i18n.d.ts +5 -2
  321. package/dist/managed-pages/web/i18n.js +53 -12
  322. package/dist/managed-pages/web/index.d.ts +1 -1
  323. package/dist/managed-pages/web/index.js +1 -2
  324. package/dist/metrics/compute.d.ts +1 -1
  325. package/dist/metrics/compute.js +1 -1
  326. package/dist/metrics/feature.js +1 -1
  327. package/dist/metrics/index.d.ts +1 -1
  328. package/dist/metrics/index.js +1 -1
  329. package/dist/metrics/types.d.ts +1 -1
  330. package/dist/metrics/validate.js +1 -1
  331. package/dist/metrics/{constants.js → web/constants.js} +0 -1
  332. package/dist/metrics/window.d.ts +1 -1
  333. package/dist/notes-history/feature.js +1 -1
  334. package/dist/notes-history/handlers/add-note.write.js +1 -1
  335. package/dist/notes-history/index.d.ts +1 -1
  336. package/dist/notes-history/index.js +1 -1
  337. package/dist/notes-history/web/client-plugin.js +1 -2
  338. package/dist/notes-history/{constants.js → web/constants.js} +0 -1
  339. package/dist/notes-history/web/i18n.js +0 -1
  340. package/dist/notes-history/web/index.d.ts +1 -1
  341. package/dist/notes-history/web/index.js +1 -2
  342. package/dist/notes-history/web/notes-section.js +2 -3
  343. package/dist/personal-access-tokens/feature.d.ts +2 -2
  344. package/dist/personal-access-tokens/feature.js +6 -4
  345. package/dist/personal-access-tokens/handlers/available-scopes.query.d.ts +1 -1
  346. package/dist/personal-access-tokens/handlers/create.write.js +1 -1
  347. package/dist/personal-access-tokens/handlers/revoke.write.js +1 -1
  348. package/dist/personal-access-tokens/hash.js +1 -1
  349. package/dist/personal-access-tokens/i18n.d.ts +1 -1
  350. package/dist/personal-access-tokens/i18n.js +1 -1
  351. package/dist/personal-access-tokens/index.d.ts +5 -5
  352. package/dist/personal-access-tokens/index.js +3 -3
  353. package/dist/personal-access-tokens/resolver.d.ts +1 -1
  354. package/dist/personal-access-tokens/resolver.js +1 -1
  355. package/dist/personal-access-tokens/schema/api-token.js +1 -1
  356. package/dist/personal-access-tokens/screens.d.ts +1 -1
  357. package/dist/personal-access-tokens/screens.js +1 -1
  358. package/dist/personal-access-tokens/{constants.js → web/constants.js} +0 -1
  359. package/dist/presets/index.d.ts +0 -1
  360. package/dist/presets/index.js +0 -1
  361. package/dist/presets/security-baseline.d.ts +1 -1
  362. package/dist/presets/security-baseline.js +1 -1
  363. package/dist/secrets/feature.js +1 -1
  364. package/dist/secrets/handlers/delete.write.js +1 -1
  365. package/dist/secrets/handlers/list.query.js +1 -1
  366. package/dist/secrets/handlers/set.write.js +1 -1
  367. package/dist/secrets/i18n.js +1 -1
  368. package/dist/secrets/index.d.ts +1 -1
  369. package/dist/secrets/index.js +1 -1
  370. package/dist/secrets/{constants.js → web/constants.js} +0 -1
  371. package/dist/secrets/write-gate.js +1 -1
  372. package/dist/sessions/feature.js +7 -4
  373. package/dist/sessions/{i18n.js → web/i18n.js} +0 -1
  374. package/dist/shared/index.d.ts +1 -1
  375. package/dist/shared/index.js +1 -1
  376. package/dist/shared/purge-files-reaching-subject.js +7 -3
  377. package/dist/subscription-stripe/feature.js +2 -1
  378. package/dist/subscription-stripe/plugin-methods.d.ts +3 -0
  379. package/dist/subscription-stripe/plugin-methods.js +14 -0
  380. package/dist/subscription-stripe/verify-webhook.js +1 -0
  381. package/dist/tags/feature.js +1 -1
  382. package/dist/tags/handlers/assign-tag.write.js +11 -7
  383. package/dist/tags/handlers/create-tag.write.js +1 -1
  384. package/dist/tags/handlers/delete-tag.write.js +4 -1
  385. package/dist/tags/handlers/remove-tag.write.js +1 -1
  386. package/dist/tags/handlers/update-tag.write.js +1 -1
  387. package/dist/tags/index.d.ts +1 -1
  388. package/dist/tags/index.js +1 -1
  389. package/dist/tags/screens.js +1 -1
  390. package/dist/tags/web/client-plugin.js +1 -2
  391. package/dist/tags/{constants.d.ts → web/constants.d.ts} +1 -0
  392. package/dist/tags/{constants.js → web/constants.js} +3 -1
  393. package/dist/tags/web/entity-tags.js +1 -2
  394. package/dist/tags/web/i18n.js +2 -2
  395. package/dist/tags/web/index.d.ts +1 -1
  396. package/dist/tags/web/index.js +1 -2
  397. package/dist/tags/web/tag-filter.js +1 -2
  398. package/dist/tags/web/tag-manager.js +5 -4
  399. package/dist/tags/web/tag-picker.js +0 -1
  400. package/dist/tags/web/tag-section.js +1 -2
  401. package/dist/tags/web/tags-cell.js +1 -2
  402. package/dist/template-resolver/api.d.ts +21 -23
  403. package/dist/template-resolver/api.js +34 -6
  404. package/dist/template-resolver/compile-document-body.d.ts +3 -0
  405. package/dist/template-resolver/compile-document-body.js +51 -4
  406. package/dist/template-resolver/compile-steps-block.js +2 -2
  407. package/dist/template-resolver/document-ops.d.ts +1 -1
  408. package/dist/template-resolver/document-ops.js +3 -3
  409. package/dist/template-resolver/document-sanitizer.d.ts +2 -2
  410. package/dist/template-resolver/document-sanitizer.js +23 -3
  411. package/dist/template-resolver/feature.d.ts +11 -0
  412. package/dist/template-resolver/feature.js +68 -35
  413. package/dist/template-resolver/handlers/by-slug.query.js +6 -1
  414. package/dist/template-resolver/handlers/by-tenant.query.js +6 -2
  415. package/dist/template-resolver/handlers/collection-item.query.js +2 -1
  416. package/dist/template-resolver/handlers/collection-list.query.js +2 -1
  417. package/dist/template-resolver/handlers/collection-set.write.d.ts +2 -1
  418. package/dist/template-resolver/handlers/collection-set.write.js +15 -3
  419. package/dist/template-resolver/handlers/collection-shared.d.ts +1 -2
  420. package/dist/template-resolver/handlers/collection-shared.js +0 -4
  421. package/dist/template-resolver/handlers/copy-locale.write.d.ts +2 -1
  422. package/dist/template-resolver/handlers/copy-locale.write.js +69 -65
  423. package/dist/template-resolver/handlers/diff-to-system.query.js +5 -1
  424. package/dist/template-resolver/handlers/discard-draft.write.d.ts +3 -2
  425. package/dist/template-resolver/handlers/discard-draft.write.js +19 -7
  426. package/dist/template-resolver/handlers/document-base.d.ts +1 -1
  427. package/dist/template-resolver/handlers/document-base.js +6 -1
  428. package/dist/template-resolver/handlers/document-blocks.query.d.ts +1 -1
  429. package/dist/template-resolver/handlers/document-blocks.query.js +2 -2
  430. package/dist/template-resolver/handlers/export-bundle.query.js +5 -2
  431. package/dist/template-resolver/handlers/find-by-id.query.js +4 -2
  432. package/dist/template-resolver/handlers/import-bundle.write.d.ts +2 -1
  433. package/dist/template-resolver/handlers/import-bundle.write.js +30 -25
  434. package/dist/template-resolver/handlers/layout-source.query.js +5 -5
  435. package/dist/template-resolver/handlers/list.query.js +5 -2
  436. package/dist/template-resolver/handlers/overview.query.d.ts +12 -3
  437. package/dist/template-resolver/handlers/overview.query.js +87 -51
  438. package/dist/template-resolver/handlers/patch-draft.write.d.ts +2 -1
  439. package/dist/template-resolver/handlers/patch-draft.write.js +93 -87
  440. package/dist/template-resolver/handlers/reset-to-system.write.d.ts +2 -1
  441. package/dist/template-resolver/handlers/reset-to-system.write.js +51 -44
  442. package/dist/template-resolver/handlers/resource-link-pdf.write.d.ts +2 -1
  443. package/dist/template-resolver/handlers/resource-link-pdf.write.js +34 -28
  444. package/dist/template-resolver/handlers/resource-remove.write.d.ts +2 -1
  445. package/dist/template-resolver/handlers/resource-remove.write.js +39 -33
  446. package/dist/template-resolver/handlers/resource-shared.js +1 -1
  447. package/dist/template-resolver/handlers/resource-upload.write.d.ts +2 -1
  448. package/dist/template-resolver/handlers/resource-upload.write.js +105 -97
  449. package/dist/template-resolver/handlers/send-test-shared.d.ts +5 -0
  450. package/dist/template-resolver/handlers/send-test-shared.js +19 -0
  451. package/dist/template-resolver/handlers/send-test-status.query.d.ts +9 -0
  452. package/dist/template-resolver/handlers/send-test-status.query.js +18 -0
  453. package/dist/template-resolver/handlers/send-test.write.d.ts +2 -1
  454. package/dist/template-resolver/handlers/send-test.write.js +89 -91
  455. package/dist/template-resolver/handlers/set.write.d.ts +2 -1
  456. package/dist/template-resolver/handlers/set.write.js +95 -91
  457. package/dist/template-resolver/handlers/shared.js +1 -1
  458. package/dist/template-resolver/handlers/template-gates.d.ts +1 -1
  459. package/dist/template-resolver/handlers/template-gates.js +1 -1
  460. package/dist/template-resolver/handlers/template-write.d.ts +1 -1
  461. package/dist/template-resolver/handlers/template-write.js +1 -1
  462. package/dist/template-resolver/handlers/toggle-status.write.d.ts +6 -7
  463. package/dist/template-resolver/handlers/toggle-status.write.js +28 -10
  464. package/dist/template-resolver/handlers/upsert-tenant.write.d.ts +2 -1
  465. package/dist/template-resolver/handlers/upsert-tenant.write.js +30 -24
  466. package/dist/template-resolver/handlers/usage.query.js +3 -2
  467. package/dist/template-resolver/handlers/validate.query.d.ts +1 -1
  468. package/dist/template-resolver/handlers/validate.query.js +3 -1
  469. package/dist/template-resolver/i18n.d.ts +3 -0
  470. package/dist/template-resolver/i18n.js +24 -0
  471. package/dist/template-resolver/index.d.ts +8 -5
  472. package/dist/template-resolver/index.js +6 -4
  473. package/dist/template-resolver/layout-appearance.js +1 -1
  474. package/dist/template-resolver/layout-regions.d.ts +1 -1
  475. package/dist/template-resolver/seeding.d.ts +4 -1
  476. package/dist/template-resolver/seeding.js +13 -7
  477. package/dist/template-resolver/store-template-resource.js +2 -2
  478. package/dist/template-resolver/table.js +1 -1
  479. package/dist/template-resolver/template-bundle.js +2 -2
  480. package/dist/template-resolver/template-delivery-policy.d.ts +22 -0
  481. package/dist/template-resolver/template-delivery-policy.js +40 -0
  482. package/dist/template-resolver/template-draft.d.ts +1 -1
  483. package/dist/template-resolver/template-draft.js +1 -1
  484. package/dist/template-resolver/template-edit-policy.d.ts +22 -0
  485. package/dist/template-resolver/template-edit-policy.js +45 -0
  486. package/dist/template-resolver/template-meta.d.ts +2 -2
  487. package/dist/template-resolver/template-meta.js +2 -2
  488. package/dist/template-resolver/template-preview.d.ts +1 -1
  489. package/dist/template-resolver/template-preview.js +15 -6
  490. package/dist/template-resolver/template-usage.d.ts +1 -1
  491. package/dist/template-resolver/template-usage.js +1 -1
  492. package/dist/template-resolver/template-validation.js +34 -14
  493. package/dist/template-resolver/testing.js +1 -1
  494. package/dist/template-resolver/user-content-table.js +1 -1
  495. package/dist/template-resolver/web/client-plugin.js +1 -2
  496. package/dist/template-resolver/{constants.d.ts → web/constants.d.ts} +4 -1
  497. package/dist/template-resolver/{constants.js → web/constants.js} +9 -10
  498. package/dist/template-resolver/{document-blocks.d.ts → web/document-blocks.d.ts} +2 -2
  499. package/dist/template-resolver/{document-blocks.js → web/document-blocks.js} +1 -0
  500. package/dist/template-resolver/web/document-editor-extensions.d.ts +1 -0
  501. package/dist/template-resolver/web/document-editor-extensions.js +22 -2
  502. package/dist/template-resolver/web/document-editor.js +0 -1
  503. package/dist/template-resolver/web/document-images.d.ts +2 -0
  504. package/dist/template-resolver/web/document-images.js +27 -0
  505. package/dist/template-resolver/{document-schema.d.ts → web/document-schema.d.ts} +2 -1
  506. package/dist/template-resolver/{document-schema.js → web/document-schema.js} +4 -1
  507. package/dist/template-resolver/{document-steps.js → web/document-steps.js} +0 -1
  508. package/dist/template-resolver/web/document-tiptap-editor.d.ts +1 -1
  509. package/dist/template-resolver/web/document-tiptap-editor.js +24 -9
  510. package/dist/template-resolver/web/document-toolbar-blocks.d.ts +4 -2
  511. package/dist/template-resolver/web/document-toolbar-blocks.js +1 -1
  512. package/dist/template-resolver/web/editor-handle.js +1 -1
  513. package/dist/template-resolver/web/i18n.js +5 -1
  514. package/dist/template-resolver/web/index.d.ts +3 -3
  515. package/dist/template-resolver/web/index.js +3 -4
  516. package/dist/template-resolver/{mail-constants.js → web/mail-constants.js} +0 -1
  517. package/dist/template-resolver/{pdf-constants.js → web/pdf-constants.js} +0 -1
  518. package/dist/template-resolver/web/placeholder-line-editor-lazy.js +0 -1
  519. package/dist/template-resolver/web/placeholder-line-editor.js +6 -4
  520. package/dist/template-resolver/{qualified-names.d.ts → web/qualified-names.d.ts} +2 -0
  521. package/dist/template-resolver/{qualified-names.js → web/qualified-names.js} +2 -1
  522. package/dist/template-resolver/web/use-stable-by-key.js +0 -1
  523. package/dist/tenant/handlers/add-member.write.js +1 -1
  524. package/dist/tenant/index.d.ts +1 -1
  525. package/dist/tenant/index.js +1 -1
  526. package/dist/tenant/invitation-table.js +1 -1
  527. package/dist/tenant/invited-membership.js +1 -1
  528. package/dist/tenant/last-tenant-admin.js +1 -1
  529. package/dist/tenant/member-role-options.js +1 -1
  530. package/dist/tenant/screens.js +1 -1
  531. package/dist/tenant/web/client-plugin.js +1 -2
  532. package/dist/tenant/{constants.js → web/constants.js} +3 -6
  533. package/dist/tenant/web/index.js +0 -1
  534. package/dist/tenant/web/member-roles-cell.js +0 -1
  535. package/dist/tenant/web/member-status-cell.js +0 -1
  536. package/dist/tenant-lifecycle/stages.js +2 -3
  537. package/dist/tier-engine/entity.d.ts +1 -1
  538. package/dist/tier-engine/entity.js +1 -1
  539. package/dist/tier-engine/feature.js +2 -2
  540. package/dist/tier-engine/handlers/set-tenant-tier.write.js +1 -1
  541. package/dist/tier-engine/index.d.ts +1 -1
  542. package/dist/tier-engine/index.js +1 -1
  543. package/dist/tier-engine/web/client-plugin.js +2 -3
  544. package/dist/tier-engine/{constants.js → web/constants.js} +2 -3
  545. package/dist/tier-engine/{i18n.js → web/i18n.js} +0 -1
  546. package/dist/tier-engine/web/index.js +0 -1
  547. package/dist/user/handlers/create.write.js +1 -1
  548. package/dist/user/handlers/update-roles.js +1 -1
  549. package/dist/user/handlers/update.write.js +1 -1
  550. package/dist/user/index.d.ts +1 -1
  551. package/dist/user/index.js +1 -1
  552. package/dist/user/invited-global-roles.d.ts +1 -1
  553. package/dist/user/invited-global-roles.js +1 -1
  554. package/dist/user/schema/user.js +1 -1
  555. package/dist/user/{constants.js → web/constants.js} +0 -1
  556. package/dist/user-data-rights/env.js +1 -1
  557. package/dist/user-data-rights/feature.js +3 -3
  558. package/dist/user-data-rights/index.d.ts +1 -1
  559. package/dist/user-data-rights/index.js +1 -1
  560. package/dist/user-data-rights/lib/resolve-tenant-model.js +1 -1
  561. package/dist/user-data-rights/mail-notifications.js +1 -1
  562. package/dist/user-data-rights/web/client-plugin.js +2 -3
  563. package/dist/user-data-rights/web/confirm-deletion-screen.js +0 -1
  564. package/dist/user-data-rights/{constants.js → web/constants.js} +11 -12
  565. package/dist/user-data-rights/web/default-translations.d.ts +2 -0
  566. package/dist/user-data-rights/web/default-translations.js +59 -0
  567. package/dist/user-data-rights/web/i18n.d.ts +5 -2
  568. package/dist/user-data-rights/web/i18n.js +37 -59
  569. package/dist/user-data-rights/web/index.d.ts +1 -1
  570. package/dist/user-data-rights/web/index.js +1 -2
  571. package/dist/user-data-rights/web/privacy-center-screen.js +1 -2
  572. package/dist/user-data-rights/web/request-deletion-screen.js +0 -1
  573. package/dist/user-data-rights-defaults/hooks/file-ref.userdata-hook.js +6 -1
  574. package/dist/user-profile/feature.js +1 -1
  575. package/dist/user-profile/handlers/change-email.write.js +1 -1
  576. package/dist/user-profile/index.d.ts +1 -1
  577. package/dist/user-profile/index.js +1 -1
  578. package/dist/user-profile/web/client-plugin.js +2 -3
  579. package/dist/user-profile/{constants.js → web/constants.js} +0 -1
  580. package/dist/user-profile/{i18n.js → web/i18n.js} +0 -1
  581. package/dist/user-profile/web/profile-screen.js +2 -3
  582. package/dist/waitlist/entity.js +1 -1
  583. package/dist/waitlist/feature.js +1 -1
  584. package/dist/waitlist/handlers/export-purge.write.js +1 -1
  585. package/dist/waitlist/handlers/invite.write.js +1 -1
  586. package/dist/waitlist/handlers/reject.write.js +1 -1
  587. package/dist/waitlist/handlers/submit.write.js +4 -3
  588. package/dist/waitlist/import.d.ts +1 -1
  589. package/dist/waitlist/index.d.ts +1 -1
  590. package/dist/waitlist/index.js +1 -1
  591. package/dist/waitlist/legacy-migrate.js +1 -1
  592. package/dist/waitlist/link-on-signup.js +1 -1
  593. package/dist/waitlist/mail.d.ts +0 -1
  594. package/dist/waitlist/mail.js +6 -4
  595. package/dist/waitlist/payloads.js +1 -1
  596. package/dist/waitlist/screens.js +1 -1
  597. package/dist/waitlist/{constants.js → web/constants.js} +0 -1
  598. package/kumiko-es-tables.json +102 -0
  599. package/package.json +30 -29
  600. package/src/audit/changes.json +7 -0
  601. package/src/auth-email-password/changes.json +6 -0
  602. package/src/auth-mfa/changes.json +6 -0
  603. package/src/billing-foundation/changes.json +18 -0
  604. package/src/cap-counter/changes.json +12 -0
  605. package/src/delivery/changes.json +6 -0
  606. package/src/document-ingest-foundation/changes.json +6 -0
  607. package/src/files/changes.json +7 -0
  608. package/src/form-draft/changes.json +7 -0
  609. package/src/inbound-mail-foundation/changes.json +6 -0
  610. package/src/ledger/changes.json +7 -0
  611. package/src/mail-foundation/changes.json +6 -0
  612. package/src/presets/changes.json +7 -0
  613. package/src/tags/changes.json +6 -0
  614. package/src/template-resolver/changes.json +63 -0
  615. package/src/user-data-rights/changes.json +14 -0
  616. package/src/waitlist/changes.json +6 -0
  617. package/dist/admin-shell/i18n.d.ts +0 -5
  618. package/dist/admin-shell/i18n.js +0 -51
  619. package/dist/audit/i18n.d.ts +0 -5
  620. package/dist/audit/i18n.js +0 -22
  621. package/dist/jobs/i18n.d.ts +0 -5
  622. package/dist/jobs/i18n.js +0 -52
  623. package/dist/managed-pages/i18n.d.ts +0 -5
  624. package/dist/managed-pages/i18n.js +0 -55
  625. package/dist/presets/dsgvo-self-service.d.ts +0 -10
  626. package/dist/presets/dsgvo-self-service.js +0 -24
  627. package/dist/user-data-rights/i18n.d.ts +0 -5
  628. package/dist/user-data-rights/i18n.js +0 -39
  629. /package/dist/account-security/{constants.d.ts → web/constants.d.ts} +0 -0
  630. /package/dist/account-security/{i18n.d.ts → web/i18n.d.ts} +0 -0
  631. /package/dist/admin-shell/{constants.d.ts → web/constants.d.ts} +0 -0
  632. /package/dist/auth-email-password/{constants.d.ts → web/constants.d.ts} +0 -0
  633. /package/dist/auth-email-password/{i18n.d.ts → web/i18n.d.ts} +0 -0
  634. /package/dist/auth-email-password/{mail-i18n.d.ts → web/mail-i18n.d.ts} +0 -0
  635. /package/dist/auth-mfa/{constants.d.ts → web/constants.d.ts} +0 -0
  636. /package/dist/billing-foundation/{consumer-protection → web/consumer-protection}/consent-locale.d.ts +0 -0
  637. /package/dist/billing-foundation/{contact-card.d.ts → web/contact-card.d.ts} +0 -0
  638. /package/dist/cap-overview/{constants.d.ts → web/constants.d.ts} +0 -0
  639. /package/dist/cap-overview/{usage-math.js → web/usage-math.js} +0 -0
  640. /package/dist/compliance-profiles/{constants.d.ts → web/constants.d.ts} +0 -0
  641. /package/dist/config/{constants.d.ts → web/constants.d.ts} +0 -0
  642. /package/dist/custom-fields/{constants.d.ts → web/constants.d.ts} +0 -0
  643. /package/dist/delivery/{public-names.d.ts → web/public-names.d.ts} +0 -0
  644. /package/dist/feature-toggles/{constants.d.ts → web/constants.d.ts} +0 -0
  645. /package/dist/folders/{constants.d.ts → web/constants.d.ts} +0 -0
  646. /package/dist/form-draft/{constants.d.ts → web/constants.d.ts} +0 -0
  647. /package/dist/jobs/{constants.d.ts → web/constants.d.ts} +0 -0
  648. /package/dist/ledger/{constants.d.ts → web/constants.d.ts} +0 -0
  649. /package/dist/legal-pages/{constants.d.ts → web/constants.d.ts} +0 -0
  650. /package/dist/metrics/{constants.d.ts → web/constants.d.ts} +0 -0
  651. /package/dist/notes-history/{constants.d.ts → web/constants.d.ts} +0 -0
  652. /package/dist/personal-access-tokens/{constants.d.ts → web/constants.d.ts} +0 -0
  653. /package/dist/personal-access-tokens/{scopes.d.ts → web/scopes.d.ts} +0 -0
  654. /package/dist/personal-access-tokens/{scopes.js → web/scopes.js} +0 -0
  655. /package/dist/secrets/{constants.d.ts → web/constants.d.ts} +0 -0
  656. /package/dist/sessions/{i18n.d.ts → web/i18n.d.ts} +0 -0
  657. /package/dist/template-resolver/{document-steps.d.ts → web/document-steps.d.ts} +0 -0
  658. /package/dist/template-resolver/{mail-constants.d.ts → web/mail-constants.d.ts} +0 -0
  659. /package/dist/template-resolver/{pdf-constants.d.ts → web/pdf-constants.d.ts} +0 -0
  660. /package/dist/template-resolver/{placeholder-text.d.ts → web/placeholder-text.d.ts} +0 -0
  661. /package/dist/template-resolver/{placeholder-text.js → web/placeholder-text.js} +0 -0
  662. /package/dist/tenant/{constants.d.ts → web/constants.d.ts} +0 -0
  663. /package/dist/tier-engine/{constants.d.ts → web/constants.d.ts} +0 -0
  664. /package/dist/tier-engine/{i18n.d.ts → web/i18n.d.ts} +0 -0
  665. /package/dist/user/{constants.d.ts → web/constants.d.ts} +0 -0
  666. /package/dist/user-data-rights/{constants.d.ts → web/constants.d.ts} +0 -0
  667. /package/dist/user-profile/{constants.d.ts → web/constants.d.ts} +0 -0
  668. /package/dist/user-profile/{i18n.d.ts → web/i18n.d.ts} +0 -0
  669. /package/dist/waitlist/{constants.d.ts → web/constants.d.ts} +0 -0
@@ -1,5 +1,5 @@
1
- import type { AccountType } from "./constants.ts";
2
1
  import type { Posting } from "./schemas.ts";
2
+ import type { AccountType } from "./web/constants.ts";
3
3
  export type LedgerAccount = {
4
4
  readonly id: string;
5
5
  readonly name: string;
@@ -1,5 +1,5 @@
1
1
  import * as z from "zod";
2
- import { ACCOUNT_TYPES, TRANSACTION_STATUS } from "./constants.js";
2
+ import { ACCOUNT_TYPES, TRANSACTION_STATUS } from "./web/constants.js";
3
3
  // A posting line. amount is integer minor units (cents), SIGNED: Soll/debit > 0,
4
4
  // Haben/credit < 0. Integer → the balance check is exact (=== 0), no float epsilon.
5
5
  export const postingSchema = z.object({
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // ledger bundle constants — feature-name + qualified handler/query names.
3
2
  //
4
3
  // Spec: kumiko-platform/docs/plans/ledger-feature.md
@@ -1,3 +1,3 @@
1
- export { ACCOUNT_TYPES, type AccountType, LEDGER_FEATURE_NAME, LedgerHandlers, LedgerQueries, SCHEDULE_INTERVALS, type ScheduleInterval, TRANSACTION_STATUS, type TransactionStatus, } from "../constants.ts";
2
1
  export { type LedgerTxRow, mergeScheduleActuals, type ProjectedPeriod, projectSchedule, type ScheduleDef, type ScheduleMonth, type ScheduleMonthStatus, scheduleReference, } from "../recurring.ts";
3
2
  export { type ConfirmSchedulePeriodPayload, confirmSchedulePeriodPayloadSchema, type Posting, postingSchema, } from "../schemas.ts";
3
+ export { ACCOUNT_TYPES, type AccountType, LEDGER_FEATURE_NAME, LedgerHandlers, LedgerQueries, SCHEDULE_INTERVALS, type ScheduleInterval, TRANSACTION_STATUS, type TransactionStatus, } from "./constants.ts";
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Client-safe ledger surface: QN constants, the pure recurring helpers
3
2
  // (projection + Soll/Ist merge), and the Zod payload schemas (for client-side
4
3
  // pre-validation before dispatch) — nothing else. The full `../ledger` entry
@@ -6,6 +5,6 @@
6
5
  // browser bundle that imports from there fails on Node builtins. A client screen
7
6
  // (e.g. a rent-cashflow view) imports the dispatch QNs + the pure forecast/merge
8
7
  // from HERE, then dispatches via the renderer's useDispatcher.
9
- export { ACCOUNT_TYPES, LEDGER_FEATURE_NAME, LedgerHandlers, LedgerQueries, SCHEDULE_INTERVALS, TRANSACTION_STATUS, } from "../constants.js";
10
8
  export { mergeScheduleActuals, projectSchedule, scheduleReference, } from "../recurring.js";
11
9
  export { confirmSchedulePeriodPayloadSchema, postingSchema, } from "../schemas.js";
10
+ export { ACCOUNT_TYPES, LEDGER_FEATURE_NAME, LedgerHandlers, LedgerQueries, SCHEDULE_INTERVALS, TRANSACTION_STATUS, } from "./constants.js";
@@ -1,6 +1,6 @@
1
1
  import { type FeatureDefinition } from "@cosmicdrift/kumiko-framework/engine";
2
2
  import { type PublicPageWrapLayout } from "../page-render/index.ts";
3
- import { type LegalPageRoute, type LegalRequiredBlock } from "./constants.ts";
3
+ import { type LegalPageRoute, type LegalRequiredBlock } from "./web/constants.ts";
4
4
  export { type LegalPagesBootCheckCtx, runLegalPagesBootCheck } from "./lib/boot-check.ts";
5
5
  export type LegalPagesWrapLayout = PublicPageWrapLayout;
6
6
  export type LegalPagesOptions = {
@@ -2,10 +2,10 @@ import { computeRevisionEtag, etagMatches } from "@cosmicdrift/kumiko-framework/
2
2
  import { defineFeature, SYSTEM_TENANT_ID, } from "@cosmicdrift/kumiko-framework/engine";
3
3
  import { escapeHtml } from "@cosmicdrift/kumiko-renderer/headless";
4
4
  import { cachedSecurePageResponse, redirectToCanonicalPath, slashVariantOf, } from "../page-render/index.js";
5
- import { LEGAL_REQUIRED_BLOCKS, LEGAL_ROUTES, LEGAL_TERMS_ROUTES, } from "./constants.js";
6
5
  import { runLegalPagesBootCheck } from "./lib/boot-check.js";
7
6
  import { validateRoutes } from "./lib/validate-routes.js";
8
7
  import { renderMarkdownToHtml, wrapInLayout } from "./markdown.js";
8
+ import { LEGAL_REQUIRED_BLOCKS, LEGAL_ROUTES, LEGAL_TERMS_ROUTES, } from "./web/constants.js";
9
9
  export { runLegalPagesBootCheck } from "./lib/boot-check.js";
10
10
  // QN-Konstante als dokumentierter Public-Contract des template-resolver-
11
11
  // Features. Ein magic-string statt eines Code-Imports ist hier explizit
@@ -1,5 +1,5 @@
1
- export { LEGAL_OPTIONAL_BLOCKS, LEGAL_PAGES_FEATURE, LEGAL_REQUIRED_BLOCKS, LEGAL_ROUTES, LEGAL_TERMS_ROUTES, type LegalPageRoute, LegalPagesErrors, type LegalRequiredBlock, legalPagePath, } from "./constants.ts";
2
1
  export { createLegalPagesFeature, type LegalPagesBootCheckCtx, type LegalPagesOptions, runLegalPagesBootCheck, } from "./feature.ts";
3
2
  export { createLegalPagesLayout, type LegalPagesLayoutOptions } from "./layout.ts";
4
3
  export { renderMarkdownToHtml, wrapInLayout } from "./markdown.ts";
5
4
  export { type LegalContentBlock, type LegalContentSeedFn, type LegalContentSeedSource, legalContentSeed, } from "./seed.ts";
5
+ export { LEGAL_OPTIONAL_BLOCKS, LEGAL_PAGES_FEATURE, LEGAL_REQUIRED_BLOCKS, LEGAL_ROUTES, LEGAL_TERMS_ROUTES, type LegalPageRoute, LegalPagesErrors, type LegalRequiredBlock, legalPagePath, } from "./web/constants.ts";
@@ -1,5 +1,5 @@
1
- export { LEGAL_OPTIONAL_BLOCKS, LEGAL_PAGES_FEATURE, LEGAL_REQUIRED_BLOCKS, LEGAL_ROUTES, LEGAL_TERMS_ROUTES, LegalPagesErrors, legalPagePath, } from "./constants.js";
2
1
  export { createLegalPagesFeature, runLegalPagesBootCheck, } from "./feature.js";
3
2
  export { createLegalPagesLayout } from "./layout.js";
4
3
  export { renderMarkdownToHtml, wrapInLayout } from "./markdown.js";
5
4
  export { legalContentSeed, } from "./seed.js";
5
+ export { LEGAL_OPTIONAL_BLOCKS, LEGAL_PAGES_FEATURE, LEGAL_REQUIRED_BLOCKS, LEGAL_ROUTES, LEGAL_TERMS_ROUTES, LegalPagesErrors, legalPagePath, } from "./web/constants.js";
@@ -1,5 +1,5 @@
1
1
  import { type TemplateResolverApi } from "@cosmicdrift/kumiko-bundled-features/template-resolver";
2
- import { type LegalRequiredBlock } from "../constants.ts";
2
+ import { type LegalRequiredBlock } from "../web/constants.ts";
3
3
  export type LegalPagesBootCheckCtx = {
4
4
  readonly templateResolver?: TemplateResolverApi;
5
5
  readonly log?: {
@@ -1,6 +1,6 @@
1
1
  import { requireTemplateResolver, TEXT_BLOCK_KIND, } from "@cosmicdrift/kumiko-bundled-features/template-resolver";
2
2
  import { SYSTEM_TENANT_ID } from "@cosmicdrift/kumiko-framework/engine";
3
- import { LEGAL_REQUIRED_BLOCKS } from "../constants.js";
3
+ import { LEGAL_REQUIRED_BLOCKS } from "../web/constants.js";
4
4
  // Missing required blocks fail the boot only in production; elsewhere they warn,
5
5
  // so a dev setup without seeded legal texts still starts. A complete set logs
6
6
  // info on purpose, so a skipped check is visible.
@@ -1,2 +1,2 @@
1
- import type { LegalPageRoute } from "../constants.ts";
1
+ import type { LegalPageRoute } from "../web/constants.ts";
2
2
  export declare function validateRoutes(routes: readonly LegalPageRoute[]): void;
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Client-Feature-Factory für legal-pages Visual-Tree. Liefert statische
3
2
  // Tree-Knoten für die DACH-Compliance-Blöcke (imprint, privacy in de/en).
4
3
  // Jeder Knoten linkt auf text-content's edit-Action — reines Cross-Feature-
@@ -15,7 +14,7 @@
15
14
  // leer (Provider-Author-Hinweis dass Block existiert aber befüllt werden
16
15
  // muss). Aktuell ist legal-pages's Boot-Check der primäre Wächter für
17
16
  // fehlende Pflicht-Blocks.
18
- import { LEGAL_OPTIONAL_BLOCKS, LEGAL_REQUIRED_BLOCKS } from "../constants.js";
17
+ import { LEGAL_OPTIONAL_BLOCKS, LEGAL_REQUIRED_BLOCKS } from "./constants.js";
19
18
  const treeProvider = () => (emit) => {
20
19
  // V.1.5d Slug-first Verschachtelung (Variante C):
21
20
  // 📁 Legal
@@ -1,22 +1,20 @@
1
- // @runtime client
2
1
  // Feature name
3
2
  export const LEGAL_PAGES_FEATURE = "legal-pages";
4
3
  // Required slugs that must exist as text-blocks for production-boot.
5
- // Pro Sprache + Slug eine Pflicht-Kombo. Wer mehr Sprachen will, ergänzt
6
- // die Liste — Boot-Check wird dynamisch aus der Liste generiert.
4
+ // One mandatory slug per language; anyone who wants more languages extends
5
+ // the list, the boot check is generated dynamically from it.
7
6
  export const LEGAL_REQUIRED_BLOCKS = [
8
7
  { slug: "imprint", lang: "de" },
9
8
  { slug: "privacy", lang: "de" },
10
9
  ];
11
- // Optionale Blocks die NICHT Boot-fail-relevant sind, aber die Routes
12
- // servieren falls vorhanden. EN-Versionen sind in DACH-Apps oft nur
13
- // "nice-to-have".
10
+ // Optional blocks that are NOT boot-fail relevant, but whose routes are
11
+ // served when present. EN versions are often only nice-to-have in DACH apps.
14
12
  export const LEGAL_OPTIONAL_BLOCKS = [
15
13
  { slug: "imprint", lang: "en" },
16
14
  { slug: "privacy", lang: "en" },
17
15
  ];
18
- // Public-Route-Mapping: URL-Path → (slug, lang). DE nutzt die deutschen
19
- // Standard-Bezeichnungen, EN die englischen.
16
+ // Public route mapping: URL path -> (slug, lang). DE uses the German
17
+ // standard names, EN the English ones.
20
18
  export const LEGAL_ROUTES = [
21
19
  { path: "/legal/impressum", slug: "imprint", lang: "de", titleFallback: "Impressum" },
22
20
  {
@@ -1,3 +1,2 @@
1
- // @runtime client
2
1
  // Public exports für die Browser-Seite des legal-pages Features.
3
2
  export { legalPagesClient } from "./client-plugin.js";
@@ -6,9 +6,12 @@ export declare const MAIL_FOUNDATION_I18N: {
6
6
  readonly en: "Email sending";
7
7
  };
8
8
  readonly "mail-foundation.provider": {
9
- readonly en: "Own mail server";
9
+ readonly en: "Send via";
10
10
  };
11
11
  readonly "mail-foundation.provider.description": {
12
- readonly en: "Without one, the platform sends the mails. Reset the choice to go back to that.";
12
+ readonly en: "Choose who sends your emails. The platform default needs no settings of your own.";
13
+ };
14
+ readonly "mail-foundation.provider.platformDefault": {
15
+ readonly en: "Platform sending (default)";
13
16
  };
14
17
  };
@@ -1,8 +1,9 @@
1
1
  export const MAIL_FOUNDATION_I18N = {
2
2
  "screen:mail-foundation-tenant.title": { en: "Email sending" },
3
3
  "mail-foundation.settings": { en: "Email sending" },
4
- "mail-foundation.provider": { en: "Own mail server" },
4
+ "mail-foundation.provider": { en: "Send via" },
5
5
  "mail-foundation.provider.description": {
6
- en: "Without one, the platform sends the mails. Reset the choice to go back to that.",
6
+ en: "Choose who sends your emails. The platform default needs no settings of your own.",
7
7
  },
8
+ "mail-foundation.provider.platformDefault": { en: "Platform sending (default)" },
8
9
  };
@@ -1,6 +1,6 @@
1
1
  export declare const MAIL_TRANSPORT_SMTP_I18N: {
2
2
  readonly "mail-transport-smtp.settings": {
3
- readonly en: "SMTP server";
3
+ readonly en: "Own SMTP server";
4
4
  };
5
5
  readonly "mail-transport-smtp.settings.secrets": {
6
6
  readonly en: "SMTP sign-in";
@@ -1,6 +1,6 @@
1
1
  export const MAIL_TRANSPORT_SMTP_I18N = {
2
2
  // Also the option label of mail-foundation's provider select.
3
- "mail-transport-smtp.settings": { en: "SMTP server" },
3
+ "mail-transport-smtp.settings": { en: "Own SMTP server" },
4
4
  "mail-transport-smtp.settings.secrets": { en: "SMTP sign-in" },
5
5
  "mail-transport-smtp.settings.description": {
6
6
  en: "The connection details come from your mail provider, for example Brevo, Postmark, Amazon SES or your own server.",
@@ -9,10 +9,10 @@ import { bySlugQuery } from "./handlers/by-slug.query.js";
9
9
  import { byTenantPublishedQuery } from "./handlers/by-tenant-published.query.js";
10
10
  import { pageCrudQueries, pageCrudWrites } from "./handlers/page-crud.js";
11
11
  import { setWrite } from "./handlers/set.write.js";
12
- import { MANAGED_PAGES_I18N } from "./i18n.js";
13
12
  import { createBrandingSettingsScreen } from "./screens/branding-screen.js";
14
13
  import { pageEditScreen, pageListScreen } from "./screens/page-screens.js";
15
14
  import { pageEntity } from "./table.js";
15
+ import { MANAGED_PAGES_I18N } from "./web/i18n.js";
16
16
  // 60s-shared-cache saves the origin-revalidate roundtrip; CMS edits are live within 60s.
17
17
  const PUBLIC_PAGE_CACHE = { kind: "revalidate", maxAgeSeconds: 60 };
18
18
  // QN-Konstante als dokumentierter Public-Contract — der Render-Pfad ruft
@@ -1,11 +1,10 @@
1
- // @runtime client
2
1
  // Client-Feature-Factory für managed-pages. Bringt NUR die Übersetzungen mit —
3
2
  // die Screens (page-list/page-edit/branding-settings) sind schema-driven
4
3
  // (entityList/entityEdit/configEdit), also keine custom-React-Components zu
5
4
  // registrieren. Apps mounten es in createKumikoApp({ clientFeatures:
6
5
  // [managedPagesClient()] }), damit die Admin-Labels übersetzt rendern.
7
6
  import { mergeTranslations } from "@cosmicdrift/kumiko-renderer";
8
- import { defaultTranslations } from "./i18n.js";
7
+ import { defaultTranslations } from "./default-translations.js";
9
8
  export function managedPagesClient(options) {
10
9
  return {
11
10
  name: "managed-pages",
@@ -0,0 +1,2 @@
1
+ import { type TranslationsByLocale } from "@cosmicdrift/kumiko-renderer";
2
+ export declare const defaultTranslations: TranslationsByLocale;
@@ -0,0 +1,11 @@
1
+ // Client i18n bundle for the managed-pages admin screens. The browser renderer
2
+ // builds its fallback locale store ONLY from clientFeatures[].translations; the
3
+ // server-side r.translations bundle (feature.ts) never reaches it. To render the
4
+ // configEdit/entityEdit labels translated instead of raw, we mirror the same keys here.
5
+ //
6
+ // Single source: pivots MANAGED_PAGES_I18N (key-first { key: {de,en} }, server
7
+ // form) into the locale-first TranslationsByLocale form the client expects, so
8
+ // there is no key duplication and no drift.
9
+ import { translationsByLocaleFromKeys, } from "@cosmicdrift/kumiko-renderer";
10
+ import { MANAGED_PAGES_I18N } from "./i18n.js";
11
+ export const defaultTranslations = translationsByLocaleFromKeys(MANAGED_PAGES_I18N);
@@ -1,2 +1,5 @@
1
- import { type TranslationsByLocale } from "@cosmicdrift/kumiko-renderer";
2
- export declare const defaultTranslations: TranslationsByLocale;
1
+ type LocalizedString = {
2
+ readonly en: string;
3
+ };
4
+ export declare const MANAGED_PAGES_I18N: Readonly<Record<string, LocalizedString>>;
5
+ export {};
@@ -1,13 +1,54 @@
1
- // @runtime client
2
- // Client-i18n-Bundle für die managed-pages Admin-Screens. Der Browser-Renderer
3
- // baut seinen Fallback-Locale-Store NUR aus clientFeatures[].translations — der
4
- // server-seitige r.translations-Bundle (feature.ts) erreicht ihn nie. Damit die
5
- // configEdit/entityEdit-Labels im Client übersetzt rendern statt roh, spiegeln
6
- // wir hier dieselben Keys.
1
+ // Pure data (i18n keys) that lives under web/ so the web bundle may pivot it into
2
+ // the browser store; feature.ts (server) imports it as well (the server may import
3
+ // client-safe pure data, like PAT constants.ts).
7
4
  //
8
- // Single source: pivotiert MANAGED_PAGES_I18N (key-first { key: {de,en} },
9
- // Server-Form) in die locale-first TranslationsByLocale-Form die der Client
10
- // erwartet — kein Key-Duplikat, kein Drift.
11
- import { translationsByLocaleFromKeys, } from "@cosmicdrift/kumiko-renderer";
12
- import { MANAGED_PAGES_I18N } from "../i18n.js";
13
- export const defaultTranslations = translationsByLocaleFromKeys(MANAGED_PAGES_I18N);
5
+ // Translation bundle for the managed-pages admin screens. Without these keys the
6
+ // UI renders the raw i18n keys (screen:*.title, entity:*:field:*, section
7
+ // headers). Once a feature calls r.translations, the boot validator
8
+ // (required-surface-keys) demands the COMPLETE required-surface set in de+en;
9
+ // this file covers every screen/field/section key managed-pages registers. The
10
+ // two customCss keys are always supplied (harmless with allowCustomCss:false, but
11
+ // required for consumers that enable it).
12
+ export const MANAGED_PAGES_I18N = {
13
+ // Screen titles (global/unprefixed, screenTitleKey = screen:<id>.title)
14
+ "screen:page-list.title": { en: "Pages" },
15
+ "screen:page-edit.title": { en: "Edit page" },
16
+ "screen:branding-settings.title": { en: "Branding" },
17
+ // Page-Entity Feld-Labels (managed-pages:entity:page:field:*)
18
+ "managed-pages:entity:page:field:slug": { en: "Slug" },
19
+ "managed-pages:entity:page:field:lang": { en: "Language" },
20
+ "managed-pages:entity:page:field:title": { en: "Title" },
21
+ "managed-pages:entity:page:field:published": { en: "Published" },
22
+ "managed-pages:entity:page:field:published:option:true": {
23
+ en: "Published",
24
+ },
25
+ "managed-pages:entity:page:field:published:option:false": { en: "Draft" },
26
+ "managed-pages:entity:page:field:description": { en: "Description" },
27
+ "managed-pages:entity:page:field:ogImage": { en: "OG image" },
28
+ "managed-pages:entity:page:field:body": { en: "Content" },
29
+ // Config-Edit Feld-Labels (managed-pages:entity:__config-edit__:field:*, camelCase Form-Keys)
30
+ "managed-pages:entity:__config-edit__:field:title": { en: "Site title" },
31
+ "managed-pages:entity:__config-edit__:field:description": {
32
+ en: "Description",
33
+ },
34
+ "managed-pages:entity:__config-edit__:field:siteUrl": { en: "Site URL" },
35
+ "managed-pages:entity:__config-edit__:field:accentColor": {
36
+ en: "Accent color",
37
+ },
38
+ "managed-pages:entity:__config-edit__:field:logoUrl": { en: "Logo URL" },
39
+ "managed-pages:entity:__config-edit__:field:logoFile": { en: "Logo file" },
40
+ "managed-pages:entity:__config-edit__:field:layoutPreset": { en: "Layout" },
41
+ // Section-Header
42
+ "managed-pages:section.meta": { en: "Metadata" },
43
+ "managed-pages:section.body": { en: "Content" },
44
+ "managed-pages:branding.section.identity": { en: "Identity" },
45
+ // Row-Actions + Confirm (pageListScreen)
46
+ "managed-pages:actions.edit": { en: "Edit" },
47
+ "managed-pages:actions.delete": { en: "Delete" },
48
+ "managed-pages:confirms.page-delete": {
49
+ en: "Delete this page?",
50
+ },
51
+ // Nur bei allowCustomCss:true im Screen — unconditional geliefert
52
+ "managed-pages:entity:__config-edit__:field:customCss": { en: "Custom CSS" },
53
+ "managed-pages:branding.section.custom-css": { en: "Custom CSS" },
54
+ };
@@ -1,2 +1,2 @@
1
1
  export { type ManagedPagesClientOptions, managedPagesClient } from "./client-plugin.tsx";
2
- export { defaultTranslations } from "./i18n.ts";
2
+ export { defaultTranslations } from "./default-translations.ts";
@@ -1,3 +1,2 @@
1
- // @runtime client
2
1
  export { managedPagesClient } from "./client-plugin.js";
3
- export { defaultTranslations } from "./i18n.js";
2
+ export { defaultTranslations } from "./default-translations.js";
@@ -1,8 +1,8 @@
1
1
  import type { WhereObject } from "@cosmicdrift/kumiko-framework/db";
2
2
  import type { Temporal } from "@cosmicdrift/kumiko-types/temporal";
3
3
  import type { TenantDb } from "@cosmicdrift/kumiko-types/tenant-db-types";
4
- import { type MetricRange } from "./constants.ts";
5
4
  import type { MetricDefinition, MetricResult } from "./types.ts";
5
+ import { type MetricRange } from "./web/constants.ts";
6
6
  export type MetricRunParams = {
7
7
  readonly range: MetricRange;
8
8
  readonly timeZone: string;
@@ -1,4 +1,4 @@
1
- import { MAX_GROUP_ROWS } from "./constants.js";
1
+ import { MAX_GROUP_ROWS } from "./web/constants.js";
2
2
  import { bucketStartsMs, computeWindow, resolveBucket } from "./window.js";
3
3
  const NULL_KEY_TEXT = "—";
4
4
  function keyText(key) {
@@ -3,10 +3,10 @@ import { InternalError, ValidationError } from "@cosmicdrift/kumiko-framework/er
3
3
  import { Temporal } from "@cosmicdrift/kumiko-types/temporal";
4
4
  import * as z from "zod";
5
5
  import { runMetric } from "./compute.js";
6
- import { METRIC_RANGES, METRICS_FEATURE, METRICS_SYSTEM_FEATURE, } from "./constants.js";
7
6
  import { metricFilterPayloadShape, metricFilterWhere, resolveMetricFilterWhere, } from "./filters.js";
8
7
  import { METRICS_I18N } from "./i18n.js";
9
8
  import { metricHasTenantColumn, validateMetrics } from "./validate.js";
9
+ import { METRIC_RANGES, METRICS_FEATURE, METRICS_SYSTEM_FEATURE, } from "./web/constants.js";
10
10
  import { isValidTimeZone } from "./window.js";
11
11
  const DEFAULT_RANGE = "7d";
12
12
  const DEFAULT_TIME_ZONE = "UTC";
@@ -1,5 +1,5 @@
1
- export { METRIC_RANGES, METRICS_FEATURE, METRICS_SYSTEM_FEATURE, type MetricRange, type MetricScope, metricQueryName, } from "./constants.ts";
2
1
  export { activeTenantsMetric, activeUsersMetric, auditWritesMetric, DEFAULT_METRICS, deliveriesByChannelMetric, failedDeliveriesMetric, failedJobRunsMetric, jobRunsByStatusMetric, tenantJobFailuresMetric, } from "./default-metrics.ts";
3
2
  export { createMetricsFeature, createSystemMetricsFeature } from "./feature.ts";
4
3
  export { METRICS_I18N } from "./i18n.ts";
5
4
  export { defineMetric, type MetricDefinition, type MetricFilterResolver, type MetricPoint, type MetricResult, type MetricRow, type MetricSegment, type MetricSeries, type MetricsFeatureOptions, } from "./types.ts";
5
+ export { METRIC_RANGES, METRICS_FEATURE, METRICS_SYSTEM_FEATURE, type MetricRange, type MetricScope, metricQueryName, } from "./web/constants.ts";
@@ -1,6 +1,6 @@
1
1
  // Public API of the metrics bundled-feature.
2
- export { METRIC_RANGES, METRICS_FEATURE, METRICS_SYSTEM_FEATURE, metricQueryName, } from "./constants.js";
3
2
  export { activeTenantsMetric, activeUsersMetric, auditWritesMetric, DEFAULT_METRICS, deliveriesByChannelMetric, failedDeliveriesMetric, failedJobRunsMetric, jobRunsByStatusMetric, tenantJobFailuresMetric, } from "./default-metrics.js";
4
3
  export { createMetricsFeature, createSystemMetricsFeature } from "./feature.js";
5
4
  export { METRICS_I18N } from "./i18n.js";
6
5
  export { defineMetric, } from "./types.js";
6
+ export { METRIC_RANGES, METRICS_FEATURE, METRICS_SYSTEM_FEATURE, metricQueryName, } from "./web/constants.js";
@@ -4,7 +4,7 @@ import type { AggregateMeasure, AggregateTimeBucket } from "@cosmicdrift/kumiko-
4
4
  import type { SchemaTable } from "@cosmicdrift/kumiko-types/schema-table-types";
5
5
  import type { Temporal } from "@cosmicdrift/kumiko-types/temporal";
6
6
  import type { WhereObject } from "@cosmicdrift/kumiko-types/where-clause-types";
7
- import type { MetricRange, MetricScope } from "./constants.ts";
7
+ import type { MetricRange, MetricScope } from "./web/constants.ts";
8
8
  /** Maps a payload value (e.g. a folder id) to the values `column` may have (e.g. the folder and its subfolders' loan ids). Runs with the tenant handler context, so reads stay tenant-scoped; the result only narrows. An empty result yields no rows. */
9
9
  export type MetricFilterResolver = {
10
10
  readonly column: string;
@@ -1,6 +1,6 @@
1
1
  import { extractTableInfo, isTimestamptzType } from "@cosmicdrift/kumiko-framework/db";
2
- import { METRIC_RANGES } from "./constants.js";
3
2
  import { filterValueKindOf, metricFilterEntries, RESERVED_PAYLOAD_KEYS } from "./filters.js";
3
+ import { METRIC_RANGES } from "./web/constants.js";
4
4
  const KEBAB_ID = /^[a-z][a-z0-9]*(-[a-z0-9]+)*$/;
5
5
  const FILTER_PAYLOAD_KEY = /^[a-z][a-zA-Z0-9]*$/;
6
6
  const TENANT_ID_FIELD = "tenantId";
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Pure constants — imported by server (feature.ts) and by panel declarations,
3
2
  // so no runtime import from the engine barrel here.
4
3
  export const METRICS_FEATURE = "metrics";
@@ -1,7 +1,7 @@
1
1
  import type { AggregateTimeBucket } from "@cosmicdrift/kumiko-types/aggregate-types";
2
2
  import { Temporal } from "@cosmicdrift/kumiko-types/temporal";
3
- import type { MetricRange } from "./constants.ts";
4
3
  import type { MetricDefinition } from "./types.ts";
4
+ import type { MetricRange } from "./web/constants.ts";
5
5
  export type MetricWindow = {
6
6
  readonly start: Temporal.Instant;
7
7
  readonly end: Temporal.Instant;
@@ -14,11 +14,11 @@
14
14
  // erasure without a delete path.
15
15
  import { defineEntityListHandler, defineFeature, } from "@cosmicdrift/kumiko-framework/engine";
16
16
  import { assertNoWhereRuleInOwnershipWrite } from "../shared/index.js";
17
- import { DEFAULT_NOTES_HISTORY_ACCESS, NOTES_HISTORY_FEATURE_NAME } from "./constants.js";
18
17
  import { createNoteEntryEntity, noteMentionEntity } from "./entity.js";
19
18
  import { createNoteEntryExecutor } from "./executor.js";
20
19
  import { createAddNoteHandler } from "./handlers/add-note.write.js";
21
20
  import { NOTES_HISTORY_FEATURE_I18N } from "./i18n.js";
21
+ import { DEFAULT_NOTES_HISTORY_ACCESS, NOTES_HISTORY_FEATURE_NAME } from "./web/constants.js";
22
22
  function registerNotesHistory(r, access, ownership, parents) {
23
23
  r.describe("Generic, host-agnostic, append-only note history for any entity. Owns one event-sourced entity, `note-entry` (`read_note_entries`), keyed by (entityType, entityId) — so attaching notes adds NO column to the host entity and needs no relational pivot or JOIN. Provides a `create` write-handler (author stamped server-side from the caller, never client-supplied) and a `list` query filterable on entityId. Deliberately append-only: no update or delete handler is registered — a correction is a new entry, not an edit, so who-said-what-when stays reconstructable. Every path uses one access rule — adopt the host's model with createNotesHistoryFeature({ access: { openToAll: { reason } } }) or pin roles with createNotesHistoryFeature({ roles }).");
24
24
  r.uiHints({
@@ -3,9 +3,9 @@ import { ValidationError, writeFailure } from "@cosmicdrift/kumiko-framework/err
3
3
  import { decryptStoredPii, denyUnlessJoinRowParentVisible } from "../../shared/index.js";
4
4
  import { tenantMembershipsTable } from "../../tenant/index.js";
5
5
  import { userTable } from "../../user/index.js";
6
- import { DEFAULT_NOTES_HISTORY_ACCESS } from "../constants.js";
7
6
  import { noteEntryExecutor, noteMentionExecutor } from "../executor.js";
8
7
  import { addNotePayloadSchema } from "../schemas.js";
8
+ import { DEFAULT_NOTES_HISTORY_ACCESS } from "../web/constants.js";
9
9
  const READ_AUTHOR_DISPLAY_NAME_REASON = "reads the author's displayName from the global users table inside a savepoint so a missing user feature cannot poison the note transaction";
10
10
  // add-note — appends a note-entry to (entityType, entityId). authorId is
11
11
  // NEVER read from the payload: it is always the authenticated caller
@@ -1,6 +1,6 @@
1
- export { DEFAULT_NOTES_HISTORY_ACCESS, DEFAULT_NOTES_HISTORY_ROLES, NOTES_HISTORY_FEATURE_NAME, NOTES_SECTION_EXTENSION_NAME, NotesHistoryHandlers, NotesHistoryQueries, } from "./constants.ts";
2
1
  export { noteEntryEntity, noteMentionEntity } from "./entity.ts";
3
2
  export { noteEntryExecutor, noteEntryTable, noteMentionExecutor, noteMentionTable, } from "./executor.ts";
4
3
  export { createNotesHistoryFeature, type NotesHistoryFeatureOptions, } from "./feature.ts";
5
4
  export { addNoteHandler, createAddNoteHandler, } from "./handlers/add-note.write.ts";
6
5
  export { type AddNotePayload, addNotePayloadSchema } from "./schemas.ts";
6
+ export { DEFAULT_NOTES_HISTORY_ACCESS, DEFAULT_NOTES_HISTORY_ROLES, NOTES_HISTORY_FEATURE_NAME, NOTES_SECTION_EXTENSION_NAME, NotesHistoryHandlers, NotesHistoryQueries, } from "./web/constants.ts";
@@ -1,6 +1,6 @@
1
- export { DEFAULT_NOTES_HISTORY_ACCESS, DEFAULT_NOTES_HISTORY_ROLES, NOTES_HISTORY_FEATURE_NAME, NOTES_SECTION_EXTENSION_NAME, NotesHistoryHandlers, NotesHistoryQueries, } from "./constants.js";
2
1
  export { noteEntryEntity, noteMentionEntity } from "./entity.js";
3
2
  export { noteEntryExecutor, noteEntryTable, noteMentionExecutor, noteMentionTable, } from "./executor.js";
4
3
  export { createNotesHistoryFeature, } from "./feature.js";
5
4
  export { addNoteHandler, createAddNoteHandler, } from "./handlers/add-note.write.js";
6
5
  export { addNotePayloadSchema } from "./schemas.js";
6
+ export { DEFAULT_NOTES_HISTORY_ACCESS, DEFAULT_NOTES_HISTORY_ROLES, NOTES_HISTORY_FEATURE_NAME, NOTES_SECTION_EXTENSION_NAME, NotesHistoryHandlers, NotesHistoryQueries, } from "./web/constants.js";
@@ -1,5 +1,4 @@
1
- // @runtime client
2
- import { NOTES_HISTORY_FEATURE_NAME, NOTES_SECTION_EXTENSION_NAME } from "../constants.js";
1
+ import { NOTES_HISTORY_FEATURE_NAME, NOTES_SECTION_EXTENSION_NAME } from "./constants.js";
3
2
  import { defaultTranslations } from "./i18n.js";
4
3
  import { NotesSection } from "./notes-section.js";
5
4
  export function notesHistoryClient() {
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // notes-history bundle constants — feature-name + qualified handler/query names.
3
2
  //
4
3
  // Spec: kumiko-platform/docs/plans/notes-history-bundle.md
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Default translation bundle for the notes-history UI. notesHistoryClient()
3
2
  // hangs it into the LocaleProvider as a fallback bundle — apps override
4
3
  // individual keys via notesHistoryClient({ translations }).
@@ -1,3 +1,3 @@
1
- export { NOTES_SECTION_EXTENSION_NAME, NotesHistoryHandlers, NotesHistoryQueries, } from "../constants.ts";
2
1
  export { notesHistoryClient } from "./client-plugin.tsx";
2
+ export { NOTES_SECTION_EXTENSION_NAME, NotesHistoryHandlers, NotesHistoryQueries, } from "./constants.ts";
3
3
  export { NotesSection } from "./notes-section.tsx";
@@ -1,4 +1,3 @@
1
- // @runtime client
2
- export { NOTES_SECTION_EXTENSION_NAME, NotesHistoryHandlers, NotesHistoryQueries, } from "../constants.js";
3
1
  export { notesHistoryClient } from "./client-plugin.js";
2
+ export { NOTES_SECTION_EXTENSION_NAME, NotesHistoryHandlers, NotesHistoryQueries, } from "./constants.js";
4
3
  export { NotesSection } from "./notes-section.js";
@@ -1,5 +1,4 @@
1
1
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
- // @runtime client
3
2
  // NotesSection — drop-in note history for ANY entity. Shows every note
4
3
  // chronologically (newest first) with author + timestamp, plus a textarea to
5
4
  // append a new one. Append-only: there is no edit/delete affordance because
@@ -13,9 +12,9 @@ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
12
  // (RenderEdit passes { entityName, entityId }).
14
13
  import { formatWhen, useDispatcher, usePrimitives, useQuery, useTranslation, } from "@cosmicdrift/kumiko-renderer";
15
14
  import { useState } from "react";
16
- import { NotesHistoryHandlers, NotesHistoryQueries } from "../constants.js";
15
+ import { NotesHistoryHandlers, NotesHistoryQueries } from "./constants.js";
17
16
  // Matches @cosmicdrift/kumiko-framework/crypto PII_ERASED_SENTINEL — cannot
18
- // import that module from @runtime client (runtime-isolation).
17
+ // import that module from client code (runtime-isolation).
19
18
  const PII_ERASED_SENTINEL = "[[erased]]";
20
19
  function displayAuthorName(authorName, unknownLabel) {
21
20
  return authorName && authorName !== PII_ERASED_SENTINEL ? authorName : unknownLabel;
@@ -1,7 +1,7 @@
1
1
  import { type FeatureDefinition, type ProjectionListScreenDefinition } from "@cosmicdrift/kumiko-framework/engine";
2
- import { type PatRateLimit } from "./constants.ts";
3
2
  import { type CreatePatOptions } from "./handlers/create.write.ts";
4
- import type { PatScopeConfig } from "./scopes.ts";
3
+ import { type PatRateLimit } from "./web/constants.ts";
4
+ import type { PatScopeConfig } from "./web/scopes.ts";
5
5
  export type BindPatAutoRevokeOnPasswordChange = (revoker: (userId: string) => Promise<number>) => void;
6
6
  export declare function bindPatAutoRevokeOnPasswordChangeFromFeature(feature: FeatureDefinition): BindPatAutoRevokeOnPasswordChange | undefined;
7
7
  export type PersonalAccessTokensOptions = {
@@ -2,7 +2,6 @@ import { EXT_TOKEN_VERIFIER, } from "@cosmicdrift/kumiko-bundled-features/auth-f
2
2
  import { PAT_TOKEN_PREFIX } from "@cosmicdrift/kumiko-framework/api";
3
3
  import { deriveEntityTableMeta } from "@cosmicdrift/kumiko-framework/db";
4
4
  import { defineFeature, } from "@cosmicdrift/kumiko-framework/engine";
5
- import { API_TOKEN_ENTITY_NAME, PAT_DEFAULT_RATE_LIMIT, PAT_FEATURE, } from "./constants.js";
6
5
  import { availabilityQuery } from "./handlers/availability.query.js";
7
6
  import { buildAvailableScopesQuery } from "./handlers/available-scopes.query.js";
8
7
  import { createPatCreateHandler } from "./handlers/create.write.js";
@@ -13,6 +12,7 @@ import { PAT_REVOKED_EVENT_SHORT, patRevokedSchema } from "./pat-revoked-event.j
13
12
  import { createPatResolver } from "./resolver.js";
14
13
  import { apiTokenEntity } from "./schema/api-token.js";
15
14
  import { createPatMintScreen, patListScreen } from "./screens.js";
15
+ import { API_TOKEN_ENTITY_NAME, PAT_DEFAULT_RATE_LIMIT, PAT_FEATURE, } from "./web/constants.js";
16
16
  // Password-change is the only field-level trigger — see the postSave hook
17
17
  // below. MFA-enable/disable is wired separately (auth-mfa's
18
18
  // revokeAllPatTokens callback, late-bound at app-composition time) since
@@ -82,11 +82,14 @@ export function createPersonalAccessTokensFeature(options) {
82
82
  // is r.systemScope()'d (the user aggregate is a systemStream, framework
83
83
  // #497), so a postSave hook on "user" gets a poisoned ctx.db here. The
84
84
  // concrete revoker is bound once run{Prod,Dev}App has a real db handle.
85
- let autoRevokeOnPasswordChange = options.autoRevokeOnPasswordChange;
85
+ // Explicit option wins; the runtime binding is replaceable so a second boot of the same
86
+ // feature instance binds its own database.
87
+ let boundAutoRevoke;
86
88
  r.hook({
87
89
  type: "postSave",
88
90
  target: { allOf: "user" },
89
91
  handler: async (result) => {
92
+ const autoRevokeOnPasswordChange = options.autoRevokeOnPasswordChange ?? boundAutoRevoke;
90
93
  // skip: nothing bound — same late-bind pattern as sessions/feature.ts
91
94
  if (!autoRevokeOnPasswordChange)
92
95
  return;
@@ -101,8 +104,7 @@ export function createPersonalAccessTokensFeature(options) {
101
104
  },
102
105
  });
103
106
  const bindAutoRevokeOnPasswordChange = (revoker) => {
104
- // explicit constructor option wins over the runtime binding
105
- autoRevokeOnPasswordChange ??= revoker;
107
+ boundAutoRevoke = revoker;
106
108
  };
107
109
  const handlers = {
108
110
  create: r.writeHandler(createPatCreateHandler({ mfaVerifier: options.mfaVerifier })),
@@ -1,5 +1,5 @@
1
1
  import * as z from "zod";
2
- import type { PatScopeConfig } from "../scopes.ts";
2
+ import type { PatScopeConfig } from "../web/scopes.ts";
3
3
  export declare function buildAvailableScopesQuery(scopes: PatScopeConfig): import("@cosmicdrift/kumiko-types/define-handler").QueryHandlerDefinition<"available-scopes", z.ZodObject<{}, z.core.$strip>, {
4
4
  name: string;
5
5
  label: string;
@@ -6,9 +6,9 @@ import { Temporal } from "@cosmicdrift/kumiko-types/temporal";
6
6
  import * as z from "zod";
7
7
  import { encryptForDirectWrite, verifyPassword } from "../../shared/index.js";
8
8
  import { UserQueries } from "../../user/index.js";
9
- import { API_TOKEN_ENTITY_NAME, PAT_DEFAULT_EXPIRES_IN_DAYS, PatErrors } from "../constants.js";
10
9
  import { mintPatToken } from "../hash.js";
11
10
  import { apiTokenEntity, apiTokenTable } from "../schema/api-token.js";
11
+ import { API_TOKEN_ENTITY_NAME, PAT_DEFAULT_EXPIRES_IN_DAYS, PatErrors } from "../web/constants.js";
12
12
  // @wrapper-known error-helper
13
13
  function reauthFailed() {
14
14
  return writeFailure(new UnprocessableError(PatErrors.reauthRequired, {