@cosmicdrift/kumiko-bundled-features 0.307.0 → 0.309.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 (253) hide show
  1. package/package.json +9 -9
  2. package/src/__tests__/access-invalidation-consumer.integration.test.ts +107 -0
  3. package/src/__tests__/access-invalidation-stream.integration.test.ts +1 -1
  4. package/src/__tests__/credential-scoped-sse-revoke.integration.test.ts +296 -0
  5. package/src/agent-tools/__tests__/agent-doc-lint.test.ts +1 -1
  6. package/src/agent-tools/__tests__/agent-manifest.test.ts +1 -1
  7. package/src/agent-tools/__tests__/agent-optout.test.ts +1 -1
  8. package/src/agent-tools/__tests__/agent-tools.integration.test.ts +1 -1
  9. package/src/agent-tools/__tests__/feature.test.ts +1 -1
  10. package/src/agent-tools/__tests__/tool-catalog.test.ts +1 -1
  11. package/src/agent-tools/agent-manifest.ts +1 -1
  12. package/src/audit/__tests__/escape-hatch-audit.integration.test.ts +1 -1
  13. package/src/audit/escape-hatch-audit-sink.ts +1 -1
  14. package/src/audit/handlers/details.query.ts +1 -1
  15. package/src/audit/handlers/list.query.ts +1 -1
  16. package/src/auth-email-password/__tests__/query-as-member.integration.test.ts +1 -1
  17. package/src/auth-email-password/__tests__/seed-admin-guarded.integration.test.ts +31 -0
  18. package/src/auth-email-password/changes.json +6 -0
  19. package/src/auth-email-password/feature.ts +1 -1
  20. package/src/auth-email-password/handlers/change-password.write.ts +1 -1
  21. package/src/auth-email-password/handlers/confirm-account-unlock.write.ts +1 -1
  22. package/src/auth-email-password/handlers/invite-accept-with-login.write.ts +1 -1
  23. package/src/auth-email-password/handlers/invite-accept.write.ts +1 -1
  24. package/src/auth-email-password/handlers/invite-create.write.ts +1 -1
  25. package/src/auth-email-password/handlers/invite-signup-complete.write.ts +1 -1
  26. package/src/auth-email-password/handlers/login.write.ts +1 -1
  27. package/src/auth-email-password/handlers/logout.write.ts +1 -1
  28. package/src/auth-email-password/handlers/reset-password.write.ts +1 -1
  29. package/src/auth-email-password/handlers/self-registration-status.query.ts +1 -1
  30. package/src/auth-email-password/handlers/signup-confirm.write.ts +1 -1
  31. package/src/auth-email-password/handlers/signup-request.write.ts +1 -1
  32. package/src/auth-email-password/handlers/token-request-handler.ts +1 -1
  33. package/src/auth-email-password/handlers/verify-email.write.ts +1 -1
  34. package/src/auth-email-password/password-policy.ts +1 -1
  35. package/src/auth-email-password/seeding.ts +16 -3
  36. package/src/auth-mfa/__tests__/session-scoped-sse-revoke.integration.test.ts +1 -1
  37. package/src/auth-mfa/handlers/disable.write.ts +1 -1
  38. package/src/auth-mfa/handlers/enable-confirm-preauth.write.ts +1 -1
  39. package/src/auth-mfa/handlers/enable-confirm.write.ts +1 -1
  40. package/src/auth-mfa/handlers/enable-start-preauth.write.ts +1 -1
  41. package/src/auth-mfa/handlers/enable-start.write.ts +1 -1
  42. package/src/auth-mfa/handlers/regenerate-recovery.write.ts +1 -1
  43. package/src/auth-mfa/handlers/status.query.ts +1 -1
  44. package/src/auth-mfa/handlers/verify.write.ts +1 -1
  45. package/src/billing-foundation/billing-info-query.ts +1 -1
  46. package/src/billing-foundation/events.ts +1 -1
  47. package/src/billing-foundation/handlers/create-checkout-session.write.ts +1 -1
  48. package/src/billing-foundation/handlers/create-portal-session.write.ts +1 -1
  49. package/src/billing-foundation/handlers/list-subscriptions.query.ts +1 -1
  50. package/src/billing-foundation/handlers/process-event.write.ts +1 -1
  51. package/src/billing-foundation/handlers/process-payment-event.write.ts +1 -1
  52. package/src/cap-counter/__tests__/cap-counter.integration.test.ts +1 -1
  53. package/src/cap-counter/__tests__/stock-cap-guard.integration.test.ts +1 -1
  54. package/src/cap-counter/__tests__/with-cap-enforcement.integration.test.ts +1 -1
  55. package/src/cap-counter/book-cap-usage.ts +1 -1
  56. package/src/cap-counter/handlers/get-counter.query.ts +1 -1
  57. package/src/cap-counter/handlers/increment-rolling.write.ts +1 -1
  58. package/src/cap-counter/handlers/increment.write.ts +1 -1
  59. package/src/cap-counter/handlers/mark-soft-warned.write.ts +1 -1
  60. package/src/cap-overview/handlers/caps-usage.query.ts +1 -1
  61. package/src/cap-overview/handlers/tenant-caps-list.query.ts +1 -1
  62. package/src/cap-overview/handlers/tenant-options.query.ts +1 -1
  63. package/src/channel-in-app/handlers/inbox.query.ts +1 -1
  64. package/src/channel-in-app/handlers/mark-all-read.write.ts +1 -1
  65. package/src/channel-in-app/handlers/mark-read.write.ts +1 -1
  66. package/src/channel-in-app/handlers/unread-count.query.ts +1 -1
  67. package/src/compliance-profiles/handlers/for-tenant.query.ts +1 -1
  68. package/src/compliance-profiles/handlers/list-profiles.query.ts +1 -1
  69. package/src/compliance-profiles/handlers/needs-profile.query.ts +1 -1
  70. package/src/compliance-profiles/handlers/set-profile.write.ts +1 -1
  71. package/src/compliance-profiles/handlers/sub-processors.query.ts +1 -1
  72. package/src/compliance-profiles-ops/handlers/tenants-missing-profile.query.ts +1 -1
  73. package/src/config/__tests__/backing-secrets.integration.test.ts +1 -1
  74. package/src/config/__tests__/config.integration.test.ts +1 -1
  75. package/src/config/__tests__/tz-resolution.integration.test.ts +1 -1
  76. package/src/config/handlers/cascade.query.ts +1 -1
  77. package/src/config/handlers/readiness.query.ts +1 -1
  78. package/src/config/handlers/reset.write.ts +1 -1
  79. package/src/config/handlers/schema.query.ts +1 -1
  80. package/src/config/handlers/set.write.ts +1 -1
  81. package/src/config/handlers/values.query.ts +1 -1
  82. package/src/crypto-shredding/handlers/forget-subject.write.ts +1 -1
  83. package/src/custom-fields/__tests__/audit-integration.integration.test.ts +1 -1
  84. package/src/custom-fields/__tests__/cross-tenant-field-delete.integration.test.ts +1 -1
  85. package/src/custom-fields/__tests__/cross-tenant-set-write.integration.test.ts +1 -1
  86. package/src/custom-fields/__tests__/custom-fields.integration.test.ts +1 -1
  87. package/src/custom-fields/__tests__/field-access.integration.test.ts +1 -1
  88. package/src/custom-fields/__tests__/quota.integration.test.ts +1 -1
  89. package/src/custom-fields/__tests__/retention.integration.test.ts +1 -1
  90. package/src/custom-fields/__tests__/user-data-rights.integration.test.ts +1 -1
  91. package/src/custom-fields/events.ts +1 -1
  92. package/src/custom-fields/feature.ts +1 -1
  93. package/src/custom-fields/handlers/clear-custom-field.write.ts +1 -1
  94. package/src/custom-fields/handlers/set-custom-field.write.ts +1 -1
  95. package/src/custom-fields/lib/value-schema.ts +1 -1
  96. package/src/custom-fields/schemas.ts +1 -1
  97. package/src/data-retention/__tests__/retention-cleanup-files.integration.test.ts +454 -0
  98. package/src/data-retention/changes.json +6 -0
  99. package/src/data-retention/feature.ts +1 -0
  100. package/src/data-retention/handlers/policy-for.query.ts +1 -1
  101. package/src/data-retention/override-schema.ts +1 -1
  102. package/src/data-retention/run-retention-cleanup.ts +312 -5
  103. package/src/delivery/__tests__/delivery-pii-kms.integration.test.ts +1 -1
  104. package/src/delivery/__tests__/delivery.integration.test.ts +1 -1
  105. package/src/delivery/events.ts +1 -1
  106. package/src/delivery/feature.ts +1 -1
  107. package/src/delivery/handlers/log.query.ts +1 -1
  108. package/src/delivery/handlers/preferences.query.ts +1 -1
  109. package/src/delivery/handlers/set-preference.write.ts +1 -1
  110. package/src/delivery/jobs.ts +1 -1
  111. package/src/delivery/unsubscribe.ts +1 -1
  112. package/src/derivatives-sharp/__tests__/derivatives-sharp.integration.test.ts +1 -1
  113. package/src/document-ingest-foundation/events.ts +1 -1
  114. package/src/document-ingest-foundation/feature.ts +1 -1
  115. package/src/feature-toggles/__tests__/feature-toggles.integration.test.ts +1 -1
  116. package/src/feature-toggles/events.ts +1 -1
  117. package/src/feature-toggles/handlers/list.query.ts +1 -1
  118. package/src/feature-toggles/handlers/registered.query.ts +1 -1
  119. package/src/feature-toggles/handlers/set.write.ts +1 -1
  120. package/src/file-derivatives/handlers/public-variant.query.ts +1 -1
  121. package/src/file-foundation/__tests__/file-foundation.integration.test.ts +1 -1
  122. package/src/files-tenant-data/handlers/sweep-orphaned-derivatives.job.ts +1 -1
  123. package/src/folders/handlers/delete-folder.write.ts +1 -1
  124. package/src/folders/schemas.ts +1 -1
  125. package/src/form-draft/schemas.ts +1 -1
  126. package/src/inbound-mail-foundation/events.ts +1 -1
  127. package/src/inbound-mail-foundation/handlers/connect-account.write.ts +1 -1
  128. package/src/inbound-mail-foundation/handlers/disconnect-account.write.ts +1 -1
  129. package/src/inbound-mail-foundation/handlers/ingest-message.write.ts +1 -1
  130. package/src/inbound-mail-foundation/handlers/list-accounts.query.ts +1 -1
  131. package/src/inbound-mail-foundation/handlers/list-messages.query.ts +1 -1
  132. package/src/inbound-mail-foundation/handlers/update-account.write.ts +1 -1
  133. package/src/inbound-provider-imap/credential-document.ts +1 -1
  134. package/src/jobs/__tests__/jobs-catalog.integration.test.ts +1 -1
  135. package/src/jobs/__tests__/tenant-job-failures.integration.test.ts +1 -1
  136. package/src/jobs/events.ts +1 -1
  137. package/src/jobs/handlers/catalog.query.ts +1 -1
  138. package/src/jobs/handlers/detail.query.ts +1 -1
  139. package/src/jobs/handlers/list.query.ts +1 -1
  140. package/src/jobs/handlers/projection-rebuild.job.ts +1 -1
  141. package/src/jobs/handlers/reindex-entity.job.ts +1 -1
  142. package/src/jobs/handlers/retry.write.ts +1 -1
  143. package/src/jobs/handlers/tenant-failures.query.ts +1 -1
  144. package/src/jobs/handlers/trigger.write.ts +1 -1
  145. package/src/ledger/handlers/reports.query.ts +1 -1
  146. package/src/ledger/schemas.ts +1 -1
  147. package/src/mail-foundation/__tests__/mail-foundation.integration.test.ts +1 -1
  148. package/src/managed-pages/handlers/branding.query.ts +1 -1
  149. package/src/managed-pages/handlers/by-slug.query.ts +1 -1
  150. package/src/managed-pages/handlers/by-tenant-published.query.ts +1 -1
  151. package/src/managed-pages/handlers/set.write.ts +1 -1
  152. package/src/notes-history/changes.json +7 -0
  153. package/src/notes-history/schemas.ts +1 -1
  154. package/src/notes-history/web/notes-section.tsx +37 -36
  155. package/src/personal-access-tokens/feature.ts +10 -0
  156. package/src/personal-access-tokens/handlers/available-scopes.query.ts +1 -1
  157. package/src/personal-access-tokens/handlers/create.write.ts +1 -1
  158. package/src/personal-access-tokens/handlers/list.query.ts +1 -1
  159. package/src/personal-access-tokens/handlers/revoke.write.ts +18 -2
  160. package/src/personal-access-tokens/index.ts +7 -0
  161. package/src/personal-access-tokens/pat-revoked-event.ts +23 -0
  162. package/src/personal-access-tokens/revoke-for-user.ts +31 -0
  163. package/src/rate-limiting/__tests__/rate-limiting.integration.test.ts +1 -1
  164. package/src/rate-limiting/handlers/status.query.ts +1 -1
  165. package/src/readiness/handlers/status.query.ts +1 -1
  166. package/src/secrets/feature.ts +1 -1
  167. package/src/secrets/handlers/delete.write.ts +1 -1
  168. package/src/secrets/handlers/list.query.ts +1 -1
  169. package/src/secrets/handlers/set.write.ts +1 -1
  170. package/src/secrets/secrets-context.ts +1 -1
  171. package/src/seo/handlers/seo-config.query.ts +1 -1
  172. package/src/sessions/handlers/detail.query.ts +1 -1
  173. package/src/sessions/handlers/list.query.ts +1 -1
  174. package/src/sessions/handlers/mine.query.ts +1 -1
  175. package/src/sessions/handlers/revoke-all-for-user.write.ts +1 -1
  176. package/src/sessions/handlers/revoke-all-others.write.ts +1 -1
  177. package/src/sessions/handlers/revoke.write.ts +1 -1
  178. package/src/sessions/session-callbacks.ts +25 -1
  179. package/src/sessions/session-revoked-event.ts +6 -1
  180. package/src/shared/__tests__/row-bound-grant.integration.test.ts +1 -1
  181. package/src/step-dispatcher/mail-runner.ts +1 -1
  182. package/src/step-dispatcher/webhook-runner.ts +1 -1
  183. package/src/subscription-mollie/feature.ts +1 -1
  184. package/src/subscription-stripe/feature.ts +1 -1
  185. package/src/tags/schemas.ts +1 -1
  186. package/src/template-resolver/handlers/by-slug.query.ts +1 -1
  187. package/src/template-resolver/handlers/by-tenant.query.ts +1 -1
  188. package/src/template-resolver/handlers/collection-item.query.ts +1 -1
  189. package/src/template-resolver/handlers/collection-list.query.ts +1 -1
  190. package/src/template-resolver/handlers/collection-set.write.ts +1 -1
  191. package/src/template-resolver/handlers/find-by-id.query.ts +1 -1
  192. package/src/template-resolver/handlers/list.query.ts +1 -1
  193. package/src/template-resolver/handlers/set.write.ts +1 -1
  194. package/src/template-resolver/handlers/shared.ts +1 -1
  195. package/src/template-resolver/handlers/toggle-status.write.ts +1 -1
  196. package/src/template-resolver/handlers/upsert-tenant.write.ts +1 -1
  197. package/src/tenant/__tests__/tenant-timezone-boot.integration.test.ts +1 -1
  198. package/src/tenant/handlers/active-tenant-ids.query.ts +1 -1
  199. package/src/tenant/handlers/add-member.write.ts +1 -1
  200. package/src/tenant/handlers/cancel-invitation.write.ts +1 -1
  201. package/src/tenant/handlers/create.write.ts +1 -1
  202. package/src/tenant/handlers/invitations.query.ts +1 -1
  203. package/src/tenant/handlers/list.query.ts +1 -1
  204. package/src/tenant/handlers/me.query.ts +1 -1
  205. package/src/tenant/handlers/member-directory.query.ts +1 -1
  206. package/src/tenant/handlers/members.query.ts +1 -1
  207. package/src/tenant/handlers/memberships.query.ts +1 -1
  208. package/src/tenant/handlers/remove-member.write.ts +1 -1
  209. package/src/tenant/handlers/resolve-user-ids.query.ts +1 -1
  210. package/src/tenant/handlers/team-list.query.ts +1 -1
  211. package/src/tenant/handlers/tenant-directory.query.ts +1 -1
  212. package/src/tenant/handlers/toggle-enabled.write.ts +1 -1
  213. package/src/tenant/handlers/update-member-roles.write.ts +1 -1
  214. package/src/tenant/handlers/update.write.ts +1 -1
  215. package/src/tenant-handover/events.ts +1 -1
  216. package/src/tenant-handover/handlers/claim.write.ts +1 -1
  217. package/src/tenant-lifecycle/__tests__/tenant-lifecycle.integration.test.ts +8 -24
  218. package/src/tenant-lifecycle/events.ts +1 -1
  219. package/src/tenant-lifecycle/handlers/cancel-destruction.write.ts +1 -1
  220. package/src/tenant-lifecycle/handlers/request-destruction.write.ts +1 -1
  221. package/src/tenant-settings/tenant-defaults.ts +1 -1
  222. package/src/tier-engine/__tests__/tier-resolver.integration.test.ts +1 -1
  223. package/src/tier-engine/feature.ts +1 -1
  224. package/src/tier-engine/handlers/active-tier.query.ts +1 -1
  225. package/src/tier-engine/handlers/get-tenant-tier.query.ts +1 -1
  226. package/src/tier-engine/handlers/set-tenant-tier.write.ts +1 -1
  227. package/src/user/__tests__/user-global-tenancy.integration.test.ts +1 -1
  228. package/src/user/handlers/create.write.ts +1 -1
  229. package/src/user/handlers/find-for-auth.query.ts +1 -1
  230. package/src/user/handlers/me.query.ts +1 -1
  231. package/src/user/handlers/update.write.ts +1 -1
  232. package/src/user/roles-input-schema.ts +1 -1
  233. package/src/user/seeding.ts +29 -20
  234. package/src/user-data-rights/__tests__/boot-checks.test.ts +1 -1
  235. package/src/user-data-rights/changes.json +6 -0
  236. package/src/user-data-rights/feature.ts +1 -0
  237. package/src/user-data-rights/handlers/cancel-deletion.write.ts +1 -1
  238. package/src/user-data-rights/handlers/confirm-deletion-by-token.write.ts +1 -1
  239. package/src/user-data-rights/handlers/download-by-job.query.ts +1 -1
  240. package/src/user-data-rights/handlers/download-by-token.query.ts +1 -1
  241. package/src/user-data-rights/handlers/export-status.query.ts +1 -1
  242. package/src/user-data-rights/handlers/lift-restriction.write.ts +1 -1
  243. package/src/user-data-rights/handlers/list-download-attempts.query.ts +1 -1
  244. package/src/user-data-rights/handlers/my-audit-log.query.ts +1 -1
  245. package/src/user-data-rights/handlers/request-deletion-by-email.write.ts +1 -1
  246. package/src/user-data-rights/handlers/request-deletion.write.ts +1 -1
  247. package/src/user-data-rights/handlers/request-export.write.ts +1 -1
  248. package/src/user-data-rights/handlers/restrict-account.write.ts +1 -1
  249. package/src/user-data-rights/handlers/run-forget-cleanup.write.ts +1 -1
  250. package/src/user-data-rights-defaults/hooks/file-ref.userdata-hook.ts +8 -61
  251. package/src/user-profile/handlers/change-email.write.ts +1 -1
  252. package/src/workflow-runner/__tests__/pending-projection.integration.test.ts +1 -1
  253. package/src/workflow-runner/handlers/resume-run.write.ts +1 -1
@@ -4,7 +4,7 @@ import {
4
4
  defineWriteHandler,
5
5
  SYSTEM_TENANT_ID,
6
6
  } from "@cosmicdrift/kumiko-framework/engine";
7
- import { z } from "zod";
7
+ import * as z from "zod";
8
8
  import { hashPassword, verifyPassword } from "../../shared";
9
9
  import { UserHandlers, UserQueries } from "../../user";
10
10
  import { invalidCredentials } from "../errors";
@@ -4,7 +4,7 @@ import {
4
4
  UnprocessableError,
5
5
  writeFailure,
6
6
  } from "@cosmicdrift/kumiko-framework/errors";
7
- import { z } from "zod";
7
+ import * as z from "zod";
8
8
  import { AuthErrors } from "../constants";
9
9
  import { invalidUnlockToken } from "../errors";
10
10
  import { clearLockoutState } from "../lockout-store";
@@ -31,7 +31,7 @@ import {
31
31
  type TenantId,
32
32
  } from "@cosmicdrift/kumiko-framework/engine";
33
33
  import { InternalError, writeFailure } from "@cosmicdrift/kumiko-framework/errors";
34
- import { z } from "zod";
34
+ import * as z from "zod";
35
35
  import { decryptStoredPii, sessionLocaleField, sessionTimezoneField } from "../../shared";
36
36
  // kumiko-lint-ignore cross-feature-import invite-flow
37
37
  import {
@@ -23,7 +23,7 @@ import {
23
23
  type TenantId,
24
24
  } from "@cosmicdrift/kumiko-framework/engine";
25
25
  import { InternalError, writeFailure } from "@cosmicdrift/kumiko-framework/errors";
26
- import { z } from "zod";
26
+ import * as z from "zod";
27
27
  import { decryptStoredPii } from "../../shared";
28
28
  // kumiko-lint-ignore cross-feature-import invite-flow lebt in auth-email-password (Magic-Link), DB-row-owner ist tenant-feature
29
29
  import {
@@ -22,7 +22,7 @@ import { createEventStoreExecutor } from "@cosmicdrift/kumiko-framework/db";
22
22
  import { access, defineWriteHandler } from "@cosmicdrift/kumiko-framework/engine";
23
23
  import { InternalError, writeFailure } from "@cosmicdrift/kumiko-framework/errors";
24
24
  import { Temporal } from "temporal-polyfill";
25
- import { z } from "zod";
25
+ import * as z from "zod";
26
26
  // kumiko-lint-ignore cross-feature-import invite-flow lebt in auth-email-password (Magic-Link-Pattern), DB-row-owner ist tenant-feature
27
27
  import {
28
28
  INVITATION_STATUS,
@@ -31,7 +31,7 @@ import {
31
31
  type TenantId,
32
32
  } from "@cosmicdrift/kumiko-framework/engine";
33
33
  import { InternalError, writeFailure } from "@cosmicdrift/kumiko-framework/errors";
34
- import { z } from "zod";
34
+ import * as z from "zod";
35
35
  import { decryptStoredPii } from "../../shared";
36
36
  // kumiko-lint-ignore cross-feature-import invite-flow
37
37
  import {
@@ -10,7 +10,7 @@ import {
10
10
  } from "@cosmicdrift/kumiko-framework/engine";
11
11
  import type { WriteFailure } from "@cosmicdrift/kumiko-framework/errors";
12
12
  import { parseRoles } from "@cosmicdrift/kumiko-framework/utils";
13
- import { z } from "zod";
13
+ import * as z from "zod";
14
14
  import { verifyDummyPassword, verifyPassword } from "../../shared";
15
15
  import { USER_STATUS, UserQueries } from "../../user";
16
16
  import { type AuthUserRow, parseAuthUserRow } from "../auth-user-row";
@@ -1,5 +1,5 @@
1
1
  import { access, defineWriteHandler, stepsPipeline } from "@cosmicdrift/kumiko-framework/engine";
2
- import { z } from "zod";
2
+ import * as z from "zod";
3
3
 
4
4
  // Logout — JWT is stateless, so server-side we only return OK. A future
5
5
  // revocation list / session table can land here without changing the
@@ -1,6 +1,6 @@
1
1
  import { defineWriteHandler } from "@cosmicdrift/kumiko-framework/engine";
2
2
  import { UnprocessableError, writeFailure } from "@cosmicdrift/kumiko-framework/errors";
3
- import { z } from "zod";
3
+ import * as z from "zod";
4
4
  import { hashPassword } from "../../shared";
5
5
  import { AuthErrors } from "../constants";
6
6
  import { invalidResetToken } from "../errors";
@@ -1,5 +1,5 @@
1
1
  import { defineQueryHandler } from "@cosmicdrift/kumiko-framework/engine";
2
- import { z } from "zod";
2
+ import * as z from "zod";
3
3
  import { AUTH_SELF_REGISTRATION_FEATURE } from "../self-registration-toggle";
4
4
 
5
5
  // Anonymous-readable status for the (unauthenticated) signup page: lets it
@@ -29,7 +29,7 @@ import {
29
29
  import { ConflictError, InternalError, writeFailure } from "@cosmicdrift/kumiko-framework/errors";
30
30
  import { generateUniqueName } from "@cosmicdrift/kumiko-framework/random";
31
31
  import { generateId } from "@cosmicdrift/kumiko-framework/utils";
32
- import { z } from "zod";
32
+ import * as z from "zod";
33
33
  // kumiko-lint-ignore cross-feature-import signup-confirm reads tenants.key for slug-uniqueness check (TOCTOU + DB-unique-index zusammen)
34
34
  import { tenantTable } from "../../tenant/schema/tenant";
35
35
  import { invalidSignupToken, signupEmailAlreadyRegistered } from "../errors";
@@ -25,7 +25,7 @@ import { generateToken } from "@cosmicdrift/kumiko-framework/api";
25
25
  import { defineWriteHandler } from "@cosmicdrift/kumiko-framework/engine";
26
26
  import { InternalError, writeFailure } from "@cosmicdrift/kumiko-framework/errors";
27
27
  import { Temporal } from "temporal-polyfill";
28
- import { z } from "zod";
28
+ import * as z from "zod";
29
29
  import { AUTH_SIGNUP_DEFAULT_TTL_MINUTES } from "../constants";
30
30
  import type { AuthMailLocale } from "../email-templates";
31
31
  import { renderActivationEmail } from "../email-templates";
@@ -15,7 +15,7 @@
15
15
  import { createSystemUser, defineWriteHandler } from "@cosmicdrift/kumiko-framework/engine";
16
16
  import { UnprocessableError, writeFailure } from "@cosmicdrift/kumiko-framework/errors";
17
17
  import type { Temporal } from "temporal-polyfill";
18
- import { z } from "zod";
18
+ import * as z from "zod";
19
19
  import { UserQueries } from "../../user";
20
20
  import { type AuthUserRow, parseAuthUserRow } from "../auth-user-row";
21
21
  import type { AuthMailContent, AuthMailLocale, RenderTokenContentArgs } from "../email-templates";
@@ -1,6 +1,6 @@
1
1
  import { defineWriteHandler } from "@cosmicdrift/kumiko-framework/engine";
2
2
  import { UnprocessableError, writeFailure } from "@cosmicdrift/kumiko-framework/errors";
3
- import { z } from "zod";
3
+ import * as z from "zod";
4
4
  import { AuthErrors } from "../constants";
5
5
  import { invalidVerificationToken } from "../errors";
6
6
  import { verifyVerificationToken } from "../verification-token";
@@ -1,4 +1,4 @@
1
- import { z } from "zod";
1
+ import * as z from "zod";
2
2
 
3
3
  // Top-10k common-password list (SecLists, MIT license). Filtered to length // kumiko-lint-ignore comment-lang "MIT" false-positives the DE-word regex
4
4
  // >=8, since shorter entries are already rejected by `.min(8)` below (keeps
@@ -14,6 +14,7 @@
14
14
 
15
15
  import { fetchOne, selectMany } from "@cosmicdrift/kumiko-framework/bun-db";
16
16
  import {
17
+ configuredBlindIndexKey,
17
18
  configuredPiiSubjectKms,
18
19
  decryptPiiFieldValues,
19
20
  type LocalKeyKmsAdapter,
@@ -28,7 +29,7 @@ import { type SeedTenantHooks, seedTenant, seedTenantMembership } from "../tenan
28
29
  // kumiko-lint-ignore cross-feature-import signup create-only guard reads the user projection by email
29
30
  import { USER_STATUS, userTable } from "../user/schema/user";
30
31
  // kumiko-lint-ignore cross-feature-import auth-tests need user+tenant seed-helpers
31
- import { seedUser } from "../user/seeding";
32
+ import { reconcileSeededUserEmailVerified, seedUser } from "../user/seeding";
32
33
 
33
34
  // Re-export für ergonomische Single-Import-Site in tests/seed-scripts.
34
35
  // Das Auth-Feature ist der natürliche Aufrufer für "seed admin user mit
@@ -257,8 +258,8 @@ export async function seedAdmin(
257
258
  // seedAdminGuarded is a separate, additive boot-seed guard — NOT a change
258
259
  // to seedUser/seedAdmin/provisionSignupAccount, which also run on every
259
260
  // real self-signup request and can't afford a decrypt-scan fallback there.
260
- // Use this only where seedAdmin already runs (dev-boot / sample-server /
261
- // bootstrap scripts), never as a login or signup hot path.
261
+ // It's what runProdApp/runDevApp call for their admin boot-seed; keep it
262
+ // off the login/signup hot path.
262
263
 
263
264
  type ActiveUserRow = {
264
265
  readonly id: string;
@@ -332,10 +333,22 @@ export async function seedAdminGuarded(
332
333
  const kms = configuredPiiSubjectKms();
333
334
  if (kms === undefined) return seedAdmin(db, options);
334
335
 
336
+ // Without a bidx key every row seeded here gets a NULL email_bidx, which
337
+ // neither seedAdmin's lookup nor the partial unique index can ever see.
338
+ if (configuredBlindIndexKey() === undefined) {
339
+ throw new Error(
340
+ "seedAdminGuarded: a PII KMS is configured but no blind-index key — the email lookup would be blind and the seed would insert a duplicate admin. Configure KUMIKO_BLIND_INDEX_KEY.",
341
+ );
342
+ }
343
+
335
344
  const existingId = await findExistingUserIdForEmail(db, kms, options.email);
336
345
  if (existingId === undefined) return seedAdmin(db, options);
337
346
 
338
347
  const by = options.by ?? TestUsers.systemAdmin;
348
+ if (options.emailVerified === true) {
349
+ const existingRow = await fetchOne(db, userTable, { id: existingId });
350
+ if (existingRow) await reconcileSeededUserEmailVerified(db, existingRow, by);
351
+ }
339
352
  for (const m of options.memberships) {
340
353
  await seedTenant(db, { id: m.tenantId, key: m.tenantKey, name: m.tenantName, by });
341
354
  await seedTenantMembership(db, {
@@ -45,7 +45,7 @@ import {
45
45
  createTestEnvelopeCipher,
46
46
  resetTestTables,
47
47
  } from "@cosmicdrift/kumiko-framework/testing";
48
- import { z } from "zod";
48
+ import * as z from "zod";
49
49
  import { AuthHandlers } from "../../auth-email-password/constants";
50
50
  import { createAuthEmailPasswordFeature } from "../../auth-email-password/feature";
51
51
  import { createConfigFeature } from "../../config";
@@ -1,7 +1,7 @@
1
1
  import { createEventStoreExecutor } from "@cosmicdrift/kumiko-framework/db";
2
2
  import { defineWriteHandler } from "@cosmicdrift/kumiko-framework/engine";
3
3
  import { InternalError, writeFailure } from "@cosmicdrift/kumiko-framework/errors";
4
- import { z } from "zod";
4
+ import * as z from "zod";
5
5
  import { findUserMfaRow } from "../db/queries";
6
6
  import { invalidTotpCode, mfaNotEnabled } from "../errors";
7
7
  import { userMfaEntity, userMfaTable } from "../schema/user-mfa";
@@ -8,7 +8,7 @@ import {
8
8
  import { InternalError, writeFailure } from "@cosmicdrift/kumiko-framework/errors";
9
9
  import { parseRoles } from "@cosmicdrift/kumiko-framework/utils";
10
10
  import { Temporal } from "temporal-polyfill";
11
- import { z } from "zod";
11
+ import * as z from "zod";
12
12
  import { burnToken, sessionLocaleField, sessionTimezoneField } from "../../shared";
13
13
  import { USER_STATUS, UserQueries } from "../../user";
14
14
  import { base32Decode } from "../base32";
@@ -2,7 +2,7 @@ import { createEventStoreExecutor } from "@cosmicdrift/kumiko-framework/db";
2
2
  import { defineWriteHandler } from "@cosmicdrift/kumiko-framework/engine";
3
3
  import { InternalError, writeFailure } from "@cosmicdrift/kumiko-framework/errors";
4
4
  import { Temporal } from "temporal-polyfill";
5
- import { z } from "zod";
5
+ import * as z from "zod";
6
6
  import { burnToken } from "../../shared";
7
7
  import { base32Decode } from "../base32";
8
8
  import { findUserMfaRow } from "../db/queries";
@@ -1,6 +1,6 @@
1
1
  import { createTenantDb } from "@cosmicdrift/kumiko-framework/db";
2
2
  import { defineWriteHandler, type SessionUser } from "@cosmicdrift/kumiko-framework/engine";
3
- import { z } from "zod";
3
+ import * as z from "zod";
4
4
  import { base32Encode } from "../base32";
5
5
  import { MFA_SETUP_TOKEN_TTL_MINUTES } from "../constants";
6
6
  import { findUserMfaRow } from "../db/queries";
@@ -1,5 +1,5 @@
1
1
  import { defineWriteHandler } from "@cosmicdrift/kumiko-framework/engine";
2
- import { z } from "zod";
2
+ import * as z from "zod";
3
3
  import { UserQueries } from "../../user";
4
4
  import { base32Encode } from "../base32";
5
5
  import { MFA_SETUP_TOKEN_TTL_MINUTES } from "../constants";
@@ -1,7 +1,7 @@
1
1
  import { createEventStoreExecutor } from "@cosmicdrift/kumiko-framework/db";
2
2
  import { defineWriteHandler } from "@cosmicdrift/kumiko-framework/engine";
3
3
  import { InternalError, writeFailure } from "@cosmicdrift/kumiko-framework/errors";
4
- import { z } from "zod";
4
+ import * as z from "zod";
5
5
  import { findUserMfaRow } from "../db/queries";
6
6
  import { invalidTotpCode, mfaNotEnabled } from "../errors";
7
7
  import { generateRecoveryCodes, hashRecoveryCodes } from "../recovery-codes";
@@ -1,6 +1,6 @@
1
1
  import { fetchOne } from "@cosmicdrift/kumiko-framework/bun-db";
2
2
  import { defineQueryHandler } from "@cosmicdrift/kumiko-framework/engine";
3
- import { z } from "zod";
3
+ import * as z from "zod";
4
4
  import { userMfaTable } from "../schema/user-mfa";
5
5
 
6
6
  // "Is MFA enabled for me" — the one thing a settings screen needs before it
@@ -7,7 +7,7 @@ import {
7
7
  } from "@cosmicdrift/kumiko-framework/engine";
8
8
  import { InternalError, writeFailure } from "@cosmicdrift/kumiko-framework/errors";
9
9
  import { parseRoles } from "@cosmicdrift/kumiko-framework/utils";
10
- import { z } from "zod";
10
+ import * as z from "zod";
11
11
  import { burnToken, sessionLocaleField, sessionTimezoneField } from "../../shared";
12
12
  import { USER_STATUS, UserQueries } from "../../user";
13
13
  import { MFA_VERIFY_LOCKOUT_MINUTES, MFA_VERIFY_MAX_ATTEMPTS } from "../constants";
@@ -16,7 +16,7 @@
16
16
  import type { TenantDb } from "@cosmicdrift/kumiko-framework/db";
17
17
  import type { HandlerContext, TenantId } from "@cosmicdrift/kumiko-framework/engine";
18
18
  import { QnTypes, qn, SYSTEM_TENANT_ID, toKebab } from "@cosmicdrift/kumiko-framework/engine";
19
- import { z } from "zod";
19
+ import * as z from "zod";
20
20
  // kumiko-lint-ignore cross-feature-import SUBSCRIPTION_STRIPE_FEATURE is a plain string const in constants.ts (no imports); the barrel import (../subscription-stripe) would create a module cycle with billing-foundation via feature.ts → verify-webhook.ts, because billing-foundation/index.ts now re-exports billing-info-query.ts.
21
21
  import { SUBSCRIPTION_STRIPE_FEATURE } from "../subscription-stripe/constants";
22
22
  import { subscriptionAggregateId } from "./aggregate-id";
@@ -10,7 +10,7 @@
10
10
  // accounting-export, churn-analytics) listenen direkt auf den event-
11
11
  // type ohne payload-discriminator.
12
12
 
13
- import { z } from "zod";
13
+ import * as z from "zod";
14
14
  import { BILLING_FOUNDATION_FEATURE, SubscriptionStatuses } from "./constants";
15
15
 
16
16
  // Aggregate-type für den event-store. Eine subscription pro Tenant ist
@@ -15,7 +15,7 @@
15
15
  // resolved den Tenant.
16
16
 
17
17
  import type { WriteHandlerDef } from "@cosmicdrift/kumiko-framework/engine";
18
- import { z } from "zod";
18
+ import * as z from "zod";
19
19
  import { SUBSCRIPTION_PROVIDER_EXTENSION } from "../constants";
20
20
  import type { SubscriptionProviderPlugin } from "../types";
21
21
 
@@ -15,7 +15,7 @@ import {
15
15
  decryptPiiFieldValues,
16
16
  } from "@cosmicdrift/kumiko-framework/crypto";
17
17
  import type { WriteHandlerDef } from "@cosmicdrift/kumiko-framework/engine";
18
- import { z } from "zod";
18
+ import * as z from "zod";
19
19
  import { subscriptionAggregateId } from "../aggregate-id";
20
20
  import { SUBSCRIPTION_PROVIDER_EXTENSION } from "../constants";
21
21
  import { SUBSCRIPTION_PII_FIELDS } from "../entities";
@@ -7,7 +7,7 @@ import {
7
7
  decryptPiiFieldValues,
8
8
  } from "@cosmicdrift/kumiko-framework/crypto";
9
9
  import type { QueryHandlerDef } from "@cosmicdrift/kumiko-framework/engine";
10
- import { z } from "zod";
10
+ import * as z from "zod";
11
11
  import { SUBSCRIPTION_PII_FIELDS } from "../entities";
12
12
  import { subscriptionsProjectionTable } from "../projection";
13
13
 
@@ -17,7 +17,7 @@ import {
17
17
  encryptPiiFieldValues,
18
18
  } from "@cosmicdrift/kumiko-framework/crypto";
19
19
  import type { WriteHandlerDef } from "@cosmicdrift/kumiko-framework/engine";
20
- import { z } from "zod";
20
+ import * as z from "zod";
21
21
  import { subscriptionAggregateId } from "../aggregate-id";
22
22
  import { SubscriptionEventTypes, SubscriptionStatuses } from "../constants";
23
23
  import { SUBSCRIPTION_PII_FIELDS, subscriptionEntity } from "../entities";
@@ -15,7 +15,7 @@ import {
15
15
  encryptPiiFieldValues,
16
16
  } from "@cosmicdrift/kumiko-framework/crypto";
17
17
  import type { WriteHandlerDef } from "@cosmicdrift/kumiko-framework/engine";
18
- import { z } from "zod";
18
+ import * as z from "zod";
19
19
  import { paymentAggregateId } from "../aggregate-id";
20
20
  import { PAYMENT_PII_FIELDS, paymentEntity } from "../entities";
21
21
  import {
@@ -23,7 +23,7 @@ import {
23
23
  unsafeCreateEntityTable,
24
24
  } from "@cosmicdrift/kumiko-framework/stack";
25
25
  import { resetTestTables } from "@cosmicdrift/kumiko-framework/testing";
26
- import { z } from "zod";
26
+ import * as z from "zod";
27
27
  import { CapCounterHandlers, CapCounterQueries } from "../constants";
28
28
  import {
29
29
  CapExceededError,
@@ -23,7 +23,7 @@ import {
23
23
  unsafeCreateEntityTable,
24
24
  } from "@cosmicdrift/kumiko-framework/stack";
25
25
  import { resetTestTables } from "@cosmicdrift/kumiko-framework/testing";
26
- import { z } from "zod";
26
+ import * as z from "zod";
27
27
  import { capCounterEntity } from "../entity";
28
28
  import { createStockCapGuard } from "../stock-cap-guard";
29
29
 
@@ -24,7 +24,7 @@ import {
24
24
  unsafeCreateEntityTable,
25
25
  } from "@cosmicdrift/kumiko-framework/stack";
26
26
  import { resetTestTables } from "@cosmicdrift/kumiko-framework/testing";
27
- import { z } from "zod";
27
+ import * as z from "zod";
28
28
  import { bookCapUsage, readRollingCapUsage } from "../book-cap-usage";
29
29
  import { CapCounterQueries } from "../constants";
30
30
  import type { SoftHitNotifier } from "../enforce-cap";
@@ -9,7 +9,7 @@ import {
9
9
  } from "@cosmicdrift/kumiko-framework/engine";
10
10
  import { eventsTable } from "@cosmicdrift/kumiko-framework/event-store";
11
11
  import { Temporal } from "temporal-polyfill";
12
- import { z } from "zod";
12
+ import * as z from "zod";
13
13
  import { capCounterAggregateId, rollingCapAggregateId } from "./aggregate-id";
14
14
  import { CAP_COUNTER_ROLLING_AGGREGATE_TYPE, ROLLING_INCREMENTED_EVENT_QN } from "./constants";
15
15
  import { capCounterEntity } from "./entity";
@@ -1,5 +1,5 @@
1
1
  import { createEntityExecutor, type QueryHandlerDef } from "@cosmicdrift/kumiko-framework/engine";
2
- import { z } from "zod";
2
+ import * as z from "zod";
3
3
  import { capCounterEntity } from "../entity";
4
4
 
5
5
  const { table } = createEntityExecutor("cap-counter", capCounterEntity);
@@ -19,7 +19,7 @@
19
19
  // N Tage aus diesem Stream.
20
20
 
21
21
  import type { WriteHandlerDef } from "@cosmicdrift/kumiko-framework/engine";
22
- import { z } from "zod";
22
+ import * as z from "zod";
23
23
  import { rollingCapAggregateId } from "../aggregate-id";
24
24
  import { CAP_COUNTER_ROLLING_AGGREGATE_TYPE, ROLLING_INCREMENTED_EVENT_QN } from "../constants";
25
25
 
@@ -1,5 +1,5 @@
1
1
  import type { WriteHandlerDef } from "@cosmicdrift/kumiko-framework/engine";
2
- import { z } from "zod";
2
+ import * as z from "zod";
3
3
  import { bookCapUsage } from "../book-cap-usage";
4
4
 
5
5
  const incrementSchema = z.object({
@@ -1,5 +1,5 @@
1
1
  import type { WriteHandlerDef } from "@cosmicdrift/kumiko-framework/engine";
2
- import { z } from "zod";
2
+ import * as z from "zod";
3
3
  import { markCapSoftWarned } from "../book-cap-usage";
4
4
 
5
5
  // mark-soft-warned — sets lastSoftWarnedAt on the counter so subsequent
@@ -6,7 +6,7 @@ import {
6
6
  type QueryHandlerDefinition,
7
7
  } from "@cosmicdrift/kumiko-framework/engine";
8
8
  import { InternalError } from "@cosmicdrift/kumiko-framework/errors";
9
- import { z } from "zod";
9
+ import * as z from "zod";
10
10
  import { tierAssignmentEntity } from "../../tier-engine";
11
11
  import { MY_CAPS_ACCESS_ROLES } from "../access";
12
12
  import type { CapSpec, CapUsageWithMeta } from "../types";
@@ -2,7 +2,7 @@ import { selectMany } from "@cosmicdrift/kumiko-framework/bun-db";
2
2
  import { buildEntityTable, decodeCursor, encodeCursor } from "@cosmicdrift/kumiko-framework/db";
3
3
  import { definePagedQueryHandler, MAX_LIST_LIMIT } from "@cosmicdrift/kumiko-framework/engine";
4
4
  import { InternalError, ValidationError } from "@cosmicdrift/kumiko-framework/errors";
5
- import { z } from "zod";
5
+ import * as z from "zod";
6
6
  import { subscriptionsProjectionTable } from "../../billing-foundation";
7
7
  import { tenantTable } from "../../tenant";
8
8
  import { tierAssignmentEntity } from "../../tier-engine";
@@ -1,7 +1,7 @@
1
1
  import { selectMany } from "@cosmicdrift/kumiko-framework/bun-db";
2
2
  import { defineQueryHandler } from "@cosmicdrift/kumiko-framework/engine";
3
3
  import { InternalError } from "@cosmicdrift/kumiko-framework/errors";
4
- import { z } from "zod";
4
+ import * as z from "zod";
5
5
  import { tenantTable } from "../../tenant";
6
6
 
7
7
  type TenantRow = { readonly id: string; readonly name: string };
@@ -1,6 +1,6 @@
1
1
  import { selectMany } from "@cosmicdrift/kumiko-framework/bun-db";
2
2
  import { defineQueryHandler } from "@cosmicdrift/kumiko-framework/engine";
3
- import { z } from "zod";
3
+ import * as z from "zod";
4
4
  import { inAppMessagesTable } from "../tables";
5
5
 
6
6
  export const inboxQuery = defineQueryHandler({
@@ -1,6 +1,6 @@
1
1
  import { updateMany } from "@cosmicdrift/kumiko-framework/bun-db";
2
2
  import { defineWriteHandler } from "@cosmicdrift/kumiko-framework/engine";
3
- import { z } from "zod";
3
+ import * as z from "zod";
4
4
  import { inAppMessagesTable } from "../tables";
5
5
 
6
6
  export const markAllReadWrite = defineWriteHandler({
@@ -1,7 +1,7 @@
1
1
  import { updateMany } from "@cosmicdrift/kumiko-framework/bun-db";
2
2
  import { defineWriteHandler } from "@cosmicdrift/kumiko-framework/engine";
3
3
  import { NotFoundError, writeFailure } from "@cosmicdrift/kumiko-framework/errors";
4
- import { z } from "zod";
4
+ import * as z from "zod";
5
5
  import { inAppMessagesTable } from "../tables";
6
6
 
7
7
  export const markReadWrite = defineWriteHandler({
@@ -1,6 +1,6 @@
1
1
  import { selectMany } from "@cosmicdrift/kumiko-framework/bun-db";
2
2
  import { defineQueryHandler } from "@cosmicdrift/kumiko-framework/engine";
3
- import { z } from "zod";
3
+ import * as z from "zod";
4
4
  import { inAppMessagesTable } from "../tables";
5
5
 
6
6
  export const unreadCountQuery = defineQueryHandler({
@@ -5,7 +5,7 @@ import {
5
5
  resolveComplianceProfile,
6
6
  } from "@cosmicdrift/kumiko-framework/compliance";
7
7
  import { defineQueryHandler } from "@cosmicdrift/kumiko-framework/engine";
8
- import { z } from "zod";
8
+ import * as z from "zod";
9
9
  import { parseComplianceProfileOverride } from "../_internal/parse-override";
10
10
  import { tenantComplianceProfileTable } from "../schema/profile-selection";
11
11
 
@@ -5,7 +5,7 @@ import {
5
5
  SELECTABLE_PROFILE_KEYS,
6
6
  } from "@cosmicdrift/kumiko-framework/compliance";
7
7
  import { defineQueryHandler } from "@cosmicdrift/kumiko-framework/engine";
8
- import { z } from "zod";
8
+ import * as z from "zod";
9
9
 
10
10
  // Liefert alle waehlbaren Compliance-Profile fuer das Tenant-Onboarding.
11
11
  // Pure In-Memory-Read der Constants — keine DB-Abfrage. Kein Caching
@@ -2,7 +2,7 @@ import { ROLES } from "@cosmicdrift/kumiko-framework/auth";
2
2
  import { fetchOne } from "@cosmicdrift/kumiko-framework/bun-db";
3
3
  import type { ComplianceProfileKey } from "@cosmicdrift/kumiko-framework/compliance";
4
4
  import { defineQueryHandler } from "@cosmicdrift/kumiko-framework/engine";
5
- import { z } from "zod";
5
+ import * as z from "zod";
6
6
  import { tenantComplianceProfileTable } from "../schema/profile-selection";
7
7
 
8
8
  // Onboarding banner trigger for tenant admin.
@@ -15,7 +15,7 @@ import {
15
15
  validationErrorFromZod,
16
16
  writeFailure,
17
17
  } from "@cosmicdrift/kumiko-framework/errors";
18
- import { z } from "zod";
18
+ import * as z from "zod";
19
19
  import {
20
20
  tenantComplianceProfileEntity,
21
21
  tenantComplianceProfileTable,
@@ -6,7 +6,7 @@ import {
6
6
  } from "@cosmicdrift/kumiko-framework/compliance";
7
7
  import { defineQueryHandler } from "@cosmicdrift/kumiko-framework/engine";
8
8
  import { getTemporal } from "@cosmicdrift/kumiko-framework/time";
9
- import { z } from "zod";
9
+ import * as z from "zod";
10
10
 
11
11
  // Public Sub-Processor-Liste — anonymous accessible (Memory:
12
12
  // project_anonymous_access). Matched die DSGVO Art. 28(2) Pflicht
@@ -1,7 +1,7 @@
1
1
  import { ROLES } from "@cosmicdrift/kumiko-framework/auth";
2
2
  import { defineQueryHandler, type TenantId } from "@cosmicdrift/kumiko-framework/engine";
3
3
  import { InternalError } from "@cosmicdrift/kumiko-framework/errors";
4
- import { z } from "zod";
4
+ import * as z from "zod";
5
5
  import { tenantComplianceProfileTable } from "../../compliance-profiles";
6
6
  import { tenantTable } from "../../tenant";
7
7
 
@@ -14,7 +14,7 @@ import {
14
14
  TestUsers,
15
15
  unsafePushTables,
16
16
  } from "@cosmicdrift/kumiko-framework/stack";
17
- import { z } from "zod";
17
+ import * as z from "zod";
18
18
  import { createSecretsContext } from "../../secrets/secrets-context";
19
19
  import { tenantSecretsTable } from "../../secrets/table";
20
20
  import { ConfigHandlers, ConfigQueries } from "../constants";
@@ -24,7 +24,7 @@ import {
24
24
  createTestEnvelopeCipher,
25
25
  expectErrorIncludes,
26
26
  } from "@cosmicdrift/kumiko-framework/testing";
27
- import { z } from "zod";
27
+ import * as z from "zod";
28
28
  import { ConfigHandlers, ConfigQueries } from "../constants";
29
29
  import { createConfigAccessor, createConfigAccessorFactory, createConfigFeature } from "../feature";
30
30
  import { type ConfigResolver, createConfigResolver, validateAppOverrides } from "../resolver";
@@ -11,7 +11,7 @@ import {
11
11
  type TestStack,
12
12
  unsafePushTables,
13
13
  } from "@cosmicdrift/kumiko-framework/stack";
14
- import { z } from "zod";
14
+ import * as z from "zod";
15
15
  import { createConfigAccessorFactory, createConfigFeature } from "../feature";
16
16
  import { createConfigResolver } from "../resolver";
17
17
  import { configValuesTable } from "../table";
@@ -4,7 +4,7 @@ import {
4
4
  defineQueryHandler,
5
5
  isEncryptedAtRest,
6
6
  } from "@cosmicdrift/kumiko-framework/engine";
7
- import { z } from "zod";
7
+ import * as z from "zod";
8
8
  import { requireConfigResolver, requireSystemDb } from "../feature";
9
9
  import { MASKED, redactInheritedCascade, shouldRedactInherited } from "../read-redaction";
10
10
  import { hasConfigAccess } from "../write-helpers";