@cosmicdrift/kumiko-samples 0.378.0 → 0.380.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 (509) hide show
  1. package/package.json +1 -1
  2. package/packages/bundled-features/package.json +18 -17
  3. package/packages/bundled-features/src/account-security/feature.ts +2 -2
  4. package/packages/bundled-features/src/account-security/index.ts +8 -8
  5. package/packages/bundled-features/src/account-security/{constants.ts → web/constants.ts} +0 -2
  6. package/packages/bundled-features/src/account-security/{i18n.ts → web/i18n.ts} +0 -1
  7. package/packages/bundled-features/src/admin-shell/feature.ts +10 -9
  8. package/packages/bundled-features/src/admin-shell/index.ts +8 -8
  9. package/packages/bundled-features/src/admin-shell/web/client-plugin.tsx +2 -3
  10. package/packages/bundled-features/src/admin-shell/{constants.ts → web/constants.ts} +0 -1
  11. package/packages/bundled-features/src/admin-shell/web/default-translations.ts +10 -0
  12. package/packages/bundled-features/src/admin-shell/web/i18n.ts +51 -9
  13. package/packages/bundled-features/src/admin-shell/web/index.ts +0 -1
  14. package/packages/bundled-features/src/audit/changes.json +7 -0
  15. package/packages/bundled-features/src/audit/feature.ts +72 -64
  16. package/packages/bundled-features/src/audit/handlers/audit-events.ts +153 -0
  17. package/packages/bundled-features/src/audit/handlers/audit-system-db.ts +13 -0
  18. package/packages/bundled-features/src/audit/handlers/details-all-tenants.query.ts +26 -0
  19. package/packages/bundled-features/src/audit/handlers/details.query.ts +11 -39
  20. package/packages/bundled-features/src/audit/handlers/list-all-tenants.query.ts +47 -0
  21. package/packages/bundled-features/src/audit/handlers/list.query.ts +16 -123
  22. package/packages/bundled-features/src/audit/handlers/resolve-audit-tenant.ts +21 -7
  23. package/packages/bundled-features/src/audit/index.ts +1 -1
  24. package/packages/bundled-features/src/audit/run-escape-hatch-retention.ts +4 -4
  25. package/packages/bundled-features/src/audit/screens.ts +82 -0
  26. package/packages/bundled-features/src/audit/web/client-plugin.tsx +2 -3
  27. package/packages/bundled-features/src/audit/{constants.ts → web/constants.ts} +11 -1
  28. package/packages/bundled-features/src/audit/web/default-translations.ts +7 -0
  29. package/packages/bundled-features/src/audit/web/i18n.ts +33 -7
  30. package/packages/bundled-features/src/audit/web/index.ts +0 -2
  31. package/packages/bundled-features/src/auth-email-password/bootstrap.ts +6 -6
  32. package/packages/bundled-features/src/auth-email-password/changes.json +6 -0
  33. package/packages/bundled-features/src/auth-email-password/errors.ts +1 -1
  34. package/packages/bundled-features/src/auth-email-password/feature.ts +2 -2
  35. package/packages/bundled-features/src/auth-email-password/handlers/confirm-account-unlock.write.ts +1 -1
  36. package/packages/bundled-features/src/auth-email-password/handlers/invite-accept-with-login.write.ts +4 -4
  37. package/packages/bundled-features/src/auth-email-password/handlers/invite-create.write.ts +3 -3
  38. package/packages/bundled-features/src/auth-email-password/handlers/invite-info.query.ts +1 -1
  39. package/packages/bundled-features/src/auth-email-password/handlers/login.write.ts +38 -4
  40. package/packages/bundled-features/src/auth-email-password/handlers/request-account-unlock.write.ts +1 -1
  41. package/packages/bundled-features/src/auth-email-password/handlers/request-email-verification.write.ts +1 -1
  42. package/packages/bundled-features/src/auth-email-password/handlers/request-password-reset.write.ts +1 -1
  43. package/packages/bundled-features/src/auth-email-password/handlers/reset-password.write.ts +1 -1
  44. package/packages/bundled-features/src/auth-email-password/handlers/verify-email.write.ts +1 -1
  45. package/packages/bundled-features/src/auth-email-password/index.ts +6 -1
  46. package/packages/bundled-features/src/auth-email-password/mail-notifications.ts +1 -1
  47. package/packages/bundled-features/src/auth-email-password/signup-activation.ts +1 -1
  48. package/packages/bundled-features/src/auth-email-password/web/auth-client.ts +0 -1
  49. package/packages/bundled-features/src/auth-email-password/web/auth-form-logic.ts +0 -1
  50. package/packages/bundled-features/src/auth-email-password/web/auth-form-primitives.tsx +0 -1
  51. package/packages/bundled-features/src/auth-email-password/web/auth-gate.tsx +0 -1
  52. package/packages/bundled-features/src/auth-email-password/web/auth-redirect.ts +0 -1
  53. package/packages/bundled-features/src/auth-email-password/web/client-actions.ts +0 -1
  54. package/packages/bundled-features/src/auth-email-password/web/client-plugin.ts +1 -2
  55. package/packages/bundled-features/src/auth-email-password/web/confirm-account-unlock-screen.tsx +0 -1
  56. package/packages/bundled-features/src/auth-email-password/{constants.ts → web/constants.ts} +3 -6
  57. package/packages/bundled-features/src/auth-email-password/web/default-topbar-actions.tsx +0 -1
  58. package/packages/bundled-features/src/auth-email-password/web/forgot-password-screen.tsx +0 -1
  59. package/packages/bundled-features/src/auth-email-password/{i18n.ts → web/i18n.ts} +3 -4
  60. package/packages/bundled-features/src/auth-email-password/web/index.ts +1 -2
  61. package/packages/bundled-features/src/auth-email-password/web/invite-accept-screen.tsx +2 -3
  62. package/packages/bundled-features/src/auth-email-password/web/login-screen.tsx +0 -1
  63. package/packages/bundled-features/src/auth-email-password/{mail-i18n.ts → web/mail-i18n.ts} +0 -1
  64. package/packages/bundled-features/src/auth-email-password/web/request-account-unlock-screen.tsx +0 -1
  65. package/packages/bundled-features/src/auth-email-password/web/reset-password-screen.tsx +0 -1
  66. package/packages/bundled-features/src/auth-email-password/web/session-bootstrap-error.tsx +0 -1
  67. package/packages/bundled-features/src/auth-email-password/web/session.tsx +0 -1
  68. package/packages/bundled-features/src/auth-email-password/web/signup-complete-screen.tsx +2 -3
  69. package/packages/bundled-features/src/auth-email-password/web/signup-screen.tsx +0 -1
  70. package/packages/bundled-features/src/auth-email-password/web/tenant-menu-items.tsx +0 -1
  71. package/packages/bundled-features/src/auth-email-password/web/tenant-switcher.tsx +0 -1
  72. package/packages/bundled-features/src/auth-email-password/web/use-shell-user.ts +0 -1
  73. package/packages/bundled-features/src/auth-email-password/web/user-menu.tsx +0 -1
  74. package/packages/bundled-features/src/auth-email-password/web/verify-email-screen.tsx +0 -1
  75. package/packages/bundled-features/src/auth-mfa/changes.json +6 -0
  76. package/packages/bundled-features/src/auth-mfa/errors.ts +2 -2
  77. package/packages/bundled-features/src/auth-mfa/handlers/enable-confirm-preauth.write.ts +1 -1
  78. package/packages/bundled-features/src/auth-mfa/handlers/enable-start-preauth.write.ts +1 -1
  79. package/packages/bundled-features/src/auth-mfa/handlers/enable-start.write.ts +1 -1
  80. package/packages/bundled-features/src/auth-mfa/handlers/verify.write.ts +1 -1
  81. package/packages/bundled-features/src/auth-mfa/index.ts +8 -8
  82. package/packages/bundled-features/src/auth-mfa/mfa-status-checker.ts +4 -4
  83. package/packages/bundled-features/src/auth-mfa/screens.ts +1 -1
  84. package/packages/bundled-features/src/auth-mfa/web/client-plugin.ts +0 -1
  85. package/packages/bundled-features/src/auth-mfa/{constants.ts → web/constants.ts} +0 -1
  86. package/packages/bundled-features/src/auth-mfa/web/i18n.ts +0 -1
  87. package/packages/bundled-features/src/auth-mfa/web/index.ts +0 -1
  88. package/packages/bundled-features/src/auth-mfa/web/mfa-client.ts +0 -1
  89. package/packages/bundled-features/src/auth-mfa/web/mfa-disable-dialog.tsx +1 -2
  90. package/packages/bundled-features/src/auth-mfa/web/mfa-recovery-codes-reveal.tsx +0 -1
  91. package/packages/bundled-features/src/auth-mfa/web/mfa-regenerate-recovery-dialog.tsx +1 -2
  92. package/packages/bundled-features/src/auth-mfa/web/mfa-setup-preauth-screen.tsx +21 -23
  93. package/packages/bundled-features/src/auth-mfa/web/mfa-verify-screen.tsx +0 -1
  94. package/packages/bundled-features/src/billing-foundation/changes.json +18 -0
  95. package/packages/bundled-features/src/billing-foundation/checkout-core.ts +3 -3
  96. package/packages/bundled-features/src/billing-foundation/consumer-protection/consent-text.ts +2 -2
  97. package/packages/bundled-features/src/billing-foundation/consumer-protection/issue-confirmation.ts +11 -3
  98. package/packages/bundled-features/src/billing-foundation/consumer-protection/mail-notifications.ts +11 -1
  99. package/packages/bundled-features/src/billing-foundation/consumer-protection/register-consent.ts +1 -1
  100. package/packages/bundled-features/src/billing-foundation/consumer-protection/register-termination.ts +12 -1
  101. package/packages/bundled-features/src/billing-foundation/consumer-protection/stored-user-email.ts +12 -0
  102. package/packages/bundled-features/src/billing-foundation/consumer-protection/termination-mail.ts +6 -1
  103. package/packages/bundled-features/src/billing-foundation/consumer-protection/termination-notify.ts +1 -1
  104. package/packages/bundled-features/src/billing-foundation/consumer-protection/termination-pages.ts +167 -28
  105. package/packages/bundled-features/src/billing-foundation/consumer-protection/termination-record.ts +102 -3
  106. package/packages/bundled-features/src/billing-foundation/consumer-protection/termination-request.ts +43 -12
  107. package/packages/bundled-features/src/billing-foundation/consumer-protection/termination-revoke.ts +202 -0
  108. package/packages/bundled-features/src/billing-foundation/consumer-protection/termination-texts.ts +70 -0
  109. package/packages/bundled-features/src/billing-foundation/events.ts +20 -2
  110. package/packages/bundled-features/src/billing-foundation/feature.ts +5 -5
  111. package/packages/bundled-features/src/billing-foundation/handlers/process-event.write.ts +82 -9
  112. package/packages/bundled-features/src/billing-foundation/handlers/switch-plan.write.ts +1 -1
  113. package/packages/bundled-features/src/billing-foundation/handlers/sync-subscription.write.ts +1 -1
  114. package/packages/bundled-features/src/billing-foundation/index.ts +27 -27
  115. package/packages/bundled-features/src/billing-foundation/plan-catalog.ts +7 -7
  116. package/packages/bundled-features/src/billing-foundation/screens.ts +1 -1
  117. package/packages/bundled-features/src/billing-foundation/subscription-tier-sync.ts +1 -1
  118. package/packages/bundled-features/src/billing-foundation/types.ts +17 -3
  119. package/packages/bundled-features/src/billing-foundation/validate-options.ts +3 -3
  120. package/packages/bundled-features/src/billing-foundation/web/billing-contact-plan.tsx +1 -3
  121. package/packages/bundled-features/src/billing-foundation/web/billing-plans-panel.tsx +5 -7
  122. package/packages/bundled-features/src/billing-foundation/web/cancel-contract-dialog.tsx +1 -3
  123. package/packages/bundled-features/src/billing-foundation/web/checkout-consent-dialog.tsx +1 -3
  124. package/packages/bundled-features/src/billing-foundation/web/client-plugin.tsx +1 -2
  125. package/packages/bundled-features/src/billing-foundation/{constants.ts → web/constants.ts} +37 -31
  126. package/packages/bundled-features/src/billing-foundation/{consumer-protection → web/consumer-protection}/consent-locale.ts +0 -1
  127. package/packages/bundled-features/src/billing-foundation/{contact-card.ts → web/contact-card.ts} +0 -2
  128. package/packages/bundled-features/src/billing-foundation/web/index.ts +14 -15
  129. package/packages/bundled-features/src/billing-foundation/web/localized-params.ts +0 -2
  130. package/packages/bundled-features/src/billing-foundation/webhook-handler.ts +5 -2
  131. package/packages/bundled-features/src/cap-overview/feature.ts +1 -1
  132. package/packages/bundled-features/src/cap-overview/handlers/caps-usage.query.ts +1 -1
  133. package/packages/bundled-features/src/cap-overview/handlers/tenant-caps-list.query.ts +2 -2
  134. package/packages/bundled-features/src/cap-overview/index.ts +9 -9
  135. package/packages/bundled-features/src/cap-overview/screens.ts +2 -2
  136. package/packages/bundled-features/src/cap-overview/web/cap-cards-panel.tsx +1 -2
  137. package/packages/bundled-features/src/cap-overview/web/cap-usage-bar.tsx +1 -2
  138. package/packages/bundled-features/src/cap-overview/web/cap-usage-cell.tsx +0 -2
  139. package/packages/bundled-features/src/cap-overview/web/client-plugin.tsx +3 -4
  140. package/packages/bundled-features/src/cap-overview/{constants.ts → web/constants.ts} +0 -1
  141. package/packages/bundled-features/src/cap-overview/web/index.ts +0 -1
  142. package/packages/bundled-features/src/cap-overview/{usage-math.ts → web/usage-math.ts} +1 -2
  143. package/packages/bundled-features/src/compliance-profiles/feature.ts +5 -5
  144. package/packages/bundled-features/src/compliance-profiles/index.ts +6 -6
  145. package/packages/bundled-features/src/compliance-profiles/web/client-plugin.tsx +2 -3
  146. package/packages/bundled-features/src/compliance-profiles/web/compliance-profile-catalog.tsx +1 -2
  147. package/packages/bundled-features/src/compliance-profiles/{constants.ts → web/constants.ts} +0 -1
  148. package/packages/bundled-features/src/compliance-profiles/web/i18n.ts +0 -1
  149. package/packages/bundled-features/src/compliance-profiles/web/index.ts +0 -1
  150. package/packages/bundled-features/src/config/index.ts +6 -6
  151. package/packages/bundled-features/src/config/web/client-plugin.ts +1 -2
  152. package/packages/bundled-features/src/config/{constants.ts → web/constants.ts} +0 -1
  153. package/packages/bundled-features/src/config/web/i18n.ts +0 -1
  154. package/packages/bundled-features/src/config/web/index.ts +1 -3
  155. package/packages/bundled-features/src/config/write-helpers.ts +1 -1
  156. package/packages/bundled-features/src/custom-fields/feature.ts +8 -8
  157. package/packages/bundled-features/src/custom-fields/handlers/clear-custom-field.write.ts +1 -1
  158. package/packages/bundled-features/src/custom-fields/handlers/define-tenant-field.write.ts +1 -1
  159. package/packages/bundled-features/src/custom-fields/handlers/delete-system-field.write.ts +1 -1
  160. package/packages/bundled-features/src/custom-fields/handlers/delete-tenant-field.write.ts +4 -4
  161. package/packages/bundled-features/src/custom-fields/handlers/set-custom-field.write.ts +1 -1
  162. package/packages/bundled-features/src/custom-fields/handlers/update-tenant-field.write.ts +1 -1
  163. package/packages/bundled-features/src/custom-fields/index.ts +8 -8
  164. package/packages/bundled-features/src/custom-fields/lib/value-schema.ts +1 -1
  165. package/packages/bundled-features/src/custom-fields/schemas.ts +1 -1
  166. package/packages/bundled-features/src/custom-fields/web/client-plugin.tsx +1 -2
  167. package/packages/bundled-features/src/custom-fields/{constants.ts → web/constants.ts} +18 -19
  168. package/packages/bundled-features/src/custom-fields/web/custom-fields-form-section.tsx +1 -2
  169. package/packages/bundled-features/src/custom-fields/web/i18n.ts +0 -1
  170. package/packages/bundled-features/src/custom-fields/web/index.ts +2 -3
  171. package/packages/bundled-features/src/custom-fields/wire-for-entity.ts +1 -2
  172. package/packages/bundled-features/src/delivery/address-opt-out.ts +1 -1
  173. package/packages/bundled-features/src/delivery/attempt-log-retention.ts +24 -8
  174. package/packages/bundled-features/src/delivery/changes.json +6 -0
  175. package/packages/bundled-features/src/delivery/constants.ts +2 -2
  176. package/packages/bundled-features/src/delivery/i18n.ts +1 -1
  177. package/packages/bundled-features/src/delivery/unsubscribe-page.ts +1 -1
  178. package/packages/bundled-features/src/delivery/web/client-plugin.tsx +6 -7
  179. package/packages/bundled-features/src/delivery/web/delivery-channel-cell.tsx +0 -1
  180. package/packages/bundled-features/src/delivery/web/delivery-error-cell.tsx +0 -1
  181. package/packages/bundled-features/src/delivery/web/delivery-status-cell.tsx +1 -2
  182. package/packages/bundled-features/src/delivery/web/delivery-time-cell.tsx +0 -1
  183. package/packages/bundled-features/src/delivery/web/delivery-type-cell.tsx +0 -1
  184. package/packages/bundled-features/src/delivery/web/index.ts +0 -1
  185. package/packages/bundled-features/src/delivery/{public-names.ts → web/public-names.ts} +0 -1
  186. package/packages/bundled-features/src/document-ingest-foundation/changes.json +6 -0
  187. package/packages/bundled-features/src/document-ingest-foundation/events.ts +4 -0
  188. package/packages/bundled-features/src/document-ingest-foundation/executor.ts +2 -1
  189. package/packages/bundled-features/src/document-ingest-foundation/feature.ts +18 -4
  190. package/packages/bundled-features/src/document-ingest-foundation/index.ts +1 -0
  191. package/packages/bundled-features/src/feature-toggles/feature.ts +7 -7
  192. package/packages/bundled-features/src/feature-toggles/global-feature-state-table.ts +14 -13
  193. package/packages/bundled-features/src/feature-toggles/handlers/list.query.ts +1 -1
  194. package/packages/bundled-features/src/feature-toggles/handlers/registered.query.ts +1 -1
  195. package/packages/bundled-features/src/feature-toggles/handlers/set.write.ts +3 -3
  196. package/packages/bundled-features/src/feature-toggles/index.ts +6 -6
  197. package/packages/bundled-features/src/feature-toggles/web/client-plugin.tsx +1 -2
  198. package/packages/bundled-features/src/feature-toggles/{constants.ts → web/constants.ts} +0 -1
  199. package/packages/bundled-features/src/feature-toggles/web/i18n.ts +0 -1
  200. package/packages/bundled-features/src/feature-toggles/web/index.ts +0 -1
  201. package/packages/bundled-features/src/files/changes.json +7 -0
  202. package/packages/bundled-features/src/folders/feature.ts +1 -1
  203. package/packages/bundled-features/src/folders/handlers/clear-folder.write.ts +1 -1
  204. package/packages/bundled-features/src/folders/handlers/delete-folder.write.ts +1 -1
  205. package/packages/bundled-features/src/folders/handlers/set-folder.write.ts +1 -1
  206. package/packages/bundled-features/src/folders/index.ts +8 -8
  207. package/packages/bundled-features/src/folders/web/client-plugin.tsx +1 -3
  208. package/packages/bundled-features/src/folders/{constants.ts → web/constants.ts} +0 -1
  209. package/packages/bundled-features/src/folders/web/folder-manager.tsx +1 -2
  210. package/packages/bundled-features/src/folders/web/folder-section.tsx +1 -2
  211. package/packages/bundled-features/src/folders/web/i18n.ts +0 -1
  212. package/packages/bundled-features/src/folders/web/index.ts +1 -2
  213. package/packages/bundled-features/src/folders/web/tree.ts +0 -1
  214. package/packages/bundled-features/src/form-draft/changes.json +7 -0
  215. package/packages/bundled-features/src/form-draft/db/queries/cleanup.ts +25 -11
  216. package/packages/bundled-features/src/form-draft/decrypt-draft.ts +24 -0
  217. package/packages/bundled-features/src/form-draft/entity.ts +6 -9
  218. package/packages/bundled-features/src/form-draft/feature.ts +1 -1
  219. package/packages/bundled-features/src/form-draft/handlers/cleanup.job.ts +26 -5
  220. package/packages/bundled-features/src/form-draft/handlers/discard.write.ts +1 -1
  221. package/packages/bundled-features/src/form-draft/handlers/get.query.ts +6 -7
  222. package/packages/bundled-features/src/form-draft/handlers/list.query.ts +13 -7
  223. package/packages/bundled-features/src/form-draft/handlers/save.write.ts +5 -5
  224. package/packages/bundled-features/src/form-draft/index.ts +8 -8
  225. package/packages/bundled-features/src/form-draft/lookup.ts +10 -4
  226. package/packages/bundled-features/src/form-draft/schemas.ts +1 -1
  227. package/packages/bundled-features/src/form-draft/{constants.ts → web/constants.ts} +0 -1
  228. package/packages/bundled-features/src/form-draft-user-data/hooks.ts +2 -2
  229. package/packages/bundled-features/src/inbound-mail-foundation/retention-sweep.ts +10 -10
  230. package/packages/bundled-features/src/jobs/feature.ts +7 -7
  231. package/packages/bundled-features/src/jobs/handlers/retry.write.ts +1 -1
  232. package/packages/bundled-features/src/jobs/handlers/trigger.write.ts +1 -1
  233. package/packages/bundled-features/src/jobs/index.ts +1 -1
  234. package/packages/bundled-features/src/jobs/job-run-table.ts +4 -3
  235. package/packages/bundled-features/src/jobs/web/client-plugin.tsx +2 -3
  236. package/packages/bundled-features/src/jobs/{constants.ts → web/constants.ts} +0 -1
  237. package/packages/bundled-features/src/jobs/web/default-translations.ts +7 -0
  238. package/packages/bundled-features/src/jobs/web/i18n.ts +53 -7
  239. package/packages/bundled-features/src/jobs/web/index.ts +0 -1
  240. package/packages/bundled-features/src/ledger/changes.json +7 -0
  241. package/packages/bundled-features/src/ledger/entity.ts +1 -1
  242. package/packages/bundled-features/src/ledger/feature.ts +1 -1
  243. package/packages/bundled-features/src/ledger/handlers/confirm-schedule-period.write.ts +2 -10
  244. package/packages/bundled-features/src/ledger/handlers/create-transaction.write.ts +1 -1
  245. package/packages/bundled-features/src/ledger/handlers/reports.query.ts +1 -1
  246. package/packages/bundled-features/src/ledger/handlers/reverse-transaction.write.ts +1 -1
  247. package/packages/bundled-features/src/ledger/index.ts +13 -13
  248. package/packages/bundled-features/src/ledger/recurring.ts +1 -1
  249. package/packages/bundled-features/src/ledger/reports.ts +1 -1
  250. package/packages/bundled-features/src/ledger/schemas.ts +1 -1
  251. package/packages/bundled-features/src/ledger/{constants.ts → web/constants.ts} +0 -1
  252. package/packages/bundled-features/src/ledger/web/index.ts +11 -12
  253. package/packages/bundled-features/src/legal-pages/README.md +1 -1
  254. package/packages/bundled-features/src/legal-pages/feature.ts +5 -5
  255. package/packages/bundled-features/src/legal-pages/index.ts +11 -11
  256. package/packages/bundled-features/src/legal-pages/lib/boot-check.ts +1 -1
  257. package/packages/bundled-features/src/legal-pages/lib/validate-routes.ts +1 -1
  258. package/packages/bundled-features/src/legal-pages/web/client-plugin.ts +1 -2
  259. package/packages/bundled-features/src/legal-pages/{constants.ts → web/constants.ts} +6 -8
  260. package/packages/bundled-features/src/legal-pages/web/index.ts +0 -1
  261. package/packages/bundled-features/src/managed-pages/feature.ts +1 -1
  262. package/packages/bundled-features/src/managed-pages/web/client-plugin.tsx +1 -2
  263. package/packages/bundled-features/src/managed-pages/web/default-translations.ts +17 -0
  264. package/packages/bundled-features/src/managed-pages/web/i18n.ts +59 -16
  265. package/packages/bundled-features/src/managed-pages/web/index.ts +1 -2
  266. package/packages/bundled-features/src/metrics/compute.ts +1 -1
  267. package/packages/bundled-features/src/metrics/feature.ts +6 -6
  268. package/packages/bundled-features/src/metrics/index.ts +8 -8
  269. package/packages/bundled-features/src/metrics/types.ts +1 -1
  270. package/packages/bundled-features/src/metrics/validate.ts +1 -1
  271. package/packages/bundled-features/src/metrics/{constants.ts → web/constants.ts} +0 -1
  272. package/packages/bundled-features/src/metrics/window.ts +1 -1
  273. package/packages/bundled-features/src/notes-history/feature.ts +1 -1
  274. package/packages/bundled-features/src/notes-history/handlers/add-note.write.ts +1 -1
  275. package/packages/bundled-features/src/notes-history/index.ts +8 -8
  276. package/packages/bundled-features/src/notes-history/web/client-plugin.tsx +1 -3
  277. package/packages/bundled-features/src/notes-history/{constants.ts → web/constants.ts} +0 -1
  278. package/packages/bundled-features/src/notes-history/web/i18n.ts +0 -1
  279. package/packages/bundled-features/src/notes-history/web/index.ts +2 -3
  280. package/packages/bundled-features/src/notes-history/web/notes-section.tsx +2 -3
  281. package/packages/bundled-features/src/personal-access-tokens/feature.ts +12 -10
  282. package/packages/bundled-features/src/personal-access-tokens/handlers/available-scopes.query.ts +1 -1
  283. package/packages/bundled-features/src/personal-access-tokens/handlers/create.write.ts +1 -1
  284. package/packages/bundled-features/src/personal-access-tokens/handlers/revoke.write.ts +1 -1
  285. package/packages/bundled-features/src/personal-access-tokens/hash.ts +1 -1
  286. package/packages/bundled-features/src/personal-access-tokens/i18n.ts +2 -2
  287. package/packages/bundled-features/src/personal-access-tokens/index.ts +5 -5
  288. package/packages/bundled-features/src/personal-access-tokens/resolver.ts +1 -1
  289. package/packages/bundled-features/src/personal-access-tokens/schema/api-token.ts +3 -3
  290. package/packages/bundled-features/src/personal-access-tokens/screens.ts +2 -2
  291. package/packages/bundled-features/src/personal-access-tokens/{constants.ts → web/constants.ts} +0 -1
  292. package/packages/bundled-features/src/personal-access-tokens/{scopes.ts → web/scopes.ts} +0 -1
  293. package/packages/bundled-features/src/presets/changes.json +7 -0
  294. package/packages/bundled-features/src/presets/index.ts +0 -1
  295. package/packages/bundled-features/src/presets/security-baseline.ts +1 -1
  296. package/packages/bundled-features/src/renderer-foundation/types.ts +1 -1
  297. package/packages/bundled-features/src/secrets/feature.ts +1 -1
  298. package/packages/bundled-features/src/secrets/handlers/delete.write.ts +1 -1
  299. package/packages/bundled-features/src/secrets/handlers/list.query.ts +1 -1
  300. package/packages/bundled-features/src/secrets/handlers/set.write.ts +1 -1
  301. package/packages/bundled-features/src/secrets/i18n.ts +1 -1
  302. package/packages/bundled-features/src/secrets/index.ts +8 -8
  303. package/packages/bundled-features/src/secrets/{constants.ts → web/constants.ts} +0 -1
  304. package/packages/bundled-features/src/secrets/write-gate.ts +1 -1
  305. package/packages/bundled-features/src/sessions/feature.ts +7 -4
  306. package/packages/bundled-features/src/sessions/schema/user-session.ts +2 -3
  307. package/packages/bundled-features/src/sessions/{i18n.ts → web/i18n.ts} +0 -1
  308. package/packages/bundled-features/src/shared/index.ts +6 -1
  309. package/packages/bundled-features/src/shared/purge-files-reaching-subject.ts +10 -2
  310. package/packages/bundled-features/src/shared/web/translate-or-raw.ts +0 -1
  311. package/packages/bundled-features/src/subscription-stripe/feature.ts +2 -0
  312. package/packages/bundled-features/src/subscription-stripe/plugin-methods.ts +19 -0
  313. package/packages/bundled-features/src/subscription-stripe/verify-webhook.ts +1 -0
  314. package/packages/bundled-features/src/tags/changes.json +6 -0
  315. package/packages/bundled-features/src/tags/feature.ts +1 -1
  316. package/packages/bundled-features/src/tags/handlers/assign-tag.write.ts +11 -7
  317. package/packages/bundled-features/src/tags/handlers/create-tag.write.ts +1 -1
  318. package/packages/bundled-features/src/tags/handlers/delete-tag.write.ts +4 -1
  319. package/packages/bundled-features/src/tags/handlers/remove-tag.write.ts +1 -1
  320. package/packages/bundled-features/src/tags/handlers/update-tag.write.ts +1 -1
  321. package/packages/bundled-features/src/tags/index.ts +12 -12
  322. package/packages/bundled-features/src/tags/screens.ts +1 -1
  323. package/packages/bundled-features/src/tags/web/client-plugin.tsx +1 -3
  324. package/packages/bundled-features/src/tags/{constants.ts → web/constants.ts} +4 -1
  325. package/packages/bundled-features/src/tags/web/entity-tags.tsx +1 -2
  326. package/packages/bundled-features/src/tags/web/i18n.ts +2 -2
  327. package/packages/bundled-features/src/tags/web/index.ts +2 -3
  328. package/packages/bundled-features/src/tags/web/tag-chip.tsx +0 -1
  329. package/packages/bundled-features/src/tags/web/tag-filter.tsx +1 -2
  330. package/packages/bundled-features/src/tags/web/tag-manager.tsx +5 -4
  331. package/packages/bundled-features/src/tags/web/tag-picker.tsx +0 -1
  332. package/packages/bundled-features/src/tags/web/tag-section.tsx +1 -2
  333. package/packages/bundled-features/src/tags/web/tags-cell.tsx +1 -2
  334. package/packages/bundled-features/src/template-resolver/README.md +1 -1
  335. package/packages/bundled-features/src/template-resolver/api.ts +75 -28
  336. package/packages/bundled-features/src/template-resolver/changes.json +43 -0
  337. package/packages/bundled-features/src/template-resolver/compile-document-body.ts +1 -1
  338. package/packages/bundled-features/src/template-resolver/compile-steps-block.ts +2 -2
  339. package/packages/bundled-features/src/template-resolver/document-ops.ts +5 -5
  340. package/packages/bundled-features/src/template-resolver/document-sanitizer.ts +4 -4
  341. package/packages/bundled-features/src/template-resolver/feature.ts +13 -4
  342. package/packages/bundled-features/src/template-resolver/handlers/by-slug.query.ts +6 -1
  343. package/packages/bundled-features/src/template-resolver/handlers/by-tenant.query.ts +6 -2
  344. package/packages/bundled-features/src/template-resolver/handlers/collection-item.query.ts +1 -1
  345. package/packages/bundled-features/src/template-resolver/handlers/collection-list.query.ts +1 -1
  346. package/packages/bundled-features/src/template-resolver/handlers/collection-set.write.ts +19 -2
  347. package/packages/bundled-features/src/template-resolver/handlers/copy-locale.write.ts +2 -2
  348. package/packages/bundled-features/src/template-resolver/handlers/diff-to-system.query.ts +7 -1
  349. package/packages/bundled-features/src/template-resolver/handlers/discard-draft.write.ts +1 -1
  350. package/packages/bundled-features/src/template-resolver/handlers/document-base.ts +8 -2
  351. package/packages/bundled-features/src/template-resolver/handlers/document-blocks.query.ts +2 -2
  352. package/packages/bundled-features/src/template-resolver/handlers/export-bundle.query.ts +5 -2
  353. package/packages/bundled-features/src/template-resolver/handlers/find-by-id.query.ts +4 -2
  354. package/packages/bundled-features/src/template-resolver/handlers/layout-source.query.ts +10 -5
  355. package/packages/bundled-features/src/template-resolver/handlers/list.query.ts +5 -2
  356. package/packages/bundled-features/src/template-resolver/handlers/overview.query.ts +68 -10
  357. package/packages/bundled-features/src/template-resolver/handlers/patch-draft.write.ts +1 -1
  358. package/packages/bundled-features/src/template-resolver/handlers/resource-shared.ts +1 -1
  359. package/packages/bundled-features/src/template-resolver/handlers/resource-upload.write.ts +1 -1
  360. package/packages/bundled-features/src/template-resolver/handlers/send-test.write.ts +2 -2
  361. package/packages/bundled-features/src/template-resolver/handlers/set.write.ts +1 -1
  362. package/packages/bundled-features/src/template-resolver/handlers/shared.ts +1 -1
  363. package/packages/bundled-features/src/template-resolver/handlers/template-gates.ts +6 -6
  364. package/packages/bundled-features/src/template-resolver/handlers/template-write.ts +2 -2
  365. package/packages/bundled-features/src/template-resolver/handlers/usage.query.ts +8 -2
  366. package/packages/bundled-features/src/template-resolver/handlers/validate.query.ts +4 -2
  367. package/packages/bundled-features/src/template-resolver/i18n.ts +25 -0
  368. package/packages/bundled-features/src/template-resolver/index.ts +60 -59
  369. package/packages/bundled-features/src/template-resolver/layout-appearance.ts +1 -1
  370. package/packages/bundled-features/src/template-resolver/layout-regions.ts +1 -1
  371. package/packages/bundled-features/src/template-resolver/seeding.ts +16 -7
  372. package/packages/bundled-features/src/template-resolver/store-template-resource.ts +2 -2
  373. package/packages/bundled-features/src/template-resolver/table.ts +1 -1
  374. package/packages/bundled-features/src/template-resolver/template-bundle.ts +2 -2
  375. package/packages/bundled-features/src/template-resolver/template-delivery-policy.ts +82 -0
  376. package/packages/bundled-features/src/template-resolver/template-draft.ts +1 -1
  377. package/packages/bundled-features/src/template-resolver/template-edit-policy.ts +2 -2
  378. package/packages/bundled-features/src/template-resolver/template-meta.ts +2 -2
  379. package/packages/bundled-features/src/template-resolver/template-preview.ts +14 -10
  380. package/packages/bundled-features/src/template-resolver/template-usage.ts +1 -1
  381. package/packages/bundled-features/src/template-resolver/template-validation.ts +2 -2
  382. package/packages/bundled-features/src/template-resolver/testing.ts +2 -2
  383. package/packages/bundled-features/src/template-resolver/user-content-table.ts +1 -1
  384. package/packages/bundled-features/src/template-resolver/web/client-plugin.tsx +4 -5
  385. package/packages/bundled-features/src/template-resolver/{constants.ts → web/constants.ts} +7 -10
  386. package/packages/bundled-features/src/template-resolver/{document-blocks.ts → web/document-blocks.ts} +0 -1
  387. package/packages/bundled-features/src/template-resolver/web/document-editor-extensions.ts +2 -3
  388. package/packages/bundled-features/src/template-resolver/web/document-editor.tsx +0 -1
  389. package/packages/bundled-features/src/template-resolver/{document-images.ts → web/document-images.ts} +0 -1
  390. package/packages/bundled-features/src/template-resolver/{document-schema.ts → web/document-schema.ts} +0 -1
  391. package/packages/bundled-features/src/template-resolver/{document-steps.ts → web/document-steps.ts} +0 -1
  392. package/packages/bundled-features/src/template-resolver/web/document-tiptap-editor.tsx +6 -7
  393. package/packages/bundled-features/src/template-resolver/web/document-toolbar-blocks.ts +2 -3
  394. package/packages/bundled-features/src/template-resolver/web/editor-handle.ts +1 -2
  395. package/packages/bundled-features/src/template-resolver/web/i18n.ts +2 -1
  396. package/packages/bundled-features/src/template-resolver/web/index.ts +13 -14
  397. package/packages/bundled-features/src/template-resolver/{mail-constants.ts → web/mail-constants.ts} +0 -1
  398. package/packages/bundled-features/src/template-resolver/{pdf-constants.ts → web/pdf-constants.ts} +0 -1
  399. package/packages/bundled-features/src/template-resolver/web/placeholder-line-editor-lazy.tsx +0 -1
  400. package/packages/bundled-features/src/template-resolver/web/placeholder-line-editor.tsx +5 -4
  401. package/packages/bundled-features/src/template-resolver/{placeholder-text.ts → web/placeholder-text.ts} +0 -1
  402. package/packages/bundled-features/src/template-resolver/{qualified-names.ts → web/qualified-names.ts} +0 -1
  403. package/packages/bundled-features/src/template-resolver/web/use-stable-by-key.ts +0 -1
  404. package/packages/bundled-features/src/tenant/handlers/add-member.write.ts +1 -1
  405. package/packages/bundled-features/src/tenant/index.ts +7 -7
  406. package/packages/bundled-features/src/tenant/invitation-table.ts +1 -1
  407. package/packages/bundled-features/src/tenant/invited-membership.ts +1 -1
  408. package/packages/bundled-features/src/tenant/last-tenant-admin.ts +1 -1
  409. package/packages/bundled-features/src/tenant/member-role-options.ts +1 -1
  410. package/packages/bundled-features/src/tenant/screens.ts +2 -2
  411. package/packages/bundled-features/src/tenant/web/client-plugin.tsx +1 -2
  412. package/packages/bundled-features/src/tenant/{constants.ts → web/constants.ts} +3 -6
  413. package/packages/bundled-features/src/tenant/web/index.ts +0 -1
  414. package/packages/bundled-features/src/tenant/web/member-roles-cell.tsx +0 -1
  415. package/packages/bundled-features/src/tenant/web/member-status-cell.tsx +0 -1
  416. package/packages/bundled-features/src/tenant-lifecycle/stages.ts +2 -2
  417. package/packages/bundled-features/src/tier-engine/entity.ts +1 -1
  418. package/packages/bundled-features/src/tier-engine/feature.ts +7 -7
  419. package/packages/bundled-features/src/tier-engine/handlers/set-tenant-tier.write.ts +1 -1
  420. package/packages/bundled-features/src/tier-engine/index.ts +8 -8
  421. package/packages/bundled-features/src/tier-engine/web/client-plugin.tsx +2 -3
  422. package/packages/bundled-features/src/tier-engine/{constants.ts → web/constants.ts} +2 -3
  423. package/packages/bundled-features/src/tier-engine/{i18n.ts → web/i18n.ts} +0 -1
  424. package/packages/bundled-features/src/tier-engine/web/index.ts +0 -1
  425. package/packages/bundled-features/src/user/handlers/create.write.ts +1 -1
  426. package/packages/bundled-features/src/user/handlers/update-roles.ts +1 -1
  427. package/packages/bundled-features/src/user/handlers/update.write.ts +1 -1
  428. package/packages/bundled-features/src/user/index.ts +1 -1
  429. package/packages/bundled-features/src/user/invited-global-roles.ts +1 -1
  430. package/packages/bundled-features/src/user/schema/user.ts +1 -1
  431. package/packages/bundled-features/src/user/{constants.ts → web/constants.ts} +0 -1
  432. package/packages/bundled-features/src/user-data-rights/changes.json +14 -0
  433. package/packages/bundled-features/src/user-data-rights/env.ts +1 -1
  434. package/packages/bundled-features/src/user-data-rights/feature.ts +9 -9
  435. package/packages/bundled-features/src/user-data-rights/index.ts +1 -1
  436. package/packages/bundled-features/src/user-data-rights/lib/resolve-tenant-model.ts +1 -1
  437. package/packages/bundled-features/src/user-data-rights/mail-notifications.ts +1 -1
  438. package/packages/bundled-features/src/user-data-rights/web/client-plugin.tsx +2 -3
  439. package/packages/bundled-features/src/user-data-rights/web/confirm-deletion-screen.tsx +0 -1
  440. package/packages/bundled-features/src/user-data-rights/{constants.ts → web/constants.ts} +11 -12
  441. package/packages/bundled-features/src/user-data-rights/web/default-translations.ts +91 -0
  442. package/packages/bundled-features/src/user-data-rights/web/i18n.ts +41 -91
  443. package/packages/bundled-features/src/user-data-rights/web/index.ts +1 -2
  444. package/packages/bundled-features/src/user-data-rights/web/privacy-center-screen.tsx +1 -2
  445. package/packages/bundled-features/src/user-data-rights/web/public-deletion-gate.tsx +0 -1
  446. package/packages/bundled-features/src/user-data-rights/web/request-deletion-screen.tsx +0 -1
  447. package/packages/bundled-features/src/user-data-rights-defaults/hooks/file-ref.userdata-hook.ts +10 -1
  448. package/packages/bundled-features/src/user-profile/feature.ts +2 -2
  449. package/packages/bundled-features/src/user-profile/handlers/change-email.write.ts +1 -1
  450. package/packages/bundled-features/src/user-profile/index.ts +3 -2
  451. package/packages/bundled-features/src/user-profile/web/client-plugin.ts +2 -3
  452. package/packages/bundled-features/src/user-profile/{constants.ts → web/constants.ts} +0 -1
  453. package/packages/bundled-features/src/user-profile/{i18n.ts → web/i18n.ts} +0 -1
  454. package/packages/bundled-features/src/user-profile/web/profile-screen.tsx +2 -3
  455. package/packages/bundled-features/src/waitlist/changes.json +6 -0
  456. package/packages/bundled-features/src/waitlist/entity.ts +1 -1
  457. package/packages/bundled-features/src/waitlist/feature.ts +5 -5
  458. package/packages/bundled-features/src/waitlist/handlers/export-purge.write.ts +3 -3
  459. package/packages/bundled-features/src/waitlist/handlers/invite.write.ts +5 -1
  460. package/packages/bundled-features/src/waitlist/handlers/reject.write.ts +1 -1
  461. package/packages/bundled-features/src/waitlist/handlers/submit.write.ts +3 -3
  462. package/packages/bundled-features/src/waitlist/import.ts +1 -1
  463. package/packages/bundled-features/src/waitlist/index.ts +11 -11
  464. package/packages/bundled-features/src/waitlist/legacy-migrate.ts +1 -1
  465. package/packages/bundled-features/src/waitlist/link-on-signup.ts +1 -1
  466. package/packages/bundled-features/src/waitlist/mail.ts +7 -6
  467. package/packages/bundled-features/src/waitlist/payloads.ts +1 -1
  468. package/packages/bundled-features/src/waitlist/screens.ts +1 -1
  469. package/packages/bundled-features/src/waitlist/{constants.ts → web/constants.ts} +0 -1
  470. package/samples/apps/styleguide/src/features/content/web.tsx +0 -1
  471. package/samples/apps/ui-walkthrough/src/app/client.tsx +2 -0
  472. package/samples/apps/ui-walkthrough/src/app/seed-rental.ts +17 -1
  473. package/samples/apps/ui-walkthrough/src/app/seed-templates.ts +11 -0
  474. package/samples/apps/ui-walkthrough/src/app/server.ts +2 -1
  475. package/samples/apps/ui-walkthrough/src/features/billing/feature.ts +35 -7
  476. package/samples/apps/ui-walkthrough/src/features/billing/i18n.ts +6 -0
  477. package/samples/apps/ui-walkthrough/src/features/rental/entities.ts +27 -0
  478. package/samples/apps/ui-walkthrough/src/features/rental/feature.ts +61 -7
  479. package/samples/apps/ui-walkthrough/src/features/rental/i18n.ts +48 -24
  480. package/samples/apps/ui-walkthrough/src/features/rental/invoice-receive.ts +0 -1
  481. package/samples/apps/ui-walkthrough/src/features/rental/lease-support.ts +17 -1
  482. package/samples/apps/ui-walkthrough/src/features/rental/qualified-names.ts +3 -0
  483. package/samples/apps/ui-walkthrough/src/features/rental/receipts-upload.ts +70 -0
  484. package/samples/apps/ui-walkthrough/src/features/rental/screens.ts +90 -13
  485. package/samples/apps/ui-walkthrough/src/features/rental/web/index.ts +0 -2
  486. package/samples/apps/ui-walkthrough/src/features/subscription-plans/feature.ts +103 -0
  487. package/samples/apps/ui-walkthrough/src/features/subscription-plans/i18n.ts +36 -0
  488. package/samples/apps/ui-walkthrough/src/features/subscription-plans/index.ts +2 -0
  489. package/samples/apps/ui-walkthrough/src/features/subscription-plans/seed.ts +21 -0
  490. package/samples/apps/ui-walkthrough/src/run-config.ts +11 -0
  491. package/samples/apps/use-all-bundled/e2e-billing-gallery/server.ts +1 -1
  492. package/samples/apps/use-all-bundled/feature-manifest.json +4 -4
  493. package/samples/apps/use-all-bundled/scripts/check-coverage.ts +1 -1
  494. package/samples/apps/use-all-bundled/src/app/dev-app-options.ts +3 -1
  495. package/samples/recipes/compose-stacks/README.md +1 -2
  496. package/samples/recipes/embedded/README.md +5 -5
  497. package/samples/recipes/embedded/src/handlers/invoice-receive.write.ts +0 -1
  498. package/samples/recipes/embedded/src/screens/invoice-receive.screen.ts +9 -12
  499. package/samples/recipes/legal-pages/README.md +2 -2
  500. package/samples/recipes/legal-pages/src/feature.ts +1 -1
  501. package/samples/recipes/reference-data/src/feature.ts +3 -7
  502. package/packages/bundled-features/src/admin-shell/i18n.ts +0 -54
  503. package/packages/bundled-features/src/audit/i18n.ts +0 -25
  504. package/packages/bundled-features/src/auth-mfa/web/qrcode-browser.d.ts +0 -11
  505. package/packages/bundled-features/src/jobs/i18n.ts +0 -55
  506. package/packages/bundled-features/src/managed-pages/i18n.ts +0 -63
  507. package/packages/bundled-features/src/presets/dsgvo-self-service.ts +0 -35
  508. package/packages/bundled-features/src/user-data-rights/i18n.ts +0 -44
  509. package/samples/apps/ui-walkthrough/src/features/rental/web/upload-standard-layout.tsx +0 -61
@@ -1,8 +1,8 @@
1
1
  import { defineQueryHandler } from "@cosmicdrift/kumiko-framework/engine";
2
- import { FORM_DRAFT_ACCESS } from "../constants.ts";
3
2
  import { lookupDraft } from "../lookup.ts";
4
3
  import type { FormDraftBlob } from "../schemas.ts";
5
- import { formDraftBlobSchema, getDraftPayloadSchema } from "../schemas.ts";
4
+ import { getDraftPayloadSchema } from "../schemas.ts";
5
+ import { FORM_DRAFT_ACCESS } from "../web/constants.ts";
6
6
 
7
7
  export type GetDraftResult = { readonly draft: FormDraftBlob | null };
8
8
 
@@ -24,15 +24,14 @@ export const getDraftQuery = defineQueryHandler({
24
24
  query.payload.draftKey,
25
25
  );
26
26
  if (!row) return { draft: null };
27
- const parsed = formDraftBlobSchema.safeParse(row.draft);
28
- if (!parsed.success) {
29
- // Schema evolution or a corrupt jsonb row: surface it to operators
27
+ if (!row.draft) {
28
+ // Schema evolution or a corrupt/erased row: surface it to operators
30
29
  // instead of silently making the user's draft vanish.
31
30
  ctx.log?.warn?.(
32
- `[form-draft:get] stored blob for draftKey=${query.payload.draftKey} failed schema, treating as absent: ${parsed.error.message}`,
31
+ `[form-draft:get] stored blob for draftKey=${query.payload.draftKey} failed schema or decryption, treating as absent`,
33
32
  );
34
33
  return { draft: null };
35
34
  }
36
- return { draft: parsed.data };
35
+ return { draft: row.draft };
37
36
  },
38
37
  });
@@ -1,7 +1,7 @@
1
1
  import { defineQueryHandler } from "@cosmicdrift/kumiko-framework/engine";
2
- import { FORM_DRAFT_ACCESS } from "../constants.ts";
3
2
  import { listDraftsByScreen } from "../lookup.ts";
4
3
  import { listDraftsPayloadSchema } from "../schemas.ts";
4
+ import { FORM_DRAFT_ACCESS } from "../web/constants.ts";
5
5
 
6
6
  export type ListDraftsResult = {
7
7
  readonly drafts: readonly {
@@ -39,12 +39,18 @@ export const listDraftsQuery = defineQueryHandler({
39
39
  query.payload.screenId,
40
40
  );
41
41
  const drafts = rows
42
- .map((row) => ({
43
- id: row.id,
44
- draftKey: row.draftKey,
45
- stepIndex: row.draft.stepIndex,
46
- savedAt: row.draft.savedAt,
47
- }))
42
+ .flatMap((row) =>
43
+ row.draft
44
+ ? [
45
+ {
46
+ id: row.id,
47
+ draftKey: row.draftKey,
48
+ stepIndex: row.draft.stepIndex,
49
+ savedAt: row.draft.savedAt,
50
+ },
51
+ ]
52
+ : [],
53
+ )
48
54
  .sort(byNewestFirst)
49
55
  // Matches listDraftsByScreen selectMany limit — JS sort cannot push the
50
56
  // ceiling into SQL while savedAt lives inside jsonb.
@@ -1,15 +1,15 @@
1
1
  import { defineWriteHandler } from "@cosmicdrift/kumiko-framework/engine";
2
2
  import { failUnprocessable, type WriteFailure } from "@cosmicdrift/kumiko-framework/errors";
3
3
  import { getTemporal } from "@cosmicdrift/kumiko-framework/time";
4
- import {
5
- FORM_DRAFT_ACCESS,
6
- FORM_DRAFT_MAX_PER_OWNER,
7
- FORM_DRAFT_UNIQUE_KEY_CONSTRAINT,
8
- } from "../constants.ts";
9
4
  import { countDraftsByOwner } from "../db/queries/draft-count.ts";
10
5
  import { formDraftExecutor } from "../executor.ts";
11
6
  import { lookupDraft } from "../lookup.ts";
12
7
  import { saveDraftPayloadSchema } from "../schemas.ts";
8
+ import {
9
+ FORM_DRAFT_ACCESS,
10
+ FORM_DRAFT_MAX_PER_OWNER,
11
+ FORM_DRAFT_UNIQUE_KEY_CONSTRAINT,
12
+ } from "../web/constants.ts";
13
13
 
14
14
  /**
15
15
  * save is an upsert keyed on (tenantId, ownerId, draftKey) — same
@@ -1,11 +1,3 @@
1
- export {
2
- FORM_DRAFT_ACCESS,
3
- FORM_DRAFT_FEATURE_NAME,
4
- FORM_DRAFT_KEY_MAX_LENGTH,
5
- FORM_DRAFT_UNIQUE_KEY_CONSTRAINT,
6
- FormDraftHandlers,
7
- FormDraftQueries,
8
- } from "./constants.ts";
9
1
  export { formDraftEntity } from "./entity.ts";
10
2
  export { formDraftExecutor, formDraftTable } from "./executor.ts";
11
3
  export { createFormDraftFeature } from "./feature.ts";
@@ -26,3 +18,11 @@ export {
26
18
  type SaveDraftPayload,
27
19
  saveDraftPayloadSchema,
28
20
  } from "./schemas.ts";
21
+ export {
22
+ FORM_DRAFT_ACCESS,
23
+ FORM_DRAFT_FEATURE_NAME,
24
+ FORM_DRAFT_KEY_MAX_LENGTH,
25
+ FORM_DRAFT_UNIQUE_KEY_CONSTRAINT,
26
+ FormDraftHandlers,
27
+ FormDraftQueries,
28
+ } from "./web/constants.ts";
@@ -2,13 +2,14 @@ import type { TenantDb } from "@cosmicdrift/kumiko-framework/db";
2
2
  import { fetchOne, selectMany } from "@cosmicdrift/kumiko-framework/db";
3
3
  import type { TenantId } from "@cosmicdrift/kumiko-framework/engine";
4
4
  import type { Temporal } from "@cosmicdrift/kumiko-types/temporal";
5
+ import { readStoredDraft } from "./decrypt-draft.ts";
5
6
  import { formDraftTable } from "./executor.ts";
6
7
  import type { FormDraftBlob } from "./schemas.ts";
7
8
 
8
9
  export type FormDraftRow = {
9
10
  readonly id: string;
10
11
  readonly version: number;
11
- readonly draft: FormDraftBlob;
12
+ readonly draft: FormDraftBlob | null;
12
13
  readonly insertedAt: Temporal.Instant;
13
14
  };
14
15
 
@@ -21,13 +22,15 @@ export async function lookupDraft(
21
22
  ownerId: string,
22
23
  draftKey: string,
23
24
  ): Promise<FormDraftRow | undefined> {
24
- return fetchOne<FormDraftRow>(db, formDraftTable, { tenantId, ownerId, draftKey });
25
+ const row = await fetchOne<FormDraftRow>(db, formDraftTable, { tenantId, ownerId, draftKey });
26
+ if (!row) return undefined;
27
+ return { ...row, draft: await readStoredDraft(row.draft) };
25
28
  }
26
29
 
27
30
  export type FormDraftSummaryRow = {
28
31
  readonly id: string;
29
32
  readonly draftKey: string;
30
- readonly draft: FormDraftBlob;
33
+ readonly draft: FormDraftBlob | null;
31
34
  };
32
35
 
33
36
  // LIKE metacharacters in a caller-controlled screenId must not widen the
@@ -49,7 +52,7 @@ export async function listDraftsByScreen(
49
52
  ): Promise<readonly FormDraftSummaryRow[]> {
50
53
  // ponytail: hard cap — savedAt lives in jsonb so SQL ORDER BY+LIMIT is wrong;
51
54
  // promote savedAt to a column when callers need correct newest-N under the ceiling.
52
- return selectMany<FormDraftSummaryRow>(
55
+ const rows = await selectMany<FormDraftSummaryRow>(
53
56
  db,
54
57
  formDraftTable,
55
58
  {
@@ -59,4 +62,7 @@ export async function listDraftsByScreen(
59
62
  },
60
63
  { limit: 200 },
61
64
  );
65
+ return Promise.all(
66
+ rows.map(async (row) => ({ ...row, draft: await readStoredDraft(row.draft) })),
67
+ );
62
68
  }
@@ -1,5 +1,5 @@
1
1
  import * as z from "zod";
2
- import { FORM_DRAFT_KEY_MAX_LENGTH, FORM_DRAFT_VALUES_MAX_BYTES } from "./constants.ts";
2
+ import { FORM_DRAFT_KEY_MAX_LENGTH, FORM_DRAFT_VALUES_MAX_BYTES } from "./web/constants.ts";
3
3
 
4
4
  const draftKeySchema = z.string().trim().min(1).max(FORM_DRAFT_KEY_MAX_LENGTH);
5
5
 
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // form-draft bundle constants — feature-name + qualified handler/query names.
3
2
  //
4
3
  // Part of CosmicDriftGameStudio/kumiko-framework#1883 (wizard mode), issue #1889.
@@ -27,8 +27,8 @@ export const formDraftExportHook: UserDataExportHook = async (ctx) => {
27
27
  };
28
28
  };
29
29
 
30
- // Real physical delete, not crypto-shredding — `draft` is jsonb (entity.ts
31
- // explains why it can't use the string-only PII field-encryption engine).
30
+ // Deletes the row through the event store; `draft` is ciphertext under the
31
+ // owner's key in the row and in every event (previous of the delete included).
32
32
  // A drafted form is pure pre-submit scratch state with no value once the
33
33
  // owner is gone, so both forget strategies (delete/anonymize) remove the
34
34
  // row outright rather than anonymizing in place. Per-row via the executor
@@ -24,14 +24,12 @@
24
24
  // erst bei tenant-destroy (Key-Erase). Read-Row + Body-File sind nach dem
25
25
  // Sweep weg; das Event-Log ist append-only by design.
26
26
 
27
- import {
28
- type DbRunner,
29
- deleteMany,
30
- type EntityTableMeta,
31
- selectMany,
32
- } from "@cosmicdrift/kumiko-framework/db";
27
+ import { type DbRunner, deleteMany, selectMany } from "@cosmicdrift/kumiko-framework/db";
33
28
  import type { TenantId } from "@cosmicdrift/kumiko-framework/engine";
34
- import { archiveStream } from "@cosmicdrift/kumiko-framework/event-store";
29
+ import {
30
+ archiveStream,
31
+ deleteRowsWithoutReplayableStream,
32
+ } from "@cosmicdrift/kumiko-framework/event-store";
35
33
  import type { getTemporal } from "@cosmicdrift/kumiko-framework/time";
36
34
  import { seenMessageTable } from "./entities.ts";
37
35
  import { INBOUND_MESSAGE_AGGREGATE_TYPE } from "./events.ts";
@@ -136,10 +134,12 @@ async function purgeExpiredMessages(
136
134
  ids.push(row.id);
137
135
  }
138
136
  if (ids.length > 0) {
139
- await deleteMany(args.db, inboundMessagesProjectionTable as EntityTableMeta, {
140
- id: { in: ids },
137
+ const deleted = await deleteRowsWithoutReplayableStream(args.db, {
138
+ table: inboundMessagesProjectionTable,
139
+ ids,
140
+ tenantId: args.tenantId,
141
141
  });
142
- messagesPurged += ids.length;
142
+ messagesPurged += deleted.length;
143
143
  }
144
144
 
145
145
  if (rows.length < BATCH_LIMIT) break;
@@ -3,12 +3,6 @@ import {
3
3
  type FeatureDefinition,
4
4
  i18nKey,
5
5
  } from "@cosmicdrift/kumiko-framework/engine";
6
- import {
7
- JOB_RUN_DETAIL_SCREEN_ID,
8
- JOB_RUNS_SCREEN_ID,
9
- JobHandlers,
10
- JobQueries,
11
- } from "./constants.ts";
12
6
  import { catalogQuery } from "./handlers/catalog.query.ts";
13
7
  import { detailQuery } from "./handlers/detail.query.ts";
14
8
  import { listQuery } from "./handlers/list.query.ts";
@@ -29,10 +23,16 @@ import {
29
23
  import { tenantFailuresQuery } from "./handlers/tenant-failures.query.ts";
30
24
  import { tenantRunsQuery } from "./handlers/tenant-runs.query.ts";
31
25
  import { triggerWrite } from "./handlers/trigger.write.ts";
32
- import { JOBS_I18N } from "./i18n.ts";
33
26
  import { jobRunLogsTableMeta, jobRunsTableMeta } from "./job-run-table.ts";
34
27
  import { tenantJobFailuresTableMeta } from "./tenant-job-failure-table.ts";
35
28
  import { tenantJobRunsTableMeta } from "./tenant-job-run-table.ts";
29
+ import {
30
+ JOB_RUN_DETAIL_SCREEN_ID,
31
+ JOB_RUNS_SCREEN_ID,
32
+ JobHandlers,
33
+ JobQueries,
34
+ } from "./web/constants.ts";
35
+ import { JOBS_I18N } from "./web/i18n.ts";
36
36
 
37
37
  export type JobsFeatureOptions = {
38
38
  // How long a job run (and its logs) stays in store_job_runs/
@@ -11,8 +11,8 @@ import type { JobRunner } from "@cosmicdrift/kumiko-framework/jobs";
11
11
  import { parseJsonOrThrow } from "@cosmicdrift/kumiko-framework/utils";
12
12
  import * as z from "zod";
13
13
  import { decryptStoredPii } from "../../shared/index.ts";
14
- import { JobErrors } from "../constants.ts";
15
14
  import { jobRunsTable } from "../job-run-table.ts";
15
+ import { JobErrors } from "../web/constants.ts";
16
16
 
17
17
  type JobRunRow = {
18
18
  readonly status: string;
@@ -8,8 +8,8 @@ import {
8
8
  } from "@cosmicdrift/kumiko-framework/errors";
9
9
  import type { JobRunner } from "@cosmicdrift/kumiko-framework/jobs";
10
10
  import * as z from "zod";
11
- import { JobErrors } from "../constants.ts";
12
11
  import { isManualTrigger } from "../is-manual-trigger.ts";
12
+ import { JobErrors } from "../web/constants.ts";
13
13
 
14
14
  function invalidPayloadError(): UnprocessableError {
15
15
  return new UnprocessableError(JobErrors.invalidPayload, {
@@ -1,4 +1,3 @@
1
- export { JOBS_FEATURE, JobErrors, JobHandlers, JobQueries } from "./constants.ts";
2
1
  export { createJobsFeature, type JobsFeatureOptions } from "./feature.ts";
3
2
  export type { JobRunLoggerCallbacks } from "./job-run-logger.ts";
4
3
  export { createJobRunLogger } from "./job-run-logger.ts";
@@ -7,3 +6,4 @@ export { jobRunLogsTable, jobRunsTable } from "./job-run-table.ts";
7
6
  export { tenantJobFailuresTable } from "./tenant-job-failure-table.ts";
8
7
  export type { TenantJobRunStatus } from "./tenant-job-run-table.ts";
9
8
  export { tenantJobRunsTable } from "./tenant-job-run-table.ts";
9
+ export { JOBS_FEATURE, JobErrors, JobHandlers, JobQueries } from "./web/constants.ts";
@@ -6,6 +6,7 @@ import {
6
6
  table as pgTable,
7
7
  serial,
8
8
  text,
9
+ type WritableTable,
9
10
  } from "@cosmicdrift/kumiko-framework/db";
10
11
  import {
11
12
  createEntity,
@@ -67,11 +68,11 @@ export const jobRunEntity = createEntity({
67
68
  indexes: [{ columns: ["startedAt"] }],
68
69
  });
69
70
 
70
- // Plain EntityTableMeta, NOT a branded EntityTable (buildEntityTable would
71
- // mark it executor-only): job-run is an unmanaged direct-write store, so
71
+ // Unmanaged meta, NOT buildEntityTable (its table is not Writable and only the
72
+ // executor may write it): job-run is an unmanaged direct-write store, so
72
73
  // onJobStart/-Complete/-Failed need to write via ctx.db/insertOne directly
73
74
  // (same pattern as sessions/schema/user-session.ts).
74
- export const jobRunsTable: EntityTableMeta = deriveEntityTableMeta("job-run", jobRunEntity, {
75
+ export const jobRunsTable: WritableTable = deriveEntityTableMeta("job-run", jobRunEntity, {
75
76
  source: "unmanaged",
76
77
  });
77
78
  export const jobRunsTableMeta = jobRunsTable;
@@ -1,8 +1,7 @@
1
- // @runtime client
2
1
  import { mergeTranslations, type TranslationsByLocale } from "@cosmicdrift/kumiko-renderer";
3
2
  import type { ClientFeatureDefinition } from "@cosmicdrift/kumiko-renderer/web";
4
- import { JOBS_FEATURE } from "../constants.ts";
5
- import { defaultTranslations } from "./i18n.ts";
3
+ import { JOBS_FEATURE } from "./constants.ts";
4
+ import { defaultTranslations } from "./default-translations.ts";
6
5
 
7
6
  export type JobsClientOptions = {
8
7
  readonly translations?: TranslationsByLocale;
@@ -1,4 +1,3 @@
1
- // @runtime client
2
1
  // Feature name + qualified names for server handlers and web screens.
3
2
  export const JOBS_FEATURE = "jobs" as const;
4
3
 
@@ -0,0 +1,7 @@
1
+ import {
2
+ type TranslationsByLocale,
3
+ translationsByLocaleFromKeys,
4
+ } from "@cosmicdrift/kumiko-renderer";
5
+ import { JOBS_I18N } from "./i18n.ts";
6
+
7
+ export const defaultTranslations: TranslationsByLocale = translationsByLocaleFromKeys(JOBS_I18N);
@@ -1,8 +1,54 @@
1
- // @runtime client
2
- import {
3
- type TranslationsByLocale,
4
- translationsByLocaleFromKeys,
5
- } from "@cosmicdrift/kumiko-renderer";
6
- import { JOBS_I18N } from "../i18n.ts";
1
+ // Server + client i18n for jobs operator screens.
7
2
 
8
- export const defaultTranslations: TranslationsByLocale = translationsByLocaleFromKeys(JOBS_I18N);
3
+ type LocalizedString = { readonly en: string };
4
+
5
+ export const JOBS_I18N: Readonly<Record<string, LocalizedString>> = {
6
+ "screen:job-runs.title": { en: "Job runs" },
7
+ "screen:job-run-detail.title": { en: "Job run" },
8
+ "screen:job-trigger.title": { en: "Trigger job" },
9
+ "jobs.screen.job-trigger.subtitle": {
10
+ en: "Start a job manually by name, with an optional JSON payload.",
11
+ },
12
+ "jobs.screen.job-run-detail.subtitle": {
13
+ en: "Status, timings, error and log lines of one job run.",
14
+ },
15
+ "jobs:entity:__action-form__:field:jobName": { en: "Job name" },
16
+ "jobs:entity:__action-form__:field:payload": { en: "JSON payload" },
17
+ "jobs:nav.jobRuns": { en: "Jobs" },
18
+ "jobs.runs.open": { en: "Details" },
19
+ "jobs.runs.filter.status": { en: "Status" },
20
+ "jobs.runs.filter.completed": { en: "Completed" },
21
+ "jobs.runs.filter.failed": { en: "Failed" },
22
+ "jobs.runs.filter.running": { en: "Running" },
23
+ "jobs.runs.filter.queued": { en: "Queued" },
24
+ "jobs.runs.col.job": { en: "Job" },
25
+ "jobs.runs.col.status": { en: "Status" },
26
+ "jobs.runs.col.started": { en: "Started" },
27
+ "jobs.runs.col.duration": { en: "Duration (ms)" },
28
+ "jobs.detail.field.job": { en: "Job" },
29
+ "jobs.detail.field.status": { en: "Status" },
30
+ "jobs.detail.field.id": { en: "Run ID" },
31
+ "jobs.detail.field.started": { en: "Started" },
32
+ "jobs.detail.field.finished": { en: "Finished" },
33
+ "jobs.detail.field.duration": { en: "Duration (ms)" },
34
+ "jobs.detail.field.error": { en: "Error" },
35
+ "jobs.detail.logs": { en: "Logs" },
36
+ "jobs.detail.retry": { en: "Retry" },
37
+ "jobs.trigger.title": { en: "Run a job" },
38
+ "jobs.errors.invalidCursor": { en: "The pagination cursor is invalid." },
39
+ "jobs.trigger.submit": { en: "Run" },
40
+ "jobs.errors.unknownJob": { en: "Unknown job." },
41
+ "jobs.errors.notManual": {
42
+ en: "This job cannot be triggered manually.",
43
+ },
44
+ "jobs.errors.invalidPayload": {
45
+ en: "The payload must be a valid JSON object.",
46
+ },
47
+ "jobs.errors.notFound": { en: "Not found." },
48
+ "jobs.errors.onlyFailedCanRetry": {
49
+ en: "Only failed runs can be retried.",
50
+ },
51
+ "jobs.errors.payloadErased": {
52
+ en: "This run's payload can no longer be read — the triggering user's data was erased.",
53
+ },
54
+ };
@@ -1,2 +1 @@
1
- // @runtime client
2
1
  export { type JobsClientOptions, jobsClient } from "./client-plugin.tsx";
@@ -1,4 +1,11 @@
1
1
  [
2
+ {
3
+ "version": "0.379.0",
4
+ "type": "improvement",
5
+ "title": "ledger confirm-schedule-period takes its lock through TenantDb",
6
+ "detail": "confirm-schedule-period serializes parallel confirms of one schedule period with ctx.db.advisoryXactLock instead of an unsafeRaw connection and an escapeHatch declaration. The lock key is unchanged (tenant id plus reference), so nothing changes for running installations.",
7
+ "migration": "None."
8
+ },
2
9
  {
3
10
  "version": "0.370.0",
4
11
  "type": "breaking",
@@ -7,7 +7,7 @@ import {
7
7
  createSelectField,
8
8
  createTextField,
9
9
  } from "@cosmicdrift/kumiko-framework/engine";
10
- import { ACCOUNT_TYPES, SCHEDULE_INTERVALS, TRANSACTION_STATUS } from "./constants.ts";
10
+ import { ACCOUNT_TYPES, SCHEDULE_INTERVALS, TRANSACTION_STATUS } from "./web/constants.ts";
11
11
 
12
12
  // account — a node in the chart of accounts. Event-sourced (create/update/list/
13
13
  // detail via the standard handlers); the framework projects `read_ledger_accounts`
@@ -21,7 +21,6 @@ import {
21
21
  defineFeature,
22
22
  type FeatureRegistrar,
23
23
  } from "@cosmicdrift/kumiko-framework/engine";
24
- import { DEFAULT_LEDGER_ACCESS, LEDGER_FEATURE_NAME } from "./constants.ts";
25
24
  import { accountEntity, scheduleEntity, transactionEntity } from "./entity.ts";
26
25
  import { createConfirmSchedulePeriodHandler } from "./handlers/confirm-schedule-period.write.ts";
27
26
  import { createCreateTransactionHandler } from "./handlers/create-transaction.write.ts";
@@ -32,6 +31,7 @@ import {
32
31
  } from "./handlers/reports.query.ts";
33
32
  import { createReverseTransactionHandler } from "./handlers/reverse-transaction.write.ts";
34
33
  import { requireScheduleSubjectPair } from "./schedule-subject-pair.ts";
34
+ import { DEFAULT_LEDGER_ACCESS, LEDGER_FEATURE_NAME } from "./web/constants.ts";
35
35
 
36
36
  // Opt-in tier-gating (mirrors folders): when set, the feature declares itself
37
37
  // r.toggleable so the dispatcher gate + tier-engine can switch the WHOLE ledger
@@ -1,4 +1,3 @@
1
- import { acquireNamespacedAdvisoryLock } from "@cosmicdrift/kumiko-framework/db";
2
1
  import type {
3
2
  AccessRule,
4
3
  WriteHandlerDef,
@@ -6,7 +5,6 @@ import type {
6
5
  } from "@cosmicdrift/kumiko-framework/engine";
7
6
  import { NotFoundError, writeFailure } from "@cosmicdrift/kumiko-framework/errors";
8
7
  import { generateId } from "@cosmicdrift/kumiko-framework/utils";
9
- import { DEFAULT_LEDGER_ACCESS } from "../constants.ts";
10
8
  import {
11
9
  accountExecutor,
12
10
  scheduleExecutor,
@@ -19,12 +17,11 @@ import {
19
17
  confirmSchedulePeriodPayloadSchema,
20
18
  } from "../schemas.ts";
21
19
  import { readSubjectReference } from "../subject-reference.ts";
20
+ import { DEFAULT_LEDGER_ACCESS } from "../web/constants.ts";
22
21
 
23
22
  // pg_advisory_xact_lock namespace (int4): 'lcsp' as ASCII, disjoint from the
24
23
  // framework's other fixed advisory-lock keys.
25
24
  const CONFIRM_PERIOD_LOCK_NAMESPACE = 0x6c637370;
26
- const CONFIRM_PERIOD_LOCK_REASON =
27
- "takes the per-(tenant, reference) advisory lock so parallel confirms cannot both pass the already-booked check; TenantDb has no lock API";
28
25
 
29
26
  // confirm-schedule-period — turn ONE projected period of a schedule into a posted,
30
27
  // balanced transaction (debit +amount / credit −amount), tagged with
@@ -42,7 +39,6 @@ export function createConfirmSchedulePeriodHandler(
42
39
  name: "confirm-schedule-period",
43
40
  schema: confirmSchedulePeriodPayloadSchema,
44
41
  access,
45
- escapeHatch: { grants: ["unsafeRaw"], reason: CONFIRM_PERIOD_LOCK_REASON },
46
42
  description:
47
43
  "Turns one month of a recurring schedule into a posted balanced entry between its debit and credit account, returning the existing booking instead when that period is already booked and not reversed; use it to move a forecast period into the actual books.",
48
44
  handler: async (event, ctx) => {
@@ -78,11 +74,7 @@ export function createConfirmSchedulePeriodHandler(
78
74
  // tx's `reference` names its id).
79
75
  // No unique index on (tenantId, reference): a Storno makes re-confirming the
80
76
  // same reference legitimate, so the check-then-write is serialized by a lock.
81
- await acquireNamespacedAdvisoryLock(
82
- ctx.db.unsafeRaw(),
83
- CONFIRM_PERIOD_LOCK_NAMESPACE,
84
- `${event.user.tenantId}:${reference}`,
85
- );
77
+ await ctx.db.advisoryXactLock(CONFIRM_PERIOD_LOCK_NAMESPACE, reference);
86
78
  const candidates = await ctx.db.selectMany(transactionTable, {
87
79
  tenantId: event.user.tenantId,
88
80
  reference,
@@ -1,9 +1,9 @@
1
1
  import type { AccessRule, WriteHandlerDef } from "@cosmicdrift/kumiko-framework/engine";
2
2
  import { NotFoundError, writeFailure } from "@cosmicdrift/kumiko-framework/errors";
3
3
  import { generateId } from "@cosmicdrift/kumiko-framework/utils";
4
- import { DEFAULT_LEDGER_ACCESS } from "../constants.ts";
5
4
  import { accountExecutor, transactionExecutor } from "../executor.ts";
6
5
  import { type CreateTransactionPayload, createTransactionPayloadSchema } from "../schemas.ts";
6
+ import { DEFAULT_LEDGER_ACCESS } from "../web/constants.ts";
7
7
 
8
8
  // create-transaction — books a balanced journal entry. The Σ=0 and ≥2-accounts
9
9
  // invariants are enforced by createTransactionPayloadSchema (command boundary).
@@ -1,6 +1,5 @@
1
1
  import type { AccessRule, QueryHandlerDef } from "@cosmicdrift/kumiko-framework/engine";
2
2
  import * as z from "zod";
3
- import { DEFAULT_LEDGER_ACCESS } from "../constants.ts";
4
3
  import { accountTable, transactionTable } from "../executor.ts";
5
4
  import {
6
5
  accountBalances,
@@ -11,6 +10,7 @@ import {
11
10
  toAccounts,
12
11
  toEntries,
13
12
  } from "../reports.ts";
13
+ import { DEFAULT_LEDGER_ACCESS } from "../web/constants.ts";
14
14
 
15
15
  // Reports take an optional reporting period. Balance-sheet is cumulative → pass
16
16
  // { to: asOf }; income-statement is a period → { from, to }.
@@ -6,11 +6,11 @@ import {
6
6
  writeFailure,
7
7
  } from "@cosmicdrift/kumiko-framework/errors";
8
8
  import { generateId } from "@cosmicdrift/kumiko-framework/utils";
9
- import { DEFAULT_LEDGER_ACCESS } from "../constants.ts";
10
9
  import { transactionExecutor, transactionTable } from "../executor.ts";
11
10
  import { normalizeLines } from "../reports.ts";
12
11
  import { type ReverseTransactionPayload, reverseTransactionPayloadSchema } from "../schemas.ts";
13
12
  import { readSubjectReference } from "../subject-reference.ts";
13
+ import { DEFAULT_LEDGER_ACCESS } from "../web/constants.ts";
14
14
 
15
15
  // reverse-transaction (Storno) — the ONLY correction path for a posted entry.
16
16
  // Books the mirror image (every amount negated) as a new posted entry that
@@ -1,16 +1,3 @@
1
- export {
2
- ACCOUNT_TYPES,
3
- type AccountType,
4
- DEFAULT_LEDGER_ACCESS,
5
- DEFAULT_LEDGER_ROLES,
6
- LEDGER_FEATURE_NAME,
7
- LedgerHandlers,
8
- LedgerQueries,
9
- SCHEDULE_INTERVALS,
10
- type ScheduleInterval,
11
- TRANSACTION_STATUS,
12
- type TransactionStatus,
13
- } from "./constants.ts";
14
1
  export { accountEntity, scheduleEntity, transactionEntity } from "./entity.ts";
15
2
  export {
16
3
  createLedgerFeature,
@@ -68,3 +55,16 @@ export {
68
55
  type ReverseTransactionPayload,
69
56
  reverseTransactionPayloadSchema,
70
57
  } from "./schemas.ts";
58
+ export {
59
+ ACCOUNT_TYPES,
60
+ type AccountType,
61
+ DEFAULT_LEDGER_ACCESS,
62
+ DEFAULT_LEDGER_ROLES,
63
+ LEDGER_FEATURE_NAME,
64
+ LedgerHandlers,
65
+ LedgerQueries,
66
+ SCHEDULE_INTERVALS,
67
+ type ScheduleInterval,
68
+ TRANSACTION_STATUS,
69
+ type TransactionStatus,
70
+ } from "./web/constants.ts";
@@ -13,8 +13,8 @@
13
13
  // pure — no DB, no Date API (windows/asOf come in as params) — so the no-date-api
14
14
  // guard stays green and the forecast is deterministic.
15
15
 
16
- import type { ScheduleInterval } from "./constants.ts";
17
16
  import type { Posting } from "./schemas.ts";
17
+ import type { ScheduleInterval } from "./web/constants.ts";
18
18
 
19
19
  export type ScheduleDef = {
20
20
  readonly startDate: string; // ISO; first period (day ignored for monthly)
@@ -1,6 +1,6 @@
1
1
  import { parseJsonSafe } from "@cosmicdrift/kumiko-framework/utils";
2
- import type { AccountType } from "./constants.ts";
3
2
  import type { Posting } from "./schemas.ts";
3
+ import type { AccountType } from "./web/constants.ts";
4
4
 
5
5
  // Pure report aggregation over posted journal entries. No DB, no IO — the query
6
6
  // handlers fetch accounts + transactions (selectMany) and feed them here, so the
@@ -1,5 +1,5 @@
1
1
  import * as z from "zod";
2
- import { ACCOUNT_TYPES, TRANSACTION_STATUS } from "./constants.ts";
2
+ import { ACCOUNT_TYPES, TRANSACTION_STATUS } from "./web/constants.ts";
3
3
 
4
4
  // A posting line. amount is integer minor units (cents), SIGNED: Soll/debit > 0,
5
5
  // Haben/credit < 0. Integer → the balance check is exact (=== 0), no float epsilon.
@@ -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,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
@@ -7,17 +6,6 @@
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
8
 
10
- export {
11
- ACCOUNT_TYPES,
12
- type AccountType,
13
- LEDGER_FEATURE_NAME,
14
- LedgerHandlers,
15
- LedgerQueries,
16
- SCHEDULE_INTERVALS,
17
- type ScheduleInterval,
18
- TRANSACTION_STATUS,
19
- type TransactionStatus,
20
- } from "../constants.ts";
21
9
  export {
22
10
  type LedgerTxRow,
23
11
  mergeScheduleActuals,
@@ -34,3 +22,14 @@ export {
34
22
  type Posting,
35
23
  postingSchema,
36
24
  } from "../schemas.ts";
25
+ export {
26
+ ACCOUNT_TYPES,
27
+ type AccountType,
28
+ LEDGER_FEATURE_NAME,
29
+ LedgerHandlers,
30
+ LedgerQueries,
31
+ SCHEDULE_INTERVALS,
32
+ type ScheduleInterval,
33
+ TRANSACTION_STATUS,
34
+ type TransactionStatus,
35
+ } from "./constants.ts";