@plumbus/core 0.7.1 → 0.8.0-beta.1

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 (513) hide show
  1. package/CHANGELOG.md +49 -0
  2. package/README.md +2 -1
  3. package/dist/.tsbuildinfo +1 -1
  4. package/dist/admission/client.d.ts +9 -0
  5. package/dist/admission/client.d.ts.map +1 -0
  6. package/dist/admission/client.js +34 -0
  7. package/dist/admission/client.js.map +1 -0
  8. package/dist/admission/index.d.ts +5 -0
  9. package/dist/admission/index.d.ts.map +1 -0
  10. package/dist/admission/index.js +4 -0
  11. package/dist/admission/index.js.map +1 -0
  12. package/dist/admission/request-admission.d.ts +26 -0
  13. package/dist/admission/request-admission.d.ts.map +1 -0
  14. package/dist/admission/request-admission.js +85 -0
  15. package/dist/admission/request-admission.js.map +1 -0
  16. package/dist/admission/shared.d.ts +31 -0
  17. package/dist/admission/shared.d.ts.map +1 -0
  18. package/dist/admission/shared.js +30 -0
  19. package/dist/admission/shared.js.map +1 -0
  20. package/dist/ai/ai/provider.d.ts +5 -7
  21. package/dist/ai/ai-service.d.ts +8 -1
  22. package/dist/ai/ai-service.d.ts.map +1 -1
  23. package/dist/ai/ai-service.js +23 -13
  24. package/dist/ai/ai-service.js.map +1 -1
  25. package/dist/ai/errors/data-errors.d.ts +6 -0
  26. package/dist/ai/errors/index.d.ts +4 -1
  27. package/dist/ai/fill-prompt-template.d.ts +12 -0
  28. package/dist/ai/fill-prompt-template.d.ts.map +1 -0
  29. package/dist/ai/fill-prompt-template.js +19 -0
  30. package/dist/ai/fill-prompt-template.js.map +1 -0
  31. package/dist/ai/governed-artifacts.d.ts +49 -0
  32. package/dist/ai/governed-artifacts.d.ts.map +1 -0
  33. package/dist/ai/governed-artifacts.js +277 -0
  34. package/dist/ai/governed-artifacts.js.map +1 -0
  35. package/dist/ai/governed-budget.d.ts +17 -0
  36. package/dist/ai/governed-budget.d.ts.map +1 -0
  37. package/dist/ai/governed-budget.js +52 -0
  38. package/dist/ai/governed-budget.js.map +1 -0
  39. package/dist/ai/governed-host.d.ts +54 -0
  40. package/dist/ai/governed-host.d.ts.map +1 -0
  41. package/dist/ai/governed-host.js +8 -0
  42. package/dist/ai/governed-host.js.map +1 -0
  43. package/dist/ai/governed-invoke.d.ts +41 -0
  44. package/dist/ai/governed-invoke.d.ts.map +1 -0
  45. package/dist/ai/governed-invoke.js +102 -0
  46. package/dist/ai/governed-invoke.js.map +1 -0
  47. package/dist/ai/governed-runtime.d.ts +103 -0
  48. package/dist/ai/governed-runtime.d.ts.map +1 -0
  49. package/dist/ai/governed-runtime.js +151 -0
  50. package/dist/ai/governed-runtime.js.map +1 -0
  51. package/dist/ai/index.d.ts +12 -2
  52. package/dist/ai/index.d.ts.map +1 -1
  53. package/dist/ai/index.js +8 -2
  54. package/dist/ai/index.js.map +1 -1
  55. package/dist/ai/prompt-registry.d.ts +6 -0
  56. package/dist/ai/prompt-registry.d.ts.map +1 -1
  57. package/dist/ai/prompt-registry.js +12 -0
  58. package/dist/ai/prompt-registry.js.map +1 -1
  59. package/dist/ai/provider.d.ts +5 -7
  60. package/dist/ai/provider.d.ts.map +1 -1
  61. package/dist/ai/provider.js +29 -0
  62. package/dist/ai/provider.js.map +1 -1
  63. package/dist/ai/types/enums.d.ts +2 -0
  64. package/dist/ai/types/fields.d.ts +7 -0
  65. package/dist/ai/types/prompt.d.ts +8 -0
  66. package/dist/ai/validation.d.ts.map +1 -1
  67. package/dist/ai/validation.js +10 -1
  68. package/dist/ai/validation.js.map +1 -1
  69. package/dist/api/exposure.d.ts +14 -0
  70. package/dist/api/exposure.d.ts.map +1 -1
  71. package/dist/api/exposure.js +16 -0
  72. package/dist/api/exposure.js.map +1 -1
  73. package/dist/api/idempotency.d.ts +67 -0
  74. package/dist/api/idempotency.d.ts.map +1 -0
  75. package/dist/api/idempotency.js +176 -0
  76. package/dist/api/idempotency.js.map +1 -0
  77. package/dist/api/index.d.ts +3 -1
  78. package/dist/api/index.d.ts.map +1 -1
  79. package/dist/api/index.js +4 -2
  80. package/dist/api/index.js.map +1 -1
  81. package/dist/api/route-generator.d.ts +50 -6
  82. package/dist/api/route-generator.d.ts.map +1 -1
  83. package/dist/api/route-generator.js +254 -12
  84. package/dist/api/route-generator.js.map +1 -1
  85. package/dist/approvals/action-risk.d.ts +41 -0
  86. package/dist/approvals/action-risk.d.ts.map +1 -0
  87. package/dist/approvals/action-risk.js +56 -0
  88. package/dist/approvals/action-risk.js.map +1 -0
  89. package/dist/approvals/actors.d.ts +8 -0
  90. package/dist/approvals/actors.d.ts.map +1 -0
  91. package/dist/approvals/actors.js +26 -0
  92. package/dist/approvals/actors.js.map +1 -0
  93. package/dist/approvals/authorization.d.ts +5 -0
  94. package/dist/approvals/authorization.d.ts.map +1 -0
  95. package/dist/approvals/authorization.js +16 -0
  96. package/dist/approvals/authorization.js.map +1 -0
  97. package/dist/approvals/digest.d.ts +3 -0
  98. package/dist/approvals/digest.d.ts.map +1 -0
  99. package/dist/approvals/digest.js +21 -0
  100. package/dist/approvals/digest.js.map +1 -0
  101. package/dist/approvals/gate.d.ts +15 -0
  102. package/dist/approvals/gate.d.ts.map +1 -0
  103. package/dist/approvals/gate.js +102 -0
  104. package/dist/approvals/gate.js.map +1 -0
  105. package/dist/approvals/host-runtime.d.ts +16 -0
  106. package/dist/approvals/host-runtime.d.ts.map +1 -0
  107. package/dist/approvals/host-runtime.js +12 -0
  108. package/dist/approvals/host-runtime.js.map +1 -0
  109. package/dist/approvals/index.d.ts +19 -0
  110. package/dist/approvals/index.d.ts.map +1 -0
  111. package/dist/approvals/index.js +13 -0
  112. package/dist/approvals/index.js.map +1 -0
  113. package/dist/approvals/memory-store.d.ts +3 -0
  114. package/dist/approvals/memory-store.d.ts.map +1 -0
  115. package/dist/approvals/memory-store.js +33 -0
  116. package/dist/approvals/memory-store.js.map +1 -0
  117. package/dist/approvals/schema.d.ts +484 -0
  118. package/dist/approvals/schema.d.ts.map +1 -0
  119. package/dist/approvals/schema.js +55 -0
  120. package/dist/approvals/schema.js.map +1 -0
  121. package/dist/approvals/service.d.ts +17 -0
  122. package/dist/approvals/service.d.ts.map +1 -0
  123. package/dist/approvals/service.js +240 -0
  124. package/dist/approvals/service.js.map +1 -0
  125. package/dist/approvals/sql-store.d.ts +9 -0
  126. package/dist/approvals/sql-store.d.ts.map +1 -0
  127. package/dist/approvals/sql-store.js +179 -0
  128. package/dist/approvals/sql-store.js.map +1 -0
  129. package/dist/approvals/types.d.ts +156 -0
  130. package/dist/approvals/types.d.ts.map +1 -0
  131. package/dist/approvals/types.js +32 -0
  132. package/dist/approvals/types.js.map +1 -0
  133. package/dist/approvals/wait.d.ts +10 -0
  134. package/dist/approvals/wait.d.ts.map +1 -0
  135. package/dist/approvals/wait.js +11 -0
  136. package/dist/approvals/wait.js.map +1 -0
  137. package/dist/audit/service.d.ts.map +1 -1
  138. package/dist/audit/service.js +6 -1
  139. package/dist/audit/service.js.map +1 -1
  140. package/dist/cli/cli.d.ts.map +1 -1
  141. package/dist/cli/cli.js +2 -1
  142. package/dist/cli/cli.js.map +1 -1
  143. package/dist/cli/commands/api.d.ts +65 -0
  144. package/dist/cli/commands/api.d.ts.map +1 -1
  145. package/dist/cli/commands/api.js +79 -4
  146. package/dist/cli/commands/api.js.map +1 -1
  147. package/dist/cli/commands/compile-flows.d.ts +9 -0
  148. package/dist/cli/commands/compile-flows.d.ts.map +1 -0
  149. package/dist/cli/commands/compile-flows.js +55 -0
  150. package/dist/cli/commands/compile-flows.js.map +1 -0
  151. package/dist/cli/commands/dev.d.ts +6 -0
  152. package/dist/cli/commands/dev.d.ts.map +1 -1
  153. package/dist/cli/commands/dev.js +22 -5
  154. package/dist/cli/commands/dev.js.map +1 -1
  155. package/dist/cli/commands/e2e.d.ts +5 -0
  156. package/dist/cli/commands/e2e.d.ts.map +1 -1
  157. package/dist/cli/commands/e2e.js +42 -3
  158. package/dist/cli/commands/e2e.js.map +1 -1
  159. package/dist/cli/commands/flow.d.ts.map +1 -1
  160. package/dist/cli/commands/flow.js +12 -3
  161. package/dist/cli/commands/flow.js.map +1 -1
  162. package/dist/cli/commands/generate-openapi-from-zod.d.ts +26 -0
  163. package/dist/cli/commands/generate-openapi-from-zod.d.ts.map +1 -0
  164. package/dist/cli/commands/generate-openapi-from-zod.js +189 -0
  165. package/dist/cli/commands/generate-openapi-from-zod.js.map +1 -0
  166. package/dist/cli/commands/generate.d.ts +10 -4
  167. package/dist/cli/commands/generate.d.ts.map +1 -1
  168. package/dist/cli/commands/generate.js +27 -70
  169. package/dist/cli/commands/generate.js.map +1 -1
  170. package/dist/cli/commands/index.d.ts +1 -0
  171. package/dist/cli/commands/index.d.ts.map +1 -1
  172. package/dist/cli/commands/index.js +2 -0
  173. package/dist/cli/commands/index.js.map +1 -1
  174. package/dist/cli/commands/mcp.d.ts +5 -0
  175. package/dist/cli/commands/mcp.d.ts.map +1 -1
  176. package/dist/cli/commands/mcp.js +28 -2
  177. package/dist/cli/commands/mcp.js.map +1 -1
  178. package/dist/cli/commands/migrate.d.ts +1 -0
  179. package/dist/cli/commands/migrate.d.ts.map +1 -1
  180. package/dist/cli/commands/migrate.js +145 -34
  181. package/dist/cli/commands/migrate.js.map +1 -1
  182. package/dist/cli/commands/openapi-3-1.d.ts +34 -0
  183. package/dist/cli/commands/openapi-3-1.d.ts.map +1 -0
  184. package/dist/cli/commands/openapi-3-1.js +333 -0
  185. package/dist/cli/commands/openapi-3-1.js.map +1 -0
  186. package/dist/cli/commands/start.d.ts +5 -0
  187. package/dist/cli/commands/start.d.ts.map +1 -1
  188. package/dist/cli/commands/start.js +20 -2
  189. package/dist/cli/commands/start.js.map +1 -1
  190. package/dist/cli/commands/ui.d.ts +11 -0
  191. package/dist/cli/commands/ui.d.ts.map +1 -1
  192. package/dist/cli/commands/ui.js +105 -20
  193. package/dist/cli/commands/ui.js.map +1 -1
  194. package/dist/cli/commands/verify.d.ts.map +1 -1
  195. package/dist/cli/commands/verify.js +2 -0
  196. package/dist/cli/commands/verify.js.map +1 -1
  197. package/dist/cli/commands/worker.d.ts +5 -0
  198. package/dist/cli/commands/worker.d.ts.map +1 -1
  199. package/dist/cli/commands/worker.js +18 -2
  200. package/dist/cli/commands/worker.js.map +1 -1
  201. package/dist/cli/index.d.ts +1 -1
  202. package/dist/cli/index.d.ts.map +1 -1
  203. package/dist/cli/index.js +1 -1
  204. package/dist/cli/index.js.map +1 -1
  205. package/dist/credentials/catalog.d.ts +71 -0
  206. package/dist/credentials/catalog.d.ts.map +1 -0
  207. package/dist/credentials/catalog.js +293 -0
  208. package/dist/credentials/catalog.js.map +1 -0
  209. package/dist/credentials/index.d.ts +3 -0
  210. package/dist/credentials/index.d.ts.map +1 -0
  211. package/dist/credentials/index.js +2 -0
  212. package/dist/credentials/index.js.map +1 -0
  213. package/dist/data/drift-inspector.d.ts +1 -4
  214. package/dist/data/drift-inspector.d.ts.map +1 -1
  215. package/dist/data/drift-inspector.js +39 -5
  216. package/dist/data/drift-inspector.js.map +1 -1
  217. package/dist/data/field-encryption.d.ts +7 -0
  218. package/dist/data/field-encryption.d.ts.map +1 -1
  219. package/dist/data/field-encryption.js +35 -17
  220. package/dist/data/field-encryption.js.map +1 -1
  221. package/dist/data/framework-migration-rewriter.js +1 -1
  222. package/dist/data/framework-migration-rewriter.js.map +1 -1
  223. package/dist/data/index.d.ts +1 -1
  224. package/dist/data/index.d.ts.map +1 -1
  225. package/dist/data/index.js +1 -1
  226. package/dist/data/index.js.map +1 -1
  227. package/dist/data/mask-fields.d.ts +2 -0
  228. package/dist/data/mask-fields.d.ts.map +1 -1
  229. package/dist/data/mask-fields.js +6 -0
  230. package/dist/data/mask-fields.js.map +1 -1
  231. package/dist/data/migration.d.ts.map +1 -1
  232. package/dist/data/migration.js +25 -1
  233. package/dist/data/migration.js.map +1 -1
  234. package/dist/data/repository.d.ts.map +1 -1
  235. package/dist/data/repository.js +15 -3
  236. package/dist/data/repository.js.map +1 -1
  237. package/dist/data/schema-generator.d.ts +95 -3
  238. package/dist/data/schema-generator.d.ts.map +1 -1
  239. package/dist/data/schema-generator.js +122 -6
  240. package/dist/data/schema-generator.js.map +1 -1
  241. package/dist/define/defineCapability.d.ts +7 -0
  242. package/dist/define/defineCapability.d.ts.map +1 -1
  243. package/dist/define/defineCapability.js +15 -0
  244. package/dist/define/defineCapability.js.map +1 -1
  245. package/dist/define/defineFlow.d.ts +3 -1
  246. package/dist/define/defineFlow.d.ts.map +1 -1
  247. package/dist/define/defineFlow.js.map +1 -1
  248. package/dist/durable/apply-ddl.d.ts +13 -0
  249. package/dist/durable/apply-ddl.d.ts.map +1 -0
  250. package/dist/durable/apply-ddl.js +278 -0
  251. package/dist/durable/apply-ddl.js.map +1 -0
  252. package/dist/durable/harness.d.ts +31 -0
  253. package/dist/durable/harness.d.ts.map +1 -0
  254. package/dist/durable/harness.js +136 -0
  255. package/dist/durable/harness.js.map +1 -0
  256. package/dist/durable/index.d.ts +18 -0
  257. package/dist/durable/index.d.ts.map +1 -0
  258. package/dist/durable/index.js +16 -0
  259. package/dist/durable/index.js.map +1 -0
  260. package/dist/durable/memory-store.d.ts +48 -0
  261. package/dist/durable/memory-store.d.ts.map +1 -0
  262. package/dist/durable/memory-store.js +260 -0
  263. package/dist/durable/memory-store.js.map +1 -0
  264. package/dist/durable/migrations-path.d.ts +5 -0
  265. package/dist/durable/migrations-path.d.ts.map +1 -0
  266. package/dist/durable/migrations-path.js +8 -0
  267. package/dist/durable/migrations-path.js.map +1 -0
  268. package/dist/durable/opaque-dispatch.d.ts +7 -0
  269. package/dist/durable/opaque-dispatch.d.ts.map +1 -0
  270. package/dist/durable/opaque-dispatch.js +67 -0
  271. package/dist/durable/opaque-dispatch.js.map +1 -0
  272. package/dist/durable/persist-before-ack.d.ts +52 -0
  273. package/dist/durable/persist-before-ack.d.ts.map +1 -0
  274. package/dist/durable/persist-before-ack.js +153 -0
  275. package/dist/durable/persist-before-ack.js.map +1 -0
  276. package/dist/durable/pg-env.d.ts +9 -0
  277. package/dist/durable/pg-env.d.ts.map +1 -0
  278. package/dist/durable/pg-env.js +20 -0
  279. package/dist/durable/pg-env.js.map +1 -0
  280. package/dist/durable/postgres-persist.d.ts +33 -0
  281. package/dist/durable/postgres-persist.d.ts.map +1 -0
  282. package/dist/durable/postgres-persist.js +239 -0
  283. package/dist/durable/postgres-persist.js.map +1 -0
  284. package/dist/durable/reconciliation.d.ts +20 -0
  285. package/dist/durable/reconciliation.d.ts.map +1 -0
  286. package/dist/durable/reconciliation.js +91 -0
  287. package/dist/durable/reconciliation.js.map +1 -0
  288. package/dist/durable/schema.d.ts +1448 -0
  289. package/dist/durable/schema.d.ts.map +1 -0
  290. package/dist/durable/schema.js +138 -0
  291. package/dist/durable/schema.js.map +1 -0
  292. package/dist/durable/spine-claim.d.ts +16 -0
  293. package/dist/durable/spine-claim.d.ts.map +1 -0
  294. package/dist/durable/spine-claim.js +131 -0
  295. package/dist/durable/spine-claim.js.map +1 -0
  296. package/dist/durable/types.d.ts +153 -0
  297. package/dist/durable/types.d.ts.map +1 -0
  298. package/dist/durable/types.js +114 -0
  299. package/dist/durable/types.js.map +1 -0
  300. package/dist/errors/data-errors.d.ts +6 -0
  301. package/dist/errors/data-errors.d.ts.map +1 -1
  302. package/dist/errors/data-errors.js +9 -0
  303. package/dist/errors/data-errors.js.map +1 -1
  304. package/dist/errors/http.d.ts.map +1 -1
  305. package/dist/errors/http.js +9 -1
  306. package/dist/errors/http.js.map +1 -1
  307. package/dist/errors/index.d.ts +4 -1
  308. package/dist/errors/index.d.ts.map +1 -1
  309. package/dist/errors/index.js +11 -1
  310. package/dist/errors/index.js.map +1 -1
  311. package/dist/errors-entry.d.ts +1 -1
  312. package/dist/errors-entry.d.ts.map +1 -1
  313. package/dist/errors-entry.js +1 -1
  314. package/dist/errors-entry.js.map +1 -1
  315. package/dist/events/consumer-registry.d.ts +6 -0
  316. package/dist/events/consumer-registry.d.ts.map +1 -1
  317. package/dist/events/consumer-registry.js.map +1 -1
  318. package/dist/events/dispatcher.d.ts +19 -0
  319. package/dist/events/dispatcher.d.ts.map +1 -1
  320. package/dist/events/dispatcher.js +161 -114
  321. package/dist/events/dispatcher.js.map +1 -1
  322. package/dist/events/idempotency.d.ts +3 -2
  323. package/dist/events/idempotency.d.ts.map +1 -1
  324. package/dist/events/idempotency.js +3 -2
  325. package/dist/events/idempotency.js.map +1 -1
  326. package/dist/events/index.d.ts +2 -0
  327. package/dist/events/index.d.ts.map +1 -1
  328. package/dist/events/index.js +1 -0
  329. package/dist/events/index.js.map +1 -1
  330. package/dist/events/subscription.d.ts +29 -0
  331. package/dist/events/subscription.d.ts.map +1 -0
  332. package/dist/events/subscription.js +19 -0
  333. package/dist/events/subscription.js.map +1 -0
  334. package/dist/events/worker.d.ts +8 -1
  335. package/dist/events/worker.d.ts.map +1 -1
  336. package/dist/events/worker.js +32 -5
  337. package/dist/events/worker.js.map +1 -1
  338. package/dist/execution/capability-executor.d.ts +6 -3
  339. package/dist/execution/capability-executor.d.ts.map +1 -1
  340. package/dist/execution/capability-executor.js +34 -6
  341. package/dist/execution/capability-executor.js.map +1 -1
  342. package/dist/execution/context-deps.d.ts +2 -0
  343. package/dist/execution/context-deps.d.ts.map +1 -1
  344. package/dist/execution/context-deps.js +2 -1
  345. package/dist/execution/context-deps.js.map +1 -1
  346. package/dist/execution/context-factory.d.ts +38 -1
  347. package/dist/execution/context-factory.d.ts.map +1 -1
  348. package/dist/execution/context-factory.js +102 -4
  349. package/dist/execution/context-factory.js.map +1 -1
  350. package/dist/execution/index.d.ts +2 -2
  351. package/dist/execution/index.d.ts.map +1 -1
  352. package/dist/execution/index.js +1 -1
  353. package/dist/execution/index.js.map +1 -1
  354. package/dist/execution/transactional-outbox.d.ts +10 -0
  355. package/dist/execution/transactional-outbox.d.ts.map +1 -1
  356. package/dist/execution/transactional-outbox.js +41 -2
  357. package/dist/execution/transactional-outbox.js.map +1 -1
  358. package/dist/flows/budget.d.ts +44 -0
  359. package/dist/flows/budget.d.ts.map +1 -0
  360. package/dist/flows/budget.js +81 -0
  361. package/dist/flows/budget.js.map +1 -0
  362. package/dist/flows/compile-flow.d.ts +23 -0
  363. package/dist/flows/compile-flow.d.ts.map +1 -0
  364. package/dist/flows/compile-flow.js +176 -0
  365. package/dist/flows/compile-flow.js.map +1 -0
  366. package/dist/flows/compiled-registry.d.ts +43 -0
  367. package/dist/flows/compiled-registry.d.ts.map +1 -0
  368. package/dist/flows/compiled-registry.js +198 -0
  369. package/dist/flows/compiled-registry.js.map +1 -0
  370. package/dist/flows/dead-letter.d.ts +16 -0
  371. package/dist/flows/dead-letter.d.ts.map +1 -1
  372. package/dist/flows/dead-letter.js +67 -0
  373. package/dist/flows/dead-letter.js.map +1 -1
  374. package/dist/flows/definition-strategy.d.ts +13 -0
  375. package/dist/flows/definition-strategy.d.ts.map +1 -0
  376. package/dist/flows/definition-strategy.js +30 -0
  377. package/dist/flows/definition-strategy.js.map +1 -0
  378. package/dist/flows/engine.d.ts +38 -1
  379. package/dist/flows/engine.d.ts.map +1 -1
  380. package/dist/flows/engine.js +375 -32
  381. package/dist/flows/engine.js.map +1 -1
  382. package/dist/flows/index.d.ts +12 -4
  383. package/dist/flows/index.d.ts.map +1 -1
  384. package/dist/flows/index.js +7 -2
  385. package/dist/flows/index.js.map +1 -1
  386. package/dist/flows/scheduler.d.ts +26 -0
  387. package/dist/flows/scheduler.d.ts.map +1 -1
  388. package/dist/flows/scheduler.js +157 -37
  389. package/dist/flows/scheduler.js.map +1 -1
  390. package/dist/flows/schema.d.ts +34 -0
  391. package/dist/flows/schema.d.ts.map +1 -1
  392. package/dist/flows/schema.js +4 -0
  393. package/dist/flows/schema.js.map +1 -1
  394. package/dist/flows/step-executor.d.ts +3 -0
  395. package/dist/flows/step-executor.d.ts.map +1 -1
  396. package/dist/flows/step-executor.js +33 -0
  397. package/dist/flows/step-executor.js.map +1 -1
  398. package/dist/governance/capability-source-scan.d.ts.map +1 -1
  399. package/dist/governance/capability-source-scan.js +2 -29
  400. package/dist/governance/capability-source-scan.js.map +1 -1
  401. package/dist/governance/forbidden-path-scan.d.ts +7 -0
  402. package/dist/governance/forbidden-path-scan.d.ts.map +1 -0
  403. package/dist/governance/forbidden-path-scan.js +60 -0
  404. package/dist/governance/forbidden-path-scan.js.map +1 -0
  405. package/dist/governance/index.d.ts +2 -0
  406. package/dist/governance/index.d.ts.map +1 -1
  407. package/dist/governance/index.js +2 -0
  408. package/dist/governance/index.js.map +1 -1
  409. package/dist/governance/source-walk.d.ts +3 -0
  410. package/dist/governance/source-walk.d.ts.map +1 -0
  411. package/dist/governance/source-walk.js +33 -0
  412. package/dist/governance/source-walk.js.map +1 -0
  413. package/dist/index.d.ts +21 -12
  414. package/dist/index.d.ts.map +1 -1
  415. package/dist/index.js +22 -9
  416. package/dist/index.js.map +1 -1
  417. package/dist/runtime/bootstrap.d.ts +3 -1
  418. package/dist/runtime/bootstrap.d.ts.map +1 -1
  419. package/dist/runtime/load-extensions.d.ts.map +1 -1
  420. package/dist/runtime/load-extensions.js +11 -0
  421. package/dist/runtime/load-extensions.js.map +1 -1
  422. package/dist/runtime/register-consumers.d.ts +3 -0
  423. package/dist/runtime/register-consumers.d.ts.map +1 -1
  424. package/dist/runtime/register-consumers.js +4 -0
  425. package/dist/runtime/register-consumers.js.map +1 -1
  426. package/dist/runtime/start-worker-pool.d.ts.map +1 -1
  427. package/dist/runtime/start-worker-pool.js +1 -0
  428. package/dist/runtime/start-worker-pool.js.map +1 -1
  429. package/dist/runtime-entry.d.ts +4 -0
  430. package/dist/runtime-entry.d.ts.map +1 -0
  431. package/dist/runtime-entry.js +30 -0
  432. package/dist/runtime-entry.js.map +1 -0
  433. package/dist/server/bootstrap.d.ts +116 -8
  434. package/dist/server/bootstrap.d.ts.map +1 -1
  435. package/dist/server/bootstrap.js +139 -62
  436. package/dist/server/bootstrap.js.map +1 -1
  437. package/dist/tenancy/data-plane-connection.d.ts +108 -0
  438. package/dist/tenancy/data-plane-connection.d.ts.map +1 -0
  439. package/dist/tenancy/data-plane-connection.js +320 -0
  440. package/dist/tenancy/data-plane-connection.js.map +1 -0
  441. package/dist/tenancy/data-plane-migrate.d.ts +30 -0
  442. package/dist/tenancy/data-plane-migrate.d.ts.map +1 -0
  443. package/dist/tenancy/data-plane-migrate.js +44 -0
  444. package/dist/tenancy/data-plane-migrate.js.map +1 -0
  445. package/dist/tenancy/data-plane-provisioning.d.ts +135 -0
  446. package/dist/tenancy/data-plane-provisioning.d.ts.map +1 -0
  447. package/dist/tenancy/data-plane-provisioning.js +639 -0
  448. package/dist/tenancy/data-plane-provisioning.js.map +1 -0
  449. package/dist/tenancy/data-plane-resolver.d.ts +37 -0
  450. package/dist/tenancy/data-plane-resolver.d.ts.map +1 -0
  451. package/dist/tenancy/data-plane-resolver.js +302 -0
  452. package/dist/tenancy/data-plane-resolver.js.map +1 -0
  453. package/dist/tenancy/index.d.ts +9 -0
  454. package/dist/tenancy/index.d.ts.map +1 -0
  455. package/dist/tenancy/index.js +22 -0
  456. package/dist/tenancy/index.js.map +1 -0
  457. package/dist/tenancy/types.d.ts +117 -0
  458. package/dist/tenancy/types.d.ts.map +1 -0
  459. package/dist/tenancy/types.js +8 -0
  460. package/dist/tenancy/types.js.map +1 -0
  461. package/dist/testing/context.d.ts.map +1 -1
  462. package/dist/testing/context.js +6 -1
  463. package/dist/testing/context.js.map +1 -1
  464. package/dist/testing/crash-matrix-simulation.d.ts +51 -0
  465. package/dist/testing/crash-matrix-simulation.d.ts.map +1 -0
  466. package/dist/testing/crash-matrix-simulation.js +350 -0
  467. package/dist/testing/crash-matrix-simulation.js.map +1 -0
  468. package/dist/testing/scaffolding.d.ts.map +1 -1
  469. package/dist/testing/scaffolding.js +4 -1
  470. package/dist/testing/scaffolding.js.map +1 -1
  471. package/dist/types/capability.d.ts +16 -0
  472. package/dist/types/capability.d.ts.map +1 -1
  473. package/dist/types/capability.js.map +1 -1
  474. package/dist/types/context.d.ts +62 -0
  475. package/dist/types/context.d.ts.map +1 -1
  476. package/dist/types/enums.d.ts +2 -0
  477. package/dist/types/enums.d.ts.map +1 -1
  478. package/dist/types/enums.js +2 -0
  479. package/dist/types/enums.js.map +1 -1
  480. package/dist/types/fields.d.ts +7 -0
  481. package/dist/types/fields.d.ts.map +1 -1
  482. package/dist/types/flow.d.ts +96 -1
  483. package/dist/types/flow.d.ts.map +1 -1
  484. package/dist/types/flow.js +7 -1
  485. package/dist/types/flow.js.map +1 -1
  486. package/dist/types/index.d.ts +9 -6
  487. package/dist/types/index.d.ts.map +1 -1
  488. package/dist/types/index.js +5 -1
  489. package/dist/types/index.js.map +1 -1
  490. package/dist/types/prompt.d.ts +8 -0
  491. package/dist/types/prompt.d.ts.map +1 -1
  492. package/dist/types/prompt.js +7 -0
  493. package/dist/types/prompt.js.map +1 -1
  494. package/dist/worker/bootstrap.d.ts +100 -1
  495. package/dist/worker/bootstrap.d.ts.map +1 -1
  496. package/dist/worker/bootstrap.js +155 -14
  497. package/dist/worker/bootstrap.js.map +1 -1
  498. package/instructions/api.md +21 -0
  499. package/instructions/cli.md +15 -9
  500. package/instructions/deployment.md +27 -25
  501. package/instructions/flows.md +8 -1
  502. package/instructions/framework.md +2 -1
  503. package/instructions/mcp.md +1 -1
  504. package/instructions/peer-dependencies.md +16 -14
  505. package/instructions/prompts.md +3 -0
  506. package/instructions/security.md +4 -0
  507. package/instructions/testing.md +2 -2
  508. package/migrations/durable-tenant/0000_durable_tenant.sql +92 -0
  509. package/migrations/durable-tenant/0001_human_task.sql +45 -0
  510. package/migrations/durable-tenant/meta/_journal.json +20 -0
  511. package/migrations/spine/0000_opaque_dispatch.sql +26 -0
  512. package/migrations/spine/meta/_journal.json +13 -0
  513. package/package.json +26 -8
@@ -20,4 +20,5 @@ export { createInMemoryQueue, createRedisQueue } from './queue.js';
20
20
  export { createOutboxDispatcher } from './dispatcher.js';
21
21
  // ── Worker ──
22
22
  export { createEventWorker } from './worker.js';
23
+ export { evaluateEventSubscriptionDelivery } from './subscription.js';
23
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,4EAA4E;AAC5E,mEAAmE;AACnE,4DAA4D;AAC5D,EAAE;AACF,2FAA2F;AAE3F,uBAAuB;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,sBAAsB;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGlD,0BAA0B;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D,sBAAsB;AACtB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE7E,oBAAoB;AACpB,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAG5D,cAAc;AACd,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGnE,mBAAmB;AACnB,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAGzD,eAAe;AACf,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,sBAAsB;AACtB,4EAA4E;AAC5E,mEAAmE;AACnE,4DAA4D;AAC5D,EAAE;AACF,2FAA2F;AAE3F,uBAAuB;AACvB,OAAO,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAE9C,sBAAsB;AACtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAGlD,0BAA0B;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAG1D,sBAAsB;AACtB,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE7E,oBAAoB;AACpB,OAAO,EAAE,wBAAwB,EAAE,MAAM,kBAAkB,CAAC;AAG5D,cAAc;AACd,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAGnE,mBAAmB;AACnB,OAAO,EAAE,sBAAsB,EAAE,MAAM,iBAAiB,CAAC;AAGzD,eAAe;AACf,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD,OAAO,EAAE,iCAAiC,EAAE,MAAM,mBAAmB,CAAC"}
@@ -0,0 +1,29 @@
1
+ import type { EventEnvelope } from '../types/event.js';
2
+ import type { EventConsumer } from './consumer-registry.js';
3
+ /**
4
+ * v1 subscription binding (trigger-definition EventSubscriptionDefinition subset).
5
+ * Pins delivery to a consumer capability version. No second bus — the existing
6
+ * worker applies this at deliver time.
7
+ */
8
+ export interface EventSubscriptionBinding {
9
+ subscriptionId: string;
10
+ eventType: string;
11
+ consumerCapabilityId: string;
12
+ consumerCapabilityVersion: string;
13
+ active: boolean;
14
+ }
15
+ export type EventSubscriptionSkipReason = 'inactive' | 'policy-denied';
16
+ export interface EventSubscriptionDecision {
17
+ deliver: boolean;
18
+ reason?: EventSubscriptionSkipReason;
19
+ }
20
+ /**
21
+ * Activation + policy gate used by `createEventWorker` before the handler.
22
+ * Version matching stays on `ConsumerRegistry.getConsumers`.
23
+ */
24
+ export declare function evaluateEventSubscriptionDelivery(input: {
25
+ active?: boolean;
26
+ policyAllowed?: boolean;
27
+ }): EventSubscriptionDecision;
28
+ export declare function resolveConsumerDeliveryPolicy(consumer: EventConsumer, envelope: EventEnvelope): Promise<boolean>;
29
+ //# sourceMappingURL=subscription.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription.d.ts","sourceRoot":"","sources":["../../src/events/subscription.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,yBAAyB,EAAE,MAAM,CAAC;IAClC,MAAM,EAAE,OAAO,CAAC;CACjB;AAED,MAAM,MAAM,2BAA2B,GAAG,UAAU,GAAG,eAAe,CAAC;AAEvE,MAAM,WAAW,yBAAyB;IACxC,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,2BAA2B,CAAC;CACtC;AAED;;;GAGG;AACH,wBAAgB,iCAAiC,CAAC,KAAK,EAAE;IACvD,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB,GAAG,yBAAyB,CAQ5B;AAED,wBAAsB,6BAA6B,CACjD,QAAQ,EAAE,aAAa,EACvB,QAAQ,EAAE,aAAa,GACtB,OAAO,CAAC,OAAO,CAAC,CAGlB"}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Activation + policy gate used by `createEventWorker` before the handler.
3
+ * Version matching stays on `ConsumerRegistry.getConsumers`.
4
+ */
5
+ export function evaluateEventSubscriptionDelivery(input) {
6
+ if (input.active === false) {
7
+ return { deliver: false, reason: 'inactive' };
8
+ }
9
+ if (input.policyAllowed === false) {
10
+ return { deliver: false, reason: 'policy-denied' };
11
+ }
12
+ return { deliver: true };
13
+ }
14
+ export async function resolveConsumerDeliveryPolicy(consumer, envelope) {
15
+ if (!consumer.checkDeliveryPolicy)
16
+ return true;
17
+ return consumer.checkDeliveryPolicy(envelope);
18
+ }
19
+ //# sourceMappingURL=subscription.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"subscription.js","sourceRoot":"","sources":["../../src/events/subscription.ts"],"names":[],"mappings":"AAuBA;;;GAGG;AACH,MAAM,UAAU,iCAAiC,CAAC,KAGjD;IACC,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC3B,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;IAChD,CAAC;IACD,IAAI,KAAK,CAAC,aAAa,KAAK,KAAK,EAAE,CAAC;QAClC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,CAAC;IACrD,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;AAC3B,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,6BAA6B,CACjD,QAAuB,EACvB,QAAuB;IAEvB,IAAI,CAAC,QAAQ,CAAC,mBAAmB;QAAE,OAAO,IAAI,CAAC;IAC/C,OAAO,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;AAChD,CAAC"}
@@ -1,15 +1,22 @@
1
1
  import type { PostgresJsDatabase } from 'drizzle-orm/postgres-js';
2
2
  import type { PlumbusMetrics } from '../observability/metrics.js';
3
+ import type { DataPlaneResolver } from '../tenancy/types.js';
3
4
  import type { AuditService } from '../types/audit.js';
4
5
  import type { EventEnvelope } from '../types/event.js';
5
6
  import type { ConsumerRegistry } from './consumer-registry.js';
6
- import type { IdempotencyService } from './idempotency.js';
7
+ import { type IdempotencyService } from './idempotency.js';
7
8
  import type { EventQueue } from './queue.js';
8
9
  export interface WorkerConfig {
9
10
  db: PostgresJsDatabase;
10
11
  queue: EventQueue;
11
12
  consumers: ConsumerRegistry;
12
13
  idempotency: IdempotencyService;
14
+ /**
15
+ * When set, delivery (idempotency + dead-letter + job rows) runs against
16
+ * the tenant data plane resolved from `envelope.tenantId`. The pool `db`
17
+ * and boot-time `idempotency` stay the fallback for untenanted envelopes.
18
+ */
19
+ resolver?: DataPlaneResolver;
13
20
  audit?: AuditService;
14
21
  metrics?: PlumbusMetrics;
15
22
  /** Default max retries per consumer (default: 3) */
@@ -1 +1 @@
1
- {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/events/worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAE3D,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,kBAAkB,CAAC;IACvB,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,WAAW,EAAE,kBAAkB,CAAC;IAChC,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,oDAAoD;IACpD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,8CAA8C;IAC9C,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY;IA0HlD,qDAAqD;wBAhGtB,aAAa,KAAG,OAAO,CAAC,IAAI,CAAC;IAmG5D,qCAAqC;aAC5B,IAAI;IAKb,sBAAsB;YACd,IAAI;wBAOK,OAAO;EAI3B"}
1
+ {"version":3,"file":"worker.d.ts","sourceRoot":"","sources":["../../src/events/worker.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAClE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAClE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAC7D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAGvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAA4B,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAErF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAM7C,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,kBAAkB,CAAC;IACvB,KAAK,EAAE,UAAU,CAAC;IAClB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,WAAW,EAAE,kBAAkB,CAAC;IAChC;;;;OAIG;IACH,QAAQ,CAAC,EAAE,iBAAiB,CAAC;IAC7B,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,oDAAoD;IACpD,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,8EAA8E;IAC9E,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,8CAA8C;IAC9C,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B;AAED;;;;;;GAMG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,YAAY;IAyJlD,qDAAqD;wBAnHtB,aAAa,KAAG,OAAO,CAAC,IAAI,CAAC;IAsH5D,qCAAqC;aAC5B,IAAI;IAKb,sBAAsB;YACd,IAAI;wBAOK,OAAO;EAI3B"}
@@ -1,5 +1,7 @@
1
1
  import { createJobService } from '../jobs/service.js';
2
+ import { createIdempotencyService } from './idempotency.js';
2
3
  import { deadLetterTable } from './outbox.js';
4
+ import { evaluateEventSubscriptionDelivery, resolveConsumerDeliveryPolicy, } from './subscription.js';
3
5
  /**
4
6
  * Creates an event delivery worker that subscribes to the queue,
5
7
  * routes events to registered consumers with idempotency checks,
@@ -8,8 +10,15 @@ import { deadLetterTable } from './outbox.js';
8
10
  * Returns start/stop controls.
9
11
  */
10
12
  export function createEventWorker(config) {
11
- const { db, queue, consumers, idempotency, defaultMaxRetries = 3, metrics, audit, retryBackoffBaseMs = 100, retryBackoffMaxMs = 5000, } = config;
13
+ const { db, queue, consumers, idempotency, defaultMaxRetries = 3, metrics, audit, retryBackoffBaseMs = 100, retryBackoffMaxMs = 5000, resolver, } = config;
12
14
  let unsubscribe = null;
15
+ async function planeFor(envelope) {
16
+ if (!resolver || !envelope.tenantId) {
17
+ return { db, idempotency };
18
+ }
19
+ const handle = await resolver.resolve(envelope.tenantId);
20
+ return { db: handle.db, idempotency: createIdempotencyService(handle.db) };
21
+ }
13
22
  /** Compute exponential backoff with jitter */
14
23
  function computeRetryDelay(attempt) {
15
24
  const base = Math.min(retryBackoffBaseMs * 2 ** attempt, retryBackoffMaxMs);
@@ -22,10 +31,28 @@ export function createEventWorker(config) {
22
31
  async function deliver(envelope) {
23
32
  const matched = consumers.getConsumers(envelope.eventType, envelope.version);
24
33
  const deliveryStarted = Date.now();
34
+ const plane = await planeFor(envelope);
25
35
  for (const consumer of matched) {
36
+ const policyAllowed = await resolveConsumerDeliveryPolicy(consumer, envelope);
37
+ const subscription = evaluateEventSubscriptionDelivery({
38
+ active: consumer.active,
39
+ policyAllowed,
40
+ });
41
+ if (!subscription.deliver) {
42
+ await audit?.record('event.consumer.skipped', {
43
+ eventId: envelope.id,
44
+ eventType: envelope.eventType,
45
+ consumerId: consumer.id,
46
+ capabilityVersion: consumer.capabilityVersion,
47
+ tenantId: envelope.tenantId,
48
+ reason: subscription.reason,
49
+ outcome: 'skipped',
50
+ });
51
+ continue;
52
+ }
26
53
  const maxRetries = consumer.maxRetries ?? defaultMaxRetries;
27
54
  // Idempotency guard
28
- const alreadyProcessed = await idempotency.isProcessed(envelope.id, consumer.id);
55
+ const alreadyProcessed = await plane.idempotency.isProcessed(envelope.id, consumer.id);
29
56
  if (alreadyProcessed)
30
57
  continue;
31
58
  let lastError;
@@ -53,7 +80,7 @@ export function createEventWorker(config) {
53
80
  }
54
81
  }
55
82
  if (succeeded) {
56
- await idempotency.markProcessed(envelope.id, consumer.id);
83
+ await plane.idempotency.markProcessed(envelope.id, consumer.id);
57
84
  metrics?.eventDelivered.inc({ consumer: consumer.id });
58
85
  metrics?.eventDeliveryDuration.observe(Date.now() - deliveryStarted, {
59
86
  consumer: consumer.id,
@@ -83,7 +110,7 @@ export function createEventWorker(config) {
83
110
  outcome: 'dead_lettered',
84
111
  });
85
112
  // Dead-letter
86
- await db.insert(deadLetterTable).values({
113
+ await plane.db.insert(deadLetterTable).values({
87
114
  eventId: envelope.id,
88
115
  eventType: envelope.eventType,
89
116
  payload: envelope.payload,
@@ -100,7 +127,7 @@ export function createEventWorker(config) {
100
127
  if (consumer.id.startsWith('job:')) {
101
128
  const payload = envelope.payload;
102
129
  if (payload.jobExecutionId) {
103
- const jobs = createJobService(db);
130
+ const jobs = createJobService(plane.db);
104
131
  await jobs.markDeadLettered(payload.jobExecutionId, {
105
132
  code: 'delivery_exhausted',
106
133
  message: lastError ?? 'Job delivery exhausted retries',
@@ -1 +1 @@
1
- {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/events/worker.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAItD,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAkB9C;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,MAAoB;IACpD,MAAM,EACJ,EAAE,EACF,KAAK,EACL,SAAS,EACT,WAAW,EACX,iBAAiB,GAAG,CAAC,EACrB,OAAO,EACP,KAAK,EACL,kBAAkB,GAAG,GAAG,EACxB,iBAAiB,GAAG,IAAI,GACzB,GAAG,MAAM,CAAC;IAEX,IAAI,WAAW,GAAwB,IAAI,CAAC;IAE5C,8CAA8C;IAC9C,SAAS,iBAAiB,CAAC,OAAe;QACxC,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,kBAAkB,GAAG,CAAC,IAAI,OAAO,EAAE,iBAAiB,CAAC,CAAC;QAC5E,8CAA8C;QAC9C,OAAO,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,GAAG,GAAG,CAAC,CAAC;IACvD,CAAC;IAED,SAAS,KAAK,CAAC,EAAU;QACvB,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,KAAK,UAAU,OAAO,CAAC,QAAuB;QAC5C,MAAM,OAAO,GAAG,SAAS,CAAC,YAAY,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC7E,MAAM,eAAe,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAEnC,KAAK,MAAM,QAAQ,IAAI,OAAO,EAAE,CAAC;YAC/B,MAAM,UAAU,GAAG,QAAQ,CAAC,UAAU,IAAI,iBAAiB,CAAC;YAE5D,oBAAoB;YACpB,MAAM,gBAAgB,GAAG,MAAM,WAAW,CAAC,WAAW,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;YACjF,IAAI,gBAAgB;gBAAE,SAAS;YAE/B,IAAI,SAA6B,CAAC;YAClC,IAAI,OAAO,GAAG,CAAC,CAAC;YAChB,IAAI,SAAS,GAAG,KAAK,CAAC;YAEtB,OAAO,OAAO,GAAG,UAAU,IAAI,CAAC,SAAS,EAAE,CAAC;gBAC1C,OAAO,EAAE,CAAC;gBACV,IAAI,CAAC;oBACH,MAAM,KAAK,EAAE,MAAM,CAAC,wBAAwB,EAAE;wBAC5C,OAAO,EAAE,QAAQ,CAAC,EAAE;wBACpB,SAAS,EAAE,QAAQ,CAAC,SAAS;wBAC7B,UAAU,EAAE,QAAQ,CAAC,EAAE;wBACvB,OAAO;wBACP,QAAQ,EAAE,QAAQ,CAAC,QAAQ;wBAC3B,OAAO,EAAE,SAAS;qBACnB,CAAC,CAAC;oBACH,MAAM,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;oBACjC,SAAS,GAAG,IAAI,CAAC;gBACnB,CAAC;gBAAC,OAAO,GAAG,EAAE,CAAC;oBACb,SAAS,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;oBAC7D,IAAI,OAAO,GAAG,UAAU,EAAE,CAAC;wBACzB,MAAM,KAAK,CAAC,iBAAiB,CAAC,OAAO,GAAG,CAAC,CAAC,CAAC,CAAC;oBAC9C,CAAC;gBACH,CAAC;YACH,CAAC;YAED,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,WAAW,CAAC,aAAa,CAAC,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,CAAC,CAAC;gBAC1D,OAAO,EAAE,cAAc,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;gBACvD,OAAO,EAAE,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe,EAAE;oBACnE,QAAQ,EAAE,QAAQ,CAAC,EAAE;oBACrB,OAAO,EAAE,WAAW;iBACrB,CAAC,CAAC;gBACH,MAAM,KAAK,EAAE,MAAM,CAAC,0BAA0B,EAAE;oBAC9C,OAAO,EAAE,QAAQ,CAAC,EAAE;oBACpB,SAAS,EAAE,QAAQ,CAAC,SAAS;oBAC7B,UAAU,EAAE,QAAQ,CAAC,EAAE;oBACvB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;oBAC3B,OAAO,EAAE,SAAS;iBACnB,CAAC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACN,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC;gBACpD,OAAO,EAAE,qBAAqB,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,eAAe,EAAE;oBACnE,QAAQ,EAAE,QAAQ,CAAC,EAAE;oBACrB,OAAO,EAAE,QAAQ;iBAClB,CAAC,CAAC;gBACH,MAAM,KAAK,EAAE,MAAM,CAAC,8BAA8B,EAAE;oBAClD,OAAO,EAAE,QAAQ,CAAC,EAAE;oBACpB,SAAS,EAAE,QAAQ,CAAC,SAAS;oBAC7B,UAAU,EAAE,QAAQ,CAAC,EAAE;oBACvB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;oBAC3B,SAAS;oBACT,QAAQ,EAAE,OAAO;oBACjB,OAAO,EAAE,eAAe;iBACzB,CAAC,CAAC;gBACH,cAAc;gBACd,MAAM,EAAE,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC;oBACtC,OAAO,EAAE,QAAQ,CAAC,EAAE;oBACpB,SAAS,EAAE,QAAQ,CAAC,SAAS;oBAC7B,OAAO,EAAE,QAAQ,CAAC,OAAc;oBAChC,UAAU,EAAE,QAAQ,CAAC,EAAE;oBACvB,SAAS,EAAE,SAAS,IAAI,eAAe;oBACvC,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC;oBAC3B,QAAQ,EAAE;wBACR,aAAa,EAAE,QAAQ,CAAC,aAAa;wBACrC,WAAW,EAAE,QAAQ,CAAC,WAAW;wBACjC,KAAK,EAAE,QAAQ,CAAC,KAAK;wBACrB,QAAQ,EAAE,QAAQ,CAAC,QAAQ;qBAC5B;iBACF,CAAC,CAAC;gBAEH,IAAI,QAAQ,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;oBACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,OAA0B,CAAC;oBACpD,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;wBAC3B,MAAM,IAAI,GAAG,gBAAgB,CAAC,EAAE,CAAC,CAAC;wBAClC,MAAM,IAAI,CAAC,gBAAgB,CAAC,OAAO,CAAC,cAAc,EAAE;4BAClD,IAAI,EAAE,oBAAoB;4BAC1B,OAAO,EAAE,SAAS,IAAI,gCAAgC;yBACvD,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,qDAAqD;QACrD,OAAO;QAEP,qCAAqC;QACrC,KAAK;YACH,IAAI,WAAW;gBAAE,OAAO;YACxB,WAAW,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;QACzC,CAAC;QAED,sBAAsB;QACtB,IAAI;YACF,IAAI,WAAW,EAAE,CAAC;gBAChB,WAAW,EAAE,CAAC;gBACd,WAAW,GAAG,IAAI,CAAC;YACrB,CAAC;QACH,CAAC;QAED,IAAI,SAAS;YACX,OAAO,WAAW,KAAK,IAAI,CAAC;QAC9B,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"worker.js","sourceRoot":"","sources":["../../src/events/worker.ts"],"names":[],"mappings":"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"}
@@ -11,13 +11,16 @@ export interface ExecutionFailure {
11
11
  error: PlumbusErrorLike;
12
12
  }
13
13
  export type CapabilityResult<T = unknown> = ExecutionResult<T> | ExecutionFailure;
14
+ /** Check current access without invoking a mutation or consuming an approval. */
15
+ export declare function authorizeCapability<TInput extends z.ZodTypeAny>(capability: CapabilityContract<TInput>, ctx: ExecutionContext, input: z.infer<TInput>): Promise<CapabilityResult<void>>;
14
16
  /**
15
17
  * Execute a capability through the full pipeline:
16
18
  * 1. Validate input
17
19
  * 2. Evaluate access policy
18
- * 3. Execute handler (with scoped ctx.capabilities)
19
- * 4. Validate output
20
- * 5. Record audit
20
+ * 3. Approval gate (consequential risk tier)
21
+ * 4. Execute handler (with scoped ctx.capabilities)
22
+ * 5. Validate output
23
+ * 6. Record audit
21
24
  */
22
25
  export declare function executeCapability<TInput extends z.ZodTypeAny, TOutput extends z.ZodTypeAny>(capability: CapabilityContract<TInput, TOutput>, ctx: ExecutionContext, rawInput: unknown): Promise<CapabilityResult<z.infer<TOutput>>>;
23
26
  //# sourceMappingURL=capability-executor.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"capability-executor.d.ts","sourceRoot":"","sources":["../../src/execution/capability-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,qBAAqB,CAAC;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAgB3D,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAC1C,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,EAAE,CAAC,CAAC;CACT;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,gBAAgB,CAAC;CACzB;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,GAAG,OAAO,IAAI,eAAe,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC;AAyHlF;;;;;;;GAOG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,EAAE,OAAO,SAAS,CAAC,CAAC,UAAU,EAC/F,UAAU,EAAE,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/C,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAyG7C"}
1
+ {"version":3,"file":"capability-executor.d.ts","sourceRoot":"","sources":["../../src/execution/capability-executor.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAG7B,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AACjE,OAAO,KAAK,EAAE,gBAAgB,EAAoB,MAAM,qBAAqB,CAAC;AAC9E,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AAiB3D,MAAM,WAAW,eAAe,CAAC,CAAC,GAAG,OAAO;IAC1C,OAAO,EAAE,IAAI,CAAC;IACd,IAAI,EAAE,CAAC,CAAC;CACT;AAED,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,gBAAgB,CAAC;CACzB;AAED,MAAM,MAAM,gBAAgB,CAAC,CAAC,GAAG,OAAO,IAAI,eAAe,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC;AAElF,iFAAiF;AACjF,wBAAsB,mBAAmB,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,EACnE,UAAU,EAAE,kBAAkB,CAAC,MAAM,CAAC,EACtC,GAAG,EAAE,gBAAgB,EACrB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,GACrB,OAAO,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAkBjC;AAyHD;;;;;;;;GAQG;AACH,wBAAsB,iBAAiB,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,EAAE,OAAO,SAAS,CAAC,CAAC,UAAU,EAC/F,UAAU,EAAE,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/C,GAAG,EAAE,gBAAgB,EACrB,QAAQ,EAAE,OAAO,GAChB,OAAO,CAAC,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CA8G7C"}
@@ -5,7 +5,29 @@ import { getCanonicalCapabilityName } from './canonical-name.js';
5
5
  import { createDeferredFlowService } from './deferred-flow-service.js';
6
6
  import { createDeferredJobDispatchService } from '../jobs/deferred-job-dispatch-service.js';
7
7
  import { createCapabilityInvokeService, createUnavailableCapabilityService, stripHandlerRuntime, } from './capability-invocation.js';
8
+ import { evaluateApprovalGate } from '../approvals/gate.js';
8
9
  import { CapabilityOutputValidationError, shouldUseTransactionalOutbox, } from './transactional-outbox.js';
10
+ /** Check current access without invoking a mutation or consuming an approval. */
11
+ export async function authorizeCapability(capability, ctx, input) {
12
+ const canonicalName = getCanonicalCapabilityName(capability);
13
+ const contract = capability;
14
+ const access = evaluateAccess(capability.access, ctx.auth);
15
+ try {
16
+ if (!access.allowed) {
17
+ throw ctx.errors.forbidden(access.reason ?? 'Access denied', { capability: canonicalName });
18
+ }
19
+ // Authorization is a read-only phase, with no capability invocation runtime exposed.
20
+ await capability.authorize?.(buildHandlerContext(ctx, contract, undefined), input);
21
+ return { success: true, data: undefined };
22
+ }
23
+ catch (error) {
24
+ if (isPlumbusError(error)) {
25
+ await recordAudit(ctx, capability, canonicalName, 'denied', { error });
26
+ return { success: false, error };
27
+ }
28
+ return handleExecutionError(error, ctx, contract, canonicalName);
29
+ }
30
+ }
9
31
  function buildHandlerContext(ctx, capability, invocationRuntime, scope) {
10
32
  const handlerRuntime = stripHandlerRuntime(ctx.__runtime, {
11
33
  preserveCapabilityRuntime: getCanonicalCapabilityName(capability) === 'chat.chatConfirmAction',
@@ -95,9 +117,10 @@ async function handleExecutionError(err, ctx, capability, canonicalName) {
95
117
  * Execute a capability through the full pipeline:
96
118
  * 1. Validate input
97
119
  * 2. Evaluate access policy
98
- * 3. Execute handler (with scoped ctx.capabilities)
99
- * 4. Validate output
100
- * 5. Record audit
120
+ * 3. Approval gate (consequential risk tier)
121
+ * 4. Execute handler (with scoped ctx.capabilities)
122
+ * 5. Validate output
123
+ * 6. Record audit
101
124
  */
102
125
  export async function executeCapability(capability, ctx, rawInput) {
103
126
  const canonicalName = getCanonicalCapabilityName(capability);
@@ -113,10 +136,15 @@ export async function executeCapability(capability, ctx, rawInput) {
113
136
  }
114
137
  const input = inputResult.data;
115
138
  // 2. Evaluate access policy (deny-by-default)
116
- const authResult = evaluateAccess(capability.access, ctx.auth);
117
- if (!authResult.allowed) {
118
- const error = ctx.errors.forbidden(authResult.reason ?? 'Access denied', {
139
+ const authResult = await authorizeCapability(capability, ctx, input);
140
+ if (!authResult.success)
141
+ return authResult;
142
+ const approvalGate = await evaluateApprovalGate({ capability, ctx, input });
143
+ if (approvalGate.blocked) {
144
+ const error = ctx.errors.forbidden(approvalGate.reason, {
119
145
  capability: canonicalName,
146
+ approvalGate: approvalGate.code,
147
+ ...approvalGate.metadata,
120
148
  });
121
149
  await recordAudit(ctx, capability, canonicalName, 'denied', { error });
122
150
  return { success: false, error };
@@ -1 +1 @@
1
- {"version":3,"file":"capability-executor.js","sourceRoot":"","sources":["../../src/execution/capability-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"capability-executor.js","sourceRoot":"","sources":["../../src/execution/capability-executor.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAIpD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,0BAA0B,EAAE,MAAM,qBAAqB,CAAC;AACjE,OAAO,EAAE,yBAAyB,EAAE,MAAM,4BAA4B,CAAC;AACvE,OAAO,EAAE,gCAAgC,EAAE,MAAM,0CAA0C,CAAC;AAC5F,OAAO,EACL,6BAA6B,EAC7B,kCAAkC,EAClC,mBAAmB,GAEpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EACL,+BAA+B,EAC/B,4BAA4B,GAC7B,MAAM,2BAA2B,CAAC;AAcnC,iFAAiF;AACjF,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,UAAsC,EACtC,GAAqB,EACrB,KAAsB;IAEtB,MAAM,aAAa,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAC;IAC7D,MAAM,QAAQ,GAAG,UAA2C,CAAC;IAC7D,MAAM,MAAM,GAAG,cAAc,CAAC,UAAU,CAAC,MAAM,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;IAC3D,IAAI,CAAC;QACH,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,MAAM,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,MAAM,IAAI,eAAe,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;QAC9F,CAAC;QACD,qFAAqF;QACrF,MAAM,UAAU,CAAC,SAAS,EAAE,CAAC,mBAAmB,CAAC,GAAG,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,KAAK,CAAC,CAAC;QACnF,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,cAAc,CAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,MAAM,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACvE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;QACnC,CAAC;QACD,OAAO,oBAAoB,CAAC,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IACnE,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAC1B,GAAqB,EACrB,UAA8B,EAC9B,iBAA0D,EAC1D,KAAwB;IAExB,MAAM,cAAc,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,EAAE;QACxD,yBAAyB,EAAE,0BAA0B,CAAC,UAAU,CAAC,KAAK,wBAAwB;KAC/F,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,KAAK,EAAE,QAAQ,CAAC;IACjC,MAAM,KAAK,GACT,KAAK,IAAI,QAAQ,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,yBAAyB,CAAC,GAAG,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC;IAC9F,MAAM,IAAI,GACR,KAAK,IAAI,QAAQ,IAAI,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,gCAAgC,CAAC,GAAG,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC;IAClG,MAAM,UAAU,GAAqB;QACnC,GAAG,GAAG;QACN,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5D,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3B,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzB,YAAY,EAAE,kCAAkC,CAAC,GAAG,CAAC;QACrD,SAAS,EAAE;YACT,GAAG,cAAc;YACjB,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7C,kBAAkB,EAAE,KAAK,EAAE,QAAQ,IAAI,GAAG,CAAC,SAAS,EAAE,kBAAkB;YACxE,eAAe,EAAE,KAAK,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,SAAS,EAAE,eAAe;SACpE;KACF,CAAC;IACF,UAAU,CAAC,YAAY,GAAG,iBAAiB;QACzC,CAAC,CAAC,6BAA6B,CAC3B,UAAuE,EACvE,UAAU,EACV,iBAAiB,EACjB,GAAG,CACJ;QACH,CAAC,CAAC,kCAAkC,CAAC,UAAU,CAAC,CAAC;IACnD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,KAAK,UAAU,8BAA8B,CAI3C,UAA+C,EAC/C,UAA4B,EAC5B,KAAsB;IAEtB,MAAM,SAAS,GAAG,MAAM,UAAU,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC9D,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IAC5D,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,IAAI,+BAA+B,CAAC,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,YAAY,CAAC,IAAwB,CAAC;AAC/C,CAAC;AAED,KAAK,UAAU,oBAAoB,CACjC,GAAY,EACZ,GAAqB,EACrB,UAAqD,EACrD,aAAqB;IAErB,IAAI,GAAG,YAAY,+BAA+B,EAAE,CAAC;QACnD,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,gCAAgC,EAAE;YAClE,UAAU,EAAE,aAAa;YACzB,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CAAC,CAAC;QACH,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,aAAa,2BAA2B,EAAE;YACxE,MAAM,EAAE,GAAG,CAAC,MAAM;SACnB,CAAC,CAAC;QACH,MAAM,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACxE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACnC,CAAC;IAED,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;QACxB,MAAM,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;QAC7E,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;IACxC,CAAC;IAED,IAAI,kBAAkB,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,SAAS,EAAE,CAAC;QAC7C,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,UAAU,IAAI,GAAG,CAAC,CAAC;QAC1E,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAC/B,oEAAoE,EACpE;YACE,UAAU,EAAE,aAAa;YACzB,OAAO,EAAE,GAAG,CAAC,OAAO;YACpB,QAAQ,EAAE,GAAG,CAAC,YAAY;YAC1B,aAAa,EAAE,GAAG,CAAC,QAAQ;YAC3B,SAAS,EAAE,IAAI;YACf,kBAAkB,EAAE,GAAG,CAAC,UAAU;YAClC,UAAU,EAAE,UAAU;SACvB,CACF,CAAC;QACF,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,aAAa,6CAA6C,EAAE;YAC1F,KAAK,EAAE,GAAG,CAAC,OAAO;YAClB,QAAQ,EAAE,GAAG,CAAC,YAAY;YAC1B,kBAAkB,EAAE,GAAG,CAAC,UAAU;YAClC,QAAQ,EAAE,GAAG,CAAC,QAAQ;SACvB,CAAC,CAAC;QACH,MAAM,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACxE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,YAAY,GAChB,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IACrF,MAAM,YAAY,GAAG,YAAY;QAC/B,CAAC,CAAC,GAAG,YAAY,MAAM,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE;QACzE,CAAC,CAAC,GAAG,YAAY,KAAK;YACpB,CAAC,CAAC,GAAG,CAAC,OAAO;YACb,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAClB,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,6BAA6B,EAAE;QAC/D,UAAU,EAAE,aAAa;QACzB,OAAO,EAAE,YAAY;KACtB,CAAC,CAAC;IACH,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,aAAa,kBAAkB,EAAE;QAC/D,KAAK,EAAE,YAAY;KACpB,CAAC,CAAC;IACH,MAAM,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;IACxE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;AACnC,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,UAA+C,EAC/C,GAAqB,EACrB,QAAiB;IAEjB,MAAM,aAAa,GAAG,0BAA0B,CAAC,UAAU,CAAC,CAAC;IAE7D,mCAAmC;IACnC,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;IACzD,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,UAAU,CAAC,eAAe,EAAE;YACnD,UAAU,EAAE,aAAa;YACzB,MAAM,EAAE,WAAW,CAAC,KAAK,CAAC,MAAM;SACjC,CAAC,CAAC;QACH,MAAM,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACxE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACnC,CAAC;IAED,MAAM,KAAK,GAAG,WAAW,CAAC,IAAuB,CAAC;IAElD,8CAA8C;IAC9C,MAAM,UAAU,GAAG,MAAM,mBAAmB,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,CAAC,CAAC;IACrE,IAAI,CAAC,UAAU,CAAC,OAAO;QAAE,OAAO,UAAU,CAAC;IAE3C,MAAM,YAAY,GAAG,MAAM,oBAAoB,CAAC,EAAE,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;IAC5E,IAAI,YAAY,CAAC,OAAO,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,SAAS,CAAC,YAAY,CAAC,MAAM,EAAE;YACtD,UAAU,EAAE,aAAa;YACzB,YAAY,EAAE,YAAY,CAAC,IAAI;YAC/B,GAAG,YAAY,CAAC,QAAQ;SACzB,CAAC,CAAC;QACH,MAAM,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,QAAQ,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QACvE,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC;IACnC,CAAC;IAED,yFAAyF;IACzF,MAAM,OAAO,GAAG,GAAG,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAChD,MAAM,iBAAiB,GAAG,GAAG,CAAC,SAAS,EAAE,iBAAiB,CAAC;IAC3D,MAAM,SAAS,GAAG,GAAG,CAAC,SAAS,EAAE,mBAAmB,CAAC;IACrD,MAAM,iBAAiB,GACrB,OAAO,IAAI,iBAAiB;QAC1B,CAAC,CAAC,EAAE,OAAO,EAAE,OAAiD,EAAE,iBAAiB,EAAE,SAAS,EAAE;QAC9F,CAAC,CAAC,SAAS,CAAC;IAEhB,IAAI,SAAS,EAAE,CAAC;QACd,SAAS,CAAC,mBAAmB,GAAG,aAAa,CAAC;IAChD,CAAC;IAED,MAAM,MAAM,GAAG,UAAuE,CAAC;IAEvF,MAAM,gBAAgB,GAAG,4BAA4B,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;IACnE,MAAM,aAAa,GAAG,GAAG,CAAC,SAAS,EAAE,gBAAgB,CAAC;IACtD,MAAM,eAAe,GAAG,GAAG,CAAC,SAAS,EAAE,eAAe,CAAC;IACvD,MAAM,qBAAqB,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAErD,IAAI,eAA6C,CAAC;IAElD,IAAI,CAAC;QACH,IAAI,gBAAgB,IAAI,aAAa,EAAE,CAAC;YACtC,MAAM,UAAU,GAAG,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC;YACtF,eAAe,GAAG,MAAM,8BAA8B,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QACpF,CAAC;aAAM,IAAI,gBAAgB,IAAI,eAAe,EAAE,CAAC;YAC/C,eAAe,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACtD,MAAM,UAAU,GAAG,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,EAAE,KAAK,CAAC,CAAC;gBAC9E,OAAO,8BAA8B,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;YACnE,CAAC,CAAC,CAAC;QACL,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,iBAAiB,CAAC,CAAC;YACvE,eAAe,GAAG,MAAM,8BAA8B,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,CAAC,CAAC;QACpF,CAAC;IACH,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,qBAAqB,EAAE,CAAC;YAC1B,IAAI,cAAc,CAAC,GAAG,CAAC,EAAE,CAAC;gBACxB,MAAM,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC;YAC3E,CAAC;iBAAM,IAAI,GAAG,YAAY,+BAA+B,EAAE,CAAC;gBAC1D,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,gCAAgC,EAAE;oBAClE,UAAU,EAAE,aAAa;oBACzB,MAAM,EAAE,GAAG,CAAC,MAAM;iBACnB,CAAC,CAAC;gBACH,MAAM,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACtE,CAAC;iBAAM,CAAC;gBACN,MAAM,KAAK,GAAG,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,6BAA6B,EAAE;oBAC/D,UAAU,EAAE,aAAa;oBACzB,OAAO,EAAE,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC;iBAC1D,CAAC,CAAC;gBACH,MAAM,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,aAAa,EAAE,SAAS,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;YACtE,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,oBAAoB,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;QAC5E,OAAO,OAAO,CAAC;IACjB,CAAC;YAAS,CAAC;QACT,IAAI,SAAS,EAAE,CAAC;YACd,SAAS,CAAC,mBAAmB,GAAG,SAAS,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,IAAI,qBAAqB,IAAI,aAAa,EAAE,CAAC;QAC3C,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,IAAI,EAAE,CAAC;QAC9C,aAAa,CAAC,QAAQ,GAAG,QAAQ,CAAC;QAClC,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YACvB,MAAM,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,GAAG,CAAC,SAAS,EAAE,kBAAkB,EAAE,CAAC;QAC7C,kFAAkF;QAClF,+EAA+E;QAC/E,GAAG,CAAC,SAAS,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE;YAC/C,MAAM,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;QAC/D,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC;QAClC,MAAM,WAAW,CAAC,GAAG,EAAE,UAAU,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC;IAC/D,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,eAAmC,EAAE,CAAC;AACtE,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,GAAqB,EACrB,UAAwC,EACxC,aAAqB,EACrB,OAAyC,EACzC,QAAkC;IAElC,IAAI,UAAU,CAAC,KAAK,EAAE,OAAO,KAAK,KAAK;QAAE,OAAO;IAEhD,MAAM,UAAU,GAAG,UAAU,CAAC,KAAK,EAAE,KAAK,IAAI,cAAc,aAAa,EAAE,CAAC;IAC5E,MAAM,KAAK,GAAG,GAAG,CAAC,SAAS,EAAE,eAAe,IAAI,EAAE,CAAC;IACnD,MAAM,MAAM,GAAG,GAAG,CAAC,SAAS,EAAE,gBAAgB,CAAC;IAC/C,MAAM,aAAa,GAAG,GAAG,CAAC,SAAS,EAAE,aAAa,CAAC;IAEnD,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,EAAE;YACjC,UAAU,EAAE,aAAa;YACzB,MAAM,EAAE,UAAU,CAAC,MAAM;YACzB,IAAI,EAAE,UAAU,CAAC,IAAI;YACrB,KAAK,EAAE,GAAG,CAAC,IAAI,CAAC,MAAM;YACtB,QAAQ,EAAE,GAAG,CAAC,IAAI,CAAC,QAAQ;YAC3B,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,eAAe,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACvD,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3C,GAAG,QAAQ;YACX,OAAO;SACR,CAAC,CAAC;IACL,CAAC;IAAC,MAAM,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,0CAA0C,aAAa,GAAG,CAAC,CAAC;QAC7E,MAAM,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,EAAE,EAAE,UAAU,EAAE,aAAa,EAAE,CAAC,CAAC;IACvF,CAAC;AACH,CAAC"}
@@ -4,6 +4,7 @@ import type { EventRegistry } from '../events/registry.js';
4
4
  import type { AuditService } from '../types/audit.js';
5
5
  import type { ContextDependencies } from '../types/context.js';
6
6
  import type { AuthContext } from '../types/security.js';
7
+ import { type DurableDispatchRunnerConfig } from './transactional-outbox.js';
7
8
  export interface WireContextDependenciesOptions {
8
9
  db: PostgresJsDatabase;
9
10
  auth: AuthContext;
@@ -14,6 +15,7 @@ export interface WireContextDependenciesOptions {
14
15
  correlationId?: string;
15
16
  getCausationId?: () => string | undefined;
16
17
  encryptionKey?: Buffer;
18
+ durableDispatch?: DurableDispatchRunnerConfig;
17
19
  }
18
20
  /**
19
21
  * Build ContextDependencies with outer-db audit, request-scoped data/events,
@@ -1 +1 @@
1
- {"version":3,"file":"context-deps.d.ts","sourceRoot":"","sources":["../../src/execution/context-deps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,MAAM,WAAW,8BAA8B;IAC7C,EAAE,EAAE,kBAAkB,CAAC;IACvB,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,8BAA8B,EACvC,MAAM,GAAE,OAAO,CAAC,mBAAmB,CAAM,GACxC,mBAAmB,CAqCrB"}
1
+ {"version":3,"file":"context-deps.d.ts","sourceRoot":"","sources":["../../src/execution/context-deps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAE1D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC/D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAEL,KAAK,2BAA2B,EACjC,MAAM,2BAA2B,CAAC;AAEnC,MAAM,WAAW,8BAA8B;IAC7C,EAAE,EAAE,kBAAkB,CAAC;IACvB,IAAI,EAAE,WAAW,CAAC;IAClB,QAAQ,EAAE,cAAc,CAAC;IACzB,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,YAAY,CAAC;IACrB,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,MAAM,GAAG,SAAS,CAAC;IAC1C,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,2BAA2B,CAAC;CAC/C;AAED;;;GAGG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,8BAA8B,EACvC,MAAM,GAAE,OAAO,CAAC,mBAAmB,CAAM,GACxC,mBAAmB,CAsCrB"}
@@ -1,6 +1,6 @@
1
1
  import { createAuditService } from '../audit/service.js';
2
2
  import { createEventEmitter } from '../events/emitter.js';
3
- import { createTransactionRunner } from './transactional-outbox.js';
3
+ import { createTransactionRunner, } from './transactional-outbox.js';
4
4
  /**
5
5
  * Build ContextDependencies with outer-db audit, request-scoped data/events,
6
6
  * and a `withTransaction` hook for transactional outbox execution.
@@ -32,6 +32,7 @@ export function wireContextDependencies(options, extras = {}) {
32
32
  correlationId: options.correlationId,
33
33
  bypassTenantScope: options.bypassTenantScope,
34
34
  encryptionKey: options.encryptionKey,
35
+ durableDispatch: options.durableDispatch,
35
36
  });
36
37
  return {
37
38
  auth: options.auth,
@@ -1 +1 @@
1
- {"version":3,"file":"context-deps.js","sourceRoot":"","sources":["../../src/execution/context-deps.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAK1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAcpE;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAuC,EACvC,SAAuC,EAAE;IAEzC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,kBAAkB,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1F,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC9C,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK;QACL,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,aAAa,EAAE,OAAO,CAAC,aAAa;KACrC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,kBAAkB,CAAC;QACtC,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ,EAAE,OAAO,CAAC,MAAM;QACxB,KAAK;QACL,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,cAAc,EAAE,OAAO,CAAC,cAAc;KACvC,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,uBAAuB,CAAC;QAC9C,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI;QAC3B,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK;QACrB,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,aAAa,EAAE,OAAO,CAAC,aAAa;KACrC,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI;QACJ,MAAM,EAAE,YAAY;QACpB,KAAK;QACL,eAAe;QACf,GAAG,MAAM;KACV,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"context-deps.js","sourceRoot":"","sources":["../../src/execution/context-deps.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAK1D,OAAO,EACL,uBAAuB,GAExB,MAAM,2BAA2B,CAAC;AAenC;;;GAGG;AACH,MAAM,UAAU,uBAAuB,CACrC,OAAuC,EACvC,SAAuC,EAAE;IAEzC,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,IAAI,kBAAkB,CAAC,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1F,MAAM,IAAI,GAAG,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;QAC9C,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,KAAK;QACL,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,aAAa,EAAE,OAAO,CAAC,aAAa;KACrC,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,kBAAkB,CAAC;QACtC,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,QAAQ,EAAE,OAAO,CAAC,MAAM;QACxB,KAAK;QACL,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,cAAc,EAAE,OAAO,CAAC,cAAc;KACvC,CAAC,CAAC;IACH,MAAM,eAAe,GAAG,uBAAuB,CAAC;QAC9C,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI;QAC3B,QAAQ,EAAE,GAAG,EAAE,CAAC,KAAK;QACrB,cAAc,EAAE,OAAO,CAAC,cAAc;QACtC,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;QAC5C,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,eAAe,EAAE,OAAO,CAAC,eAAe;KACzC,CAAC,CAAC;IAEH,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,IAAI;QAClB,IAAI;QACJ,MAAM,EAAE,YAAY;QACpB,KAAK;QACL,eAAe;QACf,GAAG,MAAM;KACV,CAAC;AACJ,CAAC"}
@@ -2,7 +2,44 @@ import type { ContextDependencies, ExecutionContext } from '../types/context.js'
2
2
  export type { ContextDependencies } from '../types/context.js';
3
3
  /**
4
4
  * Build an ExecutionContext from the provided dependencies.
5
- * Missing optional services are replaced with safe defaults/stubs.
5
+ * Missing optional services are replaced with safe defaults.
6
+ *
7
+ * The returned context is sealed: the platform establishes the actor once, and
8
+ * no in-process code can afterwards fabricate or elevate it. The seal has two
9
+ * layers, with a deliberate boundary between them.
10
+ *
11
+ * **Frozen — the identity/authority surface.**
12
+ * - the context container itself, so `ctx.auth` cannot be re-pointed at a
13
+ * fabricated actor and `ctx.data` / `ctx.audit` cannot be swapped for an
14
+ * unscoped or silenced replacement;
15
+ * - `auth`, deeply, including its role and scope arrays. It is frozen *in
16
+ * place* rather than copied, so the very object the data, event, and audit
17
+ * services closed over for tenant scoping is the immutable one — a copy would
18
+ * leave those services reading an actor that could still drift from
19
+ * `ctx.auth`;
20
+ * - `request`, the audit provenance of the call (source IP, user agent);
21
+ * - `security`, whose predicates are the authority decisions themselves —
22
+ * without this, `ctx.security.hasRole = () => true` would be an elevation.
23
+ *
24
+ * **Not frozen — service objects with legitimate mutable internals.**
25
+ * `data`, `events`, `flows`, `jobs`, `ai`, `audit`, `logger`, `time`, `config`,
26
+ * `translations`, `capabilities`, `progress`, and `__runtime` keep their own
27
+ * state: audit buffers, the invocation emit scope whose causation fields the
28
+ * executor sets and restores per call, the active transaction scope, and the
29
+ * deferred post-commit queue. Freezing those would break the pipeline while
30
+ * adding nothing — none of them carries the actor.
31
+ *
32
+ * Contexts derived from this one by spreading (`{ ...ctx, step, state }` in the
33
+ * flow engine, the capability executor, and the invocation pipeline) are fresh,
34
+ * writable containers by design, but they carry the same frozen `auth` object
35
+ * by reference, so the actor stays immutable everywhere it is observed.
36
+ *
37
+ * **Per-invocation attachments belong in `deps`.** Because the container is
38
+ * sealed, `signal` and `progress` — the two fields a host used to attach after
39
+ * building the context — are accepted as dependencies and set here. A host that
40
+ * learns of them later (a timeout armed after authentication, say) builds the
41
+ * context once it knows, or derives one by spreading; it never assigns onto a
42
+ * finished context.
6
43
  */
7
44
  export declare function createExecutionContext(deps: ContextDependencies): ExecutionContext;
8
45
  //# sourceMappingURL=context-factory.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"context-factory.d.ts","sourceRoot":"","sources":["../../src/execution/context-factory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,mBAAmB,EAEnB,gBAAgB,EAMjB,MAAM,qBAAqB,CAAC;AAK7B,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAoH/D;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,GAAG,gBAAgB,CAmClF"}
1
+ {"version":3,"file":"context-factory.d.ts","sourceRoot":"","sources":["../../src/execution/context-factory.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAEV,mBAAmB,EAEnB,gBAAgB,EAMjB,MAAM,qBAAqB,CAAC;AAK7B,YAAY,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AA4K/D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,mBAAmB,GAAG,gBAAgB,CA0ClF"}
@@ -75,6 +75,60 @@ const realTime = {
75
75
  return new Date();
76
76
  },
77
77
  };
78
+ /**
79
+ * True for objects whose own enumerable data the authority walk may traverse:
80
+ * plain records (`{}` / `Object.create(null)`) and arrays. Class instances,
81
+ * functions, `Date`, `Map`, and host objects are deliberately excluded — they
82
+ * are frozen at their own level but never walked, so the seal never reaches
83
+ * into an object that owns behaviour or internal state.
84
+ */
85
+ function isTraversableAuthorityValue(value) {
86
+ if (Array.isArray(value))
87
+ return true;
88
+ const proto = Object.getPrototypeOf(value);
89
+ return proto === Object.prototype || proto === null;
90
+ }
91
+ /**
92
+ * Recursively freeze the identity/authority surface of an execution context.
93
+ *
94
+ * Only plain data is walked (see {@link isTraversableAuthorityValue}), so role
95
+ * and scope arrays, and any nested claim records a deployment carries on its
96
+ * auth shape, become immutable while service objects are never touched.
97
+ *
98
+ * This is deliberately not `deepFreeze` from `types/deep-freeze.js`, which
99
+ * freezes definition graphs. Three differences matter for a security boundary:
100
+ * this walk descends only into plain records and arrays instead of every object
101
+ * it meets; it reads through property descriptors, so a computed claim's getter
102
+ * is never invoked just by sealing the context; and it walks `Reflect.ownKeys`
103
+ * and does not stop at an already-frozen container, so an auth object a caller
104
+ * shallow-froze before handing it over still has its role and scope arrays
105
+ * sealed, and symbol-keyed claims are not skipped.
106
+ *
107
+ * Caveat worth stating plainly: `Object.freeze` seals own properties, not
108
+ * internal slots. A frozen `Date` (e.g. `auth.authenticatedAt`) still honours
109
+ * `setTime()`. Callers that need a tamper-proof timestamp should carry it as an
110
+ * ISO string or epoch number rather than a `Date`.
111
+ */
112
+ function freezeAuthoritySurface(value, seen = new WeakSet()) {
113
+ if (value === null || (typeof value !== 'object' && typeof value !== 'function')) {
114
+ return value;
115
+ }
116
+ const target = value;
117
+ if (seen.has(target))
118
+ return value;
119
+ seen.add(target);
120
+ if (typeof target === 'object' && isTraversableAuthorityValue(target)) {
121
+ for (const key of Reflect.ownKeys(target)) {
122
+ // Read through the descriptor so getters are not invoked by the walk.
123
+ const descriptor = Object.getOwnPropertyDescriptor(target, key);
124
+ if (descriptor && 'value' in descriptor) {
125
+ freezeAuthoritySurface(descriptor.value, seen);
126
+ }
127
+ }
128
+ }
129
+ Object.freeze(target);
130
+ return value;
131
+ }
78
132
  function createSecurityService(auth) {
79
133
  return {
80
134
  hasRole(role) {
@@ -105,18 +159,59 @@ function createSecurityService(auth) {
105
159
  }
106
160
  /**
107
161
  * Build an ExecutionContext from the provided dependencies.
108
- * Missing optional services are replaced with safe defaults/stubs.
162
+ * Missing optional services are replaced with safe defaults.
163
+ *
164
+ * The returned context is sealed: the platform establishes the actor once, and
165
+ * no in-process code can afterwards fabricate or elevate it. The seal has two
166
+ * layers, with a deliberate boundary between them.
167
+ *
168
+ * **Frozen — the identity/authority surface.**
169
+ * - the context container itself, so `ctx.auth` cannot be re-pointed at a
170
+ * fabricated actor and `ctx.data` / `ctx.audit` cannot be swapped for an
171
+ * unscoped or silenced replacement;
172
+ * - `auth`, deeply, including its role and scope arrays. It is frozen *in
173
+ * place* rather than copied, so the very object the data, event, and audit
174
+ * services closed over for tenant scoping is the immutable one — a copy would
175
+ * leave those services reading an actor that could still drift from
176
+ * `ctx.auth`;
177
+ * - `request`, the audit provenance of the call (source IP, user agent);
178
+ * - `security`, whose predicates are the authority decisions themselves —
179
+ * without this, `ctx.security.hasRole = () => true` would be an elevation.
180
+ *
181
+ * **Not frozen — service objects with legitimate mutable internals.**
182
+ * `data`, `events`, `flows`, `jobs`, `ai`, `audit`, `logger`, `time`, `config`,
183
+ * `translations`, `capabilities`, `progress`, and `__runtime` keep their own
184
+ * state: audit buffers, the invocation emit scope whose causation fields the
185
+ * executor sets and restores per call, the active transaction scope, and the
186
+ * deferred post-commit queue. Freezing those would break the pipeline while
187
+ * adding nothing — none of them carries the actor.
188
+ *
189
+ * Contexts derived from this one by spreading (`{ ...ctx, step, state }` in the
190
+ * flow engine, the capability executor, and the invocation pipeline) are fresh,
191
+ * writable containers by design, but they carry the same frozen `auth` object
192
+ * by reference, so the actor stays immutable everywhere it is observed.
193
+ *
194
+ * **Per-invocation attachments belong in `deps`.** Because the container is
195
+ * sealed, `signal` and `progress` — the two fields a host used to attach after
196
+ * building the context — are accepted as dependencies and set here. A host that
197
+ * learns of them later (a timeout armed after authentication, say) builds the
198
+ * context once it knows, or derives one by spreading; it never assigns onto a
199
+ * finished context.
109
200
  */
110
201
  export function createExecutionContext(deps) {
202
+ const auth = freezeAuthoritySurface(deps.auth);
111
203
  const baseRuntime = {
112
204
  invokeCapability: deps.invokeCapability,
113
205
  resolveCapability: deps.resolveCapability,
114
206
  correlationId: deps.correlationId,
115
207
  invocationEmitScope: deps.invocationEmitScope,
116
208
  withTransaction: deps.withTransaction,
209
+ approvals: deps.approvals,
210
+ authorizationProvider: deps.authorizationProvider,
211
+ artifacts: deps.artifacts,
117
212
  };
118
213
  const ctx = {
119
- auth: deps.auth,
214
+ auth,
120
215
  data: deps.data,
121
216
  events: deps.events ?? noopEvents,
122
217
  flows: deps.flows ?? noopFlows,
@@ -129,14 +224,17 @@ export function createExecutionContext(deps) {
129
224
  logger: deps.logger ?? consoleLogger,
130
225
  time: deps.time ?? realTime,
131
226
  config: deps.config ?? {},
132
- security: createSecurityService(deps.auth),
227
+ security: Object.freeze(createSecurityService(auth)),
133
228
  translations: deps.translations ?? noopTranslations,
134
- request: deps.request,
229
+ request: freezeAuthoritySurface(deps.request),
230
+ signal: deps.signal,
135
231
  progress: deps.progress,
136
232
  capabilities: createUnavailableCapabilityService({}),
137
233
  __runtime: baseRuntime,
138
234
  };
235
+ // Self-reference must be wired before the container is sealed.
139
236
  ctx.capabilities = createUnavailableCapabilityService(ctx);
237
+ Object.freeze(ctx);
140
238
  return ctx;
141
239
  }
142
240
  //# sourceMappingURL=context-factory.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"context-factory.js","sourceRoot":"","sources":["../../src/execution/context-factory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AACtE,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAe9C,OAAO,EAAE,kCAAkC,EAAE,MAAM,4BAA4B,CAAC;AAIhF,MAAM,SAAS,GAAiB;IAC9B,KAAK,CAAC,MAAM;QACV,MAAM,IAAI,YAAY,CAAC,SAAS,CAAC,QAAQ,EAAE,8BAA8B,CAAC,CAAC;IAC7E,CAAC;CACF,CAAC;AAEF,MAAM,gBAAgB,GAAuB;IAC3C,MAAM,EAAE,IAAI;IACZ,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG;CAChB,CAAC;AAEF,MAAM,UAAU,GAAiB;IAC/B,KAAK,CAAC,IAAI,KAAI,CAAC;IACf,KAAK,CAAC,QAAQ,KAAI,CAAC;CACpB,CAAC;AAEF,MAAM,QAAQ,GAAuB;IACnC,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,YAAY,CACpB,SAAS,CAAC,QAAQ,EAClB,oDAAoD,CACrD,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,MAAM,SAAS,GAAgB;IAC7B,KAAK,CAAC,KAAK;QACT,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC;IACzD,CAAC;IACD,KAAK,CAAC,MAAM,KAAI,CAAC;IACjB,KAAK,CAAC,MAAM,KAAI,CAAC;IACjB,KAAK,CAAC,MAAM;QACV,OAAO,EAAE,EAAE,EAAE,EAAE,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;IACrD,CAAC;IACD,KAAK,CAAC,SAAS,KAAI,CAAC;CACrB,CAAC;AAEF,MAAM,MAAM,GAAc;IACxB,KAAK,CAAC,kBAAkB;QACtB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACD,uBAAuB;QACrB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACD,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACD,KAAK,CAAC,iBAAiB;QACrB,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACD,cAAc;QACZ,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACD,KAAK,CAAC,OAAO;QACX,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACD,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;IACD,KAAK,CAAC,QAAQ;QACZ,MAAM,IAAI,KAAK,CAAC,2BAA2B,CAAC,CAAC;IAC/C,CAAC;CACF,CAAC;AAEF,MAAM,aAAa,GAAkB;IACnC,KAAK,CAAC,OAAO,EAAE,QAAQ;QACrB,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,QAAQ;QACpB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,IAAI,CAAC,OAAO,EAAE,QAAQ;QACpB,OAAO,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;IACxC,CAAC;IACD,KAAK,CAAC,OAAO,EAAE,QAAQ;QACrB,OAAO,CAAC,KAAK,CAAC,OAAO,EAAE,QAAQ,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;CACF,CAAC;AAEF,MAAM,QAAQ,GAAgB;IAC5B,GAAG;QACD,OAAO,IAAI,IAAI,EAAE,CAAC;IACpB,CAAC;CACF,CAAC;AAEF,SAAS,qBAAqB,CAAC,IAAiB;IAC9C,OAAO;QACL,OAAO,CAAC,IAAY;YAClB,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;QACnC,CAAC;QACD,QAAQ,CAAC,KAAa;YACpB,OAAO,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACrC,CAAC;QACD,WAAW,CAAC,KAAe;YACzB,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACpD,CAAC;QACD,YAAY,CAAC,MAAgB;YAC3B,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACtD,CAAC;QACD,WAAW,CAAC,IAAY;YACtB,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC/B,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,6BAA6B,IAAI,GAAG,CAAC,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC;YAC9F,CAAC;QACH,CAAC;QACD,YAAY,CAAC,KAAa;YACxB,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,MAAM,CAAC,MAAM,CAAC,IAAI,KAAK,CAAC,8BAA8B,KAAK,GAAG,CAAC,EAAE;oBACrE,IAAI,EAAE,WAAW;iBAClB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,IAAyB;IAC9D,MAAM,WAAW,GAAG;QAClB,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;QACvC,iBAAiB,EAAE,IAAI,CAAC,iBAAiB;QACzC,aAAa,EAAE,IAAI,CAAC,aAAa;QACjC,mBAAmB,EAAE,IAAI,CAAC,mBAAmB;QAC7C,eAAe,EAAE,IAAI,CAAC,eAAe;KACtC,CAAC;IAEF,MAAM,GAAG,GAAqB;QAC5B,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,UAAU;QACjC,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,SAAS;QAC9B,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,QAAQ;QAC3B,EAAE,EACA,IAAI,CAAC,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,QAAQ,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;YACjF,IAAI,CAAC,EAAE;YACP,MAAM;QACR,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,SAAS;QAC9B,MAAM,EAAE,kBAAkB,EAAE;QAC5B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,aAAa;QACpC,IAAI,EAAE,IAAI,CAAC,IAAI,IAAI,QAAQ;QAC3B,MAAM,EAAE,IAAI,CAAC,MAAM,IAAI,EAAE;QACzB,QAAQ,EAAE,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC;QAC1C,YAAY,EAAE,IAAI,CAAC,YAAY,IAAI,gBAAgB;QACnD,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ,EAAE,IAAI,CAAC,QAAQ;QACvB,YAAY,EAAE,kCAAkC,CAAC,EAAsB,CAAC;QACxE,SAAS,EAAE,WAAW;KACvB,CAAC;IAEF,GAAG,CAAC,YAAY,GAAG,kCAAkC,CAAC,GAAG,CAAC,CAAC;IAE3D,OAAO,GAAG,CAAC;AACb,CAAC"}
1
+ {"version":3,"file":"context-factory.js","sourceRoot":"","sources":["../../src/execution/context-factory.ts"],"names":[],"mappings":"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"}