@cosmicdrift/kumiko-framework 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 (451) hide show
  1. package/AGENTS.md +14 -1
  2. package/agents/examples/apex-surface-auth.md +2 -1
  3. package/agents/examples/app-config.md +98 -0
  4. package/agents/examples/auth-mfa.md +72 -0
  5. package/agents/examples/chat-channels.md +1 -1
  6. package/agents/examples/compose-stacks.md +188 -0
  7. package/agents/examples/env-composition.md +278 -0
  8. package/agents/examples/host-routing.md +181 -0
  9. package/agents/examples/inbound-mail-triage.md +1 -1
  10. package/agents/examples/legal-pages.md +52 -3
  11. package/agents/examples/managed-config.md +1 -0
  12. package/agents/examples/managed-pages.md +1 -0
  13. package/agents/examples/prod-boot-options.md +180 -0
  14. package/agents/examples/relations.md +4 -0
  15. package/agents/examples/secrets-demo.md +4 -2
  16. package/agents/examples/security-baseline.md +20 -17
  17. package/agents/examples.md +6 -1
  18. package/agents/features.md +14 -2
  19. package/dist/api/anonymous-cookie.d.ts +1 -1
  20. package/dist/api/anonymous-live-entities.d.ts +1 -1
  21. package/dist/api/auth-middleware.d.ts +2 -2
  22. package/dist/api/auth-routes.d.ts +7 -7
  23. package/dist/api/extra-route.d.ts +2 -2
  24. package/dist/api/index.d.ts +37 -37
  25. package/dist/api/jwt.d.ts +1 -1
  26. package/dist/api/observability-middleware.d.ts +1 -1
  27. package/dist/api/readiness.d.ts +1 -1
  28. package/dist/api/redis-sse-broker.d.ts +2 -2
  29. package/dist/api/request-context.d.ts +1 -1
  30. package/dist/api/request-id-middleware.d.ts +3 -3
  31. package/dist/api/route-registrars.d.ts +4 -4
  32. package/dist/api/routes.d.ts +1 -1
  33. package/dist/api/server.d.ts +16 -16
  34. package/dist/api/sse-broker.d.ts +1 -1
  35. package/dist/api/sse-route.d.ts +1 -1
  36. package/dist/api/websocket-route.d.ts +3 -3
  37. package/dist/auth/index.d.ts +2 -2
  38. package/dist/compliance/duration-spec.d.ts +2 -2
  39. package/dist/compliance/index.d.ts +6 -6
  40. package/dist/compliance/profiles.d.ts +1 -1
  41. package/dist/config/index.d.ts +44 -0
  42. package/dist/config/index.js +61 -0
  43. package/dist/crypto/blind-index.d.ts +1 -1
  44. package/dist/crypto/event-pii.d.ts +1 -1
  45. package/dist/crypto/in-memory-kms-adapter.d.ts +1 -1
  46. package/dist/crypto/index.d.ts +11 -11
  47. package/dist/crypto/is-self-pii-field.d.ts +1 -1
  48. package/dist/crypto/kms-wiring.d.ts +2 -2
  49. package/dist/crypto/owner-transition-rekey.d.ts +1 -1
  50. package/dist/crypto/pg-kms-adapter.d.ts +1 -1
  51. package/dist/crypto/pii-field-encryption.d.ts +4 -4
  52. package/dist/crypto/request-kms-cache.d.ts +1 -1
  53. package/dist/crypto/subject-resolver.d.ts +3 -3
  54. package/dist/db/apply-entity-event.d.ts +4 -4
  55. package/dist/db/assert-exists-in.d.ts +4 -4
  56. package/dist/db/blind-index-cleanup.d.ts +2 -2
  57. package/dist/db/collect-table-metas.d.ts +2 -2
  58. package/dist/db/compound-types.d.ts +1 -1
  59. package/dist/db/config-seed.d.ts +5 -5
  60. package/dist/db/connection.d.ts +1 -6
  61. package/dist/db/connection.js +15 -4
  62. package/dist/db/dialect.d.ts +1 -1
  63. package/dist/db/eagerload.d.ts +3 -3
  64. package/dist/db/entity-field-encryption.d.ts +3 -3
  65. package/dist/db/entity-field-encryption.js +3 -1
  66. package/dist/db/entity-table-from-registry.d.ts +3 -3
  67. package/dist/db/entity-table-meta.d.ts +3 -3
  68. package/dist/db/event-store-executor-context.d.ts +9 -9
  69. package/dist/db/event-store-executor-read.d.ts +2 -2
  70. package/dist/db/event-store-executor-write.d.ts +2 -2
  71. package/dist/db/event-store-executor.d.ts +8 -8
  72. package/dist/db/feature-table-sources.d.ts +1 -1
  73. package/dist/db/index.d.ts +39 -39
  74. package/dist/db/located-timestamp.d.ts +1 -1
  75. package/dist/db/lock-guard.d.ts +2 -2
  76. package/dist/db/migrate-generator.d.ts +2 -2
  77. package/dist/db/migrate-runner.d.ts +1 -1
  78. package/dist/db/money.d.ts +1 -1
  79. package/dist/db/parent-ref-clause.d.ts +4 -4
  80. package/dist/db/projection-registry-binding.d.ts +1 -1
  81. package/dist/db/queries/advisory-lock.d.ts +1 -1
  82. package/dist/db/queries/backfill-pii.d.ts +2 -2
  83. package/dist/db/queries/ddl.d.ts +1 -1
  84. package/dist/db/queries/entity-read.d.ts +1 -1
  85. package/dist/db/queries/es-ops.d.ts +1 -1
  86. package/dist/db/queries/event-consumer.d.ts +2 -2
  87. package/dist/db/queries/event-store-admin.d.ts +1 -1
  88. package/dist/db/queries/event-store-transfer.d.ts +1 -1
  89. package/dist/db/queries/event-store.d.ts +1 -1
  90. package/dist/db/queries/pii-backfill-state.d.ts +1 -1
  91. package/dist/db/queries/projection-rebuild.d.ts +1 -1
  92. package/dist/db/queries/raw-sql.d.ts +1 -1
  93. package/dist/db/queries/seed-context.d.ts +2 -2
  94. package/dist/db/queries/shadow-swap.d.ts +3 -3
  95. package/dist/db/queries/table-ops.d.ts +1 -1
  96. package/dist/db/queries/test-stack.d.ts +2 -2
  97. package/dist/db/query.d.ts +3 -3
  98. package/dist/db/rebuild-marker.d.ts +1 -1
  99. package/dist/db/reference-data.d.ts +3 -3
  100. package/dist/db/render-ddl.d.ts +1 -1
  101. package/dist/db/replay-migration-sql.d.ts +1 -1
  102. package/dist/db/retired-framework-tables.d.ts +1 -1
  103. package/dist/db/schema-inspection.d.ts +1 -1
  104. package/dist/db/table-builder.d.ts +4 -4
  105. package/dist/db/table-push.d.ts +3 -3
  106. package/dist/db/tenant-db-runner.d.ts +2 -2
  107. package/dist/db/tenant-db.d.ts +7 -9
  108. package/dist/db/tenant-db.js +2 -12
  109. package/dist/derivatives/derivatives-context.d.ts +3 -3
  110. package/dist/derivatives/field-variants.d.ts +1 -1
  111. package/dist/derivatives/index.d.ts +6 -6
  112. package/dist/engine/access.d.ts +1 -1
  113. package/dist/engine/active-membership.d.ts +2 -2
  114. package/dist/engine/boot-validator/access-declarations.d.ts +1 -1
  115. package/dist/engine/boot-validator/access-roles.d.ts +1 -1
  116. package/dist/engine/boot-validator/action-wiring.d.ts +1 -1
  117. package/dist/engine/boot-validator/api-ext.d.ts +1 -1
  118. package/dist/engine/boot-validator/boot-check.d.ts +1 -1
  119. package/dist/engine/boot-validator/card-meta-overflow.d.ts +1 -1
  120. package/dist/engine/boot-validator/config-deps.d.ts +1 -1
  121. package/dist/engine/boot-validator/detail-screens.d.ts +2 -2
  122. package/dist/engine/boot-validator/entity-handler.d.ts +1 -1
  123. package/dist/engine/boot-validator/entity-list-screens.d.ts +1 -1
  124. package/dist/engine/boot-validator/gdpr-storage.d.ts +1 -1
  125. package/dist/engine/boot-validator/global-tenancy.d.ts +1 -1
  126. package/dist/engine/boot-validator/handler-field-references.d.ts +1 -1
  127. package/dist/engine/boot-validator/i18n-keys.d.ts +1 -1
  128. package/dist/engine/boot-validator/index.d.ts +7 -7
  129. package/dist/engine/boot-validator/nav.d.ts +1 -1
  130. package/dist/engine/boot-validator/ownership.d.ts +2 -2
  131. package/dist/engine/boot-validator/parent-ref.d.ts +1 -1
  132. package/dist/engine/boot-validator/pii-retention.d.ts +2 -2
  133. package/dist/engine/boot-validator/projection-list-screens.d.ts +1 -1
  134. package/dist/engine/boot-validator/query-output-columns.d.ts +1 -1
  135. package/dist/engine/boot-validator/query-refs.d.ts +1 -1
  136. package/dist/engine/boot-validator/record-owned.d.ts +1 -1
  137. package/dist/engine/boot-validator/screens.d.ts +2 -2
  138. package/dist/engine/boot-validator/security-baseline.d.ts +1 -1
  139. package/dist/engine/boot-validator/selector-owner-panels.d.ts +1 -1
  140. package/dist/engine/boot-validator/transfer-graph.d.ts +2 -2
  141. package/dist/engine/boot-validator/url-prefill-fields.d.ts +1 -1
  142. package/dist/engine/boot-validator/workspaces.d.ts +1 -1
  143. package/dist/engine/boot-validator.d.ts +1 -1
  144. package/dist/engine/bridge-stub.d.ts +1 -1
  145. package/dist/engine/build-app-schema.d.ts +2 -2
  146. package/dist/engine/build-config-feature-schema.d.ts +5 -5
  147. package/dist/engine/build-target.d.ts +2 -2
  148. package/dist/engine/changeset-changes.d.ts +1 -1
  149. package/dist/engine/codemod/index.d.ts +2 -2
  150. package/dist/engine/config-helpers.d.ts +1 -1
  151. package/dist/engine/constants.d.ts +1 -1
  152. package/dist/engine/create-app.d.ts +2 -2
  153. package/dist/engine/cross-tenant.d.ts +2 -2
  154. package/dist/engine/dedupe-features.d.ts +1 -1
  155. package/dist/engine/define-feature.d.ts +1 -1
  156. package/dist/engine/define-feature.js +2 -2
  157. package/dist/engine/define-handler.d.ts +4 -4
  158. package/dist/engine/define-step.d.ts +1 -1
  159. package/dist/engine/define-workflow.d.ts +2 -2
  160. package/dist/engine/effective-features.d.ts +1 -1
  161. package/dist/engine/embedded-derived.d.ts +1 -1
  162. package/dist/engine/entity-handlers.d.ts +6 -5
  163. package/dist/engine/entity-handlers.js +6 -3
  164. package/dist/engine/event-def.d.ts +15 -0
  165. package/dist/engine/event-def.js +123 -0
  166. package/dist/engine/event-helpers.d.ts +1 -1
  167. package/dist/engine/extension-names.d.ts +8 -8
  168. package/dist/engine/extension-selector-plugins.d.ts +2 -2
  169. package/dist/engine/extensions/escape-hatch-usage.d.ts +1 -1
  170. package/dist/engine/extensions/storage-provider.d.ts +1 -1
  171. package/dist/engine/extensions/tenant-data.d.ts +3 -3
  172. package/dist/engine/extensions/tenant-resource.d.ts +2 -2
  173. package/dist/engine/extensions/user-data.d.ts +2 -2
  174. package/dist/engine/factories.d.ts +1 -1
  175. package/dist/engine/feature-ast/extractors/ai-steps.d.ts +2 -2
  176. package/dist/engine/feature-ast/extractors/events.d.ts +2 -2
  177. package/dist/engine/feature-ast/extractors/handlers.d.ts +4 -4
  178. package/dist/engine/feature-ast/extractors/hooks.d.ts +5 -5
  179. package/dist/engine/feature-ast/extractors/index.d.ts +14 -14
  180. package/dist/engine/feature-ast/extractors/jobs-routes.d.ts +3 -3
  181. package/dist/engine/feature-ast/extractors/projections-screens.d.ts +3 -3
  182. package/dist/engine/feature-ast/extractors/round1.d.ts +2 -2
  183. package/dist/engine/feature-ast/extractors/round2.d.ts +2 -2
  184. package/dist/engine/feature-ast/extractors/round3.d.ts +4 -4
  185. package/dist/engine/feature-ast/extractors/round5.d.ts +2 -2
  186. package/dist/engine/feature-ast/extractors/round6.d.ts +2 -2
  187. package/dist/engine/feature-ast/extractors/shared.d.ts +2 -2
  188. package/dist/engine/feature-ast/index.d.ts +16 -16
  189. package/dist/engine/feature-ast/parse.d.ts +2 -2
  190. package/dist/engine/feature-ast/patch.d.ts +1 -1
  191. package/dist/engine/feature-ast/patcher.d.ts +15 -15
  192. package/dist/engine/feature-ast/pattern-change-schema.d.ts +10 -10
  193. package/dist/engine/feature-ast/patterns.d.ts +15 -15
  194. package/dist/engine/feature-ast/render.d.ts +1 -1
  195. package/dist/engine/feature-builder-state.d.ts +5 -5
  196. package/dist/engine/feature-config-events-jobs.d.ts +3 -3
  197. package/dist/engine/feature-config-events-jobs.js +8 -130
  198. package/dist/engine/feature-entity-handlers.d.ts +4 -4
  199. package/dist/engine/feature-entity-handlers.js +11 -5
  200. package/dist/engine/feature-manifest.d.ts +1 -1
  201. package/dist/engine/feature-ui-extensions.d.ts +7 -7
  202. package/dist/engine/feature-ui-extensions.js +2 -2
  203. package/dist/engine/field-access.d.ts +1 -1
  204. package/dist/engine/field-helpers.d.ts +1 -1
  205. package/dist/engine/handler-helpers.d.ts +1 -1
  206. package/dist/engine/index.d.ts +89 -88
  207. package/dist/engine/index.js +1 -0
  208. package/dist/engine/instruction-fields.d.ts +1 -1
  209. package/dist/engine/object-form.d.ts +1 -1
  210. package/dist/engine/object-form.js +5 -6
  211. package/dist/engine/ownership.d.ts +3 -3
  212. package/dist/engine/pattern-library/index.d.ts +2 -2
  213. package/dist/engine/pattern-library/library.d.ts +2 -2
  214. package/dist/engine/pattern-library/mixed-schemas.d.ts +1 -1
  215. package/dist/engine/pattern-library/opaque-schemas.d.ts +1 -1
  216. package/dist/engine/pattern-library/shared-fields.d.ts +1 -1
  217. package/dist/engine/pattern-library/static-schemas.d.ts +1 -1
  218. package/dist/engine/pattern-library/types.d.ts +1 -1
  219. package/dist/engine/personal-data-fields.d.ts +2 -2
  220. package/dist/engine/pipeline.d.ts +2 -2
  221. package/dist/engine/project-app-schema-for-roles.d.ts +1 -1
  222. package/dist/engine/projection-helpers.d.ts +4 -4
  223. package/dist/engine/read-claim.d.ts +1 -1
  224. package/dist/engine/registry-facade.d.ts +2 -2
  225. package/dist/engine/registry-ingest.d.ts +2 -2
  226. package/dist/engine/registry-state.d.ts +2 -2
  227. package/dist/engine/registry-validate.d.ts +3 -3
  228. package/dist/engine/registry.d.ts +1 -1
  229. package/dist/engine/resolve-config-or-param.d.ts +2 -2
  230. package/dist/engine/role-assignment.d.ts +1 -1
  231. package/dist/engine/run-in.d.ts +1 -1
  232. package/dist/engine/run-pipeline.d.ts +3 -3
  233. package/dist/engine/schema-builder.d.ts +1 -1
  234. package/dist/engine/screen-filter-ops.d.ts +1 -1
  235. package/dist/engine/screen-helpers.d.ts +2 -2
  236. package/dist/engine/soft-delete-cleanup.d.ts +2 -2
  237. package/dist/engine/steps/_event-match.d.ts +1 -1
  238. package/dist/engine/steps/_no-return-guard.d.ts +1 -1
  239. package/dist/engine/steps/_read-source.d.ts +4 -4
  240. package/dist/engine/steps/_resolver-utils.d.ts +1 -1
  241. package/dist/engine/steps/aggregate-append-event.d.ts +1 -1
  242. package/dist/engine/steps/aggregate-create.d.ts +2 -2
  243. package/dist/engine/steps/aggregate-update.d.ts +3 -3
  244. package/dist/engine/steps/branch.d.ts +1 -1
  245. package/dist/engine/steps/call-feature.d.ts +2 -2
  246. package/dist/engine/steps/compute.d.ts +1 -1
  247. package/dist/engine/steps/for-each.d.ts +1 -1
  248. package/dist/engine/steps/mail-send.d.ts +1 -1
  249. package/dist/engine/steps/read-find-many.d.ts +2 -2
  250. package/dist/engine/steps/read-find-one.d.ts +2 -2
  251. package/dist/engine/steps/retry.d.ts +1 -1
  252. package/dist/engine/steps/return.d.ts +2 -2
  253. package/dist/engine/steps/unsafe-projection-delete.d.ts +2 -2
  254. package/dist/engine/steps/unsafe-projection-upsert.d.ts +1 -1
  255. package/dist/engine/steps/wait-for-event.d.ts +1 -1
  256. package/dist/engine/steps/wait.d.ts +1 -1
  257. package/dist/engine/steps/webhook-send.d.ts +1 -1
  258. package/dist/engine/strip-disabled-features-from-app-schema.d.ts +4 -4
  259. package/dist/engine/system-user.d.ts +2 -2
  260. package/dist/engine/template-variables.d.ts +1 -1
  261. package/dist/engine/tier-resolver-extension.d.ts +4 -4
  262. package/dist/engine/transfer-adjacency.d.ts +1 -1
  263. package/dist/engine/types/index.d.ts +6 -6
  264. package/dist/engine/validate-projection-allowlist.d.ts +1 -1
  265. package/dist/engine/validation.d.ts +1 -1
  266. package/dist/entrypoint/index.d.ts +12 -12
  267. package/dist/env/dry-run.d.ts +14 -1
  268. package/dist/env/dry-run.js +50 -0
  269. package/dist/env/index.d.ts +54 -16
  270. package/dist/env/index.js +76 -7
  271. package/dist/errors/classes.d.ts +3 -3
  272. package/dist/errors/docs-url.d.ts +1 -1
  273. package/dist/errors/index.d.ts +18 -18
  274. package/dist/errors/member-resolution.d.ts +1 -1
  275. package/dist/errors/serialize.d.ts +2 -2
  276. package/dist/errors/subject-erased.d.ts +1 -1
  277. package/dist/errors/to-kumiko-error.d.ts +1 -1
  278. package/dist/errors/write-error-info.d.ts +1 -1
  279. package/dist/errors/zod-bridge.d.ts +1 -1
  280. package/dist/es-ops/context.d.ts +4 -4
  281. package/dist/es-ops/index.d.ts +4 -4
  282. package/dist/es-ops/operations-schema.d.ts +1 -1
  283. package/dist/es-ops/runner.d.ts +3 -3
  284. package/dist/es-ops/runner.js +9 -1
  285. package/dist/es-ops/types.d.ts +2 -2
  286. package/dist/event-store/admin-api.d.ts +3 -3
  287. package/dist/event-store/archive.d.ts +2 -2
  288. package/dist/event-store/event-store.d.ts +2 -2
  289. package/dist/event-store/events-schema.d.ts +1 -1
  290. package/dist/event-store/index.d.ts +15 -15
  291. package/dist/event-store/provenance-append.d.ts +3 -3
  292. package/dist/event-store/rebuild-dead-letter.d.ts +2 -2
  293. package/dist/event-store/row-to-stored-event.d.ts +2 -2
  294. package/dist/event-store/snapshot.d.ts +2 -2
  295. package/dist/event-store/tenant-db-append.d.ts +2 -2
  296. package/dist/event-store/transfer.d.ts +3 -3
  297. package/dist/event-store/upcaster-dead-letter.d.ts +2 -2
  298. package/dist/event-store/upcaster.d.ts +3 -3
  299. package/dist/files/assert-file-refs-belong-to-tenant.d.ts +2 -2
  300. package/dist/files/bind-pending-file-refs.d.ts +3 -3
  301. package/dist/files/create-file-ref-from-bytes.d.ts +4 -4
  302. package/dist/files/create-file-ref.d.ts +3 -3
  303. package/dist/files/dispose-removed-file-refs.d.ts +2 -2
  304. package/dist/files/feature.d.ts +3 -3
  305. package/dist/files/file-handle.d.ts +1 -1
  306. package/dist/files/file-ref-entity.d.ts +1 -1
  307. package/dist/files/file-ref-table.d.ts +1 -1
  308. package/dist/files/file-routes.d.ts +5 -5
  309. package/dist/files/in-memory-provider.d.ts +1 -1
  310. package/dist/files/index.d.ts +20 -20
  311. package/dist/files/load-save-file-refs.d.ts +2 -2
  312. package/dist/files/local-provider.d.ts +1 -1
  313. package/dist/files/provider-resolver.d.ts +5 -5
  314. package/dist/files/purge-expired-file-ref-bytes.d.ts +2 -2
  315. package/dist/files/record-read-check.d.ts +1 -1
  316. package/dist/files/record-write-check.d.ts +3 -3
  317. package/dist/files/storage-tracking.d.ts +2 -2
  318. package/dist/files/types.d.ts +1 -1
  319. package/dist/files/zip-stream.d.ts +1 -1
  320. package/dist/i18n/index.d.ts +4 -4
  321. package/dist/i18n/mail-registry.d.ts +1 -1
  322. package/dist/i18n/required-surface-keys.d.ts +1 -1
  323. package/dist/i18n/settings-hub-keys.d.ts +1 -1
  324. package/dist/internal/stack-support.d.ts +12 -12
  325. package/dist/internal/testing.d.ts +4 -4
  326. package/dist/jobs/index.d.ts +2 -2
  327. package/dist/jobs/job-runner.d.ts +1 -1
  328. package/dist/jobs/max-per-tenant.d.ts +1 -1
  329. package/dist/lifecycle/index.d.ts +2 -2
  330. package/dist/lifecycle/lifecycle.d.ts +1 -1
  331. package/dist/lifecycle/signal-handlers.d.ts +1 -1
  332. package/dist/logging/index.d.ts +4 -4
  333. package/dist/logging/pino-logger.d.ts +1 -1
  334. package/dist/logging/utils.d.ts +1 -1
  335. package/dist/migrations/index.d.ts +4 -4
  336. package/dist/migrations/kumiko-drift.d.ts +1 -1
  337. package/dist/migrations/pending-rebuilds.d.ts +5 -5
  338. package/dist/migrations/pii-event-backfill.d.ts +4 -4
  339. package/dist/migrations/projection-table-index.d.ts +1 -1
  340. package/dist/observability/console-provider.d.ts +1 -1
  341. package/dist/observability/context.d.ts +1 -1
  342. package/dist/observability/escape-hatch-report.d.ts +3 -3
  343. package/dist/observability/fallback.d.ts +1 -1
  344. package/dist/observability/index.d.ts +16 -16
  345. package/dist/observability/metric-validator.d.ts +1 -1
  346. package/dist/observability/metrics-handle.d.ts +1 -1
  347. package/dist/observability/metrics-wiring.d.ts +2 -2
  348. package/dist/observability/noop-provider.d.ts +1 -1
  349. package/dist/observability/prometheus-meter.d.ts +1 -1
  350. package/dist/observability/recording-meter.d.ts +1 -1
  351. package/dist/observability/recording-tracer.d.ts +1 -1
  352. package/dist/observability/redis-wrapper.d.ts +1 -1
  353. package/dist/observability/sensitive-filter.d.ts +1 -1
  354. package/dist/observability/standard-metrics.d.ts +1 -1
  355. package/dist/pipeline/active-membership.d.ts +4 -4
  356. package/dist/pipeline/append-event-core.d.ts +3 -3
  357. package/dist/pipeline/auth-claims-resolver.d.ts +2 -2
  358. package/dist/pipeline/cascade-handler.d.ts +3 -3
  359. package/dist/pipeline/dispatch-batch.d.ts +2 -2
  360. package/dist/pipeline/dispatch-query.d.ts +4 -4
  361. package/dist/pipeline/dispatch-shared.d.ts +17 -17
  362. package/dist/pipeline/dispatch-stream.d.ts +2 -2
  363. package/dist/pipeline/dispatch-write.d.ts +4 -4
  364. package/dist/pipeline/dispatcher-utils.d.ts +2 -2
  365. package/dist/pipeline/dispatcher.d.ts +12 -12
  366. package/dist/pipeline/event-consumer-state.d.ts +1 -1
  367. package/dist/pipeline/event-dispatcher-admin.d.ts +1 -1
  368. package/dist/pipeline/event-dispatcher-delivery.d.ts +7 -7
  369. package/dist/pipeline/event-dispatcher.d.ts +7 -7
  370. package/dist/pipeline/event-retention.d.ts +1 -1
  371. package/dist/pipeline/handler-access-error.d.ts +2 -2
  372. package/dist/pipeline/index.d.ts +42 -42
  373. package/dist/pipeline/irreversible-operation-gate.d.ts +1 -1
  374. package/dist/pipeline/lifecycle-pipeline.d.ts +2 -2
  375. package/dist/pipeline/member-read-only-transaction.d.ts +2 -2
  376. package/dist/pipeline/member-reader.d.ts +5 -5
  377. package/dist/pipeline/msp-rebuild.d.ts +4 -4
  378. package/dist/pipeline/multi-stream-apply-context.d.ts +3 -3
  379. package/dist/pipeline/notify-scope.d.ts +3 -3
  380. package/dist/pipeline/pending-gap-ranges.d.ts +2 -2
  381. package/dist/pipeline/pre-handler-gates.d.ts +3 -3
  382. package/dist/pipeline/pre-transaction-reservations.d.ts +4 -4
  383. package/dist/pipeline/projection-rebuild.d.ts +3 -3
  384. package/dist/pipeline/projection-state.d.ts +1 -1
  385. package/dist/pipeline/projections-runner.d.ts +3 -3
  386. package/dist/pipeline/projections-runner.js +3 -4
  387. package/dist/pipeline/system-hooks.d.ts +4 -4
  388. package/dist/pipeline/system-identity-switch.d.ts +3 -3
  389. package/dist/pipeline/tenant-timezone-cache.d.ts +1 -1
  390. package/dist/pipeline/write-origin.d.ts +3 -3
  391. package/dist/pipeline/write-result-masking.d.ts +2 -2
  392. package/dist/random/index.d.ts +2 -2
  393. package/dist/rate-limit/bucket.d.ts +1 -1
  394. package/dist/rate-limit/index.d.ts +3 -3
  395. package/dist/rate-limit/middleware.d.ts +3 -3
  396. package/dist/redis/cache-sync-bus.d.ts +2 -2
  397. package/dist/redis/cache-sync-topics.d.ts +1 -1
  398. package/dist/redis/index.d.ts +8 -8
  399. package/dist/redis/pubsub-signal.d.ts +1 -1
  400. package/dist/schema-cli.d.ts +1 -1
  401. package/dist/schema-cli.js +21 -2
  402. package/dist/search/derive-search-adapter-config.d.ts +2 -2
  403. package/dist/search/in-memory-adapter.d.ts +1 -1
  404. package/dist/search/index.d.ts +6 -6
  405. package/dist/search/meilisearch-adapter.d.ts +2 -2
  406. package/dist/search/purge-subject.d.ts +4 -4
  407. package/dist/search/reindex-entity.d.ts +3 -3
  408. package/dist/secrets/dek-cache.d.ts +1 -1
  409. package/dist/secrets/env-master-key-provider.d.ts +1 -1
  410. package/dist/secrets/env-master-key-provider.js +26 -11
  411. package/dist/secrets/envelope-cipher.d.ts +2 -2
  412. package/dist/secrets/envelope.d.ts +1 -1
  413. package/dist/secrets/index.d.ts +9 -9
  414. package/dist/secrets/rotation.d.ts +1 -1
  415. package/dist/secrets/stored-envelope.d.ts +1 -1
  416. package/dist/seeding/entity-seed.d.ts +1 -1
  417. package/dist/seeding/index.d.ts +3 -3
  418. package/dist/seeding/seed-users.d.ts +1 -1
  419. package/dist/time/index.d.ts +6 -6
  420. package/dist/ui-types/app-schema.d.ts +5 -5
  421. package/dist/ui-types/index.d.ts +23 -23
  422. package/dist/upgrade-cli.js +13 -3
  423. package/dist/utils/index.d.ts +9 -9
  424. package/package.json +19 -66
  425. package/presets/biome-app.json +80 -0
  426. package/presets/tsconfig.app.json +19 -0
  427. package/src/changes.json +84 -2
  428. package/src/scripts/codemod/README.md +18 -0
  429. package/src/scripts/codemod/codemod-support.ts +1 -1
  430. package/src/scripts/codemod/db-factory.ts +1 -1
  431. package/src/scripts/codemod/feature-factory.ts +1 -1
  432. package/src/scripts/codemod/import-extensions.ts +118 -0
  433. package/src/scripts/codemod/migrate-cross-tenant.ts +2 -2
  434. package/src/scripts/codemod/migrate-db-raw.ts +1 -1
  435. package/src/scripts/codemod/migrate-open-to-all.ts +1 -1
  436. package/src/scripts/codemod/object-form.ts +1 -1
  437. package/src/scripts/codemod/s3-imports.ts +1 -1
  438. package/src/scripts/codemod/tenant-db-options.ts +1 -1
  439. package/src/scripts/codemod/testing-move.ts +2 -2
  440. package/dist/db/bun-db-deprecated.d.ts +0 -10
  441. package/dist/db/bun-db-deprecated.js +0 -5
  442. package/dist/stack/index.d.ts +0 -10
  443. package/dist/stack/index.js +0 -11
  444. package/dist/testing/e2e-generator.d.ts +0 -5
  445. package/dist/testing/e2e-generator.js +0 -5
  446. package/dist/testing/handler-context.d.ts +0 -5
  447. package/dist/testing/handler-context.js +0 -5
  448. package/dist/testing/index.d.ts +0 -10
  449. package/dist/testing/index.js +0 -10
  450. package/dist/testing/real-providers.d.ts +0 -5
  451. package/dist/testing/real-providers.js +0 -5
@@ -1,5 +1,5 @@
1
1
  /// <reference types="temporal-polyfill/global" preserve="true" />
2
- import type { DbConnection } from "../db/connection.js";
2
+ import type { DbConnection } from "../db/connection.ts";
3
3
  export type PruneEventsOptions = {
4
4
  readonly olderThan?: Temporal.Instant;
5
5
  readonly olderThanDays?: number;
@@ -1,3 +1,3 @@
1
- import type { SessionUser } from "../engine/types/index.js";
2
- import { type KumikoError } from "../errors/index.js";
1
+ import type { SessionUser } from "../engine/types/index.ts";
2
+ import { type KumikoError } from "../errors/index.ts";
3
3
  export declare function handlerAccessError(user: Pick<SessionUser, "roles">, type: string): KumikoError;
@@ -1,42 +1,42 @@
1
- export type { EscapeHatchReportWindow } from "../observability/escape-hatch-report.js";
2
- export { createEscapeHatchReporter, createEscapeHatchReportWindow, ESCAPE_HATCH_USED_SIGNAL, fallbackEscapeHatchReporter, flushEscapeHatchAudits, reportEscapeHatchUse, UNATTRIBUTED_ACTOR, withEscapeHatchAuditScope, } from "../observability/escape-hatch-report.js";
3
- export { normalizePayloadBucketValue } from "../rate-limit/bucket.js";
4
- export type { AppendDomainEventCoreDeps } from "./append-event-core.js";
5
- export { appendDomainEventCore } from "./append-event-core.js";
6
- export type { ResolveAuthClaimsArgs } from "./auth-claims-resolver.js";
7
- export { resolveAuthClaims } from "./auth-claims-resolver.js";
8
- export { createCascadeDeleteHook } from "./cascade-handler.js";
9
- export type { Dispatcher } from "./dispatcher.js";
10
- export { createDispatcher, dispatcherToWriteRef } from "./dispatcher.js";
11
- export type { FailedWriteResult } from "./dispatcher-utils.js";
12
- export { isFailedWriteResult } from "./dispatcher-utils.js";
13
- export type { DistributedLock } from "./distributed-lock.js";
14
- export { createDistributedLock } from "./distributed-lock.js";
15
- export type { EntityCache, EntityCacheOptions } from "./entity-cache.js";
16
- export { createEntityCache } from "./entity-cache.js";
17
- export type { ConsumerStatus, PendingGapEntry } from "./event-consumer-state.js";
18
- export { ConsumerStatuses, createEventConsumerStateTable, eventConsumerStateTable, SHARED_INSTANCE_SENTINEL, } from "./event-consumer-state.js";
19
- export type { EventDedup } from "./event-dedup.js";
20
- export { createEventDedup } from "./event-dedup.js";
21
- export type { ConsumerProgress, ConsumerRecoveryState, DispatcherPassResult, EventConsumer, EventConsumerBatchHandler, EventConsumerHandler, EventDispatcher, EventDispatcherOptions, } from "./event-dispatcher.js";
22
- export { createEventDispatcher, disableConsumer, enableConsumer, getAllConsumerProgress, getConsumerState, listConsumersWithState, restartConsumer, skipPoisonEvent, } from "./event-dispatcher.js";
23
- export type { ConsumerCursor } from "./event-dispatcher-delivery.js";
24
- export { selectConsumerCursorForUpdate } from "./event-dispatcher-delivery.js";
25
- export type { PruneEventsOptions, PruneEventsResult } from "./event-retention.js";
26
- export { ConsumerLagError, pruneEvents } from "./event-retention.js";
27
- export type { IdempotencyGuard } from "./idempotency.js";
28
- export { createIdempotencyGuard } from "./idempotency.js";
29
- export { assertInstructionFieldWriteAllowed, assertIrreversibleOperationAllowed, isIrreversibleEntityVerb, } from "./irreversible-operation-gate.js";
30
- export type { LifecycleHooks, SystemHookDef, SystemHooks } from "./lifecycle-pipeline.js";
31
- export { createLifecycleHooks } from "./lifecycle-pipeline.js";
32
- export type { MspRebuildDeps } from "./msp-rebuild.js";
33
- export { rebuildMultiStreamProjection } from "./msp-rebuild.js";
34
- export type { MultiStreamApplyContext, MultiStreamApplyContextDeps, } from "./multi-stream-apply-context.js";
35
- export { createMultiStreamApplyContext } from "./multi-stream-apply-context.js";
36
- export { assertNotifyTargetsOwnTenant, createDeferringNotify } from "./notify-scope.js";
37
- export type { ProjectionProgress, RebuildResult } from "./projection-rebuild.js";
38
- export { getAllProjectionProgress, getProjectionState, listProjectionsWithState, rebuildProjection, } from "./projection-rebuild.js";
39
- export type { ProjectionStatus } from "./projection-state.js";
40
- export { createProjectionStateTable, ProjectionStatuses, projectionStateTable, } from "./projection-state.js";
41
- export { runProjectionsForEvent } from "./projections-runner.js";
42
- export { ACCESS_INVALIDATION_CONSUMER_NAME, createAccessInvalidationEventConsumer, createSearchEventConsumer, createSseBroadcastEventConsumer, SEARCH_CONSUMER_NAME, SSE_BROADCAST_CONSUMER_NAME, } from "./system-hooks.js";
1
+ export type { EscapeHatchReportWindow } from "../observability/escape-hatch-report.ts";
2
+ export { createEscapeHatchReporter, createEscapeHatchReportWindow, ESCAPE_HATCH_USED_SIGNAL, fallbackEscapeHatchReporter, flushEscapeHatchAudits, reportEscapeHatchUse, UNATTRIBUTED_ACTOR, withEscapeHatchAuditScope, } from "../observability/escape-hatch-report.ts";
3
+ export { normalizePayloadBucketValue } from "../rate-limit/bucket.ts";
4
+ export type { AppendDomainEventCoreDeps } from "./append-event-core.ts";
5
+ export { appendDomainEventCore } from "./append-event-core.ts";
6
+ export type { ResolveAuthClaimsArgs } from "./auth-claims-resolver.ts";
7
+ export { resolveAuthClaims } from "./auth-claims-resolver.ts";
8
+ export { createCascadeDeleteHook } from "./cascade-handler.ts";
9
+ export type { Dispatcher } from "./dispatcher.ts";
10
+ export { createDispatcher, dispatcherToWriteRef } from "./dispatcher.ts";
11
+ export type { FailedWriteResult } from "./dispatcher-utils.ts";
12
+ export { isFailedWriteResult } from "./dispatcher-utils.ts";
13
+ export type { DistributedLock } from "./distributed-lock.ts";
14
+ export { createDistributedLock } from "./distributed-lock.ts";
15
+ export type { EntityCache, EntityCacheOptions } from "./entity-cache.ts";
16
+ export { createEntityCache } from "./entity-cache.ts";
17
+ export type { ConsumerStatus, PendingGapEntry } from "./event-consumer-state.ts";
18
+ export { ConsumerStatuses, createEventConsumerStateTable, eventConsumerStateTable, SHARED_INSTANCE_SENTINEL, } from "./event-consumer-state.ts";
19
+ export type { EventDedup } from "./event-dedup.ts";
20
+ export { createEventDedup } from "./event-dedup.ts";
21
+ export type { ConsumerProgress, ConsumerRecoveryState, DispatcherPassResult, EventConsumer, EventConsumerBatchHandler, EventConsumerHandler, EventDispatcher, EventDispatcherOptions, } from "./event-dispatcher.ts";
22
+ export { createEventDispatcher, disableConsumer, enableConsumer, getAllConsumerProgress, getConsumerState, listConsumersWithState, restartConsumer, skipPoisonEvent, } from "./event-dispatcher.ts";
23
+ export type { ConsumerCursor } from "./event-dispatcher-delivery.ts";
24
+ export { selectConsumerCursorForUpdate } from "./event-dispatcher-delivery.ts";
25
+ export type { PruneEventsOptions, PruneEventsResult } from "./event-retention.ts";
26
+ export { ConsumerLagError, pruneEvents } from "./event-retention.ts";
27
+ export type { IdempotencyGuard } from "./idempotency.ts";
28
+ export { createIdempotencyGuard } from "./idempotency.ts";
29
+ export { assertInstructionFieldWriteAllowed, assertIrreversibleOperationAllowed, isIrreversibleEntityVerb, } from "./irreversible-operation-gate.ts";
30
+ export type { LifecycleHooks, SystemHookDef, SystemHooks } from "./lifecycle-pipeline.ts";
31
+ export { createLifecycleHooks } from "./lifecycle-pipeline.ts";
32
+ export type { MspRebuildDeps } from "./msp-rebuild.ts";
33
+ export { rebuildMultiStreamProjection } from "./msp-rebuild.ts";
34
+ export type { MultiStreamApplyContext, MultiStreamApplyContextDeps, } from "./multi-stream-apply-context.ts";
35
+ export { createMultiStreamApplyContext } from "./multi-stream-apply-context.ts";
36
+ export { assertNotifyTargetsOwnTenant, createDeferringNotify } from "./notify-scope.ts";
37
+ export type { ProjectionProgress, RebuildResult } from "./projection-rebuild.ts";
38
+ export { getAllProjectionProgress, getProjectionState, listProjectionsWithState, rebuildProjection, } from "./projection-rebuild.ts";
39
+ export type { ProjectionStatus } from "./projection-state.ts";
40
+ export { createProjectionStateTable, ProjectionStatuses, projectionStateTable, } from "./projection-state.ts";
41
+ export { runProjectionsForEvent } from "./projections-runner.ts";
42
+ export { ACCESS_INVALIDATION_CONSUMER_NAME, createAccessInvalidationEventConsumer, createSearchEventConsumer, createSseBroadcastEventConsumer, SEARCH_CONSUMER_NAME, SSE_BROADCAST_CONSUMER_NAME, } from "./system-hooks.ts";
@@ -1,4 +1,4 @@
1
- import type { EntityDefinition } from "../engine/types/index.js";
1
+ import type { EntityDefinition } from "../engine/types/index.ts";
2
2
  export declare function isIrreversibleEntityVerb(verb: "delete" | "forget", entity: EntityDefinition): boolean;
3
3
  export declare function assertIrreversibleOperationAllowed(operation: string): void;
4
4
  export declare function assertInstructionFieldWriteAllowed(entityName: string, verb: "create" | "update", writtenFieldNames: readonly string[], instructionFieldNames: readonly string[]): void;
@@ -1,5 +1,5 @@
1
- import type { AppContext, DeleteContext, HookPhase, PostDeleteBatchHookFn, PostDeleteHookFn, PostSaveBatchHookFn, PostSaveHookFn, PreDeleteHookFn, PreSaveHookFn, Registry, SaveContext } from "../engine/types/index.js";
2
- import type { EventDedup } from "./event-dedup.js";
1
+ import type { AppContext, DeleteContext, HookPhase, PostDeleteBatchHookFn, PostDeleteHookFn, PostSaveBatchHookFn, PostSaveHookFn, PreDeleteHookFn, PreSaveHookFn, Registry, SaveContext } from "../engine/types/index.ts";
2
+ import type { EventDedup } from "./event-dedup.ts";
3
3
  export type SystemHookDef<TFn> = {
4
4
  readonly name: string;
5
5
  readonly priority: number;
@@ -1,3 +1,3 @@
1
- import type { DbTx } from "../db/connection.js";
2
- import { type DispatchContext } from "./dispatch-shared.js";
1
+ import type { DbTx } from "../db/connection.ts";
2
+ import { type DispatchContext } from "./dispatch-shared.ts";
3
3
  export declare function runInMemberReadOnlyTransaction<T>(ctx: DispatchContext, tx: DbTx | undefined, fn: (readOnlyTx: DbTx) => Promise<T>): Promise<T>;
@@ -1,7 +1,7 @@
1
- import type { DbTx } from "../db/connection.js";
2
- import type { TenantId } from "../engine/types/identifiers.js";
3
- import type { MemberReader } from "../engine/types/index.js";
4
- import { type ActiveMembershipPolicy } from "./active-membership.js";
5
- import { type DispatchContext } from "./dispatch-shared.js";
1
+ import type { DbTx } from "../db/connection.ts";
2
+ import type { TenantId } from "../engine/types/identifiers.ts";
3
+ import type { MemberReader } from "../engine/types/index.ts";
4
+ import { type ActiveMembershipPolicy } from "./active-membership.ts";
5
+ import { type DispatchContext } from "./dispatch-shared.ts";
6
6
  export declare const BACKGROUND_READ_POLICY: ActiveMembershipPolicy;
7
7
  export declare function createMemberReaderFn(ctx: DispatchContext, tenantId: TenantId, tx?: DbTx): MemberReader;
@@ -1,7 +1,7 @@
1
- import type { DbConnection } from "../db/connection.js";
2
- import type { Registry } from "../engine/types/index.js";
3
- import type { Meter } from "../observability/types/metric.js";
4
- import type { RebuildResult } from "./projection-rebuild.js";
1
+ import type { DbConnection } from "../db/connection.ts";
2
+ import type { Registry } from "../engine/types/index.ts";
3
+ import type { Meter } from "../observability/types/metric.ts";
4
+ import type { RebuildResult } from "./projection-rebuild.ts";
5
5
  export type MspRebuildDeps = {
6
6
  readonly db: DbConnection;
7
7
  readonly registry: Registry;
@@ -1,9 +1,9 @@
1
1
  import type { DerivativesContext } from "@cosmicdrift/kumiko-types/derivatives-types";
2
2
  import type { MultiStreamApplyContext } from "@cosmicdrift/kumiko-types/multi-stream-apply-context-types";
3
3
  import type { SecretsContext } from "@cosmicdrift/kumiko-types/secrets-types";
4
- import type { DbRunner } from "../db/connection.js";
5
- import type { Registry, TenantId } from "../engine/types/index.js";
6
- import type { FileContext } from "../files/file-handle.js";
4
+ import type { DbRunner } from "../db/connection.ts";
5
+ import type { Registry, TenantId } from "../engine/types/index.ts";
6
+ import type { FileContext } from "../files/file-handle.ts";
7
7
  export type { MultiStreamApplyContext } from "@cosmicdrift/kumiko-types/multi-stream-apply-context-types";
8
8
  export type MultiStreamApplyContextDeps = {
9
9
  readonly registry: Registry;
@@ -1,6 +1,6 @@
1
- import type { TenantId } from "../engine/types/identifiers.js";
2
- import type { NotifyFn, NotifyOptions, Registry } from "../engine/types/index.js";
3
- import type { AfterCommitHook } from "./dispatcher-utils.js";
1
+ import type { TenantId } from "../engine/types/identifiers.ts";
2
+ import type { NotifyFn, NotifyOptions, Registry } from "../engine/types/index.ts";
3
+ import type { AfterCommitHook } from "./dispatcher-utils.ts";
4
4
  export declare function assertNotifyTargetsOwnTenant(options: NotifyOptions, tenantId: TenantId): void;
5
5
  type DeferringNotifyDeps = {
6
6
  readonly registry: Pick<Registry, "getAllNotifications"> | undefined;
@@ -1,5 +1,5 @@
1
- import type { PendingIdRange } from "../db/queries/event-store.js";
2
- import type { PendingGapEntry } from "./event-consumer-state.js";
1
+ import type { PendingIdRange } from "../db/queries/event-store.ts";
2
+ import type { PendingGapEntry } from "./event-consumer-state.ts";
3
3
  export declare function toIdRanges(gaps: readonly PendingGapEntry[]): PendingIdRange[];
4
4
  export declare function rangeContainsId(range: PendingGapEntry, id: bigint): boolean;
5
5
  export declare function isRangeFullyCoveredByFetch(range: PendingGapEntry, truncated: boolean, maxFetchedId: bigint | null): boolean;
@@ -1,6 +1,6 @@
1
- import type { SessionUser, WriteHandlerDef } from "../engine/types/index.js";
2
- import { type WriteFailure } from "../errors/index.js";
3
- import type { DispatchContext } from "./dispatch-shared.js";
1
+ import type { SessionUser, WriteHandlerDef } from "../engine/types/index.ts";
2
+ import { type WriteFailure } from "../errors/index.ts";
3
+ import type { DispatchContext } from "./dispatch-shared.ts";
4
4
  export type PreHandlerGateMode = "charge" | "recheck";
5
5
  export type PreHandlerGateResult = {
6
6
  readonly isSuccess: true;
@@ -1,8 +1,8 @@
1
1
  import type { ReservationHandle } from "@cosmicdrift/kumiko-types/handlers";
2
- import type { SessionUser, WriteHandlerDef } from "../engine/types/index.js";
3
- import { type WriteErrorInfo } from "../errors/index.js";
4
- import type { BatchCommand, DispatchContext } from "./dispatch-shared.js";
5
- import type { WriteOrigin } from "./write-origin.js";
2
+ import type { SessionUser, WriteHandlerDef } from "../engine/types/index.ts";
3
+ import { type WriteErrorInfo } from "../errors/index.ts";
4
+ import type { BatchCommand, DispatchContext } from "./dispatch-shared.ts";
5
+ import type { WriteOrigin } from "./write-origin.ts";
6
6
  type ReservationConfirm = ReservationHandle["confirmInTransaction"];
7
7
  export type ConsumedReservation = {
8
8
  readonly confirmInTransaction: ReservationConfirm | undefined;
@@ -1,7 +1,7 @@
1
1
  /// <reference types="temporal-polyfill/global" preserve="true" />
2
- import type { DbConnection } from "../db/connection.js";
3
- import type { Registry } from "../engine/types/index.js";
4
- import type { Meter } from "../observability/types/metric.js";
2
+ import type { DbConnection } from "../db/connection.ts";
3
+ import type { Registry } from "../engine/types/index.ts";
4
+ import type { Meter } from "../observability/types/metric.ts";
5
5
  export declare const REBUILD_BATCH_SIZE = 1000;
6
6
  export type RebuildResult = {
7
7
  readonly projection: string;
@@ -1,4 +1,4 @@
1
- import type { DbConnection } from "../db/connection.js";
1
+ import type { DbConnection } from "../db/connection.ts";
2
2
  export declare const projectionStateTable: import("@cosmicdrift/kumiko-types/schema-table-types").SchemaTable;
3
3
  export declare const ProjectionStatuses: {
4
4
  readonly idle: "idle";
@@ -1,6 +1,6 @@
1
- import type { DbRunner } from "../db/index.js";
2
- import type { LifecycleResult, Registry } from "../engine/types/index.js";
3
- import type { StoredEvent } from "../event-store/index.js";
1
+ import type { DbRunner } from "../db/index.ts";
2
+ import type { LifecycleResult, Registry } from "../engine/types/index.ts";
3
+ import type { StoredEvent } from "../event-store/index.ts";
4
4
  export declare function runProjections(result: LifecycleResult, registry: Registry, runner: DbRunner | undefined): Promise<void>;
5
5
  export declare function hasLiveProjectionsForEvent(event: StoredEvent, registry: Registry): boolean;
6
6
  export declare function runProjectionsForEvent(event: StoredEvent, registry: Registry, tx: DbRunner): Promise<void>;
@@ -12,16 +12,15 @@ import { InternalError } from "../errors/index.js";
12
12
  // through the dispatcher gets its projections, no opt-in needed.
13
13
  //
14
14
  // Contracts:
15
- // - Projections receive the exact StoredEvent from the executor. If you
16
- // hand-craft a SaveContext (tests, non-executor writes), just don't set
17
- // `event` and the runner no-ops.
15
+ // - Projections receive the exact StoredEvent from the executor.
18
16
  // - `runner` is the caller's already-resolved DbRunner — projections-runner
19
17
  // has no TenantDb access of its own to derive one from.
20
18
  // - Apply-function throws bubble up unchanged. The dispatcher wraps the
21
19
  // whole lifecycle in a try/catch that rolls the tx back; the event is
22
20
  // gone from the events table just like a rolled-back state change.
23
21
  export async function runProjections(result, registry, runner) {
24
- // skip: hand-crafted result with no event — nothing to project
22
+ // skip: isLifecycleResult only checks `kind`, so an untyped handler result
23
+ // shaped like a lifecycle result can still arrive without its event
25
24
  if (!result.event)
26
25
  return;
27
26
  if (!runner) {
@@ -1,7 +1,7 @@
1
- import { type SseBroker } from "../api/sse-broker.js";
2
- import type { EntityId, JobRunnerRef, Registry, TenantId } from "../engine/types/index.js";
3
- import type { SearchAdapter, SearchDocument } from "../search/types.js";
4
- import type { EventConsumer } from "./event-dispatcher.js";
1
+ import { type SseBroker } from "../api/sse-broker.ts";
2
+ import type { EntityId, JobRunnerRef, Registry, TenantId } from "../engine/types/index.ts";
3
+ import type { SearchAdapter, SearchDocument } from "../search/types.ts";
4
+ import type { EventConsumer } from "./event-dispatcher.ts";
5
5
  export declare const SEARCH_CONSUMER_NAME = "system:consumer:search";
6
6
  export type SearchOperation = {
7
7
  readonly kind: "index";
@@ -1,6 +1,6 @@
1
- import type { TenantId } from "../engine/types/identifiers.js";
2
- import type { ActiveMembershipResult, EscapeHatchDeclaration, EscapeHatchReporter, HandlerContext, LifecycleHookFn, MemberReader, SessionUser, WriteResult } from "../engine/types/index.js";
3
- import { AccessDeniedError } from "../errors/index.js";
1
+ import type { TenantId } from "../engine/types/identifiers.ts";
2
+ import type { ActiveMembershipResult, EscapeHatchDeclaration, EscapeHatchReporter, HandlerContext, LifecycleHookFn, MemberReader, SessionUser, WriteResult } from "../engine/types/index.ts";
3
+ import { AccessDeniedError } from "../errors/index.ts";
4
4
  export type QueryAsFn = (user: SessionUser, qn: string, payload: unknown) => Promise<unknown>;
5
5
  export type WriteAsFn = (user: SessionUser, qn: string, payload: unknown) => Promise<WriteResult>;
6
6
  export type ResolveActiveMembershipFn = (userId: string, tenantId: TenantId) => Promise<ActiveMembershipResult>;
@@ -1,4 +1,4 @@
1
- import type { TenantId } from "../engine/types/identifiers.js";
1
+ import type { TenantId } from "../engine/types/identifiers.ts";
2
2
  export type TenantTimezoneCacheOptions = {
3
3
  readonly ttlMs?: number;
4
4
  readonly maxEntries?: number;
@@ -1,7 +1,7 @@
1
1
  import { isPersonalDataGated, type WriteOrigin } from "@cosmicdrift/kumiko-types/event-store-types";
2
- import { type PersonalDataGate } from "../db/tenant-db.js";
3
- import type { Registry, SessionUser } from "../engine/types/index.js";
4
- import { AccessDeniedError } from "../errors/index.js";
2
+ import { type PersonalDataGate } from "../db/tenant-db.ts";
3
+ import type { Registry, SessionUser } from "../engine/types/index.ts";
4
+ import { AccessDeniedError } from "../errors/index.ts";
5
5
  export { isPersonalDataGated, type WriteOrigin };
6
6
  export declare function effectiveWriteOrigin(root: WriteOrigin, inherited?: WriteOrigin): WriteOrigin;
7
7
  export declare function parseWriteOrigin(value: unknown): WriteOrigin | undefined;
@@ -1,5 +1,5 @@
1
- import type { WriteResult } from "../engine/types/index.js";
2
- import type { BatchCommand, BatchResult, DispatchContext } from "./dispatch-shared.js";
1
+ import type { WriteResult } from "../engine/types/index.ts";
2
+ import type { BatchCommand, BatchResult, DispatchContext } from "./dispatch-shared.ts";
3
3
  type EntityLookup = Pick<DispatchContext["registry"], "getHandlerEntity" | "getEntity">;
4
4
  export declare function maskWriteResultForClient(registry: EntityLookup, handlerType: string, result: WriteResult): WriteResult;
5
5
  export declare function maskBatchResultForClient(registry: EntityLookup, commands: readonly BatchCommand[], batch: BatchResult): BatchResult;
@@ -1,2 +1,2 @@
1
- export { type AdjNounNameOptions, type GenerateUniqueNameOptions, generateAdjNounName, generateNoConfusableId, generateUniqueName, } from "./generate.js";
2
- export { ADJECTIVES, NOUNS } from "./words.js";
1
+ export { type AdjNounNameOptions, type GenerateUniqueNameOptions, generateAdjNounName, generateNoConfusableId, generateUniqueName, } from "./generate.ts";
2
+ export { ADJECTIVES, NOUNS } from "./words.ts";
@@ -1,4 +1,4 @@
1
- import type { PayloadBucketNormalization, RateLimitOption, SessionUser } from "../engine/types/index.js";
1
+ import type { PayloadBucketNormalization, RateLimitOption, SessionUser } from "../engine/types/index.ts";
2
2
  export type BucketContext = {
3
3
  readonly handlerName: string;
4
4
  readonly user: SessionUser;
@@ -1,3 +1,3 @@
1
- export { type BucketContext, type BucketResult, buildBucketKey, buildPayloadBucketKey, createPayloadDigest, normalizePayloadBucketValue, } from "./bucket.js";
2
- export { type AuthEndpointRateLimitOptions, authEndpointRateLimit, type GlobalIpRateLimitOptions, globalIpRateLimit, type HttpRouteRateLimitOptions, httpRouteRateLimit, } from "./middleware.js";
3
- export { createRateLimitResolver, type RateLimitConfig, type RateLimitDecision, type RateLimitResolver, type RateLimitResolverOptions, } from "./resolver.js";
1
+ export { type BucketContext, type BucketResult, buildBucketKey, buildPayloadBucketKey, createPayloadDigest, normalizePayloadBucketValue, } from "./bucket.ts";
2
+ export { type AuthEndpointRateLimitOptions, authEndpointRateLimit, type GlobalIpRateLimitOptions, globalIpRateLimit, type HttpRouteRateLimitOptions, httpRouteRateLimit, } from "./middleware.ts";
3
+ export { createRateLimitResolver, type RateLimitConfig, type RateLimitDecision, type RateLimitResolver, type RateLimitResolverOptions, } from "./resolver.ts";
@@ -1,7 +1,7 @@
1
1
  import type { Context, MiddlewareHandler } from "hono";
2
- import { type ClientIpResolver } from "../api/client-ip.js";
3
- import type { HttpRouteRateLimit } from "../engine/types/http-route.js";
4
- import type { RateLimitResolver } from "./resolver.js";
2
+ import { type ClientIpResolver } from "../api/client-ip.ts";
3
+ import type { HttpRouteRateLimit } from "../engine/types/http-route.ts";
4
+ import type { RateLimitResolver } from "./resolver.ts";
5
5
  export type GlobalIpRateLimitOptions = {
6
6
  readonly resolver: RateLimitResolver;
7
7
  readonly limit?: number;
@@ -1,6 +1,6 @@
1
1
  import type { CacheSyncBus, ClosableCacheSyncBus } from "@cosmicdrift/kumiko-types/cache-sync-types";
2
- import { type RedisClientOptions } from "./client.js";
3
- import { type PubSubSignal } from "./pubsub-signal.js";
2
+ import { type RedisClientOptions } from "./client.ts";
3
+ import { type PubSubSignal } from "./pubsub-signal.ts";
4
4
  export type { CacheSyncBus, ClosableCacheSyncBus };
5
5
  export declare function createLocalCacheSyncBus(): ClosableCacheSyncBus;
6
6
  export type CacheSyncBusOverSignalOptions = {
@@ -1,4 +1,4 @@
1
- import type { TenantId } from "../engine/types/identifiers.js";
1
+ import type { TenantId } from "../engine/types/identifiers.ts";
2
2
  export declare const CACHE_SYNC_TOPICS: {
3
3
  readonly tenantConfig: "tenant-config";
4
4
  readonly tierAssignment: "tier-assignment";
@@ -1,8 +1,8 @@
1
- export type { CacheSyncBus, CacheSyncBusOverSignalOptions, ClosableCacheSyncBus, RedisCacheSyncBusOptions, ResolvedCacheSyncBus, } from "./cache-sync-bus.js";
2
- export { createCacheSyncBusOverSignal, createDefaultCacheSyncBus, createLocalCacheSyncBus, createRedisCacheSyncBus, resolveCacheSyncBus, } from "./cache-sync-bus.js";
3
- export type { TenantConfigSyncMessage, TierAssignmentSyncMessage } from "./cache-sync-topics.js";
4
- export { CACHE_SYNC_TOPICS, isTenantConfigSyncMessage, isTierAssignmentSyncMessage, } from "./cache-sync-topics.js";
5
- export type { RedisClientOptions } from "./client.js";
6
- export { createRedisClient, redisChannelPrefixFromEnv, redisClientOptionsFromEnv, } from "./client.js";
7
- export type { PubSubSignal, PubSubSignalOptions } from "./pubsub-signal.js";
8
- export { createRedisPubSubSignal } from "./pubsub-signal.js";
1
+ export type { CacheSyncBus, CacheSyncBusOverSignalOptions, ClosableCacheSyncBus, RedisCacheSyncBusOptions, ResolvedCacheSyncBus, } from "./cache-sync-bus.ts";
2
+ export { createCacheSyncBusOverSignal, createDefaultCacheSyncBus, createLocalCacheSyncBus, createRedisCacheSyncBus, resolveCacheSyncBus, } from "./cache-sync-bus.ts";
3
+ export type { TenantConfigSyncMessage, TierAssignmentSyncMessage } from "./cache-sync-topics.ts";
4
+ export { CACHE_SYNC_TOPICS, isTenantConfigSyncMessage, isTierAssignmentSyncMessage, } from "./cache-sync-topics.ts";
5
+ export type { RedisClientOptions } from "./client.ts";
6
+ export { createRedisClient, redisChannelPrefixFromEnv, redisClientOptionsFromEnv, } from "./client.ts";
7
+ export type { PubSubSignal, PubSubSignalOptions } from "./pubsub-signal.ts";
8
+ export { createRedisPubSubSignal } from "./pubsub-signal.ts";
@@ -1,4 +1,4 @@
1
- import { type RedisClientOptions } from "./client.js";
1
+ import { type RedisClientOptions } from "./client.ts";
2
2
  export type PubSubSignal = {
3
3
  publish(channel: string, payload: unknown): void;
4
4
  publishConfirmed(channel: string, payload: unknown): Promise<void>;
@@ -1,4 +1,4 @@
1
- import type { FeatureDefinition } from "./engine/types/feature.js";
1
+ import type { FeatureDefinition } from "./engine/types/feature.ts";
2
2
  export type SchemaCliOut = {
3
3
  readonly log: (line: string) => void;
4
4
  readonly err: (line: string) => void;
@@ -7,17 +7,34 @@
7
7
  // NO-MAGIC-ON-DATA: reads only checked-in artifacts (kumiko/schema.ts →
8
8
  // ENTITY_METAS, kumiko/migrations/*.sql). Never auto-generates at runtime,
9
9
  // never applies on app-boot — apply/baseline are explicit deploy-steps.
10
+ var __rewriteRelativeImportExtension = (this && this.__rewriteRelativeImportExtension) || function (path, preserveJsx) {
11
+ if (typeof path === "string" && /^\.\.?\//.test(path)) {
12
+ return path.replace(/\.(tsx)$|((?:\.d)?)((?:\.[^./]+?)?)\.([cm]?)ts$/i, function (m, tsx, d, ext, cm) {
13
+ return tsx ? preserveJsx ? ".jsx" : ".js" : d && (!ext || !cm) ? m : (d + ext + "." + cm.toLowerCase() + "js");
14
+ });
15
+ }
16
+ return path;
17
+ };
10
18
  import { existsSync, mkdirSync, readdirSync, writeFileSync } from "node:fs";
11
19
  import { join, resolve as resolvePath } from "node:path";
12
20
  import { configureBlindIndexKey, configurePiiSubjectKms, resolveKmsWiringAsync, } from "./crypto/index.js";
13
21
  import { assertUniqueTableNames, assertValidMigrationName, baselineMigrations, createDbConnection, diffReplayAgainstSnapshot, fetchAppliedMigrations, findCommentedDropTables, generateMigration, isRetiredFrameworkTable, loadMigrationsFromDir, loadSnapshotJson, readMigrationSqlTexts, rebuildTablesFromDiff, replayMigrationsDir, runMigrationsFromDir, tableExists, writeRebuildMarker, writeSnapshotJson, } from "./db/index.js";
14
22
  import { validateBoot } from "./engine/boot-validator.js";
23
+ import { FILE_STORAGE_PROVIDER_BOOT_SENTINEL, FILE_STORAGE_PROVIDER_ENV, } from "./engine/extension-names.js";
15
24
  import { createRegistry } from "./engine/registry.js";
16
25
  import { createEventsTable } from "./event-store/index.js";
17
26
  import { queueRebuildsFromMarkers, reportPendingRebuildRun, runPendingRebuilds, } from "./migrations/index.js";
18
27
  import { createEventConsumerStateTable, createProjectionStateTable } from "./pipeline/index.js";
19
28
  import { ensureTemporalPolyfill } from "./time/index.js";
20
29
  const SNAPSHOT_FILENAME = ".snapshot.json";
30
+ // `validate` only sees the composed FEATURES. The file provider normally comes from
31
+ // runProdApp's `fileStorage` option, which defaults FILE_STORAGE_PROVIDER at boot, so
32
+ // an unset variable here is no misconfiguration. The deploy env is checked by the real boot.
33
+ function withFileStoragePresence(env) {
34
+ return env[FILE_STORAGE_PROVIDER_ENV] === undefined
35
+ ? { ...env, [FILE_STORAGE_PROVIDER_ENV]: FILE_STORAGE_PROVIDER_BOOT_SENTINEL }
36
+ : { ...env };
37
+ }
21
38
  // Single load-path for kumiko/schema.ts (512/3) — `generate` and `validate`
22
39
  // both need ENTITY_METAS (and validate additionally wants FEATURES); this is
23
40
  // the one place that enforces "ENTITY_METAS must be an array" so the two
@@ -25,7 +42,7 @@ const SNAPSHOT_FILENAME = ".snapshot.json";
25
42
  // want a graceful exit code (validate) catch it themselves.
26
43
  async function loadSchemaModFromApp(schemaFile) {
27
44
  // bun imports TS directly — no spawn needed.
28
- const mod = (await import(schemaFile));
45
+ const mod = (await import(__rewriteRelativeImportExtension(schemaFile)));
29
46
  if (!Array.isArray(mod.ENTITY_METAS)) {
30
47
  throw new Error(`Schema file ${schemaFile} muss \`export const ENTITY_METAS: EntityTableMeta[]\` haben.`);
31
48
  }
@@ -239,7 +256,9 @@ export async function runSchemaCli(argv, appCwd, out, options = {}) {
239
256
  // 2. Boot validity — needs the composed feature set.
240
257
  if (Array.isArray(mod.FEATURES)) {
241
258
  try {
242
- validateBoot(mod.FEATURES);
259
+ validateBoot(mod.FEATURES, {
260
+ env: withFileStoragePresence(process.env),
261
+ });
243
262
  out.log(" ✓ boot: feature configuration is valid");
244
263
  }
245
264
  catch (e) {
@@ -1,3 +1,3 @@
1
- import type { Registry } from "../engine/types/index.js";
2
- import type { SearchAdapterConfig } from "./types.js";
1
+ import type { Registry } from "../engine/types/index.ts";
2
+ import type { SearchAdapterConfig } from "./types.ts";
3
3
  export declare function deriveSearchAdapterConfig(registry: Registry): SearchAdapterConfig | undefined;
@@ -1,2 +1,2 @@
1
- import type { SearchAdapter } from "./types.js";
1
+ import type { SearchAdapter } from "./types.ts";
2
2
  export declare function createInMemorySearchAdapter(): SearchAdapter;
@@ -1,6 +1,6 @@
1
- export { deriveSearchAdapterConfig } from "./derive-search-adapter-config.js";
2
- export { createInMemorySearchAdapter } from "./in-memory-adapter.js";
3
- export { purgeSearchDocumentsForSubject } from "./purge-subject.js";
4
- export type { ReindexEntityFailure, ReindexEntityOptions, ReindexEntityResult, } from "./reindex-entity.js";
5
- export { reindexEntity } from "./reindex-entity.js";
6
- export type { SearchAdapter, SearchAdapterConfig, SearchDocument, SearchOptions, SearchResult, } from "./types.js";
1
+ export { deriveSearchAdapterConfig } from "./derive-search-adapter-config.ts";
2
+ export { createInMemorySearchAdapter } from "./in-memory-adapter.ts";
3
+ export { purgeSearchDocumentsForSubject } from "./purge-subject.ts";
4
+ export type { ReindexEntityFailure, ReindexEntityOptions, ReindexEntityResult, } from "./reindex-entity.ts";
5
+ export { reindexEntity } from "./reindex-entity.ts";
6
+ export type { SearchAdapter, SearchAdapterConfig, SearchDocument, SearchOptions, SearchResult, } from "./types.ts";
@@ -1,5 +1,5 @@
1
- import type { EntityId, TenantId } from "../engine/types/identifiers.js";
2
- import type { SearchAdapter } from "./types.js";
1
+ import type { EntityId, TenantId } from "../engine/types/identifiers.ts";
2
+ import type { SearchAdapter } from "./types.ts";
3
3
  export type MeilisearchAdapterOptions = {
4
4
  url: string;
5
5
  apiKey: string;
@@ -1,7 +1,7 @@
1
- import type { SubjectId } from "../crypto/kms-adapter.js";
2
- import type { DbRunner } from "../db/connection.js";
3
- import type { FeatureDefinition } from "../engine/types/index.js";
4
- import type { SearchAdapter } from "./types.js";
1
+ import type { SubjectId } from "../crypto/kms-adapter.ts";
2
+ import type { DbRunner } from "../db/connection.ts";
3
+ import type { FeatureDefinition } from "../engine/types/index.ts";
4
+ import type { SearchAdapter } from "./types.ts";
5
5
  export declare function purgeSearchDocumentsForSubject(db: DbRunner, features: ReadonlyMap<string, FeatureDefinition>, search: SearchAdapter, subjectKey: string,
6
6
  /** When set, also match rows by ownership — needed after anonymize rewrites ciphertext. */
7
7
  subject?: SubjectId): Promise<void>;
@@ -1,6 +1,6 @@
1
- import type { DbRunner } from "../db/connection.js";
2
- import type { Registry, TenantId } from "../engine/types/index.js";
3
- import type { SearchAdapter } from "./types.js";
1
+ import type { DbRunner } from "../db/connection.ts";
2
+ import type { Registry, TenantId } from "../engine/types/index.ts";
3
+ import type { SearchAdapter } from "./types.ts";
4
4
  export type ReindexEntityFailure = {
5
5
  readonly entityId: string;
6
6
  readonly reason: string;
@@ -1,4 +1,4 @@
1
- import type { KeyScope, MasterKeyProvider } from "./types.js";
1
+ import type { KeyScope, MasterKeyProvider } from "./types.ts";
2
2
  export type DekCacheOptions = {
3
3
  readonly ttlMs?: number;
4
4
  readonly maxEntries?: number;
@@ -1,4 +1,4 @@
1
- import type { MasterKeyProvider } from "./types.js";
1
+ import type { MasterKeyProvider } from "./types.ts";
2
2
  export type EnvMasterKeyProviderOptions = {
3
3
  readonly env?: Readonly<Record<string, string | undefined>>;
4
4
  };