@cosmicdrift/kumiko-framework 0.388.0 → 0.390.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 (711) hide show
  1. package/AGENTS.md +12 -4
  2. package/README.md +1 -1
  3. package/agents/examples/apex-surface-auth.md +2 -3
  4. package/agents/examples/api-worker-split.md +9 -2
  5. package/agents/examples/auth-claims.md +1 -1
  6. package/agents/examples/cross-feature-events.md +12 -12
  7. package/agents/examples/crypto-shredding-hr.md +2 -2
  8. package/agents/examples/encrypted-tenant-config.md +1 -1
  9. package/agents/examples/error-contract.md +12 -7
  10. package/agents/examples/event-sourcing.md +29 -29
  11. package/agents/examples/files-post-processing.md +10 -8
  12. package/agents/examples/golden-path.md +13 -1
  13. package/agents/examples/inbound-mail-triage.md +1 -0
  14. package/agents/examples/lane-routing.md +2 -1
  15. package/agents/examples/legal-pages.md +2 -2
  16. package/agents/examples/lifecycle-hooks.md +55 -2
  17. package/agents/examples/list-table-options.md +466 -0
  18. package/agents/examples/managed-config.md +4 -4
  19. package/agents/examples/managed-pages.md +1 -1
  20. package/agents/examples/pdf-audit-export.md +4 -2
  21. package/agents/examples/relations.md +19 -4
  22. package/agents/examples/search.md +4 -4
  23. package/agents/examples/secrets-demo.md +9 -6
  24. package/agents/examples/state-machine.md +5 -4
  25. package/agents/examples/tenant-isolation.md +73 -1
  26. package/agents/examples/tenant-settings.md +1 -1
  27. package/agents/examples/user-data-rights.md +3 -6
  28. package/agents/examples/workflow-engine.md +53 -47
  29. package/agents/examples.md +5 -4
  30. package/agents/features.md +1 -1
  31. package/agents/widgets.md +1 -0
  32. package/dist/api/api-constants.d.ts +1 -0
  33. package/dist/api/api-constants.js +2 -0
  34. package/dist/api/auth-middleware.js +1 -1
  35. package/dist/api/auth-routes-invite.js +2 -1
  36. package/dist/api/auth-routes-shared.d.ts +2 -0
  37. package/dist/api/auth-routes-shared.js +5 -0
  38. package/dist/api/client-error-route.js +2 -3
  39. package/dist/api/entity-read-access.d.ts +4 -1
  40. package/dist/api/entity-read-access.js +14 -0
  41. package/dist/api/export/export-cells-reference.d.ts +9 -0
  42. package/dist/api/export/export-cells-reference.js +21 -0
  43. package/dist/api/export/export-cells.d.ts +11 -0
  44. package/dist/api/export/export-cells.js +136 -0
  45. package/dist/api/export/export-ciphertext-guard.d.ts +2 -0
  46. package/dist/api/export/export-ciphertext-guard.js +27 -0
  47. package/dist/api/export/export-columns.d.ts +31 -0
  48. package/dist/api/export/export-columns.js +85 -0
  49. package/dist/api/export/export-errors.d.ts +4 -0
  50. package/dist/api/export/export-errors.js +14 -0
  51. package/dist/api/export/export-route.d.ts +4 -0
  52. package/dist/api/export/export-route.js +75 -0
  53. package/dist/api/export/export-rows.d.ts +13 -0
  54. package/dist/api/export/export-rows.js +62 -0
  55. package/dist/api/export/export-screen.d.ts +13 -0
  56. package/dist/api/export/export-screen.js +47 -0
  57. package/dist/api/export/export-xlsx-writer.d.ts +4 -0
  58. package/dist/api/export/export-xlsx-writer.js +21 -0
  59. package/dist/api/extra-route.d.ts +7 -1
  60. package/dist/api/index.d.ts +23 -27
  61. package/dist/api/index.js +13 -15
  62. package/dist/api/jwt.js +1 -1
  63. package/dist/api/observability-middleware.d.ts +1 -1
  64. package/dist/api/observability-middleware.js +2 -1
  65. package/dist/api/pii-leak-guard.d.ts +3 -0
  66. package/dist/api/pii-leak-guard.js +3 -2
  67. package/dist/api/request-context-internals.d.ts +31 -0
  68. package/dist/api/request-context-internals.js +11 -0
  69. package/dist/api/request-context-scopes.d.ts +14 -0
  70. package/dist/api/request-context-scopes.js +69 -0
  71. package/dist/api/request-context.d.ts +1 -40
  72. package/dist/api/request-context.js +22 -51
  73. package/dist/api/request-id-middleware.d.ts +1 -1
  74. package/dist/api/route-registrars.d.ts +2 -1
  75. package/dist/api/route-registrars.js +1 -1
  76. package/dist/api/routes.d.ts +16 -0
  77. package/dist/api/routes.js +9 -5
  78. package/dist/api/server-boot-checks.d.ts +1 -1
  79. package/dist/api/server-boot-checks.js +2 -2
  80. package/dist/api/server-event-dispatcher.d.ts +6 -1
  81. package/dist/api/server-event-dispatcher.js +3 -4
  82. package/dist/api/server-extra-routes.d.ts +1 -1
  83. package/dist/api/server-extra-routes.js +5 -1
  84. package/dist/api/server-middleware.js +3 -1
  85. package/dist/api/server-routes.d.ts +3 -2
  86. package/dist/api/server-routes.js +8 -2
  87. package/dist/api/server-wiring.js +8 -4
  88. package/dist/api/server.d.ts +2 -1
  89. package/dist/api/sse-route.d.ts +3 -1
  90. package/dist/api/sse-route.js +11 -1
  91. package/dist/api/tenant-scoped-secrets.d.ts +2 -0
  92. package/dist/api/tenant-scoped-secrets.js +13 -0
  93. package/dist/api/websocket-route.d.ts +1 -1
  94. package/dist/auth/index.d.ts +0 -1
  95. package/dist/auth/roles.d.ts +0 -5
  96. package/dist/compliance/duration-spec.d.ts +0 -1
  97. package/dist/compliance/duration-spec.js +0 -5
  98. package/dist/compliance/index.d.ts +4 -4
  99. package/dist/compliance/index.js +2 -2
  100. package/dist/compliance/profiles.d.ts +0 -15
  101. package/dist/compliance/profiles.js +0 -23
  102. package/dist/config/index.d.ts +11 -9
  103. package/dist/config/index.js +13 -1
  104. package/dist/config/internals.d.ts +9 -0
  105. package/dist/config/internals.js +1 -0
  106. package/dist/consumer-cli-internals.d.ts +4 -0
  107. package/dist/consumer-cli-internals.js +1 -0
  108. package/dist/consumer-cli.d.ts +1 -4
  109. package/dist/consumer-cli.js +5 -1
  110. package/dist/crypto/event-pii.js +1 -1
  111. package/dist/crypto/index.d.ts +8 -9
  112. package/dist/crypto/index.js +7 -8
  113. package/dist/crypto/pg-kms-adapter.d.ts +1 -0
  114. package/dist/crypto/pg-kms-adapter.js +17 -18
  115. package/dist/db/aggregate-sql.d.ts +2 -0
  116. package/dist/db/aggregate-sql.js +10 -0
  117. package/dist/db/apply-entity-event.d.ts +1 -1
  118. package/dist/db/apply-entity-event.js +15 -47
  119. package/dist/db/blind-index-cleanup.js +91 -77
  120. package/dist/db/closed-connection.js +12 -19
  121. package/dist/db/collect-table-metas.js +1 -1
  122. package/dist/db/compound-types.d.ts +1 -1
  123. package/dist/db/compound-types.js +0 -7
  124. package/dist/db/config-seed.d.ts +2 -1
  125. package/dist/db/config-seed.js +6 -1
  126. package/dist/db/connection.d.ts +7 -6
  127. package/dist/db/connection.js +43 -24
  128. package/dist/db/cross-tenant-reads.d.ts +1 -1
  129. package/dist/db/cross-tenant-reads.js +1 -1
  130. package/dist/db/dialect.d.ts +0 -5
  131. package/dist/db/dialect.js +0 -3
  132. package/dist/db/driver-row-coercion.js +4 -4
  133. package/dist/db/driver-value-preparation.js +6 -4
  134. package/dist/db/eagerload.d.ts +2 -1
  135. package/dist/db/entity-field-encryption.d.ts +1 -1
  136. package/dist/db/entity-table-meta.d.ts +1 -1
  137. package/dist/db/event-store-executor-context.d.ts +3 -1
  138. package/dist/db/event-store-executor-context.js +4 -3
  139. package/dist/db/event-store-executor-read-aggregate-currencies.d.ts +17 -0
  140. package/dist/db/event-store-executor-read-aggregate-currencies.js +40 -0
  141. package/dist/db/event-store-executor-read-aggregate.js +36 -5
  142. package/dist/db/event-store-executor-read-filter.d.ts +1 -1
  143. package/dist/db/event-store-executor-read-filter.js +6 -3
  144. package/dist/db/event-store-executor-read-rows.d.ts +2 -1
  145. package/dist/db/event-store-executor-read-search.d.ts +2 -1
  146. package/dist/db/event-store-executor-read-sort.d.ts +2 -1
  147. package/dist/db/event-store-executor-read.js +2 -2
  148. package/dist/db/event-store-executor-write-atomic.d.ts +4 -0
  149. package/dist/db/event-store-executor-write-atomic.js +42 -0
  150. package/dist/db/event-store-executor-write-steps.d.ts +3 -5
  151. package/dist/db/event-store-executor-write-steps.js +0 -5
  152. package/dist/db/event-store-executor-write.js +22 -19
  153. package/dist/db/event-store-executor.d.ts +1 -1
  154. package/dist/db/event-store-executor.js +2 -1
  155. package/dist/db/executor-managed-tables.d.ts +7 -1
  156. package/dist/db/executor-managed-tables.js +12 -3
  157. package/dist/db/index.d.ts +29 -28
  158. package/dist/db/index.js +22 -20
  159. package/dist/db/known-table-names.d.ts +6 -0
  160. package/dist/db/known-table-names.js +21 -0
  161. package/dist/db/list-aggregate-labels.d.ts +1 -1
  162. package/dist/db/located-timestamp.d.ts +1 -1
  163. package/dist/db/located-timestamp.js +0 -5
  164. package/dist/db/migrate-generator.d.ts +17 -1
  165. package/dist/db/migrate-generator.js +50 -20
  166. package/dist/db/migrate-primary-key.d.ts +12 -0
  167. package/dist/db/migrate-primary-key.js +45 -0
  168. package/dist/db/migrate-rls-diff.d.ts +20 -0
  169. package/dist/db/migrate-rls-diff.js +61 -0
  170. package/dist/db/migrate-runner.js +7 -3
  171. package/dist/db/money.d.ts +1 -1
  172. package/dist/db/money.js +1 -1
  173. package/dist/db/parent-ref-clause.d.ts +2 -1
  174. package/dist/db/pg-error.d.ts +2 -0
  175. package/dist/db/pg-error.js +37 -21
  176. package/dist/db/queries/backfill-pii.js +3 -6
  177. package/dist/db/queries/database-now.js +2 -1
  178. package/dist/db/queries/ddl.d.ts +3 -0
  179. package/dist/db/queries/ddl.js +34 -1
  180. package/dist/db/queries/event-store.js +4 -2
  181. package/dist/db/queries/event-tenants.d.ts +2 -0
  182. package/dist/db/queries/event-tenants.js +17 -0
  183. package/dist/db/queries/rebuild-rls-guard.d.ts +2 -0
  184. package/dist/db/queries/rebuild-rls-guard.js +29 -0
  185. package/dist/db/queries/rls-boot-catalog.d.ts +16 -0
  186. package/dist/db/queries/rls-boot-catalog.js +39 -0
  187. package/dist/db/queries/rls-catalog.d.ts +6 -0
  188. package/dist/db/queries/rls-catalog.js +82 -0
  189. package/dist/db/queries/rls-scope.d.ts +3 -0
  190. package/dist/db/queries/rls-scope.js +17 -0
  191. package/dist/db/queries/rls-shape.d.ts +10 -0
  192. package/dist/db/queries/rls-shape.js +42 -0
  193. package/dist/db/queries/session-advisory-lock.d.ts +2 -0
  194. package/dist/db/queries/session-advisory-lock.js +23 -0
  195. package/dist/db/queries/shadow-swap.d.ts +1 -2
  196. package/dist/db/queries/shadow-swap.js +11 -28
  197. package/dist/db/queries/test-stack.d.ts +4 -1
  198. package/dist/db/queries/test-stack.js +83 -2
  199. package/dist/db/query.d.ts +14 -0
  200. package/dist/db/query.js +77 -48
  201. package/dist/db/reference-data.d.ts +1 -1
  202. package/dist/db/reference-data.js +20 -3
  203. package/dist/db/render-ddl.d.ts +6 -2
  204. package/dist/db/render-ddl.js +7 -7
  205. package/dist/db/render-rls-ddl.d.ts +35 -0
  206. package/dist/db/render-rls-ddl.js +127 -0
  207. package/dist/db/replay-migration-sql.d.ts +3 -1
  208. package/dist/db/replay-migration-sql.js +22 -5
  209. package/dist/db/replay-rls.d.ts +25 -0
  210. package/dist/db/replay-rls.js +156 -0
  211. package/dist/db/row-level-security-boot-check.d.ts +5 -0
  212. package/dist/db/row-level-security-boot-check.js +85 -0
  213. package/dist/db/row-level-security-connection.d.ts +3 -0
  214. package/dist/db/row-level-security-connection.js +213 -0
  215. package/dist/db/row-level-security-scope.d.ts +33 -0
  216. package/dist/db/row-level-security-scope.js +127 -0
  217. package/dist/db/scope-tenant-db-to-tenant.d.ts +3 -0
  218. package/dist/db/scope-tenant-db-to-tenant.js +14 -0
  219. package/dist/db/sql-identifier.d.ts +1 -0
  220. package/dist/db/sql-identifier.js +3 -0
  221. package/dist/db/statement-timeout.js +2 -1
  222. package/dist/db/table-builder.d.ts +2 -1
  223. package/dist/db/table-builder.js +1 -1
  224. package/dist/db/table-info.js +1 -1
  225. package/dist/db/table-push.d.ts +11 -2
  226. package/dist/db/table-push.js +15 -2
  227. package/dist/db/tenant-db-runner.d.ts +3 -1
  228. package/dist/db/tenant-db-runner.js +4 -3
  229. package/dist/db/tenant-db-scoped-rebind.d.ts +10 -0
  230. package/dist/db/tenant-db-scoped-rebind.js +33 -0
  231. package/dist/db/tenant-db-statement-runner.d.ts +13 -0
  232. package/dist/db/tenant-db-statement-runner.js +48 -0
  233. package/dist/db/tenant-db-upsert.d.ts +5 -0
  234. package/dist/db/tenant-db-upsert.js +91 -0
  235. package/dist/db/tenant-db.d.ts +17 -12
  236. package/dist/db/tenant-db.js +60 -121
  237. package/dist/db/tenant-id-filter.d.ts +3 -0
  238. package/dist/db/tenant-id-filter.js +30 -0
  239. package/dist/db/transaction-serialization.d.ts +6 -0
  240. package/dist/db/transaction-serialization.js +60 -0
  241. package/dist/derivatives/delete-stored-file.js +1 -1
  242. package/dist/derivatives/index.d.ts +2 -5
  243. package/dist/derivatives/index.js +2 -3
  244. package/dist/engine/access.d.ts +2 -1
  245. package/dist/engine/access.js +1 -1
  246. package/dist/engine/boot-validator/bundled-lists-table.d.ts +2 -0
  247. package/dist/engine/boot-validator/bundled-lists-table.js +36 -0
  248. package/dist/engine/boot-validator/entity-handler.d.ts +2 -1
  249. package/dist/engine/boot-validator/entity-handler.js +1 -1
  250. package/dist/engine/boot-validator/entity-list-aggregate-options.d.ts +3 -0
  251. package/dist/engine/boot-validator/entity-list-aggregate-options.js +23 -0
  252. package/dist/engine/boot-validator/list-bulk-actions.d.ts +3 -0
  253. package/dist/engine/boot-validator/list-bulk-actions.js +49 -0
  254. package/dist/engine/boot-validator/list-column-layout.d.ts +8 -0
  255. package/dist/engine/boot-validator/list-column-layout.js +41 -0
  256. package/dist/engine/boot-validator/list-table-aggregate-options.d.ts +24 -0
  257. package/dist/engine/boot-validator/list-table-aggregate-options.js +145 -0
  258. package/dist/engine/boot-validator/list-table-aggregate-query.d.ts +11 -0
  259. package/dist/engine/boot-validator/list-table-aggregate-query.js +31 -0
  260. package/dist/engine/boot-validator/list-table-export-options.d.ts +1 -0
  261. package/dist/engine/boot-validator/list-table-export-options.js +27 -0
  262. package/dist/engine/boot-validator/list-table-options.d.ts +3 -0
  263. package/dist/engine/boot-validator/list-table-options.js +77 -0
  264. package/dist/engine/boot-validator/list-table-reject-unknown-keys.d.ts +1 -0
  265. package/dist/engine/boot-validator/list-table-reject-unknown-keys.js +7 -0
  266. package/dist/engine/boot-validator/nav.d.ts +3 -1
  267. package/dist/engine/boot-validator/nav.js +1 -1
  268. package/dist/engine/boot-validator/ownership.d.ts +2 -1
  269. package/dist/engine/boot-validator/parent-ref.d.ts +2 -1
  270. package/dist/engine/boot-validator/projection-list-screens.d.ts +2 -1
  271. package/dist/engine/boot-validator/projection-list-screens.js +3 -13
  272. package/dist/engine/boot-validator/query-refs.d.ts +2 -1
  273. package/dist/engine/boot-validator/related-list-table-rules.d.ts +4 -0
  274. package/dist/engine/boot-validator/related-list-table-rules.js +42 -0
  275. package/dist/engine/boot-validator/screens-forms.d.ts +2 -1
  276. package/dist/engine/boot-validator/screens-kind-entity-list.js +7 -0
  277. package/dist/engine/boot-validator/screens-kind-projection-list.js +4 -0
  278. package/dist/engine/boot-validator/screens-kind-shared.d.ts +3 -1
  279. package/dist/engine/boot-validator/screens-lists.js +12 -2
  280. package/dist/engine/boot-validator/screens.d.ts +2 -1
  281. package/dist/engine/boot-validator/workspaces.d.ts +3 -1
  282. package/dist/engine/bridge-stub.d.ts +5 -2
  283. package/dist/engine/bridge-stub.js +39 -24
  284. package/dist/engine/build-app-schema.d.ts +2 -1
  285. package/dist/engine/build-app-schema.js +9 -1
  286. package/dist/engine/build-config-feature-schema.js +6 -1
  287. package/dist/engine/config-helpers.d.ts +2 -2
  288. package/dist/engine/config-helpers.js +0 -9
  289. package/dist/engine/constants.d.ts +0 -10
  290. package/dist/engine/constants.js +0 -8
  291. package/dist/engine/create-app.js +1 -1
  292. package/dist/engine/define-feature.d.ts +2 -1
  293. package/dist/engine/define-feature.js +5 -2
  294. package/dist/engine/define-handler.d.ts +1 -1
  295. package/dist/engine/define-step.d.ts +0 -1
  296. package/dist/engine/define-step.js +0 -3
  297. package/dist/engine/embedded-derived.d.ts +1 -1
  298. package/dist/engine/entity-handlers.d.ts +2 -1
  299. package/dist/engine/entity-handlers.js +7 -7
  300. package/dist/engine/entity-list-runtime-options.js +3 -1
  301. package/dist/engine/entity-list-searchability.d.ts +2 -1
  302. package/dist/engine/event-def.d.ts +2 -1
  303. package/dist/engine/event-helpers.d.ts +3 -1
  304. package/dist/engine/event-helpers.js +3 -3
  305. package/dist/engine/extension-names.d.ts +2 -8
  306. package/dist/engine/extension-names.js +2 -2
  307. package/dist/engine/extension-selector-plugins.d.ts +1 -1
  308. package/dist/engine/extensions/storage-provider.d.ts +1 -2
  309. package/dist/engine/extensions/user-data.d.ts +0 -8
  310. package/dist/engine/factories.d.ts +2 -1
  311. package/dist/engine/feature-builder-state.d.ts +9 -1
  312. package/dist/engine/feature-builder-state.js +1 -0
  313. package/dist/engine/feature-changelog.d.ts +1 -1
  314. package/dist/engine/feature-config-events-jobs.d.ts +4 -1
  315. package/dist/engine/feature-entity-handlers.d.ts +5 -1
  316. package/dist/engine/feature-manifest.d.ts +1 -0
  317. package/dist/engine/feature-manifest.js +2 -1
  318. package/dist/engine/feature-ui-extensions.d.ts +7 -1
  319. package/dist/engine/feature-ui-extensions.js +6 -4
  320. package/dist/engine/field-access.d.ts +3 -1
  321. package/dist/engine/field-access.js +12 -0
  322. package/dist/engine/handler-field-references.d.ts +0 -4
  323. package/dist/engine/index.d.ts +58 -55
  324. package/dist/engine/index.js +23 -28
  325. package/dist/engine/instruction-fields.d.ts +1 -1
  326. package/dist/engine/personal-data-fields.d.ts +1 -1
  327. package/dist/engine/qualified-name.d.ts +0 -1
  328. package/dist/engine/read-claim.d.ts +2 -1
  329. package/dist/engine/registry-facade.js +0 -3
  330. package/dist/engine/registry-ingest.d.ts +2 -1
  331. package/dist/engine/registry-ingest.js +1 -2
  332. package/dist/engine/registry-state.d.ts +12 -2
  333. package/dist/engine/registry-state.js +2 -3
  334. package/dist/engine/registry-validate.d.ts +3 -1
  335. package/dist/engine/registry-validate.js +7 -7
  336. package/dist/engine/run-in.d.ts +1 -1
  337. package/dist/engine/run-in.js +0 -1
  338. package/dist/engine/schema-builder.d.ts +1 -1
  339. package/dist/engine/schema-builder.js +1 -1
  340. package/dist/engine/screen-filter-ops.d.ts +2 -1
  341. package/dist/engine/screen-filter-ops.js +2 -5
  342. package/dist/engine/soft-delete-cleanup.d.ts +1 -1
  343. package/dist/engine/soft-delete-cleanup.js +4 -4
  344. package/dist/engine/state-machine.js +2 -1
  345. package/dist/engine/steps/_read-source.js +1 -1
  346. package/dist/engine/steps/aggregate-append-event.js +2 -2
  347. package/dist/engine/steps/call-feature.js +2 -2
  348. package/dist/engine/steps/mail-send.js +1 -1
  349. package/dist/engine/steps/retry.js +1 -1
  350. package/dist/engine/steps/wait-for-event.js +1 -1
  351. package/dist/engine/steps/wait.js +1 -1
  352. package/dist/engine/steps/webhook-send.js +1 -1
  353. package/dist/engine/strip-disabled-features-from-app-schema.js +7 -3
  354. package/dist/engine/template-variables.d.ts +2 -1
  355. package/dist/engine/transfer-adjacency.d.ts +1 -1
  356. package/dist/engine/types/feature.d.ts +1 -0
  357. package/dist/engine/types/index.d.ts +8 -30
  358. package/dist/engine/types/index.js +2 -10
  359. package/dist/engine/types/screen.d.ts +1 -1
  360. package/dist/engine/types/screen.js +1 -1
  361. package/dist/engine/validation.d.ts +2 -1
  362. package/dist/entrypoint/index.d.ts +9 -35
  363. package/dist/entrypoint/index.js +10 -1
  364. package/dist/entrypoint/internals.d.ts +40 -0
  365. package/dist/entrypoint/internals.js +1 -0
  366. package/dist/entrypoint/row-level-security-mode-check.d.ts +3 -0
  367. package/dist/entrypoint/row-level-security-mode-check.js +19 -0
  368. package/dist/env/dry-run-internals.d.ts +10 -0
  369. package/dist/env/dry-run-internals.js +1 -0
  370. package/dist/env/dry-run.d.ts +1 -10
  371. package/dist/env/dry-run.js +2 -1
  372. package/dist/env/index.d.ts +1 -85
  373. package/dist/env/index.js +6 -50
  374. package/dist/env/internals.d.ts +87 -0
  375. package/dist/env/internals.js +53 -0
  376. package/dist/errors/classes.js +2 -2
  377. package/dist/errors/index.d.ts +5 -14
  378. package/dist/errors/index.js +4 -9
  379. package/dist/errors/member-resolution.js +1 -1
  380. package/dist/errors/reasons.d.ts +0 -1
  381. package/dist/errors/reasons.js +7 -7
  382. package/dist/errors/serialize.d.ts +0 -18
  383. package/dist/errors/serialize.js +0 -27
  384. package/dist/es-ops/index.d.ts +4 -4
  385. package/dist/es-ops/index.js +2 -2
  386. package/dist/es-ops/operations-schema.d.ts +1 -1
  387. package/dist/es-ops/types.d.ts +4 -5
  388. package/dist/event-store/admin-api-internals.d.ts +14 -0
  389. package/dist/event-store/admin-api-internals.js +1 -0
  390. package/dist/event-store/admin-api.d.ts +1 -14
  391. package/dist/event-store/admin-api.js +11 -6
  392. package/dist/event-store/archive.js +4 -2
  393. package/dist/event-store/errors.js +2 -2
  394. package/dist/event-store/event-store.d.ts +1 -0
  395. package/dist/event-store/event-store.js +42 -32
  396. package/dist/event-store/events-schema.js +4 -1
  397. package/dist/event-store/index.d.ts +11 -13
  398. package/dist/event-store/index.js +7 -9
  399. package/dist/event-store/provenance-append.js +1 -1
  400. package/dist/event-store/rebuild-dead-letter.js +4 -2
  401. package/dist/event-store/snapshot.js +4 -3
  402. package/dist/event-store/stream-scope.d.ts +2 -0
  403. package/dist/event-store/stream-scope.js +6 -0
  404. package/dist/event-store/upcaster-dead-letter.js +4 -2
  405. package/dist/event-store/upcaster.d.ts +2 -1
  406. package/dist/files/action-form-upload.d.ts +2 -1
  407. package/dist/files/action-form-upload.js +1 -1
  408. package/dist/files/assert-file-refs-belong-to-tenant.d.ts +2 -1
  409. package/dist/files/assert-file-refs-belong-to-tenant.js +1 -1
  410. package/dist/files/bind-pending-file-refs.d.ts +2 -1
  411. package/dist/files/bind-pending-file-refs.js +2 -1
  412. package/dist/files/bind-referenced-files.write.js +1 -1
  413. package/dist/files/create-file-ref-from-bytes.d.ts +6 -3
  414. package/dist/files/create-file-ref-from-bytes.js +6 -3
  415. package/dist/files/create-file-ref.d.ts +6 -2
  416. package/dist/files/create-file-ref.js +13 -4
  417. package/dist/files/dispose-removed-file-refs.d.ts +2 -1
  418. package/dist/files/dispose-removed-file-refs.js +1 -1
  419. package/dist/files/feature.js +2 -2
  420. package/dist/files/file-handle.js +1 -1
  421. package/dist/files/file-routes.d.ts +3 -1
  422. package/dist/files/file-routes.js +41 -4
  423. package/dist/files/index.d.ts +11 -13
  424. package/dist/files/index.js +5 -7
  425. package/dist/files/load-save-file-refs.d.ts +2 -1
  426. package/dist/files/load-save-file-refs.js +1 -1
  427. package/dist/files/provider-resolver.d.ts +6 -4
  428. package/dist/files/provider-resolver.js +5 -5
  429. package/dist/files/record-write-check.d.ts +6 -0
  430. package/dist/files/record-write-check.js +13 -0
  431. package/dist/files/storage-tracking.js +4 -2
  432. package/dist/files/sweep-orphaned-uploads.d.ts +1 -1
  433. package/dist/files/sweep-orphaned-uploads.js +1 -1
  434. package/dist/files/upload-ledger.d.ts +2 -2
  435. package/dist/files/upload-ledger.js +4 -4
  436. package/dist/i18n/index.d.ts +2 -8
  437. package/dist/i18n/index.js +1 -1
  438. package/dist/i18n/internals.d.ts +7 -0
  439. package/dist/i18n/internals.js +1 -0
  440. package/dist/i18n/required-surface-keys.d.ts +4 -1
  441. package/dist/i18n/required-surface-keys.js +7 -2
  442. package/dist/internal/row-level-security.d.ts +3 -0
  443. package/dist/internal/row-level-security.js +3 -0
  444. package/dist/internal/stack-support.d.ts +1 -1
  445. package/dist/internal/stack-support.js +1 -1
  446. package/dist/internal/testing.d.ts +1 -0
  447. package/dist/internal/testing.js +10 -6
  448. package/dist/jobs/index.d.ts +1 -1
  449. package/dist/jobs/job-append-event.d.ts +12 -0
  450. package/dist/jobs/job-append-event.js +30 -0
  451. package/dist/jobs/job-runner-context.d.ts +2 -2
  452. package/dist/jobs/job-runner-context.js +46 -16
  453. package/dist/jobs/job-runner-execution.d.ts +1 -1
  454. package/dist/jobs/job-runner-execution.js +6 -4
  455. package/dist/jobs/job-runner-gates.d.ts +1 -1
  456. package/dist/jobs/job-runner-gates.js +0 -1
  457. package/dist/jobs/job-runner-helpers.d.ts +11 -4
  458. package/dist/jobs/job-runner-helpers.js +10 -1
  459. package/dist/jobs/job-runner-scope.d.ts +5 -2
  460. package/dist/jobs/job-runner-scope.js +6 -6
  461. package/dist/jobs/job-runner-types.d.ts +2 -1
  462. package/dist/jobs/job-runner.js +22 -6
  463. package/dist/jobs/max-per-tenant.d.ts +1 -1
  464. package/dist/logging/index.d.ts +1 -2
  465. package/dist/logging/index.js +1 -1
  466. package/dist/logging/pino-logger.js +1 -1
  467. package/dist/logging/utils.d.ts +1 -0
  468. package/dist/logging/utils.js +6 -0
  469. package/dist/migrations/index.d.ts +3 -3
  470. package/dist/migrations/index.js +3 -3
  471. package/dist/migrations/pending-rebuilds.d.ts +1 -1
  472. package/dist/migrations/pending-rebuilds.js +1 -1
  473. package/dist/migrations/pii-event-backfill.js +4 -1
  474. package/dist/observability/escape-hatch-report.d.ts +2 -1
  475. package/dist/observability/escape-hatch-report.js +9 -2
  476. package/dist/observability/index.d.ts +7 -15
  477. package/dist/observability/index.js +4 -12
  478. package/dist/observability/metric-validator.js +1 -1
  479. package/dist/observability/metrics-handle.d.ts +0 -1
  480. package/dist/observability/metrics-handle.js +2 -15
  481. package/dist/observability/recording-tracer.d.ts +1 -2
  482. package/dist/observability/recording-tracer.js +0 -6
  483. package/dist/observability/sensitive-filter.d.ts +0 -2
  484. package/dist/observability/sensitive-filter.js +0 -29
  485. package/dist/pipeline/active-membership.d.ts +2 -1
  486. package/dist/pipeline/active-membership.js +6 -2
  487. package/dist/pipeline/after-rollback-sink.d.ts +6 -0
  488. package/dist/pipeline/after-rollback-sink.js +32 -0
  489. package/dist/pipeline/append-event-core.d.ts +2 -1
  490. package/dist/pipeline/append-event-core.js +2 -2
  491. package/dist/pipeline/attach-outside-transaction.d.ts +3 -0
  492. package/dist/pipeline/attach-outside-transaction.js +13 -0
  493. package/dist/pipeline/auth-claims-resolver.d.ts +2 -1
  494. package/dist/pipeline/cascade-handler.d.ts +2 -1
  495. package/dist/pipeline/cascade-handler.js +3 -2
  496. package/dist/pipeline/config-accessor-factory.d.ts +1 -1
  497. package/dist/pipeline/config-accessor-factory.js +1 -1
  498. package/dist/pipeline/context-services.d.ts +56 -0
  499. package/dist/pipeline/context-services.js +73 -0
  500. package/dist/pipeline/dispatch-batch.d.ts +2 -1
  501. package/dist/pipeline/dispatch-batch.js +39 -19
  502. package/dist/pipeline/dispatch-query.js +5 -4
  503. package/dist/pipeline/dispatch-scope.d.ts +6 -0
  504. package/dist/pipeline/dispatch-scope.js +27 -0
  505. package/dist/pipeline/dispatch-shared.d.ts +13 -9
  506. package/dist/pipeline/dispatch-shared.js +75 -194
  507. package/dist/pipeline/dispatch-stream.js +8 -4
  508. package/dist/pipeline/dispatch-write.d.ts +2 -1
  509. package/dist/pipeline/dispatch-write.js +10 -8
  510. package/dist/pipeline/dispatcher-utils.d.ts +3 -1
  511. package/dist/pipeline/dispatcher-utils.js +8 -2
  512. package/dist/pipeline/dispatcher.d.ts +3 -2
  513. package/dist/pipeline/dispatcher.js +4 -3
  514. package/dist/pipeline/event-consumer-state.d.ts +0 -1
  515. package/dist/pipeline/event-dispatcher-delivery.d.ts +1 -1
  516. package/dist/pipeline/event-dispatcher-delivery.js +7 -3
  517. package/dist/pipeline/event-dispatcher.d.ts +3 -2
  518. package/dist/pipeline/event-dispatcher.js +13 -12
  519. package/dist/pipeline/event-retention.js +59 -56
  520. package/dist/pipeline/handler-access-error.js +2 -1
  521. package/dist/pipeline/handler-context-auth.d.ts +5 -6
  522. package/dist/pipeline/handler-context-auth.js +7 -4
  523. package/dist/pipeline/handler-context-config.d.ts +2 -5
  524. package/dist/pipeline/handler-context-config.js +2 -2
  525. package/dist/pipeline/handler-context-db.d.ts +32 -7
  526. package/dist/pipeline/handler-context-db.js +26 -17
  527. package/dist/pipeline/handler-context-dispatch.d.ts +14 -6
  528. package/dist/pipeline/handler-context-dispatch.js +18 -5
  529. package/dist/pipeline/handler-context-events.d.ts +22 -38
  530. package/dist/pipeline/handler-context-events.js +42 -35
  531. package/dist/pipeline/handler-context-member-resolution.d.ts +2 -0
  532. package/dist/pipeline/handler-context-member-resolution.js +110 -0
  533. package/dist/pipeline/handler-context-notify.d.ts +3 -2
  534. package/dist/pipeline/handler-context-notify.js +1 -1
  535. package/dist/pipeline/handler-context-observability.d.ts +2 -4
  536. package/dist/pipeline/handler-context-observability.js +7 -5
  537. package/dist/pipeline/handler-context-phase-denials.d.ts +11 -0
  538. package/dist/pipeline/handler-context-phase-denials.js +98 -0
  539. package/dist/pipeline/handler-context-scope.d.ts +7 -10
  540. package/dist/pipeline/handler-context-scope.js +18 -20
  541. package/dist/pipeline/index.d.ts +9 -21
  542. package/dist/pipeline/index.js +5 -7
  543. package/dist/pipeline/irreversible-operation-gate.d.ts +1 -1
  544. package/dist/pipeline/irreversible-operation-gate.js +2 -2
  545. package/dist/pipeline/lifecycle-pipeline.d.ts +8 -7
  546. package/dist/pipeline/lifecycle-pipeline.js +9 -15
  547. package/dist/pipeline/member-read-only-transaction.js +11 -3
  548. package/dist/pipeline/member-reader.d.ts +1 -1
  549. package/dist/pipeline/member-reader.js +2 -2
  550. package/dist/pipeline/msp-rebuild.js +5 -3
  551. package/dist/pipeline/multi-stream-apply-context.js +3 -2
  552. package/dist/pipeline/notify-scope.d.ts +2 -1
  553. package/dist/pipeline/pre-handler-gates.d.ts +2 -1
  554. package/dist/pipeline/pre-transaction-reservations.d.ts +3 -3
  555. package/dist/pipeline/pre-transaction-reservations.js +9 -7
  556. package/dist/pipeline/projection-rebuild.js +12 -5
  557. package/dist/pipeline/projection-state.d.ts +0 -6
  558. package/dist/pipeline/projection-state.js +0 -5
  559. package/dist/pipeline/projections-runner.d.ts +2 -1
  560. package/dist/pipeline/projections-runner.js +10 -6
  561. package/dist/pipeline/system-hooks.d.ts +6 -2
  562. package/dist/pipeline/system-hooks.js +61 -10
  563. package/dist/pipeline/system-identity-switch.d.ts +4 -2
  564. package/dist/pipeline/system-identity-switch.js +51 -36
  565. package/dist/pipeline/typed-append-event.d.ts +2 -0
  566. package/dist/pipeline/typed-append-event.js +4 -0
  567. package/dist/pipeline/write-origin.js +2 -2
  568. package/dist/pipeline/write-result-masking.d.ts +1 -1
  569. package/dist/pipeline/write-result-masking.js +13 -10
  570. package/dist/random/index.d.ts +1 -2
  571. package/dist/random/index.js +1 -2
  572. package/dist/rate-limit/bucket.d.ts +2 -1
  573. package/dist/rate-limit/middleware.js +2 -1
  574. package/dist/redis/index.d.ts +3 -4
  575. package/dist/redis/index.js +2 -2
  576. package/dist/schema-cli/apply-command.js +5 -2
  577. package/dist/schema-cli/baseline-command.js +7 -2
  578. package/dist/schema-cli/generate-command.js +7 -9
  579. package/dist/schema-cli/shared.d.ts +4 -0
  580. package/dist/schema-cli/shared.js +21 -2
  581. package/dist/schema-cli/status-command.js +8 -2
  582. package/dist/schema-cli/validate-command.js +52 -4
  583. package/dist/schema-cli.d.ts +0 -1
  584. package/dist/search/configure-tenant-index.d.ts +1 -3
  585. package/dist/search/configure-tenant-index.js +0 -4
  586. package/dist/search/index.d.ts +1 -4
  587. package/dist/search/index.js +0 -2
  588. package/dist/search/meilisearch-adapter-internals.d.ts +8 -0
  589. package/dist/search/meilisearch-adapter-internals.js +9 -0
  590. package/dist/search/meilisearch-adapter.d.ts +1 -8
  591. package/dist/search/meilisearch-adapter.js +6 -7
  592. package/dist/search/meilisearch-peer.d.ts +2 -0
  593. package/dist/search/meilisearch-peer.js +5 -0
  594. package/dist/search/reindex-entity.js +107 -91
  595. package/dist/secrets/index.d.ts +3 -4
  596. package/dist/secrets/index.js +2 -3
  597. package/dist/seeding/index.d.ts +2 -2
  598. package/dist/seeding/index.js +1 -2
  599. package/dist/time/index.d.ts +2 -2
  600. package/dist/time/index.js +1 -1
  601. package/dist/time/tz-context.d.ts +0 -5
  602. package/dist/time/tz-context.js +0 -9
  603. package/dist/ui-types/index.d.ts +8 -11
  604. package/dist/ui-types/index.js +3 -3
  605. package/dist/upgrade-changelog.d.ts +3 -0
  606. package/dist/upgrade-changelog.js +18 -0
  607. package/dist/upgrade-cli-internals.d.ts +8 -0
  608. package/dist/upgrade-cli-internals.js +63 -0
  609. package/dist/upgrade-cli.d.ts +1 -18
  610. package/dist/upgrade-cli.js +29 -137
  611. package/dist/upgrade-marker-parse.d.ts +32 -0
  612. package/dist/upgrade-marker-parse.js +73 -0
  613. package/dist/utils/import-optional-peer.d.ts +6 -0
  614. package/dist/utils/import-optional-peer.js +19 -0
  615. package/dist/utils/index.d.ts +1 -4
  616. package/dist/utils/index.js +1 -4
  617. package/package.json +27 -20
  618. package/src/changes.json +451 -0
  619. package/dist/crypto/request-kms-cache.d.ts +0 -8
  620. package/dist/crypto/request-kms-cache.js +0 -21
  621. package/dist/engine/codemod/index.d.ts +0 -2
  622. package/dist/engine/codemod/index.js +0 -1
  623. package/dist/engine/codemod/pipeline-codemod.d.ts +0 -50
  624. package/dist/engine/codemod/pipeline-codemod.js +0 -536
  625. package/dist/engine/feature-ast/entity-field-types.d.ts +0 -13
  626. package/dist/engine/feature-ast/entity-field-types.js +0 -35
  627. package/dist/engine/feature-ast/extractors/ai-steps.d.ts +0 -6
  628. package/dist/engine/feature-ast/extractors/ai-steps.js +0 -254
  629. package/dist/engine/feature-ast/extractors/events.d.ts +0 -5
  630. package/dist/engine/feature-ast/extractors/events.js +0 -275
  631. package/dist/engine/feature-ast/extractors/handlers.d.ts +0 -24
  632. package/dist/engine/feature-ast/extractors/handlers.js +0 -358
  633. package/dist/engine/feature-ast/extractors/hooks.d.ts +0 -24
  634. package/dist/engine/feature-ast/extractors/hooks.js +0 -248
  635. package/dist/engine/feature-ast/extractors/index.d.ts +0 -14
  636. package/dist/engine/feature-ast/extractors/index.js +0 -13
  637. package/dist/engine/feature-ast/extractors/jobs-routes.d.ts +0 -7
  638. package/dist/engine/feature-ast/extractors/jobs-routes.js +0 -145
  639. package/dist/engine/feature-ast/extractors/projections-screens.d.ts +0 -10
  640. package/dist/engine/feature-ast/extractors/projections-screens.js +0 -195
  641. package/dist/engine/feature-ast/extractors/resolve-import.d.ts +0 -21
  642. package/dist/engine/feature-ast/extractors/resolve-import.js +0 -180
  643. package/dist/engine/feature-ast/extractors/round1.d.ts +0 -10
  644. package/dist/engine/feature-ast/extractors/round1.js +0 -81
  645. package/dist/engine/feature-ast/extractors/round2.d.ts +0 -7
  646. package/dist/engine/feature-ast/extractors/round2.js +0 -191
  647. package/dist/engine/feature-ast/extractors/round3.d.ts +0 -23
  648. package/dist/engine/feature-ast/extractors/round3.js +0 -292
  649. package/dist/engine/feature-ast/extractors/round5.d.ts +0 -9
  650. package/dist/engine/feature-ast/extractors/round5.js +0 -68
  651. package/dist/engine/feature-ast/extractors/round6.d.ts +0 -4
  652. package/dist/engine/feature-ast/extractors/round6.js +0 -17
  653. package/dist/engine/feature-ast/extractors/shared.d.ts +0 -94
  654. package/dist/engine/feature-ast/extractors/shared.js +0 -343
  655. package/dist/engine/feature-ast/index.d.ts +0 -16
  656. package/dist/engine/feature-ast/index.js +0 -10
  657. package/dist/engine/feature-ast/parse.d.ts +0 -31
  658. package/dist/engine/feature-ast/parse.js +0 -483
  659. package/dist/engine/feature-ast/patch.d.ts +0 -210
  660. package/dist/engine/feature-ast/patch.js +0 -610
  661. package/dist/engine/feature-ast/patcher.d.ts +0 -217
  662. package/dist/engine/feature-ast/patcher.js +0 -281
  663. package/dist/engine/feature-ast/pattern-change-schema.d.ts +0 -1476
  664. package/dist/engine/feature-ast/pattern-change-schema.js +0 -1226
  665. package/dist/engine/feature-ast/pattern-id-matchers.d.ts +0 -7
  666. package/dist/engine/feature-ast/pattern-id-matchers.js +0 -210
  667. package/dist/engine/feature-ast/patterns.d.ts +0 -318
  668. package/dist/engine/feature-ast/patterns.js +0 -106
  669. package/dist/engine/feature-ast/render.d.ts +0 -47
  670. package/dist/engine/feature-ast/render.js +0 -662
  671. package/dist/engine/feature-ast/source-location.d.ts +0 -17
  672. package/dist/engine/feature-ast/source-location.js +0 -27
  673. package/dist/engine/pattern-library/index.d.ts +0 -2
  674. package/dist/engine/pattern-library/index.js +0 -3
  675. package/dist/engine/pattern-library/library.d.ts +0 -14
  676. package/dist/engine/pattern-library/library.js +0 -93
  677. package/dist/engine/pattern-library/mixed-schemas.d.ts +0 -16
  678. package/dist/engine/pattern-library/mixed-schemas.js +0 -559
  679. package/dist/engine/pattern-library/opaque-schemas.d.ts +0 -7
  680. package/dist/engine/pattern-library/opaque-schemas.js +0 -115
  681. package/dist/engine/pattern-library/shared-fields.d.ts +0 -122
  682. package/dist/engine/pattern-library/shared-fields.js +0 -88
  683. package/dist/engine/pattern-library/static-schemas.d.ts +0 -20
  684. package/dist/engine/pattern-library/static-schemas.js +0 -478
  685. package/dist/engine/pattern-library/types.d.ts +0 -158
  686. package/dist/engine/pattern-library/types.js +0 -36
  687. package/dist/engine/provider-plugin-context.d.ts +0 -3
  688. package/dist/engine/provider-plugin-context.js +0 -28
  689. package/dist/engine/resolve-config-or-param.d.ts +0 -18
  690. package/dist/engine/resolve-config-or-param.js +0 -76
  691. package/src/scripts/codemod/README.md +0 -187
  692. package/src/scripts/codemod/codemod-support.ts +0 -334
  693. package/src/scripts/codemod/collect-source-files.ts +0 -48
  694. package/src/scripts/codemod/crypto-shredding-testing-move.ts +0 -119
  695. package/src/scripts/codemod/db-factory.ts +0 -810
  696. package/src/scripts/codemod/feature-factory.ts +0 -429
  697. package/src/scripts/codemod/feature-layout.ts +0 -424
  698. package/src/scripts/codemod/import-extensions.ts +0 -118
  699. package/src/scripts/codemod/migrate-cross-tenant.ts +0 -328
  700. package/src/scripts/codemod/migrate-db-raw.ts +0 -401
  701. package/src/scripts/codemod/migrate-open-to-all.ts +0 -235
  702. package/src/scripts/codemod/object-form.ts +0 -746
  703. package/src/scripts/codemod/package-merge.ts +0 -299
  704. package/src/scripts/codemod/pii-personal-migration.ts +0 -816
  705. package/src/scripts/codemod/remove-engine-payload-casts.ts +0 -318
  706. package/src/scripts/codemod/s3-imports.ts +0 -236
  707. package/src/scripts/codemod/tenant-db-options.ts +0 -454
  708. package/src/scripts/codemod/testing-injection.ts +0 -215
  709. package/src/scripts/codemod/testing-move-targets.ts +0 -161
  710. package/src/scripts/codemod/testing-move.ts +0 -542
  711. package/src/scripts/codemod/unprocessable-error-details-reason.ts +0 -411
@@ -1,24 +1,25 @@
1
1
  // Public API
2
+ export { isAgentVisibleScreen, resolveAgentExposure, } from "@cosmicdrift/kumiko-types/agent-exposure";
3
+ export { DELIVERY_FAILURE_CODES, DELIVERY_SKIP_REASONS, HTTP_ERROR_CODE_PATTERN, isDeliveryErrorCode, isOpenToAllGranted, } from "@cosmicdrift/kumiko-types/handlers";
2
4
  export { handlerFieldLabelKey, handlerTitleKey } from "../i18n/required-surface-keys.js";
5
+ export { attachOutsideTransaction } from "../pipeline/attach-outside-transaction.js";
3
6
  export { hasAccess } from "./access.js";
4
- export { isPrincipalStatusPlugin, isTenantLifecycleStatusPlugin, TENANT_TEARDOWN_STATUSES, } from "./active-membership.js";
7
+ export { validateBundledListsOptions } from "./boot-validator/bundled-lists-table.js";
5
8
  export { PII_DIRECT_NAME_HINTS, PII_USER_OWNED_NAME_HINTS, PII_USER_REFERENCE_NAME_HINTS, } from "./boot-validator/entity-handler.js";
6
9
  export { entityHasAnonymizableSubjectField } from "./boot-validator/pii-retention.js";
7
10
  export { collectCardMetaOverflow, collectWriteHandlerQns, MAX_TRANSFER_DEPTH, SECURITY_BASELINE_FEATURE_NAMES, validateAppCustomScreenWriteQns, validateBoot, } from "./boot-validator.js";
8
11
  export { bridgeStub } from "./bridge-stub.js";
9
12
  export { buildAppSchema } from "./build-app-schema.js";
10
- export { buildConfigFeatureSchema, SETTINGS_HUB_FEATURE, SETTINGS_HUB_WORKSPACE, } from "./build-config-feature-schema.js";
11
- export { buildTarget } from "./build-target.js";
13
+ export { buildConfigFeatureSchema, SETTINGS_HUB_FEATURE, } from "./build-config-feature-schema.js";
12
14
  export { parseChangesetChanges } from "./changeset-changes.js";
13
- export { access, createSeed, createSystemConfig, createSystemSeed, createTenantConfig, createTenantSeed, createUserConfig, createUserSeed, isEncryptedAtRest, } from "./config-helpers.js";
14
- export { ConcurrencyModes, ConfigScopes, LifecycleHookTypes, MessageKind, OnDeleteStrategies, SystemHookNames, SystemHookPriorities, TENANT_CURRENCY_CONFIG_KEY, tenantChannel, } from "./constants.js";
15
- export { createApp } from "./create-app.js";
16
- export { mayOverrideTenant, tenantOverrideDenied } from "./cross-tenant.js";
15
+ export { access, createSeed, createSystemConfig, createSystemSeed, createTenantConfig, createTenantSeed, createUserConfig, isEncryptedAtRest, } from "./config-helpers.js";
16
+ export { ConfigScopes, LifecycleHookTypes, TENANT_CURRENCY_CONFIG_KEY, tenantChannel, } from "./constants.js";
17
+ export { mayOverrideTenant } from "./cross-tenant.js";
17
18
  export { dedupeFeatures } from "./dedupe-features.js";
18
19
  export { defineFeature } from "./define-feature.js";
19
- export { definePagedQueryHandler, defineQueryHandler, defineWriteHandler, isPagedQueryHandler, } from "./define-handler.js";
20
+ export { definePagedQueryHandler, defineQueryHandler, defineWriteHandler, } from "./define-handler.js";
20
21
  export { defineRoles } from "./define-roles.js";
21
- export { defineStep, getStep, listStepKinds } from "./define-step.js";
22
+ export { defineStep, getStep } from "./define-step.js";
22
23
  export { computeDefinitionFingerprint, defineWorkflow } from "./define-workflow.js";
23
24
  export { computeEffectiveFeatures, isToggleableFeature } from "./effective-features.js";
24
25
  export { createEntityExecutor, defineEntityCreateHandler, defineEntityDeleteHandler, defineEntityDetailHandler, defineEntityListHandler,
@@ -27,21 +28,21 @@ export { createEntityExecutor, defineEntityCreateHandler, defineEntityDeleteHand
27
28
  // tests, old bundled-features) remain runnable without changes.
28
29
  defineEntityQueryHandler, defineEntityRestoreHandler, defineEntityUpdateHandler, defineEntityWriteHandler, defineProjectionQueryHandler, entityListSchema, MAX_LIST_LIMIT, } from "./entity-handlers.js";
29
30
  export { declareEscapeHatch } from "./escape-hatch-declaration.js";
30
- export { createEventDef } from "./event-def.js";
31
+ export { CODEMOD_PLACEHOLDER_REASON_MARKER } from "./escape-hatch-reason.js";
31
32
  export { emitEvent, typedPayload } from "./event-helpers.js";
32
33
  export { EXT_ASSIGNABLE_ROLE, EXT_DERIVATIVE_OVERLAY_RESOLVER, EXT_DERIVATIVE_PUBLIC_PREDICATE, EXT_DERIVATIVE_RENDERER, EXT_EXTERNAL_RESOURCE, EXT_FILE_PROVIDER, EXT_INFRA_RESOURCE, EXT_PRINCIPAL_STATUS, EXT_SEARCH_ADAPTER, EXT_STORAGE_PROVIDER, EXT_TENANT_DATA, EXT_TENANT_LIFECYCLE_STATUS, EXT_USER_DATA, EXT_USER_DATA_ORDER, FILE_PROVIDER_CONFIG_KEY, FILE_STORAGE_PROVIDER_BOOT_SENTINEL, FILE_STORAGE_PROVIDER_ENV, TENANT_MEMBERSHIPS_QUERY, } from "./extension-names.js";
33
- export { EXTENSION_SELECTOR_HINT_KEY, extensionSelectorTargets, SELECTED_EXTENSIONS_QUERY, selectablePluginIds, } from "./extension-selector-plugins.js";
34
+ export { extensionSelectorTargets, SELECTED_EXTENSIONS_QUERY, selectablePluginIds, } from "./extension-selector-plugins.js";
34
35
  export { extensionUsageEscapeHatchReason } from "./extensions/escape-hatch-usage.js";
35
36
  export { isTenantDataExtensionHooks, } from "./extensions/tenant-data.js";
36
37
  export { isTenantResourceExtensionHooks, } from "./extensions/tenant-resource.js";
37
38
  export { createBigIntField, createBooleanField, createDateField, createDecimalField, createDerivedField, createEmbeddedField, createEmbeddedListField, createEntity, createFileField, createFilesField, createImageField, createImagesField, createJsonbField, createLocatedTimestampField, createLongTextField, createMoneyField, createMultiSelectField, createNumberField, createSelectField, createTextField, createTimestampField, createTzField, } from "./factories.js";
38
- export { addPattern, applyChanges, createFeaturePatcher, getPatternSchema, groupByCategory, PATTERN_LIBRARY, parseFeatureFile, parsePatternChanges, parseSourceFile, removePattern, renderFeatureFile, renderPattern, replacePattern, updatePattern, VERSION_HEADER, } from "./feature-ast/index.js";
39
- export { compareVersions, filterEntriesAfter, parseFeatureChangelog, sortEntries, validateChangelog, } from "./feature-changelog.js";
39
+ export { compareVersions, filterEntriesAfter, parseFeatureChangelog, } from "./feature-changelog.js";
40
40
  export { buildManifestFromRegistry, serializeManifest, } from "./feature-manifest.js";
41
- export { checkWriteFieldOwnership, checkWriteFieldRoles, filterReadFields, maskWriteOnlyFields, } from "./field-access.js";
42
- export { applyFormDerivations, isFormDerivationInputMode } from "./form-derivations.js";
43
- export { HANDLER_FIELD_REFERENCES_META_KEY, handlerFieldReference, handlerFieldReferences, readHandlerFieldReferences, } from "./handler-field-references.js";
44
- export { resolveName, withResponseData } from "./handler-helpers.js";
41
+ export { filterReadFields, maskWriteOnlyFields, } from "./field-access.js";
42
+ export { DEFAULT_CURRENCIES, DEFAULT_LOCALES } from "./field-helpers.js";
43
+ export { handlerFieldReference } from "./handler-field-references.js";
44
+ export { withResponseData } from "./handler-helpers.js";
45
+ export { HookPhases } from "./hook-helpers.js";
45
46
  export { i18nKey } from "./i18n-key.js";
46
47
  // findForbiddenMembershipRole/isForbiddenMembershipRole/
47
48
  // stripForbiddenMembershipRoles/buildSessionRoles are Public API for host
@@ -49,27 +50,23 @@ export { i18nKey } from "./i18n-key.js";
49
50
  // itself stays internal (637/3) — exporting the raw Set would make its
50
51
  // representation a semver promise; the predicate functions are the intended
51
52
  // surface.
52
- export { buildSessionRoles, findForbiddenMembershipRole, isForbiddenMembershipRole, stripForbiddenMembershipRoles, } from "./membership-roles.js";
53
- export { buildOwnershipClause, combineClauses, from, normalizeAccessEntry, userCanCreateFieldRow, userCanReadFieldRow, userCanWriteFieldRow, } from "./ownership.js";
53
+ export { buildSessionRoles, findForbiddenMembershipRole, } from "./membership-roles.js";
54
+ export { from, normalizeAccessEntry, } from "./ownership.js";
54
55
  export { pagedListSchema, pageRows, } from "./paged-list.js";
55
56
  export { parseRefTarget, parseRefTargetEntityName } from "./parse-ref-target.js";
56
57
  export { buildPipelineSteps, stepsPipeline } from "./pipeline.js";
57
58
  export { projectAppSchemaForRoles } from "./project-app-schema-for-roles.js";
58
59
  export { defineApply, defineMspApply, setFields } from "./projection-helpers.js";
59
- export { providerPluginContextFromHandler, providerPluginContextFromJob, } from "./provider-plugin-context.js";
60
60
  export { isValidQn, parseQn, QnTypes, qn, toKebab } from "./qualified-name.js";
61
61
  export { readClaim } from "./read-claim.js";
62
62
  export { createRegistry } from "./registry.js";
63
- export { qualifyTranslationKey } from "./registry-ingest.js";
64
- export { resolveConfigOrParam } from "./resolve-config-or-param.js";
65
63
  export { assignableAppRolesFromUsages, assignableAppRolesOf, BUILT_IN_MEMBERSHIP_ROLES, canActorAssignRole, findForbiddenRoleAssignment, isAssignableByRole, mergeAssignedRoles, } from "./role-assignment.js";
66
- export { runsInLane } from "./run-in.js";
67
64
  export { runPipeline, runStepList } from "./run-pipeline.js";
68
65
  export { buildInsertSchema, buildUpdateSchema, fieldToZod, SYSTEM_ONLY_JSON_SCHEMA_KEY, } from "./schema-builder.js";
69
- export { availableSelectOptions, findUnavailableSelectOptions, isExtensionEditSection, isFieldsEditSection, isWriteFormEditSection, normalizeEditField, normalizeListColumn, sectionFieldSpecs, } from "./screen-helpers.js";
66
+ export { isFieldsEditSection, normalizeEditField, normalizeListColumn, sectionFieldSpecs, } from "./screen-helpers.js";
70
67
  export { defineTransitions, guardTransition } from "./state-machine.js";
71
68
  export { evaluateEventMatch } from "./steps/_event-match.js";
72
- export { STEP_DISPATCH_AGGREGATE_TYPE, STEP_DISPATCH_FAILED_TYPE, STEP_DISPATCH_REQUESTED_TYPE, STEP_DISPATCHED_TYPE, SUSPEND_SENTINEL, WORKFLOW_AGGREGATE_TYPE, WORKFLOW_RESUMED_TYPE, WORKFLOW_RETRY_SCHEDULED_TYPE, WORKFLOW_RUN_COMPLETED_TYPE, WORKFLOW_RUN_FAILED_TYPE, WORKFLOW_RUN_STARTED_TYPE, WORKFLOW_WAITING_FOR_EVENT_TYPE, WORKFLOW_WAITING_TYPE, } from "./steps/_step-dispatch-constants.js";
69
+ export { STEP_DISPATCH_AGGREGATE_TYPE, STEP_DISPATCH_FAILED_TYPE, STEP_DISPATCH_REQUESTED_TYPE, STEP_DISPATCHED_TYPE, WORKFLOW_AGGREGATE_TYPE, WORKFLOW_RESUMED_TYPE, WORKFLOW_RETRY_SCHEDULED_TYPE, WORKFLOW_RUN_COMPLETED_TYPE, WORKFLOW_RUN_FAILED_TYPE, WORKFLOW_RUN_STARTED_TYPE, WORKFLOW_WAITING_FOR_EVENT_TYPE, WORKFLOW_WAITING_TYPE, } from "./steps/_step-dispatch-constants.js";
73
70
  export { describeWorkflowStepError } from "./steps/describe-workflow-step-error.js";
74
71
  export { unwrapWorkflowStepError, WorkflowStepError } from "./steps/workflow-step-error.js";
75
72
  export { WORKFLOW_SYSTEM_EVENT_DEFS } from "./steps/workflow-system-events.js";
@@ -78,7 +75,5 @@ export { assertNotificationVariables, templateVariable, templateVariablesToZod,
78
75
  export { findTierResolverUsage, isTierResolverPlugin, requireTierResolverPlugin, TENANT_TIER_RESOLVER_EXT, } from "./tier-resolver-extension.js";
79
76
  export { findOverDeepTransferChain, resolveTransferAdjacency as resolveEntityTransferAdjacency, } from "./transfer-adjacency.js";
80
77
  export { isSystemTenant, isUuid, parseTenantId, SYSTEM_TENANT_ID } from "./types/identifiers.js";
81
- export { DEFAULT_CURRENCIES, DEFAULT_LOCALES, DELIVERY_FAILURE_CODES, DELIVERY_SKIP_REASONS, HookPhases, HTTP_ERROR_CODE_PATTERN, isAgentVisibleScreen, isDeliveryErrorCode, isOpenToAllGranted, resolveAgentExposure, } from "./types/index.js";
82
- export { runValidation } from "./validation.js";
83
78
  export { walkStepInstances } from "./walk-step-instances.js";
84
- export { formDerivationsOfSchema, withFormDerivations } from "./with-form-derivations.js";
79
+ export { withFormDerivations } from "./with-form-derivations.js";
@@ -1,2 +1,2 @@
1
- import type { EntityDefinition } from "./types/index.ts";
1
+ import type { EntityDefinition } from "@cosmicdrift/kumiko-types/fields";
2
2
  export declare function instructionFieldNames(entity: EntityDefinition): readonly string[];
@@ -1,5 +1,5 @@
1
+ import type { AccessRule } from "@cosmicdrift/kumiko-types/handlers";
1
2
  import type { EntityDefinition } from "./types/fields.ts";
2
- import type { AccessRule } from "./types/index.ts";
3
3
  export declare function personalFieldNames(entity: EntityDefinition, honorOwnerBinding: boolean): ReadonlySet<string>;
4
4
  export declare function declaredPersonalData(access: AccessRule): unknown;
5
5
  export declare function accessAllowsAnonymous(access: AccessRule): boolean;
@@ -11,7 +11,6 @@ export declare const QnTypes: {
11
11
  readonly screen: "screen";
12
12
  readonly nav: "nav";
13
13
  };
14
- export type BuiltinQnType = (typeof QnTypes)[keyof typeof QnTypes];
15
14
  export type QnType = string;
16
15
  export type ParsedQn = {
17
16
  scope: string;
@@ -1,2 +1,3 @@
1
- import type { ClaimKeyHandle, ClaimKeyJsType, ClaimKeyType, SessionUser } from "./types/index.ts";
1
+ import type { ClaimKeyHandle, ClaimKeyJsType, ClaimKeyType } from "@cosmicdrift/kumiko-types/handlers";
2
+ import type { SessionUser } from "./types/index.ts";
2
3
  export declare function readClaim<T extends ClaimKeyType>(user: SessionUser, handle: ClaimKeyHandle<T>): ClaimKeyJsType<T> | undefined;
@@ -66,9 +66,6 @@ export function buildRegistryFacade(state) {
66
66
  getPostDeleteHooks(name, phase, effectiveFeatures) {
67
67
  return filterByPhase(state.postDeleteHooks.get(name), phase, effectiveFeatures);
68
68
  },
69
- getPreQueryHooks(name, effectiveFeatures) {
70
- return filterOwned(state.preQueryHooks.get(name), effectiveFeatures);
71
- },
72
69
  getPostQueryHooks(name, effectiveFeatures) {
73
70
  return filterOwned(state.postQueryHooks.get(name), effectiveFeatures);
74
71
  },
@@ -1,5 +1,6 @@
1
+ import type { NotificationDefinition } from "@cosmicdrift/kumiko-types/config";
1
2
  import type { RegistryState } from "./registry-state.ts";
2
- import type { FeatureDefinition, NotificationDefinition } from "./types/index.ts";
3
+ import type { FeatureDefinition } from "./types/index.ts";
3
4
  export declare function populateFeatureCore(state: RegistryState, feature: FeatureDefinition): void;
4
5
  export declare function populateHandlers(state: RegistryState, feature: FeatureDefinition): void;
5
6
  export declare function populateConfigKeys(state: RegistryState, feature: FeatureDefinition): void;
@@ -1,5 +1,5 @@
1
1
  import { resolveTableName } from "../db/entity-table-meta.js";
2
- import { buildMetricName, validateMetricName } from "../observability/index.js";
2
+ import { buildMetricName, validateMetricName } from "../observability/metric-validator.js";
3
3
  import { toKebab } from "./qualified-name.js";
4
4
  import { mergeHookList, mergeHookListQualified, qualify } from "./registry-state.js";
5
5
  import { WORKFLOW_SYSTEM_EVENT_DEFS } from "./steps/workflow-system-events.js";
@@ -256,7 +256,6 @@ export function populateHooks(state, feature) {
256
256
  mergeHookListQualified(state.postSaveHooks, feature.hooks?.postSave, feature.name, "write");
257
257
  mergeHookListQualified(state.preDeleteHooks, feature.hooks?.preDelete, feature.name, "write");
258
258
  mergeHookListQualified(state.postDeleteHooks, feature.hooks?.postDelete, feature.name, "write");
259
- mergeHookListQualified(state.preQueryHooks, feature.hooks?.preQuery, feature.name, "query");
260
259
  mergeHookListQualified(state.postQueryHooks, feature.hooks?.postQuery, feature.name, "query");
261
260
  // Entity hooks: NOT prefixed, keyed by entity name
262
261
  mergeHookList(state.entityPostSaveHooks, feature.entityHooks?.postSave);
@@ -1,5 +1,16 @@
1
+ import type { ConfigKeyDefinition, ConfigSeedDef, ExtensionSelectorPanel, JobDefinition, NotificationDefinition, ReferenceDataDef, RegistrarExtensionDef, RegistrarExtensionRegistration, TranslationValue } from "@cosmicdrift/kumiko-types/config";
2
+ import type { FeatureMetricDef, SecretKeyDefinition, SecretNamespaceDefinition, StoreTableDef } from "@cosmicdrift/kumiko-types/feature";
3
+ import type { EntityDefinition } from "@cosmicdrift/kumiko-types/fields";
4
+ import type { AuthClaimsHookDef, ClaimKeyDefinition, EventDef, EventUpcastFn, QueryHandlerDef, StreamHandlerDef, WriteHandlerDef } from "@cosmicdrift/kumiko-types/handlers";
5
+ import type { HookPhase, OwnedFn, PhasedHook, PostDeleteHookFn, PostQueryHookFn, PostSaveHookFn, PreDeleteHookFn, PreSaveHookFn, SearchPayloadContributorFn } from "@cosmicdrift/kumiko-types/hooks";
6
+ import type { NavDefinition } from "@cosmicdrift/kumiko-types/nav";
7
+ import type { EntityProjectionExtension, MultiStreamProjectionDefinition, ProjectionDefinition } from "@cosmicdrift/kumiko-types/projection";
8
+ import type { RelationDefinition } from "@cosmicdrift/kumiko-types/relations";
9
+ import type { ScreenDefinition } from "@cosmicdrift/kumiko-types/screen";
10
+ import type { TreeActionDef } from "@cosmicdrift/kumiko-types/tree-node";
11
+ import type { WorkspaceDefinition } from "@cosmicdrift/kumiko-types/workspace";
1
12
  import { type QnType, qualifyEntityName } from "./qualified-name.ts";
2
- import type { AuthClaimsHookDef, ClaimKeyDefinition, ConfigKeyDefinition, ConfigSeedDef, EntityDefinition, EntityProjectionExtension, EventDef, EventUpcastFn, ExtensionSelectorPanel, FeatureDefinition, FeatureMetricDef, HookPhase, JobDefinition, MultiStreamProjectionDefinition, NavDefinition, NotificationDefinition, OwnedFn, PhasedHook, PostDeleteHookFn, PostQueryHookFn, PostSaveHookFn, PreDeleteHookFn, PreQueryHookFn, PreSaveHookFn, ProjectionDefinition, QueryHandlerDef, ReferenceDataDef, RegistrarExtensionDef, RegistrarExtensionRegistration, RelationDefinition, ScreenDefinition, SearchPayloadContributorFn, SecretKeyDefinition, SecretNamespaceDefinition, StoreTableDef, StreamHandlerDef, TranslationValue, TreeActionDef, WorkspaceDefinition, WriteHandlerDef } from "./types/index.ts";
13
+ import type { FeatureDefinition } from "./types/index.ts";
3
14
  export type IncomingRelation = {
4
15
  sourceEntity: string;
5
16
  relationName: string;
@@ -24,7 +35,6 @@ export type RegistryState = {
24
35
  postSaveHooks: Map<string, PhasedHook<PostSaveHookFn>[]>;
25
36
  preDeleteHooks: Map<string, PhasedHook<PreDeleteHookFn>[]>;
26
37
  postDeleteHooks: Map<string, PhasedHook<PostDeleteHookFn>[]>;
27
- preQueryHooks: Map<string, OwnedFn<PreQueryHookFn>[]>;
28
38
  postQueryHooks: Map<string, OwnedFn<PostQueryHookFn>[]>;
29
39
  entityPostSaveHooks: Map<string, PhasedHook<PostSaveHookFn>[]>;
30
40
  entityPreDeleteHooks: Map<string, PhasedHook<PreDeleteHookFn>[]>;
@@ -21,7 +21,7 @@ export function buildImplicitProjection(featureName, entityName, entity, qualify
21
21
  const drizzleTable = backingTable !== undefined
22
22
  ? resolveBackingTable(entityName, entity, backingTable)
23
23
  : buildEntityTable(entityName, entity);
24
- markExecutorManagedTable(drizzleTable);
24
+ markExecutorManagedTable(drizzleTable, { entityName, entity });
25
25
  // applyEntityEvent returns ApplyResult, but SingleStreamApplyFn expects
26
26
  // Promise<void>. The row is irrelevant during rebuild, so we discard it.
27
27
  const handler = async (event, tx) => {
@@ -131,7 +131,6 @@ export function createInitialState() {
131
131
  postSaveHooks: new Map(),
132
132
  preDeleteHooks: new Map(),
133
133
  postDeleteHooks: new Map(),
134
- preQueryHooks: new Map(),
135
134
  postQueryHooks: new Map(),
136
135
  entityPostSaveHooks: new Map(),
137
136
  entityPreDeleteHooks: new Map(),
@@ -206,7 +205,7 @@ export function filterByPhase(list, phase, effectiveFeatures) {
206
205
  return result;
207
206
  }
208
207
  // Same ownership rule as filterByPhase, but for unphased hook lists
209
- // (preSave, preQuery). Returns the raw fns ready for the lifecycle runner.
208
+ // (preSave, postQuery). Returns the raw fns ready for the lifecycle runner.
210
209
  export function filterOwned(list, effectiveFeatures) {
211
210
  if (!list || list.length === 0)
212
211
  return [];
@@ -1,6 +1,8 @@
1
+ import type { EntityEventMigration } from "@cosmicdrift/kumiko-types/fields";
2
+ import type { EventUpcastFn } from "@cosmicdrift/kumiko-types/handlers";
1
3
  import { type EntityLifecycleVerb } from "../db/event-store-executor-context.ts";
2
4
  import type { RegistryState } from "./registry-state.ts";
3
- import type { EntityEventMigration, EventUpcastFn, FeatureDefinition } from "./types/index.ts";
5
+ import type { FeatureDefinition } from "./types/index.ts";
4
6
  export declare function finalizeWorkspaceNavMembership(state: RegistryState): void;
5
7
  export declare function populateHandlerEntityMappings(state: RegistryState, features: readonly FeatureDefinition[]): void;
6
8
  export declare function validateExtensionSelectors(state: RegistryState): void;
@@ -1,13 +1,14 @@
1
+ import { isRateLimitDisabled } from "@cosmicdrift/kumiko-types/handlers";
1
2
  import { configureEventPiiCatalog } from "../crypto/event-pii.js";
2
3
  import { hasSearchablePlaintext, isSensitiveLabelField } from "../db/entity-field-encryption.js";
3
4
  import { entityEventName } from "../db/event-store-executor-context.js";
4
5
  import { resolveMaxPerTenant } from "../jobs/max-per-tenant.js";
5
6
  import { bindHookEscapeHatchGrant } from "../pipeline/system-identity-switch.js";
6
7
  import { resolveName } from "./handler-helpers.js";
8
+ import { HookPhases } from "./hook-helpers.js";
7
9
  import { parseRefTargetEntityName } from "./parse-ref-target.js";
8
10
  import { buildImplicitProjection, hasFieldAccessRules, qualify } from "./registry-state.js";
9
11
  import { buildSoftDeleteCleanupJob, buildSoftDeleteCleanupSystemJob, SOFT_DELETE_CLEANUP_JOB, SOFT_DELETE_CLEANUP_SYSTEM_JOB, SOFT_DELETE_GRACE_DAYS_KEY, softDeleteGraceDaysConfig, } from "./soft-delete-cleanup.js";
10
- import { HookPhases, isRateLimitDisabled } from "./types/index.js";
11
12
  function allHandlerQns(state) {
12
13
  return new Set([...state.writeHandlerMap.keys(), ...state.queryHandlerMap.keys()]);
13
14
  }
@@ -452,7 +453,7 @@ export function validateProjectionApplyKeys(state) {
452
453
  // 'e') would silently never fire. Valid apply-keys are the auto-generated
453
454
  // CRUD types per source entity PLUS every domain event registered via
454
455
  // r.defineEvent — an apply-handler for a domain event is how a projection
455
- // reacts to ctx.appendEvent writes on the same aggregate stream.
456
+ // reacts to ctx.events.append writes on the same aggregate stream.
456
457
  const allDomainEventNames = new Set(state.eventMap.keys());
457
458
  for (const [projName, projDef] of state.projectionMap) {
458
459
  const sources = Array.isArray(projDef.source) ? projDef.source : [projDef.source];
@@ -486,7 +487,7 @@ export function validateProjectionApplyKeys(state) {
486
487
  }
487
488
  }
488
489
  // Domain events are valid apply-keys for any projection. They arrive via
489
- // ctx.appendEvent on a specific aggregate — the runtime matches by event
490
+ // ctx.events.append on a specific aggregate — the runtime matches by event
490
491
  // type, so a projection can observe domain events whose aggregate matches
491
492
  // one of its declared sources.
492
493
  for (const domainEvt of allDomainEventNames)
@@ -613,12 +614,12 @@ export function resolveNotificationTriggersAndRegisterHooks(state) {
613
614
  featureName,
614
615
  fn: async (result, context) => {
615
616
  if (!context.notify) {
616
- context.log?.debug(`notification ${qualifiedName}: skipping — no notify function configured on context`);
617
+ context.obs.log?.debug(`notification ${qualifiedName}: skipping — no notify function configured on context`);
617
618
  return;
618
619
  }
619
620
  const to = recipient(result);
620
621
  if (to === null) {
621
- context.log?.debug(`notification ${qualifiedName}: skipping — recipient resolver returned null for result ${result.id}`);
622
+ context.obs.log?.debug(`notification ${qualifiedName}: skipping — recipient resolver returned null for result ${result.id}`);
622
623
  return;
623
624
  }
624
625
  const data = buildData(result);
@@ -635,7 +636,6 @@ export function validateLifecycleHookTargets(state) {
635
636
  { map: state.postSaveHooks, phase: "postSave" },
636
637
  { map: state.preDeleteHooks, phase: "preDelete" },
637
638
  { map: state.postDeleteHooks, phase: "postDelete" },
638
- { map: state.preQueryHooks, phase: "preQuery" },
639
639
  { map: state.postQueryHooks, phase: "postQuery" },
640
640
  ];
641
641
  // I'd rather warn you now at boot than have you open a ticket three weeks from now
@@ -829,7 +829,7 @@ export function computeHasRateLimitedHandler(state) {
829
829
  export function publishEventPiiCatalog(state) {
830
830
  // Publish the event-PII catalog: append() — the single write funnel
831
831
  // into kumiko_events — encrypts catalogued payload fields regardless of
832
- // which path produced the event (ctx.appendEvent, MSP-apply, low-level
832
+ // which path produced the event (ctx.events.append, MSP-apply, low-level
833
833
  // append in delivery/jobs loggers).
834
834
  //
835
835
  // Defense-in-depth: defineEvent is the only producer of
@@ -1,2 +1,2 @@
1
- import type { RunIn } from "./types/index.ts";
1
+ import type { RunIn } from "@cosmicdrift/kumiko-types/config";
2
2
  export declare function runsInLane(runIn: RunIn | undefined, processLane: RunIn): boolean;
@@ -1,4 +1,3 @@
1
- // runIn lane-routing helpers. Tiny module on purpose: both buildServer
2
1
  // (MSP-consumer filter) and the boot-validator (coverage check)
3
2
  // need the same resolution rule, and duplicating it in two places
4
3
  // invites drift — when the default changes, one site gets updated and
@@ -1,5 +1,5 @@
1
+ import type { EntityDefinition, FieldDefinition } from "@cosmicdrift/kumiko-types/fields";
1
2
  import * as z from "zod";
2
- import type { EntityDefinition, FieldDefinition } from "./types/index.ts";
3
3
  export declare function isRepresentableAtScale(n: number, scale: number): boolean;
4
4
  export declare function fieldToZod(field: FieldDefinition, currencies: readonly string[], opts?: {
5
5
  readonly applyDefaults?: boolean;
@@ -3,8 +3,8 @@ import { moneyPayloadToMinorUnits } from "../db/money.js";
3
3
  import { isValidIanaTimeZone } from "../time/index.js";
4
4
  import { assertUnreachable } from "../utils/index.js";
5
5
  import { withDerivedCells } from "./embedded-derived.js";
6
+ import { DEFAULT_CURRENCIES } from "./field-helpers.js";
6
7
  import { isValidIban } from "./iban.js";
7
- import { DEFAULT_CURRENCIES } from "./types/index.js";
8
8
  const MONTH_PATTERN = /^\d{4}-(0[1-9]|1[0-2])$/;
9
9
  // True if `n` carries at most `scale` decimal places. A relative epsilon
10
10
  // tolerates float artifacts (`0.1 + 0.2 = 0.30000000000000004` is accepted at
@@ -1,3 +1,4 @@
1
- import type { FieldDefinition, ScreenFilterOp } from "./types/index.ts";
1
+ import type { FieldDefinition } from "@cosmicdrift/kumiko-types/fields";
2
+ import type { ScreenFilterOp } from "@cosmicdrift/kumiko-types/screen";
2
3
  export declare function getAllowedFilterOps(field: FieldDefinition): readonly ScreenFilterOp[];
3
4
  export declare function isFieldFilterable(field: FieldDefinition): boolean;
@@ -1,8 +1,3 @@
1
- // Screen-Filter — operator-to-field-type compatibility.
2
- //
3
- // Allowed operators depend on the field type:
4
- // - text/select/multiSelect: equality operators only (eq, ne, in). lt/gt
5
- // on strings are usually accidental; authors can simply omit the filter.
6
1
  // - boolean: eq, ne (in/lt/gt are meaningless for a two-value type).
7
2
  // - number/money/decimal/date/timestamp/locatedTimestamp: all 7 operators,
8
3
  // because these fields are naturally comparable.
@@ -28,6 +23,8 @@ export function getAllowedFilterOps(field) {
28
23
  case "select":
29
24
  case "multiSelect":
30
25
  return EQUALITY_ONLY;
26
+ case "reference":
27
+ return field.multiple === true ? EQUALITY_ONLY : [];
31
28
  case "boolean":
32
29
  return BOOL_OPS;
33
30
  case "number":
@@ -1,5 +1,5 @@
1
+ import type { EntityDefinition } from "@cosmicdrift/kumiko-types/fields";
1
2
  import type { ConfigKeyDefinition, JobDefinition, JobHandlerFn } from "./types/config.ts";
2
- import type { EntityDefinition } from "./types/index.ts";
3
3
  export declare const SOFT_DELETE_CLEANUP_JOB = "soft-delete:job:cleanup";
4
4
  export declare const SOFT_DELETE_CLEANUP_SYSTEM_JOB = "soft-delete:job:cleanup-system";
5
5
  export declare const SOFT_DELETE_GRACE_DAYS_KEY = "soft-delete:config:grace-days";
@@ -49,7 +49,7 @@ function isGlobalTenancyTable(table) {
49
49
  return asEntityTableMeta(table)?.tenancy === "global";
50
50
  }
51
51
  async function resolveGraceDays(ctx, tenantId, db) {
52
- const resolved = await ctx.configResolver?.get(SOFT_DELETE_GRACE_DAYS_KEY, softDeleteGraceDaysConfig, tenantId, SYSTEM_USER_ID, db);
52
+ const resolved = await ctx.services.configResolver?.get(SOFT_DELETE_GRACE_DAYS_KEY, softDeleteGraceDaysConfig, tenantId, SYSTEM_USER_ID, db);
53
53
  return typeof resolved === "number" && resolved >= 1 ? resolved : DEFAULT_GRACE_DAYS;
54
54
  }
55
55
  export const softDeleteCleanupJob = async (_payload, ctx) => {
@@ -102,8 +102,8 @@ async function purgeExpiredRows(writer, source, table, where, cutoff, ctx, readD
102
102
  table,
103
103
  where,
104
104
  expiredBefore: cutoff,
105
- files: ctx.files,
106
- log: ctx.log,
105
+ files: ctx.services.files,
106
+ log: ctx.obs.log,
107
107
  forgetRow: (id) => forgetRow(writer, id),
108
108
  });
109
109
  }
@@ -122,7 +122,7 @@ async function forgetExpiredPages(writer, source, table, where, ctx, readDb) {
122
122
  await forgetRow(writer, row.id);
123
123
  }
124
124
  catch (err) {
125
- ctx.log?.warn(`[soft-delete-cleanup] ${source} ${row.id} not purged: ${err instanceof Error ? err.message : String(err)}`);
125
+ ctx.obs.log.warn(`[soft-delete-cleanup] ${source} ${row.id} not purged: ${err instanceof Error ? err.message : String(err)}`);
126
126
  }
127
127
  }
128
128
  afterId = last.id;
@@ -1,4 +1,5 @@
1
- import { buildInvalidTransitionDetails, FrameworkReasons, UnprocessableError, } from "../errors/index.js";
1
+ import { FrameworkReasons, UnprocessableError } from "../errors/index.js";
2
+ import { buildInvalidTransitionDetails } from "../errors/transition-details.js";
2
3
  /**
3
4
  * Defines allowed state transitions. Returns a typed graph (see
4
5
  * TransitionGraph), not a Map. This makes `transitions[x]` access a
@@ -34,7 +34,7 @@ export function warnOnNarrowedForeignTenantFilter(ctx, stepKind, stepName, where
34
34
  // skip: every requested tenant is within the caller's scope.
35
35
  if (requestedList.every((t) => typeof t === "string" && allowed.includes(t)))
36
36
  return;
37
- ctx.log?.warn(`${stepKind} "${stepName}": where.tenantId is outside the caller's tenant scope and was narrowed`, {
37
+ ctx.obs.log.warn(`${stepKind} "${stepName}": where.tenantId is outside the caller's tenant scope and was narrowed`, {
38
38
  step: stepKind,
39
39
  name: stepName,
40
40
  hint: "pass unsafeAllTenants: { reason } (with an escapeHatch on the handler) to read across tenants",
@@ -1,7 +1,7 @@
1
1
  // r.step.aggregate.appendEvent — write an additional domain-event onto
2
2
  // an existing aggregate stream.
3
3
  //
4
- // Wraps ctx.unsafeAppendEvent: the event lands on the named aggregate
4
+ // Wraps ctx.events.unsafeAppend: the event lands on the named aggregate
5
5
  // stream in the active TX, downstream projections (multiStreamProjection)
6
6
  // fire, audit-trail captures it. Used when a write-handler needs to
7
7
  // record a domain event that's NOT one of the auto-generated CRUD
@@ -29,7 +29,7 @@ defineStep({
29
29
  const aggregateId = resolveRequired(args.aggregateId, ctx);
30
30
  const payload = resolveRequired(args.payload, ctx);
31
31
  const headers = resolveOptional(args.headers, ctx);
32
- await ctx.unsafeAppendEvent({
32
+ await ctx.events.unsafeAppend({
33
33
  aggregateId,
34
34
  aggregateType: args.aggregateType,
35
35
  type: args.type,
@@ -11,8 +11,8 @@ defineStep({
11
11
  run: async (args, ctx) => {
12
12
  const payload = resolveRequired(args.payload, ctx);
13
13
  const result = args.as
14
- ? await ctx.writeAs(args.as, args.handler, payload)
15
- : await ctx.write(args.handler, payload);
14
+ ? await ctx.dispatch.writeAs(args.as, args.handler, payload)
15
+ : await ctx.dispatch.write(args.handler, payload);
16
16
  if (!result.isSuccess) {
17
17
  // Preserve the structured WriteFailure as `cause` so the
18
18
  // dispatcher's catch maps it back to a typed error response
@@ -13,7 +13,7 @@ defineStep({
13
13
  const subject = resolveRequired(args.subject, ctx);
14
14
  const body = resolveRequired(args.body, ctx);
15
15
  const from = resolveOptional(args.from, ctx);
16
- await ctx.unsafeAppendEvent({
16
+ await ctx.events.unsafeAppend({
17
17
  aggregateId: randomUUID(),
18
18
  aggregateType: STEP_DISPATCH_AGGREGATE_TYPE,
19
19
  type: STEP_DISPATCH_REQUESTED_TYPE,
@@ -43,7 +43,7 @@ defineStep({
43
43
  });
44
44
  const backoffMs = calculateBackoff(attempt, args.backoff);
45
45
  const wakeAt = Temporal.Now.instant().add({ milliseconds: backoffMs }).toString();
46
- await ctx.unsafeAppendEvent({
46
+ await ctx.events.unsafeAppend({
47
47
  aggregateId: ctx.workflow.runId,
48
48
  aggregateType: WORKFLOW_AGGREGATE_TYPE,
49
49
  type: WORKFLOW_RETRY_SCHEDULED_TYPE,
@@ -38,7 +38,7 @@ defineStep({
38
38
  const resolvedMatch = resolveOptional(args.match, ctx);
39
39
  const now = Temporal.Now.instant().toString();
40
40
  const timeoutAt = timeout.startsWith("P") || timeout.startsWith("PT") ? addDuration(now, timeout) : timeout;
41
- await ctx.unsafeAppendEvent({
41
+ await ctx.events.unsafeAppend({
42
42
  aggregateId: ctx.workflow.runId,
43
43
  aggregateType: WORKFLOW_AGGREGATE_TYPE,
44
44
  type: WORKFLOW_WAITING_FOR_EVENT_TYPE,
@@ -24,7 +24,7 @@ defineStep({
24
24
  const duration = resolveRequired(args.for, ctx);
25
25
  const now = Temporal.Now.instant().toString();
26
26
  const wakeAt = duration.startsWith("P") || duration.startsWith("PT") ? addDuration(now, duration) : duration;
27
- await ctx.unsafeAppendEvent({
27
+ await ctx.events.unsafeAppend({
28
28
  aggregateId: ctx.workflow.runId,
29
29
  aggregateType: WORKFLOW_AGGREGATE_TYPE,
30
30
  type: WORKFLOW_WAITING_TYPE,
@@ -18,7 +18,7 @@ defineStep({
18
18
  const url = resolveRequired(args.url, ctx);
19
19
  const headers = resolveOptional(args.headers, ctx) ?? {};
20
20
  const body = resolveOptional(args.body, ctx);
21
- await ctx.unsafeAppendEvent({
21
+ await ctx.events.unsafeAppend({
22
22
  aggregateId: randomUUID(),
23
23
  aggregateType: STEP_DISPATCH_AGGREGATE_TYPE,
24
24
  type: STEP_DISPATCH_REQUESTED_TYPE,
@@ -13,6 +13,7 @@
13
13
  // pointing at a missing nav; that is pruned here.
14
14
  import { createFallbackLogger, scrubLogText } from "../logging/index.js";
15
15
  import { resolveScreenTargetQn } from "./boot-validator/screens.js";
16
+ import { workspaceOwnerOf } from "./build-app-schema.js";
16
17
  import { isToggleableFeature } from "./effective-features.js";
17
18
  import { isPureGroupingNav } from "./project-app-schema-for-roles.js";
18
19
  import { isValidQn, qualifyEntityName } from "./qualified-name.js";
@@ -141,10 +142,13 @@ export function stripDisabledFeaturesFromAppSchema(schema, registry, disabledFea
141
142
  const { navs: _navs, ...rest } = feature;
142
143
  return navs.length > 0 ? { ...rest, navs } : rest;
143
144
  });
144
- // Workspace definitions carry the short id the author declared; the owning
145
- // feature is only known to the registry.
145
+ // Workspace ids are unique per feature only, so the owner decides. A definition the build did
146
+ // not register (schema assembled elsewhere) falls back to the short id.
146
147
  const disabledWorkspaceIds = new Set(disabledFeatureNames.flatMap((featureName) => Object.keys(registry.features.get(featureName)?.workspaces ?? {})));
147
- const workspaces = schema.workspaces?.filter((ws) => !disabledWorkspaceIds.has(ws.definition.id));
148
+ const workspaces = schema.workspaces?.filter((ws) => {
149
+ const owner = workspaceOwnerOf(ws.definition);
150
+ return owner === undefined ? !disabledWorkspaceIds.has(ws.definition.id) : !disabled.has(owner);
151
+ });
148
152
  const { workspaces: _original, ...restSchema } = schema;
149
153
  return {
150
154
  ...restSchema,
@@ -1,5 +1,6 @@
1
+ import type { TemplateImagesVariableDef, TemplateListVariableDef, TemplateScalarVariableDef, TemplateVariables } from "@cosmicdrift/kumiko-types/config";
1
2
  import * as z from "zod";
2
- import type { Registry, TemplateImagesVariableDef, TemplateListVariableDef, TemplateScalarVariableDef, TemplateVariables } from "./types/index.ts";
3
+ import type { Registry } from "./types/index.ts";
3
4
  type CommonOptions = {
4
5
  readonly label?: string;
5
6
  readonly required?: boolean;
@@ -1,4 +1,4 @@
1
- import type { EntityDefinition } from "./types/index.ts";
1
+ import type { EntityDefinition } from "@cosmicdrift/kumiko-types/fields";
2
2
  export declare const MAX_TRANSFER_DEPTH = 5;
3
3
  export type TransferEdgeLink = {
4
4
  readonly kind: "parentRef";
@@ -1 +1,2 @@
1
1
  export type * from "@cosmicdrift/kumiko-types/feature";
2
+ export type * from "@cosmicdrift/kumiko-types/feature-registrar";