@sixb/core 0.1.18 → 0.1.19

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 (404) hide show
  1. package/README.md +7 -6
  2. package/dist/actions/commit-edits.d.ts +7 -19
  3. package/dist/actions/commit-edits.d.ts.map +1 -1
  4. package/dist/actions/errors.d.ts +0 -3
  5. package/dist/actions/errors.d.ts.map +1 -1
  6. package/dist/actions/execution.d.ts +10 -3
  7. package/dist/actions/execution.d.ts.map +1 -1
  8. package/dist/actions/index.d.ts +6 -9
  9. package/dist/actions/index.d.ts.map +1 -1
  10. package/dist/actions/index.js +51 -50
  11. package/dist/actions/index.js.map +1 -1
  12. package/dist/actions/request.d.ts +14 -25
  13. package/dist/actions/request.d.ts.map +1 -1
  14. package/dist/actions/run/context.d.ts +40 -0
  15. package/dist/actions/run/context.d.ts.map +1 -0
  16. package/dist/actions/run/edits-commit.d.ts +31 -0
  17. package/dist/actions/run/edits-commit.d.ts.map +1 -0
  18. package/dist/actions/run/effects.d.ts +23 -0
  19. package/dist/actions/run/effects.d.ts.map +1 -0
  20. package/dist/actions/run/execute.d.ts +30 -0
  21. package/dist/actions/run/execute.d.ts.map +1 -0
  22. package/dist/actions/run/executor.d.ts +95 -0
  23. package/dist/actions/run/executor.d.ts.map +1 -0
  24. package/dist/actions/run/normalize.d.ts +36 -0
  25. package/dist/actions/run/normalize.d.ts.map +1 -0
  26. package/dist/actions/run/phase-types.d.ts +18 -0
  27. package/dist/actions/run/phase-types.d.ts.map +1 -0
  28. package/dist/actions/run/phases.d.ts +20 -0
  29. package/dist/actions/run/phases.d.ts.map +1 -0
  30. package/dist/actions/run/run-action.d.ts +25 -0
  31. package/dist/actions/run/run-action.d.ts.map +1 -0
  32. package/dist/actions/run/signals.d.ts +67 -0
  33. package/dist/actions/run/signals.d.ts.map +1 -0
  34. package/dist/actions/run/state.d.ts +47 -0
  35. package/dist/actions/run/state.d.ts.map +1 -0
  36. package/dist/actions/run/types.d.ts +54 -0
  37. package/dist/actions/run/types.d.ts.map +1 -0
  38. package/dist/actions/run/writeback.d.ts +17 -0
  39. package/dist/actions/run/writeback.d.ts.map +1 -0
  40. package/dist/actions/run-authorization.d.ts +1 -1
  41. package/dist/actions/run-authorization.d.ts.map +1 -1
  42. package/dist/actions/run-persistence.d.ts +53 -0
  43. package/dist/actions/run-persistence.d.ts.map +1 -0
  44. package/dist/actions/types/context.d.ts +10 -0
  45. package/dist/actions/types/context.d.ts.map +1 -1
  46. package/dist/agents/index.js +52 -55
  47. package/dist/agents/index.js.map +1 -1
  48. package/dist/agents/streams/index.js +2 -2
  49. package/dist/agents/streams/internal.js +2 -2
  50. package/dist/auth/index.js +11 -11
  51. package/dist/auth/index.js.map +1 -1
  52. package/dist/authorization/event-visibility.d.ts.map +1 -1
  53. package/dist/authorization/index.js +3 -3
  54. package/dist/bootstrap/index.js +46 -49
  55. package/dist/bootstrap/index.js.map +2 -2
  56. package/dist/{chunk-d0eb5yy6.js → chunk-1f7wpmyp.js} +5 -5
  57. package/dist/{chunk-d0eb5yy6.js.map → chunk-1f7wpmyp.js.map} +1 -1
  58. package/dist/{chunk-vgk3hknm.js → chunk-1k89ecfr.js} +1 -1
  59. package/dist/{chunk-6h5m9xjx.js → chunk-3gnrh4ve.js} +6 -10
  60. package/dist/{chunk-6h5m9xjx.js.map → chunk-3gnrh4ve.js.map} +4 -4
  61. package/dist/{chunk-htr6wjmv.js → chunk-4tcx876c.js} +15 -15
  62. package/dist/{chunk-htr6wjmv.js.map → chunk-4tcx876c.js.map} +1 -1
  63. package/dist/{chunk-za5yd58j.js → chunk-52bk93x8.js} +2 -2
  64. package/dist/{chunk-22v5bpz3.js → chunk-5e43w60z.js} +1 -1
  65. package/dist/{chunk-zxawp1n2.js → chunk-7kg3k1m9.js} +1 -1
  66. package/dist/{chunk-ny3xyvcn.js → chunk-7mbzgd9m.js} +3 -3
  67. package/dist/{chunk-b9affek3.js → chunk-7n440zgt.js} +30 -30
  68. package/dist/{chunk-b9affek3.js.map → chunk-7n440zgt.js.map} +4 -4
  69. package/dist/{chunk-kkqwzy6h.js → chunk-7t429e3f.js} +1 -1
  70. package/dist/{chunk-s4jhg8a3.js → chunk-80mc0971.js} +13 -13
  71. package/dist/{chunk-s4jhg8a3.js.map → chunk-80mc0971.js.map} +1 -1
  72. package/dist/{chunk-1b1f2d5f.js → chunk-85yvv5n0.js} +8 -8
  73. package/dist/{chunk-1b1f2d5f.js.map → chunk-85yvv5n0.js.map} +1 -1
  74. package/dist/{chunk-6fsr7y93.js → chunk-8mx7qw3y.js} +14 -13
  75. package/dist/{chunk-6fsr7y93.js.map → chunk-8mx7qw3y.js.map} +4 -4
  76. package/dist/{chunk-kpx7jrmn.js → chunk-91mg3nj9.js} +59 -59
  77. package/dist/{chunk-kpx7jrmn.js.map → chunk-91mg3nj9.js.map} +5 -5
  78. package/dist/{chunk-48e3cn2d.js → chunk-9gyp8hg1.js} +2 -2
  79. package/dist/{chunk-ewqa58h9.js → chunk-9k93ah50.js} +4 -4
  80. package/dist/{chunk-ewqa58h9.js.map → chunk-9k93ah50.js.map} +1 -1
  81. package/dist/{chunk-4wn7bxxa.js → chunk-9ybhtmg4.js} +1 -1
  82. package/dist/{chunk-fc5zfxy1.js → chunk-a40ad1ft.js} +5 -13
  83. package/dist/chunk-a40ad1ft.js.map +10 -0
  84. package/dist/{chunk-vz3gc1tm.js → chunk-aff7cyea.js} +62 -64
  85. package/dist/{chunk-vz3gc1tm.js.map → chunk-aff7cyea.js.map} +4 -4
  86. package/dist/{chunk-y2aq6ag9.js → chunk-b38szspf.js} +5 -14
  87. package/dist/chunk-b38szspf.js.map +11 -0
  88. package/dist/{chunk-r2y23egw.js → chunk-bkpke1sg.js} +1 -10
  89. package/dist/chunk-bkpke1sg.js.map +10 -0
  90. package/dist/{chunk-bs7sqkre.js → chunk-bpgy64fw.js} +1 -1
  91. package/dist/{chunk-vx2yp45y.js → chunk-c85m1hyj.js} +2 -2
  92. package/dist/{chunk-v6xpd60t.js → chunk-d2ync1v3.js} +5 -5
  93. package/dist/{chunk-fe52eczz.js → chunk-ey3pyej1.js} +6345 -2125
  94. package/dist/chunk-ey3pyej1.js.map +106 -0
  95. package/dist/{chunk-vjcd8d27.js → chunk-fa02jy15.js} +1 -1
  96. package/dist/{chunk-y05543x6.js → chunk-hvsb78a1.js} +4 -4
  97. package/dist/{chunk-y05543x6.js.map → chunk-hvsb78a1.js.map} +1 -1
  98. package/dist/{chunk-qq90g05n.js → chunk-j2bp5ryw.js} +53 -244
  99. package/dist/{chunk-qq90g05n.js.map → chunk-j2bp5ryw.js.map} +3 -3
  100. package/dist/{chunk-qmnnhde6.js → chunk-kg5j6fct.js} +1 -1
  101. package/dist/{chunk-de4z2bj6.js → chunk-kyzq4wy9.js} +6 -6
  102. package/dist/{chunk-wr8qp979.js → chunk-m427qgq0.js} +9 -5
  103. package/dist/{chunk-wr8qp979.js.map → chunk-m427qgq0.js.map} +4 -3
  104. package/dist/{chunk-e1c18xjx.js → chunk-nq6gpjt7.js} +4 -45
  105. package/dist/{chunk-e1c18xjx.js.map → chunk-nq6gpjt7.js.map} +5 -5
  106. package/dist/{chunk-ex496vct.js → chunk-nre82s12.js} +1 -1
  107. package/dist/{chunk-1hqwggsn.js → chunk-nzapm6p0.js} +1 -2
  108. package/dist/chunk-nzapm6p0.js.map +12 -0
  109. package/dist/{chunk-wt4szfec.js → chunk-pbcbn83d.js} +4 -4
  110. package/dist/{chunk-wt4szfec.js.map → chunk-pbcbn83d.js.map} +1 -1
  111. package/dist/{chunk-7hpdd6r9.js → chunk-q1vkr2ys.js} +4 -4
  112. package/dist/{chunk-zb77kjth.js → chunk-rhg02hxq.js} +3 -3
  113. package/dist/{chunk-y9jmd7e5.js → chunk-s16apyk9.js} +102 -16
  114. package/dist/chunk-s16apyk9.js.map +16 -0
  115. package/dist/{chunk-yv9czyfr.js → chunk-t6vq7bff.js} +5 -5
  116. package/dist/{chunk-qkvz64nd.js → chunk-tjb1mk5t.js} +2 -2
  117. package/dist/{chunk-p844e0rn.js → chunk-tpn40322.js} +2 -2
  118. package/dist/{chunk-rt9p8m9t.js → chunk-v9xd5wzd.js} +1 -1
  119. package/dist/{chunk-2vhg6ysa.js → chunk-vyf9kfqf.js} +1 -1
  120. package/dist/{chunk-k6hrnf35.js → chunk-wwdfe68s.js} +51 -4
  121. package/dist/chunk-wwdfe68s.js.map +11 -0
  122. package/dist/{chunk-f1zxad2t.js → chunk-wz0xs816.js} +6 -6
  123. package/dist/{chunk-f1zxad2t.js.map → chunk-wz0xs816.js.map} +1 -1
  124. package/dist/chunk-y0c4e6ex.js +16 -0
  125. package/dist/chunk-y0c4e6ex.js.map +10 -0
  126. package/dist/{chunk-qkbx3tf6.js → chunk-y7rqfrgg.js} +6 -13
  127. package/dist/{chunk-qkbx3tf6.js.map → chunk-y7rqfrgg.js.map} +4 -4
  128. package/dist/{chunk-dfm066qg.js → chunk-yxd3nnqt.js} +2 -29
  129. package/dist/chunk-yxd3nnqt.js.map +11 -0
  130. package/dist/{chunk-70jmg2zx.js → chunk-yzwja0mj.js} +4 -19
  131. package/dist/{chunk-70jmg2zx.js.map → chunk-yzwja0mj.js.map} +3 -3
  132. package/dist/{chunk-p0dqwj3n.js → chunk-zrmy8zvw.js} +66 -47
  133. package/dist/{chunk-p0dqwj3n.js.map → chunk-zrmy8zvw.js.map} +4 -4
  134. package/dist/deploy/index.d.ts +1 -1
  135. package/dist/deploy/index.d.ts.map +1 -1
  136. package/dist/deploy/internal.js +10 -8
  137. package/dist/deploy/internal.js.map +4 -4
  138. package/dist/deploy/services.d.ts +1 -2
  139. package/dist/deploy/services.d.ts.map +1 -1
  140. package/dist/deploy/types.d.ts +6 -5
  141. package/dist/deploy/types.d.ts.map +1 -1
  142. package/dist/deploy/validation.d.ts.map +1 -1
  143. package/dist/edits/index.js +3 -5
  144. package/dist/edits/index.js.map +1 -1
  145. package/dist/error-reporting/internal.js +3 -3
  146. package/dist/error-reporting/types.d.ts +2 -9
  147. package/dist/error-reporting/types.d.ts.map +1 -1
  148. package/dist/errors/catalog.d.ts +12 -0
  149. package/dist/errors/catalog.d.ts.map +1 -1
  150. package/dist/errors/internal.js +1 -1
  151. package/dist/events/definitions.d.ts +0 -5
  152. package/dist/events/definitions.d.ts.map +1 -1
  153. package/dist/events/index.d.ts +3 -3
  154. package/dist/events/index.d.ts.map +1 -1
  155. package/dist/events/index.js +6 -8
  156. package/dist/events/index.js.map +1 -1
  157. package/dist/events/scope.d.ts +0 -1
  158. package/dist/events/scope.d.ts.map +1 -1
  159. package/dist/events/scope.js +1 -1
  160. package/dist/events/selectors/builder.d.ts +1 -8
  161. package/dist/events/selectors/builder.d.ts.map +1 -1
  162. package/dist/events/selectors/index.d.ts +2 -2
  163. package/dist/events/selectors/index.d.ts.map +1 -1
  164. package/dist/events/selectors/index.js +2 -2
  165. package/dist/events/selectors/predicate.d.ts.map +1 -1
  166. package/dist/events/selectors/types.d.ts +2 -33
  167. package/dist/events/selectors/types.d.ts.map +1 -1
  168. package/dist/events/types/index.d.ts +1 -12
  169. package/dist/events/types/index.d.ts.map +1 -1
  170. package/dist/execution/agent.js +41 -44
  171. package/dist/execution/agent.js.map +1 -1
  172. package/dist/execution/primitive.js +57 -88
  173. package/dist/execution/primitive.js.map +3 -4
  174. package/dist/execution/request.js +35 -38
  175. package/dist/execution/request.js.map +2 -2
  176. package/dist/index.d.ts +3 -3
  177. package/dist/index.d.ts.map +1 -1
  178. package/dist/index.js +111 -120
  179. package/dist/index.js.map +1 -1
  180. package/dist/materialization/index.js +3 -3
  181. package/dist/materialization/index.js.map +1 -1
  182. package/dist/materialization/model.d.ts +19 -6
  183. package/dist/materialization/model.d.ts.map +1 -1
  184. package/dist/materializer/index.js +31 -31
  185. package/dist/materializer/index.js.map +1 -1
  186. package/dist/materializer/shared/normalize.d.ts.map +1 -1
  187. package/dist/models/execution/index.js +18 -18
  188. package/dist/objects/action/errors.d.ts +0 -9
  189. package/dist/objects/action/errors.d.ts.map +1 -1
  190. package/dist/objects/action/index.d.ts +3 -3
  191. package/dist/objects/action/index.d.ts.map +1 -1
  192. package/dist/objects/action/request.d.ts +2 -8
  193. package/dist/objects/action/request.d.ts.map +1 -1
  194. package/dist/objects/execution.d.ts +0 -2
  195. package/dist/objects/execution.d.ts.map +1 -1
  196. package/dist/objects/index.js +44 -29
  197. package/dist/objects/index.js.map +1 -1
  198. package/dist/objects/query/index.js +29 -29
  199. package/dist/objects/query/index.js.map +1 -1
  200. package/dist/objects/sdk/object-handle.d.ts.map +1 -1
  201. package/dist/objects/sdk/object-set.d.ts.map +1 -1
  202. package/dist/objects/service/index.d.ts +0 -1
  203. package/dist/objects/service/index.d.ts.map +1 -1
  204. package/dist/ontology/index.js +5 -5
  205. package/dist/ontology/index.js.map +1 -1
  206. package/dist/ontology/internal.js +2 -2
  207. package/dist/pipelines/index.js +28 -28
  208. package/dist/projections/internal.js +22 -22
  209. package/dist/projections/internal.js.map +1 -1
  210. package/dist/query.js +2 -2
  211. package/dist/queues/in-memory.d.ts +1 -2
  212. package/dist/queues/in-memory.d.ts.map +1 -1
  213. package/dist/queues/index.d.ts +1 -1
  214. package/dist/queues/index.d.ts.map +1 -1
  215. package/dist/queues/index.js +1 -1
  216. package/dist/queues/types.d.ts +0 -7
  217. package/dist/queues/types.d.ts.map +1 -1
  218. package/dist/runtime/host.d.ts.map +1 -1
  219. package/dist/runtime/internal.js +24 -25
  220. package/dist/runtime/internal.js.map +1 -1
  221. package/dist/runtime/resolve-definitions.d.ts.map +1 -1
  222. package/dist/runtime/types.d.ts +16 -36
  223. package/dist/runtime/types.d.ts.map +1 -1
  224. package/dist/sandboxes/index.js +5 -5
  225. package/dist/schedules/builders.d.ts.map +1 -1
  226. package/dist/schedules/index.js +3 -3
  227. package/dist/schedules/runtime.d.ts.map +1 -1
  228. package/dist/schedules/validation.d.ts +0 -1
  229. package/dist/schedules/validation.d.ts.map +1 -1
  230. package/dist/security/every.d.ts +1 -1
  231. package/dist/shares/internal.js +17 -17
  232. package/dist/storage/action-runs/failure.js +2 -2
  233. package/dist/storage/action-runs/idempotency.d.ts +3 -4
  234. package/dist/storage/action-runs/idempotency.d.ts.map +1 -1
  235. package/dist/storage/action-runs/in-memory.d.ts +2 -9
  236. package/dist/storage/action-runs/in-memory.d.ts.map +1 -1
  237. package/dist/storage/action-runs/index.d.ts +1 -3
  238. package/dist/storage/action-runs/index.d.ts.map +1 -1
  239. package/dist/storage/action-runs/provider.js +1 -1
  240. package/dist/storage/action-runs/record.d.ts +20 -0
  241. package/dist/storage/action-runs/record.d.ts.map +1 -0
  242. package/dist/storage/action-runs/types.d.ts +39 -68
  243. package/dist/storage/action-runs/types.d.ts.map +1 -1
  244. package/dist/storage/ai-limits/enforcement.js +2 -2
  245. package/dist/storage/connector-connections/provider.js +1 -1
  246. package/dist/storage/file-upload-sessions/provider.js +9 -9
  247. package/dist/storage/index.d.ts +2 -2
  248. package/dist/storage/index.d.ts.map +1 -1
  249. package/dist/storage/index.js +30 -31
  250. package/dist/storage/index.js.map +1 -1
  251. package/dist/storage/internal.d.ts +1 -1
  252. package/dist/storage/internal.d.ts.map +1 -1
  253. package/dist/storage/internal.js +9 -12
  254. package/dist/storage/internal.js.map +1 -1
  255. package/dist/storage/objects/execution-limits.d.ts +1 -1
  256. package/dist/storage/objects/execution-limits.d.ts.map +1 -1
  257. package/dist/storage/ontology/provider.js +2 -2
  258. package/dist/storage/projection-runs/provider.js +2 -2
  259. package/dist/storage/types.d.ts +1 -1
  260. package/dist/storage/types.d.ts.map +1 -1
  261. package/dist/storage/workflow-runs/provider.js +9 -9
  262. package/dist/syncs/index.js +29 -29
  263. package/dist/testing/action-execution.d.ts +34 -4
  264. package/dist/testing/action-execution.d.ts.map +1 -1
  265. package/dist/testing/action-run-storage-contract.d.ts +11 -0
  266. package/dist/testing/action-run-storage-contract.d.ts.map +1 -0
  267. package/dist/testing/index.d.ts +2 -1
  268. package/dist/testing/index.d.ts.map +1 -1
  269. package/dist/testing/index.js +3202 -2860
  270. package/dist/testing/index.js.map +7 -6
  271. package/dist/testing/materializer-storage-contract.d.ts.map +1 -1
  272. package/dist/testing/queues-contract.d.ts.map +1 -1
  273. package/dist/webhooks/internal.js +23 -23
  274. package/dist/webhooks/internal.js.map +1 -1
  275. package/dist/workers/index.js +1 -1
  276. package/dist/workflows/index.js +48 -51
  277. package/dist/workflows/index.js.map +1 -1
  278. package/package.json +1 -7
  279. package/src/actions/commit-edits.ts +9 -37
  280. package/src/actions/errors.ts +0 -4
  281. package/src/actions/execution.ts +10 -10
  282. package/src/actions/index.ts +5 -24
  283. package/src/actions/request.ts +157 -295
  284. package/src/actions/run/context.ts +193 -0
  285. package/src/actions/run/edits-commit.ts +102 -0
  286. package/src/actions/run/effects.ts +105 -0
  287. package/src/actions/run/execute.ts +113 -0
  288. package/src/actions/run/executor.ts +314 -0
  289. package/src/actions/run/normalize.ts +142 -0
  290. package/src/actions/run/phase-types.ts +20 -0
  291. package/src/actions/run/phases.ts +150 -0
  292. package/src/actions/run/run-action.ts +170 -0
  293. package/src/actions/run/signals.ts +118 -0
  294. package/src/actions/run/state.ts +95 -0
  295. package/src/actions/run/types.ts +61 -0
  296. package/src/actions/run/writeback.ts +79 -0
  297. package/src/actions/run-authorization.ts +1 -1
  298. package/src/actions/run-persistence.ts +105 -0
  299. package/src/actions/types/context.ts +10 -0
  300. package/src/authorization/event-visibility.ts +0 -12
  301. package/src/deploy/index.ts +0 -1
  302. package/src/deploy/services.ts +2 -11
  303. package/src/deploy/types.ts +6 -6
  304. package/src/deploy/validation.ts +12 -6
  305. package/src/error-reporting/types.ts +2 -10
  306. package/src/errors/catalog.ts +13 -0
  307. package/src/events/definitions.ts +0 -17
  308. package/src/events/index.ts +0 -14
  309. package/src/events/scope.ts +0 -12
  310. package/src/events/selectors/builder.ts +0 -51
  311. package/src/events/selectors/index.ts +0 -6
  312. package/src/events/selectors/predicate.ts +0 -2
  313. package/src/events/selectors/types.ts +7 -65
  314. package/src/events/types/index.ts +0 -11
  315. package/src/index.ts +1 -19
  316. package/src/materialization/model.ts +26 -9
  317. package/src/materializer/README.md +6 -1
  318. package/src/materializer/edits/commit.ts +42 -32
  319. package/src/materializer/shared/normalize.ts +25 -14
  320. package/src/objects/action/errors.ts +0 -12
  321. package/src/objects/action/index.ts +3 -3
  322. package/src/objects/action/request.ts +2 -29
  323. package/src/objects/execution.ts +2 -2
  324. package/src/objects/sdk/object-handle.ts +3 -29
  325. package/src/objects/sdk/object-set.ts +5 -30
  326. package/src/objects/service/index.ts +0 -1
  327. package/src/queues/in-memory.ts +0 -6
  328. package/src/queues/index.ts +0 -2
  329. package/src/queues/types.ts +0 -11
  330. package/src/runtime/host.ts +5 -0
  331. package/src/runtime/resolve-definitions.ts +0 -1
  332. package/src/runtime/types.ts +16 -45
  333. package/src/schedules/builders.ts +1 -4
  334. package/src/schedules/runtime.ts +0 -41
  335. package/src/schedules/validation.ts +2 -16
  336. package/src/security/every.ts +1 -1
  337. package/src/storage/action-runs/idempotency.ts +13 -41
  338. package/src/storage/action-runs/in-memory.ts +20 -311
  339. package/src/storage/action-runs/index.ts +1 -16
  340. package/src/storage/action-runs/record.ts +130 -0
  341. package/src/storage/action-runs/types.ts +37 -92
  342. package/src/storage/index.ts +1 -9
  343. package/src/storage/internal.ts +1 -7
  344. package/src/storage/objects/execution-limits.ts +3 -2
  345. package/src/storage/types.ts +2 -4
  346. package/src/testing/action-execution.ts +73 -13
  347. package/src/testing/action-run-storage-contract.ts +335 -0
  348. package/src/testing/index.ts +8 -1
  349. package/src/testing/materializer-storage-contract.ts +174 -18
  350. package/src/testing/queues-contract.ts +0 -18
  351. package/dist/actions/run-dispatch.d.ts +0 -25
  352. package/dist/actions/run-dispatch.d.ts.map +0 -1
  353. package/dist/actions/worker.d.ts +0 -3
  354. package/dist/actions/worker.d.ts.map +0 -1
  355. package/dist/actions/worker.js +0 -325
  356. package/dist/actions/worker.js.map +0 -11
  357. package/dist/chunk-1hqwggsn.js.map +0 -12
  358. package/dist/chunk-85cd7e8c.js +0 -51
  359. package/dist/chunk-85cd7e8c.js.map +0 -10
  360. package/dist/chunk-dfm066qg.js.map +0 -11
  361. package/dist/chunk-fc5zfxy1.js.map +0 -11
  362. package/dist/chunk-fe52eczz.js.map +0 -49
  363. package/dist/chunk-fx93hd2n.js +0 -1614
  364. package/dist/chunk-fx93hd2n.js.map +0 -20
  365. package/dist/chunk-k6hrnf35.js.map +0 -10
  366. package/dist/chunk-qxvp5epv.js +0 -1329
  367. package/dist/chunk-qxvp5epv.js.map +0 -36
  368. package/dist/chunk-r2y23egw.js.map +0 -10
  369. package/dist/chunk-tffvfy6s.js +0 -593
  370. package/dist/chunk-tffvfy6s.js.map +0 -15
  371. package/dist/chunk-y2aq6ag9.js.map +0 -11
  372. package/dist/chunk-y9jmd7e5.js.map +0 -15
  373. package/dist/chunk-zvx7h87b.js +0 -12
  374. package/dist/chunk-zvx7h87b.js.map +0 -10
  375. package/dist/events/types/actions.d.ts +0 -39
  376. package/dist/events/types/actions.d.ts.map +0 -1
  377. package/dist/objects/service/action-service.d.ts +0 -13
  378. package/dist/objects/service/action-service.d.ts.map +0 -1
  379. package/src/actions/run-dispatch.ts +0 -282
  380. package/src/actions/worker.ts +0 -2
  381. package/src/events/types/actions.ts +0 -42
  382. package/src/objects/service/action-service.ts +0 -43
  383. /package/dist/{chunk-vgk3hknm.js.map → chunk-1k89ecfr.js.map} +0 -0
  384. /package/dist/{chunk-za5yd58j.js.map → chunk-52bk93x8.js.map} +0 -0
  385. /package/dist/{chunk-22v5bpz3.js.map → chunk-5e43w60z.js.map} +0 -0
  386. /package/dist/{chunk-zxawp1n2.js.map → chunk-7kg3k1m9.js.map} +0 -0
  387. /package/dist/{chunk-ny3xyvcn.js.map → chunk-7mbzgd9m.js.map} +0 -0
  388. /package/dist/{chunk-kkqwzy6h.js.map → chunk-7t429e3f.js.map} +0 -0
  389. /package/dist/{chunk-48e3cn2d.js.map → chunk-9gyp8hg1.js.map} +0 -0
  390. /package/dist/{chunk-4wn7bxxa.js.map → chunk-9ybhtmg4.js.map} +0 -0
  391. /package/dist/{chunk-bs7sqkre.js.map → chunk-bpgy64fw.js.map} +0 -0
  392. /package/dist/{chunk-vx2yp45y.js.map → chunk-c85m1hyj.js.map} +0 -0
  393. /package/dist/{chunk-v6xpd60t.js.map → chunk-d2ync1v3.js.map} +0 -0
  394. /package/dist/{chunk-vjcd8d27.js.map → chunk-fa02jy15.js.map} +0 -0
  395. /package/dist/{chunk-qmnnhde6.js.map → chunk-kg5j6fct.js.map} +0 -0
  396. /package/dist/{chunk-de4z2bj6.js.map → chunk-kyzq4wy9.js.map} +0 -0
  397. /package/dist/{chunk-ex496vct.js.map → chunk-nre82s12.js.map} +0 -0
  398. /package/dist/{chunk-7hpdd6r9.js.map → chunk-q1vkr2ys.js.map} +0 -0
  399. /package/dist/{chunk-zb77kjth.js.map → chunk-rhg02hxq.js.map} +0 -0
  400. /package/dist/{chunk-yv9czyfr.js.map → chunk-t6vq7bff.js.map} +0 -0
  401. /package/dist/{chunk-qkvz64nd.js.map → chunk-tjb1mk5t.js.map} +0 -0
  402. /package/dist/{chunk-p844e0rn.js.map → chunk-tpn40322.js.map} +0 -0
  403. /package/dist/{chunk-rt9p8m9t.js.map → chunk-v9xd5wzd.js.map} +0 -0
  404. /package/dist/{chunk-2vhg6ysa.js.map → chunk-vyf9kfqf.js.map} +0 -0
@@ -1,8 +1,8 @@
1
1
  import { AuthorizationError, assertAuthorized, canViewActionRun } from "../authorization"
2
2
  import {
3
3
  getAuthorizationRef,
4
+ type ResolvedRuntimeAuthorization,
4
5
  resolveExecutionScopeAuthorization,
5
- resolveRuntimeAuthorizationForProject,
6
6
  } from "../execution/authorization"
7
7
  import {
8
8
  createPrimitiveExecutionRecord,
@@ -10,22 +10,20 @@ import {
10
10
  executionRecordInputFromRuntime,
11
11
  } from "../execution/durable"
12
12
  import type { ExecutionContext } from "../execution/types"
13
- import { ActionRunTimeoutError } from "../objects/action/errors"
14
13
  import { OntologyValidationError } from "../ontology/errors"
15
14
  import type { ObjectTypeWithPropertyTokens } from "../ontology/tokens"
16
15
  import type { SixbRuntimeContext } from "../runtime/types"
17
16
  import { assertParamUsersActive } from "../shared/params/user-refs"
17
+ import type { ActionRunRecord } from "../storage"
18
18
  import {
19
- ActionRunError,
20
- type ActionRunRecord,
21
- type ActionRunStorage,
22
- isTerminalActionRun,
23
- } from "../storage"
24
- import { assertObjectReadOutputWithinLimit } from "../storage/objects/execution-limits"
19
+ assertObjectReadOutputWithinLimit,
20
+ ObjectReadLimitExceededError,
21
+ } from "../storage/objects/execution-limits"
25
22
  import { admitDelegatedObjectAction, assertDelegatedActionTarget } from "./delegated-admission"
26
- import { actionRunBelongsToShareGrant, canDelegationAccessActionRun } from "./run-authorization"
27
- import { dispatchActionRun } from "./run-dispatch"
23
+ import { getActionRunExecutor } from "./run/executor"
24
+ import { actionRunBelongsToShareGrant } from "./run-authorization"
28
25
  import { createActionRunId } from "./run-id"
26
+ import { type ExistingActionRun, persistActionRun } from "./run-persistence"
29
27
  import type { ActionDefinition, ActionSubject } from "./types"
30
28
  import {
31
29
  isObjectActionDefinition,
@@ -34,51 +32,23 @@ import {
34
32
  validateActionSubject,
35
33
  } from "./validation"
36
34
 
37
- export interface RequestActionResult {
38
- readonly runId: string
39
- readonly queuedAt: string
40
- readonly jobId?: string
41
- readonly created: boolean
42
- }
43
-
44
35
  export interface RequestActionOptions {
45
36
  readonly runId?: string
37
+ /**
38
+ * Cancels the run before its irreversible boundary: a succeeded writeback, or the commit of an
39
+ * Action without one. Past it, the run finishes whatever this signal does.
40
+ */
46
41
  readonly signal?: AbortSignal
47
42
  }
48
43
 
49
- export interface RequestActionAndWaitOptions extends RequestActionOptions {
50
- readonly timeoutMs?: number
51
- readonly onRequested?: (runId: string) => void | Promise<void>
52
- }
53
-
54
- export interface RequestActionInput {
44
+ export interface RequestActionInput extends RequestActionOptions {
55
45
  readonly actionId: string
56
46
  readonly subject?: ActionSubject
57
47
  readonly params?: Record<string, unknown>
58
- readonly runId?: string
59
- readonly signal?: AbortSignal
60
- }
61
-
62
- export interface RequestActionAndWaitInput extends RequestActionInput {
63
- readonly timeoutMs?: number
48
+ /** Called once the run's execution exists, before the run executes. A throw starts nothing. */
64
49
  readonly onRequested?: (runId: string) => void | Promise<void>
65
50
  }
66
51
 
67
- export interface WaitForActionRunInput {
68
- readonly runId: string
69
- readonly timeoutMs?: number
70
- readonly signal?: AbortSignal
71
- }
72
-
73
- const DEFAULT_ACTION_WAIT_TIMEOUT_MS = 60_000
74
- const DEFAULT_ACTION_WAIT_POLL_MS = 1_000
75
-
76
- function clearTimer(timer: ReturnType<typeof setTimeout> | undefined): void {
77
- if (timer) {
78
- clearTimeout(timer)
79
- }
80
- }
81
-
82
52
  function getActionDefinition(runtime: SixbRuntimeContext, actionId: string): ActionDefinition {
83
53
  const action = runtime.actionRegistry.getById(actionId)
84
54
  if (!action) {
@@ -87,11 +57,17 @@ function getActionDefinition(runtime: SixbRuntimeContext, actionId: string): Act
87
57
  return action
88
58
  }
89
59
 
60
+ /**
61
+ * Request an Action run and execute it in this process, returning its terminal record.
62
+ *
63
+ * Admission, authorization and params are checked before anything is persisted. A run id that is
64
+ * already recorded returns that run's record, without running it again.
65
+ */
90
66
  export async function requestAction(
91
67
  runtime: SixbRuntimeContext,
92
68
  execution: ExecutionContext,
93
69
  input: RequestActionInput
94
- ): Promise<RequestActionResult> {
70
+ ): Promise<ActionRunRecord> {
95
71
  // Capture the three process-local capabilities before caller-owned request getters can run.
96
72
  const projectId = runtime.projectId
97
73
  const runtimeAuthorization = runtime.runtimeAuthorization
@@ -127,7 +103,7 @@ export async function requestAction(
127
103
  assertAuthorized({ projectId, runtimeAuthorization }, { kind: "action.apply", actionId })
128
104
  }
129
105
  if (authorization.type !== "delegated" && action.binding.kind === "object") {
130
- // Object actions also require visibility of the subject's object type.
106
+ // Object actions require visibility of the type they are bound to, as listing them does.
131
107
  assertAuthorized(
132
108
  { projectId, runtimeAuthorization },
133
109
  { kind: "object.view", objectTypeId: action.binding.objectType.id }
@@ -142,74 +118,136 @@ export async function requestAction(
142
118
  if (isObjectActionDefinition(action)) {
143
119
  objectType = resolveObjectActionSubject({ runtime, action, subject })
144
120
  pathPrefix = `${objectType.id}.${action.id}`
121
+ if (authorization.type !== "delegated") {
122
+ // A run is visible to whoever may view its subject's type (`canViewActionRun`). A subtype
123
+ // excluded from a broad grant is not visible through its parent, so admitting the request on
124
+ // the bound type alone would run what its caller can never read back.
125
+ assertAuthorized(
126
+ { projectId, runtimeAuthorization },
127
+ { kind: "object.view", objectTypeId: objectType.id }
128
+ )
129
+ }
145
130
  }
146
131
 
147
132
  const actionParams = normalizeActionParams(runtime, action.params, rawParams, pathPrefix)
133
+ const runId = createActionRunId(request.runId)
148
134
 
149
- // `dispatchActionRun` checks an existing run id before creating its durable execution. Keep
135
+ // `persistActionRun` checks an existing run id before creating its durable execution. Keep
150
136
  // process-local delegation outside that oracle unless it carries durable grant provenance.
151
137
  void getAuthorizationRef(runtimeAuthorization)
152
-
153
- return dispatchActionRun({
154
- errorReporterHost: runtime,
155
- projectId,
156
- storage: runtime.storage,
157
- queue: runtime.queues.actions,
158
- events: runtime.events,
159
- actionId,
160
- subject,
161
- params: actionParams,
162
- runId: request.runId,
163
- assertNewRun: () =>
164
- assertParamUsersActive({
165
- auth: runtime.storage.auth,
166
- projectId,
167
- schemas: Object.fromEntries(
168
- Object.entries(action.params).map(([paramId, param]) => [paramId, param.schema])
169
- ),
170
- values: actionParams,
171
- valueTypesById: runtime.ontology.getValueTypesById(),
172
- describe: (paramId) => `Action param '${pathPrefix}.${paramId}'`,
173
- invalid: (message) => new OntologyValidationError(message),
174
- }),
175
- ...(authorization.type === "delegated"
176
- ? {
177
- assertCanReuseExisting: async (
178
- storage: SixbRuntimeContext["storage"],
179
- existing: ActionRunRecord
180
- ) => {
181
- if (
182
- !authorization.delegation ||
183
- !(await actionRunBelongsToShareGrant({
184
- storage,
185
- projectId,
186
- run: existing,
187
- grantId: authorization.delegation.grantId,
188
- }))
189
- ) {
190
- throw new AuthorizationError(
191
- `apply:action:${actionId}`,
192
- "[Sixb] Delegated authority cannot reuse this Action run."
193
- )
194
- }
195
- },
196
- }
197
- : {}),
198
- createExecution: async (executionId, runId) => {
199
- const caller = await ensureExecutionRecord(
200
- runtime.storage.executions,
201
- executionRecordInputFromRuntime({
202
- execution,
203
- runtimeAuthorization,
138
+ // A run starts only while its caller still waits for it; an aborted caller gets its abort.
139
+ const executor = getActionRunExecutor(runtime)
140
+ request.signal?.throwIfAborted()
141
+
142
+ const payload = { actionId, subject, params: actionParams }
143
+ const assertCanReuse = (run: ExistingActionRun) =>
144
+ assertCallerMayHaveRun({ storage: runtime.storage, projectId, authorization, run })
145
+ const persist = () =>
146
+ persistActionRun({
147
+ projectId,
148
+ storage: runtime.storage,
149
+ runId,
150
+ payload,
151
+ assertCanReuse,
152
+ assertNewRun: () =>
153
+ assertParamUsersActive({
154
+ auth: runtime.storage.auth,
155
+ projectId,
156
+ schemas: Object.fromEntries(
157
+ Object.entries(action.params).map(([paramId, param]) => [paramId, param.schema])
158
+ ),
159
+ values: actionParams,
160
+ valueTypesById: runtime.ontology.getValueTypesById(),
161
+ describe: (paramId) => `Action param '${pathPrefix}.${paramId}'`,
162
+ invalid: (message) => new OntologyValidationError(message),
163
+ }),
164
+ createExecution: async (executionId, runId) => {
165
+ const caller = await ensureExecutionRecord(
166
+ runtime.storage.executions,
167
+ executionRecordInputFromRuntime({
168
+ execution,
169
+ runtimeAuthorization,
170
+ })
171
+ )
172
+ return createPrimitiveExecutionRecord({
173
+ id: executionId,
174
+ primitive: { kind: "action", id: actionId, runId },
175
+ origin: { type: "execution", parent: caller },
204
176
  })
205
- )
206
- return createPrimitiveExecutionRecord({
207
- id: executionId,
208
- primitive: { kind: "action", id: actionId, runId },
209
- origin: { type: "execution", parent: caller },
210
- })
211
- },
177
+ },
178
+ })
179
+
180
+ const run = await executor.request({
181
+ runId,
182
+ payload,
183
+ persist,
184
+ assertCanReuse,
185
+ signal: request.signal,
186
+ onRequested: request.onRequested,
212
187
  })
188
+ return enforceDelegatedOutputBudget(authorization, run)
189
+ }
190
+
191
+ /**
192
+ * A run that already exists under the requested run id, recorded or executing, answers this request
193
+ * only under the rules that would let its caller read it.
194
+ *
195
+ * A principal gets it under the visibility rules `actions.runs.getById` applies; admission already
196
+ * requires the grants those rules check for the request's own Action and subject, and this keeps a
197
+ * run that carries another request from depending on it. A delegated caller gets it only when it was
198
+ * requested under the same Share grant.
199
+ */
200
+ async function assertCallerMayHaveRun(input: {
201
+ readonly storage: SixbRuntimeContext["storage"]
202
+ readonly projectId: string
203
+ readonly authorization: ResolvedRuntimeAuthorization
204
+ readonly run: ExistingActionRun
205
+ }): Promise<void> {
206
+ const { authorization, run } = input
207
+ const visible =
208
+ authorization.type === "delegated"
209
+ ? authorization.delegation !== undefined &&
210
+ (await actionRunBelongsToShareGrant({
211
+ storage: input.storage,
212
+ projectId: input.projectId,
213
+ run,
214
+ grantId: authorization.delegation.grantId,
215
+ }))
216
+ : authorization.type !== "principal" || canViewActionRun(authorization.context, run)
217
+ if (!visible) {
218
+ throw new AuthorizationError(
219
+ `apply:action:${run.actionId}`,
220
+ authorization.type === "delegated"
221
+ ? "[Sixb] Delegated authority cannot reuse this Action run."
222
+ : `[Sixb] Action run '${run.id}' is not visible to this principal.`
223
+ )
224
+ }
225
+ }
226
+
227
+ /**
228
+ * A delegated caller receives the record only within its output budget, like any read.
229
+ *
230
+ * The run already ran by then, and its record does not change: requesting the same run id again
231
+ * is refused the same way.
232
+ */
233
+ function enforceDelegatedOutputBudget(
234
+ authorization: ResolvedRuntimeAuthorization,
235
+ run: ActionRunRecord
236
+ ): ActionRunRecord {
237
+ if (authorization.type !== "delegated") return run
238
+ try {
239
+ assertObjectReadOutputWithinLimit(run, authorization.objectRead.limits)
240
+ } catch (error) {
241
+ if (!(error instanceof ObjectReadLimitExceededError)) throw error
242
+ throw new ObjectReadLimitExceededError(
243
+ error.metric,
244
+ error.limit,
245
+ `[Sixb] Action run '${run.id}' finished with status '${run.status}', but its record exceeds ` +
246
+ `this caller's ${error.metric} limit (${error.limit}). Requesting it again returns the ` +
247
+ "same record."
248
+ )
249
+ }
250
+ return run
213
251
  }
214
252
 
215
253
  function snapshotActionRequest(input: RequestActionInput): {
@@ -217,199 +255,23 @@ function snapshotActionRequest(input: RequestActionInput): {
217
255
  readonly subject: ActionSubject
218
256
  readonly params: Record<string, unknown>
219
257
  readonly runId?: string
258
+ readonly signal?: AbortSignal
259
+ readonly onRequested?: (runId: string) => void | Promise<void>
220
260
  } {
221
261
  const actionId = input.actionId
222
262
  const subject = input.subject
223
263
  const params = input.params
224
264
  const runId = input.runId
225
- return structuredClone({
226
- actionId,
227
- subject: subject ?? { kind: "none" },
228
- params: params ?? {},
229
- ...(runId === undefined ? {} : { runId }),
230
- })
231
- }
232
-
233
- export async function requestActionAndWait(
234
- runtime: SixbRuntimeContext,
235
- execution: ExecutionContext,
236
- input: RequestActionAndWaitInput
237
- ): Promise<ActionRunRecord> {
238
- const runId = createActionRunId(input.runId)
239
-
240
- await requestAction(runtime, execution, {
241
- ...input,
242
- runId,
243
- })
244
- await input.onRequested?.(runId)
245
-
246
- return waitForActionRun(runtime, {
247
- runId,
248
- timeoutMs: input.timeoutMs,
249
- signal: input.signal,
250
- })
251
- }
252
-
253
- export async function waitForActionRun(
254
- runtime: SixbRuntimeContext,
255
- input: WaitForActionRunInput
256
- ): Promise<ActionRunRecord> {
257
- const projectId = runtime.projectId
258
- const runtimeAuthorization = runtime.runtimeAuthorization
259
- const request = {
260
- runId: input.runId,
261
- timeoutMs: input.timeoutMs,
262
- signal: input.signal,
263
- }
264
- const authorization = resolveRuntimeAuthorizationForProject({
265
- projectId,
266
- runtimeAuthorization,
267
- })
268
- if (authorization.type === "denied") {
269
- throw new AuthorizationError(
270
- "runtime:unbound",
271
- "[Sixb] Protected operations require registered runtime authorization for this project."
272
- )
273
- }
274
- // Process-local delegation cannot poll durable runs without originating grant provenance.
275
- if (authorization.type === "delegated") void getAuthorizationRef(runtimeAuthorization)
276
- const actionRuns = requireActionRunStorage(runtime)
277
- const timeoutMs = request.timeoutMs ?? DEFAULT_ACTION_WAIT_TIMEOUT_MS
278
- const signal = request.signal
279
- const startedAt = Date.now()
280
-
281
- if (signal?.aborted) {
282
- throw signal.reason ?? new Error("aborted")
283
- }
284
-
285
- return new Promise<ActionRunRecord>((resolve, reject) => {
286
- let timer: ReturnType<typeof setTimeout> | undefined
287
- let pollTimer: ReturnType<typeof setTimeout> | undefined
288
- let unsubscribe: (() => void) | undefined
289
- let settled = false
290
- let checking = false
291
-
292
- const releaseSubscription = (release: (() => void) | undefined) => {
293
- if (!release) return
294
- try {
295
- release()
296
- } catch (error) {
297
- console.error("[Sixb] Failed to release action run wait subscription:", error)
298
- }
299
- }
300
-
301
- const cleanup = () => {
302
- if (settled) return
303
- settled = true
304
- clearTimer(timer)
305
- clearTimer(pollTimer)
306
- signal?.removeEventListener("abort", onAbort)
307
- releaseSubscription(unsubscribe)
308
- }
309
-
310
- const rejectWith = (error: unknown) => {
311
- cleanup()
312
- reject(error)
313
- }
314
-
315
- const schedulePoll = () => {
316
- if (!settled && !pollTimer) {
317
- pollTimer = setTimeout(() => {
318
- pollTimer = undefined
319
- void check()
320
- }, DEFAULT_ACTION_WAIT_POLL_MS)
321
- }
322
- }
323
-
324
- const check = async () => {
325
- if (settled || checking) {
326
- return
327
- }
328
- checking = true
329
- try {
330
- const record = await actionRuns.getById({
331
- projectId,
332
- id: request.runId,
333
- })
334
- const visible =
335
- record &&
336
- (authorization.type === "unrestricted" ||
337
- (authorization.type === "principal" &&
338
- canViewActionRun(authorization.context, record)) ||
339
- (authorization.type === "delegated" &&
340
- (await canDelegationAccessActionRun({
341
- storage: runtime.storage,
342
- projectId,
343
- authority: authorization,
344
- run: record,
345
- }))))
346
- if (visible && isTerminalActionRun(record)) {
347
- if (authorization.type === "delegated") {
348
- assertObjectReadOutputWithinLimit(record, authorization.objectRead.limits)
349
- }
350
- cleanup()
351
- resolve(record)
352
- return
353
- }
354
- schedulePoll()
355
- } catch (error) {
356
- rejectWith(error)
357
- } finally {
358
- checking = false
359
- }
360
- }
361
-
362
- const onAbort = () => {
363
- rejectWith(signal?.reason ?? new Error("aborted"))
364
- }
365
-
366
- timer = setTimeout(
367
- () => {
368
- rejectWith(new ActionRunTimeoutError({ runId: request.runId, timeoutMs }))
369
- },
370
- Math.max(0, timeoutMs - (Date.now() - startedAt))
371
- )
372
-
373
- if (signal) {
374
- signal.addEventListener("abort", onAbort, { once: true })
375
- }
376
-
377
- runtime.events
378
- .subscribe({ types: ["action.completed", "action.failed"] }, (events) => {
379
- if (
380
- events.some(
381
- (event) =>
382
- (event.type === "action.completed" || event.type === "action.failed") &&
383
- event.payload.runId === request.runId
384
- )
385
- ) {
386
- void check()
387
- }
388
- })
389
- .then((unsubscribeEvents) => {
390
- // Timeout or abort can settle the wait before the asynchronous subscription resolves.
391
- // `cleanup()` had no handle to release in that case, so release the late handle here.
392
- if (settled) {
393
- releaseSubscription(unsubscribeEvents)
394
- return
395
- }
396
- unsubscribe = unsubscribeEvents
397
- void check()
398
- })
399
- .catch((error: unknown) => {
400
- if (settled) {
401
- console.error("[Sixb] Action run wait subscription failed after the wait settled:", error)
402
- return
403
- }
404
- rejectWith(error)
405
- })
406
- })
407
- }
408
-
409
- function requireActionRunStorage(runtime: SixbRuntimeContext): ActionRunStorage {
410
- const actionRuns = runtime.storage.actionRuns
411
- if (!actionRuns) {
412
- throw new ActionRunError("[Sixb] Action run storage is not configured.")
265
+ const signal = input.signal
266
+ const onRequested = input.onRequested
267
+ return {
268
+ ...structuredClone({
269
+ actionId,
270
+ subject: subject ?? { kind: "none" },
271
+ params: params ?? {},
272
+ ...(runId === undefined ? {} : { runId }),
273
+ }),
274
+ ...(signal === undefined ? {} : { signal }),
275
+ ...(onRequested === undefined ? {} : { onRequested }),
413
276
  }
414
- return actionRuns
415
277
  }