@cosmicdrift/kumiko-bundled-features 0.369.0 → 0.371.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 (609) hide show
  1. package/dist/account-security/constants.d.ts +4 -0
  2. package/dist/account-security/constants.js +5 -0
  3. package/dist/account-security/feature.d.ts +14 -0
  4. package/dist/account-security/feature.js +62 -0
  5. package/dist/account-security/i18n.d.ts +6 -0
  6. package/dist/account-security/i18n.js +6 -0
  7. package/dist/account-security/index.d.ts +3 -0
  8. package/dist/account-security/index.js +3 -0
  9. package/dist/admin-shell/feature.d.ts +1 -1
  10. package/dist/admin-shell/index.d.ts +4 -4
  11. package/dist/admin-shell/overview-panels.d.ts +1 -1
  12. package/dist/admin-shell/web/index.d.ts +1 -1
  13. package/dist/agent-tools/agent-manifest.d.ts +1 -1
  14. package/dist/agent-tools/index.d.ts +8 -8
  15. package/dist/agent-tools/manifest-deny-qns.d.ts +1 -1
  16. package/dist/agent-tools/tool-catalog.d.ts +1 -1
  17. package/dist/agent-tools/tool-dispatch.d.ts +1 -1
  18. package/dist/audit/handlers/resolve-audit-tenant.d.ts +1 -1
  19. package/dist/audit/index.d.ts +3 -3
  20. package/dist/audit/web/index.d.ts +1 -1
  21. package/dist/auth-email-password/bootstrap.d.ts +1 -1
  22. package/dist/auth-email-password/feature.d.ts +7 -6
  23. package/dist/auth-email-password/feature.js +3 -1
  24. package/dist/auth-email-password/handlers/confirm-token-flow.d.ts +1 -1
  25. package/dist/auth-email-password/handlers/invite-accept-with-login.write.d.ts +1 -1
  26. package/dist/auth-email-password/handlers/invite-create.write.d.ts +2 -2
  27. package/dist/auth-email-password/handlers/invite-signup-complete.write.d.ts +1 -1
  28. package/dist/auth-email-password/handlers/login.write.d.ts +1 -1
  29. package/dist/auth-email-password/handlers/request-account-unlock.write.d.ts +1 -1
  30. package/dist/auth-email-password/handlers/request-email-verification.write.d.ts +1 -1
  31. package/dist/auth-email-password/handlers/request-password-reset.write.d.ts +1 -1
  32. package/dist/auth-email-password/handlers/signup-confirm.write.d.ts +1 -1
  33. package/dist/auth-email-password/handlers/signup-request.write.d.ts +1 -1
  34. package/dist/auth-email-password/handlers/switch-tenant-mfa-gate.write.d.ts +1 -1
  35. package/dist/auth-email-password/handlers/token-request-handler.d.ts +2 -2
  36. package/dist/auth-email-password/index.d.ts +13 -13
  37. package/dist/auth-email-password/lockout-store.d.ts +1 -1
  38. package/dist/auth-email-password/magic-link-mail.d.ts +1 -1
  39. package/dist/auth-email-password/seeding.d.ts +3 -3
  40. package/dist/auth-email-password/signed-token.d.ts +1 -1
  41. package/dist/auth-email-password/signup-token-store.d.ts +1 -1
  42. package/dist/auth-email-password/testing.d.ts +1 -1
  43. package/dist/auth-email-password/web/auth-gate.d.ts +1 -1
  44. package/dist/auth-email-password/web/client-plugin.d.ts +2 -2
  45. package/dist/auth-email-password/web/index.d.ts +42 -42
  46. package/dist/auth-email-password/web/session-bootstrap-error.d.ts +1 -1
  47. package/dist/auth-email-password/web/session.d.ts +1 -1
  48. package/dist/auth-email-password/web/signup-complete-screen.d.ts +1 -1
  49. package/dist/auth-foundation/feature.d.ts +2 -6
  50. package/dist/auth-foundation/feature.js +0 -2
  51. package/dist/auth-foundation/index.d.ts +3 -3
  52. package/dist/auth-foundation/index.js +1 -1
  53. package/dist/auth-foundation/resolve-anonymous-access.d.ts +2 -1
  54. package/dist/auth-foundation/resolve-anonymous-access.js +9 -1
  55. package/dist/auth-mfa/env.d.ts +13 -0
  56. package/dist/auth-mfa/env.js +24 -0
  57. package/dist/auth-mfa/errors.d.ts +1 -1
  58. package/dist/auth-mfa/feature-exports.d.ts +12 -0
  59. package/dist/auth-mfa/feature-exports.js +72 -0
  60. package/dist/auth-mfa/feature.d.ts +6 -12
  61. package/dist/auth-mfa/feature.js +53 -70
  62. package/dist/auth-mfa/handlers/reencrypt.job.d.ts +1 -1
  63. package/dist/auth-mfa/index.d.ts +12 -9
  64. package/dist/auth-mfa/index.js +4 -2
  65. package/dist/auth-mfa/mfa-challenge-token.d.ts +1 -1
  66. package/dist/auth-mfa/mfa-preauth-setup-token.d.ts +1 -1
  67. package/dist/auth-mfa/mfa-status-checker.d.ts +1 -1
  68. package/dist/auth-mfa/mfa-verify-attempts.d.ts +1 -1
  69. package/dist/auth-mfa/testing.d.ts +1 -1
  70. package/dist/auth-mfa/token-secrets.d.ts +7 -0
  71. package/dist/auth-mfa/token-secrets.js +13 -0
  72. package/dist/auth-mfa/verify-factor.d.ts +1 -1
  73. package/dist/auth-mfa/web/index.d.ts +15 -15
  74. package/dist/auth-mfa/web/mfa-client.d.ts +1 -1
  75. package/dist/auth-mfa-user-data/index.d.ts +0 -4
  76. package/dist/auth-mfa-user-data/index.js +0 -2
  77. package/dist/billing-foundation/checkout-core.d.ts +2 -2
  78. package/dist/billing-foundation/consumer-protection/confirmation-mail.d.ts +2 -2
  79. package/dist/billing-foundation/consumer-protection/consent-gate.d.ts +1 -1
  80. package/dist/billing-foundation/consumer-protection/consent-text.d.ts +2 -2
  81. package/dist/billing-foundation/consumer-protection/issue-confirmation.d.ts +1 -1
  82. package/dist/billing-foundation/consumer-protection/register-consent.d.ts +1 -1
  83. package/dist/billing-foundation/consumer-protection/register-termination.d.ts +1 -1
  84. package/dist/billing-foundation/consumer-protection/termination-mail.d.ts +3 -3
  85. package/dist/billing-foundation/consumer-protection/termination-notify.d.ts +5 -5
  86. package/dist/billing-foundation/consumer-protection/termination-pages.d.ts +2 -2
  87. package/dist/billing-foundation/consumer-protection/termination-record.d.ts +3 -3
  88. package/dist/billing-foundation/consumer-protection/termination-request.d.ts +2 -2
  89. package/dist/billing-foundation/consumer-protection/termination-texts.d.ts +2 -2
  90. package/dist/billing-foundation/feature.d.ts +1 -3
  91. package/dist/billing-foundation/feature.js +0 -2
  92. package/dist/billing-foundation/handlers/billing-plans.query.d.ts +1 -1
  93. package/dist/billing-foundation/handlers/create-checkout-session.write.d.ts +1 -1
  94. package/dist/billing-foundation/handlers/create-portal-session.write.d.ts +1 -1
  95. package/dist/billing-foundation/handlers/start-plan-checkout.write.d.ts +1 -1
  96. package/dist/billing-foundation/handlers/switch-plan.write.d.ts +1 -1
  97. package/dist/billing-foundation/index.d.ts +16 -16
  98. package/dist/billing-foundation/index.js +1 -1
  99. package/dist/billing-foundation/plan-catalog.d.ts +1 -1
  100. package/dist/billing-foundation/subscription-tier-sync.d.ts +24 -5
  101. package/dist/billing-foundation/subscription-tier-sync.js +48 -19
  102. package/dist/billing-foundation/types.d.ts +3 -3
  103. package/dist/billing-foundation/validate-options.d.ts +1 -1
  104. package/dist/billing-foundation/web/checkout-consent-dialog.d.ts +1 -1
  105. package/dist/billing-foundation/web/index.d.ts +6 -6
  106. package/dist/billing-foundation/webhook-handler.d.ts +2 -1
  107. package/dist/billing-foundation/webhook-handler.js +2 -2
  108. package/dist/cap-counter/calendar-cap-usage-reservation.d.ts +4 -4
  109. package/dist/cap-counter/cap-reservation.d.ts +1 -1
  110. package/dist/cap-counter/enforce-cap.d.ts +1 -1
  111. package/dist/cap-counter/feature.d.ts +0 -4
  112. package/dist/cap-counter/feature.js +0 -2
  113. package/dist/cap-counter/index.d.ts +13 -13
  114. package/dist/cap-counter/index.js +1 -1
  115. package/dist/cap-counter/value-cap-guard.d.ts +1 -1
  116. package/dist/cap-counter/with-cap-enforcement.d.ts +1 -1
  117. package/dist/cap-overview/feature.d.ts +1 -1
  118. package/dist/cap-overview/handlers/caps-usage.query.d.ts +1 -1
  119. package/dist/cap-overview/handlers/tenant-caps-list.query.d.ts +1 -1
  120. package/dist/cap-overview/index.d.ts +6 -6
  121. package/dist/cap-overview/screens.d.ts +1 -1
  122. package/dist/cap-overview/types.d.ts +1 -1
  123. package/dist/cap-overview/usage-math.d.ts +1 -1
  124. package/dist/cap-overview/web/cap-usage-bar.d.ts +1 -1
  125. package/dist/cap-overview/web/index.d.ts +4 -4
  126. package/dist/channel-discord/discord-channel.d.ts +1 -1
  127. package/dist/channel-discord/feature.d.ts +1 -1
  128. package/dist/channel-discord/index.d.ts +2 -2
  129. package/dist/channel-email/email-channel.d.ts +2 -2
  130. package/dist/channel-email/env.d.ts +14 -0
  131. package/dist/channel-email/env.js +27 -0
  132. package/dist/channel-email/feature.d.ts +14 -3
  133. package/dist/channel-email/feature.js +5 -1
  134. package/dist/channel-email/index.d.ts +6 -5
  135. package/dist/channel-email/index.js +1 -0
  136. package/dist/channel-email/pii-guard.d.ts +1 -1
  137. package/dist/channel-email/smtp-transport.d.ts +1 -1
  138. package/dist/channel-email/types.d.ts +1 -1
  139. package/dist/channel-in-app/in-app-channel.d.ts +1 -1
  140. package/dist/channel-in-app/index.d.ts +4 -4
  141. package/dist/channel-push/feature.d.ts +1 -1
  142. package/dist/channel-push/index.d.ts +3 -3
  143. package/dist/channel-push/push-channel.d.ts +2 -2
  144. package/dist/channel-slack/feature.d.ts +1 -1
  145. package/dist/channel-slack/index.d.ts +2 -2
  146. package/dist/channel-slack/slack-channel.d.ts +1 -1
  147. package/dist/channel-teams/feature.d.ts +1 -1
  148. package/dist/channel-teams/index.d.ts +2 -2
  149. package/dist/channel-teams/teams-channel.d.ts +1 -1
  150. package/dist/channel-telegram/feature.d.ts +1 -1
  151. package/dist/channel-telegram/index.d.ts +2 -2
  152. package/dist/channel-telegram/telegram-channel.d.ts +1 -1
  153. package/dist/compliance-profiles/feature.d.ts +1 -1
  154. package/dist/compliance-profiles/index.d.ts +3 -3
  155. package/dist/compliance-profiles/web/index.d.ts +2 -2
  156. package/dist/compliance-profiles-ops/index.d.ts +0 -8
  157. package/dist/compliance-profiles-ops/index.js +0 -2
  158. package/dist/config/feature.d.ts +1 -1
  159. package/dist/config/handlers/reencrypt.job.d.ts +1 -1
  160. package/dist/config/index.d.ts +8 -8
  161. package/dist/config/web/client-plugin.d.ts +1 -1
  162. package/dist/config/web/index.d.ts +2 -2
  163. package/dist/crypto-shredding/env/index.d.ts +21 -0
  164. package/dist/crypto-shredding/env/index.js +78 -0
  165. package/dist/crypto-shredding/feature.d.ts +17 -2
  166. package/dist/crypto-shredding/feature.js +5 -1
  167. package/dist/crypto-shredding/index.d.ts +4 -3
  168. package/dist/crypto-shredding/index.js +1 -0
  169. package/dist/custom-fields/feature.d.ts +0 -17
  170. package/dist/custom-fields/feature.js +0 -2
  171. package/dist/custom-fields/index.d.ts +10 -10
  172. package/dist/custom-fields/index.js +1 -1
  173. package/dist/custom-fields/lib/define-or-resurrect.d.ts +2 -2
  174. package/dist/custom-fields/lib/field-access.d.ts +1 -1
  175. package/dist/custom-fields/lib/field-definition-row.d.ts +1 -1
  176. package/dist/custom-fields/lib/quota.d.ts +1 -1
  177. package/dist/custom-fields/web/index.d.ts +3 -3
  178. package/dist/data-retention/_internal/parse-override.d.ts +1 -1
  179. package/dist/data-retention/feature.d.ts +7 -7
  180. package/dist/data-retention/handlers/policy-for.query.d.ts +1 -1
  181. package/dist/data-retention/index.d.ts +3 -3
  182. package/dist/data-retention/resolve-for-tenant.d.ts +2 -2
  183. package/dist/data-retention/resolve-tenant-preset.d.ts +1 -1
  184. package/dist/data-retention/resolver.d.ts +1 -1
  185. package/dist/data-retention/run-retention-cleanup.d.ts +2 -2
  186. package/dist/delivery/attachment-ref.d.ts +1 -1
  187. package/dist/delivery/attempt-log.d.ts +1 -1
  188. package/dist/delivery/channel-context.d.ts +2 -2
  189. package/dist/delivery/chat-webhook-channel.d.ts +2 -2
  190. package/dist/delivery/constants.d.ts +1 -1
  191. package/dist/delivery/delivery-service.d.ts +2 -2
  192. package/dist/delivery/feature.js +2 -0
  193. package/dist/delivery/handlers/log.query.d.ts +1 -1
  194. package/dist/delivery/handlers/unsubscribe-page-chrome.query.d.ts +5 -0
  195. package/dist/delivery/handlers/unsubscribe-page-chrome.query.js +44 -0
  196. package/dist/delivery/index.d.ts +20 -20
  197. package/dist/delivery/notify-factory.d.ts +1 -1
  198. package/dist/delivery/public-names.d.ts +1 -0
  199. package/dist/delivery/public-names.js +1 -0
  200. package/dist/delivery/testing.d.ts +3 -3
  201. package/dist/delivery/types.d.ts +3 -3
  202. package/dist/delivery/unsubscribe-link.d.ts +1 -1
  203. package/dist/delivery/unsubscribe-page-strings.d.ts +4 -0
  204. package/dist/delivery/unsubscribe-page-strings.js +4 -0
  205. package/dist/delivery/unsubscribe-page.d.ts +27 -0
  206. package/dist/delivery/unsubscribe-page.js +192 -0
  207. package/dist/delivery/unsubscribe.d.ts +11 -3
  208. package/dist/delivery/unsubscribe.js +146 -64
  209. package/dist/delivery/web/index.d.ts +2 -2
  210. package/dist/derivatives-sharp/feature.d.ts +0 -4
  211. package/dist/derivatives-sharp/feature.js +0 -2
  212. package/dist/derivatives-sharp/index.d.ts +2 -2
  213. package/dist/derivatives-sharp/index.js +1 -1
  214. package/dist/document-ingest-foundation/feature.d.ts +0 -7
  215. package/dist/document-ingest-foundation/feature.js +0 -2
  216. package/dist/document-ingest-foundation/index.d.ts +7 -7
  217. package/dist/document-ingest-foundation/index.js +1 -1
  218. package/dist/document-ingest-foundation/pages.d.ts +1 -1
  219. package/dist/document-ingest-foundation/providers.d.ts +1 -1
  220. package/dist/document-ingest-foundation/write-document-extract.d.ts +1 -1
  221. package/dist/feature-toggles/compose-tier-resolver.d.ts +1 -1
  222. package/dist/feature-toggles/feature.d.ts +5 -5
  223. package/dist/feature-toggles/handlers/set.write.d.ts +1 -1
  224. package/dist/feature-toggles/index.d.ts +3 -3
  225. package/dist/feature-toggles/toggle-sync-signal.d.ts +1 -1
  226. package/dist/feature-toggles/web/index.d.ts +1 -1
  227. package/dist/file-derivatives/feature.d.ts +0 -2
  228. package/dist/file-derivatives/feature.js +0 -2
  229. package/dist/file-derivatives/index.d.ts +4 -4
  230. package/dist/file-derivatives/index.js +1 -1
  231. package/dist/file-foundation/feature.d.ts +0 -6
  232. package/dist/file-foundation/feature.js +0 -2
  233. package/dist/file-foundation/index.d.ts +2 -2
  234. package/dist/file-foundation/index.js +1 -1
  235. package/dist/file-provider-inmemory/feature.d.ts +0 -4
  236. package/dist/file-provider-inmemory/feature.js +0 -2
  237. package/dist/file-provider-inmemory/index.d.ts +1 -1
  238. package/dist/file-provider-inmemory/index.js +1 -1
  239. package/dist/file-provider-s3/env-feature.d.ts +12 -2
  240. package/dist/file-provider-s3/env-feature.js +9 -6
  241. package/dist/file-provider-s3/env-schema.d.ts +38 -0
  242. package/dist/file-provider-s3/env-schema.js +54 -0
  243. package/dist/file-provider-s3/feature.d.ts +1 -14
  244. package/dist/file-provider-s3/feature.js +0 -2
  245. package/dist/file-provider-s3/index.d.ts +2 -1
  246. package/dist/file-provider-s3/index.js +2 -1
  247. package/dist/file-provider-s3/lib/env-helper.d.ts +1 -1
  248. package/dist/file-provider-s3/lib/index.d.ts +3 -3
  249. package/dist/files/index.d.ts +1 -1
  250. package/dist/files-tenant-data/index.d.ts +2 -2
  251. package/dist/folders/feature.d.ts +0 -4
  252. package/dist/folders/feature.js +0 -2
  253. package/dist/folders/index.d.ts +7 -7
  254. package/dist/folders/index.js +1 -1
  255. package/dist/folders/web/folder-manager.d.ts +1 -1
  256. package/dist/folders/web/index.d.ts +5 -5
  257. package/dist/folders-user-data/index.d.ts +0 -4
  258. package/dist/folders-user-data/index.js +0 -2
  259. package/dist/form-draft/db/queries/cleanup.d.ts +1 -1
  260. package/dist/form-draft/feature.d.ts +0 -4
  261. package/dist/form-draft/feature.js +0 -2
  262. package/dist/form-draft/handlers/cleanup.job.d.ts +1 -1
  263. package/dist/form-draft/handlers/get.query.d.ts +1 -1
  264. package/dist/form-draft/index.d.ts +10 -10
  265. package/dist/form-draft/index.js +1 -1
  266. package/dist/form-draft/lookup.d.ts +1 -1
  267. package/dist/form-draft/release-file-refs.d.ts +1 -1
  268. package/dist/form-draft-user-data/index.d.ts +0 -4
  269. package/dist/form-draft-user-data/index.js +0 -2
  270. package/dist/foundation-shared/build-info-env.d.ts +7 -0
  271. package/dist/foundation-shared/build-info-env.js +15 -0
  272. package/dist/foundation-shared/demo-admin-env.d.ts +12 -0
  273. package/dist/foundation-shared/demo-admin-env.js +21 -0
  274. package/dist/foundation-shared/index.d.ts +5 -3
  275. package/dist/foundation-shared/index.js +2 -0
  276. package/dist/host-routing/constants.d.ts +8 -0
  277. package/dist/host-routing/constants.js +19 -0
  278. package/dist/host-routing/dispatch.d.ts +24 -0
  279. package/dist/host-routing/dispatch.js +102 -0
  280. package/dist/host-routing/feature.d.ts +3 -0
  281. package/dist/host-routing/feature.js +102 -0
  282. package/dist/host-routing/host.d.ts +14 -0
  283. package/dist/host-routing/host.js +37 -0
  284. package/dist/host-routing/index.d.ts +5 -0
  285. package/dist/host-routing/index.js +4 -0
  286. package/dist/host-routing/options.d.ts +27 -0
  287. package/dist/host-routing/options.js +1 -0
  288. package/dist/host-routing/validate-options.d.ts +2 -0
  289. package/dist/host-routing/validate-options.js +29 -0
  290. package/dist/inbound-mail-foundation/connect-routes.d.ts +2 -2
  291. package/dist/inbound-mail-foundation/feature.d.ts +0 -4
  292. package/dist/inbound-mail-foundation/feature.js +0 -2
  293. package/dist/inbound-mail-foundation/handlers/account-state.d.ts +1 -1
  294. package/dist/inbound-mail-foundation/index.d.ts +12 -12
  295. package/dist/inbound-mail-foundation/index.js +1 -1
  296. package/dist/inbound-mail-foundation/oauth-access-token.d.ts +1 -1
  297. package/dist/inbound-mail-foundation/provider-factory.d.ts +1 -1
  298. package/dist/inbound-mail-foundation/types.d.ts +1 -1
  299. package/dist/inbound-mail-foundation/watch-supervisor.d.ts +2 -2
  300. package/dist/inbound-provider-imap/feature.d.ts +1 -5
  301. package/dist/inbound-provider-imap/feature.js +0 -2
  302. package/dist/inbound-provider-imap/imap-client.d.ts +1 -1
  303. package/dist/inbound-provider-imap/index.d.ts +3 -3
  304. package/dist/inbound-provider-imap/index.js +1 -1
  305. package/dist/inbound-provider-inmemory/feature.d.ts +0 -4
  306. package/dist/inbound-provider-inmemory/feature.js +0 -2
  307. package/dist/inbound-provider-inmemory/index.d.ts +1 -1
  308. package/dist/inbound-provider-inmemory/index.js +1 -1
  309. package/dist/jobs/handlers/tenant-runs.query.d.ts +1 -1
  310. package/dist/jobs/index.d.ts +9 -9
  311. package/dist/jobs/web/index.d.ts +1 -1
  312. package/dist/ledger/feature.d.ts +0 -4
  313. package/dist/ledger/feature.js +0 -2
  314. package/dist/ledger/index.d.ts +10 -10
  315. package/dist/ledger/index.js +1 -1
  316. package/dist/ledger/recurring.d.ts +2 -2
  317. package/dist/ledger/reports.d.ts +2 -2
  318. package/dist/ledger/web/index.d.ts +3 -3
  319. package/dist/legal-pages/constants.d.ts +12 -0
  320. package/dist/legal-pages/constants.js +16 -0
  321. package/dist/legal-pages/feature.d.ts +6 -3
  322. package/dist/legal-pages/feature.js +5 -2
  323. package/dist/legal-pages/index.d.ts +5 -3
  324. package/dist/legal-pages/index.js +3 -1
  325. package/dist/legal-pages/layout.d.ts +10 -0
  326. package/dist/legal-pages/layout.js +32 -0
  327. package/dist/legal-pages/lib/boot-check.d.ts +1 -1
  328. package/dist/legal-pages/lib/validate-routes.d.ts +1 -1
  329. package/dist/legal-pages/markdown.d.ts +2 -2
  330. package/dist/legal-pages/seed.d.ts +12 -0
  331. package/dist/legal-pages/seed.js +38 -0
  332. package/dist/legal-pages/web/index.d.ts +1 -1
  333. package/dist/mail-foundation/feature.d.ts +0 -7
  334. package/dist/mail-foundation/feature.js +0 -2
  335. package/dist/mail-foundation/index.d.ts +1 -1
  336. package/dist/mail-foundation/index.js +1 -1
  337. package/dist/mail-transport-inmemory/feature.d.ts +0 -4
  338. package/dist/mail-transport-inmemory/feature.js +0 -2
  339. package/dist/mail-transport-inmemory/index.d.ts +1 -1
  340. package/dist/mail-transport-inmemory/index.js +1 -1
  341. package/dist/mail-transport-smtp/feature.d.ts +0 -16
  342. package/dist/mail-transport-smtp/feature.js +0 -2
  343. package/dist/mail-transport-smtp/index.d.ts +1 -1
  344. package/dist/mail-transport-smtp/index.js +1 -1
  345. package/dist/managed-pages/branding.d.ts +1 -1
  346. package/dist/managed-pages/feature.d.ts +1 -1
  347. package/dist/managed-pages/handlers/branding.query.d.ts +1 -1
  348. package/dist/managed-pages/index.d.ts +5 -5
  349. package/dist/managed-pages/web/index.d.ts +2 -2
  350. package/dist/metrics/compute.d.ts +2 -2
  351. package/dist/metrics/default-metrics.d.ts +9 -9
  352. package/dist/metrics/feature.d.ts +1 -1
  353. package/dist/metrics/filters.d.ts +1 -1
  354. package/dist/metrics/index.d.ts +5 -5
  355. package/dist/metrics/types.d.ts +1 -1
  356. package/dist/metrics/validate.d.ts +1 -1
  357. package/dist/metrics/window.d.ts +2 -2
  358. package/dist/notes-history/feature.d.ts +0 -4
  359. package/dist/notes-history/feature.js +0 -2
  360. package/dist/notes-history/handlers/add-note.write.d.ts +1 -1
  361. package/dist/notes-history/index.d.ts +6 -6
  362. package/dist/notes-history/index.js +1 -1
  363. package/dist/notes-history/web/index.d.ts +3 -3
  364. package/dist/notes-history-user-data/index.d.ts +1 -5
  365. package/dist/notes-history-user-data/index.js +0 -2
  366. package/dist/page-render/index.d.ts +7 -7
  367. package/dist/page-render/layout.d.ts +1 -1
  368. package/dist/page-render/web.d.ts +5 -5
  369. package/dist/personal-access-tokens/feature.d.ts +3 -3
  370. package/dist/personal-access-tokens/handlers/available-scopes.query.d.ts +1 -1
  371. package/dist/personal-access-tokens/i18n.d.ts +1 -1
  372. package/dist/personal-access-tokens/index.d.ts +13 -13
  373. package/dist/personal-access-tokens/resolver.d.ts +1 -1
  374. package/dist/personal-access-tokens/screens.d.ts +1 -1
  375. package/dist/presets/dsgvo-self-service.d.ts +3 -1
  376. package/dist/presets/dsgvo-self-service.js +2 -0
  377. package/dist/presets/index.d.ts +2 -2
  378. package/dist/presets/security-baseline.d.ts +2 -0
  379. package/dist/presets/security-baseline.js +2 -0
  380. package/dist/rate-limiting/index.d.ts +2 -2
  381. package/dist/readiness/feature.d.ts +0 -8
  382. package/dist/readiness/feature.js +0 -2
  383. package/dist/readiness/index.d.ts +3 -3
  384. package/dist/readiness/index.js +1 -1
  385. package/dist/renderer-foundation/api.d.ts +2 -2
  386. package/dist/renderer-foundation/constants.d.ts +2 -2
  387. package/dist/renderer-foundation/feature.d.ts +1 -1
  388. package/dist/renderer-foundation/index.d.ts +5 -5
  389. package/dist/renderer-foundation/types.d.ts +24 -2
  390. package/dist/renderer-pdf/feature.d.ts +1 -1
  391. package/dist/renderer-pdf/index.d.ts +2 -2
  392. package/dist/renderer-pdf/render-table-pdf.d.ts +1 -1
  393. package/dist/secrets/constants.d.ts +7 -0
  394. package/dist/secrets/constants.js +7 -0
  395. package/dist/secrets/db/queries/read.d.ts +1 -1
  396. package/dist/secrets/feature.d.ts +4 -3
  397. package/dist/secrets/feature.js +4 -2
  398. package/dist/secrets/handlers/delete.write.js +2 -2
  399. package/dist/secrets/handlers/rotate.job.d.ts +1 -1
  400. package/dist/secrets/handlers/set.write.js +2 -2
  401. package/dist/secrets/index.d.ts +7 -7
  402. package/dist/secrets/index.js +1 -1
  403. package/dist/secrets/secrets-context.d.ts +1 -1
  404. package/dist/seo/feature.d.ts +3 -3
  405. package/dist/seo/index.d.ts +6 -6
  406. package/dist/sessions/feature.d.ts +1 -1
  407. package/dist/sessions/index.d.ts +8 -8
  408. package/dist/sessions/session-callbacks.d.ts +1 -1
  409. package/dist/sessions/testing.d.ts +1 -1
  410. package/dist/shared/index.d.ts +31 -31
  411. package/dist/step-dispatcher/dispatch-payload.d.ts +2 -2
  412. package/dist/step-dispatcher/index.d.ts +3 -3
  413. package/dist/subscription-mollie/feature.d.ts +2 -2
  414. package/dist/subscription-mollie/index.d.ts +3 -3
  415. package/dist/subscription-mollie/verify-webhook.d.ts +1 -1
  416. package/dist/subscription-stripe/feature.d.ts +17 -1
  417. package/dist/subscription-stripe/feature.js +19 -1
  418. package/dist/subscription-stripe/index.d.ts +2 -2
  419. package/dist/subscription-stripe/index.js +1 -1
  420. package/dist/subscription-stripe/plugin-methods.d.ts +1 -1
  421. package/dist/subscription-stripe/verify-webhook.d.ts +1 -1
  422. package/dist/tags/feature.d.ts +0 -4
  423. package/dist/tags/feature.js +0 -2
  424. package/dist/tags/handlers/assign-tag.write.d.ts +1 -1
  425. package/dist/tags/handlers/remove-tag.write.d.ts +1 -1
  426. package/dist/tags/index.d.ts +11 -11
  427. package/dist/tags/index.js +1 -1
  428. package/dist/tags/web/index.d.ts +9 -9
  429. package/dist/template-resolver/api.d.ts +4 -4
  430. package/dist/template-resolver/constants.d.ts +1 -1
  431. package/dist/template-resolver/document-sanitizer.d.ts +1 -1
  432. package/dist/template-resolver/handlers/bundle-import.d.ts +3 -3
  433. package/dist/template-resolver/handlers/collection-shared.d.ts +2 -2
  434. package/dist/template-resolver/handlers/copy-locale.write.d.ts +1 -1
  435. package/dist/template-resolver/handlers/diff-to-system.query.d.ts +1 -1
  436. package/dist/template-resolver/handlers/find-by-id.query.d.ts +1 -1
  437. package/dist/template-resolver/handlers/import-bundle-system.write.d.ts +1 -1
  438. package/dist/template-resolver/handlers/import-bundle.write.d.ts +1 -1
  439. package/dist/template-resolver/handlers/layout-source.query.d.ts +3 -3
  440. package/dist/template-resolver/handlers/override-diff.d.ts +2 -2
  441. package/dist/template-resolver/handlers/overview.query.d.ts +3 -3
  442. package/dist/template-resolver/handlers/preview.query.d.ts +1 -1
  443. package/dist/template-resolver/handlers/resource-link-pdf.write.d.ts +1 -1
  444. package/dist/template-resolver/handlers/resource-upload.write.d.ts +1 -1
  445. package/dist/template-resolver/handlers/send-test.write.d.ts +1 -1
  446. package/dist/template-resolver/handlers/shared.d.ts +1 -1
  447. package/dist/template-resolver/handlers/template-gates.d.ts +4 -4
  448. package/dist/template-resolver/handlers/template-write.d.ts +4 -4
  449. package/dist/template-resolver/handlers/tenant-overrides.query.d.ts +1 -1
  450. package/dist/template-resolver/handlers/toggle-status.write.d.ts +1 -1
  451. package/dist/template-resolver/handlers/upsert-system.write.d.ts +1 -1
  452. package/dist/template-resolver/handlers/upsert-tenant.write.d.ts +1 -1
  453. package/dist/template-resolver/handlers/usage.query.d.ts +1 -1
  454. package/dist/template-resolver/handlers/validate.query.d.ts +3 -3
  455. package/dist/template-resolver/index.d.ts +25 -25
  456. package/dist/template-resolver/layout-appearance.d.ts +1 -1
  457. package/dist/template-resolver/layout-regions.d.ts +2 -2
  458. package/dist/template-resolver/linked-resources.d.ts +1 -1
  459. package/dist/template-resolver/preview-display-html.d.ts +1 -1
  460. package/dist/template-resolver/resource-image.d.ts +1 -1
  461. package/dist/template-resolver/seeding.d.ts +2 -2
  462. package/dist/template-resolver/store-template-resource.d.ts +1 -1
  463. package/dist/template-resolver/template-draft.d.ts +2 -2
  464. package/dist/template-resolver/template-meta.d.ts +2 -2
  465. package/dist/template-resolver/template-preview.d.ts +7 -6
  466. package/dist/template-resolver/template-preview.js +19 -12
  467. package/dist/template-resolver/template-resources.d.ts +1 -1
  468. package/dist/template-resolver/template-usage.d.ts +3 -1
  469. package/dist/template-resolver/template-usage.js +1 -0
  470. package/dist/template-resolver/template-validation.d.ts +1 -1
  471. package/dist/template-resolver/testing.d.ts +1 -1
  472. package/dist/template-resolver/user-content-table.d.ts +1 -1
  473. package/dist/template-resolver/web/document-editor-extensions.d.ts +1 -1
  474. package/dist/template-resolver/web/document-editor-extensions.js +6 -2
  475. package/dist/template-resolver/web/document-editor.d.ts +1 -1
  476. package/dist/template-resolver/web/document-tiptap-editor.d.ts +1 -1
  477. package/dist/template-resolver/web/document-tiptap-editor.js +13 -10
  478. package/dist/template-resolver/web/editor-handle.d.ts +1 -1
  479. package/dist/template-resolver/web/index.d.ts +7 -7
  480. package/dist/template-resolver/web/placeholder-line-editor-lazy.d.ts +2 -2
  481. package/dist/template-resolver/web/placeholder-line-editor.d.ts +1 -1
  482. package/dist/template-resolver-user-data/index.d.ts +0 -4
  483. package/dist/template-resolver-user-data/index.js +0 -2
  484. package/dist/tenant/feature.d.ts +1 -1
  485. package/dist/tenant/index.d.ts +10 -10
  486. package/dist/tenant/is-tenant-serving-public-content.d.ts +1 -1
  487. package/dist/tenant/testing.d.ts +1 -1
  488. package/dist/tenant/web/index.d.ts +3 -3
  489. package/dist/tenant-handover/feature.d.ts +1 -1
  490. package/dist/tenant-handover/index.d.ts +3 -3
  491. package/dist/tenant-handover/signup-handover-provider.d.ts +1 -1
  492. package/dist/tenant-lifecycle/feature.d.ts +2 -2
  493. package/dist/tenant-lifecycle/index.d.ts +3 -3
  494. package/dist/tenant-lifecycle/run-tenant-destroy.d.ts +1 -1
  495. package/dist/tenant-lifecycle/stages.d.ts +1 -1
  496. package/dist/tenant-lifecycle/testing.d.ts +1 -1
  497. package/dist/tenant-settings/feature.d.ts +1 -3
  498. package/dist/tenant-settings/feature.js +0 -2
  499. package/dist/tenant-settings/index.d.ts +4 -4
  500. package/dist/tenant-settings/index.js +1 -1
  501. package/dist/tier-engine/entity.d.ts +1 -1
  502. package/dist/tier-engine/feature.d.ts +2 -4
  503. package/dist/tier-engine/feature.js +0 -2
  504. package/dist/tier-engine/handlers/get-tenant-tier.query.d.ts +1 -1
  505. package/dist/tier-engine/i18n.d.ts +0 -2
  506. package/dist/tier-engine/i18n.js +4 -4
  507. package/dist/tier-engine/index.d.ts +8 -8
  508. package/dist/tier-engine/index.js +1 -1
  509. package/dist/tier-engine/tier-option-gate.d.ts +1 -1
  510. package/dist/tier-engine/tier-resolver.d.ts +1 -1
  511. package/dist/tier-engine/web/client-plugin.js +3 -2
  512. package/dist/tier-engine/web/index.d.ts +1 -1
  513. package/dist/user/index.d.ts +8 -8
  514. package/dist/user/invited-global-roles.d.ts +1 -1
  515. package/dist/user/principal-status.d.ts +1 -1
  516. package/dist/user/seeding.d.ts +1 -1
  517. package/dist/user/testing.d.ts +1 -1
  518. package/dist/user-data-rights/deletion-token.d.ts +1 -1
  519. package/dist/user-data-rights/feature.d.ts +5 -5
  520. package/dist/user-data-rights/handlers/request-deletion.write.d.ts +1 -1
  521. package/dist/user-data-rights/handlers/run-forget-cleanup.write.d.ts +3 -3
  522. package/dist/user-data-rights/index.d.ts +13 -13
  523. package/dist/user-data-rights/lib/default-mailers.d.ts +4 -4
  524. package/dist/user-data-rights/web/client-plugin.d.ts +1 -1
  525. package/dist/user-data-rights/web/index.d.ts +8 -8
  526. package/dist/user-data-rights-defaults/index.d.ts +11 -11
  527. package/dist/user-profile/index.d.ts +2 -2
  528. package/dist/user-profile/web/index.d.ts +2 -2
  529. package/dist/waitlist/constants.d.ts +9 -0
  530. package/dist/waitlist/constants.js +11 -0
  531. package/dist/waitlist/entity.d.ts +38 -6
  532. package/dist/waitlist/entity.js +4 -2
  533. package/dist/waitlist/entries-admin.d.ts +4 -0
  534. package/dist/waitlist/entries-admin.js +42 -0
  535. package/dist/waitlist/feature.d.ts +1 -1
  536. package/dist/waitlist/feature.js +16 -1
  537. package/dist/waitlist/handlers/export-purge.write.d.ts +12 -0
  538. package/dist/waitlist/handlers/export-purge.write.js +61 -0
  539. package/dist/waitlist/handlers/invite.write.d.ts +1 -1
  540. package/dist/waitlist/handlers/submit.write.d.ts +1 -1
  541. package/dist/waitlist/i18n.js +4 -0
  542. package/dist/waitlist/import.d.ts +24 -0
  543. package/dist/waitlist/import.js +51 -0
  544. package/dist/waitlist/index.d.ts +7 -5
  545. package/dist/waitlist/index.js +2 -0
  546. package/dist/waitlist/legacy-migrate.d.ts +27 -0
  547. package/dist/waitlist/legacy-migrate.js +173 -0
  548. package/dist/waitlist/lib.d.ts +2 -2
  549. package/dist/waitlist/link-on-signup.d.ts +3 -0
  550. package/dist/waitlist/link-on-signup.js +83 -0
  551. package/dist/waitlist/options.d.ts +11 -3
  552. package/dist/waitlist/payloads.d.ts +3 -0
  553. package/dist/waitlist/payloads.js +1 -0
  554. package/dist/workflow-runner/feature.d.ts +0 -4
  555. package/dist/workflow-runner/feature.js +0 -2
  556. package/dist/workflow-runner/index.d.ts +4 -4
  557. package/dist/workflow-runner/index.js +1 -1
  558. package/package.json +43 -27
  559. package/src/account-security/changes.json +8 -0
  560. package/src/auth-email-password/changes.json +6 -0
  561. package/src/auth-foundation/changes.json +14 -0
  562. package/src/auth-mfa/changes.json +6 -0
  563. package/src/auth-mfa-user-data/changes.json +10 -1
  564. package/src/billing-foundation/changes.json +14 -0
  565. package/src/cap-counter/changes.json +8 -0
  566. package/src/channel-email/changes.json +6 -0
  567. package/src/compliance-profiles-ops/changes.json +10 -0
  568. package/src/crypto-shredding/changes.json +6 -0
  569. package/src/custom-fields/changes.json +8 -0
  570. package/src/delivery/changes.json +13 -0
  571. package/src/derivatives-sharp/changes.json +8 -0
  572. package/src/document-ingest-foundation/changes.json +8 -0
  573. package/src/file-derivatives/changes.json +8 -0
  574. package/src/file-foundation/changes.json +8 -0
  575. package/src/file-provider-inmemory/changes.json +10 -1
  576. package/src/file-provider-s3/changes.json +28 -0
  577. package/src/folders/changes.json +8 -0
  578. package/src/folders-user-data/changes.json +10 -1
  579. package/src/form-draft/changes.json +8 -0
  580. package/src/form-draft-user-data/changes.json +10 -1
  581. package/src/foundation-shared/changes.json +8 -1
  582. package/src/host-routing/changes.json +8 -0
  583. package/src/inbound-mail-foundation/changes.json +8 -0
  584. package/src/inbound-provider-imap/changes.json +8 -0
  585. package/src/inbound-provider-inmemory/changes.json +10 -1
  586. package/src/ledger/changes.json +8 -0
  587. package/src/legal-pages/changes.json +6 -0
  588. package/src/mail-foundation/changes.json +10 -1
  589. package/src/mail-transport-inmemory/changes.json +10 -1
  590. package/src/mail-transport-smtp/changes.json +8 -0
  591. package/src/notes-history/changes.json +8 -0
  592. package/src/notes-history-user-data/changes.json +8 -0
  593. package/src/presets/changes.json +6 -0
  594. package/src/readiness/changes.json +10 -1
  595. package/src/secrets/changes.json +12 -0
  596. package/src/subscription-stripe/changes.json +6 -0
  597. package/src/tags/changes.json +8 -0
  598. package/src/template-resolver/changes.json +6 -0
  599. package/src/template-resolver-user-data/changes.json +10 -0
  600. package/src/tenant-settings/changes.json +10 -1
  601. package/src/tier-engine/changes.json +8 -0
  602. package/src/waitlist/changes.json +7 -0
  603. package/src/workflow-runner/changes.json +8 -0
  604. package/dist/file-provider-s3-env/index.d.ts +0 -8
  605. package/dist/file-provider-s3-env/index.js +0 -7
  606. package/dist/files-provider-s3/index.d.ts +0 -5
  607. package/dist/files-provider-s3/index.js +0 -5
  608. package/src/file-provider-s3-env/changes.json +0 -1
  609. package/src/files-provider-s3/changes.json +0 -1
@@ -39,8 +39,4 @@ export type NotesHistoryFeatureOptions = {
39
39
  readonly parents?: readonly string[];
40
40
  };
41
41
  export declare function createNotesHistoryFeature(opts?: NotesHistoryFeatureOptions): typeof defaultNotesHistoryFeature;
42
- /** @deprecated Use createNotesHistoryFeature(). Run `bun kumiko-upgrade --apply`. Removed in the first release after 2026-10-29. */
43
- export declare const notesHistoryFeature: import("@cosmicdrift/kumiko-types/feature").FeatureDefinition & {
44
- readonly exports: void;
45
- };
46
42
  export {};
@@ -69,5 +69,3 @@ export function createNotesHistoryFeature(opts = {}) {
69
69
  }
70
70
  return defineFeature(NOTES_HISTORY_FEATURE_NAME, (r) => registerNotesHistory(r, resolveAccess(opts), opts.ownership, opts.parents));
71
71
  }
72
- /** @deprecated Use createNotesHistoryFeature(). Run `bun kumiko-upgrade --apply`. Removed in the first release after 2026-10-29. */
73
- export const notesHistoryFeature = createNotesHistoryFeature();
@@ -1,4 +1,4 @@
1
1
  import type { AccessRule, WriteHandlerDef } from "@cosmicdrift/kumiko-framework/engine";
2
- import { noteEntryExecutor } from "../executor.js";
2
+ import { noteEntryExecutor } from "../executor.ts";
3
3
  export declare function createAddNoteHandler(access?: AccessRule, entryExecutor?: typeof noteEntryExecutor): WriteHandlerDef;
4
4
  export declare const addNoteHandler: WriteHandlerDef;
@@ -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
- export { noteEntryEntity, noteMentionEntity } from "./entity.js";
3
- export { noteEntryExecutor, noteEntryTable, noteMentionExecutor, noteMentionTable, } from "./executor.js";
4
- export { createNotesHistoryFeature, type NotesHistoryFeatureOptions, notesHistoryFeature, } from "./feature.js";
5
- export { addNoteHandler, createAddNoteHandler, } from "./handlers/add-note.write.js";
6
- export { type AddNotePayload, addNotePayloadSchema } from "./schemas.js";
1
+ export { DEFAULT_NOTES_HISTORY_ACCESS, DEFAULT_NOTES_HISTORY_ROLES, NOTES_HISTORY_FEATURE_NAME, NOTES_SECTION_EXTENSION_NAME, NotesHistoryHandlers, NotesHistoryQueries, } from "./constants.ts";
2
+ export { noteEntryEntity, noteMentionEntity } from "./entity.ts";
3
+ export { noteEntryExecutor, noteEntryTable, noteMentionExecutor, noteMentionTable, } from "./executor.ts";
4
+ export { createNotesHistoryFeature, type NotesHistoryFeatureOptions, } from "./feature.ts";
5
+ export { addNoteHandler, createAddNoteHandler, } from "./handlers/add-note.write.ts";
6
+ export { type AddNotePayload, addNotePayloadSchema } from "./schemas.ts";
@@ -1,6 +1,6 @@
1
1
  export { DEFAULT_NOTES_HISTORY_ACCESS, DEFAULT_NOTES_HISTORY_ROLES, NOTES_HISTORY_FEATURE_NAME, NOTES_SECTION_EXTENSION_NAME, NotesHistoryHandlers, NotesHistoryQueries, } from "./constants.js";
2
2
  export { noteEntryEntity, noteMentionEntity } from "./entity.js";
3
3
  export { noteEntryExecutor, noteEntryTable, noteMentionExecutor, noteMentionTable, } from "./executor.js";
4
- export { createNotesHistoryFeature, notesHistoryFeature, } from "./feature.js";
4
+ export { createNotesHistoryFeature, } from "./feature.js";
5
5
  export { addNoteHandler, createAddNoteHandler, } from "./handlers/add-note.write.js";
6
6
  export { addNotePayloadSchema } from "./schemas.js";
@@ -1,3 +1,3 @@
1
- export { NOTES_SECTION_EXTENSION_NAME, NotesHistoryHandlers, NotesHistoryQueries, } from "../constants.js";
2
- export { notesHistoryClient } from "./client-plugin.js";
3
- export { NotesSection } from "./notes-section.js";
1
+ export { NOTES_SECTION_EXTENSION_NAME, NotesHistoryHandlers, NotesHistoryQueries, } from "../constants.ts";
2
+ export { notesHistoryClient } from "./client-plugin.tsx";
3
+ export { NotesSection } from "./notes-section.tsx";
@@ -1,8 +1,4 @@
1
- export { eraseNoteBodiesReachingSubject } from "./hooks.js";
1
+ export { eraseNoteBodiesReachingSubject } from "./hooks.ts";
2
2
  export declare function createNotesHistoryUserDataFeature(): import("@cosmicdrift/kumiko-types/feature").FeatureDefinition & {
3
3
  readonly exports: void;
4
4
  };
5
- /** @deprecated Use createNotesHistoryUserDataFeature(). Run `bun kumiko-upgrade --apply`. Removed in the first release after 2026-10-29. */
6
- export declare const notesHistoryUserDataFeature: import("@cosmicdrift/kumiko-types/feature").FeatureDefinition & {
7
- readonly exports: void;
8
- };
@@ -26,5 +26,3 @@ export function createNotesHistoryUserDataFeature() {
26
26
  });
27
27
  }, { dedupeOptions: {} });
28
28
  }
29
- /** @deprecated Use createNotesHistoryUserDataFeature(). Run `bun kumiko-upgrade --apply`. Removed in the first release after 2026-10-29. */
30
- export const notesHistoryUserDataFeature = createNotesHistoryUserDataFeature();
@@ -1,7 +1,7 @@
1
- export { type BrandingTokens, brandingHeaderHtml, brandingStyleBlock, EMPTY_BRANDING, isSafeHexColor, isSafeHttpsUrl, layoutMaxWidth, } from "./branding.js";
2
- export { type CachedSecurePageResponseInit, cachedSecurePageResponse, } from "./cached-page-response.js";
3
- export { sanitizeTenantCss } from "./css-sanitize.js";
4
- export { type PublicPageWrapLayout, type SeoHeadInput, TENANT_CONTENT_ATTR, tenantStyleBlock, wrapInLayout, } from "./layout.js";
5
- export { renderSafeMarkdown } from "./markdown.js";
6
- export { securePageHeaders } from "./security-headers.js";
7
- export { redirectToCanonicalPath, slashVariantOf } from "./trailing-slash.js";
1
+ export { type BrandingTokens, brandingHeaderHtml, brandingStyleBlock, EMPTY_BRANDING, isSafeHexColor, isSafeHttpsUrl, layoutMaxWidth, } from "./branding.ts";
2
+ export { type CachedSecurePageResponseInit, cachedSecurePageResponse, } from "./cached-page-response.ts";
3
+ export { sanitizeTenantCss } from "./css-sanitize.ts";
4
+ export { type PublicPageWrapLayout, type SeoHeadInput, TENANT_CONTENT_ATTR, tenantStyleBlock, wrapInLayout, } from "./layout.ts";
5
+ export { renderSafeMarkdown } from "./markdown.ts";
6
+ export { securePageHeaders } from "./security-headers.ts";
7
+ export { redirectToCanonicalPath, slashVariantOf } from "./trailing-slash.ts";
@@ -1,5 +1,5 @@
1
1
  import { type ApexHead } from "@cosmicdrift/kumiko-headless/apex";
2
- import { type BrandingTokens } from "./branding.js";
2
+ import { type BrandingTokens } from "./branding.ts";
3
3
  export type SeoHeadInput = Omit<ApexHead, "title" | "description" | "lang">;
4
4
  export type PublicPageWrapLayout = (opts: {
5
5
  readonly title: string;
@@ -1,5 +1,5 @@
1
- export { type BrandingTokens, brandingHeaderHtml, brandingStyleBlock, EMPTY_BRANDING, isSafeHexColor, isSafeHttpsUrl, layoutMaxWidth, } from "./branding.js";
2
- export { sanitizeTenantCss } from "./css-sanitize.js";
3
- export { TENANT_CONTENT_ATTR, tenantStyleBlock, wrapInLayout } from "./layout.js";
4
- export { renderSafeMarkdown } from "./markdown.js";
5
- export { securePageHeaders } from "./security-headers.js";
1
+ export { type BrandingTokens, brandingHeaderHtml, brandingStyleBlock, EMPTY_BRANDING, isSafeHexColor, isSafeHttpsUrl, layoutMaxWidth, } from "./branding.ts";
2
+ export { sanitizeTenantCss } from "./css-sanitize.ts";
3
+ export { TENANT_CONTENT_ATTR, tenantStyleBlock, wrapInLayout } from "./layout.ts";
4
+ export { renderSafeMarkdown } from "./markdown.ts";
5
+ export { securePageHeaders } from "./security-headers.ts";
@@ -1,7 +1,7 @@
1
1
  import { type FeatureDefinition, type ProjectionListScreenDefinition } from "@cosmicdrift/kumiko-framework/engine";
2
- import { type PatRateLimit } from "./constants.js";
3
- import { type CreatePatOptions } from "./handlers/create.write.js";
4
- import type { PatScopeConfig } from "./scopes.js";
2
+ import { type PatRateLimit } from "./constants.ts";
3
+ import { type CreatePatOptions } from "./handlers/create.write.ts";
4
+ import type { PatScopeConfig } from "./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 = {
@@ -1,5 +1,5 @@
1
1
  import * as z from "zod";
2
- import type { PatScopeConfig } from "../scopes.js";
2
+ import type { PatScopeConfig } from "../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;
@@ -1,4 +1,4 @@
1
- import type { PatScopeConfig } from "./scopes.js";
1
+ import type { PatScopeConfig } from "./scopes.ts";
2
2
  type LocalizedString = {
3
3
  readonly en: string;
4
4
  };
@@ -1,15 +1,15 @@
1
1
  import type { FeatureDefinition } from "@cosmicdrift/kumiko-framework/engine";
2
- import { type PatRateLimit } from "./constants.js";
3
- export type { PatRateLimit } from "./constants.js";
4
- export { PAT_DEFAULT_RATE_LIMIT, PAT_FEATURE, PatHandlers, PatQueries } from "./constants.js";
5
- export type { BindPatAutoRevokeOnPasswordChange, PersonalAccessTokensOptions } from "./feature.js";
6
- export { bindPatAutoRevokeOnPasswordChangeFromFeature, createPersonalAccessTokensFeature, } from "./feature.js";
7
- export type { CreatePatOptions, PatMfaVerifyResult } from "./handlers/create.write.js";
8
- export { hashPatToken, mintPatToken } from "./hash.js";
9
- export { PAT_REVOKED_AGGREGATE_TYPE, PAT_REVOKED_EVENT_QN, PAT_REVOKED_EVENT_SHORT, type PatRevokedPayload, patRevokedSchema, } from "./pat-revoked-event.js";
10
- export { createPatResolver } from "./resolver.js";
11
- export { revokeAllPatTokensForUser } from "./revoke-for-user.js";
12
- export { apiTokenEntity, apiTokenTable } from "./schema/api-token.js";
13
- export type { PatScopeConfig, PatScopeDef } from "./scopes.js";
14
- export { expandScopes } from "./scopes.js";
2
+ import { type PatRateLimit } from "./constants.ts";
3
+ export type { PatRateLimit } from "./constants.ts";
4
+ export { PAT_DEFAULT_RATE_LIMIT, PAT_FEATURE, PatHandlers, PatQueries } from "./constants.ts";
5
+ export type { BindPatAutoRevokeOnPasswordChange, PersonalAccessTokensOptions } from "./feature.ts";
6
+ export { bindPatAutoRevokeOnPasswordChangeFromFeature, createPersonalAccessTokensFeature, } from "./feature.ts";
7
+ export type { CreatePatOptions, PatMfaVerifyResult } from "./handlers/create.write.ts";
8
+ export { hashPatToken, mintPatToken } from "./hash.ts";
9
+ export { PAT_REVOKED_AGGREGATE_TYPE, PAT_REVOKED_EVENT_QN, PAT_REVOKED_EVENT_SHORT, type PatRevokedPayload, patRevokedSchema, } from "./pat-revoked-event.ts";
10
+ export { createPatResolver } from "./resolver.ts";
11
+ export { revokeAllPatTokensForUser } from "./revoke-for-user.ts";
12
+ export { apiTokenEntity, apiTokenTable } from "./schema/api-token.ts";
13
+ export type { PatScopeConfig, PatScopeDef } from "./scopes.ts";
14
+ export { expandScopes } from "./scopes.ts";
15
15
  export declare function patRateLimitFromFeature(feature: FeatureDefinition): PatRateLimit;
@@ -1,6 +1,6 @@
1
1
  import type { TokenVerifier } from "@cosmicdrift/kumiko-framework/api";
2
2
  import type { DbConnection } from "@cosmicdrift/kumiko-framework/db";
3
- import { type PatScopeConfig } from "./scopes.js";
3
+ import { type PatScopeConfig } from "./scopes.ts";
4
4
  export declare function createPatResolver(opts: {
5
5
  readonly db: DbConnection;
6
6
  readonly scopes: PatScopeConfig;
@@ -1,5 +1,5 @@
1
1
  import { type ProjectionListScreenDefinition, type SecretMintScreenDefinition } from "@cosmicdrift/kumiko-framework/engine";
2
- import type { PatScopeConfig } from "./scopes.js";
2
+ import type { PatScopeConfig } from "./scopes.ts";
3
3
  export declare const patListScreen: ProjectionListScreenDefinition;
4
4
  export declare function patGrantOptions(scopes: PatScopeConfig): string[];
5
5
  export declare function createPatMintScreen(scopes: PatScopeConfig): SecretMintScreenDefinition;
@@ -1,8 +1,10 @@
1
1
  import type { FeatureDefinition } from "@cosmicdrift/kumiko-framework/engine";
2
- import { type UserDataRightsOptions } from "../user-data-rights/index.js";
2
+ import { type UserDataRightsOptions } from "../user-data-rights/index.ts";
3
3
  export type DsgvoSelfServiceOptions = {
4
4
  /** Passed through to createUserDataRightsFeature — export/deletion mail
5
5
  * callbacks + Apex deletion HMAC. Default {} (no-op mail side). */
6
6
  readonly userDataRights?: UserDataRightsOptions;
7
7
  };
8
+ /** @deprecated Removed in the next release. Use `composeGdprStack({ selfService: { userDataRights } })`
9
+ * from `@cosmicdrift/kumiko-dev-server/compose-stacks`. */
8
10
  export declare function dsgvoSelfServiceFeatures(opts?: DsgvoSelfServiceOptions): FeatureDefinition[];
@@ -11,6 +11,8 @@ import { createUserProfileFeature } from "../user-profile/index.js";
11
11
  // comment. text-content + legal-pages stay out deliberately — legal-pages
12
12
  // has an app-specific wrapLayout, text-content is a standalone foundation;
13
13
  // both are spread in by the app itself.
14
+ /** @deprecated Removed in the next release. Use `composeGdprStack({ selfService: { userDataRights } })`
15
+ * from `@cosmicdrift/kumiko-dev-server/compose-stacks`. */
14
16
  export function dsgvoSelfServiceFeatures(opts = {}) {
15
17
  return [
16
18
  createDataRetentionFeature(),
@@ -1,2 +1,2 @@
1
- export { type DsgvoSelfServiceOptions, dsgvoSelfServiceFeatures } from "./dsgvo-self-service.js";
2
- export { type SecurityBaselineOptions, securityBaselineFeatures } from "./security-baseline.js";
1
+ export { type DsgvoSelfServiceOptions, dsgvoSelfServiceFeatures } from "./dsgvo-self-service.ts";
2
+ export { type SecurityBaselineOptions, securityBaselineFeatures } from "./security-baseline.ts";
@@ -2,4 +2,6 @@ import type { FeatureDefinition } from "@cosmicdrift/kumiko-framework/engine";
2
2
  export type SecurityBaselineOptions = {
3
3
  readonly includeSessions?: boolean;
4
4
  };
5
+ /** @deprecated Removed in the next release. Use `composeSecurityStack({ includeSessions })`
6
+ * from `@cosmicdrift/kumiko-dev-server/compose-stacks`. */
5
7
  export declare function securityBaselineFeatures(opts?: SecurityBaselineOptions): FeatureDefinition[];
@@ -3,6 +3,8 @@ import { createCryptoShreddingFeature } from "../crypto-shredding/index.js";
3
3
  import { createRateLimitingFeature } from "../rate-limiting/index.js";
4
4
  import { createSessionsFeature } from "../sessions/index.js";
5
5
  // Host app must mount user, tenant, auth-foundation (sessions/audit requires).
6
+ /** @deprecated Removed in the next release. Use `composeSecurityStack({ includeSessions })`
7
+ * from `@cosmicdrift/kumiko-dev-server/compose-stacks`. */
6
8
  export function securityBaselineFeatures(opts = {}) {
7
9
  return [
8
10
  ...(opts.includeSessions !== false ? [createSessionsFeature()] : []),
@@ -1,2 +1,2 @@
1
- export { RATE_LIMITING_FEATURE, RateLimitErrors, RateLimitQueries } from "./constants.js";
2
- export { createRateLimitingFeature } from "./feature.js";
1
+ export { RATE_LIMITING_FEATURE, RateLimitErrors, RateLimitQueries } from "./constants.ts";
2
+ export { createRateLimitingFeature } from "./feature.ts";
@@ -5,11 +5,3 @@ export declare function createReadinessFeature(): import("@cosmicdrift/kumiko-ty
5
5
  };
6
6
  };
7
7
  };
8
- /** @deprecated Use createReadinessFeature(). Run `bun kumiko-upgrade --apply`. Removed in the first release after 2026-10-29. */
9
- export declare const readinessFeature: import("@cosmicdrift/kumiko-types/feature").FeatureDefinition & {
10
- readonly exports: {
11
- queries: {
12
- status: import("@cosmicdrift/kumiko-types/handlers").HandlerRef;
13
- };
14
- };
15
- };
@@ -25,5 +25,3 @@ export function createReadinessFeature() {
25
25
  return { queries };
26
26
  }, { dedupeOptions: {} });
27
27
  }
28
- /** @deprecated Use createReadinessFeature(). Run `bun kumiko-upgrade --apply`. Removed in the first release after 2026-10-29. */
29
- export const readinessFeature = createReadinessFeature();
@@ -1,3 +1,3 @@
1
- export { READINESS_FEATURE, ReadinessQueries } from "./constants.js";
2
- export { createReadinessFeature, readinessFeature } from "./feature.js";
3
- export type { ReadinessMissingSecret } from "./handlers/status.query.js";
1
+ export { READINESS_FEATURE, ReadinessQueries } from "./constants.ts";
2
+ export { createReadinessFeature } from "./feature.ts";
3
+ export type { ReadinessMissingSecret } from "./handlers/status.query.ts";
@@ -1,2 +1,2 @@
1
1
  export { READINESS_FEATURE, ReadinessQueries } from "./constants.js";
2
- export { createReadinessFeature, readinessFeature } from "./feature.js";
2
+ export { createReadinessFeature } from "./feature.js";
@@ -1,6 +1,6 @@
1
1
  import type { TenantId } from "@cosmicdrift/kumiko-framework/engine";
2
- import { type RenderKind } from "./constants.js";
3
- import { type RendererPlugin } from "./types.js";
2
+ import { type RenderKind } from "./constants.ts";
3
+ import { type RendererPlugin } from "./types.ts";
4
4
  export type RendererFoundationApi = {
5
5
  /**
6
6
  * Selects + returns a RendererPlugin for (tenantId × kind). Callers
@@ -1,4 +1,4 @@
1
- import type { RenderKind as RenderKindLocal } from "../template-resolver/index.js";
1
+ import type { RenderKind as RenderKindLocal } from "../template-resolver/index.ts";
2
2
  export declare const RENDERER_EXTENSION: "renderer";
3
- export { CONTENT_FORMATS, type ContentFormat, RENDER_KINDS, type RenderKind, } from "../template-resolver/index.js";
3
+ export { CONTENT_FORMATS, type ContentFormat, RENDER_KINDS, type RenderKind, } from "../template-resolver/index.ts";
4
4
  export declare const DEFAULT_PLUGIN_BY_KIND: Readonly<Record<RenderKindLocal, string>>;
@@ -1,5 +1,5 @@
1
1
  import { type Registry } from "@cosmicdrift/kumiko-framework/engine";
2
- import { type RendererPlugin } from "./types.js";
2
+ import { type RendererPlugin } from "./types.ts";
3
3
  export declare function createRendererFoundationFeature(): import("@cosmicdrift/kumiko-types/feature").FeatureDefinition & {
4
4
  readonly exports: {};
5
5
  };
@@ -1,5 +1,5 @@
1
- export { attachmentFileNameSchema } from "../shared/index.js";
2
- export { createRendererFoundationApi, type RendererFoundationApi, requireRendererFoundation, } from "./api.js";
3
- export { CONTENT_FORMATS, type ContentFormat, DEFAULT_PLUGIN_BY_KIND, RENDER_KINDS, RENDERER_EXTENSION, type RenderKind, } from "./constants.js";
4
- export { collectRendererPlugins, createRendererFoundationFeature } from "./feature.js";
5
- export { type DocumentPayload, type DocumentPdfDraft, type DocumentPdfPayload, type DocumentPreview, type DocumentPreviewRequest, type FileAttachmentRef, type ImageOptions, type InlineAttachmentRef, isRendererRegistrationPlugin, type MailAttachmentRef, type MailDraft, type MailPayload, type PdfOptions, type RenderedPdfAttachmentRef, type RenderedTemplateRef, type RendererContext, RendererError, type RendererPlugin, type RendererRegistrationPlugin, type RenderProvenance, type RenderRequest, type RenderResponse, } from "./types.js";
1
+ export { attachmentFileNameSchema } from "../shared/index.ts";
2
+ export { createRendererFoundationApi, type RendererFoundationApi, requireRendererFoundation, } from "./api.ts";
3
+ export { CONTENT_FORMATS, type ContentFormat, DEFAULT_PLUGIN_BY_KIND, RENDER_KINDS, RENDERER_EXTENSION, type RenderKind, } from "./constants.ts";
4
+ export { collectRendererPlugins, createRendererFoundationFeature } from "./feature.ts";
5
+ export { type DocumentPayload, type DocumentPdfDraft, type DocumentPdfPayload, type DocumentPreview, type DocumentPreviewRequest, type FileAttachmentRef, type ImageOptions, type InlineAttachmentRef, isRendererRegistrationPlugin, type MailAttachmentRef, type MailChrome, type MailChromeLink, type MailChromeRequest, type MailDraft, type MailPayload, type PdfOptions, type RenderedPdfAttachmentRef, type RenderedTemplateRef, type RendererContext, RendererError, type RendererPlugin, type RendererRegistrationPlugin, type RenderProvenance, type RenderRequest, type RenderResponse, } from "./types.ts";
@@ -1,8 +1,8 @@
1
1
  import type { DbRunner, TenantDb } from "@cosmicdrift/kumiko-framework/db";
2
2
  import type { ConfigAccessor, Registry, TenantId } from "@cosmicdrift/kumiko-framework/engine";
3
3
  import type { FileContext } from "@cosmicdrift/kumiko-framework/files";
4
- import type { LinkedResourceEntry, MailTemplateMeta, PdfPageFormat, PdfTemplateMeta, TemplateScope } from "../template-resolver/index.js";
5
- import { type ContentFormat, RENDERER_EXTENSION, type RenderKind } from "./constants.js";
4
+ import type { LinkedResourceEntry, MailTemplateMeta, PdfPageFormat, PdfTemplateMeta, TemplateScope } from "../template-resolver/index.ts";
5
+ import { type ContentFormat, RENDERER_EXTENSION, type RenderKind } from "./constants.ts";
6
6
  export type RenderRequest = {
7
7
  kind: "mail";
8
8
  payload: MailPayload;
@@ -142,12 +142,34 @@ export type RendererContext = {
142
142
  /** Only plugins that embed resource bytes (PDF) need it; without it images are dropped. */
143
143
  readonly filesForTenant?: (tenantId: string) => FileContext | undefined;
144
144
  };
145
+ export type MailChromeLink = {
146
+ readonly label: string;
147
+ readonly url: string;
148
+ };
149
+ /** The tenant's mail look with every text resolved for one locale, for pages a
150
+ * recipient reaches from a mail link. URLs are http(s) only, the logo https only,
151
+ * the accent color a #rrggbb hex. */
152
+ export type MailChrome = {
153
+ readonly tenantName: string;
154
+ readonly brandSuffix: string;
155
+ readonly logoUrl?: string;
156
+ readonly accentColor?: string;
157
+ readonly siteUrl?: string;
158
+ readonly footerText?: string;
159
+ readonly imprint?: MailChromeLink;
160
+ readonly privacy?: MailChromeLink;
161
+ };
162
+ export type MailChromeRequest = {
163
+ readonly locale: string;
164
+ };
145
165
  export type RendererPlugin = {
146
166
  readonly name: string;
147
167
  readonly kinds: ReadonlyArray<RenderKind>;
148
168
  render(req: RenderRequest, ctx: RendererContext): Promise<RenderResponse>;
149
169
  /** Optional: plugins that print documents offer a preview that never reaches the print service. */
150
170
  previewDocument?(req: DocumentPreviewRequest, ctx: RendererContext): Promise<DocumentPreview>;
171
+ /** Optional: mail plugins hand out their brand row and footer for pages outside a mail. */
172
+ readMailChrome?(req: MailChromeRequest, ctx: RendererContext): Promise<MailChrome>;
151
173
  };
152
174
  export declare class RendererError extends Error {
153
175
  readonly code: "no_plugin_for_kind" | "invalid_payload" | "unavailable" | "other";
@@ -1,4 +1,4 @@
1
1
  import { type FeatureDefinition } from "@cosmicdrift/kumiko-framework/engine";
2
- import { type RenderRequest, type RenderResponse } from "../renderer-foundation/index.js";
2
+ import { type RenderRequest, type RenderResponse } from "../renderer-foundation/index.ts";
3
3
  export declare function renderTablePdfRequest(req: RenderRequest): Promise<RenderResponse>;
4
4
  export declare function createRendererPdfFeature(): FeatureDefinition;
@@ -1,2 +1,2 @@
1
- export { createRendererPdfFeature } from "./feature.js";
2
- export { type PdfTableColumn, type PdfTableDocument, type PdfTableOptions, type PdfTableResult, pdfTableDocumentSchema, renderTablePdf, } from "./render-table-pdf.js";
1
+ export { createRendererPdfFeature } from "./feature.ts";
2
+ export { type PdfTableColumn, type PdfTableDocument, type PdfTableOptions, type PdfTableResult, pdfTableDocumentSchema, renderTablePdf, } from "./render-table-pdf.ts";
@@ -1,5 +1,5 @@
1
1
  import * as z from "zod";
2
- import type { PdfPageFormat } from "../template-resolver/index.js";
2
+ import type { PdfPageFormat } from "../template-resolver/index.ts";
3
3
  declare const pdfTableColumnSchema: z.ZodReadonly<z.ZodObject<{
4
4
  header: z.ZodString;
5
5
  weight: z.ZodOptional<z.ZodNumber>;
@@ -6,4 +6,11 @@ export declare const SECRETS_ERROR_KEYS: {
6
6
  readonly writeDenied: "secrets.errors.writeDenied";
7
7
  readonly invalidValue: "secrets.errors.invalidValue";
8
8
  };
9
+ export declare const SecretsHandlers: {
10
+ readonly set: "secrets:write:set";
11
+ readonly delete: "secrets:write:delete";
12
+ };
13
+ export declare const SecretsQueries: {
14
+ readonly list: "secrets:query:list";
15
+ };
9
16
  export declare const INVALID_SECRET_VALUE_CODE: "invalid_secret_value";
@@ -14,4 +14,11 @@ export const SECRETS_ERROR_KEYS = {
14
14
  writeDenied: "secrets.errors.writeDenied",
15
15
  invalidValue: "secrets.errors.invalidValue",
16
16
  };
17
+ export const SecretsHandlers = {
18
+ set: "secrets:write:set",
19
+ delete: "secrets:write:delete",
20
+ };
21
+ export const SecretsQueries = {
22
+ list: "secrets:query:list",
23
+ };
17
24
  export const INVALID_SECRET_VALUE_CODE = "invalid_secret_value";
@@ -1,4 +1,4 @@
1
1
  import type { DbRunner } from "@cosmicdrift/kumiko-framework/db";
2
2
  import type { TenantId } from "@cosmicdrift/kumiko-framework/engine";
3
- import type { StoredEnvelope } from "../../table.js";
3
+ import type { StoredEnvelope } from "../../table.ts";
4
4
  export declare function selectTenantSecretEnvelope(db: DbRunner, tenantId: TenantId, key: string): Promise<StoredEnvelope | undefined>;
@@ -1,4 +1,5 @@
1
1
  import { type AccessRule, type FeatureDefinition } from "@cosmicdrift/kumiko-framework/engine";
2
+ import { type FeatureWithEnvSchema } from "@cosmicdrift/kumiko-framework/env";
2
3
  import type { SecretsContext } from "@cosmicdrift/kumiko-framework/secrets";
3
4
  import * as z from "zod";
4
5
  /**
@@ -20,8 +21,8 @@ export declare const secretsEnvSchema: z.ZodObject<{
20
21
  KUMIKO_SECRETS_MASTER_KEY_V1: z.ZodString;
21
22
  KUMIKO_SECRETS_MASTER_KEY_CURRENT_VERSION: z.ZodDefault<z.ZodString>;
22
23
  }, z.core.$strip>;
23
- export { createSecretsContext, type SecretsContext, type SecretsContextOptions, TENANT_SECRET_READ_EVENT, } from "./secrets-context.js";
24
- export { type StoredEnvelope, type StoredMetadata, tenantSecretsTable } from "./table.js";
24
+ export { createSecretsContext, type SecretsContext, type SecretsContextOptions, TENANT_SECRET_READ_EVENT, } from "./secrets-context.ts";
25
+ export { type StoredEnvelope, type StoredMetadata, tenantSecretsTable } from "./table.ts";
25
26
  export declare const JOIN_REQUEST_TRANSACTION_REASON = "the secret write runs on the request transaction so a failing batch rolls it back together with the config writes";
26
27
  export declare function requireSecretsContext(ctx: {
27
28
  readonly secrets?: SecretsContext;
@@ -43,4 +44,4 @@ export type SecretsFeatureOptions = {
43
44
  /** Shorthand for { access: { roles } }. Mutually exclusive with `access`. */
44
45
  readonly roles?: readonly string[];
45
46
  };
46
- export declare function createSecretsFeature(opts?: SecretsFeatureOptions): FeatureDefinition;
47
+ export declare function createSecretsFeature(opts?: SecretsFeatureOptions): FeatureWithEnvSchema<FeatureDefinition, typeof secretsEnvSchema.shape>;
@@ -1,4 +1,5 @@
1
1
  import { defineFeature, SYSTEM_ROLE, } from "@cosmicdrift/kumiko-framework/engine";
2
+ import { featureWithEnvSchema } from "@cosmicdrift/kumiko-framework/env";
2
3
  import { InternalError } from "@cosmicdrift/kumiko-framework/errors";
3
4
  import { SETTINGS_HUB_I18N } from "@cosmicdrift/kumiko-framework/i18n";
4
5
  import * as z from "zod";
@@ -104,8 +105,8 @@ function withSystemWriter(rule) {
104
105
  export function createSecretsFeature(opts = {}) {
105
106
  const access = resolveSecretsAccess(opts);
106
107
  const writeAccess = withSystemWriter(access);
107
- return defineFeature(SECRETS_FEATURE_NAME, (r) => {
108
- r.describe('Stores arbitrary per-tenant secrets (API keys, tokens, credentials) encrypted at rest using AES-256 with a KEK loaded from `KUMIKO_SECRETS_MASTER_KEY_V1` (and successive versions for rotation). Read a secret in handlers via `ctx.secrets.get(tenantId, handle)`, which automatically appends a `tenantSecretRead` audit event so every access is traceable. A `rotate` job re-encrypts all envelopes after a KEK version bump. The `set`/`delete`/`list` handlers share one access rule — default { roles: ["TenantAdmin"] }; adopt the host\'s role vocabulary with createSecretsFeature({ roles }) or open it to every authenticated tenant user with { access: { openToAll: { reason } } } (larger blast radius: any tenant member can then read secret previews and write/delete secrets, not just admins). Server-side code writes a tenant secret with `dispatchSystemWrite({ handlerQn: "secrets:write:set", payload, tenantId })`: set and delete also admit the in-process system identity, so such writes pass the same declared-key and value checks.');
108
+ const feature = defineFeature(SECRETS_FEATURE_NAME, (r) => {
109
+ r.describe('Stores arbitrary per-tenant secrets (API keys, tokens, credentials) encrypted at rest using AES-256 with a KEK loaded from `KUMIKO_SECRETS_MASTER_KEY_V1` (and successive versions for rotation). Read a secret in handlers via `ctx.secrets.get(tenantId, handle)`, which automatically appends a `tenantSecretRead` audit event so every access is traceable. A `rotate` job re-encrypts all envelopes after a KEK version bump. The `set`/`delete`/`list` handlers share one access rule — default { roles: ["TenantAdmin"] }; adopt the host\'s role vocabulary with createSecretsFeature({ roles }) or open it to every authenticated tenant user with { access: { openToAll: { reason } } } (larger blast radius: any tenant member can then read secret previews and write/delete secrets, not just admins). Server-side code writes a tenant secret with `dispatchSystemWrite({ handlerQn: SecretsHandlers.set, payload, tenantId })`: set and delete also admit the in-process system identity, so such writes pass the same declared-key and value checks.');
109
110
  r.uiHints({
110
111
  displayLabel: "Tenant Secrets",
111
112
  category: "infrastructure",
@@ -161,4 +162,5 @@ export function createSecretsFeature(opts = {}) {
161
162
  // ops-tool (see docs/plans/architecture/event-dispatcher.md §retention).
162
163
  // No per-feature retention-job anymore.
163
164
  });
165
+ return featureWithEnvSchema(feature, secretsEnvSchema);
164
166
  }
@@ -2,7 +2,7 @@ import { defineWriteHandler } from "@cosmicdrift/kumiko-framework/engine";
2
2
  import { failNotFound } from "@cosmicdrift/kumiko-framework/errors";
3
3
  import * as z from "zod";
4
4
  import { announceSecretChange } from "../announce-secret-change.js";
5
- import { DEFAULT_SECRETS_ACCESS } from "../constants.js";
5
+ import { DEFAULT_SECRETS_ACCESS, SecretsHandlers } from "../constants.js";
6
6
  import { JOIN_REQUEST_TRANSACTION_REASON, requireSecretsContext } from "../feature.js";
7
7
  import { checkSecretKeyWrite } from "../write-gate.js";
8
8
  export function createDeleteHandler(access = DEFAULT_SECRETS_ACCESS) {
@@ -16,7 +16,7 @@ export function createDeleteHandler(access = DEFAULT_SECRETS_ACCESS) {
16
16
  access,
17
17
  escapeHatch: { grants: ["unsafeRaw"], reason: JOIN_REQUEST_TRANSACTION_REASON },
18
18
  handler: async (event, ctx) => {
19
- const secrets = requireSecretsContext(ctx, "secrets:write:delete").withRunner(ctx.db.unsafeRaw());
19
+ const secrets = requireSecretsContext(ctx, SecretsHandlers.delete).withRunner(ctx.db.unsafeRaw());
20
20
  const gate = checkSecretKeyWrite(ctx.registry, event.user.roles, event.payload.key, {
21
21
  allowUndeclared: true,
22
22
  });
@@ -1,6 +1,6 @@
1
1
  import { type DbConnection } from "@cosmicdrift/kumiko-framework/db";
2
2
  import type { JobContext } from "@cosmicdrift/kumiko-framework/engine";
3
- import { type ChunkedMigrationStopReason } from "../../shared/index.js";
3
+ import { type ChunkedMigrationStopReason } from "../../shared/index.ts";
4
4
  export type RotateJobPayload = {
5
5
  readonly batchSize?: number;
6
6
  readonly maxDurationMs?: number;
@@ -1,7 +1,7 @@
1
1
  import { defineWriteHandler } from "@cosmicdrift/kumiko-framework/engine";
2
2
  import * as z from "zod";
3
3
  import { announceSecretChange } from "../announce-secret-change.js";
4
- import { DEFAULT_SECRETS_ACCESS } from "../constants.js";
4
+ import { DEFAULT_SECRETS_ACCESS, SecretsHandlers } from "../constants.js";
5
5
  import { JOIN_REQUEST_TRANSACTION_REASON, requireSecretsContext } from "../feature.js";
6
6
  import { checkSecretKeyWrite, checkSecretValue } from "../write-gate.js";
7
7
  export function createSetHandler(access = DEFAULT_SECRETS_ACCESS) {
@@ -23,7 +23,7 @@ export function createSetHandler(access = DEFAULT_SECRETS_ACCESS) {
23
23
  access,
24
24
  escapeHatch: { grants: ["unsafeRaw"], reason: JOIN_REQUEST_TRANSACTION_REASON },
25
25
  handler: async (event, ctx) => {
26
- const secrets = requireSecretsContext(ctx, "secrets:write:set").withRunner(ctx.db.unsafeRaw());
26
+ const secrets = requireSecretsContext(ctx, SecretsHandlers.set).withRunner(ctx.db.unsafeRaw());
27
27
  const { key, value, redactedPreview, hint } = event.payload;
28
28
  // Preview-priority: explicit payload param > feature-declared redact
29
29
  // (via r.secret()) > generic default. A feature that declared a
@@ -1,7 +1,7 @@
1
- export { DEFAULT_SECRETS_ACCESS, DEFAULT_SECRETS_ROLES, INVALID_SECRET_VALUE_CODE, SECRETS_ERROR_KEYS, } from "./constants.js";
2
- export { createSecretsContext, createSecretsFeature, requireSecretsContext, SECRETS_FEATURE_NAME, SECRETS_MASTER_KEK_ENV_KEYS, type SecretsContext, type SecretsContextOptions, type SecretsFeatureOptions, type StoredEnvelope, type StoredMetadata, secretsEnvSchema, TENANT_SECRET_READ_EVENT, tenantSecretsTable, } from "./feature.js";
3
- export { createDeleteHandler } from "./handlers/delete.write.js";
4
- export { createListHandler } from "./handlers/list.query.js";
5
- export { type RotateJobPayload, type RotateJobResult, rotateJob, } from "./handlers/rotate.job.js";
6
- export { createSetHandler } from "./handlers/set.write.js";
7
- export { isInvalidSecretValueError } from "./write-gate.js";
1
+ export { DEFAULT_SECRETS_ACCESS, DEFAULT_SECRETS_ROLES, INVALID_SECRET_VALUE_CODE, SECRETS_ERROR_KEYS, SecretsHandlers, SecretsQueries, } from "./constants.ts";
2
+ export { createSecretsContext, createSecretsFeature, requireSecretsContext, SECRETS_FEATURE_NAME, SECRETS_MASTER_KEK_ENV_KEYS, type SecretsContext, type SecretsContextOptions, type SecretsFeatureOptions, type StoredEnvelope, type StoredMetadata, secretsEnvSchema, TENANT_SECRET_READ_EVENT, tenantSecretsTable, } from "./feature.ts";
3
+ export { createDeleteHandler } from "./handlers/delete.write.ts";
4
+ export { createListHandler } from "./handlers/list.query.ts";
5
+ export { type RotateJobPayload, type RotateJobResult, rotateJob, } from "./handlers/rotate.job.ts";
6
+ export { createSetHandler } from "./handlers/set.write.ts";
7
+ export { isInvalidSecretValueError } from "./write-gate.ts";
@@ -1,4 +1,4 @@
1
- export { DEFAULT_SECRETS_ACCESS, DEFAULT_SECRETS_ROLES, INVALID_SECRET_VALUE_CODE, SECRETS_ERROR_KEYS, } from "./constants.js";
1
+ export { DEFAULT_SECRETS_ACCESS, DEFAULT_SECRETS_ROLES, INVALID_SECRET_VALUE_CODE, SECRETS_ERROR_KEYS, SecretsHandlers, SecretsQueries, } from "./constants.js";
2
2
  export { createSecretsContext, createSecretsFeature, requireSecretsContext, SECRETS_FEATURE_NAME, SECRETS_MASTER_KEK_ENV_KEYS, secretsEnvSchema, TENANT_SECRET_READ_EVENT, tenantSecretsTable, } from "./feature.js";
3
3
  export { createDeleteHandler } from "./handlers/delete.write.js";
4
4
  export { createListHandler } from "./handlers/list.query.js";
@@ -1,7 +1,7 @@
1
1
  import { type DbConnection } from "@cosmicdrift/kumiko-framework/db";
2
2
  import { type DekCache, type MasterKeyProvider, type SecretsContext } from "@cosmicdrift/kumiko-framework/secrets";
3
3
  import * as z from "zod";
4
- import { type SecretValueSchemaSource } from "./write-gate.js";
4
+ import { type SecretValueSchemaSource } from "./write-gate.ts";
5
5
  export type { Secret, SecretsContext } from "@cosmicdrift/kumiko-framework/secrets";
6
6
  export type SecretsContextOptions = {
7
7
  readonly db: DbConnection;
@@ -1,7 +1,7 @@
1
1
  import { type FeatureDefinition } from "@cosmicdrift/kumiko-framework/engine";
2
- import { SEO_DEFAULT_PATHS } from "./constants.js";
3
- import { type RobotsPolicy } from "./robots-txt.js";
4
- import { type SitemapEntry } from "./sitemap.js";
2
+ import { SEO_DEFAULT_PATHS } from "./constants.ts";
3
+ import { type RobotsPolicy } from "./robots-txt.ts";
4
+ import { type SitemapEntry } from "./sitemap.ts";
5
5
  export type ManagedPagesDiscoveryOptions = {
6
6
  /** Same per-host tenant resolver the app already passes to
7
7
  * createManagedPagesFeature — needed to X-Tenant-scope the anonymous
@@ -1,6 +1,6 @@
1
- export { SEO_CONFIG_KEYS, SEO_CONFIG_QN, SEO_DEFAULT_PATHS, SEO_FEATURE } from "./constants.js";
2
- export { createSeoFeature, type ManagedPagesDiscoveryOptions, runSeoBootCheck, type SeoBootCheckCtx, type SeoOptions, } from "./feature.js";
3
- export { buildLlmsTxt, type LlmsTxtInput, type LlmsTxtLink, type LlmsTxtSection, } from "./llms-txt.js";
4
- export { buildRobotsTxt, type RobotsPolicy } from "./robots-txt.js";
5
- export { type FaqItem, faqPageSchema, type OrganizationSchemaInput, organizationSchema, type WebPageSchemaInput, webPageSchema, } from "./schema-builders.js";
6
- export { buildSitemapXml, type SitemapEntry } from "./sitemap.js";
1
+ export { SEO_CONFIG_KEYS, SEO_CONFIG_QN, SEO_DEFAULT_PATHS, SEO_FEATURE } from "./constants.ts";
2
+ export { createSeoFeature, type ManagedPagesDiscoveryOptions, runSeoBootCheck, type SeoBootCheckCtx, type SeoOptions, } from "./feature.ts";
3
+ export { buildLlmsTxt, type LlmsTxtInput, type LlmsTxtLink, type LlmsTxtSection, } from "./llms-txt.ts";
4
+ export { buildRobotsTxt, type RobotsPolicy } from "./robots-txt.ts";
5
+ export { type FaqItem, faqPageSchema, type OrganizationSchemaInput, organizationSchema, type WebPageSchemaInput, webPageSchema, } from "./schema-builders.ts";
6
+ export { buildSitemapXml, type SitemapEntry } from "./sitemap.ts";
@@ -1,5 +1,5 @@
1
1
  import { type FeatureDefinition } from "@cosmicdrift/kumiko-framework/engine";
2
- import { type SessionAllOthersRevoker, type SessionMassRevoker } from "./session-callbacks.js";
2
+ import { type SessionAllOthersRevoker, type SessionMassRevoker } from "./session-callbacks.ts";
3
3
  export type SessionsFeatureOptions = {
4
4
  readonly autoRevokeOnPasswordChange?: SessionMassRevoker;
5
5
  readonly expiresInMs?: number;