@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
@@ -1,10 +1,123 @@
1
- import { boolean, doublePrecision, index, integer, jsonb, pgTable, text, timestamp, uniqueIndex, uuid, } from 'drizzle-orm/pg-core';
1
+ import { boolean, doublePrecision, index, integer, jsonb, pgSchema, pgTable, text, timestamp, uniqueIndex, uuid, } from 'drizzle-orm/pg-core';
2
+ /**
3
+ * Suggested schema name for Plumbus's own tenant-local tables (audit records,
4
+ * event outbox, idempotency, dead-letter, flow executions/schedules, job
5
+ * executions). Nothing places tables there by itself — see
6
+ * {@link resolveFrameworkSchema} and {@link tableBuilderFor}.
7
+ */
8
+ export const FRAMEWORK_SCHEMA = 'core_plumbus';
9
+ /**
10
+ * Environment variable that selects the schema for Plumbus's own tenant-local
11
+ * tables. Unset (the default) keeps them unqualified, exactly where existing
12
+ * databases already have them.
13
+ */
14
+ export const FRAMEWORK_SCHEMA_ENV_VAR = 'PLUMBUS_FRAMEWORK_SCHEMA';
15
+ // One PgSchema instance per schema name. Drizzle keys DDL off the name, but
16
+ // drizzle-kit only emits `CREATE SCHEMA` for PgSchema instances it is handed,
17
+ // so the instances have to be retrievable after the tables are built.
18
+ const pgSchemaCache = new Map();
19
+ /**
20
+ * The shared `PgSchema` for `name`, created on first use.
21
+ *
22
+ * Hand these to drizzle-kit alongside the tables (see `declaredPgSchemas`) —
23
+ * without them the generated migration references a schema it never creates.
24
+ */
25
+ export function getPgSchema(name) {
26
+ const existing = pgSchemaCache.get(name);
27
+ if (existing) {
28
+ return existing;
29
+ }
30
+ const created = pgSchema(name);
31
+ pgSchemaCache.set(name, created);
32
+ return created;
33
+ }
34
+ /**
35
+ * Every `PgSchema` created so far, in first-use order. Empty until a schema
36
+ * name is actually requested, so single-schema deployments stay untouched.
37
+ */
38
+ export function declaredPgSchemas() {
39
+ return [...pgSchemaCache.values()];
40
+ }
41
+ /**
42
+ * The table constructor for `schemaName`, or the unqualified `pgTable` when no
43
+ * name is given.
44
+ *
45
+ * This is the one mechanism used for both entity tables and Plumbus's own
46
+ * tenant-local tables:
47
+ *
48
+ * ```ts
49
+ * const table = tableBuilderFor(resolveFrameworkSchema());
50
+ * export const auditRecords = table('audit_records', { ... });
51
+ * ```
52
+ */
53
+ export function tableBuilderFor(schemaName) {
54
+ const name = schemaName?.trim();
55
+ if (!name) {
56
+ return pgTable;
57
+ }
58
+ return getPgSchema(name).table;
59
+ }
60
+ /**
61
+ * Schema for Plumbus's own tenant-local tables, read from
62
+ * `PLUMBUS_FRAMEWORK_SCHEMA`. Unset or blank → `undefined`, i.e. the
63
+ * unqualified layout existing databases already have.
64
+ *
65
+ * Read at module load by the framework's table modules, so it is configured
66
+ * through the environment rather than through a setter that would run too late
67
+ * to affect a module-level table definition.
68
+ */
69
+ export function resolveFrameworkSchema(env = process.env) {
70
+ const configured = env[FRAMEWORK_SCHEMA_ENV_VAR]?.trim();
71
+ return configured ? configured : undefined;
72
+ }
73
+ /**
74
+ * The schema an entity's table belongs in, or `undefined` for an unqualified
75
+ * table. See {@link SchemaNamespaceOptions} for the resolution order.
76
+ */
77
+ export function resolveEntitySchemaName(entity, options) {
78
+ if (!options) {
79
+ return undefined;
80
+ }
81
+ const overridden = options.resolveSchema?.(entity)?.trim();
82
+ if (overridden) {
83
+ return overridden;
84
+ }
85
+ const fixed = options.schema?.trim();
86
+ if (fixed) {
87
+ return fixed;
88
+ }
89
+ const domain = toSchemaSegment(entity.domain ?? '');
90
+ const prefix = options.packageSchemaPrefix?.trim();
91
+ if (domain && prefix && !isCoreDomain(domain, options.coreDomains)) {
92
+ return `${prefix}${domain}`;
93
+ }
94
+ return options.coreSchema?.trim() || undefined;
95
+ }
96
+ function isCoreDomain(domain, coreDomains) {
97
+ if (!coreDomains) {
98
+ return false;
99
+ }
100
+ return coreDomains.some((candidate) => toSchemaSegment(candidate) === domain);
101
+ }
102
+ /**
103
+ * Normalize a declared domain into a PostgreSQL schema name segment:
104
+ * snake_case, lowercase, with every other character collapsed to `_`.
105
+ */
106
+ function toSchemaSegment(value) {
107
+ return camelToSnake(value.trim())
108
+ .replace(/[^a-z0-9_]+/g, '_')
109
+ .replace(/^_+|_+$/g, '');
110
+ }
2
111
  /**
3
112
  * Convert an EntityDefinition into a Drizzle pgTable schema.
4
113
  * Returns the Drizzle table object ready for use in queries and migrations.
114
+ *
115
+ * Without `options` the table is unqualified, exactly as before. With a schema
116
+ * resolved from `options` it is emitted through `pgSchema(name).table(...)`.
5
117
  */
6
- export function generateDrizzleSchema(entity) {
118
+ export function generateDrizzleSchema(entity, options) {
7
119
  const tableName = camelToSnake(entity.name);
120
+ const table = tableBuilderFor(resolveEntitySchemaName(entity, options));
8
121
  // Build columns using stand-alone constructors
9
122
  const columns = {};
10
123
  for (const [fieldName, descriptor] of Object.entries(entity.fields)) {
@@ -22,8 +135,8 @@ export function generateDrizzleSchema(entity) {
22
135
  if (!entity.fields.updatedAt) {
23
136
  columns.updatedAt = timestamp('updated_at', { withTimezone: true }).defaultNow().notNull();
24
137
  }
25
- // Use 3-arg form: pgTable(name, columns, (table) => indexes)
26
- return pgTable(tableName, columns, (table) => {
138
+ // Use 3-arg form: table(name, columns, (table) => indexes)
139
+ return table(tableName, columns, (table) => {
27
140
  const indexes = [];
28
141
  if (entity.indexes) {
29
142
  for (let i = 0; i < entity.indexes.length; i++) {
@@ -107,11 +220,14 @@ function mapFieldToColumn(colName, descriptor) {
107
220
  }
108
221
  /**
109
222
  * Generate schemas for multiple entities at once.
223
+ *
224
+ * `options` applies to every entity; per-entity placement still follows the
225
+ * entity's own declared `domain`.
110
226
  */
111
- export function generateSchemas(entities) {
227
+ export function generateSchemas(entities, options) {
112
228
  const schemas = new Map();
113
229
  for (const entity of entities) {
114
- schemas.set(entity.name, generateDrizzleSchema(entity));
230
+ schemas.set(entity.name, generateDrizzleSchema(entity, options));
115
231
  }
116
232
  return schemas;
117
233
  }
@@ -1 +1 @@
1
- {"version":3,"file":"schema-generator.js","sourceRoot":"","sources":["../../src/data/schema-generator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"schema-generator.js","sourceRoot":"","sources":["../../src/data/schema-generator.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ import type { ApiExposureConfig, CapabilityContract, McpExposureConfig } from '.
3
3
  import type { ExecutionContext } from '../types/context.js';
4
4
  import type { CapabilityKind } from '../types/enums.js';
5
5
  import type { AccessPolicy } from '../types/security.js';
6
+ import type { ActionRiskTier } from '../approvals/action-risk.js';
6
7
  interface DefineCapabilityInput<TInput extends z.ZodTypeAny, TOutput extends z.ZodTypeAny> {
7
8
  name: string;
8
9
  kind: CapabilityKind;
@@ -41,6 +42,12 @@ interface DefineCapabilityInput<TInput extends z.ZodTypeAny, TOutput extends z.Z
41
42
  };
42
43
  /** When `false`, opts out of transactional outbox for this capability. */
43
44
  transactional?: boolean;
45
+ /**
46
+ * Action-risk tier. Only `consequential` requires the approval gate;
47
+ * `prohibited` can never run, be proposed for approval, or be exposed.
48
+ */
49
+ riskTier?: ActionRiskTier;
50
+ authorize?: (ctx: ExecutionContext, input: z.infer<TInput>) => Promise<void>;
44
51
  handler: (ctx: ExecutionContext, input: z.infer<TInput>) => Promise<z.infer<TOutput>>;
45
52
  }
46
53
  export declare function defineCapability<TInput extends z.ZodTypeAny, TOutput extends z.ZodTypeAny>(config: DefineCapabilityInput<TInput, TOutput>): CapabilityContract<TInput, TOutput>;
@@ -1 +1 @@
1
- {"version":3,"file":"defineCapability.d.ts","sourceRoot":"","sources":["../../src/define/defineCapability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAczD,UAAU,qBAAqB,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,EAAE,OAAO,SAAS,CAAC,CAAC,UAAU;IACvF,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAEhB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,EAAE,EAAE,OAAO,CAAC;KACb,CAAC;IACF,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,QAAQ,CAAC,EAAE,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC;IACtC,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,0EAA0E;IAC1E,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB,OAAO,EAAE,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;CACvF;AAyJD,wBAAgB,gBAAgB,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,EAAE,OAAO,SAAS,CAAC,CAAC,UAAU,EACxF,MAAM,EAAE,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7C,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CA8CrC"}
1
+ {"version":3,"file":"defineCapability.d.ts","sourceRoot":"","sources":["../../src/define/defineCapability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,KAAK,EACV,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAGxD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAclE,UAAU,qBAAqB,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,EAAE,OAAO,SAAS,CAAC,CAAC,UAAU;IACvF,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,cAAc,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,OAAO,CAAC;IAEhB,MAAM,CAAC,EAAE,YAAY,CAAC;IACtB,OAAO,EAAE;QACP,IAAI,EAAE,MAAM,EAAE,CAAC;QACf,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;QACjB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,EAAE,EAAE,OAAO,CAAC;KACb,CAAC;IACF,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,KAAK,EAAE,MAAM,CAAC;QACd,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;QACxB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;KAC1B,CAAC;IACF,WAAW,CAAC,EAAE;QACZ,OAAO,CAAC,EAAE,OAAO,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,QAAQ,CAAC,EAAE,SAAS,CAAC,KAAK,GAAG,KAAK,CAAC,EAAE,CAAC;IACtC,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,GAAG,CAAC,EAAE,iBAAiB,CAAC;IACxB,OAAO,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,iBAAiB,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACxD,0EAA0E;IAC1E,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;;OAGG;IACH,QAAQ,CAAC,EAAE,cAAc,CAAC;IAE1B,SAAS,CAAC,EAAE,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAE7E,OAAO,EAAE,CAAC,GAAG,EAAE,gBAAgB,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;CACvF;AAyJD,wBAAgB,gBAAgB,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,EAAE,OAAO,SAAS,CAAC,CAAC,UAAU,EACxF,MAAM,EAAE,qBAAqB,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7C,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,CAsErC"}
@@ -2,6 +2,7 @@ import { z } from 'zod';
2
2
  import { getCanonicalCapabilityName, isCanonicalCapabilityName, } from '../execution/canonical-name.js';
3
3
  import { deepFreeze } from '../types/deep-freeze.js';
4
4
  import { isMcpExposed } from '../mcp/exposure.js';
5
+ import { isActionRiskTier, isProhibitedRiskTier } from '../approvals/action-risk.js';
5
6
  import { throwDefineValidationError } from './validation-error.js';
6
7
  /** Duck-type check for Zod schemas (works across different Zod instances) */
7
8
  function isZodSchema(value) {
@@ -167,12 +168,26 @@ export function defineCapability(config) {
167
168
  field: 'handler',
168
169
  });
169
170
  }
171
+ if (config.authorize !== undefined && typeof config.authorize !== 'function') {
172
+ throwDefineValidationError(`Capability "${config.name}": authorize must be a function`, {
173
+ field: 'authorize',
174
+ });
175
+ }
170
176
  validateMcpExposure(config);
171
177
  validateApiExposure(config);
172
178
  if (config.trigger !== undefined && config.kind !== 'eventHandler') {
173
179
  throwDefineValidationError(`Capability "${config.name}": trigger is only valid for eventHandler capabilities`, { field: 'trigger' });
174
180
  }
175
181
  validateCapabilityDependencies(config);
182
+ if (config.riskTier !== undefined && !isActionRiskTier(config.riskTier)) {
183
+ throwDefineValidationError(`Capability "${config.name}": riskTier must be one of analytical, limited-reversible, consequential, prohibited`, { field: 'riskTier' });
184
+ }
185
+ // A prohibited capability is never made available: no MCP tool, no API route.
186
+ if (isProhibitedRiskTier(config.riskTier) &&
187
+ config.exposeAs !== undefined &&
188
+ config.exposeAs.length > 0) {
189
+ throwDefineValidationError(`Capability "${config.name}": prohibited capabilities cannot be exposed (exposeAs)`, { field: 'exposeAs' });
190
+ }
176
191
  return deepFreeze({ ...config });
177
192
  }
178
193
  function validateCapabilityDependencies(config) {
@@ -1 +1 @@
1
- {"version":3,"file":"defineCapability.js","sourceRoot":"","sources":["../../src/define/defineCapability.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EACL,0BAA0B,EAC1B,yBAAyB,GAC1B,MAAM,gCAAgC,CAAC;AAQxC,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAEnE,6EAA6E;AAC7E,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,WAAW,IAAI,KAAK;QACpB,OAAQ,KAAiC,CAAC,SAAS,KAAK,UAAU,CACnE,CAAC;AACJ,CAAC;AA2CD,MAAM,uBAAuB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,SAAS,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACjC,SAAS,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC1C,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;AAElE,MAAM,uBAAuB,GAAG,CAAC;KAC9B,MAAM,CAAC;IACN,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,MAAM,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACzD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,SAAS,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC1F,IAAI,EAAE,CAAC;SACJ,MAAM,CAAC;QACN,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;KACvC,CAAC;SACD,MAAM,EAAE;SACR,QAAQ,EAAE;IACb,WAAW,EAAE,CAAC;SACX,MAAM,CAAC;QACN,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;QACrB,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAC3B,CAAC;SACD,MAAM,EAAE;SACR,QAAQ,EAAE;IACb,IAAI,EAAE,CAAC;SACJ,MAAM,CAAC;QACN,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE;QACpB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC;QACvD,WAAW,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,eAAe,EAAE,YAAY,CAAC,CAAC,CAAC,QAAQ,EAAE;QAC/D,SAAS,EAAE,CAAC;aACT,MAAM,CAAC;YACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;SAC/B,CAAC;aACD,MAAM,EAAE;aACR,QAAQ,EAAE;KACd,CAAC;SACD,MAAM,EAAE;SACR,QAAQ,EAAE;IACb,IAAI,EAAE,CAAC;SACJ,MAAM,CAAC;QACN,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAClC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;KACrC,CAAC;SACD,MAAM,EAAE;SACR,QAAQ,EAAE;IACb,WAAW,EAAE,CAAC;SACX,MAAM,CAAC;QACN,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC7B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACnC,CAAC;SACD,MAAM,EAAE;SACR,QAAQ,EAAE;CACd,CAAC;KACD,MAAM,EAAE,CAAC;AAEZ,SAAS,iBAAiB,CAAC,MAAyD;IAClF,OAAO,MAAM,CAAC,QAAQ,EAAE,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC;AACnD,CAAC;AAED,SAAS,yBAAyB,CAChC,MAAyD;IAEzD,MAAM,OAAO,GAAG,MAAM,CAAC,WAAW,EAAE,OAAO,CAAC;IAC5C,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,OAAO,IAAI,CAAC;IACd,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,WAAW,KAAK,QAAQ,IAAI,MAAM,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5E,OAAO,IAAI,CAAC;IACd,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC;IACxC,OAAO,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAyD;IACpF,MAAM,KAAK,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAwB,CAAC;IACnF,IAAI,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACnC,0BAA0B,CACxB,eAAe,MAAM,CAAC,IAAI,2CAA2C,EACrE,EAAE,KAAK,EAAE,UAAU,EAAE,CACtB,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,yBAAyB,CAAC,MAAM,CAAC,EAAE,CAAC;QACvC,0BAA0B,CACxB,eAAe,MAAM,CAAC,IAAI,0FAA0F,EACpH,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;QAClC,MAAM,YAAY,GAAG,cAAc,CAAC,SAAS,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QAC/D,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAC1B,0BAA0B,CAAC,eAAe,MAAM,CAAC,IAAI,qBAAqB,EAAE;gBAC1E,KAAK,EAAE,UAAU;aAClB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC7B,MAAM,SAAS,GAAG,uBAAuB,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAChE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;YACvB,0BAA0B,CAAC,eAAe,MAAM,CAAC,IAAI,uBAAuB,EAAE;gBAC5E,KAAK,EAAE,KAAK;aACb,CAAC,CAAC;QACL,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAyD;IACpF,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3D,0BAA0B,CACxB,eAAe,MAAM,CAAC,IAAI,4CAA4C,EACtE,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC/B,OAAO;IACT,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACnC,0BAA0B,CACxB,eAAe,MAAM,CAAC,IAAI,2CAA2C,EACrE,EAAE,KAAK,EAAE,UAAU,EAAE,CACtB,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,IAAI,KAAK,KAAK,EAAE,CAAC;QAC1B,0BAA0B,CAAC,eAAe,MAAM,CAAC,IAAI,kCAAkC,EAAE;YACvF,KAAK,EAAE,UAAU;SAClB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,MAAM,CAAC,GAAG,KAAK,SAAS,EAAE,CAAC;QAC7B,0BAA0B,CACxB,eAAe,MAAM,CAAC,IAAI,qFAAqF,EAC/G,EAAE,KAAK,EAAE,KAAK,EAAE,CACjB,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,uBAAuB,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAChE,IAAI,CAAC,SAAS,CAAC,OAAO,EAAE,CAAC;QACvB,0BAA0B,CAAC,eAAe,MAAM,CAAC,IAAI,uBAAuB,EAAE;YAC5E,KAAK,EAAE,KAAK;SACb,CAAC,CAAC;IACL,CAAC;AACH,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,MAA8C;IAE9C,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,0BAA0B,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,0BAA0B,CAAC,6BAA6B,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IAC/E,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,0BAA0B,CAAC,+BAA+B,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IACnF,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,0BAA0B,CAAC,eAAe,MAAM,CAAC,IAAI,+BAA+B,EAAE;YACpF,KAAK,EAAE,OAAO;SACf,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC;QAChC,0BAA0B,CAAC,eAAe,MAAM,CAAC,IAAI,gCAAgC,EAAE;YACrF,KAAK,EAAE,QAAQ;SAChB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,0BAA0B,CAAC,eAAe,MAAM,CAAC,IAAI,oCAAoC,EAAE;YACzF,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,OAAO,MAAM,CAAC,OAAO,KAAK,UAAU,EAAE,CAAC;QACzC,0BAA0B,CAAC,eAAe,MAAM,CAAC,IAAI,iCAAiC,EAAE;YACtF,KAAK,EAAE,SAAS;SACjB,CAAC,CAAC;IACL,CAAC;IAED,mBAAmB,CAAC,MAAsE,CAAC,CAAC;IAC5F,mBAAmB,CAAC,MAAsE,CAAC,CAAC;IAE5F,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS,IAAI,MAAM,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;QACnE,0BAA0B,CACxB,eAAe,MAAM,CAAC,IAAI,wDAAwD,EAClF,EAAE,KAAK,EAAE,SAAS,EAAE,CACrB,CAAC;IACJ,CAAC;IAED,8BAA8B,CAC5B,MAAsE,CACvE,CAAC;IAEF,OAAO,UAAU,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,8BAA8B,CACrC,MAAyD;IAEzD,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC;IACzC,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;QACvB,OAAO;IACT,CAAC;IAED,MAAM,IAAI,GAAG,0BAA0B,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;IAEtF,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvD,0BAA0B,CACxB,eAAe,MAAM,CAAC,IAAI,8EAA8E,EACxG,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAClC,CAAC;QACJ,CAAC;QACD,IAAI,CAAC,yBAAyB,CAAC,GAAG,CAAC,EAAE,CAAC;YACpC,0BAA0B,CACxB,eAAe,MAAM,CAAC,IAAI,kCAAkC,GAAG,uDAAuD,EACtH,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAClC,CAAC;QACJ,CAAC;QACD,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;YACjB,0BAA0B,CACxB,eAAe,MAAM,CAAC,IAAI,kEAAkE,EAC5F,EAAE,KAAK,EAAE,sBAAsB,EAAE,CAClC,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"defineCapability.js","sourceRoot":"","sources":["../../src/define/defineCapability.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { z } from 'zod';
2
- import type { FlowDefinition, FlowRetryPolicy, FlowSchedule, FlowStep, FlowTrigger } from '../types/flow.js';
2
+ import type { FlowBudget, FlowDefinition, FlowRetryPolicy, FlowSchedule, FlowStep, FlowTrigger } from '../types/flow.js';
3
3
  interface DefineFlowInput<TInput extends z.ZodTypeAny, TState extends z.ZodTypeAny> {
4
4
  name: string;
5
5
  domain: string;
@@ -11,6 +11,8 @@ interface DefineFlowInput<TInput extends z.ZodTypeAny, TState extends z.ZodTypeA
11
11
  trigger?: FlowTrigger;
12
12
  schedule?: FlowSchedule;
13
13
  retry?: FlowRetryPolicy;
14
+ version?: string;
15
+ budget?: FlowBudget;
14
16
  }
15
17
  export declare function defineFlow<TInput extends z.ZodTypeAny, TState extends z.ZodTypeAny = z.ZodTypeAny>(config: DefineFlowInput<TInput, TState>): FlowDefinition<TInput, TState>;
16
18
  export {};
@@ -1 +1 @@
1
- {"version":3,"file":"defineFlow.d.ts","sourceRoot":"","sources":["../../src/define/defineFlow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EACV,cAAc,EACd,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAc1B,UAAU,eAAe,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,EAAE,MAAM,SAAS,CAAC,CAAC,UAAU;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,QAAQ,EAAE,CAAC;IAElB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,KAAK,CAAC,EAAE,eAAe,CAAC;CACzB;AAED,wBAAgB,UAAU,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,EAAE,MAAM,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,EAChG,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,GACtC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAmBhC"}
1
+ {"version":3,"file":"defineFlow.d.ts","sourceRoot":"","sources":["../../src/define/defineFlow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EACV,UAAU,EACV,cAAc,EACd,eAAe,EACf,YAAY,EACZ,QAAQ,EACR,WAAW,EACZ,MAAM,kBAAkB,CAAC;AAc1B,UAAU,eAAe,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,EAAE,MAAM,SAAS,CAAC,CAAC,UAAU;IAChF,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAEhB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,QAAQ,EAAE,CAAC;IAElB,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,QAAQ,CAAC,EAAE,YAAY,CAAC;IACxB,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,UAAU,CAAC;CACrB;AAED,wBAAgB,UAAU,CAAC,MAAM,SAAS,CAAC,CAAC,UAAU,EAAE,MAAM,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU,EAChG,MAAM,EAAE,eAAe,CAAC,MAAM,EAAE,MAAM,CAAC,GACtC,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,CAmBhC"}
@@ -1 +1 @@
1
- {"version":3,"file":"defineFlow.js","sourceRoot":"","sources":["../../src/define/defineFlow.ts"],"names":[],"mappings":"AAQA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAEnE,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,WAAW,IAAI,KAAK;QACpB,OAAQ,KAAiC,CAAC,SAAS,KAAK,UAAU,CACnE,CAAC;AACJ,CAAC;AAiBD,MAAM,UAAU,UAAU,CACxB,MAAuC;IAEvC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,0BAA0B,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,0BAA0B,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,0BAA0B,CAAC,SAAS,MAAM,CAAC,IAAI,+BAA+B,EAAE;YAC9E,KAAK,EAAE,OAAO;SACf,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9D,0BAA0B,CAAC,SAAS,MAAM,CAAC,IAAI,kCAAkC,EAAE;YACjF,KAAK,EAAE,OAAO;SACf,CAAC,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;AACnC,CAAC"}
1
+ {"version":3,"file":"defineFlow.js","sourceRoot":"","sources":["../../src/define/defineFlow.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACrD,OAAO,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAEnE,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,CACL,OAAO,KAAK,KAAK,QAAQ;QACzB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,WAAW,IAAI,KAAK;QACpB,OAAQ,KAAiC,CAAC,SAAS,KAAK,UAAU,CACnE,CAAC;AACJ,CAAC;AAmBD,MAAM,UAAU,UAAU,CACxB,MAAuC;IAEvC,IAAI,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACjB,0BAA0B,CAAC,uBAAuB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;IACzE,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACnB,0BAA0B,CAAC,yBAAyB,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;IAC7E,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,0BAA0B,CAAC,SAAS,MAAM,CAAC,IAAI,+BAA+B,EAAE;YAC9E,KAAK,EAAE,OAAO;SACf,CAAC,CAAC;IACL,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9D,0BAA0B,CAAC,SAAS,MAAM,CAAC,IAAI,kCAAkC,EAAE;YACjF,KAAK,EAAE,OAAO;SACf,CAAC,CAAC;IACL,CAAC;IAED,OAAO,UAAU,CAAC,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;AACnC,CAAC"}
@@ -0,0 +1,13 @@
1
+ export declare const DURABLE_TEST_DB_PATTERN: RegExp;
2
+ export declare function qualifyTable(schemaName: string | undefined, tableName: string): string;
3
+ export declare function tenantDurableDdl(schemaName?: string): string;
4
+ /** Existing event outbox — tenant-local; the dispatcher polls each tenant copy. */
5
+ export declare function eventOutboxDdl(): string;
6
+ /** Tenant-local delivery tables the event worker and idempotency service use. */
7
+ export declare function eventDeliveryDdl(): string;
8
+ export declare function spineDispatchDdl(): string;
9
+ /** Existing flow engine table — tenant-local copy so start/runNext stay on one engine. */
10
+ export declare function flowExecutionsDdl(): string;
11
+ export declare function tenantApprovalDdl(schemaName?: string): string;
12
+ export declare function tenantEpochTableDdl(schemaName?: string): string;
13
+ //# sourceMappingURL=apply-ddl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-ddl.d.ts","sourceRoot":"","sources":["../../src/durable/apply-ddl.ts"],"names":[],"mappings":"AAKA,eAAO,MAAM,uBAAuB,QAAsC,CAAC;AAE3E,wBAAgB,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM,CAKtF;AAED,wBAAgB,gBAAgB,CAAC,UAAU,GAAE,MAAyB,GAAG,MAAM,CA4F9E;AAED,mFAAmF;AACnF,wBAAgB,cAAc,IAAI,MAAM,CAoBvC;AAED,iFAAiF;AACjF,wBAAgB,gBAAgB,IAAI,MAAM,CAqBzC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CA6BzC;AAED,0FAA0F;AAC1F,wBAAgB,iBAAiB,IAAI,MAAM,CA2C1C;AAED,wBAAgB,iBAAiB,CAAC,UAAU,GAAE,MAAyB,GAAG,MAAM,CA+C/E;AAED,wBAAgB,mBAAmB,CAAC,UAAU,GAAE,MAAyB,GAAG,MAAM,CAMjF"}
@@ -0,0 +1,278 @@
1
+ // Apply Protocol A tenant/spine DDL. Identifiers are validated then quoted.
2
+ import { FRAMEWORK_SCHEMA } from '../data/schema-generator.js';
3
+ import { assertSafeIdentifier, quoteIdentifier } from '../tenancy/data-plane-provisioning.js';
4
+ export const DURABLE_TEST_DB_PATTERN = /^plumbus_durable_test_[a-z0-9_]+$/;
5
+ export function qualifyTable(schemaName, tableName) {
6
+ const table = quoteIdentifier(assertSafeIdentifier(tableName, 'table'));
7
+ const schema = schemaName?.trim();
8
+ if (!schema || schema === 'public')
9
+ return table;
10
+ return `${quoteIdentifier(assertSafeIdentifier(schema, 'schema'))}.${table}`;
11
+ }
12
+ export function tenantDurableDdl(schemaName = FRAMEWORK_SCHEMA) {
13
+ const schema = assertSafeIdentifier(schemaName, 'schema');
14
+ const qSchema = quoteIdentifier(schema);
15
+ const executionState = qualifyTable(schema, 'execution_state');
16
+ const stepExecution = qualifyTable(schema, 'step_execution');
17
+ const waitState = qualifyTable(schema, 'wait_state');
18
+ const terminalState = qualifyTable(schema, 'terminal_state');
19
+ const dispatchOutbox = qualifyTable(schema, 'dispatch_outbox');
20
+ const sideEffects = qualifyTable(schema, 'side_effect_log');
21
+ return [
22
+ `CREATE SCHEMA IF NOT EXISTS ${qSchema};`,
23
+ `CREATE TABLE ${executionState} (
24
+ execution_id text PRIMARY KEY,
25
+ state_ref_id text NOT NULL,
26
+ tenant_ref text NOT NULL,
27
+ revision integer NOT NULL,
28
+ tenant_epoch integer NOT NULL,
29
+ status text NOT NULL,
30
+ definition_id text NOT NULL,
31
+ definition_version text NOT NULL,
32
+ current_step_id text NOT NULL,
33
+ step_index integer NOT NULL,
34
+ attempt integer NOT NULL,
35
+ correlation_id text NOT NULL,
36
+ created_at timestamptz NOT NULL,
37
+ updated_at timestamptz NOT NULL,
38
+ wake_at timestamptz,
39
+ terminal boolean NOT NULL
40
+ );`,
41
+ `CREATE INDEX execution_state_status_idx ON ${executionState} (status);`,
42
+ `CREATE INDEX execution_state_epoch_idx ON ${executionState} (tenant_epoch);`,
43
+ `CREATE TABLE ${stepExecution} (
44
+ step_execution_id text PRIMARY KEY,
45
+ execution_id text NOT NULL,
46
+ step_id text NOT NULL,
47
+ attempt integer NOT NULL,
48
+ state text NOT NULL,
49
+ started_at timestamptz NOT NULL,
50
+ updated_at timestamptz NOT NULL,
51
+ completed_at timestamptz
52
+ );`,
53
+ `CREATE INDEX step_execution_exec_idx ON ${stepExecution} (execution_id);`,
54
+ `CREATE TABLE ${waitState} (
55
+ wait_state_id text PRIMARY KEY,
56
+ execution_id text NOT NULL,
57
+ step_id text NOT NULL,
58
+ kind text NOT NULL,
59
+ state text NOT NULL,
60
+ created_at timestamptz NOT NULL,
61
+ updated_at timestamptz NOT NULL,
62
+ not_before timestamptz,
63
+ expires_at timestamptz,
64
+ resolved_at timestamptz
65
+ );`,
66
+ `CREATE INDEX wait_state_exec_idx ON ${waitState} (execution_id);`,
67
+ `CREATE TABLE ${terminalState} (
68
+ terminal_state_id text PRIMARY KEY,
69
+ execution_id text NOT NULL UNIQUE,
70
+ operational_state text NOT NULL,
71
+ final_revision integer NOT NULL,
72
+ completed_at timestamptz NOT NULL,
73
+ domain_outcome_id text
74
+ );`,
75
+ `CREATE TABLE ${dispatchOutbox} (
76
+ outbox_id text PRIMARY KEY,
77
+ execution_id text NOT NULL,
78
+ state_ref_id text NOT NULL,
79
+ expected_revision integer NOT NULL,
80
+ tenant_epoch integer NOT NULL,
81
+ tenant_ref text NOT NULL,
82
+ step_id text NOT NULL,
83
+ definition_id text NOT NULL,
84
+ definition_version text NOT NULL,
85
+ correlation_id text NOT NULL,
86
+ work_class_id text NOT NULL,
87
+ priority_class_id text NOT NULL,
88
+ not_before timestamptz NOT NULL,
89
+ created_at timestamptz NOT NULL,
90
+ published_at timestamptz,
91
+ spine_row_id text,
92
+ spine_acked_at timestamptz,
93
+ superseded boolean NOT NULL
94
+ );`,
95
+ `CREATE INDEX dispatch_outbox_pending_idx ON ${dispatchOutbox} (published_at, spine_acked_at);`,
96
+ `CREATE INDEX dispatch_outbox_exec_rev_idx ON ${dispatchOutbox} (execution_id, expected_revision);`,
97
+ `CREATE TABLE ${sideEffects} (
98
+ effect_key text PRIMARY KEY,
99
+ label text NOT NULL,
100
+ applied_at timestamptz NOT NULL
101
+ );`,
102
+ ].join('\n');
103
+ }
104
+ /** Existing event outbox — tenant-local; the dispatcher polls each tenant copy. */
105
+ export function eventOutboxDdl() {
106
+ return `
107
+ CREATE TABLE event_outbox (
108
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
109
+ event_type text NOT NULL,
110
+ version text NOT NULL DEFAULT '1',
111
+ payload jsonb NOT NULL,
112
+ actor text NOT NULL,
113
+ tenant_id text,
114
+ correlation_id text NOT NULL,
115
+ causation_id text,
116
+ occurred_at timestamptz NOT NULL DEFAULT now(),
117
+ status text NOT NULL DEFAULT 'pending',
118
+ dispatched_at timestamptz,
119
+ retry_count text NOT NULL DEFAULT '0',
120
+ last_error text
121
+ );
122
+ CREATE INDEX event_outbox_status_idx ON event_outbox (status);
123
+ CREATE INDEX event_outbox_occurred_at_idx ON event_outbox (occurred_at);
124
+ `;
125
+ }
126
+ /** Tenant-local delivery tables the event worker and idempotency service use. */
127
+ export function eventDeliveryDdl() {
128
+ return `
129
+ CREATE TABLE event_idempotency (
130
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
131
+ event_id text NOT NULL,
132
+ consumer_id text NOT NULL,
133
+ processed_at timestamptz NOT NULL DEFAULT now()
134
+ );
135
+ CREATE INDEX event_idempotency_event_consumer_idx ON event_idempotency (event_id, consumer_id);
136
+ CREATE TABLE event_dead_letter (
137
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
138
+ event_id text NOT NULL,
139
+ event_type text NOT NULL,
140
+ payload jsonb NOT NULL,
141
+ consumer_id text,
142
+ last_error text,
143
+ retry_count text NOT NULL,
144
+ failed_at timestamptz NOT NULL DEFAULT now(),
145
+ metadata jsonb
146
+ );
147
+ `;
148
+ }
149
+ export function spineDispatchDdl() {
150
+ const table = qualifyTable(undefined, 'opaque_dispatch');
151
+ return [
152
+ `CREATE TABLE ${table} (
153
+ dispatch_id text PRIMARY KEY,
154
+ contract_version text NOT NULL,
155
+ tenant_route_id text NOT NULL,
156
+ execution_id text NOT NULL,
157
+ definition_id text NOT NULL,
158
+ definition_version text NOT NULL,
159
+ step_id text NOT NULL,
160
+ tenant_execution_state_ref_id text NOT NULL,
161
+ expected_revision integer NOT NULL,
162
+ tenant_epoch integer NOT NULL,
163
+ work_class_id text NOT NULL,
164
+ priority_class_id text NOT NULL,
165
+ delivery_state text NOT NULL,
166
+ attempt integer NOT NULL,
167
+ not_before timestamptz NOT NULL,
168
+ lease_ref_id text,
169
+ lease_expires_at timestamptz,
170
+ privacy_safe_failure_category_id text,
171
+ correlation_id text NOT NULL,
172
+ created_at timestamptz NOT NULL,
173
+ updated_at timestamptz NOT NULL,
174
+ UNIQUE (tenant_route_id, execution_id, expected_revision)
175
+ );`,
176
+ `CREATE INDEX opaque_dispatch_claim_idx ON ${table} (delivery_state, not_before, lease_expires_at);`,
177
+ ].join('\n');
178
+ }
179
+ /** Existing flow engine table — tenant-local copy so start/runNext stay on one engine. */
180
+ export function flowExecutionsDdl() {
181
+ return `
182
+ CREATE TABLE flow_executions (
183
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
184
+ flow_name text NOT NULL,
185
+ domain text NOT NULL,
186
+ status text NOT NULL DEFAULT 'created',
187
+ input jsonb NOT NULL,
188
+ state jsonb,
189
+ current_step text,
190
+ step_history jsonb NOT NULL DEFAULT '[]',
191
+ retry_count integer NOT NULL DEFAULT 0,
192
+ last_error text,
193
+ waiting_for_event text,
194
+ wake_at timestamptz,
195
+ actor text NOT NULL,
196
+ tenant_id text,
197
+ auth_snapshot_json jsonb,
198
+ correlation_id text,
199
+ trigger_event_id text,
200
+ created_at timestamptz NOT NULL DEFAULT now(),
201
+ updated_at timestamptz NOT NULL DEFAULT now(),
202
+ completed_at timestamptz,
203
+ lease_owner text,
204
+ lease_expires_at timestamptz,
205
+ definition_version text,
206
+ definition_digest text
207
+ );
208
+ CREATE INDEX flow_exec_status_idx ON flow_executions (status);
209
+ CREATE INDEX flow_exec_lease_idx ON flow_executions (status, lease_expires_at);
210
+ CREATE TABLE flow_dead_letter (
211
+ id uuid PRIMARY KEY DEFAULT gen_random_uuid(),
212
+ execution_id text NOT NULL UNIQUE,
213
+ flow_name text NOT NULL,
214
+ input jsonb NOT NULL,
215
+ state jsonb,
216
+ step_history jsonb,
217
+ last_error text,
218
+ retry_count integer NOT NULL DEFAULT 0,
219
+ failed_at timestamptz NOT NULL DEFAULT now(),
220
+ metadata jsonb
221
+ );
222
+ `;
223
+ }
224
+ export function tenantApprovalDdl(schemaName = FRAMEWORK_SCHEMA) {
225
+ const schema = assertSafeIdentifier(schemaName, 'schema');
226
+ const qSchema = quoteIdentifier(schema);
227
+ const humanTask = qualifyTable(schema, 'human_task');
228
+ const approvalRequest = qualifyTable(schema, 'approval_request');
229
+ const approvalDecision = qualifyTable(schema, 'approval_decision');
230
+ return [
231
+ `CREATE SCHEMA IF NOT EXISTS ${qSchema};`,
232
+ `CREATE TABLE ${humanTask} (
233
+ human_task_id text PRIMARY KEY,
234
+ kind text NOT NULL,
235
+ state text NOT NULL,
236
+ approval_request_id text,
237
+ execution_id text,
238
+ created_at timestamptz NOT NULL,
239
+ expires_at timestamptz NOT NULL,
240
+ updated_at timestamptz NOT NULL,
241
+ resolved_at timestamptz
242
+ );`,
243
+ `CREATE INDEX human_task_state_idx ON ${humanTask} (state);`,
244
+ `CREATE TABLE ${approvalRequest} (
245
+ approval_request_id text PRIMARY KEY,
246
+ capability_id text NOT NULL,
247
+ definition_version text NOT NULL,
248
+ input_digest text NOT NULL,
249
+ risk_class text NOT NULL,
250
+ review_reason text NOT NULL,
251
+ state text NOT NULL,
252
+ execution_id text,
253
+ created_at timestamptz NOT NULL,
254
+ expires_at timestamptz NOT NULL,
255
+ updated_at timestamptz NOT NULL,
256
+ resolved_at timestamptz,
257
+ invalidated_reason text
258
+ );`,
259
+ `CREATE INDEX approval_request_capability_idx ON ${approvalRequest} (capability_id);`,
260
+ `CREATE INDEX approval_request_binding_idx ON ${approvalRequest} (capability_id, definition_version, input_digest);`,
261
+ `CREATE TABLE ${approvalDecision} (
262
+ approval_decision_id text PRIMARY KEY,
263
+ approval_request_id text NOT NULL,
264
+ approver_account_id text NOT NULL,
265
+ decision text NOT NULL,
266
+ decided_at timestamptz NOT NULL
267
+ );`,
268
+ `CREATE INDEX approval_decision_request_idx ON ${approvalDecision} (approval_request_id);`,
269
+ ].join('\n');
270
+ }
271
+ export function tenantEpochTableDdl(schemaName = FRAMEWORK_SCHEMA) {
272
+ const table = qualifyTable(schemaName, 'tenant_epoch');
273
+ return `CREATE TABLE ${table} (
274
+ tenant_ref text PRIMARY KEY,
275
+ epoch integer NOT NULL
276
+ );`;
277
+ }
278
+ //# sourceMappingURL=apply-ddl.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"apply-ddl.js","sourceRoot":"","sources":["../../src/durable/apply-ddl.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ import { type PostgresJsDatabase } from 'drizzle-orm/postgres-js';
2
+ import { type TestPostgresAdmin } from './pg-env.js';
3
+ export interface DurableTestHarness {
4
+ admin: TestPostgresAdmin;
5
+ spineName: string;
6
+ tenantName: string;
7
+ spineDb: PostgresJsDatabase;
8
+ tenantDb: PostgresJsDatabase;
9
+ coreSchema: string;
10
+ close(): Promise<void>;
11
+ }
12
+ export declare function createDurableTestHarness(options?: {
13
+ coreSchema?: string;
14
+ includeFlowExecutions?: boolean;
15
+ includeEventOutbox?: boolean;
16
+ includeEventDelivery?: boolean;
17
+ }): Promise<DurableTestHarness>;
18
+ export declare function createDurableTestDatabase(options: {
19
+ admin?: TestPostgresAdmin;
20
+ kind: string;
21
+ ddl: string;
22
+ }): Promise<{
23
+ name: string;
24
+ db: PostgresJsDatabase;
25
+ close(): Promise<void>;
26
+ }>;
27
+ export declare function extraHarnessConnection(admin: TestPostgresAdmin, database: string): Promise<{
28
+ db: PostgresJsDatabase;
29
+ close(): Promise<void>;
30
+ }>;
31
+ //# sourceMappingURL=harness.d.ts.map