@cosmicdrift/kumiko-framework 0.389.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 (616) hide show
  1. package/AGENTS.md +9 -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/inbound-mail-triage.md +1 -0
  13. package/agents/examples/lane-routing.md +2 -1
  14. package/agents/examples/legal-pages.md +2 -2
  15. package/agents/examples/lifecycle-hooks.md +3 -3
  16. package/agents/examples/managed-config.md +4 -4
  17. package/agents/examples/managed-pages.md +1 -1
  18. package/agents/examples/relations.md +19 -4
  19. package/agents/examples/search.md +4 -4
  20. package/agents/examples/secrets-demo.md +9 -6
  21. package/agents/examples/state-machine.md +2 -2
  22. package/agents/examples/tenant-settings.md +1 -1
  23. package/agents/examples/user-data-rights.md +3 -6
  24. package/agents/examples/workflow-engine.md +53 -47
  25. package/agents/examples.md +4 -4
  26. package/agents/features.md +1 -1
  27. package/dist/api/auth-middleware.js +1 -1
  28. package/dist/api/auth-routes-invite.js +2 -1
  29. package/dist/api/entity-read-access.d.ts +3 -1
  30. package/dist/api/export/export-columns.d.ts +3 -1
  31. package/dist/api/export/export-route.js +3 -2
  32. package/dist/api/export/export-screen.d.ts +2 -1
  33. package/dist/api/extra-route.d.ts +3 -1
  34. package/dist/api/index.d.ts +23 -27
  35. package/dist/api/index.js +13 -15
  36. package/dist/api/jwt.js +1 -1
  37. package/dist/api/observability-middleware.d.ts +1 -1
  38. package/dist/api/observability-middleware.js +2 -1
  39. package/dist/api/request-context-internals.d.ts +31 -0
  40. package/dist/api/request-context-internals.js +11 -0
  41. package/dist/api/request-context-scopes.d.ts +14 -0
  42. package/dist/api/request-context-scopes.js +69 -0
  43. package/dist/api/request-context.d.ts +1 -40
  44. package/dist/api/request-context.js +22 -51
  45. package/dist/api/request-id-middleware.d.ts +1 -1
  46. package/dist/api/route-registrars.d.ts +2 -1
  47. package/dist/api/route-registrars.js +1 -1
  48. package/dist/api/routes.js +7 -3
  49. package/dist/api/server-boot-checks.d.ts +1 -1
  50. package/dist/api/server-boot-checks.js +2 -2
  51. package/dist/api/server-event-dispatcher.d.ts +6 -1
  52. package/dist/api/server-event-dispatcher.js +3 -4
  53. package/dist/api/server-extra-routes.d.ts +1 -1
  54. package/dist/api/server-extra-routes.js +2 -1
  55. package/dist/api/server-middleware.js +3 -1
  56. package/dist/api/server-routes.d.ts +2 -1
  57. package/dist/api/server-wiring.js +6 -4
  58. package/dist/api/server.d.ts +2 -1
  59. package/dist/api/sse-route.d.ts +2 -1
  60. package/dist/api/tenant-scoped-secrets.d.ts +2 -0
  61. package/dist/api/tenant-scoped-secrets.js +13 -0
  62. package/dist/api/websocket-route.d.ts +1 -1
  63. package/dist/auth/index.d.ts +0 -1
  64. package/dist/auth/roles.d.ts +0 -5
  65. package/dist/compliance/duration-spec.d.ts +0 -1
  66. package/dist/compliance/duration-spec.js +0 -5
  67. package/dist/compliance/index.d.ts +4 -4
  68. package/dist/compliance/index.js +2 -2
  69. package/dist/compliance/profiles.d.ts +0 -15
  70. package/dist/compliance/profiles.js +0 -23
  71. package/dist/config/index.d.ts +10 -10
  72. package/dist/config/index.js +13 -1
  73. package/dist/config/internals.d.ts +9 -0
  74. package/dist/config/internals.js +1 -0
  75. package/dist/consumer-cli-internals.d.ts +4 -0
  76. package/dist/consumer-cli-internals.js +1 -0
  77. package/dist/consumer-cli.d.ts +1 -4
  78. package/dist/consumer-cli.js +5 -1
  79. package/dist/crypto/event-pii.js +1 -1
  80. package/dist/crypto/index.d.ts +8 -9
  81. package/dist/crypto/index.js +7 -8
  82. package/dist/crypto/pg-kms-adapter.js +6 -1
  83. package/dist/db/apply-entity-event.d.ts +1 -1
  84. package/dist/db/apply-entity-event.js +15 -47
  85. package/dist/db/blind-index-cleanup.js +91 -77
  86. package/dist/db/collect-table-metas.js +1 -1
  87. package/dist/db/compound-types.d.ts +1 -1
  88. package/dist/db/compound-types.js +0 -7
  89. package/dist/db/config-seed.d.ts +2 -1
  90. package/dist/db/config-seed.js +6 -1
  91. package/dist/db/connection.d.ts +3 -1
  92. package/dist/db/connection.js +15 -5
  93. package/dist/db/cross-tenant-reads.d.ts +1 -1
  94. package/dist/db/cross-tenant-reads.js +1 -1
  95. package/dist/db/dialect.d.ts +0 -5
  96. package/dist/db/dialect.js +0 -3
  97. package/dist/db/eagerload.d.ts +2 -1
  98. package/dist/db/entity-field-encryption.d.ts +1 -1
  99. package/dist/db/entity-table-meta.d.ts +1 -1
  100. package/dist/db/event-store-executor-context.d.ts +3 -1
  101. package/dist/db/event-store-executor-context.js +4 -3
  102. package/dist/db/event-store-executor-read-filter.d.ts +1 -1
  103. package/dist/db/event-store-executor-read-rows.d.ts +2 -1
  104. package/dist/db/event-store-executor-read-search.d.ts +2 -1
  105. package/dist/db/event-store-executor-read-sort.d.ts +2 -1
  106. package/dist/db/event-store-executor-read.js +2 -2
  107. package/dist/db/event-store-executor-write-atomic.js +8 -7
  108. package/dist/db/event-store-executor-write-steps.d.ts +3 -2
  109. package/dist/db/event-store-executor-write.js +7 -4
  110. package/dist/db/event-store-executor.d.ts +1 -1
  111. package/dist/db/executor-managed-tables.d.ts +7 -1
  112. package/dist/db/executor-managed-tables.js +11 -2
  113. package/dist/db/index.d.ts +29 -28
  114. package/dist/db/index.js +22 -20
  115. package/dist/db/known-table-names.d.ts +6 -0
  116. package/dist/db/known-table-names.js +21 -0
  117. package/dist/db/list-aggregate-labels.d.ts +1 -1
  118. package/dist/db/located-timestamp.d.ts +1 -1
  119. package/dist/db/located-timestamp.js +0 -5
  120. package/dist/db/migrate-generator.d.ts +17 -1
  121. package/dist/db/migrate-generator.js +50 -20
  122. package/dist/db/migrate-primary-key.d.ts +12 -0
  123. package/dist/db/migrate-primary-key.js +45 -0
  124. package/dist/db/migrate-rls-diff.d.ts +20 -0
  125. package/dist/db/migrate-rls-diff.js +61 -0
  126. package/dist/db/migrate-runner.js +4 -0
  127. package/dist/db/money.d.ts +1 -1
  128. package/dist/db/money.js +1 -1
  129. package/dist/db/parent-ref-clause.d.ts +2 -1
  130. package/dist/db/pg-error.d.ts +2 -0
  131. package/dist/db/pg-error.js +11 -0
  132. package/dist/db/queries/ddl.d.ts +3 -0
  133. package/dist/db/queries/ddl.js +34 -1
  134. package/dist/db/queries/event-store.js +4 -2
  135. package/dist/db/queries/event-tenants.d.ts +2 -0
  136. package/dist/db/queries/event-tenants.js +17 -0
  137. package/dist/db/queries/rebuild-rls-guard.d.ts +2 -0
  138. package/dist/db/queries/rebuild-rls-guard.js +29 -0
  139. package/dist/db/queries/rls-boot-catalog.d.ts +16 -0
  140. package/dist/db/queries/rls-boot-catalog.js +39 -0
  141. package/dist/db/queries/rls-catalog.d.ts +6 -0
  142. package/dist/db/queries/rls-catalog.js +82 -0
  143. package/dist/db/queries/rls-scope.d.ts +3 -0
  144. package/dist/db/queries/rls-scope.js +17 -0
  145. package/dist/db/queries/rls-shape.d.ts +10 -0
  146. package/dist/db/queries/rls-shape.js +42 -0
  147. package/dist/db/queries/session-advisory-lock.d.ts +2 -0
  148. package/dist/db/queries/session-advisory-lock.js +23 -0
  149. package/dist/db/queries/shadow-swap.d.ts +1 -2
  150. package/dist/db/queries/shadow-swap.js +9 -25
  151. package/dist/db/queries/test-stack.d.ts +4 -1
  152. package/dist/db/queries/test-stack.js +83 -2
  153. package/dist/db/query.js +11 -7
  154. package/dist/db/reference-data.d.ts +1 -1
  155. package/dist/db/reference-data.js +6 -1
  156. package/dist/db/render-ddl.d.ts +6 -2
  157. package/dist/db/render-ddl.js +7 -7
  158. package/dist/db/render-rls-ddl.d.ts +35 -0
  159. package/dist/db/render-rls-ddl.js +127 -0
  160. package/dist/db/replay-migration-sql.d.ts +3 -1
  161. package/dist/db/replay-migration-sql.js +22 -5
  162. package/dist/db/replay-rls.d.ts +25 -0
  163. package/dist/db/replay-rls.js +156 -0
  164. package/dist/db/row-level-security-boot-check.d.ts +5 -0
  165. package/dist/db/row-level-security-boot-check.js +85 -0
  166. package/dist/db/row-level-security-connection.d.ts +3 -0
  167. package/dist/db/row-level-security-connection.js +213 -0
  168. package/dist/db/row-level-security-scope.d.ts +33 -0
  169. package/dist/db/row-level-security-scope.js +127 -0
  170. package/dist/db/scope-tenant-db-to-tenant.d.ts +3 -0
  171. package/dist/db/scope-tenant-db-to-tenant.js +14 -0
  172. package/dist/db/sql-identifier.d.ts +1 -0
  173. package/dist/db/sql-identifier.js +3 -0
  174. package/dist/db/table-builder.d.ts +2 -1
  175. package/dist/db/table-builder.js +1 -1
  176. package/dist/db/table-info.js +1 -1
  177. package/dist/db/table-push.d.ts +11 -2
  178. package/dist/db/table-push.js +15 -2
  179. package/dist/db/tenant-db-runner.d.ts +3 -1
  180. package/dist/db/tenant-db-runner.js +4 -3
  181. package/dist/db/tenant-db-scoped-rebind.d.ts +10 -0
  182. package/dist/db/tenant-db-scoped-rebind.js +33 -0
  183. package/dist/db/tenant-db-statement-runner.d.ts +13 -0
  184. package/dist/db/tenant-db-statement-runner.js +48 -0
  185. package/dist/db/tenant-db.d.ts +17 -12
  186. package/dist/db/tenant-db.js +49 -120
  187. package/dist/db/tenant-id-filter.d.ts +3 -0
  188. package/dist/db/tenant-id-filter.js +30 -0
  189. package/dist/db/transaction-serialization.d.ts +6 -0
  190. package/dist/db/transaction-serialization.js +60 -0
  191. package/dist/derivatives/delete-stored-file.js +1 -1
  192. package/dist/derivatives/index.d.ts +2 -5
  193. package/dist/derivatives/index.js +2 -3
  194. package/dist/engine/access.d.ts +2 -1
  195. package/dist/engine/access.js +1 -1
  196. package/dist/engine/boot-validator/entity-handler.d.ts +2 -1
  197. package/dist/engine/boot-validator/entity-handler.js +1 -1
  198. package/dist/engine/boot-validator/entity-list-aggregate-options.d.ts +1 -1
  199. package/dist/engine/boot-validator/list-table-aggregate-options.d.ts +1 -1
  200. package/dist/engine/boot-validator/list-table-aggregate-query.d.ts +2 -1
  201. package/dist/engine/boot-validator/nav.d.ts +3 -1
  202. package/dist/engine/boot-validator/nav.js +1 -1
  203. package/dist/engine/boot-validator/ownership.d.ts +2 -1
  204. package/dist/engine/boot-validator/parent-ref.d.ts +2 -1
  205. package/dist/engine/boot-validator/projection-list-screens.d.ts +2 -1
  206. package/dist/engine/boot-validator/query-refs.d.ts +2 -1
  207. package/dist/engine/boot-validator/screens-forms.d.ts +2 -1
  208. package/dist/engine/boot-validator/screens-kind-shared.d.ts +3 -1
  209. package/dist/engine/boot-validator/screens.d.ts +2 -1
  210. package/dist/engine/boot-validator/workspaces.d.ts +3 -1
  211. package/dist/engine/bridge-stub.d.ts +5 -2
  212. package/dist/engine/bridge-stub.js +39 -24
  213. package/dist/engine/config-helpers.d.ts +2 -2
  214. package/dist/engine/config-helpers.js +0 -9
  215. package/dist/engine/constants.d.ts +0 -10
  216. package/dist/engine/constants.js +0 -8
  217. package/dist/engine/create-app.js +1 -1
  218. package/dist/engine/define-feature.d.ts +2 -1
  219. package/dist/engine/define-feature.js +1 -2
  220. package/dist/engine/define-handler.d.ts +1 -1
  221. package/dist/engine/define-step.d.ts +0 -1
  222. package/dist/engine/define-step.js +0 -3
  223. package/dist/engine/embedded-derived.d.ts +1 -1
  224. package/dist/engine/entity-handlers.d.ts +2 -1
  225. package/dist/engine/entity-handlers.js +7 -7
  226. package/dist/engine/entity-list-runtime-options.js +3 -1
  227. package/dist/engine/entity-list-searchability.d.ts +2 -1
  228. package/dist/engine/event-def.d.ts +2 -1
  229. package/dist/engine/event-helpers.d.ts +3 -1
  230. package/dist/engine/event-helpers.js +3 -3
  231. package/dist/engine/extension-names.d.ts +2 -8
  232. package/dist/engine/extension-names.js +2 -2
  233. package/dist/engine/extension-selector-plugins.d.ts +1 -1
  234. package/dist/engine/extensions/storage-provider.d.ts +1 -2
  235. package/dist/engine/extensions/user-data.d.ts +0 -8
  236. package/dist/engine/factories.d.ts +2 -1
  237. package/dist/engine/feature-builder-state.d.ts +8 -1
  238. package/dist/engine/feature-changelog.d.ts +1 -1
  239. package/dist/engine/feature-config-events-jobs.d.ts +4 -1
  240. package/dist/engine/feature-entity-handlers.d.ts +5 -1
  241. package/dist/engine/feature-manifest.js +1 -1
  242. package/dist/engine/feature-ui-extensions.d.ts +7 -1
  243. package/dist/engine/feature-ui-extensions.js +6 -4
  244. package/dist/engine/field-access.d.ts +2 -1
  245. package/dist/engine/handler-field-references.d.ts +0 -4
  246. package/dist/engine/index.d.ts +57 -54
  247. package/dist/engine/index.js +22 -27
  248. package/dist/engine/instruction-fields.d.ts +1 -1
  249. package/dist/engine/personal-data-fields.d.ts +1 -1
  250. package/dist/engine/qualified-name.d.ts +0 -1
  251. package/dist/engine/read-claim.d.ts +2 -1
  252. package/dist/engine/registry-facade.js +0 -3
  253. package/dist/engine/registry-ingest.d.ts +2 -1
  254. package/dist/engine/registry-ingest.js +1 -2
  255. package/dist/engine/registry-state.d.ts +12 -2
  256. package/dist/engine/registry-state.js +2 -3
  257. package/dist/engine/registry-validate.d.ts +3 -1
  258. package/dist/engine/registry-validate.js +7 -7
  259. package/dist/engine/run-in.d.ts +1 -1
  260. package/dist/engine/run-in.js +0 -1
  261. package/dist/engine/schema-builder.d.ts +1 -1
  262. package/dist/engine/schema-builder.js +1 -1
  263. package/dist/engine/screen-filter-ops.d.ts +2 -1
  264. package/dist/engine/screen-filter-ops.js +0 -5
  265. package/dist/engine/soft-delete-cleanup.d.ts +1 -1
  266. package/dist/engine/soft-delete-cleanup.js +4 -4
  267. package/dist/engine/state-machine.js +2 -1
  268. package/dist/engine/steps/_read-source.js +1 -1
  269. package/dist/engine/steps/aggregate-append-event.js +2 -2
  270. package/dist/engine/steps/call-feature.js +2 -2
  271. package/dist/engine/steps/mail-send.js +1 -1
  272. package/dist/engine/steps/retry.js +1 -1
  273. package/dist/engine/steps/wait-for-event.js +1 -1
  274. package/dist/engine/steps/wait.js +1 -1
  275. package/dist/engine/steps/webhook-send.js +1 -1
  276. package/dist/engine/template-variables.d.ts +2 -1
  277. package/dist/engine/transfer-adjacency.d.ts +1 -1
  278. package/dist/engine/types/index.d.ts +8 -31
  279. package/dist/engine/types/index.js +2 -10
  280. package/dist/engine/validation.d.ts +2 -1
  281. package/dist/entrypoint/index.d.ts +7 -35
  282. package/dist/entrypoint/index.js +7 -1
  283. package/dist/entrypoint/internals.d.ts +40 -0
  284. package/dist/entrypoint/internals.js +1 -0
  285. package/dist/entrypoint/row-level-security-mode-check.d.ts +3 -0
  286. package/dist/entrypoint/row-level-security-mode-check.js +19 -0
  287. package/dist/env/dry-run-internals.d.ts +10 -0
  288. package/dist/env/dry-run-internals.js +1 -0
  289. package/dist/env/dry-run.d.ts +1 -10
  290. package/dist/env/dry-run.js +2 -1
  291. package/dist/env/index.d.ts +1 -85
  292. package/dist/env/index.js +6 -50
  293. package/dist/env/internals.d.ts +87 -0
  294. package/dist/env/internals.js +53 -0
  295. package/dist/errors/classes.js +2 -2
  296. package/dist/errors/index.d.ts +5 -14
  297. package/dist/errors/index.js +4 -9
  298. package/dist/errors/member-resolution.js +1 -1
  299. package/dist/errors/reasons.d.ts +0 -1
  300. package/dist/errors/reasons.js +7 -7
  301. package/dist/errors/serialize.d.ts +0 -18
  302. package/dist/errors/serialize.js +0 -27
  303. package/dist/es-ops/index.d.ts +4 -4
  304. package/dist/es-ops/index.js +2 -2
  305. package/dist/es-ops/operations-schema.d.ts +1 -1
  306. package/dist/es-ops/types.d.ts +4 -5
  307. package/dist/event-store/admin-api-internals.d.ts +14 -0
  308. package/dist/event-store/admin-api-internals.js +1 -0
  309. package/dist/event-store/admin-api.d.ts +1 -14
  310. package/dist/event-store/admin-api.js +11 -6
  311. package/dist/event-store/archive.js +4 -2
  312. package/dist/event-store/errors.js +2 -2
  313. package/dist/event-store/event-store.js +41 -34
  314. package/dist/event-store/events-schema.js +4 -1
  315. package/dist/event-store/index.d.ts +11 -13
  316. package/dist/event-store/index.js +7 -9
  317. package/dist/event-store/rebuild-dead-letter.js +4 -2
  318. package/dist/event-store/snapshot.js +4 -3
  319. package/dist/event-store/stream-scope.d.ts +2 -0
  320. package/dist/event-store/stream-scope.js +6 -0
  321. package/dist/event-store/upcaster-dead-letter.js +4 -2
  322. package/dist/event-store/upcaster.d.ts +2 -1
  323. package/dist/files/action-form-upload.d.ts +2 -1
  324. package/dist/files/action-form-upload.js +1 -1
  325. package/dist/files/assert-file-refs-belong-to-tenant.d.ts +2 -1
  326. package/dist/files/assert-file-refs-belong-to-tenant.js +1 -1
  327. package/dist/files/bind-pending-file-refs.d.ts +2 -1
  328. package/dist/files/bind-pending-file-refs.js +2 -1
  329. package/dist/files/bind-referenced-files.write.js +1 -1
  330. package/dist/files/create-file-ref-from-bytes.d.ts +6 -3
  331. package/dist/files/create-file-ref-from-bytes.js +3 -3
  332. package/dist/files/create-file-ref.d.ts +3 -2
  333. package/dist/files/create-file-ref.js +2 -2
  334. package/dist/files/dispose-removed-file-refs.d.ts +2 -1
  335. package/dist/files/dispose-removed-file-refs.js +1 -1
  336. package/dist/files/feature.js +2 -2
  337. package/dist/files/file-handle.js +1 -1
  338. package/dist/files/file-routes.d.ts +1 -1
  339. package/dist/files/file-routes.js +12 -2
  340. package/dist/files/index.d.ts +11 -13
  341. package/dist/files/index.js +5 -7
  342. package/dist/files/load-save-file-refs.d.ts +2 -1
  343. package/dist/files/load-save-file-refs.js +1 -1
  344. package/dist/files/provider-resolver.d.ts +5 -4
  345. package/dist/files/provider-resolver.js +4 -4
  346. package/dist/files/storage-tracking.js +4 -2
  347. package/dist/files/sweep-orphaned-uploads.d.ts +1 -1
  348. package/dist/files/sweep-orphaned-uploads.js +1 -1
  349. package/dist/i18n/index.d.ts +2 -8
  350. package/dist/i18n/index.js +1 -1
  351. package/dist/i18n/internals.d.ts +7 -0
  352. package/dist/i18n/internals.js +1 -0
  353. package/dist/i18n/required-surface-keys.d.ts +4 -1
  354. package/dist/internal/row-level-security.d.ts +3 -0
  355. package/dist/internal/row-level-security.js +3 -0
  356. package/dist/internal/stack-support.d.ts +1 -1
  357. package/dist/internal/stack-support.js +1 -1
  358. package/dist/internal/testing.d.ts +1 -0
  359. package/dist/internal/testing.js +9 -5
  360. package/dist/jobs/index.d.ts +1 -1
  361. package/dist/jobs/job-append-event.d.ts +12 -0
  362. package/dist/jobs/job-append-event.js +30 -0
  363. package/dist/jobs/job-runner-context.d.ts +2 -2
  364. package/dist/jobs/job-runner-context.js +46 -16
  365. package/dist/jobs/job-runner-execution.d.ts +1 -1
  366. package/dist/jobs/job-runner-execution.js +6 -4
  367. package/dist/jobs/job-runner-gates.d.ts +1 -1
  368. package/dist/jobs/job-runner-gates.js +0 -1
  369. package/dist/jobs/job-runner-helpers.d.ts +11 -4
  370. package/dist/jobs/job-runner-helpers.js +10 -1
  371. package/dist/jobs/job-runner-scope.d.ts +5 -2
  372. package/dist/jobs/job-runner-types.d.ts +2 -1
  373. package/dist/jobs/job-runner.js +19 -6
  374. package/dist/jobs/max-per-tenant.d.ts +1 -1
  375. package/dist/logging/index.d.ts +1 -2
  376. package/dist/logging/index.js +1 -1
  377. package/dist/logging/pino-logger.js +1 -1
  378. package/dist/logging/utils.d.ts +1 -0
  379. package/dist/logging/utils.js +6 -0
  380. package/dist/migrations/index.d.ts +3 -3
  381. package/dist/migrations/index.js +3 -3
  382. package/dist/migrations/pending-rebuilds.d.ts +1 -1
  383. package/dist/migrations/pending-rebuilds.js +1 -1
  384. package/dist/migrations/pii-event-backfill.js +4 -1
  385. package/dist/observability/escape-hatch-report.d.ts +2 -1
  386. package/dist/observability/index.d.ts +7 -15
  387. package/dist/observability/index.js +4 -12
  388. package/dist/observability/metric-validator.js +1 -1
  389. package/dist/observability/metrics-handle.d.ts +0 -1
  390. package/dist/observability/metrics-handle.js +2 -15
  391. package/dist/observability/recording-tracer.d.ts +1 -2
  392. package/dist/observability/recording-tracer.js +0 -6
  393. package/dist/observability/sensitive-filter.d.ts +0 -2
  394. package/dist/observability/sensitive-filter.js +0 -29
  395. package/dist/pipeline/active-membership.d.ts +2 -1
  396. package/dist/pipeline/active-membership.js +6 -2
  397. package/dist/pipeline/append-event-core.d.ts +2 -1
  398. package/dist/pipeline/append-event-core.js +2 -2
  399. package/dist/pipeline/attach-outside-transaction.d.ts +3 -0
  400. package/dist/pipeline/attach-outside-transaction.js +13 -0
  401. package/dist/pipeline/auth-claims-resolver.d.ts +2 -1
  402. package/dist/pipeline/cascade-handler.d.ts +2 -1
  403. package/dist/pipeline/cascade-handler.js +3 -2
  404. package/dist/pipeline/config-accessor-factory.d.ts +1 -1
  405. package/dist/pipeline/config-accessor-factory.js +1 -1
  406. package/dist/pipeline/context-services.d.ts +56 -0
  407. package/dist/pipeline/context-services.js +73 -0
  408. package/dist/pipeline/dispatch-batch.d.ts +2 -1
  409. package/dist/pipeline/dispatch-batch.js +31 -18
  410. package/dist/pipeline/dispatch-query.js +5 -4
  411. package/dist/pipeline/dispatch-scope.d.ts +6 -0
  412. package/dist/pipeline/dispatch-scope.js +27 -0
  413. package/dist/pipeline/dispatch-shared.d.ts +13 -9
  414. package/dist/pipeline/dispatch-shared.js +75 -198
  415. package/dist/pipeline/dispatch-stream.js +8 -4
  416. package/dist/pipeline/dispatch-write.d.ts +2 -1
  417. package/dist/pipeline/dispatch-write.js +10 -8
  418. package/dist/pipeline/dispatcher-utils.d.ts +3 -1
  419. package/dist/pipeline/dispatcher-utils.js +8 -2
  420. package/dist/pipeline/dispatcher.d.ts +3 -2
  421. package/dist/pipeline/dispatcher.js +4 -3
  422. package/dist/pipeline/event-consumer-state.d.ts +0 -1
  423. package/dist/pipeline/event-dispatcher-delivery.d.ts +1 -1
  424. package/dist/pipeline/event-dispatcher-delivery.js +4 -2
  425. package/dist/pipeline/event-dispatcher.d.ts +2 -2
  426. package/dist/pipeline/event-dispatcher.js +7 -3
  427. package/dist/pipeline/event-retention.js +59 -56
  428. package/dist/pipeline/handler-access-error.js +2 -1
  429. package/dist/pipeline/handler-context-auth.d.ts +5 -6
  430. package/dist/pipeline/handler-context-auth.js +7 -4
  431. package/dist/pipeline/handler-context-config.d.ts +2 -5
  432. package/dist/pipeline/handler-context-config.js +2 -2
  433. package/dist/pipeline/handler-context-db.d.ts +32 -7
  434. package/dist/pipeline/handler-context-db.js +26 -17
  435. package/dist/pipeline/handler-context-dispatch.d.ts +13 -7
  436. package/dist/pipeline/handler-context-dispatch.js +9 -8
  437. package/dist/pipeline/handler-context-events.d.ts +22 -36
  438. package/dist/pipeline/handler-context-events.js +36 -31
  439. package/dist/pipeline/handler-context-member-resolution.d.ts +2 -0
  440. package/dist/pipeline/handler-context-member-resolution.js +110 -0
  441. package/dist/pipeline/handler-context-notify.d.ts +3 -2
  442. package/dist/pipeline/handler-context-notify.js +1 -1
  443. package/dist/pipeline/handler-context-observability.d.ts +2 -4
  444. package/dist/pipeline/handler-context-observability.js +7 -5
  445. package/dist/pipeline/handler-context-phase-denials.d.ts +11 -0
  446. package/dist/pipeline/handler-context-phase-denials.js +98 -0
  447. package/dist/pipeline/handler-context-scope.d.ts +7 -10
  448. package/dist/pipeline/handler-context-scope.js +18 -20
  449. package/dist/pipeline/index.d.ts +9 -21
  450. package/dist/pipeline/index.js +5 -7
  451. package/dist/pipeline/irreversible-operation-gate.d.ts +1 -1
  452. package/dist/pipeline/irreversible-operation-gate.js +2 -2
  453. package/dist/pipeline/lifecycle-pipeline.d.ts +8 -7
  454. package/dist/pipeline/lifecycle-pipeline.js +9 -15
  455. package/dist/pipeline/member-read-only-transaction.js +11 -3
  456. package/dist/pipeline/member-reader.d.ts +1 -1
  457. package/dist/pipeline/member-reader.js +2 -2
  458. package/dist/pipeline/msp-rebuild.js +5 -3
  459. package/dist/pipeline/multi-stream-apply-context.js +3 -2
  460. package/dist/pipeline/notify-scope.d.ts +2 -1
  461. package/dist/pipeline/pre-handler-gates.d.ts +2 -1
  462. package/dist/pipeline/pre-transaction-reservations.d.ts +3 -3
  463. package/dist/pipeline/pre-transaction-reservations.js +9 -7
  464. package/dist/pipeline/projection-rebuild.js +12 -5
  465. package/dist/pipeline/projection-state.d.ts +0 -6
  466. package/dist/pipeline/projection-state.js +0 -5
  467. package/dist/pipeline/projections-runner.d.ts +2 -1
  468. package/dist/pipeline/projections-runner.js +10 -6
  469. package/dist/pipeline/system-hooks.d.ts +3 -1
  470. package/dist/pipeline/system-hooks.js +6 -4
  471. package/dist/pipeline/system-identity-switch.d.ts +4 -2
  472. package/dist/pipeline/system-identity-switch.js +51 -36
  473. package/dist/pipeline/typed-append-event.d.ts +2 -0
  474. package/dist/pipeline/typed-append-event.js +4 -0
  475. package/dist/pipeline/write-origin.js +2 -2
  476. package/dist/pipeline/write-result-masking.d.ts +1 -1
  477. package/dist/random/index.d.ts +1 -2
  478. package/dist/random/index.js +1 -2
  479. package/dist/rate-limit/bucket.d.ts +2 -1
  480. package/dist/rate-limit/middleware.js +2 -1
  481. package/dist/redis/index.d.ts +3 -4
  482. package/dist/redis/index.js +2 -2
  483. package/dist/schema-cli/apply-command.js +5 -2
  484. package/dist/schema-cli/baseline-command.js +7 -2
  485. package/dist/schema-cli/generate-command.js +7 -9
  486. package/dist/schema-cli/shared.d.ts +4 -0
  487. package/dist/schema-cli/shared.js +21 -2
  488. package/dist/schema-cli/status-command.js +8 -2
  489. package/dist/schema-cli/validate-command.js +52 -4
  490. package/dist/schema-cli.d.ts +0 -1
  491. package/dist/search/configure-tenant-index.d.ts +1 -3
  492. package/dist/search/configure-tenant-index.js +0 -4
  493. package/dist/search/index.d.ts +1 -4
  494. package/dist/search/index.js +0 -2
  495. package/dist/search/meilisearch-adapter-internals.d.ts +8 -0
  496. package/dist/search/meilisearch-adapter-internals.js +9 -0
  497. package/dist/search/meilisearch-adapter.d.ts +1 -8
  498. package/dist/search/meilisearch-adapter.js +6 -7
  499. package/dist/search/meilisearch-peer.d.ts +2 -0
  500. package/dist/search/meilisearch-peer.js +5 -0
  501. package/dist/search/reindex-entity.js +93 -87
  502. package/dist/secrets/index.d.ts +3 -4
  503. package/dist/secrets/index.js +2 -3
  504. package/dist/seeding/index.d.ts +2 -2
  505. package/dist/seeding/index.js +1 -2
  506. package/dist/time/index.d.ts +2 -2
  507. package/dist/time/index.js +1 -1
  508. package/dist/time/tz-context.d.ts +0 -5
  509. package/dist/time/tz-context.js +0 -9
  510. package/dist/ui-types/index.d.ts +8 -11
  511. package/dist/ui-types/index.js +3 -3
  512. package/dist/upgrade-changelog.d.ts +3 -2
  513. package/dist/upgrade-changelog.js +12 -8
  514. package/dist/upgrade-cli-internals.d.ts +8 -0
  515. package/dist/upgrade-cli-internals.js +63 -0
  516. package/dist/upgrade-cli.d.ts +1 -9
  517. package/dist/upgrade-cli.js +10 -64
  518. package/dist/utils/import-optional-peer.d.ts +6 -0
  519. package/dist/utils/import-optional-peer.js +19 -0
  520. package/dist/utils/index.d.ts +1 -4
  521. package/dist/utils/index.js +1 -4
  522. package/package.json +22 -18
  523. package/src/changes.json +206 -0
  524. package/dist/crypto/request-kms-cache.d.ts +0 -8
  525. package/dist/crypto/request-kms-cache.js +0 -21
  526. package/dist/engine/codemod/index.d.ts +0 -2
  527. package/dist/engine/codemod/index.js +0 -1
  528. package/dist/engine/codemod/pipeline-codemod.d.ts +0 -50
  529. package/dist/engine/codemod/pipeline-codemod.js +0 -536
  530. package/dist/engine/feature-ast/entity-field-types.d.ts +0 -13
  531. package/dist/engine/feature-ast/entity-field-types.js +0 -35
  532. package/dist/engine/feature-ast/extractors/ai-steps.d.ts +0 -6
  533. package/dist/engine/feature-ast/extractors/ai-steps.js +0 -254
  534. package/dist/engine/feature-ast/extractors/events.d.ts +0 -5
  535. package/dist/engine/feature-ast/extractors/events.js +0 -275
  536. package/dist/engine/feature-ast/extractors/handlers.d.ts +0 -24
  537. package/dist/engine/feature-ast/extractors/handlers.js +0 -358
  538. package/dist/engine/feature-ast/extractors/hooks.d.ts +0 -24
  539. package/dist/engine/feature-ast/extractors/hooks.js +0 -248
  540. package/dist/engine/feature-ast/extractors/index.d.ts +0 -14
  541. package/dist/engine/feature-ast/extractors/index.js +0 -13
  542. package/dist/engine/feature-ast/extractors/jobs-routes.d.ts +0 -7
  543. package/dist/engine/feature-ast/extractors/jobs-routes.js +0 -145
  544. package/dist/engine/feature-ast/extractors/projections-screens.d.ts +0 -10
  545. package/dist/engine/feature-ast/extractors/projections-screens.js +0 -195
  546. package/dist/engine/feature-ast/extractors/resolve-import.d.ts +0 -21
  547. package/dist/engine/feature-ast/extractors/resolve-import.js +0 -180
  548. package/dist/engine/feature-ast/extractors/round1.d.ts +0 -11
  549. package/dist/engine/feature-ast/extractors/round1.js +0 -87
  550. package/dist/engine/feature-ast/extractors/round2.d.ts +0 -7
  551. package/dist/engine/feature-ast/extractors/round2.js +0 -191
  552. package/dist/engine/feature-ast/extractors/round3.d.ts +0 -23
  553. package/dist/engine/feature-ast/extractors/round3.js +0 -292
  554. package/dist/engine/feature-ast/extractors/round5.d.ts +0 -9
  555. package/dist/engine/feature-ast/extractors/round5.js +0 -68
  556. package/dist/engine/feature-ast/extractors/round6.d.ts +0 -4
  557. package/dist/engine/feature-ast/extractors/round6.js +0 -17
  558. package/dist/engine/feature-ast/extractors/shared.d.ts +0 -94
  559. package/dist/engine/feature-ast/extractors/shared.js +0 -343
  560. package/dist/engine/feature-ast/index.d.ts +0 -16
  561. package/dist/engine/feature-ast/index.js +0 -10
  562. package/dist/engine/feature-ast/parse.d.ts +0 -31
  563. package/dist/engine/feature-ast/parse.js +0 -485
  564. package/dist/engine/feature-ast/patch.d.ts +0 -212
  565. package/dist/engine/feature-ast/patch.js +0 -611
  566. package/dist/engine/feature-ast/patcher.d.ts +0 -217
  567. package/dist/engine/feature-ast/patcher.js +0 -281
  568. package/dist/engine/feature-ast/pattern-change-schema.d.ts +0 -1238
  569. package/dist/engine/feature-ast/pattern-change-schema.js +0 -1072
  570. package/dist/engine/feature-ast/pattern-id-matchers.d.ts +0 -7
  571. package/dist/engine/feature-ast/pattern-id-matchers.js +0 -211
  572. package/dist/engine/feature-ast/pattern-id-schema.d.ts +0 -251
  573. package/dist/engine/feature-ast/pattern-id-schema.js +0 -166
  574. package/dist/engine/feature-ast/patterns.d.ts +0 -322
  575. package/dist/engine/feature-ast/patterns.js +0 -107
  576. package/dist/engine/feature-ast/render.d.ts +0 -47
  577. package/dist/engine/feature-ast/render.js +0 -666
  578. package/dist/engine/feature-ast/source-location.d.ts +0 -17
  579. package/dist/engine/feature-ast/source-location.js +0 -27
  580. package/dist/engine/pattern-library/index.d.ts +0 -2
  581. package/dist/engine/pattern-library/index.js +0 -3
  582. package/dist/engine/pattern-library/library.d.ts +0 -14
  583. package/dist/engine/pattern-library/library.js +0 -94
  584. package/dist/engine/pattern-library/mixed-schemas.d.ts +0 -16
  585. package/dist/engine/pattern-library/mixed-schemas.js +0 -559
  586. package/dist/engine/pattern-library/opaque-schemas.d.ts +0 -7
  587. package/dist/engine/pattern-library/opaque-schemas.js +0 -115
  588. package/dist/engine/pattern-library/shared-fields.d.ts +0 -122
  589. package/dist/engine/pattern-library/shared-fields.js +0 -88
  590. package/dist/engine/pattern-library/static-schemas.d.ts +0 -21
  591. package/dist/engine/pattern-library/static-schemas.js +0 -487
  592. package/dist/engine/pattern-library/types.d.ts +0 -158
  593. package/dist/engine/pattern-library/types.js +0 -36
  594. package/dist/engine/resolve-config-or-param.d.ts +0 -18
  595. package/dist/engine/resolve-config-or-param.js +0 -76
  596. package/src/scripts/codemod/README.md +0 -187
  597. package/src/scripts/codemod/codemod-support.ts +0 -334
  598. package/src/scripts/codemod/collect-source-files.ts +0 -48
  599. package/src/scripts/codemod/crypto-shredding-testing-move.ts +0 -119
  600. package/src/scripts/codemod/db-factory.ts +0 -810
  601. package/src/scripts/codemod/feature-factory.ts +0 -429
  602. package/src/scripts/codemod/feature-layout.ts +0 -424
  603. package/src/scripts/codemod/import-extensions.ts +0 -118
  604. package/src/scripts/codemod/migrate-cross-tenant.ts +0 -328
  605. package/src/scripts/codemod/migrate-db-raw.ts +0 -401
  606. package/src/scripts/codemod/migrate-open-to-all.ts +0 -235
  607. package/src/scripts/codemod/object-form.ts +0 -746
  608. package/src/scripts/codemod/package-merge.ts +0 -299
  609. package/src/scripts/codemod/pii-personal-migration.ts +0 -816
  610. package/src/scripts/codemod/remove-engine-payload-casts.ts +0 -318
  611. package/src/scripts/codemod/s3-imports.ts +0 -236
  612. package/src/scripts/codemod/tenant-db-options.ts +0 -454
  613. package/src/scripts/codemod/testing-injection.ts +0 -215
  614. package/src/scripts/codemod/testing-move-targets.ts +0 -161
  615. package/src/scripts/codemod/testing-move.ts +0 -542
  616. package/src/scripts/codemod/unprocessable-error-details-reason.ts +0 -411
@@ -1,254 +0,0 @@
1
- import { sourceLocationFromNode } from "../source-location.js";
2
- import { fail, findFunctionLiteral, isPlainObject, isRawRefSentinel, ok, readDataLiteralNode, readNameLiteral, readObjectPropertyInitializer, readStringOrRaw, resolveSameFileObjectLiteral, } from "./shared.js";
3
- function readEditableStringProp(obj, propertyName) {
4
- const init = readObjectPropertyInitializer(obj, propertyName);
5
- if (!init)
6
- return undefined;
7
- const value = readStringOrRaw(init);
8
- if (value === undefined)
9
- return undefined;
10
- return value;
11
- }
12
- function readEditableDefaults(node) {
13
- const value = readDataLiteralNode(node);
14
- if (isRawRefSentinel(value))
15
- return value;
16
- if (!isPlainObject(value))
17
- return undefined;
18
- if (typeof value["enabled"] !== "boolean")
19
- return undefined;
20
- if (!isPlainObject(value["params"]))
21
- return undefined;
22
- return {
23
- enabled: value["enabled"],
24
- params: value["params"],
25
- ...(typeof value["providerId"] === "string" && { providerId: value["providerId"] }),
26
- ...(typeof value["model"] === "string" && { model: value["model"] }),
27
- };
28
- }
29
- function readClassifyActions(node) {
30
- const value = readDataLiteralNode(node);
31
- if (!Array.isArray(value))
32
- return undefined;
33
- const out = [];
34
- for (const entry of value) {
35
- if (!isPlainObject(entry))
36
- return undefined;
37
- if (typeof entry["type"] !== "string" || typeof entry["description"] !== "string") {
38
- return undefined;
39
- }
40
- out.push({ type: entry["type"], description: entry["description"] });
41
- }
42
- return out;
43
- }
44
- function extractAiStepCommon(call, sourceFile, kind) {
45
- const source = sourceLocationFromNode(call, sourceFile);
46
- const arg = call.getArguments()[0];
47
- if (!arg) {
48
- return fail(kind, source, "expected one argument object");
49
- }
50
- const obj = resolveSameFileObjectLiteral(arg);
51
- if (!obj) {
52
- if (isRawRefSentinel(readDataLiteralNode(arg))) {
53
- return ok({
54
- source,
55
- argsSource: { __raw: arg.getText() },
56
- });
57
- }
58
- return fail(kind, source, "argument must be an inline object literal or a same-file const resolving to one");
59
- }
60
- const stepKeyInit = readObjectPropertyInitializer(obj, "stepKey");
61
- if (!stepKeyInit) {
62
- return fail(kind, source, "missing `stepKey` property");
63
- }
64
- // PatternId needs a concrete string — resolve identifiers like patch.readAiStepKey.
65
- const stepKeyLiteral = readNameLiteral(stepKeyInit);
66
- const stepKey = stepKeyLiteral ?? readStringOrRaw(stepKeyInit);
67
- if (stepKey === undefined) {
68
- return fail(kind, source, "`stepKey` must be a string literal or resolvable identifier");
69
- }
70
- const promptKey = readEditableStringProp(obj, "promptKey");
71
- if (promptKey === undefined) {
72
- return fail(kind, source, "missing `promptKey` property");
73
- }
74
- const promptFallbackInit = readObjectPropertyInitializer(obj, "promptFallback");
75
- if (!promptFallbackInit) {
76
- return fail(kind, source, "missing `promptFallback` property");
77
- }
78
- const promptFallback = readStringOrRaw(promptFallbackInit);
79
- if (promptFallback === undefined) {
80
- return fail(kind, source, "`promptFallback` must be a string literal or identifier reference");
81
- }
82
- const defaultsInit = readObjectPropertyInitializer(obj, "defaults");
83
- if (!defaultsInit) {
84
- return fail(kind, source, "missing `defaults` property");
85
- }
86
- const defaults = readEditableDefaults(defaultsInit);
87
- if (defaults === undefined) {
88
- return fail(kind, source, "`defaults` could not be read as a StepPolicy literal");
89
- }
90
- const paramsSchemaInit = readObjectPropertyInitializer(obj, "paramsSchema");
91
- if (!paramsSchemaInit) {
92
- return fail(kind, source, "missing `paramsSchema` property");
93
- }
94
- return ok({
95
- source,
96
- stepKey,
97
- promptKey,
98
- promptFallback,
99
- defaults,
100
- paramsSchemaSource: sourceLocationFromNode(paramsSchemaInit, sourceFile),
101
- });
102
- }
103
- function requireResolvedCommon(kind, pattern) {
104
- if (pattern.argsSource) {
105
- return fail(kind, pattern.source, "expected resolved inline object, got opaque args reference");
106
- }
107
- const { stepKey, promptKey, promptFallback, defaults, paramsSchemaSource, source } = pattern;
108
- if (stepKey === undefined ||
109
- promptKey === undefined ||
110
- promptFallback === undefined ||
111
- defaults === undefined ||
112
- paramsSchemaSource === undefined) {
113
- return fail(kind, source, "resolved AI step is missing required header fields");
114
- }
115
- return ok({ source, stepKey, promptKey, promptFallback, defaults, paramsSchemaSource });
116
- }
117
- export function extractAiGenerate(call, sourceFile) {
118
- const common = extractAiStepCommon(call, sourceFile, "ai.generate");
119
- if (common.kind === "error")
120
- return common;
121
- if (common.pattern.argsSource) {
122
- return ok({
123
- kind: "ai.generate",
124
- source: common.pattern.source,
125
- argsSource: common.pattern.argsSource,
126
- });
127
- }
128
- const arg = call.getArguments()[0];
129
- const obj = arg ? resolveSameFileObjectLiteral(arg) : undefined;
130
- if (!obj) {
131
- return fail("ai.generate", common.pattern.source, "expected resolvable argument object");
132
- }
133
- const inputInit = readObjectPropertyInitializer(obj, "input");
134
- if (!inputInit) {
135
- return fail("ai.generate", common.pattern.source, "missing `input` property");
136
- }
137
- const fn = findFunctionLiteral(inputInit);
138
- if (!fn) {
139
- return fail("ai.generate", common.pattern.source, "`input` must be an inline arrow function or function expression");
140
- }
141
- const resolved = requireResolvedCommon("ai.generate", common.pattern);
142
- if (resolved.kind === "error")
143
- return resolved;
144
- return ok({
145
- kind: "ai.generate",
146
- source: resolved.pattern.source,
147
- stepKey: resolved.pattern.stepKey,
148
- promptKey: resolved.pattern.promptKey,
149
- promptFallback: resolved.pattern.promptFallback,
150
- defaults: resolved.pattern.defaults,
151
- paramsSchemaSource: resolved.pattern.paramsSchemaSource,
152
- inputBody: sourceLocationFromNode(fn, sourceFile),
153
- });
154
- }
155
- export function extractAiExtract(call, sourceFile) {
156
- const common = extractAiStepCommon(call, sourceFile, "ai.extract");
157
- if (common.kind === "error")
158
- return common;
159
- if (common.pattern.argsSource) {
160
- return ok({
161
- kind: "ai.extract",
162
- source: common.pattern.source,
163
- argsSource: common.pattern.argsSource,
164
- });
165
- }
166
- const arg = call.getArguments()[0];
167
- const obj = arg ? resolveSameFileObjectLiteral(arg) : undefined;
168
- if (!obj) {
169
- return fail("ai.extract", common.pattern.source, "expected resolvable argument object");
170
- }
171
- const outputSchemaInit = readObjectPropertyInitializer(obj, "outputSchema");
172
- if (!outputSchemaInit) {
173
- return fail("ai.extract", common.pattern.source, "missing `outputSchema` property");
174
- }
175
- const instructionsInit = readObjectPropertyInitializer(obj, "instructions");
176
- if (!instructionsInit) {
177
- return fail("ai.extract", common.pattern.source, "missing `instructions` property");
178
- }
179
- const instructionsFn = findFunctionLiteral(instructionsInit);
180
- if (!instructionsFn) {
181
- return fail("ai.extract", common.pattern.source, "`instructions` must be an inline arrow function or function expression");
182
- }
183
- const documentInit = readObjectPropertyInitializer(obj, "document");
184
- let documentBody;
185
- if (documentInit) {
186
- const documentFn = findFunctionLiteral(documentInit);
187
- if (!documentFn) {
188
- return fail("ai.extract", common.pattern.source, "`document` must be an inline arrow function or function expression");
189
- }
190
- documentBody = sourceLocationFromNode(documentFn, sourceFile);
191
- }
192
- const resolved = requireResolvedCommon("ai.extract", common.pattern);
193
- if (resolved.kind === "error")
194
- return resolved;
195
- return ok({
196
- kind: "ai.extract",
197
- source: resolved.pattern.source,
198
- stepKey: resolved.pattern.stepKey,
199
- promptKey: resolved.pattern.promptKey,
200
- promptFallback: resolved.pattern.promptFallback,
201
- defaults: resolved.pattern.defaults,
202
- paramsSchemaSource: resolved.pattern.paramsSchemaSource,
203
- outputSchemaSource: sourceLocationFromNode(outputSchemaInit, sourceFile),
204
- instructionsBody: sourceLocationFromNode(instructionsFn, sourceFile),
205
- ...(documentBody !== undefined && { documentBody }),
206
- });
207
- }
208
- export function extractAiClassify(call, sourceFile) {
209
- const common = extractAiStepCommon(call, sourceFile, "ai.classify");
210
- if (common.kind === "error")
211
- return common;
212
- if (common.pattern.argsSource) {
213
- return ok({
214
- kind: "ai.classify",
215
- source: common.pattern.source,
216
- argsSource: common.pattern.argsSource,
217
- });
218
- }
219
- const arg = call.getArguments()[0];
220
- const obj = arg ? resolveSameFileObjectLiteral(arg) : undefined;
221
- if (!obj) {
222
- return fail("ai.classify", common.pattern.source, "expected resolvable argument object");
223
- }
224
- const actionsInit = readObjectPropertyInitializer(obj, "actions");
225
- if (!actionsInit) {
226
- return fail("ai.classify", common.pattern.source, "missing `actions` property");
227
- }
228
- const actions = readClassifyActions(actionsInit);
229
- if (actions === undefined) {
230
- return fail("ai.classify", common.pattern.source, "`actions` must be an inline array of { type, description } objects");
231
- }
232
- const inputInit = readObjectPropertyInitializer(obj, "input");
233
- if (!inputInit) {
234
- return fail("ai.classify", common.pattern.source, "missing `input` property");
235
- }
236
- const inputFn = findFunctionLiteral(inputInit);
237
- if (!inputFn) {
238
- return fail("ai.classify", common.pattern.source, "`input` must be an inline arrow function or function expression");
239
- }
240
- const resolved = requireResolvedCommon("ai.classify", common.pattern);
241
- if (resolved.kind === "error")
242
- return resolved;
243
- return ok({
244
- kind: "ai.classify",
245
- source: resolved.pattern.source,
246
- stepKey: resolved.pattern.stepKey,
247
- promptKey: resolved.pattern.promptKey,
248
- promptFallback: resolved.pattern.promptFallback,
249
- defaults: resolved.pattern.defaults,
250
- paramsSchemaSource: resolved.pattern.paramsSchemaSource,
251
- actions,
252
- inputBody: sourceLocationFromNode(inputFn, sourceFile),
253
- });
254
- }
@@ -1,5 +0,0 @@
1
- import type { CallExpression, SourceFile } from "ts-morph";
2
- import type { DefineEventPattern, NotificationPattern } from "../patterns.ts";
3
- import { type ExtractOutput } from "./shared.ts";
4
- export declare function extractDefineEvent(call: CallExpression, sourceFile: SourceFile): ExtractOutput<DefineEventPattern>;
5
- export declare function extractNotification(call: CallExpression, sourceFile: SourceFile): ExtractOutput<NotificationPattern>;
@@ -1,275 +0,0 @@
1
- import { SyntaxKind } from "ts-morph";
2
- import { sourceLocationFromNode } from "../source-location.js";
3
- import { fail, findFunctionLiteral, ok, readDataLiteralNode, readNameLiteral, readNameLiteralRef, readNameOrRef, readPropertyKey, } from "./shared.js";
4
- // Reads defineEvent's `migrations` option — either the array-of-steps shape
5
- // used by hand-authored calls (`[{ fromVersion, toVersion, transform }]`,
6
- // toVersion is redundant on-disk since it is always fromVersion + 1) or the
7
- // keyed-object canonical shape the Designer renders (`{ "1": transform }`).
8
- // Keyed by fromVersion (as a string) → the transform closure's location.
9
- // Skips malformed entries rather than failing the whole defineEvent extract
10
- // — same "best-effort, degrade gracefully" posture as readDataLiteralNode.
11
- function extractEventMigrationsFromArray(arr, sourceFile) {
12
- const result = {};
13
- const arrLit = arr.asKindOrThrow(SyntaxKind.ArrayLiteralExpression);
14
- for (const el of arrLit.getElements()) {
15
- const obj = el.asKind(SyntaxKind.ObjectLiteralExpression);
16
- if (!obj)
17
- continue;
18
- const fromInit = obj
19
- .getProperty("fromVersion")
20
- ?.asKind(SyntaxKind.PropertyAssignment)
21
- ?.getInitializer();
22
- const fromVersion = fromInit ? readDataLiteralNode(fromInit) : undefined;
23
- if (typeof fromVersion !== "number")
24
- continue;
25
- const transformInit = obj
26
- .getProperty("transform")
27
- ?.asKind(SyntaxKind.PropertyAssignment)
28
- ?.getInitializer();
29
- const fn = transformInit ? findFunctionLiteral(transformInit) : undefined;
30
- if (!fn)
31
- continue;
32
- result[String(fromVersion)] = sourceLocationFromNode(fn, sourceFile);
33
- }
34
- return result;
35
- }
36
- function extractEventMigrationsFromKeyedObject(objLit, sourceFile) {
37
- const result = {};
38
- const obj = objLit.asKindOrThrow(SyntaxKind.ObjectLiteralExpression);
39
- for (const prop of obj.getProperties()) {
40
- const propAssign = prop.asKind(SyntaxKind.PropertyAssignment);
41
- const initializer = propAssign?.getInitializer();
42
- const fn = initializer ? findFunctionLiteral(initializer) : undefined;
43
- if (!propAssign || !fn)
44
- continue;
45
- result[readPropertyKey(propAssign)] = sourceLocationFromNode(fn, sourceFile);
46
- }
47
- return result;
48
- }
49
- // Reads defineEvent's `migrations` option — either the array-of-steps shape
50
- // used by hand-authored calls (`[{ fromVersion, toVersion, transform }]`,
51
- // toVersion is redundant on-disk since it is always fromVersion + 1) or the
52
- // keyed-object canonical shape the Designer renders (`{ "1": transform }`).
53
- // Keyed by fromVersion (as a string) → the transform closure's location.
54
- // Skips malformed entries rather than failing the whole defineEvent extract
55
- // — same "best-effort, degrade gracefully" posture as readDataLiteralNode.
56
- function extractEventMigrationsField(node, sourceFile) {
57
- const result = node.asKind(SyntaxKind.ArrayLiteralExpression)
58
- ? extractEventMigrationsFromArray(node, sourceFile)
59
- : node.asKind(SyntaxKind.ObjectLiteralExpression)
60
- ? extractEventMigrationsFromKeyedObject(node, sourceFile)
61
- : undefined;
62
- return result && Object.keys(result).length > 0 ? result : undefined;
63
- }
64
- // `{ piiFields }` shorthand is a valid stance; its name node doubles as the location.
65
- function readPiiFieldsNode(obj) {
66
- const prop = obj?.getProperty("piiFields");
67
- return (prop?.asKind(SyntaxKind.PropertyAssignment)?.getInitializer() ??
68
- prop?.asKind(SyntaxKind.ShorthandPropertyAssignment)?.getNameNode());
69
- }
70
- export function extractDefineEvent(call, sourceFile) {
71
- const args = call.getArguments();
72
- const first = args[0];
73
- if (!first) {
74
- return fail("defineEvent", sourceLocationFromNode(call, sourceFile), "expected at least one argument");
75
- }
76
- const obj = first.asKind(SyntaxKind.ObjectLiteralExpression);
77
- if (obj && args.length === 1) {
78
- const nameInit = obj
79
- .getProperty("name")
80
- ?.asKind(SyntaxKind.PropertyAssignment)
81
- ?.getInitializer()
82
- ?.asKind(SyntaxKind.StringLiteral);
83
- if (!nameInit) {
84
- return fail("defineEvent", sourceLocationFromNode(call, sourceFile), "object form requires a string-literal `name` property");
85
- }
86
- const schemaInit = obj
87
- .getProperty("schema")
88
- ?.asKind(SyntaxKind.PropertyAssignment)
89
- ?.getInitializer();
90
- if (!schemaInit) {
91
- return fail("defineEvent", sourceLocationFromNode(call, sourceFile), "object form requires a `schema` property");
92
- }
93
- let version;
94
- const versionInit = obj
95
- .getProperty("version")
96
- ?.asKind(SyntaxKind.PropertyAssignment)
97
- ?.getInitializer();
98
- if (versionInit) {
99
- const v = readDataLiteralNode(versionInit);
100
- if (typeof v === "number")
101
- version = v;
102
- }
103
- const piiFieldsInit = readPiiFieldsNode(obj);
104
- if (!piiFieldsInit) {
105
- return fail("defineEvent", sourceLocationFromNode(call, sourceFile), 'requires an explicit `piiFields` stance (an object literal or "none")');
106
- }
107
- const migrationsInit = obj
108
- .getProperty("migrations")
109
- ?.asKind(SyntaxKind.PropertyAssignment)
110
- ?.getInitializer();
111
- const migrations = migrationsInit
112
- ? extractEventMigrationsField(migrationsInit, sourceFile)
113
- : undefined;
114
- return ok({
115
- kind: "defineEvent",
116
- source: sourceLocationFromNode(call, sourceFile),
117
- eventName: nameInit.getLiteralValue(),
118
- schemaSource: sourceLocationFromNode(schemaInit, sourceFile),
119
- piiFields: sourceLocationFromNode(piiFieldsInit, sourceFile),
120
- ...(version !== undefined && { version }),
121
- ...(migrations !== undefined && { migrations }),
122
- });
123
- }
124
- const eventNameRef = readNameLiteralRef(first);
125
- if (eventNameRef === undefined) {
126
- return fail("defineEvent", sourceLocationFromNode(call, sourceFile), "first argument must be a string literal event name, or an identifier resolving to one (or use the object form)");
127
- }
128
- const schemaArg = args[1];
129
- if (!schemaArg) {
130
- return fail("defineEvent", sourceLocationFromNode(call, sourceFile), "expected a Zod schema as second argument");
131
- }
132
- let version;
133
- let migrations;
134
- const optionsArg = args[2];
135
- const optionsObj = optionsArg?.asKind(SyntaxKind.ObjectLiteralExpression);
136
- const piiFieldsInit = readPiiFieldsNode(optionsObj);
137
- if (!piiFieldsInit) {
138
- if (optionsArg && !optionsObj) {
139
- return fail("defineEvent", sourceLocationFromNode(call, sourceFile), "options must be an object literal");
140
- }
141
- return fail("defineEvent", sourceLocationFromNode(call, sourceFile), 'requires an explicit `piiFields` stance (an object literal or "none")');
142
- }
143
- if (optionsObj) {
144
- const versionInit = optionsObj
145
- .getProperty("version")
146
- ?.asKind(SyntaxKind.PropertyAssignment)
147
- ?.getInitializer();
148
- if (versionInit) {
149
- const v = readDataLiteralNode(versionInit);
150
- if (typeof v === "number")
151
- version = v;
152
- }
153
- const migrationsInit = optionsObj
154
- .getProperty("migrations")
155
- ?.asKind(SyntaxKind.PropertyAssignment)
156
- ?.getInitializer();
157
- if (migrationsInit) {
158
- migrations = extractEventMigrationsField(migrationsInit, sourceFile);
159
- }
160
- }
161
- return ok({
162
- kind: "defineEvent",
163
- source: sourceLocationFromNode(call, sourceFile),
164
- eventName: eventNameRef.value,
165
- ...(eventNameRef.raw !== undefined && { eventNameRaw: eventNameRef.raw }),
166
- schemaSource: sourceLocationFromNode(schemaArg, sourceFile),
167
- piiFields: sourceLocationFromNode(piiFieldsInit, sourceFile),
168
- ...(version !== undefined && { version }),
169
- ...(migrations !== undefined && { migrations }),
170
- });
171
- }
172
- export function extractNotification(call, sourceFile) {
173
- const args = call.getArguments();
174
- const first = args[0];
175
- if (!first) {
176
- return fail("notification", sourceLocationFromNode(call, sourceFile), "expected at least one argument");
177
- }
178
- let notificationName;
179
- let defObj;
180
- const firstObj = first.asKind(SyntaxKind.ObjectLiteralExpression);
181
- if (firstObj && args.length === 1) {
182
- const nameInit = firstObj
183
- .getProperty("name")
184
- ?.asKind(SyntaxKind.PropertyAssignment)
185
- ?.getInitializer()
186
- ?.asKind(SyntaxKind.StringLiteral);
187
- if (!nameInit) {
188
- return fail("notification", sourceLocationFromNode(call, sourceFile), "object form requires a string-literal `name` property");
189
- }
190
- notificationName = nameInit.getLiteralValue();
191
- defObj = firstObj;
192
- }
193
- else {
194
- notificationName = readNameLiteral(first);
195
- if (notificationName === undefined) {
196
- return fail("notification", sourceLocationFromNode(call, sourceFile), "first argument must be a string literal notification name, or an identifier resolving to one (or use the object form)");
197
- }
198
- defObj = args[1]?.asKind(SyntaxKind.ObjectLiteralExpression);
199
- if (!defObj) {
200
- return fail("notification", sourceLocationFromNode(call, sourceFile), "second argument must be an inline definition object");
201
- }
202
- }
203
- const triggerProp = defObj.getProperty("trigger");
204
- if (!triggerProp && (defObj.getProperty("recipient") || defObj.getProperty("data"))) {
205
- return fail("notification", sourceLocationFromNode(call, sourceFile), "recipient and data require a `trigger`");
206
- }
207
- let onName;
208
- let recipientFn;
209
- let dataFn;
210
- if (triggerProp) {
211
- const triggerObj = triggerProp
212
- .asKind(SyntaxKind.PropertyAssignment)
213
- ?.getInitializer()
214
- ?.asKind(SyntaxKind.ObjectLiteralExpression);
215
- if (!triggerObj) {
216
- return fail("notification", sourceLocationFromNode(call, sourceFile), "non-object `trigger` property");
217
- }
218
- const onInit = triggerObj
219
- .getProperty("on")
220
- ?.asKind(SyntaxKind.PropertyAssignment)
221
- ?.getInitializer();
222
- onName = onInit ? readNameOrRef(onInit) : undefined;
223
- if (!onName) {
224
- return fail("notification", sourceLocationFromNode(call, sourceFile), "trigger.on must be a string literal or inline { name } object");
225
- }
226
- const recipientInit = defObj
227
- .getProperty("recipient")
228
- ?.asKind(SyntaxKind.PropertyAssignment)
229
- ?.getInitializer();
230
- recipientFn = recipientInit ? findFunctionLiteral(recipientInit) : undefined;
231
- if (!recipientFn) {
232
- return fail("notification", sourceLocationFromNode(call, sourceFile), "recipient must be an inline arrow function or function expression");
233
- }
234
- const dataInit = defObj
235
- .getProperty("data")
236
- ?.asKind(SyntaxKind.PropertyAssignment)
237
- ?.getInitializer();
238
- dataFn = dataInit ? findFunctionLiteral(dataInit) : undefined;
239
- if (!dataFn) {
240
- return fail("notification", sourceLocationFromNode(call, sourceFile), "data must be an inline arrow function or function expression");
241
- }
242
- }
243
- let templates;
244
- const templatesObj = defObj
245
- .getProperty("templates")
246
- ?.asKind(SyntaxKind.PropertyAssignment)
247
- ?.getInitializer()
248
- ?.asKind(SyntaxKind.ObjectLiteralExpression);
249
- if (templatesObj) {
250
- templates = {};
251
- for (const prop of templatesObj.getProperties()) {
252
- const propAssign = prop.asKind(SyntaxKind.PropertyAssignment);
253
- if (!propAssign)
254
- continue;
255
- const init = propAssign.getInitializer();
256
- if (!init)
257
- continue;
258
- const tfn = findFunctionLiteral(init);
259
- if (!tfn)
260
- continue;
261
- templates[readPropertyKey(propAssign)] = sourceLocationFromNode(tfn, sourceFile);
262
- }
263
- }
264
- return ok({
265
- kind: "notification",
266
- source: sourceLocationFromNode(call, sourceFile),
267
- notificationName,
268
- ...(onName !== undefined && { trigger: { on: onName } }),
269
- ...(recipientFn !== undefined && {
270
- recipientBody: sourceLocationFromNode(recipientFn, sourceFile),
271
- }),
272
- ...(dataFn !== undefined && { dataBody: sourceLocationFromNode(dataFn, sourceFile) }),
273
- ...(templates !== undefined && { templates }),
274
- });
275
- }
@@ -1,24 +0,0 @@
1
- import type { CallExpression, SourceFile } from "ts-morph";
2
- import type { AccessRule, AgentHandlerHints, AgentRisk, EscapeHatchDeclaration, PayloadRateLimitOption, RateLimitDeclaration } from "../../types/handlers.ts";
3
- import type { QueryHandlerPattern, StreamHandlerPattern, WriteHandlerPattern } from "../patterns.ts";
4
- import type { SourceLocation } from "../source-location.ts";
5
- import { type ExtractOutput, type RawRefSentinel } from "./shared.ts";
6
- export type ParsedHandlerCall = {
7
- readonly source: SourceLocation;
8
- readonly handlerName?: string;
9
- readonly schemaSource?: SourceLocation;
10
- readonly handlerBody?: SourceLocation;
11
- readonly access?: AccessRule | RawRefSentinel;
12
- readonly description?: string;
13
- readonly agent?: AgentHandlerHints | RawRefSentinel;
14
- readonly rateLimit?: RateLimitDeclaration | RawRefSentinel;
15
- readonly additionalRateLimits?: readonly PayloadRateLimitOption[] | RawRefSentinel;
16
- readonly unsafeSkipTransitionGuard?: boolean;
17
- readonly escapeHatch?: EscapeHatchDeclaration | RawRefSentinel;
18
- };
19
- export declare const AGENT_RISK_VALUES: readonly AgentRisk[];
20
- export declare function readOptionalAgentHints(value: unknown): AgentHandlerHints | undefined;
21
- export declare function parseHandlerCall(call: CallExpression, sourceFile: SourceFile, methodName: "writeHandler" | "queryHandler" | "streamHandler"): ExtractOutput<ParsedHandlerCall>;
22
- export declare function extractWriteHandler(call: CallExpression, sourceFile: SourceFile): ExtractOutput<WriteHandlerPattern>;
23
- export declare function extractQueryHandler(call: CallExpression, sourceFile: SourceFile): ExtractOutput<QueryHandlerPattern>;
24
- export declare function extractStreamHandler(call: CallExpression, sourceFile: SourceFile): ExtractOutput<StreamHandlerPattern>;