@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,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>;